[feature]:Improved Options Menu for Default View (#13427)
**Feature** - Improved Options Menu for Default View **Closes** - #13306 **Description** This PR fixes the feature request of Better Options in the Default View. Added the option of Create a Custom View in the Options, this helps user create custom views. **Working Demo** https://github.com/user-attachments/assets/32a3f264-c4a0-42aa-9257-56a407ea3c6e --------- Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { useOpenDropdown } from '@/ui/layout/dropdown/hooks/useOpenDropdown';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
import { type View } from '@/views/types/View';
|
||||
import { VIEW_PICKER_DROPDOWN_ID } from '@/views/view-picker/constants/ViewPickerDropdownId';
|
||||
import { useViewPickerMode } from '@/views/view-picker/hooks/useViewPickerMode';
|
||||
import { viewPickerReferenceViewIdComponentState } from '@/views/view-picker/states/viewPickerReferenceViewIdComponentState';
|
||||
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
export const useOpenCreateViewDropdown = (viewBardId?: string) => {
|
||||
const setViewPickerReferenceViewId = useSetRecoilComponentState(
|
||||
viewPickerReferenceViewIdComponentState,
|
||||
viewBardId,
|
||||
);
|
||||
|
||||
const { setViewPickerMode } = useViewPickerMode(viewBardId);
|
||||
|
||||
const { openDropdown } = useOpenDropdown();
|
||||
|
||||
const openCreateViewDropdown = (referenceView: View | undefined) => {
|
||||
if (isDefined(referenceView?.id)) {
|
||||
setViewPickerReferenceViewId(referenceView.id);
|
||||
setViewPickerMode('create-empty');
|
||||
openDropdown({
|
||||
dropdownComponentInstanceIdFromProps: VIEW_PICKER_DROPDOWN_ID,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return { openCreateViewDropdown };
|
||||
};
|
||||
@@ -1,3 +1,4 @@
|
||||
export enum ViewKey {
|
||||
Index = 'INDEX',
|
||||
Custom = 'CUSTOM',
|
||||
}
|
||||
|
||||
+4
-5
@@ -13,6 +13,7 @@ import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
import { useChangeView } from '@/views/hooks/useChangeView';
|
||||
import { useGetCurrentViewOnly } from '@/views/hooks/useGetCurrentViewOnly';
|
||||
import { useOpenCreateViewDropdown } from '@/views/hooks/useOpenCreateViewDropown';
|
||||
import { useUpdateView } from '@/views/hooks/useUpdateView';
|
||||
import { ViewPickerOptionDropdown } from '@/views/view-picker/components/ViewPickerOptionDropdown';
|
||||
import { VIEW_PICKER_DROPDOWN_ID } from '@/views/view-picker/constants/ViewPickerDropdownId';
|
||||
@@ -20,7 +21,6 @@ import { useViewPickerMode } from '@/views/view-picker/hooks/useViewPickerMode';
|
||||
import { viewPickerReferenceViewIdComponentState } from '@/views/view-picker/states/viewPickerReferenceViewIdComponentState';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { IconPlus } from 'twenty-ui/display';
|
||||
import { MenuItem } from 'twenty-ui/navigation';
|
||||
import { moveArrayItem } from '~/utils/array/moveArrayItem';
|
||||
@@ -58,11 +58,10 @@ export const ViewPickerListContent = () => {
|
||||
closeDropdown(VIEW_PICKER_DROPDOWN_ID);
|
||||
};
|
||||
|
||||
const { openCreateViewDropdown } = useOpenCreateViewDropdown();
|
||||
|
||||
const handleAddViewButtonClick = () => {
|
||||
if (isDefined(currentView?.id)) {
|
||||
setViewPickerReferenceViewId(currentView.id);
|
||||
setViewPickerMode('create-empty');
|
||||
}
|
||||
openCreateViewDropdown(currentView);
|
||||
};
|
||||
|
||||
const handleEditViewButtonClick = (
|
||||
|
||||
Reference in New Issue
Block a user