Fix: Save view by clicking outside popup while editing (#4678)

* fix: #4657 Save view by clicking outside popup while editing

* made changes on save view

* resolved comment
This commit is contained in:
Jeet Desai
2024-03-28 15:22:42 +05:30
committed by GitHub
parent 538ed9026d
commit a28ffee80f
3 changed files with 21 additions and 4 deletions

View File

@ -102,11 +102,18 @@ export const ViewPickerCreateOrEditContent = () => {
const { availableFieldsForKanban } = useGetAvailableFieldsForKanban();
const handleClose = async () => {
if (viewPickerMode === 'edit') {
await handleUpdate();
}
setViewPickerMode('list');
};
return (
<>
<DropdownMenuHeader
StartIcon={viewPickerMode === 'create' ? IconX : IconChevronLeft}
onClick={() => setViewPickerMode('list')}
onClick={handleClose}
>
{viewPickerMode === 'create' ? 'Create view' : 'Edit view'}
</DropdownMenuHeader>

View File

@ -15,6 +15,7 @@ import { ViewPickerCreateOrEditContentEffect } from '@/views/view-picker/compone
import { ViewPickerListContent } from '@/views/view-picker/components/ViewPickerListContent';
import { VIEW_PICKER_DROPDOWN_ID } from '@/views/view-picker/constants/ViewPickerDropdownId';
import { useViewPickerMode } from '@/views/view-picker/hooks/useViewPickerMode';
import { useViewPickerPersistView } from '@/views/view-picker/hooks/useViewPickerPersistView';
import { useViewStates } from '../../hooks/internal/useViewStates';
@ -49,6 +50,8 @@ export const ViewPickerDropdown = () => {
const { currentViewWithCombinedFiltersAndSorts } = useGetCurrentView();
const { handleUpdate } = useViewPickerPersistView();
const entityCountInCurrentView = useRecoilValue(
entityCountInCurrentViewState,
);
@ -62,13 +65,20 @@ export const ViewPickerDropdown = () => {
const { getIcon } = useIcons();
const CurrentViewIcon = getIcon(currentViewWithCombinedFiltersAndSorts?.icon);
const handleClickOutside = async () => {
if (isViewsListDropdownOpen && viewPickerMode === 'edit') {
await handleUpdate();
}
setViewPickerMode('list');
};
return (
<Dropdown
dropdownId={VIEW_PICKER_DROPDOWN_ID}
dropdownHotkeyScope={{ scope: ViewsHotkeyScope.ListDropdown }}
dropdownOffset={{ x: 0, y: 8 }}
dropdownMenuWidth={200}
onClickOutside={() => setViewPickerMode('list')}
onClickOutside={handleClickOutside}
clickableComponent={
<StyledDropdownButtonContainer isUnfolded={isViewsListDropdownOpen}>
{currentViewWithCombinedFiltersAndSorts && CurrentViewIcon ? (

View File

@ -61,6 +61,7 @@ export const useViewPickerPersistView = () => {
({ set, snapshot }) =>
async () => {
set(viewPickerIsPersistingState, true);
closeAndResetViewPicker();
const viewPickerReferenceViewId = getSnapshotValue(
snapshot,
viewPickerReferenceViewIdState,
@ -72,7 +73,6 @@ export const useViewPickerPersistView = () => {
)[0].id,
);
await removeView(viewPickerReferenceViewId);
closeAndResetViewPicker();
},
[
closeAndResetViewPicker,
@ -88,6 +88,7 @@ export const useViewPickerPersistView = () => {
({ set, snapshot }) =>
async () => {
set(viewPickerIsPersistingState, true);
closeAndResetViewPicker();
const viewPickerReferenceViewId = getSnapshotValue(
snapshot,
@ -108,7 +109,6 @@ export const useViewPickerPersistView = () => {
icon: viewPickerSelectedIcon,
});
selectView(viewPickerReferenceViewId);
closeAndResetViewPicker();
},
[
viewPickerIsPersistingState,