@leav/ui 1.6.0-b8aae5a2 → 1.6.0-d2d86b41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/_gqlTypes/index.d.ts +302 -27
  2. package/dist/_gqlTypes/index.js +173 -0
  3. package/dist/_gqlTypes/index.js.map +1 -1
  4. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js +20 -12
  5. package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map +1 -1
  6. package/dist/components/Explorer/Explorer.js +2 -2
  7. package/dist/components/Explorer/Explorer.js.map +1 -1
  8. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +4 -4
  9. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -1
  10. package/dist/components/Filters/index.d.ts +1 -0
  11. package/dist/components/Filters/index.js +1 -0
  12. package/dist/components/Filters/index.js.map +1 -1
  13. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
  14. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
  15. package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
  16. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js +15 -17
  17. package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
  18. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
  19. package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js.map +1 -1
  20. package/dist/components/LibraryItemsList/ViewPanel/View/View.d.ts +1 -3
  21. package/dist/components/LibraryItemsList/ViewPanel/View/View.js +6 -2
  22. package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
  23. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
  24. package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
  25. package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
  26. package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
  27. package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
  28. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  29. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
  30. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
  31. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
  32. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
  33. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
  34. package/dist/hooks/useIFrameMessenger/schema.d.ts +3 -3
  35. package/dist/hooks/useIFrameMessenger/schema.js +1 -1
  36. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  37. package/dist/locales/en/shared.json +3 -3
  38. package/dist/locales/fr/shared.json +3 -3
  39. package/package.json +9 -7
@@ -1,8 +1,10 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
3
3
  // This file is released under LGPL V3
4
4
  // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
5
- import { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';
5
+ import { DndContext, closestCenter } from '@dnd-kit/core';
6
+ import { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';
7
+ import { CSS } from '@dnd-kit/utilities';
6
8
  import styled from 'styled-components';
7
9
  import { infosCol } from '../../../components/LibraryItemsList/constants';
8
10
  import { AttributesSelectionListActionTypes } from '../reducer/attributesSelectionListReducer';
@@ -35,21 +37,27 @@ const CustomCard = styled.div `
35
37
  `;
36
38
  function SelectedAttributesList() {
37
39
  const { state, dispatch } = useAttributesSelectionListState();
38
- const selection = state.selectedAttributes;
39
- const _onDragEnd = result => {
40
- if (!result.destination) {
40
+ const selection = state.selectedAttributes.filter(a => a.path !== infosCol);
41
+ const handleDragEnd = event => {
42
+ const { active, over } = event;
43
+ if (!over || active.id === over.id) {
41
44
  return;
42
45
  }
43
- if (result.destination.index === result.source.index) {
46
+ const from = selection.findIndex(item => item.path === active.id);
47
+ const to = selection.findIndex(item => item.path === over.id);
48
+ if (from === -1 || to === -1) {
44
49
  return;
45
50
  }
46
- dispatch({
47
- type: AttributesSelectionListActionTypes.MOVE_SELECTED_ATTRIBUTE,
48
- from: result.source.index,
49
- to: result.destination.index,
50
- });
51
+ dispatch({ type: AttributesSelectionListActionTypes.MOVE_SELECTED_ATTRIBUTE, from, to });
51
52
  };
52
- return (_jsx(WrapperItemSelected, { children: _jsx(DragDropContext, { onDragEnd: _onDragEnd, children: _jsx(Droppable, { droppableId: "list-attributes-selected", children: provided => (_jsxs("div", { ref: provided.innerRef, ...provided.droppableProps, children: [selection.map((selectedAttribute, index) => selectedAttribute.path !== infosCol && (_jsx(Draggable, { index: index, draggableId: selectedAttribute.path, children: dragProvided => (_jsx(CustomCard, { ref: dragProvided.innerRef, ...dragProvided.draggableProps, children: _jsx(SelectedAttribute, { selectedAttribute: selectedAttribute, handleProps: dragProvided.dragHandleProps }) })) }, selectedAttribute.path))), provided.placeholder] })) }) }) }));
53
+ return (_jsx(WrapperItemSelected, { children: _jsx(DndContext, { collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: selection.map(a => a.path), strategy: verticalListSortingStrategy, children: selection.map(selectedAttribute => (_jsx(SortableItem, { selectedAttribute: selectedAttribute }, selectedAttribute.path))) }) }) }));
54
+ }
55
+ function SortableItem({ selectedAttribute }) {
56
+ const { attributes, listeners, setNodeRef, transform, transition } = useSortable({
57
+ id: selectedAttribute.path,
58
+ });
59
+ const style = { transform: CSS.Transform.toString(transform), transition };
60
+ return (_jsx(CustomCard, { ref: setNodeRef, style: style, ...attributes, children: _jsx(SelectedAttribute, { selectedAttribute: selectedAttribute, handleProps: listeners }) }));
53
61
  }
54
62
  export default SelectedAttributesList;
55
63
  //# sourceMappingURL=SelectedAttributesList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectedAttributesList.js","sourceRoot":"","sources":["../../../../src/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC1E,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,QAAQ,EAAC,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAC,kCAAkC,EAAC,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAC,+BAA+B,EAAC,MAAM,gDAAgD,CAAC;AAC/F,OAAO,iBAAiB,MAAM,uCAAuC,CAAC;AAEtE,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;CAWrC,CAAC;AAEF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;CAY5B,CAAC;AAEF,SAAS,sBAAsB;IAC3B,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,+BAA+B,EAAE,CAAC;IAE5D,MAAM,SAAS,GAAG,KAAK,CAAC,kBAAkB,CAAC;IAE3C,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE;QACxB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnD,OAAO;QACX,CAAC;QAED,QAAQ,CAAC;YACL,IAAI,EAAE,kCAAkC,CAAC,uBAAuB;YAChE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;YACzB,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;SAC/B,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,mBAAmB,cAChB,KAAC,eAAe,IAAC,SAAS,EAAE,UAAU,YAClC,KAAC,SAAS,IAAC,WAAW,EAAC,0BAA0B,YAC5C,QAAQ,CAAC,EAAE,CAAC,CACT,eAAK,GAAG,EAAE,QAAQ,CAAC,QAAQ,KAAM,QAAQ,CAAC,cAAc,aACnD,SAAS,CAAC,GAAG,CACV,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,CACzB,iBAAiB,CAAC,IAAI,KAAK,QAAQ,IAAI,CACnC,KAAC,SAAS,IAEN,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,iBAAiB,CAAC,IAAI,YAElC,YAAY,CAAC,EAAE,CAAC,CACb,KAAC,UAAU,IACP,GAAG,EAAE,YAAY,CAAC,QAAQ,KACtB,YAAY,CAAC,cAAc,YAE/B,KAAC,iBAAiB,IACd,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,YAAY,CAAC,eAAe,GAC3C,GACO,CAChB,IAdI,iBAAiB,CAAC,IAAI,CAenB,CACf,CACR,EACA,QAAQ,CAAC,WAAW,IACnB,CACT,GACO,GACE,GACA,CACzB,CAAC;AACN,CAAC;AAED,eAAe,sBAAsB,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {DragDropContext, Draggable, Droppable} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {infosCol} from '_ui/components/LibraryItemsList/constants';\nimport {AttributesSelectionListActionTypes} from '../reducer/attributesSelectionListReducer';\nimport {useAttributesSelectionListState} from '../reducer/attributesSelectionListStateContext';\nimport SelectedAttribute from './SelectedAttribute/SelectedAttribute';\n\nconst WrapperItemSelected = styled.div`\n overflow-y: auto;\n height: calc(100vh - 15rem);\n\n &&& > *:first-child {\n margin-top: 0;\n }\n\n &&& > *:last-child {\n margin-bottom: 0;\n }\n`;\n\nconst CustomCard = styled.div`\n &&& {\n padding: 0;\n margin: 0 10px 10px 10px;\n display: flex;\n justify-content: space-between;\n border: 1px solid #f0f0f0;\n border-radius: 2px;\n min-height: 3rem;\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\n background: #fff;\n }\n`;\n\nfunction SelectedAttributesList(): JSX.Element {\n const {state, dispatch} = useAttributesSelectionListState();\n\n const selection = state.selectedAttributes;\n\n const _onDragEnd = result => {\n if (!result.destination) {\n return;\n }\n\n if (result.destination.index === result.source.index) {\n return;\n }\n\n dispatch({\n type: AttributesSelectionListActionTypes.MOVE_SELECTED_ATTRIBUTE,\n from: result.source.index,\n to: result.destination.index,\n });\n };\n\n return (\n <WrapperItemSelected>\n <DragDropContext onDragEnd={_onDragEnd}>\n <Droppable droppableId=\"list-attributes-selected\">\n {provided => (\n <div ref={provided.innerRef} {...provided.droppableProps}>\n {selection.map(\n (selectedAttribute, index) =>\n selectedAttribute.path !== infosCol && (\n <Draggable\n key={selectedAttribute.path}\n index={index}\n draggableId={selectedAttribute.path}\n >\n {dragProvided => (\n <CustomCard\n ref={dragProvided.innerRef}\n {...dragProvided.draggableProps}\n >\n <SelectedAttribute\n selectedAttribute={selectedAttribute}\n handleProps={dragProvided.dragHandleProps}\n />\n </CustomCard>\n )}\n </Draggable>\n ),\n )}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </WrapperItemSelected>\n );\n}\n\nexport default SelectedAttributesList;\n"]}
1
+ {"version":3,"file":"SelectedAttributesList.js","sourceRoot":"","sources":["../../../../src/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {DndContext, closestCenter} from '@dnd-kit/core';\nimport {SortableContext, verticalListSortingStrategy, useSortable} from '@dnd-kit/sortable';\nimport {CSS} from '@dnd-kit/utilities';\nimport styled from 'styled-components';\nimport {infosCol} from '_ui/components/LibraryItemsList/constants';\nimport {AttributesSelectionListActionTypes} from '../reducer/attributesSelectionListReducer';\nimport {useAttributesSelectionListState} from '../reducer/attributesSelectionListStateContext';\nimport SelectedAttribute from './SelectedAttribute/SelectedAttribute';\nimport {type ISelectedAttribute} from '_ui/types';\n\nconst WrapperItemSelected = styled.div`\n overflow-y: auto;\n height: calc(100vh - 15rem);\n\n &&& > *:first-child {\n margin-top: 0;\n }\n\n &&& > *:last-child {\n margin-bottom: 0;\n }\n`;\n\nconst CustomCard = styled.div`\n &&& {\n padding: 0;\n margin: 0 10px 10px 10px;\n display: flex;\n justify-content: space-between;\n border: 1px solid #f0f0f0;\n border-radius: 2px;\n min-height: 3rem;\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\n background: #fff;\n }\n`;\n\nfunction SelectedAttributesList(): JSX.Element {\n const {state, dispatch} = useAttributesSelectionListState();\n const selection = state.selectedAttributes.filter(a => a.path !== infosCol);\n\n const handleDragEnd = event => {\n const {active, over} = event;\n if (!over || active.id === over.id) {\n return;\n }\n const from = selection.findIndex(item => item.path === active.id);\n const to = selection.findIndex(item => item.path === over.id);\n if (from === -1 || to === -1) {\n return;\n }\n dispatch({type: AttributesSelectionListActionTypes.MOVE_SELECTED_ATTRIBUTE, from, to});\n };\n\n return (\n <WrapperItemSelected>\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={selection.map(a => a.path)} strategy={verticalListSortingStrategy}>\n {selection.map(selectedAttribute => (\n <SortableItem key={selectedAttribute.path} selectedAttribute={selectedAttribute} />\n ))}\n </SortableContext>\n </DndContext>\n </WrapperItemSelected>\n );\n}\n\nfunction SortableItem({selectedAttribute}: {selectedAttribute: ISelectedAttribute}) {\n const {attributes, listeners, setNodeRef, transform, transition} = useSortable({\n id: selectedAttribute.path,\n });\n const style = {transform: CSS.Transform.toString(transform), transition};\n\n return (\n <CustomCard ref={setNodeRef} style={style} {...attributes}>\n <SelectedAttribute selectedAttribute={selectedAttribute} handleProps={listeners} />\n </CustomCard>\n );\n}\n\nexport default SelectedAttributesList;\n"]}
@@ -89,7 +89,7 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
89
89
  isMultivalue,
90
90
  onReplace: defaultCallbacks?.item?.replaceLink,
91
91
  canReplaceLinkValues: canEditLinkAttributeValues,
92
- columnsToDisplay: view.attributesIds,
92
+ columnsToDisplay: !joinLibraryContext ? view.attributesIds : [],
93
93
  });
94
94
  const totalCount = data?.totalCount ?? 0;
95
95
  const hasNoResults = data === null || data.totalCount === 0;
@@ -119,7 +119,7 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
119
119
  linkId: data?.totalCount === 0 ? undefined : data?.records[0]?.id_value,
120
120
  isMultivalue,
121
121
  maxItemsLeft: null, // TODO: use KitTable.row,
122
- columnsToDisplay: view.attributesIds,
122
+ columnsToDisplay: !joinLibraryContext ? view.attributesIds : [],
123
123
  });
124
124
  const allVisibleKeys = data?.records.map(({ key }) => key) ?? [];
125
125
  const { exportMassAction, ExportModal } = useExportMassAction({
@@ -1 +1 @@
1
- {"version":3,"file":"Explorer.js","sourceRoot":"","sources":["../../../src/components/Explorer/Explorer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {forwardRef, type ReactNode, useImperativeHandle, useMemo} from 'react';\nimport {createPortal} from 'react-dom';\nimport {KitEmpty, KitSnackBarProvider, KitTypography} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {Loading} from '_ui/components/Loading';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ISubmitMultipleResult} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {\n type DefaultViewSettings,\n type Entrypoint,\n type IItemAction,\n type IMassActions,\n type IPrimaryAction,\n} from './_types';\nimport {useExplorerData} from './_queries/useExplorerData';\nimport {DataView} from './DataView';\nimport {ExplorerTitle} from './ExplorerTitle';\nimport {ExplorerToolbar} from './ExplorerToolbar';\nimport {useEditStatusItemAction} from './actions-item/useEditStatusItemAction';\nimport {usePrimaryActionsButton} from './actions-primary/usePrimaryActions';\nimport {useCreatePrimaryAction} from './actions-primary/useCreatePrimaryAction';\nimport {useLinkPrimaryAction} from './actions-primary/useLinkPrimaryAction';\nimport {useMassActions} from './actions-mass/useMassActions';\nimport {useDeactivateMassAction} from './actions-mass/useDeactivateMassAction';\nimport {\n defaultPageSizeOptions,\n SidePanel,\n useEditSettings,\n useOpenViewSettings,\n ViewSettingsContext,\n} from './manage-view-settings';\nimport {useSearchInput} from './useSearchInput';\nimport {usePagination} from './usePagination';\nimport {useViewSettingsReducer} from './useViewSettingsReducer';\nimport {MASS_SELECTION_ALL, SNACKBAR_MASS_ID, WHO_AM_I_COLUMN} from './_constants';\nimport {useDeleteLinkValues} from './actions-mass/useDeleteLinkValues';\nimport {useReplaceItemAction} from './actions-item/useReplaceItemAction';\nimport {type JoinLibraryContextFragment} from '_ui/_gqlTypes';\nimport {useFiltersReducer} from '_ui/components/Filters/context/useFiltersReducer';\nimport {FiltersContext} from '_ui/components/Filters/context/filtersContext';\nimport {useExportMassAction} from './actions-mass/useExportMassAction';\nimport {useEditAttributeMassAction} from './actions-mass/useEditAttributeMassAction';\n\nconst isNotEmpty = <T extends unknown[]>(union: T): union is Exclude<T, []> => union.length > 0;\n\nconst emptyArray = [];\nconst emptyObject = {};\n\nconst ExplorerHeaderDivStyled = styled.div`\n display: flex;\n align-items: flex-start;\n padding: calc(var(--general-spacing-xs) * 1px);\n`;\n\nconst ExplorerPageDivStyled = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`;\n\nconst ExplorerEmptyDataStyled = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport interface IExplorerProps {\n entrypoint: Entrypoint;\n noPagination?: true;\n itemActions?: IItemAction[];\n primaryActions?: IPrimaryAction[];\n massActions?: IMassActions[];\n title?: string;\n selectionMode?: 'multiple' | 'simple';\n emptyPlaceholder?: ReactNode;\n defaultActionsForItem?: Array<'replaceLink' | 'remove' | 'activate'>;\n defaultPrimaryActions?: Array<'create'>;\n defaultMassActions?: Array<'deactivate' | 'export' | 'editAttribute'>;\n defaultViewSettings?: DefaultViewSettings;\n defaultCallbacks?: {\n item?: {\n edit?: IItemAction['callback'];\n replaceLink?: (replaceValuesResult: ISubmitMultipleResult) => void;\n remove?: IItemAction['callback'];\n select?: IItemAction['callback'];\n };\n primary?: {\n create?: ({\n recordIdCreated,\n saveValuesResultOnLink,\n }: {\n recordIdCreated: string;\n saveValuesResultOnLink?: ISubmitMultipleResult;\n }) => void;\n link?: (saveValuesResult: ISubmitMultipleResult) => void;\n };\n mass?: {\n deactivate?: IMassActions['callback'];\n export?: IMassActions['callback'];\n };\n };\n showCreateOnNoResultOnly?: boolean;\n showFilters?: boolean;\n showSorts?: boolean;\n hideFirstActionLabel?: boolean;\n /**\n * Optional to `false` load the last added view when `props.defaultViewSettings.viewId` is `undefined`,\n * if set to `true` load default view.\n */\n ignoreViewByDefault?: boolean;\n showTitle?: boolean;\n showSearch?: boolean;\n disableSelection?: boolean;\n hideSelectAllAction?: boolean;\n hidePrimaryActions?: boolean;\n hideTableHeader?: boolean;\n creationFormId?: string;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport interface IExplorerRef {\n createAction: IPrimaryAction | null;\n linkAction: IPrimaryAction | null;\n totalCount: number;\n}\n\nexport const Explorer = forwardRef<IExplorerRef, IExplorerProps>(\n (\n {\n entrypoint,\n itemActions = [],\n primaryActions = [],\n massActions = [],\n title,\n selectionMode = 'multiple',\n emptyPlaceholder,\n noPagination,\n creationFormId,\n showCreateOnNoResultOnly = false,\n showFilters = false,\n showSorts = false,\n hideFirstActionLabel = false,\n disableSelection = false,\n hideSelectAllAction = false,\n showTitle = false,\n showSearch = false,\n hidePrimaryActions = false,\n hideTableHeader = false,\n ignoreViewByDefault = false,\n defaultActionsForItem = ['replaceLink', 'remove', 'activate'],\n defaultPrimaryActions = ['create'],\n defaultMassActions = ['deactivate', 'editAttribute'],\n defaultCallbacks,\n defaultViewSettings,\n joinLibraryContext,\n },\n ref,\n ) => {\n const {t} = useSharedTranslation();\n\n const {panelElement: settingsPanelElement} = useEditSettings();\n\n const {\n loading: viewSettingsLoading,\n view,\n dispatch: viewSettingsDispatch,\n } = useViewSettingsReducer(entrypoint, defaultViewSettings, ignoreViewByDefault);\n\n const {filtersData, dispatch: filtersDispatch} = useFiltersReducer({\n libraryId: view.libraryId,\n viewId: view.viewId ?? undefined,\n filters: defaultViewSettings?.filters ?? undefined,\n filtersOperator: defaultViewSettings?.filtersOperator ?? undefined,\n ignoreViewByDefault,\n skip: viewSettingsLoading,\n });\n\n const {currentPage, setNewPageSize, setNewPage} = usePagination(viewSettingsDispatch);\n\n const {\n data,\n isMultivalue,\n canEditLinkAttributeValues,\n loading: loadingData,\n refetch,\n } = useExplorerData({\n entrypoint,\n libraryId: view.libraryId,\n attributeIds: view.attributesIds,\n fulltextSearch: view.fulltextSearch,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n sorts: view.sort,\n filters: filtersData.filters,\n filtersOperator: filtersData.filtersOperator,\n skip: viewSettingsLoading,\n }); // TODO: refresh when go back on page\n const isMassSelectionAll = view.massSelection === MASS_SELECTION_ALL;\n const isLink = entrypoint.type === 'link';\n\n const {editStatusItemAction} = useEditStatusItemAction({\n isEnabled:\n isNotEmpty(defaultActionsForItem) &&\n (defaultActionsForItem.includes('remove') || defaultActionsForItem.includes('activate')),\n onRemove: defaultCallbacks?.item?.remove,\n canDeleteLinkValues: canEditLinkAttributeValues,\n store: {view, dispatch: viewSettingsDispatch},\n entrypoint,\n });\n\n const {replaceItemAction, replaceItemModal} = useReplaceItemAction({\n isEnabled: isLink && isNotEmpty(defaultActionsForItem) && defaultActionsForItem.includes('replaceLink'),\n isMultivalue,\n onReplace: defaultCallbacks?.item?.replaceLink,\n canReplaceLinkValues: canEditLinkAttributeValues,\n columnsToDisplay: view.attributesIds,\n });\n\n const totalCount = data?.totalCount ?? 0;\n\n const hasNoResults = data === null || data.totalCount === 0;\n\n const isAllowedFreeEntry = !(entrypoint.type === 'library' && !entrypoint.allowFreeEntry);\n\n const showCreatePrimaryButton = showCreateOnNoResultOnly\n ? !hidePrimaryActions && !loadingData && hasNoResults && isAllowedFreeEntry\n : true;\n\n const {createPrimaryAction, createModal} = useCreatePrimaryAction({\n isEnabled: isNotEmpty(defaultPrimaryActions) && defaultPrimaryActions.includes('create'),\n isVisible: showCreatePrimaryButton,\n libraryId: view.libraryId,\n canCreateAndLinkValue: canEditLinkAttributeValues,\n onCreate: defaultCallbacks?.primary?.create,\n joinLibraryContext,\n entrypoint,\n isMultivalue,\n totalCount,\n formId: creationFormId,\n refetch,\n });\n const {linkPrimaryAction, linkModal} = useLinkPrimaryAction({\n isEnabled: isLink,\n joinLibraryContext,\n isVisible: showCreatePrimaryButton,\n canAddLinkValue: canEditLinkAttributeValues,\n onLink: defaultCallbacks?.primary?.link,\n linkId: data?.totalCount === 0 ? undefined : data?.records[0]?.id_value,\n isMultivalue,\n maxItemsLeft: null, // TODO: use KitTable.row,\n columnsToDisplay: view.attributesIds,\n });\n\n const allVisibleKeys = data?.records.map(({key}) => key) ?? [];\n\n const {exportMassAction, ExportModal} = useExportMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('export'),\n store: {view, dispatch: viewSettingsDispatch},\n totalCount,\n onExport: defaultCallbacks?.mass?.export,\n });\n\n const {editAttributeMassAction, editAttributeMassActionModal} = useEditAttributeMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('editAttribute'),\n store: {view},\n totalCount,\n });\n\n const {deactivateMassAction} = useDeactivateMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n allVisibleKeys,\n totalCount,\n onDeactivate: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const {unlinkMassAction} = useDeleteLinkValues({\n isEnabled: isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n allVisibleKeys,\n onDelete: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const _isSelectionDisable = disableSelection || (isLink && !isMultivalue && totalCount > 0);\n\n const massActionSnackbarId = useMemo(() => `${SNACKBAR_MASS_ID}_${Date.now()}`, []);\n\n const {setSelectedKeys, selectAllButton} = useMassActions({\n isEnabled:\n totalCount > 0 &&\n !_isSelectionDisable &&\n (isNotEmpty(defaultMassActions) || isNotEmpty(massActions) || !!defaultCallbacks?.item?.select),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n totalCount,\n allVisibleKeys,\n massActions: [\n exportMassAction,\n editAttributeMassAction,\n deactivateMassAction,\n unlinkMassAction,\n ...massActions,\n ].filter(Boolean),\n snackbarId: massActionSnackbarId,\n });\n\n const {primaryButton} = usePrimaryActionsButton({\n view,\n actions: [createPrimaryAction, linkPrimaryAction, ...primaryActions].filter(Boolean),\n hideFirstActionLabel,\n });\n\n const {viewSettingsButton, viewListButton} = useOpenViewSettings({view, isEnabled: !isMassSelectionAll});\n\n const {searchInput} = useSearchInput({view, dispatch: viewSettingsDispatch, setNewPage});\n\n useImperativeHandle(\n ref,\n () => ({\n createAction: createPrimaryAction,\n linkAction: linkPrimaryAction,\n totalCount,\n }),\n [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCount],\n );\n\n return (\n <>\n <FiltersContext.Provider value={{filtersData, dispatch: filtersDispatch}}>\n <ViewSettingsContext.Provider value={{view, dispatch: viewSettingsDispatch}}>\n <ExplorerPageDivStyled>\n {showTitle && (\n <ExplorerHeaderDivStyled>\n <KitTypography.Title level=\"h3\">\n {\n !viewSettingsLoading && (\n <ExplorerTitle\n library={view.libraryId}\n title={title}\n entrypoint={entrypoint}\n />\n ) /*TODO: manage loading*/\n }\n </KitTypography.Title>\n </ExplorerHeaderDivStyled>\n )}\n <ExplorerToolbar\n showFilters={showFilters}\n showSorts={showSorts}\n isMassSelectionAll={isMassSelectionAll}\n headless={hideTableHeader}\n canRemoveFilters={view?.enableConfigureView ?? false}\n selectAllButton={hideSelectAllAction ? null : selectAllButton}\n viewSettingsLoading={viewSettingsLoading}\n >\n {view?.enableConfigureView ? viewListButton : null}\n {showSearch ? searchInput : null}\n {view?.enableConfigureView ? viewSettingsButton : null}\n {hidePrimaryActions ? null : primaryButton}\n </ExplorerToolbar>\n {loadingData || viewSettingsLoading ? (\n <Loading />\n ) : hasNoResults ? (\n <ExplorerEmptyDataStyled>\n {emptyPlaceholder || <KitEmpty title={t('explorer.empty-data')} />}\n </ExplorerEmptyDataStyled>\n ) : (\n <DataView\n dataGroupedFilteredSorted={data?.records ?? emptyArray}\n attributesProperties={data?.attributes ?? emptyObject}\n attributesToDisplay={[WHO_AM_I_COLUMN, ...view.attributesIds]}\n hideTableHeader={hideTableHeader}\n paginationProps={\n entrypoint.type === 'library' && !noPagination\n ? {\n pageSizeOptions: defaultPageSizeOptions,\n currentPage,\n pageSize: view.pageSize,\n setNewPageSize,\n setNewPage,\n totalCount,\n }\n : undefined\n }\n itemActions={[...itemActions, replaceItemAction, editStatusItemAction]\n .filter(Boolean)\n .map(action => ({\n ...action,\n disabled: isMassSelectionAll || action.disabled,\n }))}\n selection={{\n onSelectItem: _isSelectionDisable ? null : defaultCallbacks?.item?.select,\n onSelectionChange: _isSelectionDisable ? null : setSelectedKeys,\n isMassSelectionAll,\n selectedKeys: isMassSelectionAll\n ? data?.records.map(({whoAmI}) => whoAmI.id)\n : (view.massSelection as string[]),\n mode: selectionMode,\n }}\n />\n )}\n </ExplorerPageDivStyled>\n {settingsPanelElement && createPortal(<SidePanel />, settingsPanelElement?.() ?? document.body)}\n {replaceItemModal}\n {createModal}\n {linkModal}\n {editAttributeMassActionModal}\n {ExportModal}\n </ViewSettingsContext.Provider>\n </FiltersContext.Provider>\n <KitSnackBarProvider id={massActionSnackbarId} />\n </>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"Explorer.js","sourceRoot":"","sources":["../../../src/components/Explorer/Explorer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {forwardRef, type ReactNode, useImperativeHandle, useMemo} from 'react';\nimport {createPortal} from 'react-dom';\nimport {KitEmpty, KitSnackBarProvider, KitTypography} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {Loading} from '_ui/components/Loading';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ISubmitMultipleResult} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {\n type DefaultViewSettings,\n type Entrypoint,\n type IItemAction,\n type IMassActions,\n type IPrimaryAction,\n} from './_types';\nimport {useExplorerData} from './_queries/useExplorerData';\nimport {DataView} from './DataView';\nimport {ExplorerTitle} from './ExplorerTitle';\nimport {ExplorerToolbar} from './ExplorerToolbar';\nimport {useEditStatusItemAction} from './actions-item/useEditStatusItemAction';\nimport {usePrimaryActionsButton} from './actions-primary/usePrimaryActions';\nimport {useCreatePrimaryAction} from './actions-primary/useCreatePrimaryAction';\nimport {useLinkPrimaryAction} from './actions-primary/useLinkPrimaryAction';\nimport {useMassActions} from './actions-mass/useMassActions';\nimport {useDeactivateMassAction} from './actions-mass/useDeactivateMassAction';\nimport {\n defaultPageSizeOptions,\n SidePanel,\n useEditSettings,\n useOpenViewSettings,\n ViewSettingsContext,\n} from './manage-view-settings';\nimport {useSearchInput} from './useSearchInput';\nimport {usePagination} from './usePagination';\nimport {useViewSettingsReducer} from './useViewSettingsReducer';\nimport {MASS_SELECTION_ALL, SNACKBAR_MASS_ID, WHO_AM_I_COLUMN} from './_constants';\nimport {useDeleteLinkValues} from './actions-mass/useDeleteLinkValues';\nimport {useReplaceItemAction} from './actions-item/useReplaceItemAction';\nimport {type JoinLibraryContextFragment} from '_ui/_gqlTypes';\nimport {useFiltersReducer} from '_ui/components/Filters/context/useFiltersReducer';\nimport {FiltersContext} from '_ui/components/Filters/context/filtersContext';\nimport {useExportMassAction} from './actions-mass/useExportMassAction';\nimport {useEditAttributeMassAction} from './actions-mass/useEditAttributeMassAction';\n\nconst isNotEmpty = <T extends unknown[]>(union: T): union is Exclude<T, []> => union.length > 0;\n\nconst emptyArray = [];\nconst emptyObject = {};\n\nconst ExplorerHeaderDivStyled = styled.div`\n display: flex;\n align-items: flex-start;\n padding: calc(var(--general-spacing-xs) * 1px);\n`;\n\nconst ExplorerPageDivStyled = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`;\n\nconst ExplorerEmptyDataStyled = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport interface IExplorerProps {\n entrypoint: Entrypoint;\n noPagination?: true;\n itemActions?: IItemAction[];\n primaryActions?: IPrimaryAction[];\n massActions?: IMassActions[];\n title?: string;\n selectionMode?: 'multiple' | 'simple';\n emptyPlaceholder?: ReactNode;\n defaultActionsForItem?: Array<'replaceLink' | 'remove' | 'activate'>;\n defaultPrimaryActions?: Array<'create'>;\n defaultMassActions?: Array<'deactivate' | 'export' | 'editAttribute'>;\n defaultViewSettings?: DefaultViewSettings;\n defaultCallbacks?: {\n item?: {\n edit?: IItemAction['callback'];\n replaceLink?: (replaceValuesResult: ISubmitMultipleResult) => void;\n remove?: IItemAction['callback'];\n select?: IItemAction['callback'];\n };\n primary?: {\n create?: ({\n recordIdCreated,\n saveValuesResultOnLink,\n }: {\n recordIdCreated: string;\n saveValuesResultOnLink?: ISubmitMultipleResult;\n }) => void;\n link?: (saveValuesResult: ISubmitMultipleResult) => void;\n };\n mass?: {\n deactivate?: IMassActions['callback'];\n export?: IMassActions['callback'];\n };\n };\n showCreateOnNoResultOnly?: boolean;\n showFilters?: boolean;\n showSorts?: boolean;\n hideFirstActionLabel?: boolean;\n /**\n * Optional to `false` load the last added view when `props.defaultViewSettings.viewId` is `undefined`,\n * if set to `true` load default view.\n */\n ignoreViewByDefault?: boolean;\n showTitle?: boolean;\n showSearch?: boolean;\n disableSelection?: boolean;\n hideSelectAllAction?: boolean;\n hidePrimaryActions?: boolean;\n hideTableHeader?: boolean;\n creationFormId?: string;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport interface IExplorerRef {\n createAction: IPrimaryAction | null;\n linkAction: IPrimaryAction | null;\n totalCount: number;\n}\n\nexport const Explorer = forwardRef<IExplorerRef, IExplorerProps>(\n (\n {\n entrypoint,\n itemActions = [],\n primaryActions = [],\n massActions = [],\n title,\n selectionMode = 'multiple',\n emptyPlaceholder,\n noPagination,\n creationFormId,\n showCreateOnNoResultOnly = false,\n showFilters = false,\n showSorts = false,\n hideFirstActionLabel = false,\n disableSelection = false,\n hideSelectAllAction = false,\n showTitle = false,\n showSearch = false,\n hidePrimaryActions = false,\n hideTableHeader = false,\n ignoreViewByDefault = false,\n defaultActionsForItem = ['replaceLink', 'remove', 'activate'],\n defaultPrimaryActions = ['create'],\n defaultMassActions = ['deactivate', 'editAttribute'],\n defaultCallbacks,\n defaultViewSettings,\n joinLibraryContext,\n },\n ref,\n ) => {\n const {t} = useSharedTranslation();\n\n const {panelElement: settingsPanelElement} = useEditSettings();\n\n const {\n loading: viewSettingsLoading,\n view,\n dispatch: viewSettingsDispatch,\n } = useViewSettingsReducer(entrypoint, defaultViewSettings, ignoreViewByDefault);\n\n const {filtersData, dispatch: filtersDispatch} = useFiltersReducer({\n libraryId: view.libraryId,\n viewId: view.viewId ?? undefined,\n filters: defaultViewSettings?.filters ?? undefined,\n filtersOperator: defaultViewSettings?.filtersOperator ?? undefined,\n ignoreViewByDefault,\n skip: viewSettingsLoading,\n });\n\n const {currentPage, setNewPageSize, setNewPage} = usePagination(viewSettingsDispatch);\n\n const {\n data,\n isMultivalue,\n canEditLinkAttributeValues,\n loading: loadingData,\n refetch,\n } = useExplorerData({\n entrypoint,\n libraryId: view.libraryId,\n attributeIds: view.attributesIds,\n fulltextSearch: view.fulltextSearch,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n sorts: view.sort,\n filters: filtersData.filters,\n filtersOperator: filtersData.filtersOperator,\n skip: viewSettingsLoading,\n }); // TODO: refresh when go back on page\n const isMassSelectionAll = view.massSelection === MASS_SELECTION_ALL;\n const isLink = entrypoint.type === 'link';\n\n const {editStatusItemAction} = useEditStatusItemAction({\n isEnabled:\n isNotEmpty(defaultActionsForItem) &&\n (defaultActionsForItem.includes('remove') || defaultActionsForItem.includes('activate')),\n onRemove: defaultCallbacks?.item?.remove,\n canDeleteLinkValues: canEditLinkAttributeValues,\n store: {view, dispatch: viewSettingsDispatch},\n entrypoint,\n });\n\n const {replaceItemAction, replaceItemModal} = useReplaceItemAction({\n isEnabled: isLink && isNotEmpty(defaultActionsForItem) && defaultActionsForItem.includes('replaceLink'),\n isMultivalue,\n onReplace: defaultCallbacks?.item?.replaceLink,\n canReplaceLinkValues: canEditLinkAttributeValues,\n columnsToDisplay: !joinLibraryContext ? view.attributesIds : [],\n });\n\n const totalCount = data?.totalCount ?? 0;\n\n const hasNoResults = data === null || data.totalCount === 0;\n\n const isAllowedFreeEntry = !(entrypoint.type === 'library' && !entrypoint.allowFreeEntry);\n\n const showCreatePrimaryButton = showCreateOnNoResultOnly\n ? !hidePrimaryActions && !loadingData && hasNoResults && isAllowedFreeEntry\n : true;\n\n const {createPrimaryAction, createModal} = useCreatePrimaryAction({\n isEnabled: isNotEmpty(defaultPrimaryActions) && defaultPrimaryActions.includes('create'),\n isVisible: showCreatePrimaryButton,\n libraryId: view.libraryId,\n canCreateAndLinkValue: canEditLinkAttributeValues,\n onCreate: defaultCallbacks?.primary?.create,\n joinLibraryContext,\n entrypoint,\n isMultivalue,\n totalCount,\n formId: creationFormId,\n refetch,\n });\n const {linkPrimaryAction, linkModal} = useLinkPrimaryAction({\n isEnabled: isLink,\n joinLibraryContext,\n isVisible: showCreatePrimaryButton,\n canAddLinkValue: canEditLinkAttributeValues,\n onLink: defaultCallbacks?.primary?.link,\n linkId: data?.totalCount === 0 ? undefined : data?.records[0]?.id_value,\n isMultivalue,\n maxItemsLeft: null, // TODO: use KitTable.row,\n columnsToDisplay: !joinLibraryContext ? view.attributesIds : [],\n });\n\n const allVisibleKeys = data?.records.map(({key}) => key) ?? [];\n\n const {exportMassAction, ExportModal} = useExportMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('export'),\n store: {view, dispatch: viewSettingsDispatch},\n totalCount,\n onExport: defaultCallbacks?.mass?.export,\n });\n\n const {editAttributeMassAction, editAttributeMassActionModal} = useEditAttributeMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('editAttribute'),\n store: {view},\n totalCount,\n });\n\n const {deactivateMassAction} = useDeactivateMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n allVisibleKeys,\n totalCount,\n onDeactivate: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const {unlinkMassAction} = useDeleteLinkValues({\n isEnabled: isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n allVisibleKeys,\n onDelete: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const _isSelectionDisable = disableSelection || (isLink && !isMultivalue && totalCount > 0);\n\n const massActionSnackbarId = useMemo(() => `${SNACKBAR_MASS_ID}_${Date.now()}`, []);\n\n const {setSelectedKeys, selectAllButton} = useMassActions({\n isEnabled:\n totalCount > 0 &&\n !_isSelectionDisable &&\n (isNotEmpty(defaultMassActions) || isNotEmpty(massActions) || !!defaultCallbacks?.item?.select),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n totalCount,\n allVisibleKeys,\n massActions: [\n exportMassAction,\n editAttributeMassAction,\n deactivateMassAction,\n unlinkMassAction,\n ...massActions,\n ].filter(Boolean),\n snackbarId: massActionSnackbarId,\n });\n\n const {primaryButton} = usePrimaryActionsButton({\n view,\n actions: [createPrimaryAction, linkPrimaryAction, ...primaryActions].filter(Boolean),\n hideFirstActionLabel,\n });\n\n const {viewSettingsButton, viewListButton} = useOpenViewSettings({view, isEnabled: !isMassSelectionAll});\n\n const {searchInput} = useSearchInput({view, dispatch: viewSettingsDispatch, setNewPage});\n\n useImperativeHandle(\n ref,\n () => ({\n createAction: createPrimaryAction,\n linkAction: linkPrimaryAction,\n totalCount,\n }),\n [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCount],\n );\n\n return (\n <>\n <FiltersContext.Provider value={{filtersData, dispatch: filtersDispatch}}>\n <ViewSettingsContext.Provider value={{view, dispatch: viewSettingsDispatch}}>\n <ExplorerPageDivStyled>\n {showTitle && (\n <ExplorerHeaderDivStyled>\n <KitTypography.Title level=\"h3\">\n {\n !viewSettingsLoading && (\n <ExplorerTitle\n library={view.libraryId}\n title={title}\n entrypoint={entrypoint}\n />\n ) /*TODO: manage loading*/\n }\n </KitTypography.Title>\n </ExplorerHeaderDivStyled>\n )}\n <ExplorerToolbar\n showFilters={showFilters}\n showSorts={showSorts}\n isMassSelectionAll={isMassSelectionAll}\n headless={hideTableHeader}\n canRemoveFilters={view?.enableConfigureView ?? false}\n selectAllButton={hideSelectAllAction ? null : selectAllButton}\n viewSettingsLoading={viewSettingsLoading}\n >\n {view?.enableConfigureView ? viewListButton : null}\n {showSearch ? searchInput : null}\n {view?.enableConfigureView ? viewSettingsButton : null}\n {hidePrimaryActions ? null : primaryButton}\n </ExplorerToolbar>\n {loadingData || viewSettingsLoading ? (\n <Loading />\n ) : hasNoResults ? (\n <ExplorerEmptyDataStyled>\n {emptyPlaceholder || <KitEmpty title={t('explorer.empty-data')} />}\n </ExplorerEmptyDataStyled>\n ) : (\n <DataView\n dataGroupedFilteredSorted={data?.records ?? emptyArray}\n attributesProperties={data?.attributes ?? emptyObject}\n attributesToDisplay={[WHO_AM_I_COLUMN, ...view.attributesIds]}\n hideTableHeader={hideTableHeader}\n paginationProps={\n entrypoint.type === 'library' && !noPagination\n ? {\n pageSizeOptions: defaultPageSizeOptions,\n currentPage,\n pageSize: view.pageSize,\n setNewPageSize,\n setNewPage,\n totalCount,\n }\n : undefined\n }\n itemActions={[...itemActions, replaceItemAction, editStatusItemAction]\n .filter(Boolean)\n .map(action => ({\n ...action,\n disabled: isMassSelectionAll || action.disabled,\n }))}\n selection={{\n onSelectItem: _isSelectionDisable ? null : defaultCallbacks?.item?.select,\n onSelectionChange: _isSelectionDisable ? null : setSelectedKeys,\n isMassSelectionAll,\n selectedKeys: isMassSelectionAll\n ? data?.records.map(({whoAmI}) => whoAmI.id)\n : (view.massSelection as string[]),\n mode: selectionMode,\n }}\n />\n )}\n </ExplorerPageDivStyled>\n {settingsPanelElement && createPortal(<SidePanel />, settingsPanelElement?.() ?? document.body)}\n {replaceItemModal}\n {createModal}\n {linkModal}\n {editAttributeMassActionModal}\n {ExportModal}\n </ViewSettingsContext.Provider>\n </FiltersContext.Provider>\n <KitSnackBarProvider id={massActionSnackbarId} />\n </>\n );\n },\n);\n"]}
@@ -1,16 +1,16 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import styled from 'styled-components';
3
- import { KitCheckbox } from 'aristid-ds';
3
+ import { KitTree } from 'aristid-ds';
4
4
  import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
5
- const CheckboxStyled = styled(KitCheckbox) `
5
+ const TreeStyled = styled(KitTree) `
6
6
  font-style: italic;
7
- padding-left: 3px;
8
7
  `;
8
+ const EMPTY_VALUE_KEY = '0';
9
9
  export const EmptyValueCheckbox = ({ filter, onSelect }) => {
10
10
  const { t } = useSharedTranslation();
11
11
  const onChange = () => {
12
12
  onSelect(!filter.withEmptyValues);
13
13
  };
14
- return (_jsx(CheckboxStyled, { checked: filter.withEmptyValues, onChange: onChange, children: t('explorer.empty_value') }));
14
+ return (_jsx(TreeStyled, { checkable: true, treeData: [{ title: t('filters.empty-value'), key: EMPTY_VALUE_KEY, isLeaf: true }], checkedKeys: filter.withEmptyValues ? [EMPTY_VALUE_KEY] : [], onSelect: onChange, onCheck: onChange }));
15
15
  };
16
16
  //# sourceMappingURL=EmptyValueCheckbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyValueCheckbox.js","sourceRoot":"","sources":["../../../../src/components/Filters/filter-items/EmptyValueCheckbox.tsx"],"names":[],"mappings":";AAIA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAQpE,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;;;CAGzC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAgD,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE,EAAE;IAClG,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,cAAc,IAAC,OAAO,EAAE,MAAM,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,YAC9D,CAAC,CAAC,sBAAsB,CAAC,GACb,CACpB,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport styled from 'styled-components';\nimport {KitCheckbox} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type UIFilter} from '../_types';\n\ninterface IEmptyValueCheckboxProps {\n filter: UIFilter;\n onSelect: (selected: boolean) => void;\n}\n\nconst CheckboxStyled = styled(KitCheckbox)`\n font-style: italic;\n padding-left: 3px;\n`;\n\nexport const EmptyValueCheckbox: FunctionComponent<IEmptyValueCheckboxProps> = ({filter, onSelect}) => {\n const {t} = useSharedTranslation();\n\n const onChange = () => {\n onSelect(!filter.withEmptyValues);\n };\n\n return (\n <CheckboxStyled checked={filter.withEmptyValues} onChange={onChange}>\n {t('explorer.empty_value')}\n </CheckboxStyled>\n );\n};\n"]}
1
+ {"version":3,"file":"EmptyValueCheckbox.js","sourceRoot":"","sources":["../../../../src/components/Filters/filter-items/EmptyValueCheckbox.tsx"],"names":[],"mappings":";AAIA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAQpE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;;CAEjC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,CAAC,MAAM,kBAAkB,GAAgD,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE,EAAE;IAClG,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,UAAU,IACP,SAAS,QACT,QAAQ,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,EACjF,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5D,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,GACnB,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport styled from 'styled-components';\nimport {KitTree} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type UIFilter} from '../_types';\n\ninterface IEmptyValueCheckboxProps {\n filter: UIFilter;\n onSelect: (selected: boolean) => void;\n}\n\nconst TreeStyled = styled(KitTree)`\n font-style: italic;\n`;\n\nconst EMPTY_VALUE_KEY = '0';\n\nexport const EmptyValueCheckbox: FunctionComponent<IEmptyValueCheckboxProps> = ({filter, onSelect}) => {\n const {t} = useSharedTranslation();\n\n const onChange = () => {\n onSelect(!filter.withEmptyValues);\n };\n\n return (\n <TreeStyled\n checkable\n treeData={[{title: t('filters.empty-value'), key: EMPTY_VALUE_KEY, isLeaf: true}]}\n checkedKeys={filter.withEmptyValues ? [EMPTY_VALUE_KEY] : []}\n onSelect={onChange}\n onCheck={onChange}\n />\n );\n};\n"]}
@@ -5,4 +5,5 @@ export { FiltersProvider } from './FiltersProvider';
5
5
  export { prepareFiltersForRequest } from './prepareFiltersForRequest';
6
6
  export { useFiltersReducer } from './context/useFiltersReducer';
7
7
  export { CommonFilterItem } from './filter-items/CommonFilterItem';
8
+ export { FiltersContext } from './context/filtersContext';
8
9
  export * from './_types';
@@ -8,5 +8,6 @@ export { FiltersProvider } from './FiltersProvider';
8
8
  export { prepareFiltersForRequest } from './prepareFiltersForRequest';
9
9
  export { useFiltersReducer } from './context/useFiltersReducer';
10
10
  export { CommonFilterItem } from './filter-items/CommonFilterItem';
11
+ export { FiltersContext } from './context/filtersContext';
11
12
  export * from './_types';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Filters/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,cAAc,UAAU,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nexport {useFilters} from './useFilters';\nexport {useFiltersContext} from './useFiltersContext';\nexport {useTransformFilters} from './useTransformFilters';\nexport {FiltersProvider} from './FiltersProvider';\nexport {prepareFiltersForRequest} from './prepareFiltersForRequest';\nexport {useFiltersReducer} from './context/useFiltersReducer';\nexport {CommonFilterItem} from './filter-items/CommonFilterItem';\nexport * from './_types';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Filters/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACxD,cAAc,UAAU,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nexport {useFilters} from './useFilters';\nexport {useFiltersContext} from './useFiltersContext';\nexport {useTransformFilters} from './useTransformFilters';\nexport {FiltersProvider} from './FiltersProvider';\nexport {prepareFiltersForRequest} from './prepareFiltersForRequest';\nexport {useFiltersReducer} from './context/useFiltersReducer';\nexport {CommonFilterItem} from './filter-items/CommonFilterItem';\nexport {FiltersContext} from './context/filtersContext';\nexport * from './_types';\n"]}
@@ -1,4 +1,3 @@
1
- import { type DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
2
1
  import { type IFilter } from '../../../../types/search';
3
2
  export interface IFilterInputProps {
4
3
  filter: IFilter;
@@ -7,7 +6,6 @@ export interface IFilterInputProps {
7
6
  }
8
7
  interface IFilterProps {
9
8
  filter: IFilter;
10
- handleProps: DraggableProvidedDragHandleProps;
11
9
  }
12
- declare function Filter({ filter, handleProps }: IFilterProps): JSX.Element;
10
+ declare function Filter({ filter }: IFilterProps): JSX.Element;
13
11
  export default Filter;
@@ -6,6 +6,7 @@ import { CloseCircleFilled, MoreOutlined } from '@ant-design/icons';
6
6
  import { localizedTranslation } from '@leav/utils';
7
7
  import { Button, Dropdown } from 'antd';
8
8
  import { useCallback, useState } from 'react';
9
+ import { CSS } from '@dnd-kit/utilities';
9
10
  import styled from 'styled-components';
10
11
  import { themeVars } from '../../../../antdTheme';
11
12
  import DateBetweenFilter from '../../../../components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';
@@ -27,6 +28,7 @@ import DateFilter from './FilterInput/DateFilter';
27
28
  import NumericFilter from './FilterInput/NumericFilter';
28
29
  import TextFilter from './FilterInput/TextFilter';
29
30
  import { getDefaultFilterValueByFormat } from '../../../../components/LibraryItemsList/FiltersPanel/Filter/filterUtils';
31
+ import { useSortable } from '@dnd-kit/sortable';
30
32
  const Wrapper = styled.div `
31
33
  background: ${themeVars.lightBg};
32
34
  padding: 8px 8px 8px 0px;
@@ -118,11 +120,13 @@ const ClearParentButton = styled(Button) `
118
120
  }
119
121
  }
120
122
  `;
121
- function Filter({ filter, handleProps }) {
123
+ function Filter({ filter }) {
122
124
  const { t } = useSharedTranslation();
123
125
  const { lang } = useLang();
124
126
  const { state: searchState, dispatch: searchDispatch } = useSearchReducer();
125
127
  const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);
128
+ const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: filter.key });
129
+ const style = { transform: CSS.Transform.toString(transform), transition };
126
130
  const handleDelete = () => {
127
131
  searchDispatch({
128
132
  type: SearchActionTypes.SET_FILTERS,
@@ -318,7 +322,7 @@ function Filter({ filter, handleProps }) {
318
322
  const _handlePressEnter = () => {
319
323
  searchDispatch({ type: SearchActionTypes.APPLY_FILTERS });
320
324
  };
321
- return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, children: [_jsx(Handle, { className: "filter-handle", ...handleProps }), _jsxs(Content, { "$hasParent": hasParent, children: [hasParent && (_jsxs(ParentLabel, { children: [_jsxs("span", { children: [t('filters.through'), ":\u00A0"] }), _jsx("span", { children: getParentLabel() }), _jsx(ClearParentButton, { disabled: !filter.active, size: "small", onClick: _handleResetClick, shape: "circle", icon: _jsx(CloseCircleFilled, {}) })] })), _jsxs(Head, { children: [_jsxs(HeadInfos, { children: [_jsx(FiltersDropdown, { libraryId: searchState.library.id, button: _jsx(FilterDropdownButton, { secondary: filter.condition === ThroughConditionFilter.THROUGH, children: getDropdownLabel() }), filter: filter, attributes: getAttributes(), libraries: getLibraries(), trees: getTrees() }), (filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (_jsx(FilterAttributeCondition, { filter: filter, updateFilterValue: updateFilterValue })), filter.type === FilterType.TREE && _jsx(FilterTreeCondition, { filter: filter })] }), _jsx(Dropdown, { menu: filterOptions, placement: "bottomRight", children: _jsx(HeadOptions, { children: _jsx(MoreOutlined, {}) }) })] }), _jsx(InputByFormat, { filter: filter, updateFilterValue: updateFilterValue, onPressEnter: _handlePressEnter })] })] })] }));
325
+ return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, ref: setNodeRef, style: style, ...attributes, children: [_jsx(Handle, { className: "filter-handle", ...listeners }), _jsxs(Content, { "$hasParent": hasParent, children: [hasParent && (_jsxs(ParentLabel, { children: [_jsxs("span", { children: [t('filters.through'), ":\u00A0"] }), _jsx("span", { children: getParentLabel() }), _jsx(ClearParentButton, { disabled: !filter.active, size: "small", onClick: _handleResetClick, shape: "circle", icon: _jsx(CloseCircleFilled, {}) })] })), _jsxs(Head, { children: [_jsxs(HeadInfos, { children: [_jsx(FiltersDropdown, { libraryId: searchState.library.id, button: _jsx(FilterDropdownButton, { secondary: filter.condition === ThroughConditionFilter.THROUGH, children: getDropdownLabel() }), filter: filter, attributes: getAttributes(), libraries: getLibraries(), trees: getTrees() }), (filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (_jsx(FilterAttributeCondition, { filter: filter, updateFilterValue: updateFilterValue })), filter.type === FilterType.TREE && _jsx(FilterTreeCondition, { filter: filter })] }), _jsx(Dropdown, { menu: filterOptions, placement: "bottomRight", children: _jsx(HeadOptions, { children: _jsx(MoreOutlined, {}) }) })] }), _jsx(InputByFormat, { filter: filter, updateFilterValue: updateFilterValue, onPressEnter: _handlePressEnter })] })] })] }));
322
326
  }
323
327
  export default Filter;
324
328
  //# sourceMappingURL=Filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {type DraggableProvidedDragHandleProps} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n handleProps: DraggableProvidedDragHandleProps;\n}\n\nfunction Filter({filter, handleProps}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active}>\n <Handle className=\"filter-handle\" {...handleProps} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}:&nbsp;</span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
1
+ {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {CSS} from '@dnd-kit/utilities';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\nimport {useSortable} from '@dnd-kit/sortable';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n}\n\nfunction Filter({filter}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const {attributes, listeners, setNodeRef, transform, transition} = useSortable({id: filter.key});\n const style = {transform: CSS.Transform.toString(transform), transition};\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active} ref={setNodeRef} style={style} {...attributes}>\n <Handle className=\"filter-handle\" {...listeners} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}:&nbsp;</span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
@@ -6,7 +6,8 @@ import { DownOutlined } from '@ant-design/icons';
6
6
  import { faAngleLeft } from '@fortawesome/free-solid-svg-icons';
7
7
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
8
8
  import { Button, Dropdown, Space } from 'antd';
9
- import { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';
9
+ import { DndContext, closestCenter } from '@dnd-kit/core';
10
+ import { SortableContext, verticalListSortingStrategy, arrayMove } from '@dnd-kit/sortable';
10
11
  import styled from 'styled-components';
11
12
  import { themeVars } from '../../../antdTheme';
12
13
  import useSearchReducer from '../../../components/LibraryItemsList/hooks/useSearchReducer';
@@ -71,24 +72,21 @@ function FiltersPanel() {
71
72
  const _handleHide = () => {
72
73
  searchDispatch({ type: SearchActionTypes.SET_SIDEBAR, visible: false, sidebarType: searchState.sideBar.type });
73
74
  };
74
- const onDragEnd = (result, provided) => {
75
- if (!result.destination) {
75
+ const handleDragEnd = event => {
76
+ const { active, over } = event;
77
+ if (!over || active.id === over.id) {
76
78
  return;
77
79
  }
78
- const newFilter = searchState.filters
79
- .map(filter => ({
80
+ const oldIndex = searchState.filters.findIndex(f => f.key === active.id);
81
+ const newIndex = searchState.filters.findIndex(f => f.key === over.id);
82
+ if (oldIndex === -1 || newIndex === -1) {
83
+ return;
84
+ }
85
+ const filters = arrayMove(searchState.filters, oldIndex, newIndex).map((filter, idx) => ({
80
86
  ...filter,
81
- index: result.source.index === filter.index
82
- ? result.destination.index
83
- : result.destination.index === filter.index
84
- ? result.source.index
85
- : filter.index,
86
- }))
87
- .sort((a, b) => a.index - b.index);
88
- searchDispatch({
89
- type: SearchActionTypes.SET_FILTERS,
90
- filters: newFilter,
91
- });
87
+ index: idx,
88
+ }));
89
+ searchDispatch({ type: SearchActionTypes.SET_FILTERS, filters });
92
90
  };
93
91
  const filtersSorted = searchState.filters.sort((a, b) => a.index - b.index);
94
92
  const _handleApplyFilters = () => {
@@ -117,7 +115,7 @@ function FiltersPanel() {
117
115
  label: t('filters.remove-filters'),
118
116
  },
119
117
  ],
120
- }, children: _jsxs(Button, { type: "text", style: { display: 'inline-flex' }, children: [t('filters.filters'), _jsx(DownOutlined, { style: { marginTop: '5px', marginLeft: '-3px' } })] }) }), _jsxs(Space, { size: "small", children: [_jsx(Button, { disabled: !searchState.filters.length, onClick: _handleApplyFilters, children: t('filters.apply') }), _jsx(Button, { onClick: _handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] })] }), _jsx(FiltersWrapper, { children: _jsx(DragDropContext, { onDragEnd: onDragEnd, children: _jsx(Droppable, { droppableId: "droppable", children: providedDroppable => (_jsxs(ListFilters, { ...providedDroppable.droppableProps, ref: providedDroppable.innerRef, children: [filtersSorted.map(filter => (_jsx(Draggable, { draggableId: filter.index.toString(), index: filter.index, children: provided => (_jsx("div", { ref: provided.innerRef, ...provided.draggableProps, children: _jsx(Filter, { filter: filter, handleProps: provided.dragHandleProps }, filter.index) })) }, filter.index))), providedDroppable.placeholder] })) }) }) })] }));
118
+ }, children: _jsxs(Button, { type: "text", style: { display: 'inline-flex' }, children: [t('filters.filters'), _jsx(DownOutlined, { style: { marginTop: '5px', marginLeft: '-3px' } })] }) }), _jsxs(Space, { size: "small", children: [_jsx(Button, { disabled: !searchState.filters.length, onClick: _handleApplyFilters, children: t('filters.apply') }), _jsx(Button, { onClick: _handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] })] }), _jsx(FiltersWrapper, { children: _jsx(DndContext, { collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: filtersSorted.map(v => v.key), strategy: verticalListSortingStrategy, children: _jsx(ListFilters, { children: filtersSorted.map(filter => (_jsx(Filter, { filter: filter }, filter.key))) }) }) }) })] }));
121
119
  }
122
120
  export default FiltersPanel;
123
121
  //# sourceMappingURL=FiltersPanel.js.map