Fix for view switcher default icon display (#7029)
Fixes #6947 (View switcher default icon display) --------- Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
import { useMemo, useState } from 'react';
|
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
import { useMemo, useState } from 'react';
|
||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
import { IconApps, IconComponent, useIcons } from 'twenty-ui';
|
import { IconApps, IconComponent, useIcons } from 'twenty-ui';
|
||||||
|
|
||||||
@ -147,6 +147,8 @@ export const IconPicker = ({
|
|||||||
[matchingSearchIconKeys],
|
[matchingSearchIconKeys],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const icon = selectedIconKey ? getIcon(selectedIconKey) : IconApps;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={className}>
|
<div className={className}>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
@ -160,7 +162,7 @@ export const IconPicker = ({
|
|||||||
: `(no icon selected)`
|
: `(no icon selected)`
|
||||||
}`}
|
}`}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
Icon={selectedIconKey ? getIcon(selectedIconKey) : IconApps}
|
Icon={icon}
|
||||||
variant={variant}
|
variant={variant}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,6 +30,7 @@ import { viewPickerIsPersistingComponentState } from '@/views/view-picker/states
|
|||||||
import { viewPickerKanbanFieldMetadataIdComponentState } from '@/views/view-picker/states/viewPickerKanbanFieldMetadataIdComponentState';
|
import { viewPickerKanbanFieldMetadataIdComponentState } from '@/views/view-picker/states/viewPickerKanbanFieldMetadataIdComponentState';
|
||||||
import { viewPickerSelectedIconComponentState } from '@/views/view-picker/states/viewPickerSelectedIconComponentState';
|
import { viewPickerSelectedIconComponentState } from '@/views/view-picker/states/viewPickerSelectedIconComponentState';
|
||||||
import { viewPickerTypeComponentState } from '@/views/view-picker/states/viewPickerTypeComponentState';
|
import { viewPickerTypeComponentState } from '@/views/view-picker/states/viewPickerTypeComponentState';
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
const StyledNoKanbanFieldAvailableContainer = styled.div`
|
const StyledNoKanbanFieldAvailableContainer = styled.div`
|
||||||
color: ${({ theme }) => theme.font.color.light};
|
color: ${({ theme }) => theme.font.color.light};
|
||||||
@ -41,6 +42,7 @@ const StyledNoKanbanFieldAvailableContainer = styled.div`
|
|||||||
|
|
||||||
export const ViewPickerContentCreateMode = () => {
|
export const ViewPickerContentCreateMode = () => {
|
||||||
const { setViewPickerMode } = useViewPickerMode();
|
const { setViewPickerMode } = useViewPickerMode();
|
||||||
|
const [hasManuallySelectedIcon, setHasManuallySelectedIcon] = useState(false);
|
||||||
|
|
||||||
const [viewPickerInputName, setViewPickerInputName] =
|
const [viewPickerInputName, setViewPickerInputName] =
|
||||||
useRecoilComponentStateV2(viewPickerInputNameComponentState);
|
useRecoilComponentStateV2(viewPickerInputNameComponentState);
|
||||||
@ -87,9 +89,17 @@ export const ViewPickerContentCreateMode = () => {
|
|||||||
ViewsHotkeyScope.ListDropdown,
|
ViewsHotkeyScope.ListDropdown,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const defaultIcon =
|
||||||
|
viewPickerType === ViewType.Kanban ? 'IconLayoutKanban' : 'IconTable';
|
||||||
|
|
||||||
|
const selectedIcon = hasManuallySelectedIcon
|
||||||
|
? viewPickerSelectedIcon
|
||||||
|
: defaultIcon;
|
||||||
|
|
||||||
const onIconChange = ({ iconKey }: { iconKey: string }) => {
|
const onIconChange = ({ iconKey }: { iconKey: string }) => {
|
||||||
setViewPickerIsDirty(true);
|
setViewPickerIsDirty(true);
|
||||||
setViewPickerSelectedIcon(iconKey);
|
setViewPickerSelectedIcon(iconKey);
|
||||||
|
setHasManuallySelectedIcon(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleClose = async () => {
|
const handleClose = async () => {
|
||||||
@ -106,7 +116,7 @@ export const ViewPickerContentCreateMode = () => {
|
|||||||
<ViewPickerIconAndNameContainer>
|
<ViewPickerIconAndNameContainer>
|
||||||
<IconPicker
|
<IconPicker
|
||||||
onChange={onIconChange}
|
onChange={onIconChange}
|
||||||
selectedIconKey={viewPickerSelectedIcon}
|
selectedIconKey={selectedIcon}
|
||||||
disableBlur
|
disableBlur
|
||||||
onClose={() => setHotkeyScope(ViewsHotkeyScope.ListDropdown)}
|
onClose={() => setHotkeyScope(ViewsHotkeyScope.ListDropdown)}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -12,7 +12,10 @@ export const useIcons = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getIcon = (iconKey?: string | null) => {
|
const getIcon = (iconKey?: string | null) => {
|
||||||
if (!iconKey) return defaultIcon;
|
if (!iconKey) {
|
||||||
|
return defaultIcon;
|
||||||
|
}
|
||||||
|
|
||||||
return icons[iconKey] ?? defaultIcon;
|
return icons[iconKey] ?? defaultIcon;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user