Disable going to settings in layout edit mode (#19265)
https://github.com/user-attachments/assets/c5e07ef3-f4c5-4dc1-b577-c333525327f5
This commit is contained in:
committed by
GitHub
parent
aadbf67ec8
commit
4dfd6426c2
+7
-1
@@ -1,7 +1,9 @@
|
|||||||
import { NavigationDrawerOpenedSection } from '@/navigation-menu-item/display/sections/components/NavigationDrawerOpenedSection';
|
import { NavigationDrawerOpenedSection } from '@/navigation-menu-item/display/sections/components/NavigationDrawerOpenedSection';
|
||||||
import { NavigationDrawerWorkspaceSectionSkeletonLoader } from '@/object-metadata/components/NavigationDrawerWorkspaceSectionSkeletonLoader';
|
import { NavigationDrawerWorkspaceSectionSkeletonLoader } from '@/object-metadata/components/NavigationDrawerWorkspaceSectionSkeletonLoader';
|
||||||
|
|
||||||
|
import { isLayoutCustomizationModeEnabledState } from '@/layout-customization/states/isLayoutCustomizationModeEnabledState';
|
||||||
import { NavigationDrawerOtherSection } from '@/navigation/components/NavigationDrawerOtherSection';
|
import { NavigationDrawerOtherSection } from '@/navigation/components/NavigationDrawerOtherSection';
|
||||||
|
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||||
import { styled } from '@linaria/react';
|
import { styled } from '@linaria/react';
|
||||||
import { lazy, Suspense } from 'react';
|
import { lazy, Suspense } from 'react';
|
||||||
|
|
||||||
@@ -30,6 +32,10 @@ const StyledScrollableItemsContainer = styled.div`
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
export const MainNavigationDrawerScrollableItems = () => {
|
export const MainNavigationDrawerScrollableItems = () => {
|
||||||
|
const isLayoutCustomizationModeEnabled = useAtomStateValue(
|
||||||
|
isLayoutCustomizationModeEnabledState,
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledScrollableItemsContainer>
|
<StyledScrollableItemsContainer>
|
||||||
<NavigationDrawerOpenedSection />
|
<NavigationDrawerOpenedSection />
|
||||||
@@ -37,7 +43,7 @@ export const MainNavigationDrawerScrollableItems = () => {
|
|||||||
<FavoritesSectionDispatcher />
|
<FavoritesSectionDispatcher />
|
||||||
<WorkspaceSectionDispatcher />
|
<WorkspaceSectionDispatcher />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
<NavigationDrawerOtherSection />
|
{!isLayoutCustomizationModeEnabled && <NavigationDrawerOtherSection />}
|
||||||
</StyledScrollableItemsContainer>
|
</StyledScrollableItemsContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
+11
-1
@@ -1,3 +1,4 @@
|
|||||||
|
import { isLayoutCustomizationModeEnabledState } from '@/layout-customization/states/isLayoutCustomizationModeEnabledState';
|
||||||
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
|
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
|
||||||
import { MultiWorkspaceDropdownClickableComponent } from '@/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownClickableComponent';
|
import { MultiWorkspaceDropdownClickableComponent } from '@/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownClickableComponent';
|
||||||
import { MultiWorkspaceDropdownDefaultComponents } from '@/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownDefaultComponents';
|
import { MultiWorkspaceDropdownDefaultComponents } from '@/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownDefaultComponents';
|
||||||
@@ -6,12 +7,16 @@ import { MultiWorkspaceDropdownWorkspacesListComponents } from '@/ui/navigation/
|
|||||||
import { MULTI_WORKSPACE_DROPDOWN_ID } from '@/ui/navigation/navigation-drawer/constants/MultiWorkspaceDropdownId';
|
import { MULTI_WORKSPACE_DROPDOWN_ID } from '@/ui/navigation/navigation-drawer/constants/MultiWorkspaceDropdownId';
|
||||||
import { multiWorkspaceDropdownState } from '@/ui/navigation/navigation-drawer/states/multiWorkspaceDropdownState';
|
import { multiWorkspaceDropdownState } from '@/ui/navigation/navigation-drawer/states/multiWorkspaceDropdownState';
|
||||||
import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState';
|
import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState';
|
||||||
|
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
export const MultiWorkspaceDropdownButton = () => {
|
export const MultiWorkspaceDropdownButton = () => {
|
||||||
const [multiWorkspaceDropdown, setMultiWorkspaceDropdown] = useAtomState(
|
const [multiWorkspaceDropdown, setMultiWorkspaceDropdown] = useAtomState(
|
||||||
multiWorkspaceDropdownState,
|
multiWorkspaceDropdownState,
|
||||||
);
|
);
|
||||||
|
const isLayoutCustomizationModeEnabled = useAtomStateValue(
|
||||||
|
isLayoutCustomizationModeEnabledState,
|
||||||
|
);
|
||||||
|
|
||||||
const DropdownComponents = useMemo(() => {
|
const DropdownComponents = useMemo(() => {
|
||||||
switch (multiWorkspaceDropdown) {
|
switch (multiWorkspaceDropdown) {
|
||||||
@@ -28,8 +33,13 @@ export const MultiWorkspaceDropdownButton = () => {
|
|||||||
<Dropdown
|
<Dropdown
|
||||||
dropdownId={MULTI_WORKSPACE_DROPDOWN_ID}
|
dropdownId={MULTI_WORKSPACE_DROPDOWN_ID}
|
||||||
dropdownOffset={{ y: -29, x: -5 }}
|
dropdownOffset={{ y: -29, x: -5 }}
|
||||||
clickableComponent={<MultiWorkspaceDropdownClickableComponent />}
|
clickableComponent={
|
||||||
|
<MultiWorkspaceDropdownClickableComponent
|
||||||
|
disabled={isLayoutCustomizationModeEnabled}
|
||||||
|
/>
|
||||||
|
}
|
||||||
clickableComponentWidth="100%"
|
clickableComponentWidth="100%"
|
||||||
|
disableClickForClickableComponent={isLayoutCustomizationModeEnabled}
|
||||||
dropdownComponents={<DropdownComponents />}
|
dropdownComponents={<DropdownComponents />}
|
||||||
onClose={() => {
|
onClose={() => {
|
||||||
setMultiWorkspaceDropdown('default');
|
setMultiWorkspaceDropdown('default');
|
||||||
|
|||||||
+12
-5
@@ -1,19 +1,25 @@
|
|||||||
import { DEFAULT_WORKSPACE_LOGO } from '@/ui/navigation/navigation-drawer/constants/DefaultWorkspaceLogo';
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
||||||
import { NavigationDrawerAnimatedCollapseWrapper } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper';
|
|
||||||
import {
|
import {
|
||||||
StyledContainer,
|
StyledContainer,
|
||||||
StyledIconChevronDown,
|
StyledIconChevronDown,
|
||||||
StyledLabel,
|
StyledLabel,
|
||||||
StyledLabelWrapper,
|
StyledLabelWrapper,
|
||||||
} from '@/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspacesDropdownStyles';
|
} from '@/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspacesDropdownStyles';
|
||||||
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
import { NavigationDrawerAnimatedCollapseWrapper } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper';
|
||||||
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
import { DEFAULT_WORKSPACE_LOGO } from '@/ui/navigation/navigation-drawer/constants/DefaultWorkspaceLogo';
|
||||||
import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded';
|
import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded';
|
||||||
|
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||||
import { useContext } from 'react';
|
import { useContext } from 'react';
|
||||||
import { Avatar } from 'twenty-ui/display';
|
import { Avatar } from 'twenty-ui/display';
|
||||||
import { ThemeContext } from 'twenty-ui/theme-constants';
|
import { ThemeContext } from 'twenty-ui/theme-constants';
|
||||||
|
|
||||||
export const MultiWorkspaceDropdownClickableComponent = () => {
|
type MultiWorkspaceDropdownClickableComponentProps = {
|
||||||
|
disabled?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const MultiWorkspaceDropdownClickableComponent = ({
|
||||||
|
disabled,
|
||||||
|
}: MultiWorkspaceDropdownClickableComponentProps) => {
|
||||||
const { theme } = useContext(ThemeContext);
|
const { theme } = useContext(ThemeContext);
|
||||||
const currentWorkspace = useAtomStateValue(currentWorkspaceState);
|
const currentWorkspace = useAtomStateValue(currentWorkspaceState);
|
||||||
|
|
||||||
@@ -24,6 +30,7 @@ export const MultiWorkspaceDropdownClickableComponent = () => {
|
|||||||
<StyledContainer
|
<StyledContainer
|
||||||
data-testid="workspace-dropdown"
|
data-testid="workspace-dropdown"
|
||||||
isNavigationDrawerExpanded={isNavigationDrawerExpanded}
|
isNavigationDrawerExpanded={isNavigationDrawerExpanded}
|
||||||
|
disabled={disabled}
|
||||||
>
|
>
|
||||||
<Avatar
|
<Avatar
|
||||||
placeholder={currentWorkspace?.displayName || ''}
|
placeholder={currentWorkspace?.displayName || ''}
|
||||||
|
|||||||
+12
-3
@@ -4,23 +4,32 @@ import { themeCssVariables } from 'twenty-ui/theme-constants';
|
|||||||
|
|
||||||
export const StyledContainer = styled.div<{
|
export const StyledContainer = styled.div<{
|
||||||
isNavigationDrawerExpanded: boolean;
|
isNavigationDrawerExpanded: boolean;
|
||||||
|
disabled?: boolean;
|
||||||
}>`
|
}>`
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-radius: ${themeCssVariables.border.radius.sm};
|
border-radius: ${themeCssVariables.border.radius.sm};
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
color: ${themeCssVariables.font.color.primary};
|
color: ${themeCssVariables.font.color.primary};
|
||||||
cursor: pointer;
|
cursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: ${({ isNavigationDrawerExpanded }) =>
|
gap: ${({ isNavigationDrawerExpanded }) =>
|
||||||
isNavigationDrawerExpanded ? themeCssVariables.spacing[2] : '0'};
|
isNavigationDrawerExpanded ? themeCssVariables.spacing[2] : '0'};
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
opacity: ${({ disabled }) => (disabled ? 0.5 : 1)};
|
||||||
padding: calc(${themeCssVariables.spacing[1]} - 1px);
|
padding: calc(${themeCssVariables.spacing[1]} - 1px);
|
||||||
|
pointer-events: ${({ disabled }) => (disabled ? 'none' : 'auto')};
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: ${themeCssVariables.background.transparent.lighter};
|
background-color: ${({ disabled }) =>
|
||||||
border: 1px solid ${themeCssVariables.border.color.medium};
|
disabled
|
||||||
|
? 'transparent'
|
||||||
|
: themeCssVariables.background.transparent.lighter};
|
||||||
|
border: 1px solid
|
||||||
|
${({ disabled }) =>
|
||||||
|
disabled ? 'transparent' : themeCssVariables.border.color.medium};
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user