@leav/ui 1.9.0-2 → 1.9.0-25f0df5c

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 (57) hide show
  1. package/dist/_gqlTypes/index.d.ts +103 -20
  2. package/dist/_gqlTypes/index.js +46 -11
  3. package/dist/_gqlTypes/index.js.map +1 -1
  4. package/dist/_queries/records/createRecordMutation.js +2 -2
  5. package/dist/_queries/records/createRecordMutation.js.map +1 -1
  6. package/dist/components/Explorer/Explorer.js +22 -12
  7. package/dist/components/Explorer/Explorer.js.map +1 -1
  8. package/dist/components/Explorer/ExplorerToolbar.js +2 -1
  9. package/dist/components/Explorer/ExplorerToolbar.js.map +1 -1
  10. package/dist/components/Explorer/_queries/useExplorerCountData.d.ts +16 -0
  11. package/dist/components/Explorer/_queries/useExplorerCountData.js +26 -0
  12. package/dist/components/Explorer/_queries/useExplorerCountData.js.map +1 -0
  13. package/dist/components/Explorer/_queries/useExplorerData.js +18 -20
  14. package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
  15. package/dist/components/Explorer/actions-mass/ResultsCount.d.ts +10 -0
  16. package/dist/components/Explorer/actions-mass/ResultsCount.js +8 -0
  17. package/dist/components/Explorer/actions-mass/ResultsCount.js.map +1 -0
  18. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.d.ts +9 -2
  19. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js +18 -4
  20. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js.map +1 -1
  21. package/dist/components/Explorer/actions-mass/useMassActions.d.ts +5 -3
  22. package/dist/components/Explorer/actions-mass/useMassActions.js +19 -13
  23. package/dist/components/Explorer/actions-mass/useMassActions.js.map +1 -1
  24. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.d.ts +3 -1
  25. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js +5 -1
  26. package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js.map +1 -1
  27. package/dist/components/Explorer/manage-view-settings/configure-display/view-type/SelectViewType.js +1 -1
  28. package/dist/components/Explorer/manage-view-settings/configure-display/view-type/SelectViewType.js.map +1 -1
  29. package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
  30. package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
  31. package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
  32. package/dist/components/RecordEdition/EditRecordContent/_types.d.ts +4 -0
  33. package/dist/components/RecordEdition/EditRecordContent/_types.js.map +1 -1
  34. package/dist/components/RecordEdition/EditRecordModal/EditRecordModal.js +28 -17
  35. package/dist/components/RecordEdition/EditRecordModal/EditRecordModal.js.map +1 -1
  36. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
  37. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +30 -18
  38. package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
  39. package/dist/components/RecordEdition/EditRecordPage/ErrorComponent.d.ts +2 -0
  40. package/dist/components/RecordEdition/EditRecordPage/ErrorComponent.js +11 -0
  41. package/dist/components/RecordEdition/EditRecordPage/ErrorComponent.js.map +1 -0
  42. package/dist/components/RecordEdition/EditRecordPage/getInitialRecordValues.d.ts +2 -0
  43. package/dist/components/RecordEdition/EditRecordPage/getInitialRecordValues.js +35 -0
  44. package/dist/components/RecordEdition/EditRecordPage/getInitialRecordValues.js.map +1 -0
  45. package/dist/components/RecordEdition/_types.d.ts +1 -1
  46. package/dist/components/RecordEdition/_types.js.map +1 -1
  47. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.d.ts +1 -1
  48. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +6 -2
  49. package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
  50. package/dist/hooks/useIFrameMessenger/schema.d.ts +2 -2
  51. package/dist/hooks/useIFrameMessenger/schema.js +1 -1
  52. package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
  53. package/dist/hooks/useIFrameMessenger/types.d.ts +5 -0
  54. package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
  55. package/dist/locales/en/shared.json +2 -2
  56. package/dist/locales/fr/shared.json +2 -2
  57. package/package.json +8 -12
@@ -5,8 +5,8 @@ import { gql } from '@apollo/client';
5
5
  import { recordIdentityFragment } from '../../gqlFragments';
6
6
  const createRecordMutation = gql `
7
7
  ${recordIdentityFragment}
8
- mutation CREATE_RECORD($library: ID!, $data: CreateRecordDataInput) {
9
- createRecord(library: $library, data: $data) {
8
+ mutation CREATE_RECORD($library: ID!, $skipActivate: Boolean, $data: CreateRecordDataInput) {
9
+ createRecord(library: $library, skipActivate: $skipActivate, data: $data) {
10
10
  record {
11
11
  ...RecordIdentity
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createRecordMutation.js","sourceRoot":"","sources":["../../../src/_queries/records/createRecordMutation.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AAEtE,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE1D,MAAM,oBAAoB,GAAG,GAAG,CAAA;MAC1B,sBAAsB;;;;;;;;;;;;;;CAc3B,CAAC;AAEF,eAAe,oBAAoB,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\n\nimport {gql} from '@apollo/client';\nimport {recordIdentityFragment} from '../../gqlFragments';\n\nconst createRecordMutation = gql`\n ${recordIdentityFragment}\n mutation CREATE_RECORD($library: ID!, $data: CreateRecordDataInput) {\n createRecord(library: $library, data: $data) {\n record {\n ...RecordIdentity\n }\n valuesErrors {\n type\n attribute\n input\n message\n }\n }\n }\n`;\n\nexport default createRecordMutation;\n"]}
1
+ {"version":3,"file":"createRecordMutation.js","sourceRoot":"","sources":["../../../src/_queries/records/createRecordMutation.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AAEtE,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE1D,MAAM,oBAAoB,GAAG,GAAG,CAAA;MAC1B,sBAAsB;;;;;;;;;;;;;;CAc3B,CAAC;AAEF,eAAe,oBAAoB,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\n\nimport {gql} from '@apollo/client';\nimport {recordIdentityFragment} from '../../gqlFragments';\n\nconst createRecordMutation = gql`\n ${recordIdentityFragment}\n mutation CREATE_RECORD($library: ID!, $skipActivate: Boolean, $data: CreateRecordDataInput) {\n createRecord(library: $library, skipActivate: $skipActivate, data: $data) {\n record {\n ...RecordIdentity\n }\n valuesErrors {\n type\n attribute\n input\n message\n }\n }\n }\n`;\n\nexport default createRecordMutation;\n"]}
@@ -29,6 +29,7 @@ import { useFiltersReducer } from '../../components/Filters/context/useFiltersRe
29
29
  import { FiltersContext } from '../../components/Filters/context/filtersContext';
30
30
  import { useExportMassAction } from './actions-mass/useExportMassAction';
31
31
  import { useEditAttributeMassAction } from './actions-mass/useEditAttributeMassAction';
32
+ import { useExplorerCountData } from './_queries/useExplorerCountData';
32
33
  const isNotEmpty = (union) => union.length > 0;
33
34
  const emptyArray = [];
34
35
  const emptyObject = {};
@@ -50,7 +51,7 @@ const ExplorerEmptyDataStyled = styled.div `
50
51
  align-items: center;
51
52
  justify-content: center;
52
53
  `;
53
- export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActions = [], massActions = [], title, selectionMode = 'multiple', emptyPlaceholder, noPagination, creationFormId, showCreateOnNoResultOnly = false, showFilters = false, showSorts = false, hideFirstActionLabel = false, disableSelection = false, hideSelectAllAction = false, showTitle = false, showSearch = false, hidePrimaryActions = false, hideTableHeader = false, useSmallHeaderSize = false, tableBodyHeight, ignoreViewByDefault = false, defaultActionsForItem = ['replaceLink', 'remove', 'activate'], defaultPrimaryActions = ['create'], defaultMassActions = ['deactivate', 'editAttribute'], defaultCallbacks, defaultViewSettings, joinLibraryContext, }, ref) => {
54
+ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActions = [], massActions = [], title, selectionMode = 'multiple', emptyPlaceholder, noPagination, creationFormId, showCreateOnNoResultOnly = false, showFilters = false, showSorts = false, hideFirstActionLabel = false, disableSelection = false, hideSelectAllAction = false, showTitle = false, showSearch = false, hidePrimaryActions = false, hideTableHeader = false, useSmallHeaderSize = false, tableBodyHeight, ignoreViewByDefault = false, defaultActionsForItem = ['replaceLink', 'remove', 'activate'], defaultPrimaryActions = ['create'], defaultMassActions = ['deactivate', 'editAttribute', 'export'], defaultCallbacks, defaultViewSettings, joinLibraryContext, }, ref) => {
54
55
  const { t } = useSharedTranslation();
55
56
  const { panelElement: settingsPanelElement } = useEditSettings();
56
57
  const { loading: viewSettingsLoading, view, dispatch: viewSettingsDispatch, } = useViewSettingsReducer(entrypoint, defaultViewSettings, ignoreViewByDefault);
@@ -91,7 +92,14 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
91
92
  canReplaceLinkValues: canEditLinkAttributeValues,
92
93
  columnsToDisplay: !joinLibraryContext ? view.attributesIds : [],
93
94
  });
94
- const totalCount = data?.totalCount ?? 0;
95
+ const totalCountFiltered = data?.totalCount ?? 0;
96
+ const { countData: totalCountLibrary, refetchCount } = useExplorerCountData({
97
+ entrypoint,
98
+ libraryId: view.libraryId,
99
+ defaultFilters: defaultViewSettings?.filters ?? [],
100
+ filters: filtersData.filters,
101
+ skip: viewSettingsLoading,
102
+ });
95
103
  const hasNoResults = data === null || data.totalCount === 0;
96
104
  const isAllowedFreeEntry = !(entrypoint.type === 'library' && !entrypoint.allowFreeEntry);
97
105
  const showCreatePrimaryButton = showCreateOnNoResultOnly
@@ -106,9 +114,10 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
106
114
  joinLibraryContext,
107
115
  entrypoint,
108
116
  isMultivalue,
109
- totalCount,
117
+ totalCount: totalCountFiltered,
110
118
  formId: creationFormId,
111
119
  refetch,
120
+ refetchCount,
112
121
  });
113
122
  const { linkPrimaryAction, linkModal } = useLinkPrimaryAction({
114
123
  isEnabled: isLink,
@@ -125,19 +134,19 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
125
134
  const { exportMassAction, ExportModal } = useExportMassAction({
126
135
  isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('export'),
127
136
  store: { view, dispatch: viewSettingsDispatch },
128
- totalCount,
137
+ totalCount: totalCountFiltered,
129
138
  onExport: defaultCallbacks?.mass?.export,
130
139
  });
131
140
  const { editAttributeMassAction, editAttributeMassActionModal } = useEditAttributeMassAction({
132
141
  isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('editAttribute'),
133
142
  store: { view },
134
- totalCount,
143
+ totalCount: totalCountFiltered,
135
144
  });
136
145
  const { deactivateMassAction } = useDeactivateMassAction({
137
146
  isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),
138
147
  store: { view, dispatch: viewSettingsDispatch },
139
148
  allVisibleKeys,
140
- totalCount,
149
+ totalCount: totalCountFiltered,
141
150
  onDeactivate: defaultCallbacks?.mass?.deactivate,
142
151
  refetch,
143
152
  });
@@ -150,15 +159,16 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
150
159
  onDelete: defaultCallbacks?.mass?.deactivate,
151
160
  refetch,
152
161
  });
153
- const _isSelectionDisable = disableSelection || (isLink && !isMultivalue && totalCount > 0);
162
+ const _isSelectionDisable = disableSelection || (isLink && !isMultivalue && totalCountFiltered > 0);
154
163
  const massActionSnackbarId = useMemo(() => `${SNACKBAR_MASS_ID}_${Date.now()}`, []);
155
164
  const { setSelectedKeys, selectAllButton } = useMassActions({
156
- isEnabled: totalCount > 0 &&
165
+ isEnabled: totalCountFiltered > 0 &&
157
166
  !_isSelectionDisable &&
158
167
  (isNotEmpty(defaultMassActions) || isNotEmpty(massActions) || !!defaultCallbacks?.item?.select),
159
168
  store: { view, dispatch: viewSettingsDispatch },
160
169
  filtersStore: filtersData,
161
- totalCount,
170
+ totalCountFiltered,
171
+ totalCountLibrary,
162
172
  allVisibleKeys,
163
173
  massActions: [
164
174
  exportMassAction,
@@ -179,8 +189,8 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
179
189
  useImperativeHandle(ref, () => ({
180
190
  createAction: createPrimaryAction,
181
191
  linkAction: linkPrimaryAction,
182
- totalCount,
183
- }), [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCount]);
192
+ totalCount: totalCountFiltered,
193
+ }), [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCountFiltered]);
184
194
  return (_jsxs(_Fragment, { children: [_jsx(FiltersContext.Provider, { value: { filtersData, dispatch: filtersDispatch }, children: _jsxs(ViewSettingsContext.Provider, { value: { view, dispatch: viewSettingsDispatch }, children: [_jsxs(ExplorerPageDivStyled, { children: [showTitle && (_jsx(ExplorerHeaderDivStyled, { children: _jsx(KitTypography.Title, { level: "h3", children: !viewSettingsLoading && (_jsx(ExplorerTitle, { library: view.libraryId, title: title, entrypoint: entrypoint })) /*TODO: manage loading*/ }) })), _jsxs(ExplorerToolbar, { showFilters: showFilters, showSorts: showSorts, isMassSelectionAll: isMassSelectionAll, headless: hideTableHeader, canRemoveFilters: view?.enableConfigureView ?? false, selectAllButton: hideSelectAllAction ? null : selectAllButton, viewSettingsLoading: viewSettingsLoading, children: [view?.enableConfigureView ? viewListButton : null, showSearch ? searchInput : null, view?.enableConfigureView ? viewSettingsButton : null, hidePrimaryActions ? null : primaryButton] }), loadingData || viewSettingsLoading ? (_jsx(Loading, {})) : hasNoResults ? (_jsx(ExplorerEmptyDataStyled, { children: emptyPlaceholder || _jsx(KitEmpty, { title: t('explorer.empty-data') }) })) : (_jsx(DataView, { dataGroupedFilteredSorted: data?.records ?? emptyArray, attributesProperties: data?.attributes ?? emptyObject, attributesToDisplay: [WHO_AM_I_COLUMN, ...view.attributesIds], hideTableHeader: hideTableHeader, useSmallHeaderSize: useSmallHeaderSize, paginationProps: entrypoint.type === 'library' && !noPagination
185
195
  ? {
186
196
  pageSizeOptions: defaultPageSizeOptions,
@@ -188,7 +198,7 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
188
198
  pageSize: view.pageSize,
189
199
  setNewPageSize,
190
200
  setNewPage,
191
- totalCount,
201
+ totalCount: totalCountFiltered,
192
202
  }
193
203
  : undefined, itemActions: [...itemActions, replaceItemAction, editStatusItemAction]
194
204
  .filter(Boolean)
@@ -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 useSmallHeaderSize?: boolean;\n tableBodyHeight?: string;\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 useSmallHeaderSize = false,\n tableBodyHeight,\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 useSmallHeaderSize={useSmallHeaderSize}\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 tableBodyHeight={tableBodyHeight}\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';\nimport {useExplorerCountData} from './_queries/useExplorerCountData';\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 useSmallHeaderSize?: boolean;\n tableBodyHeight?: string;\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 useSmallHeaderSize = false,\n tableBodyHeight,\n ignoreViewByDefault = false,\n defaultActionsForItem = ['replaceLink', 'remove', 'activate'],\n defaultPrimaryActions = ['create'],\n defaultMassActions = ['deactivate', 'editAttribute', 'export'],\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 totalCountFiltered = data?.totalCount ?? 0;\n\n const {countData: totalCountLibrary, refetchCount} = useExplorerCountData({\n entrypoint,\n libraryId: view.libraryId,\n defaultFilters: defaultViewSettings?.filters ?? [],\n filters: filtersData.filters,\n skip: viewSettingsLoading,\n });\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: totalCountFiltered,\n formId: creationFormId,\n refetch,\n refetchCount,\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: totalCountFiltered,\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: totalCountFiltered,\n });\n\n const {deactivateMassAction} = useDeactivateMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n allVisibleKeys,\n totalCount: totalCountFiltered,\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 && totalCountFiltered > 0);\n\n const massActionSnackbarId = useMemo(() => `${SNACKBAR_MASS_ID}_${Date.now()}`, []);\n\n const {setSelectedKeys, selectAllButton} = useMassActions({\n isEnabled:\n totalCountFiltered > 0 &&\n !_isSelectionDisable &&\n (isNotEmpty(defaultMassActions) || isNotEmpty(massActions) || !!defaultCallbacks?.item?.select),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n totalCountFiltered,\n totalCountLibrary,\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: totalCountFiltered,\n }),\n [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCountFiltered],\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 useSmallHeaderSize={useSmallHeaderSize}\n paginationProps={\n entrypoint.type === 'library' && !noPagination\n ? {\n pageSizeOptions: defaultPageSizeOptions,\n currentPage,\n pageSize: view.pageSize,\n setNewPageSize,\n setNewPage,\n totalCount: totalCountFiltered,\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 tableBodyHeight={tableBodyHeight}\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"]}
@@ -3,7 +3,8 @@ import { useSharedTranslation } from '../../hooks/useSharedTranslation';
3
3
  import { ExplorerFiltersAndSorts } from './ExplorerFiltersAndSorts';
4
4
  import styled from 'styled-components';
5
5
  const ExplorerToolbarListStyled = styled.ul `
6
- padding: calc(var(--general-spacing-xs) * 1px);
6
+ padding: calc(var(--general-spacing-xs) * 1px) calc(var(--general-spacing-xs) * 1px)
7
+ calc(var(--general-spacing-xs) * 1px) calc(var(--general-spacing-s) * 1px);
7
8
  margin: 0;
8
9
  margin-bottom: calc(var(--general-spacing-s) * 1px);
9
10
  background: var(--general-colors-neutral-grey-100);
@@ -1 +1 @@
1
- {"version":3,"file":"ExplorerToolbar.js","sourceRoot":"","sources":["../../../src/components/Explorer/ExplorerToolbar.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,yBAAyB,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuB1C,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAKzB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAQvB,CAAC,EACF,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,OAAO,CACH,MAAC,yBAAyB,kBAAa,CAAC,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAC/F,KAAC,OAAO,cACH,CAAC,mBAAmB,IAAI,CACrB,KAAC,uBAAuB,IACpB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,GACxC,CACL,GACK,EACV,KAAC,OAAO,cAAE,QAAQ,GAAW,IACL,CAC/B,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 ReactNode, type FunctionComponent} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {ExplorerFiltersAndSorts} from './ExplorerFiltersAndSorts';\nimport styled from 'styled-components';\n\nconst ExplorerToolbarListStyled = styled.ul`\n padding: calc(var(--general-spacing-xs) * 1px);\n margin: 0;\n margin-bottom: calc(var(--general-spacing-s) * 1px);\n background: var(--general-colors-neutral-grey-100);\n border-radius: calc(var(--general-border-radius-s) * 1px);\n list-style: none;\n display: flex;\n overflow: auto;\n align-items: center;\n gap: calc(var(--general-spacing-xxs) * 1px);\n white-space: nowrap;\n min-height: 26px; // height of the filter chip\n justify-content: space-between;\n\n &.headless {\n margin-bottom: 0;\n }\n\n & > div:last-of-type {\n flex-shrink: 0;\n align-self: start;\n }\n`;\n\nconst Section = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: calc(var(--general-spacing-xxs) * 1px);\n`;\n\nexport const ExplorerToolbar: FunctionComponent<{\n isMassSelectionAll: boolean;\n showFilters: boolean;\n showSorts: boolean;\n headless: boolean;\n canRemoveFilters: boolean;\n selectAllButton: ReactNode | null;\n viewSettingsLoading: boolean;\n}> = ({\n isMassSelectionAll,\n showFilters,\n showSorts,\n headless,\n canRemoveFilters,\n selectAllButton,\n viewSettingsLoading,\n children,\n}) => {\n const {t} = useSharedTranslation();\n\n return (\n <ExplorerToolbarListStyled aria-label={t('explorer.toolbar')} className={headless ? 'headless' : ''}>\n <Section>\n {!viewSettingsLoading && (\n <ExplorerFiltersAndSorts\n selectAllButton={selectAllButton}\n showFilters={showFilters}\n showSorts={showSorts}\n canRemoveFilters={canRemoveFilters}\n isMassSelectionAll={isMassSelectionAll}\n />\n )}\n </Section>\n <Section>{children}</Section>\n </ExplorerToolbarListStyled>\n );\n};\n"]}
1
+ {"version":3,"file":"ExplorerToolbar.js","sourceRoot":"","sources":["../../../src/components/Explorer/ExplorerToolbar.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,yBAAyB,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwB1C,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAKzB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAQvB,CAAC,EACF,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,OAAO,CACH,MAAC,yBAAyB,kBAAa,CAAC,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAC/F,KAAC,OAAO,cACH,CAAC,mBAAmB,IAAI,CACrB,KAAC,uBAAuB,IACpB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,GACxC,CACL,GACK,EACV,KAAC,OAAO,cAAE,QAAQ,GAAW,IACL,CAC/B,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 ReactNode, type FunctionComponent} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {ExplorerFiltersAndSorts} from './ExplorerFiltersAndSorts';\nimport styled from 'styled-components';\n\nconst ExplorerToolbarListStyled = styled.ul`\n padding: calc(var(--general-spacing-xs) * 1px) calc(var(--general-spacing-xs) * 1px)\n calc(var(--general-spacing-xs) * 1px) calc(var(--general-spacing-s) * 1px);\n margin: 0;\n margin-bottom: calc(var(--general-spacing-s) * 1px);\n background: var(--general-colors-neutral-grey-100);\n border-radius: calc(var(--general-border-radius-s) * 1px);\n list-style: none;\n display: flex;\n overflow: auto;\n align-items: center;\n gap: calc(var(--general-spacing-xxs) * 1px);\n white-space: nowrap;\n min-height: 26px; // height of the filter chip\n justify-content: space-between;\n\n &.headless {\n margin-bottom: 0;\n }\n\n & > div:last-of-type {\n flex-shrink: 0;\n align-self: start;\n }\n`;\n\nconst Section = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: calc(var(--general-spacing-xxs) * 1px);\n`;\n\nexport const ExplorerToolbar: FunctionComponent<{\n isMassSelectionAll: boolean;\n showFilters: boolean;\n showSorts: boolean;\n headless: boolean;\n canRemoveFilters: boolean;\n selectAllButton: ReactNode | null;\n viewSettingsLoading: boolean;\n}> = ({\n isMassSelectionAll,\n showFilters,\n showSorts,\n headless,\n canRemoveFilters,\n selectAllButton,\n viewSettingsLoading,\n children,\n}) => {\n const {t} = useSharedTranslation();\n\n return (\n <ExplorerToolbarListStyled aria-label={t('explorer.toolbar')} className={headless ? 'headless' : ''}>\n <Section>\n {!viewSettingsLoading && (\n <ExplorerFiltersAndSorts\n selectAllButton={selectAllButton}\n showFilters={showFilters}\n showSorts={showSorts}\n canRemoveFilters={canRemoveFilters}\n isMassSelectionAll={isMassSelectionAll}\n />\n )}\n </Section>\n <Section>{children}</Section>\n </ExplorerToolbarListStyled>\n );\n};\n"]}
@@ -0,0 +1,16 @@
1
+ import { type RecordFilterInput } from '../../../_gqlTypes';
2
+ import { type UIFilter } from '../../../components/Filters';
3
+ import { type Entrypoint } from '../_types';
4
+ export declare const useExplorerCountData: ({ entrypoint, libraryId, defaultFilters, filters, skip, }: {
5
+ entrypoint: Entrypoint;
6
+ libraryId: string;
7
+ defaultFilters: UIFilter[];
8
+ filters: UIFilter[];
9
+ skip?: boolean;
10
+ }) => {
11
+ countData: number;
12
+ refetchCount: (variables?: Partial<import("../../../_gqlTypes").Exact<{
13
+ libraryId: import("../../../_gqlTypes").Scalars["ID"]["input"];
14
+ filters?: import("../../../_gqlTypes").InputMaybe<Array<import("../../../_gqlTypes").InputMaybe<RecordFilterInput>> | import("../../../_gqlTypes").InputMaybe<RecordFilterInput>>;
15
+ }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../../../_gqlTypes").ExplorerLibraryCountDataQuery>>;
16
+ };
@@ -0,0 +1,26 @@
1
+ // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
2
+ // This file is released under LGPL V3
3
+ // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
4
+ import { useExplorerLibraryCountDataQuery } from '../../../_gqlTypes';
5
+ import { prepareFiltersForRequest } from '../../../components/Filters';
6
+ import { useMemo } from 'react';
7
+ export const useExplorerCountData = ({ entrypoint, libraryId, defaultFilters, filters, skip, }) => {
8
+ const isLibrary = entrypoint.type === 'library';
9
+ const activeFilters = prepareFiltersForRequest(filters.filter(f => f.field === 'active'));
10
+ const defaultPreparedFilters = prepareFiltersForRequest(defaultFilters);
11
+ const appliedFilters = [...activeFilters, ...defaultPreparedFilters];
12
+ const { data: countData, refetch: refetchCount } = useExplorerLibraryCountDataQuery({
13
+ fetchPolicy: 'network-only',
14
+ skip: skip || !isLibrary,
15
+ variables: {
16
+ libraryId,
17
+ filters: appliedFilters,
18
+ },
19
+ });
20
+ const memoizedCountData = useMemo(() => countData?.records?.totalCount ?? 0, [countData]);
21
+ return {
22
+ countData: memoizedCountData,
23
+ refetchCount,
24
+ };
25
+ };
26
+ //# sourceMappingURL=useExplorerCountData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useExplorerCountData.js","sourceRoot":"","sources":["../../../../src/components/Explorer/_queries/useExplorerCountData.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAyB,gCAAgC,EAAC,MAAM,eAAe,CAAC;AACvF,OAAO,EAAgB,wBAAwB,EAAC,MAAM,wBAAwB,CAAC;AAE/E,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAE9B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACjC,UAAU,EACV,SAAS,EACT,cAAc,EACd,OAAO,EACP,IAAI,GAOP,EAAE,EAAE;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC;IAChD,MAAM,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC;IAC1F,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAExE,MAAM,cAAc,GAAwB,CAAC,GAAG,aAAa,EAAE,GAAG,sBAAsB,CAAC,CAAC;IAE1F,MAAM,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAC,GAAG,gCAAgC,CAAC;QAC9E,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS;QACxB,SAAS,EAAE;YACP,SAAS;YACT,OAAO,EAAE,cAAc;SAC1B;KACJ,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1F,OAAO;QACH,SAAS,EAAE,iBAAiB;QAC5B,YAAY;KACf,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 RecordFilterInput, useExplorerLibraryCountDataQuery} from '_ui/_gqlTypes';\nimport {type UIFilter, prepareFiltersForRequest} from '_ui/components/Filters';\nimport {type Entrypoint} from '../_types';\nimport {useMemo} from 'react';\n\nexport const useExplorerCountData = ({\n entrypoint,\n libraryId,\n defaultFilters,\n filters,\n skip,\n}: {\n entrypoint: Entrypoint;\n libraryId: string;\n defaultFilters: UIFilter[];\n filters: UIFilter[];\n skip?: boolean;\n}) => {\n const isLibrary = entrypoint.type === 'library';\n const activeFilters = prepareFiltersForRequest(filters.filter(f => f.field === 'active'));\n const defaultPreparedFilters = prepareFiltersForRequest(defaultFilters);\n\n const appliedFilters: RecordFilterInput[] = [...activeFilters, ...defaultPreparedFilters];\n\n const {data: countData, refetch: refetchCount} = useExplorerLibraryCountDataQuery({\n fetchPolicy: 'network-only',\n skip: skip || !isLibrary,\n variables: {\n libraryId,\n filters: appliedFilters,\n },\n });\n\n const memoizedCountData = useMemo(() => countData?.records?.totalCount ?? 0, [countData]);\n\n return {\n countData: memoizedCountData,\n refetchCount,\n };\n};\n"]}
@@ -132,28 +132,26 @@ export const useExplorerData = ({ entrypoint, libraryId, attributeIds, fulltextS
132
132
  return null;
133
133
  }, [libraryData, linkData]);
134
134
  const ids = memoizedData?.records.map(record => record.itemId);
135
- const { data: updatedData } = useGetRecordUpdatesSubscription({ libraries: [libraryId], records: ids }, !libraryId);
136
- // TOTO: change to useMemo, and use updatedData to update memoizedData with new Data. Good luck !
135
+ const { data: updatedData } = useGetRecordUpdatesSubscription({ libraries: [libraryId], records: ids }, !libraryId || !ids || ids.length === 0);
136
+ // TODO: change to useMemo, and use updatedData to update memoizedData with new Data. Good luck !
137
137
  useEffect(() => {
138
- if (updatedData && memoizedData) {
139
- if (isLibrary) {
140
- //fetching updated record will update cache data, and all will be updated automatically
141
- fetchLibraryRecord({
142
- variables: {
143
- libraryId,
144
- attributeIds,
145
- filters: [
146
- {
147
- field: 'id',
148
- condition: AttributeConditionFilter.EQUAL,
149
- value: updatedData.recordUpdate.record.id,
150
- },
151
- ],
152
- },
153
- });
154
- }
138
+ if (updatedData && memoizedData && isLibrary) {
139
+ fetchLibraryRecord({
140
+ variables: {
141
+ libraryId,
142
+ attributeIds,
143
+ filters: [
144
+ {
145
+ field: 'id',
146
+ condition: AttributeConditionFilter.EQUAL,
147
+ value: updatedData.recordUpdate.record.id,
148
+ },
149
+ ],
150
+ },
151
+ fetchPolicy: 'network-only',
152
+ });
155
153
  }
156
- }, [updatedData, memoizedData]);
154
+ }, [updatedData]);
157
155
  return {
158
156
  data: memoizedData,
159
157
  isMultivalue,
@@ -1 +1 @@
1
- {"version":3,"file":"useExplorerData.js","sourceRoot":"","sources":["../../../../src/components/Explorer/_queries/useExplorerData.ts"],"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 {localizedTranslation} from '@leav/utils';\nimport {useEffect, useMemo} from 'react';\nimport {useGetRecordUpdatesSubscription, useLang} from '_ui/hooks';\nimport {\n type Entrypoint,\n type IEntrypointLink,\n type IExplorerData,\n type DefaultViewSettings,\n type IEntrypointLibrary,\n} from '../_types';\nimport {\n type ExplorerLibraryDataQuery,\n type ExplorerLinkDataQuery,\n type LinkPropertyLinkValueFragment,\n type SortOrder,\n useExplorerLibraryDataLazyQuery,\n useExplorerLibraryDataQuery,\n useExplorerLinkAttributeQuery,\n useExplorerLinkDataQuery,\n} from '_ui/_gqlTypes';\nimport {type UIFilter} from '_ui/components/Filters/_types';\nimport {prepareFiltersForRequest} from '_ui/components/Filters';\nimport {AttributeConditionFilter} from '_ui/types';\n\nexport const dateValuesSeparator = '\\n';\n\nconst _mappingLibrary = (\n data: ExplorerLibraryDataQuery,\n libraryId: string,\n availableLangs: string[],\n): IExplorerData => {\n const attributes = data.records.list.length\n ? data.records.list[0].properties.reduce((acc, property) => {\n acc[property.attributeId] = {\n ...property.attributeProperties,\n label: localizedTranslation(property.attributeProperties.label, availableLangs),\n };\n\n return acc;\n }, {})\n : {};\n\n const records = data.records.list.map(({whoAmI, active, permissions, properties}) => ({\n libraryId,\n key: whoAmI.id, // For <KitTable /> only\n itemId: whoAmI.id, // For <KitTable /> only\n active,\n canActivate: permissions.create_record,\n canDelete: permissions.delete_record,\n whoAmI: {\n label: null,\n subLabel: null,\n color: null,\n preview: null,\n ...whoAmI,\n },\n propertiesById: properties.reduce((acc, {attributeId, values}) => ({...acc, [attributeId]: values}), {}),\n }));\n\n return {\n totalCount: data.records.totalCount ?? 0,\n attributes,\n records,\n };\n};\n\nconst _mappingLink = (data: ExplorerLinkDataQuery, libraryId: string, availableLangs: string[]): IExplorerData => {\n const attributes = data.records.list.length\n ? ((data.records.list[0].property[0] as LinkPropertyLinkValueFragment)?.payload?.properties ?? []).reduce(\n (acc, property) => {\n acc[property.attributeId] = {\n ...property.attributeProperties,\n label: localizedTranslation(property.attributeProperties.label, availableLangs),\n };\n\n return acc;\n },\n {},\n )\n : {};\n\n const records =\n (data.records.list.length &&\n data.records.list[0].property\n .map((linkValue: LinkPropertyLinkValueFragment, index: number) => {\n if (!linkValue.payload) {\n return null;\n }\n\n return {\n libraryId,\n // same link id can be duplicated, so we add the index to the key\n key: linkValue.payload.whoAmI.id + index, // For <KitTable /> only\n itemId: linkValue.payload.whoAmI.id, // For <KitTable /> only\n canActivate: true,\n canDelete: true,\n active: true,\n whoAmI: {\n label: null,\n subLabel: null,\n color: null,\n preview: null,\n ...linkValue.payload.whoAmI,\n },\n propertiesById: linkValue.payload.properties.reduce(\n (acc, {attributeId, values}) => ({...acc, [attributeId]: values}),\n {},\n ),\n id_value: linkValue.id_value ?? undefined,\n };\n })\n .filter(Boolean)) ||\n [];\n\n return {\n totalCount: records.length,\n attributes,\n records,\n };\n};\n\nexport const useExplorerData = ({\n entrypoint,\n libraryId,\n attributeIds,\n fulltextSearch,\n sorts,\n pagination,\n filters,\n filtersOperator,\n skip,\n}: {\n entrypoint: Entrypoint;\n libraryId: string;\n attributeIds: string[];\n fulltextSearch: string;\n sorts: Array<{\n field: string;\n order: SortOrder;\n }>;\n pagination: null | {limit: number; offset: number};\n filters: UIFilter[];\n filtersOperator: DefaultViewSettings['filtersOperator'];\n skip: boolean;\n}) => {\n const {lang: availableLangs} = useLang();\n\n const isLibrary = entrypoint.type === 'library';\n const isLink = entrypoint.type === 'link';\n\n const {data: attributeData} = useExplorerLinkAttributeQuery({\n skip: isLibrary,\n variables: {\n id: (entrypoint as IEntrypointLink).linkAttributeId,\n },\n });\n\n const isLinkAttributeAllowed = attributeData?.attributes?.list?.[0]?.permissions?.access_attribute;\n const {\n data: linkData,\n loading: linkLoading,\n refetch: linkRefetch,\n } = useExplorerLinkDataQuery({\n fetchPolicy: 'network-only',\n skip: skip || !isLink || !isLinkAttributeAllowed,\n variables: {\n parentLibraryId: (entrypoint as IEntrypointLink).parentLibraryId,\n parentRecordId: (entrypoint as IEntrypointLink).parentRecordId,\n linkAttributeId: (entrypoint as IEntrypointLink).linkAttributeId,\n attributeIds,\n },\n });\n\n const allowFreeEntry = isLibrary ? (entrypoint as IEntrypointLibrary).allowFreeEntry : undefined;\n const valuesList =\n !isLibrary || (fulltextSearch && allowFreeEntry) ? undefined : (entrypoint as IEntrypointLibrary).valuesList; // Remove values list for free entry values list on search\n const preparedFilters = prepareFiltersForRequest(filters, filtersOperator, valuesList);\n\n const {\n data: libraryData,\n loading: libraryLoading,\n refetch: libraryRefetch,\n } = useExplorerLibraryDataQuery({\n fetchPolicy: 'network-only',\n skip: skip || !isLibrary,\n variables: {\n libraryId,\n attributeIds,\n pagination,\n searchQuery: fulltextSearch,\n multipleSort: sorts,\n filters: preparedFilters,\n },\n });\n\n const [fetchLibraryRecord] = useExplorerLibraryDataLazyQuery();\n\n const isMultivalue = !!attributeData?.attributes?.list?.[0]?.multiple_values;\n const canEditLinkAttributeValues = !!attributeData?.attributes?.list?.[0]?.permissions?.edit_value;\n\n const memoizedData = useMemo(() => {\n if (isLibrary) {\n return libraryData ? _mappingLibrary(libraryData, libraryId, availableLangs) : null;\n }\n\n if (isLink) {\n return linkData ? _mappingLink(linkData, libraryId, availableLangs) : null;\n }\n\n return null;\n }, [libraryData, linkData]);\n\n const ids = memoizedData?.records.map(record => record.itemId);\n const {data: updatedData} = useGetRecordUpdatesSubscription({libraries: [libraryId], records: ids}, !libraryId);\n\n // TOTO: change to useMemo, and use updatedData to update memoizedData with new Data. Good luck !\n useEffect(() => {\n if (updatedData && memoizedData) {\n if (isLibrary) {\n //fetching updated record will update cache data, and all will be updated automatically\n fetchLibraryRecord({\n variables: {\n libraryId,\n attributeIds,\n filters: [\n {\n field: 'id',\n condition: AttributeConditionFilter.EQUAL,\n value: updatedData.recordUpdate.record.id,\n },\n ],\n },\n });\n }\n }\n }, [updatedData, memoizedData]);\n\n return {\n data: memoizedData,\n isMultivalue,\n canEditLinkAttributeValues,\n loading: isLibrary ? libraryLoading : linkLoading,\n refetch: isLibrary ? libraryRefetch : linkRefetch,\n };\n};\n"]}
1
+ {"version":3,"file":"useExplorerData.js","sourceRoot":"","sources":["../../../../src/components/Explorer/_queries/useExplorerData.ts"],"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 {localizedTranslation} from '@leav/utils';\nimport {useEffect, useMemo} from 'react';\nimport {useGetRecordUpdatesSubscription, useLang} from '_ui/hooks';\nimport {\n type Entrypoint,\n type IEntrypointLink,\n type IExplorerData,\n type DefaultViewSettings,\n type IEntrypointLibrary,\n} from '../_types';\nimport {\n type ExplorerLibraryDataQuery,\n type ExplorerLinkDataQuery,\n type LinkPropertyLinkValueFragment,\n type SortOrder,\n useExplorerLibraryDataLazyQuery,\n useExplorerLibraryDataQuery,\n useExplorerLinkAttributeQuery,\n useExplorerLinkDataQuery,\n} from '_ui/_gqlTypes';\nimport {type UIFilter} from '_ui/components/Filters/_types';\nimport {prepareFiltersForRequest} from '_ui/components/Filters';\nimport {AttributeConditionFilter} from '_ui/types';\n\nexport const dateValuesSeparator = '\\n';\n\nconst _mappingLibrary = (\n data: ExplorerLibraryDataQuery,\n libraryId: string,\n availableLangs: string[],\n): IExplorerData => {\n const attributes = data.records.list.length\n ? data.records.list[0].properties.reduce((acc, property) => {\n acc[property.attributeId] = {\n ...property.attributeProperties,\n label: localizedTranslation(property.attributeProperties.label, availableLangs),\n };\n\n return acc;\n }, {})\n : {};\n\n const records = data.records.list.map(({whoAmI, active, permissions, properties}) => ({\n libraryId,\n key: whoAmI.id, // For <KitTable /> only\n itemId: whoAmI.id, // For <KitTable /> only\n active,\n canActivate: permissions.create_record,\n canDelete: permissions.delete_record,\n whoAmI: {\n label: null,\n subLabel: null,\n color: null,\n preview: null,\n ...whoAmI,\n },\n propertiesById: properties.reduce((acc, {attributeId, values}) => ({...acc, [attributeId]: values}), {}),\n }));\n\n return {\n totalCount: data.records.totalCount ?? 0,\n attributes,\n records,\n };\n};\n\nconst _mappingLink = (data: ExplorerLinkDataQuery, libraryId: string, availableLangs: string[]): IExplorerData => {\n const attributes = data.records.list.length\n ? ((data.records.list[0].property[0] as LinkPropertyLinkValueFragment)?.payload?.properties ?? []).reduce(\n (acc, property) => {\n acc[property.attributeId] = {\n ...property.attributeProperties,\n label: localizedTranslation(property.attributeProperties.label, availableLangs),\n };\n\n return acc;\n },\n {},\n )\n : {};\n\n const records =\n (data.records.list.length &&\n data.records.list[0].property\n .map((linkValue: LinkPropertyLinkValueFragment, index: number) => {\n if (!linkValue.payload) {\n return null;\n }\n\n return {\n libraryId,\n // same link id can be duplicated, so we add the index to the key\n key: linkValue.payload.whoAmI.id + index, // For <KitTable /> only\n itemId: linkValue.payload.whoAmI.id, // For <KitTable /> only\n canActivate: true,\n canDelete: true,\n active: true,\n whoAmI: {\n label: null,\n subLabel: null,\n color: null,\n preview: null,\n ...linkValue.payload.whoAmI,\n },\n propertiesById: linkValue.payload.properties.reduce(\n (acc, {attributeId, values}) => ({...acc, [attributeId]: values}),\n {},\n ),\n id_value: linkValue.id_value ?? undefined,\n };\n })\n .filter(Boolean)) ||\n [];\n\n return {\n totalCount: records.length,\n attributes,\n records,\n };\n};\n\nexport const useExplorerData = ({\n entrypoint,\n libraryId,\n attributeIds,\n fulltextSearch,\n sorts,\n pagination,\n filters,\n filtersOperator,\n skip,\n}: {\n entrypoint: Entrypoint;\n libraryId: string;\n attributeIds: string[];\n fulltextSearch: string;\n sorts: Array<{\n field: string;\n order: SortOrder;\n }>;\n pagination: null | {limit: number; offset: number};\n filters: UIFilter[];\n filtersOperator: DefaultViewSettings['filtersOperator'];\n skip: boolean;\n}) => {\n const {lang: availableLangs} = useLang();\n\n const isLibrary = entrypoint.type === 'library';\n const isLink = entrypoint.type === 'link';\n\n const {data: attributeData} = useExplorerLinkAttributeQuery({\n skip: isLibrary,\n variables: {\n id: (entrypoint as IEntrypointLink).linkAttributeId,\n },\n });\n\n const isLinkAttributeAllowed = attributeData?.attributes?.list?.[0]?.permissions?.access_attribute;\n const {\n data: linkData,\n loading: linkLoading,\n refetch: linkRefetch,\n } = useExplorerLinkDataQuery({\n fetchPolicy: 'network-only',\n skip: skip || !isLink || !isLinkAttributeAllowed,\n variables: {\n parentLibraryId: (entrypoint as IEntrypointLink).parentLibraryId,\n parentRecordId: (entrypoint as IEntrypointLink).parentRecordId,\n linkAttributeId: (entrypoint as IEntrypointLink).linkAttributeId,\n attributeIds,\n },\n });\n\n const allowFreeEntry = isLibrary ? (entrypoint as IEntrypointLibrary).allowFreeEntry : undefined;\n const valuesList =\n !isLibrary || (fulltextSearch && allowFreeEntry) ? undefined : (entrypoint as IEntrypointLibrary).valuesList; // Remove values list for free entry values list on search\n const preparedFilters = prepareFiltersForRequest(filters, filtersOperator, valuesList);\n\n const {\n data: libraryData,\n loading: libraryLoading,\n refetch: libraryRefetch,\n } = useExplorerLibraryDataQuery({\n fetchPolicy: 'network-only',\n skip: skip || !isLibrary,\n variables: {\n libraryId,\n attributeIds,\n pagination,\n searchQuery: fulltextSearch,\n multipleSort: sorts,\n filters: preparedFilters,\n },\n });\n\n const [fetchLibraryRecord] = useExplorerLibraryDataLazyQuery();\n\n const isMultivalue = !!attributeData?.attributes?.list?.[0]?.multiple_values;\n const canEditLinkAttributeValues = !!attributeData?.attributes?.list?.[0]?.permissions?.edit_value;\n\n const memoizedData = useMemo(() => {\n if (isLibrary) {\n return libraryData ? _mappingLibrary(libraryData, libraryId, availableLangs) : null;\n }\n\n if (isLink) {\n return linkData ? _mappingLink(linkData, libraryId, availableLangs) : null;\n }\n\n return null;\n }, [libraryData, linkData]);\n\n const ids = memoizedData?.records.map(record => record.itemId);\n const {data: updatedData} = useGetRecordUpdatesSubscription(\n {libraries: [libraryId], records: ids},\n !libraryId || !ids || ids.length === 0,\n );\n\n // TODO: change to useMemo, and use updatedData to update memoizedData with new Data. Good luck !\n useEffect(() => {\n if (updatedData && memoizedData && isLibrary) {\n fetchLibraryRecord({\n variables: {\n libraryId,\n attributeIds,\n filters: [\n {\n field: 'id',\n condition: AttributeConditionFilter.EQUAL,\n value: updatedData.recordUpdate.record.id,\n },\n ],\n },\n fetchPolicy: 'network-only',\n });\n }\n }, [updatedData]);\n\n return {\n data: memoizedData,\n isMultivalue,\n canEditLinkAttributeValues,\n loading: isLibrary ? libraryLoading : linkLoading,\n refetch: isLibrary ? libraryRefetch : linkRefetch,\n };\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import { type useSharedTranslation } from '../../../hooks/useSharedTranslation';
2
+ import { type FunctionComponent } from 'react';
3
+ interface IResultCountProps {
4
+ t: ReturnType<typeof useSharedTranslation>['t'];
5
+ isInactive: boolean;
6
+ totalCountFiltered: number;
7
+ totalCountLibrary: number;
8
+ }
9
+ export declare const ResultsCount: FunctionComponent<IResultCountProps>;
10
+ export {};
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { KitTypography } from 'aristid-ds';
3
+ export const ResultsCount = ({ t, isInactive, totalCountFiltered, totalCountLibrary, }) => (_jsxs(KitTypography.Paragraph, { children: [_jsx(KitTypography.Text, { weight: "bold", size: "fontSize7", children: isInactive
4
+ ? `${totalCountLibrary} `
5
+ : totalCountFiltered === totalCountLibrary
6
+ ? `${totalCountLibrary} `
7
+ : `${totalCountFiltered} / ${totalCountLibrary} ` }), _jsx(KitTypography.Text, { weight: "medium", size: "fontSize7", children: t('explorer.massAction.results', { count: totalCountLibrary }) })] }));
8
+ //# sourceMappingURL=ResultsCount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultsCount.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/ResultsCount.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAUzC,MAAM,CAAC,MAAM,YAAY,GAAyC,CAAC,EAC/D,CAAC,EACD,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GACpB,EAAE,EAAE,CAAC,CACF,MAAC,aAAa,CAAC,SAAS,eACpB,KAAC,aAAa,CAAC,IAAI,IAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,WAAW,YAC7C,UAAU;gBACP,CAAC,CAAC,GAAG,iBAAiB,GAAG;gBACzB,CAAC,CAAC,kBAAkB,KAAK,iBAAiB;oBACxC,CAAC,CAAC,GAAG,iBAAiB,GAAG;oBACzB,CAAC,CAAC,GAAG,kBAAkB,MAAM,iBAAiB,GAAG,GACtC,EACrB,KAAC,aAAa,CAAC,IAAI,IAAC,MAAM,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,YAC/C,CAAC,CAAC,6BAA6B,EAAE,EAAC,KAAK,EAAE,iBAAiB,EAAC,CAAC,GAC5C,IACC,CAC7B,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 useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {KitTypography} from 'aristid-ds';\nimport {type FunctionComponent} from 'react';\n\ninterface IResultCountProps {\n t: ReturnType<typeof useSharedTranslation>['t'];\n isInactive: boolean;\n totalCountFiltered: number;\n totalCountLibrary: number;\n}\n\nexport const ResultsCount: FunctionComponent<IResultCountProps> = ({\n t,\n isInactive,\n totalCountFiltered,\n totalCountLibrary,\n}) => (\n <KitTypography.Paragraph>\n <KitTypography.Text weight=\"bold\" size=\"fontSize7\">\n {isInactive\n ? `${totalCountLibrary} `\n : totalCountFiltered === totalCountLibrary\n ? `${totalCountLibrary} `\n : `${totalCountFiltered} / ${totalCountLibrary} `}\n </KitTypography.Text>\n <KitTypography.Text weight=\"medium\" size=\"fontSize7\">\n {t('explorer.massAction.results', {count: totalCountLibrary})}\n </KitTypography.Text>\n </KitTypography.Paragraph>\n);\n"]}
@@ -1,5 +1,12 @@
1
- import { type CountValuesOccurrencesQuery, type RecordFilterInput } from '../../../../_gqlTypes';
2
- export type ValuesOccurrences = NonNullable<CountValuesOccurrencesQuery['countValuesOccurrences']> & {
1
+ import { type RecordFilterInput } from '../../../../_gqlTypes';
2
+ export type ValuesOccurrences = {
3
+ noValueCount: number;
4
+ occurrences: Array<{
5
+ count: number;
6
+ value: {
7
+ id: string;
8
+ };
9
+ }>;
3
10
  loading?: boolean;
4
11
  };
5
12
  export type ValueOccurrence = ValuesOccurrences['occurrences'][0];
@@ -1,8 +1,8 @@
1
1
  // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
2
2
  // This file is released under LGPL V3
3
3
  // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
4
- import { useCountValuesOccurrencesLazyQuery, } from '../../../../_gqlTypes';
5
- import { useEffect } from 'react';
4
+ import { useCountValuesOccurrencesLazyQuery } from '../../../../_gqlTypes';
5
+ import { useEffect, useMemo } from 'react';
6
6
  export const useCountValuesOccurrencesHook = ({ attributeId, libraryId, recordFilters, }) => {
7
7
  const [countValuesOccurrences, { data: valuesOccurrences, loading }] = useCountValuesOccurrencesLazyQuery({
8
8
  fetchPolicy: 'no-cache',
@@ -19,9 +19,23 @@ export const useCountValuesOccurrencesHook = ({ attributeId, libraryId, recordFi
19
19
  });
20
20
  }
21
21
  }, [attributeId, libraryId, recordFilters]);
22
+ const noValueCount = useMemo(() => {
23
+ if (!valuesOccurrences) {
24
+ return 0;
25
+ }
26
+ return valuesOccurrences.listDistinctValues?.find(v => !('treeNode' in v) || v.treeNode === null)?.count || 0;
27
+ }, [valuesOccurrences]);
28
+ const occurrences = useMemo(() => {
29
+ if (!valuesOccurrences) {
30
+ return [];
31
+ }
32
+ return (valuesOccurrences.listDistinctValues
33
+ ?.filter(v => 'treeNode' in v && v.treeNode !== null)
34
+ .map(v => ({ count: v.count, value: { id: v.treeNode.id } })) || []);
35
+ }, [valuesOccurrences]);
22
36
  return {
23
- occurrences: valuesOccurrences?.countValuesOccurrences?.occurrences || [],
24
- noValueCount: valuesOccurrences?.countValuesOccurrences?.noValueCount || 0,
37
+ occurrences,
38
+ noValueCount,
25
39
  loading,
26
40
  };
27
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useCountValuesOccurrencesHook.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.tsx"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAGH,kCAAkC,GACrC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAMhC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC1C,WAAW,EACX,SAAS,EACT,aAAa,GAKhB,EAAqB,EAAE;IACpB,MAAM,CAAC,sBAAsB,EAAE,EAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAC,CAAC,GAAG,kCAAkC,CAAC;QACpG,WAAW,EAAE,UAAU;QACvB,eAAe,EAAE,UAAU;KAC9B,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,WAAW,EAAE,CAAC;YACd,sBAAsB,CAAC;gBACnB,SAAS,EAAE;oBACP,SAAS,EAAE,WAAW;oBACtB,OAAO,EAAE,SAAS;oBAClB,aAAa;iBAChB;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5C,OAAO;QACH,WAAW,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,IAAI,EAAE;QACzE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,YAAY,IAAI,CAAC;QAC1E,OAAO;KACV,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 {\n type CountValuesOccurrencesQuery,\n type RecordFilterInput,\n useCountValuesOccurrencesLazyQuery,\n} from '_ui/_gqlTypes';\nimport {useEffect} from 'react';\n\nexport type ValuesOccurrences = NonNullable<CountValuesOccurrencesQuery['countValuesOccurrences']> & {\n loading?: boolean;\n};\nexport type ValueOccurrence = ValuesOccurrences['occurrences'][0];\nexport const useCountValuesOccurrencesHook = ({\n attributeId,\n libraryId,\n recordFilters,\n}: {\n attributeId?: string;\n libraryId: string;\n recordFilters: RecordFilterInput[];\n}): ValuesOccurrences => {\n const [countValuesOccurrences, {data: valuesOccurrences, loading}] = useCountValuesOccurrencesLazyQuery({\n fetchPolicy: 'no-cache',\n nextFetchPolicy: 'no-cache',\n });\n\n useEffect(() => {\n if (attributeId) {\n countValuesOccurrences({\n variables: {\n attribute: attributeId,\n library: libraryId,\n recordFilters,\n },\n });\n }\n }, [attributeId, libraryId, recordFilters]);\n\n return {\n occurrences: valuesOccurrences?.countValuesOccurrences?.occurrences || [],\n noValueCount: valuesOccurrences?.countValuesOccurrences?.noValueCount || 0,\n loading,\n };\n};\n"]}
1
+ {"version":3,"file":"useCountValuesOccurrencesHook.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.tsx"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAyB,kCAAkC,EAAC,MAAM,eAAe,CAAC;AACzF,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAQzC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC1C,WAAW,EACX,SAAS,EACT,aAAa,GAKhB,EAAqB,EAAE;IACpB,MAAM,CAAC,sBAAsB,EAAE,EAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAC,CAAC,GAAG,kCAAkC,CAAC;QACpG,WAAW,EAAE,UAAU;QACvB,eAAe,EAAE,UAAU;KAC9B,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,WAAW,EAAE,CAAC;YACd,sBAAsB,CAAC;gBACnB,SAAS,EAAE;oBACP,SAAS,EAAE,WAAW;oBACtB,OAAO,EAAE,SAAS;oBAClB,aAAa;iBAChB;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC;QACb,CAAC;QACD,OAAO,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CACH,iBAAiB,CAAC,kBAAkB;YAChC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAC,EAAE,EAAG,CAA8B,CAAC,QAAQ,CAAC,EAAE,EAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CACpG,CAAC;IACN,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,OAAO;QACH,WAAW;QACX,YAAY;QACZ,OAAO;KACV,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 RecordFilterInput, useCountValuesOccurrencesLazyQuery} from '_ui/_gqlTypes';\nimport {useEffect, useMemo} from 'react';\n\nexport type ValuesOccurrences = {\n noValueCount: number;\n occurrences: Array<{count: number; value: {id: string}}>;\n loading?: boolean;\n};\nexport type ValueOccurrence = ValuesOccurrences['occurrences'][0];\nexport const useCountValuesOccurrencesHook = ({\n attributeId,\n libraryId,\n recordFilters,\n}: {\n attributeId?: string;\n libraryId: string;\n recordFilters: RecordFilterInput[];\n}): ValuesOccurrences => {\n const [countValuesOccurrences, {data: valuesOccurrences, loading}] = useCountValuesOccurrencesLazyQuery({\n fetchPolicy: 'no-cache',\n nextFetchPolicy: 'no-cache',\n });\n\n useEffect(() => {\n if (attributeId) {\n countValuesOccurrences({\n variables: {\n attribute: attributeId,\n library: libraryId,\n recordFilters,\n },\n });\n }\n }, [attributeId, libraryId, recordFilters]);\n\n const noValueCount = useMemo(() => {\n if (!valuesOccurrences) {\n return 0;\n }\n return valuesOccurrences.listDistinctValues?.find(v => !('treeNode' in v) || v.treeNode === null)?.count || 0;\n }, [valuesOccurrences]);\n\n const occurrences = useMemo(() => {\n if (!valuesOccurrences) {\n return [];\n }\n return (\n valuesOccurrences.listDistinctValues\n ?.filter(v => 'treeNode' in v && v.treeNode !== null)\n .map(v => ({count: v.count, value: {id: (v as {treeNode: {id: string}}).treeNode.id}})) || []\n );\n }, [valuesOccurrences]);\n\n return {\n occurrences,\n noValueCount,\n loading,\n };\n};\n"]}