@leav/ui 1.14.0 → 1.15.0-64b980c3

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 (137) hide show
  1. package/dist/components/EditTreeModal/EditTree/EditTreeInfo/EditTreeInfoForm/TreeLibrariesForm/TreeLibrariesForm.js +1 -1
  2. package/dist/components/EditTreeModal/EditTree/EditTreeInfo/EditTreeInfoForm/TreeLibrariesForm/TreeLibrariesForm.js.map +1 -1
  3. package/dist/components/Explorer/Explorer.d.ts +9 -3
  4. package/dist/components/Explorer/Explorer.js +32 -17
  5. package/dist/components/Explorer/Explorer.js.map +1 -1
  6. package/dist/components/Explorer/ExplorerFiltersAndSorts.js +1 -0
  7. package/dist/components/Explorer/ExplorerFiltersAndSorts.js.map +1 -1
  8. package/dist/components/Explorer/ExplorerTitle.js +1 -1
  9. package/dist/components/Explorer/ExplorerTitle.js.map +1 -1
  10. package/dist/components/Explorer/TableCell.js +7 -6
  11. package/dist/components/Explorer/TableCell.js.map +1 -1
  12. package/dist/components/Explorer/TableNameCell.js +2 -3
  13. package/dist/components/Explorer/TableNameCell.js.map +1 -1
  14. package/dist/components/Explorer/_types.d.ts +3 -1
  15. package/dist/components/Explorer/_types.js.map +1 -1
  16. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js +1 -1
  17. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js.map +1 -1
  18. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js +1 -1
  19. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js.map +1 -1
  20. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js +1 -1
  21. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
  22. package/dist/components/Explorer/list-saved-views/SavedViews.js +6 -4
  23. package/dist/components/Explorer/list-saved-views/SavedViews.js.map +1 -1
  24. package/dist/components/Explorer/manage-view-settings-v2/useOpenViewSettingsV2.d.ts +18 -0
  25. package/dist/components/Explorer/manage-view-settings-v2/useOpenViewSettingsV2.js +41 -0
  26. package/dist/components/Explorer/manage-view-settings-v2/useOpenViewSettingsV2.js.map +1 -0
  27. package/dist/components/Explorer/useLoadView.d.ts +10 -1
  28. package/dist/components/Explorer/useLoadView.js +2 -6
  29. package/dist/components/Explorer/useLoadView.js.map +1 -1
  30. package/dist/components/Explorer/useLoadViewById.d.ts +25 -0
  31. package/dist/components/Explorer/useLoadViewById.js +28 -0
  32. package/dist/components/Explorer/useLoadViewById.js.map +1 -0
  33. package/dist/components/Explorer/useViewSettingsReducer.js +3 -2
  34. package/dist/components/Explorer/useViewSettingsReducer.js.map +1 -1
  35. package/dist/components/Filters/filter-items/filter-type/tree/useTreeNodeSelection.js +25 -10
  36. package/dist/components/Filters/filter-items/filter-type/tree/useTreeNodeSelection.js.map +1 -1
  37. package/dist/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.js +1 -1
  38. package/dist/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.js.map +1 -1
  39. package/dist/components/RecordCard/RecordCard.js +1 -1
  40. package/dist/components/RecordCard/RecordCard.js.map +1 -1
  41. package/dist/components/RecordEdition/EditRecordButtons/SidebarButton.js +1 -1
  42. package/dist/components/RecordEdition/EditRecordButtons/SidebarButton.js.map +1 -1
  43. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js +1 -2
  44. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js.map +1 -1
  45. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +1 -2
  46. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
  47. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/DeleteAllValuesButton.js +1 -1
  48. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/DeleteAllValuesButton.js.map +1 -1
  49. package/dist/components/RecordEdition/hooks/useCreateCancelConfirm/useCreateCancelConfirm.js +1 -1
  50. package/dist/components/RecordEdition/hooks/useCreateCancelConfirm/useCreateCancelConfirm.js.map +1 -1
  51. package/dist/components/SelectTreeNode/SelectTreeNode.js +1 -1
  52. package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
  53. package/dist/components/TriggerPreviewsGenerationModal/TriggerPreviewsGenerationModal.js +1 -1
  54. package/dist/components/TriggerPreviewsGenerationModal/TriggerPreviewsGenerationModal.js.map +1 -1
  55. package/dist/components/ValuesVersionConfigurator/VersionTree/VersionTree.js +1 -1
  56. package/dist/components/ValuesVersionConfigurator/VersionTree/VersionTree.js.map +1 -1
  57. package/dist/constants.d.ts +0 -1
  58. package/dist/constants.js +0 -1
  59. package/dist/constants.js.map +1 -1
  60. package/dist/hooks/index.d.ts +4 -8
  61. package/dist/hooks/index.js +4 -8
  62. package/dist/hooks/index.js.map +1 -1
  63. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClientContext.d.ts +20 -0
  64. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClientContext.js +3 -0
  65. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClientContext.js.map +1 -0
  66. package/dist/hooks/useIFrameMessengerClient/{IFrameMessengerClient.d.ts → IFrameMessengerClientProvider.d.ts} +1 -1
  67. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClientProvider.js +13 -0
  68. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClientProvider.js.map +1 -0
  69. package/dist/hooks/useIFrameMessengerClient/index.d.ts +2 -0
  70. package/dist/hooks/useIFrameMessengerClient/index.js +3 -0
  71. package/dist/hooks/useIFrameMessengerClient/index.js.map +1 -0
  72. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +14 -13
  73. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.js +2 -2
  74. package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.js.map +1 -1
  75. package/dist/hooks/useLang/__mocks__/useLang.js.map +1 -1
  76. package/dist/hooks/useLang/useLang.js.map +1 -1
  77. package/dist/hooks/usePanelMessenger/PanelMessengerProvider.d.ts +13 -0
  78. package/dist/hooks/{useIFrameMessenger/useIFrameMessengerContext.js → usePanelMessenger/PanelMessengerProvider.js} +22 -12
  79. package/dist/hooks/usePanelMessenger/PanelMessengerProvider.js.map +1 -0
  80. package/dist/hooks/usePanelMessenger/index.d.ts +6 -0
  81. package/dist/hooks/usePanelMessenger/index.js +6 -0
  82. package/dist/hooks/usePanelMessenger/index.js.map +1 -0
  83. package/dist/hooks/{useIFrameMessenger → usePanelMessenger}/messageHandlers.d.ts +2 -2
  84. package/dist/hooks/{useIFrameMessenger → usePanelMessenger}/messageHandlers.js +1 -1
  85. package/dist/hooks/usePanelMessenger/messageHandlers.js.map +1 -0
  86. package/dist/hooks/usePanelMessenger/panelMessengerContext.d.ts +10 -0
  87. package/dist/hooks/{useIFrameMessenger/iFrameMessengerContext.js → usePanelMessenger/panelMessengerContext.js} +2 -2
  88. package/dist/hooks/usePanelMessenger/panelMessengerContext.js.map +1 -0
  89. package/dist/hooks/{useIFrameMessenger → usePanelMessenger}/schema.d.ts +9 -0
  90. package/dist/hooks/{useIFrameMessenger → usePanelMessenger}/schema.js +10 -0
  91. package/dist/hooks/usePanelMessenger/schema.js.map +1 -0
  92. package/dist/hooks/{useIFrameMessenger → usePanelMessenger}/types.d.ts +20 -9
  93. package/dist/hooks/usePanelMessenger/types.js.map +1 -0
  94. package/dist/hooks/usePanelMessenger/usePanelEventHandlers.d.ts +10 -0
  95. package/dist/hooks/usePanelMessenger/usePanelEventHandlers.js +15 -0
  96. package/dist/hooks/usePanelMessenger/usePanelEventHandlers.js.map +1 -0
  97. package/dist/hooks/{useIFrameMessenger/useIFrameMessengerHandlers.d.ts → usePanelMessenger/usePanelIFrameHandlers.d.ts} +3 -3
  98. package/dist/hooks/{useIFrameMessenger/useIFrameMessengerHandlers.js → usePanelMessenger/usePanelIFrameHandlers.js} +5 -5
  99. package/dist/hooks/usePanelMessenger/usePanelIFrameHandlers.js.map +1 -0
  100. package/dist/hooks/{useIFrameMessenger/useIFrameMessenger.d.ts → usePanelMessenger/usePanelMessenger.d.ts} +3 -3
  101. package/dist/hooks/{useIFrameMessenger/useIFrameMessenger.js → usePanelMessenger/usePanelMessenger.js} +25 -4
  102. package/dist/hooks/usePanelMessenger/usePanelMessenger.js.map +1 -0
  103. package/dist/locales/en/shared.json +7 -1
  104. package/dist/locales/fr/shared.json +7 -1
  105. package/dist/testing/MockedLangContextProvider/MockedLangContextProvider.js +1 -1
  106. package/dist/testing/MockedLangContextProvider/MockedLangContextProvider.js.map +1 -1
  107. package/package.json +13 -12
  108. package/dist/hooks/useConfirmModal/__mocks__/index.d.ts +0 -1
  109. package/dist/hooks/useConfirmModal/__mocks__/index.js +0 -2
  110. package/dist/hooks/useConfirmModal/__mocks__/index.js.map +0 -1
  111. package/dist/hooks/useConfirmModal/index.d.ts +0 -1
  112. package/dist/hooks/useConfirmModal/index.js +0 -2
  113. package/dist/hooks/useConfirmModal/index.js.map +0 -1
  114. package/dist/hooks/useIFrameMessenger/iFrameMessengerContext.d.ts +0 -8
  115. package/dist/hooks/useIFrameMessenger/iFrameMessengerContext.js.map +0 -1
  116. package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +0 -1
  117. package/dist/hooks/useIFrameMessenger/schema.js.map +0 -1
  118. package/dist/hooks/useIFrameMessenger/types.js.map +0 -1
  119. package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js.map +0 -1
  120. package/dist/hooks/useIFrameMessenger/useIFrameMessengerContext.d.ts +0 -13
  121. package/dist/hooks/useIFrameMessenger/useIFrameMessengerContext.js.map +0 -1
  122. package/dist/hooks/useIFrameMessenger/useIFrameMessengerHandlers.js.map +0 -1
  123. package/dist/hooks/useIFrameMessenger/useNativePanelMessengerHandlers.d.ts +0 -14
  124. package/dist/hooks/useIFrameMessenger/useNativePanelMessengerHandlers.js +0 -19
  125. package/dist/hooks/useIFrameMessenger/useNativePanelMessengerHandlers.js.map +0 -1
  126. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClient.js +0 -13
  127. package/dist/hooks/useIFrameMessengerClient/IFrameMessengerClient.js.map +0 -1
  128. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +0 -19
  129. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.js +0 -3
  130. package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.js.map +0 -1
  131. package/dist/hooks/useLang/__mocks__/index.d.ts +0 -2
  132. package/dist/hooks/useLang/__mocks__/index.js +0 -3
  133. package/dist/hooks/useLang/__mocks__/index.js.map +0 -1
  134. package/dist/hooks/useLang/index.d.ts +0 -2
  135. package/dist/hooks/useLang/index.js +0 -3
  136. package/dist/hooks/useLang/index.js.map +0 -1
  137. /package/dist/hooks/{useIFrameMessenger → usePanelMessenger}/types.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOpenViewSettingsV2.js","sourceRoot":"","sources":["../../../../src/components/Explorer/manage-view-settings-v2/useOpenViewSettingsV2.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAyC,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAGlF,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACrG,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAIpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAClC,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,GAAG,IAAI,GAMlB,EAAE,EAAE;IACF,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,CAAC,4BAA4B,EAAE,+BAA+B,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAErG,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,iBAAiB,EAAE,EAAE,CAAC;YAC1B,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAEtB,MAAM,2BAA2B,GAG7B;QACA,OAAO,EAAE;YACL,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,GAAI;YACvC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;SAC3D;QACD,OAAO,EAAE;YACL,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,QAAQ,GAAI;YACzC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;SAC3D;QACD,KAAK,EAAE;YACH,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,oBAAoB,GAAI;YACrD,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;SACzD;QACD,OAAO,EAAE;YACL,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,UAAU,GAAI;YAC3C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;SAC3D;KACJ,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,8BAA8B;QAC9B,+BAA+B,CAC1B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CACtE,KAAC,UAAU,IAAoB,KAAK,EAAE,2BAA2B,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,YACzF,KAAC,SAAS,IACN,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,GAAG,KACJ,2BAA2B,CAAC,YAAY,CAAC,EAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,2BAA2B,EAAE,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAO,EAAC,CAAC,GACjG,IANW,YAAY,CAOhB,CAChB,CAAC,CACL,CAAC;IACN,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAElB,OAAO,EAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC;AAC3F,CAAC,CAAC","sourcesContent":["import {type ComponentProps, type ReactElement, useEffect, useState} from 'react';\nimport {type FeatureHook, type ViewSettingsShortcuts} from '../_types';\nimport {type IViewSettingsState} from '_ui/components/Explorer/manage-view-settings';\nimport {KitButton, KitTooltip} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faArrowDownWideShort, faBookmark, faFilter, faList} from '@fortawesome/free-solid-svg-icons';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\ntype IViewSettingsStateV2 = IViewSettingsState & {shortcuts: ViewSettingsShortcuts[]};\n\nexport const useOpenViewSettingsV2 = ({\n view,\n open,\n closeViewSettings,\n onViewSettingsShortcutClick,\n isEnabled = true,\n}: FeatureHook<{\n view: IViewSettingsStateV2;\n open: boolean;\n closeViewSettings?: () => void;\n onViewSettingsShortcutClick?: ({settingName, viewId}: {settingName: ViewSettingsShortcuts; viewId: string}) => void;\n}>) => {\n const {t} = useSharedTranslation();\n const [viewSettingsShortcutsButtons, setViewSettingsShortcutsButtons] = useState<ReactElement[]>([]);\n\n useEffect(() => {\n if (isEnabled) {\n if (!open) {\n closeViewSettings?.();\n }\n }\n }, [isEnabled, open]);\n\n const mappingShortcutDisplayProps: Record<\n ViewSettingsShortcuts,\n Pick<ComponentProps<typeof KitButton>, 'icon' | 'aria-label'>\n > = {\n display: {\n icon: <FontAwesomeIcon icon={faList} />,\n 'aria-label': String(t('explorer.viewSettings.display')),\n },\n filters: {\n icon: <FontAwesomeIcon icon={faFilter} />,\n 'aria-label': String(t('explorer.viewSettings.filters')),\n },\n sorts: {\n icon: <FontAwesomeIcon icon={faArrowDownWideShort} />,\n 'aria-label': String(t('explorer.viewSettings.sorts')),\n },\n catalog: {\n icon: <FontAwesomeIcon icon={faBookmark} />,\n 'aria-label': String(t('explorer.viewSettings.catalog')),\n },\n };\n\n useEffect(() => {\n // TODO: add if view.shortcuts\n setViewSettingsShortcutsButtons(\n (['display', 'filters', 'sorts', 'catalog'] as const).map(shortcutName => (\n <KitTooltip key={shortcutName} title={mappingShortcutDisplayProps[shortcutName]['aria-label']}>\n <KitButton\n type=\"secondary\"\n size=\"m\"\n {...mappingShortcutDisplayProps[shortcutName]}\n onClick={() => onViewSettingsShortcutClick?.({settingName: shortcutName, viewId: view.viewId!})}\n />\n </KitTooltip>\n )),\n );\n }, [view.viewId]);\n\n return {viewSettingsShortcutsButtons: isEnabled ? viewSettingsShortcutsButtons : null};\n};\n"]}
@@ -1,3 +1,12 @@
1
- export declare const useLoadView: () => {
1
+ import { type Dispatch } from 'react';
2
+ import { type IViewSettingsAction, type IViewSettingsState } from './manage-view-settings/store-view-settings/viewSettingsReducer';
3
+ import { type UIFiltersAction } from '../../components/Filters/context/filtersReducer';
4
+ interface IUseLoadViewArgs {
5
+ view: IViewSettingsState;
6
+ viewSettingsDispatch: Dispatch<IViewSettingsAction>;
7
+ filtersDispatch: Dispatch<UIFiltersAction>;
8
+ }
9
+ export declare const useLoadView: ({ view, viewSettingsDispatch, filtersDispatch }: IUseLoadViewArgs) => {
2
10
  loadView: (viewId: string | null) => Promise<void>;
3
11
  };
12
+ export {};
@@ -1,13 +1,9 @@
1
1
  import { useExplorerAttributesLazyQuery, useMeQuery } from '../../_gqlTypes';
2
2
  import { useRef } from 'react';
3
- import { useViewSettingsContext } from './manage-view-settings/store-view-settings/useViewSettingsContext';
4
3
  import { useEditSettings, ViewSettingsActionTypes } from './manage-view-settings';
5
4
  import { mapViewTypeFromExplorerToLegacy, mapViewTypeFromLegacyToExplorer } from './_constants';
6
- import { useFiltersContext } from '../../components/Filters/useFiltersContext';
7
5
  import { FiltersActionTypes } from '../../components/Filters/context/filtersReducer';
8
- export const useLoadView = () => {
9
- const { view, dispatch } = useViewSettingsContext();
10
- const { dispatch: filtersDispatch } = useFiltersContext();
6
+ export const useLoadView = ({ view, viewSettingsDispatch, filtersDispatch }) => {
11
7
  const { closeSettingsPanel } = useEditSettings();
12
8
  const currentView = useRef(null);
13
9
  const [fetchAttributes] = useExplorerAttributesLazyQuery({
@@ -60,7 +56,7 @@ export const useLoadView = () => {
60
56
  order: s.order,
61
57
  })),
62
58
  };
63
- dispatch({
59
+ viewSettingsDispatch({
64
60
  type: ViewSettingsActionTypes.LOAD_VIEW,
65
61
  payload: viewSettings,
66
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useLoadView.js","sourceRoot":"","sources":["../../../src/components/Explorer/useLoadView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,8BAA8B,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AACzE,OAAO,EAAC,MAAM,EAAC,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,mEAAmE,CAAC;AAEzG,OAAO,EAAC,eAAe,EAAE,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAC,+BAA+B,EAAE,+BAA+B,EAAC,MAAM,cAAc,CAAC;AAE9F,OAAO,EAAC,iBAAiB,EAAC,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,+CAA+C,CAAC;AAGjF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC5B,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,sBAAsB,EAAE,CAAC;IAClD,MAAM,EAAC,QAAQ,EAAE,eAAe,EAAC,GAAG,iBAAiB,EAAE,CAAC;IACxD,MAAM,EAAC,kBAAkB,EAAC,GAAG,eAAe,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEnD,MAAM,CAAC,eAAe,CAAC,GAAG,8BAA8B,CAAC;QACrD,WAAW,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,EAAC,IAAI,EAAC,GAAG,UAAU,EAAE,CAAC;IAE5B,OAAO;QACH,QAAQ,EAAE,KAAK,EAAE,MAAqB,EAAE,EAAE;YACtC,IAAI,QAA0B,CAAC;YAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,QAAQ,GAAG;oBACP,GAAG,IAAI,CAAC,mBAAmB;oBAC3B,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI;oBACrC,OAAO,EAAE,EAAC,IAAI,EAAE,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC;oBAC/D,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAwB;iBAC7D,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;YAClE,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YAED,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;YAE/B,MAAM,mBAAmB,GAAG;gBACxB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;aAChG,CAAC;YAEF,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC;gBAChD,SAAS,EAAE;oBACP,GAAG,EAAE,mBAAmB;iBAC3B;aACJ,CAAC,CAAC;YAEH,kBAAkB,EAAE,CAAC;YAErB,MAAM,kBAAkB,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACjG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACpB,OAAO,GAAG,CAAC;YACf,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,MAAM,YAAY,GAAuC;gBACrD,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI;gBACvC,UAAU,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;gBAC5C,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO;oBAClC,CAAC,CAAC,+BAA+B,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;oBACpE,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACnB,aAAa,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE;gBACpD,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9C,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,KAAK;iBACjB,CAAC,CAAC;aACN,CAAC;YAEF,QAAQ,CAAC;gBACL,IAAI,EAAE,uBAAuB,CAAC,SAAS;gBACvC,OAAO,EAAE,YAAY;aACxB,CAAC,CAAC;YACH,eAAe,CAAC;gBACZ,IAAI,EAAE,kBAAkB,CAAC,SAAS;gBAClC,OAAO,EAAE;oBACL,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI;oBACvC,OAAO,EAAE,EAAE;oBACX,kBAAkB;iBACrB;aACJ,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {useExplorerAttributesLazyQuery, useMeQuery} from '_ui/_gqlTypes';\nimport {useRef} from 'react';\nimport {useViewSettingsContext} from './manage-view-settings/store-view-settings/useViewSettingsContext';\nimport {type IUserView} from './_types';\nimport {useEditSettings, ViewSettingsActionTypes} from './manage-view-settings';\nimport {mapViewTypeFromExplorerToLegacy, mapViewTypeFromLegacyToExplorer} from './_constants';\nimport {type IViewSettingsActionLoadViewPayload} from './manage-view-settings/store-view-settings/viewSettingsReducer';\nimport {useFiltersContext} from '_ui/components/Filters/useFiltersContext';\nimport {FiltersActionTypes} from '_ui/components/Filters/context/filtersReducer';\nimport {type ValidFilter} from '../Filters/_types';\n\nexport const useLoadView = () => {\n const {view, dispatch} = useViewSettingsContext();\n const {dispatch: filtersDispatch} = useFiltersContext();\n const {closeSettingsPanel} = useEditSettings();\n const currentView = useRef<IUserView | null>(null);\n\n const [fetchAttributes] = useExplorerAttributesLazyQuery({\n fetchPolicy: 'network-only',\n });\n\n const {data} = useMeQuery();\n\n return {\n loadView: async (viewId: string | null) => {\n let viewData: IUserView | null;\n if (!viewId) {\n viewData = {\n ...view.defaultViewSettings,\n id: null,\n ownerId: data?.me?.whoAmI?.id ?? null,\n display: {type: mapViewTypeFromExplorerToLegacy[view.viewType]},\n label: {},\n shared: false,\n filters: view.defaultViewSettings.filters as ValidFilter[],\n };\n } else {\n viewData = view.savedViews.find(v => v.id === viewId) ?? null;\n }\n\n if (!viewData) {\n return;\n }\n\n currentView.current = viewData;\n\n const attributesToHydrate = [\n ...new Set([...(viewData?.filters ?? []), ...(viewData?.sort ?? [])].map(({field}) => field)),\n ];\n\n const fetchAttributesResult = await fetchAttributes({\n variables: {\n ids: attributesToHydrate,\n },\n });\n\n closeSettingsPanel();\n\n const attributesDataById = (fetchAttributesResult.data?.attributes?.list ?? []).reduce((acc, attr) => {\n acc[attr.id] = attr;\n return acc;\n }, {});\n\n const viewSettings: IViewSettingsActionLoadViewPayload = {\n viewId: currentView.current?.id ?? null,\n viewLabels: currentView.current?.label ?? {},\n viewType: currentView.current?.display\n ? mapViewTypeFromLegacyToExplorer[currentView.current?.display.type]\n : view.viewType,\n attributesIds: currentView.current?.attributes ?? [],\n sort: (currentView.current?.sort ?? []).map(s => ({\n field: s.field,\n order: s.order,\n })),\n };\n\n dispatch({\n type: ViewSettingsActionTypes.LOAD_VIEW,\n payload: viewSettings,\n });\n filtersDispatch({\n type: FiltersActionTypes.LOAD_VIEW,\n payload: {\n viewId: currentView.current?.id ?? null,\n filters: [],\n attributesDataById,\n },\n });\n },\n };\n};\n"]}
1
+ {"version":3,"file":"useLoadView.js","sourceRoot":"","sources":["../../../src/components/Explorer/useLoadView.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useExplorerAttributesLazyQuery, useMeQuery} from '_ui/_gqlTypes';\nimport {type Dispatch, useRef} from 'react';\nimport {type IUserView} from './_types';\nimport {useEditSettings, ViewSettingsActionTypes} from './manage-view-settings';\nimport {mapViewTypeFromExplorerToLegacy, mapViewTypeFromLegacyToExplorer} from './_constants';\nimport {\n type IViewSettingsAction,\n type IViewSettingsActionLoadViewPayload,\n type IViewSettingsState,\n} from './manage-view-settings/store-view-settings/viewSettingsReducer';\nimport {FiltersActionTypes, type UIFiltersAction} from '_ui/components/Filters/context/filtersReducer';\nimport {type ValidFilter} from '../Filters/_types';\n\ninterface IUseLoadViewArgs {\n view: IViewSettingsState;\n viewSettingsDispatch: Dispatch<IViewSettingsAction>;\n filtersDispatch: Dispatch<UIFiltersAction>;\n}\n\nexport const useLoadView = ({view, viewSettingsDispatch, filtersDispatch}: IUseLoadViewArgs) => {\n const {closeSettingsPanel} = useEditSettings();\n const currentView = useRef<IUserView | null>(null);\n\n const [fetchAttributes] = useExplorerAttributesLazyQuery({\n fetchPolicy: 'network-only',\n });\n\n const {data} = useMeQuery();\n\n return {\n loadView: async (viewId: string | null) => {\n let viewData: IUserView | null;\n if (!viewId) {\n viewData = {\n ...view.defaultViewSettings,\n id: null,\n ownerId: data?.me?.whoAmI?.id ?? null,\n display: {type: mapViewTypeFromExplorerToLegacy[view.viewType]},\n label: {},\n shared: false,\n filters: view.defaultViewSettings.filters as ValidFilter[],\n };\n } else {\n viewData = view.savedViews.find(v => v.id === viewId) ?? null;\n }\n\n if (!viewData) {\n return;\n }\n\n currentView.current = viewData;\n\n const attributesToHydrate = [\n ...new Set([...(viewData?.filters ?? []), ...(viewData?.sort ?? [])].map(({field}) => field)),\n ];\n\n const fetchAttributesResult = await fetchAttributes({\n variables: {\n ids: attributesToHydrate,\n },\n });\n\n closeSettingsPanel();\n\n const attributesDataById = (fetchAttributesResult.data?.attributes?.list ?? []).reduce((acc, attr) => {\n acc[attr.id] = attr;\n return acc;\n }, {});\n\n const viewSettings: IViewSettingsActionLoadViewPayload = {\n viewId: currentView.current?.id ?? null,\n viewLabels: currentView.current?.label ?? {},\n viewType: currentView.current?.display\n ? mapViewTypeFromLegacyToExplorer[currentView.current?.display.type]\n : view.viewType,\n attributesIds: currentView.current?.attributes ?? [],\n sort: (currentView.current?.sort ?? []).map(s => ({\n field: s.field,\n order: s.order,\n })),\n };\n\n viewSettingsDispatch({\n type: ViewSettingsActionTypes.LOAD_VIEW,\n payload: viewSettings,\n });\n filtersDispatch({\n type: FiltersActionTypes.LOAD_VIEW,\n payload: {\n viewId: currentView.current?.id ?? null,\n filters: [],\n attributesDataById,\n },\n });\n },\n };\n};\n"]}
@@ -0,0 +1,25 @@
1
+ import { type Dispatch } from 'react';
2
+ import { type UIFiltersAction } from '../../components/Filters/context/filtersReducer';
3
+ import { type IViewSettingsAction, type IViewSettingsState } from './manage-view-settings/store-view-settings/viewSettingsReducer';
4
+ interface IUseLoadViewByIdArgs {
5
+ loadedViewId: string | null | undefined;
6
+ isLoading: boolean;
7
+ view: IViewSettingsState;
8
+ viewSettingsDispatch: Dispatch<IViewSettingsAction>;
9
+ filtersDispatch: Dispatch<UIFiltersAction>;
10
+ }
11
+ /**
12
+ * Loads a saved view from the controlled `loadedViewId` prop. Lets an external panel
13
+ * (e.g. viewConfig catalogue) drive the Explorer to a specific saved view without
14
+ * relying on `defaultViewSettings.viewId` (which is read once at mount only).
15
+ *
16
+ * Semantics:
17
+ * - undefined: parent does not drive — internal flow (SavedViews UI) keeps control
18
+ * - null: load the default view
19
+ * - 'X': load saved view 'X'
20
+ *
21
+ * Skipped while bootstrapping (savedViews not populated yet) and when the requested
22
+ * view is already the active one.
23
+ */
24
+ export declare const useLoadViewById: ({ loadedViewId, isLoading, view, viewSettingsDispatch, filtersDispatch, }: IUseLoadViewByIdArgs) => void;
25
+ export {};
@@ -0,0 +1,28 @@
1
+ import { useEffect } from 'react';
2
+ import { useLoadView } from './useLoadView';
3
+ /**
4
+ * Loads a saved view from the controlled `loadedViewId` prop. Lets an external panel
5
+ * (e.g. viewConfig catalogue) drive the Explorer to a specific saved view without
6
+ * relying on `defaultViewSettings.viewId` (which is read once at mount only).
7
+ *
8
+ * Semantics:
9
+ * - undefined: parent does not drive — internal flow (SavedViews UI) keeps control
10
+ * - null: load the default view
11
+ * - 'X': load saved view 'X'
12
+ *
13
+ * Skipped while bootstrapping (savedViews not populated yet) and when the requested
14
+ * view is already the active one.
15
+ */
16
+ export const useLoadViewById = ({ loadedViewId, isLoading, view, viewSettingsDispatch, filtersDispatch, }) => {
17
+ const { loadView } = useLoadView({ view, viewSettingsDispatch, filtersDispatch });
18
+ useEffect(() => {
19
+ if (isLoading || loadedViewId === undefined) {
20
+ return;
21
+ }
22
+ if (loadedViewId === view.viewId) {
23
+ return;
24
+ }
25
+ loadView(loadedViewId);
26
+ }, [loadedViewId, isLoading, view.viewId]);
27
+ };
28
+ //# sourceMappingURL=useLoadViewById.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadViewById.js","sourceRoot":"","sources":["../../../src/components/Explorer/useLoadViewById.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAC,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAc1C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,oBAAoB,EACpB,eAAe,GACI,EAAE,EAAE;IACvB,MAAM,EAAC,QAAQ,EAAC,GAAG,WAAW,CAAC,EAAC,IAAI,EAAE,oBAAoB,EAAE,eAAe,EAAC,CAAC,CAAC;IAE9E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO;QACX,CAAC;QACD,IAAI,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QACD,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC","sourcesContent":["import {type Dispatch, useEffect} from 'react';\nimport {type UIFiltersAction} from '_ui/components/Filters/context/filtersReducer';\nimport {useLoadView} from './useLoadView';\nimport {\n type IViewSettingsAction,\n type IViewSettingsState,\n} from './manage-view-settings/store-view-settings/viewSettingsReducer';\n\ninterface IUseLoadViewByIdArgs {\n loadedViewId: string | null | undefined;\n isLoading: boolean;\n view: IViewSettingsState;\n viewSettingsDispatch: Dispatch<IViewSettingsAction>;\n filtersDispatch: Dispatch<UIFiltersAction>;\n}\n\n/**\n * Loads a saved view from the controlled `loadedViewId` prop. Lets an external panel\n * (e.g. viewConfig catalogue) drive the Explorer to a specific saved view without\n * relying on `defaultViewSettings.viewId` (which is read once at mount only).\n *\n * Semantics:\n * - undefined: parent does not drive — internal flow (SavedViews UI) keeps control\n * - null: load the default view\n * - 'X': load saved view 'X'\n *\n * Skipped while bootstrapping (savedViews not populated yet) and when the requested\n * view is already the active one.\n */\nexport const useLoadViewById = ({\n loadedViewId,\n isLoading,\n view,\n viewSettingsDispatch,\n filtersDispatch,\n}: IUseLoadViewByIdArgs) => {\n const {loadView} = useLoadView({view, viewSettingsDispatch, filtersDispatch});\n\n useEffect(() => {\n if (isLoading || loadedViewId === undefined) {\n return;\n }\n if (loadedViewId === view.viewId) {\n return;\n }\n loadView(loadedViewId);\n }, [loadedViewId, isLoading, view.viewId]);\n};\n"]}
@@ -4,6 +4,7 @@ import { mapViewTypeFromLegacyToExplorer } from './_constants';
4
4
  import { useEditSettings, viewSettingsInitialState, viewSettingsReducer, } from './manage-view-settings';
5
5
  import { isLinkAttributeDetails, useTransformFilters, } from '../../components/Filters/useTransformFilters';
6
6
  const _areDifferents = (object1, object2) => Object.keys(object1).some(key => object1[key] !== object2[key]);
7
+ const _removeUndefinedValues = (defaultViewSettings) => Object.entries(defaultViewSettings).reduce((acc, [key, value]) => (value !== undefined ? { ...acc, [key]: value } : acc), {});
7
8
  export const useViewSettingsReducer = (entrypoint, defaultViewSettings = {}, ignoreViewByDefault) => {
8
9
  /**
9
10
  * Should be `true` during all the warm up, until we `RESET` the view.
@@ -73,7 +74,7 @@ export const useViewSettingsReducer = (entrypoint, defaultViewSettings = {}, ign
73
74
  const preparedDefaultFilters = toValidFilters(defaultViewSettings.filters ?? []);
74
75
  const attributesToHydrate = [
75
76
  ...new Set([
76
- ...(preparedDefaultFilters ?? []),
77
+ ...(preparedDefaultFilters ?? []), // FIXME: can be set with viewId too?
77
78
  ...(defaultViewSettings.sort ?? []),
78
79
  ...userAttributesToHydrate,
79
80
  ...(defaultViewSettings?.attributesIds?.map(attributeId => ({ field: attributeId })) ?? []),
@@ -129,7 +130,7 @@ export const useViewSettingsReducer = (entrypoint, defaultViewSettings = {}, ign
129
130
  libraryId,
130
131
  ...viewProps,
131
132
  savedViews,
132
- ...defaultViewSettings,
133
+ ..._removeUndefinedValues(defaultViewSettings),
133
134
  attributesIds: defaultAttributesIds.length > 0 ? defaultAttributesIds : userViewAttributesIds,
134
135
  sort: (defaultSorts.length > 0 ? defaultSorts : userViewSorts)
135
136
  .map(s => ({
@@ -1 +1 @@
1
- {"version":3,"file":"useViewSettingsReducer.js","sourceRoot":"","sources":["../../../src/components/Explorer/useViewSettingsReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {useEffect, useMemo, useReducer, useState} from 'react';\nimport {\n type GetViewsListQuery,\n useExplorerAttributesQuery,\n useExplorerLinkAttributeQuery,\n useGetViewsListQuery,\n ViewSizes,\n} from '_ui/_gqlTypes';\nimport {type DefaultViewSettings, type Entrypoint, type IEntrypointLink} from './_types';\nimport {mapViewTypeFromLegacyToExplorer} from './_constants';\nimport {\n type IViewSettingsState,\n useEditSettings,\n viewSettingsInitialState,\n viewSettingsReducer,\n} from './manage-view-settings';\nimport {\n type AttributesById,\n isLinkAttributeDetails,\n useTransformFilters,\n} from '_ui/components/Filters/useTransformFilters';\n\nconst _areDifferents = <T extends object>(object1: T, object2: T) =>\n Object.keys(object1).some(key => object1[key] !== object2[key]);\n\nexport const useViewSettingsReducer = (\n entrypoint: Entrypoint,\n defaultViewSettings: DefaultViewSettings = {},\n ignoreViewByDefault: boolean,\n) => {\n /**\n * Should be `true` during all the warm up, until we `RESET` the view.\n */\n const [loading, setLoading] = useState(true);\n const [libraryId, setLibraryId] = useState(entrypoint.type === 'library' ? entrypoint.libraryId : null);\n const [view, dispatch] = useReducer(viewSettingsReducer, viewSettingsInitialState);\n const {closeSettingsPanel} = useEditSettings();\n\n // FIXME: should be two methods taking `lang` as argument\n const {toValidFilters} = useTransformFilters();\n\n /**\n * We need to check if the `props.entrypoint` has changed to detect a new `props.entrypoint.libraryId`.\n *\n * If `false`, we reload from scratch and close the side panel that contains the views.\n */\n const needToReloadViewsFromScratch = _areDifferents(entrypoint, view.entrypoint);\n\n useEffect(() => {\n if (needToReloadViewsFromScratch) {\n setLoading(true);\n setLibraryId(entrypoint.type === 'library' ? entrypoint.libraryId : null);\n closeSettingsPanel();\n }\n }, [needToReloadViewsFromScratch]);\n\n /**\n * On `entrypoint.type === 'link'`, we need to get the library id from the link attribute to get views et set up `<Explorer />`\n */\n const {data: linkAttributeData} = useExplorerLinkAttributeQuery({\n skip: entrypoint.type !== 'link',\n variables: {\n id: (entrypoint as IEntrypointLink).linkAttributeId,\n },\n });\n\n useEffect(() => {\n if (entrypoint.type !== 'link') {\n return;\n }\n\n const attributeData = linkAttributeData?.attributes?.list?.[0];\n\n if (!attributeData) {\n return;\n }\n\n setLibraryId(isLinkAttributeDetails(attributeData) ? (attributeData.linked_library?.id ?? '') : null);\n }, [entrypoint, linkAttributeData]);\n\n const {\n /**\n * List of my views and shared views\n */\n data: viewData,\n loading: viewsLoading,\n error: viewError,\n } = useGetViewsListQuery({\n skip: libraryId === null,\n variables: {\n libraryId: libraryId as string,\n },\n });\n\n let userView: GetViewsListQuery['views']['list'][number] | undefined;\n if (defaultViewSettings?.viewId) {\n userView = viewData?.views?.list?.find(viewItem => viewItem.id === defaultViewSettings.viewId);\n }\n // On still `undefined` view, we take the last added one\n userView = userView ?? viewData?.views?.list?.at(-1);\n\n const userViewFilters = ignoreViewByDefault ? [] : toValidFilters(userView?.filters ?? []);\n\n const userAttributesToHydrate = ignoreViewByDefault\n ? []\n : [\n ...userViewFilters,\n ...(userView?.sort ?? []),\n ...(userView?.attributes?.map(attribute => ({field: attribute.id})) ?? []),\n ];\n\n const preparedDefaultFilters = toValidFilters(defaultViewSettings.filters ?? []);\n\n const attributesToHydrate = [\n ...new Set(\n [\n ...(preparedDefaultFilters ?? []),\n ...(defaultViewSettings.sort ?? []),\n ...userAttributesToHydrate,\n ...(defaultViewSettings?.attributesIds?.map(attributeId => ({field: attributeId})) ?? []),\n ].map(({field}) => field),\n ),\n ];\n\n const {\n data: attributesData,\n loading: attributesLoading,\n error: attributesError,\n } = useExplorerAttributesQuery({\n variables: {\n ids: attributesToHydrate,\n },\n skip: libraryId === null || viewsLoading || attributesToHydrate.length === 0,\n });\n\n const attributesDataById = useMemo(\n () =>\n (attributesData?.attributes?.list ?? []).reduce<AttributesById>((acc, attr) => {\n if (attr.permissions.access_attribute) {\n acc[attr.id] = attr;\n }\n return acc;\n }, {}),\n [attributesData],\n );\n\n useEffect(() => {\n if (libraryId !== null && !viewsLoading && !attributesLoading) {\n const savedViews = (viewData?.views.list ?? []).map(\n ({id, label, shared, display, filters, sort, attributes, created_by}) => ({\n id,\n ownerId: created_by.id,\n label,\n shared,\n display: {type: display.type, size: display.size || ViewSizes.MEDIUM},\n filters: toValidFilters(filters ?? []),\n sort: sort ?? [],\n attributes: attributes?.map(attribute => attribute.id) ?? [],\n }),\n );\n /**\n * Filters merged from `<Explorer />` props and `view`.\n * > Could include hidden filters too.\n */\n const defaultSorts = defaultViewSettings?.sort ?? [];\n const userViewSorts = ignoreViewByDefault ? [] : (userView?.sort ?? []);\n const defaultAttributesIds = (defaultViewSettings?.attributesIds ?? []).filter(\n attr => attributesDataById[attr],\n );\n const userViewAttributesIds = ignoreViewByDefault\n ? []\n : (userView?.attributes ?? []).map(attr => attr.id).filter(attr => attributesDataById[attr]);\n\n let viewProps = {};\n if (!ignoreViewByDefault) {\n viewProps = {\n viewId: userView?.id ?? null,\n viewLabels: userView?.label ?? {},\n viewType: userView?.display\n ? mapViewTypeFromLegacyToExplorer[userView.display.type]\n : viewSettingsInitialState.viewType,\n };\n }\n\n const hydratedSettings: IViewSettingsState = {\n ...viewSettingsInitialState,\n entrypoint,\n libraryId,\n ...viewProps,\n savedViews,\n ...defaultViewSettings,\n attributesIds: defaultAttributesIds.length > 0 ? defaultAttributesIds : userViewAttributesIds,\n sort: (defaultSorts.length > 0 ? defaultSorts : userViewSorts)\n .map(s => ({\n field: s.field,\n order: s.order,\n }))\n .filter(s => attributesDataById[s.field]),\n };\n dispatch({\n type: 'RESET',\n payload: {\n ...hydratedSettings,\n initialViewSettings: {\n viewType: hydratedSettings.viewType,\n attributesIds: hydratedSettings.attributesIds,\n sort: hydratedSettings.sort,\n pageSize: hydratedSettings.pageSize,\n },\n defaultViewSettings: {\n viewType: defaultViewSettings.viewType ?? 'table',\n attributesIds: defaultViewSettings.attributesIds ?? [],\n sort: defaultViewSettings.sort ?? [],\n },\n },\n });\n setLoading(false);\n }\n }, [attributesLoading, viewsLoading, libraryId]);\n\n return {\n loading,\n error: viewError ?? attributesError,\n view,\n dispatch,\n };\n};\n"]}
1
+ {"version":3,"file":"useViewSettingsReducer.js","sourceRoot":"","sources":["../../../src/components/Explorer/useViewSettingsReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {useEffect, useMemo, useReducer, useState} from 'react';\nimport {\n type GetViewsListQuery,\n useExplorerAttributesQuery,\n useExplorerLinkAttributeQuery,\n useGetViewsListQuery,\n ViewSizes,\n} from '_ui/_gqlTypes';\nimport {type DefaultViewSettings, type Entrypoint, type IEntrypointLink} from './_types';\nimport {mapViewTypeFromLegacyToExplorer} from './_constants';\nimport {\n type IViewSettingsState,\n useEditSettings,\n viewSettingsInitialState,\n viewSettingsReducer,\n} from './manage-view-settings';\nimport {\n type AttributesById,\n isLinkAttributeDetails,\n useTransformFilters,\n} from '_ui/components/Filters/useTransformFilters';\n\nconst _areDifferents = <T extends object>(object1: T, object2: T) =>\n Object.keys(object1).some(key => object1[key] !== object2[key]);\n\nconst _removeUndefinedValues = (defaultViewSettings: DefaultViewSettings): DefaultViewSettings =>\n Object.entries(defaultViewSettings).reduce(\n (acc, [key, value]) => (value !== undefined ? {...acc, [key]: value} : acc),\n {},\n );\n\nexport const useViewSettingsReducer = (\n entrypoint: Entrypoint,\n defaultViewSettings: DefaultViewSettings = {},\n ignoreViewByDefault: boolean,\n) => {\n /**\n * Should be `true` during all the warm up, until we `RESET` the view.\n */\n const [loading, setLoading] = useState(true);\n const [libraryId, setLibraryId] = useState(entrypoint.type === 'library' ? entrypoint.libraryId : null);\n const [view, dispatch] = useReducer(viewSettingsReducer, viewSettingsInitialState);\n const {closeSettingsPanel} = useEditSettings();\n\n // FIXME: should be two methods taking `lang` as argument\n const {toValidFilters} = useTransformFilters();\n\n /**\n * We need to check if the `props.entrypoint` has changed to detect a new `props.entrypoint.libraryId`.\n *\n * If `false`, we reload from scratch and close the side panel that contains the views.\n */\n const needToReloadViewsFromScratch = _areDifferents(entrypoint, view.entrypoint);\n\n useEffect(() => {\n if (needToReloadViewsFromScratch) {\n setLoading(true);\n setLibraryId(entrypoint.type === 'library' ? entrypoint.libraryId : null);\n closeSettingsPanel();\n }\n }, [needToReloadViewsFromScratch]);\n\n /**\n * On `entrypoint.type === 'link'`, we need to get the library id from the link attribute to get views et set up `<Explorer />`\n */\n const {data: linkAttributeData} = useExplorerLinkAttributeQuery({\n skip: entrypoint.type !== 'link',\n variables: {\n id: (entrypoint as IEntrypointLink).linkAttributeId,\n },\n });\n\n useEffect(() => {\n if (entrypoint.type !== 'link') {\n return;\n }\n\n const attributeData = linkAttributeData?.attributes?.list?.[0];\n\n if (!attributeData) {\n return;\n }\n\n setLibraryId(isLinkAttributeDetails(attributeData) ? (attributeData.linked_library?.id ?? '') : null);\n }, [entrypoint, linkAttributeData]);\n\n const {\n /**\n * List of my views and shared views\n */\n data: viewData,\n loading: viewsLoading,\n error: viewError,\n } = useGetViewsListQuery({\n skip: libraryId === null,\n variables: {\n libraryId: libraryId as string,\n },\n });\n\n let userView: GetViewsListQuery['views']['list'][number] | undefined;\n if (defaultViewSettings?.viewId) {\n userView = viewData?.views?.list?.find(viewItem => viewItem.id === defaultViewSettings.viewId);\n }\n // On still `undefined` view, we take the last added one\n userView = userView ?? viewData?.views?.list?.at(-1);\n\n const userViewFilters = ignoreViewByDefault ? [] : toValidFilters(userView?.filters ?? []);\n\n const userAttributesToHydrate = ignoreViewByDefault\n ? []\n : [\n ...userViewFilters,\n ...(userView?.sort ?? []),\n ...(userView?.attributes?.map(attribute => ({field: attribute.id})) ?? []),\n ];\n\n const preparedDefaultFilters = toValidFilters(defaultViewSettings.filters ?? []);\n\n const attributesToHydrate = [\n ...new Set(\n [\n ...(preparedDefaultFilters ?? []), // FIXME: can be set with viewId too?\n ...(defaultViewSettings.sort ?? []),\n ...userAttributesToHydrate,\n ...(defaultViewSettings?.attributesIds?.map(attributeId => ({field: attributeId})) ?? []),\n ].map(({field}) => field),\n ),\n ];\n\n const {\n data: attributesData,\n loading: attributesLoading,\n error: attributesError,\n } = useExplorerAttributesQuery({\n variables: {\n ids: attributesToHydrate,\n },\n skip: libraryId === null || viewsLoading || attributesToHydrate.length === 0,\n });\n\n const attributesDataById = useMemo(\n () =>\n (attributesData?.attributes?.list ?? []).reduce<AttributesById>((acc, attr) => {\n if (attr.permissions.access_attribute) {\n acc[attr.id] = attr;\n }\n return acc;\n }, {}),\n [attributesData],\n );\n\n useEffect(() => {\n if (libraryId !== null && !viewsLoading && !attributesLoading) {\n const savedViews = (viewData?.views.list ?? []).map(\n ({id, label, shared, display, filters, sort, attributes, created_by}) => ({\n id,\n ownerId: created_by.id,\n label,\n shared,\n display: {type: display.type, size: display.size || ViewSizes.MEDIUM},\n filters: toValidFilters(filters ?? []),\n sort: sort ?? [],\n attributes: attributes?.map(attribute => attribute.id) ?? [],\n }),\n );\n /**\n * Filters merged from `<Explorer />` props and `view`.\n * > Could include hidden filters too.\n */\n const defaultSorts = defaultViewSettings?.sort ?? [];\n const userViewSorts = ignoreViewByDefault ? [] : (userView?.sort ?? []);\n const defaultAttributesIds = (defaultViewSettings?.attributesIds ?? []).filter(\n attr => attributesDataById[attr],\n );\n const userViewAttributesIds = ignoreViewByDefault\n ? []\n : (userView?.attributes ?? []).map(attr => attr.id).filter(attr => attributesDataById[attr]);\n\n let viewProps = {};\n if (!ignoreViewByDefault) {\n viewProps = {\n viewId: userView?.id ?? null,\n viewLabels: userView?.label ?? {},\n viewType: userView?.display\n ? mapViewTypeFromLegacyToExplorer[userView.display.type]\n : viewSettingsInitialState.viewType,\n };\n }\n\n const hydratedSettings: IViewSettingsState = {\n ...viewSettingsInitialState,\n entrypoint,\n libraryId,\n ...viewProps,\n savedViews,\n ..._removeUndefinedValues(defaultViewSettings),\n attributesIds: defaultAttributesIds.length > 0 ? defaultAttributesIds : userViewAttributesIds,\n sort: (defaultSorts.length > 0 ? defaultSorts : userViewSorts)\n .map(s => ({\n field: s.field,\n order: s.order,\n }))\n .filter(s => attributesDataById[s.field]),\n };\n dispatch({\n type: 'RESET',\n payload: {\n ...hydratedSettings,\n initialViewSettings: {\n viewType: hydratedSettings.viewType,\n attributesIds: hydratedSettings.attributesIds,\n sort: hydratedSettings.sort,\n pageSize: hydratedSettings.pageSize,\n },\n defaultViewSettings: {\n viewType: defaultViewSettings.viewType ?? 'table',\n attributesIds: defaultViewSettings.attributesIds ?? [],\n sort: defaultViewSettings.sort ?? [],\n },\n },\n });\n setLoading(false);\n }\n }, [attributesLoading, viewsLoading, libraryId]);\n\n return {\n loading,\n error: viewError ?? attributesError,\n view,\n dispatch,\n };\n};\n"]}
@@ -44,16 +44,31 @@ export const useTreeNodeSelection = ({ filter, onFilterChange, flattenTreeData,
44
44
  const keptNodes = filter.userNodes
45
45
  .map(n => flattenTreeData.get(n.nodeId))
46
46
  .filter((node) => node !== undefined && node.accessRecordByDefaultPermission !== false);
47
- const hasKept = keptNodes.length > 0;
48
- const mappedKept = hasKept ? keptNodes.map(n => ({ nodeId: n.id, libraryId: n.libraryId })) : null;
49
- onFilterChange({
50
- ...filter,
51
- includeHiddenOptions: false,
52
- nodes: mappedKept,
53
- value: hasKept ? keptNodes.map(n => n.recordId) : null,
54
- userNodes: mappedKept,
55
- userFormattedValue: hasKept ? keptNodes.map(n => n.title) : null,
56
- });
47
+ if (keptNodes.length > 0) {
48
+ const mappedKept = keptNodes.map(n => ({ nodeId: n.id, libraryId: n.libraryId }));
49
+ onFilterChange({
50
+ ...filter,
51
+ includeHiddenOptions: false,
52
+ nodes: mappedKept,
53
+ value: keptNodes.map(n => n.recordId),
54
+ userNodes: mappedKept,
55
+ userFormattedValue: keptNodes.map(n => n.title),
56
+ });
57
+ }
58
+ else {
59
+ // No user-selected node survives the toggle off: fall back to the initial
60
+ // state (no user selection, network filter on default-visible nodes only).
61
+ const networkNodes = [...flattenTreeData.values()].filter(node => node.accessRecordByDefaultPermission === true);
62
+ onFilterChange({
63
+ ...filter,
64
+ includeHiddenOptions: false,
65
+ nodes: networkNodes.map(n => ({ nodeId: n.id, libraryId: n.libraryId })),
66
+ value: networkNodes.map(n => n.recordId),
67
+ formattedValue: networkNodes.map(n => n.title),
68
+ userNodes: null,
69
+ userFormattedValue: null,
70
+ });
71
+ }
57
72
  }
58
73
  else {
59
74
  onFilterChange({ ...filter, includeHiddenOptions: true });
@@ -1 +1 @@
1
- {"version":3,"file":"useTreeNodeSelection.js","sourceRoot":"","sources":["../../../../../../src/components/Filters/filter-items/filter-type/tree/useTreeNodeSelection.ts"],"names":[],"mappings":"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","sourcesContent":["import {type MutableRefObject} from 'react';\nimport {type IUIFilterTree} from '_ui/components/Filters/_types';\nimport {type ITreeNode} from './useGetTreeData';\nimport {getSelectAllState} from './utils/getSelectAllState';\n\ninterface IUseTreeNodeSelectionParams {\n filter: IUIFilterTree;\n onFilterChange: (filterData: IUIFilterTree) => void;\n flattenTreeData: Map<string, ITreeNode>;\n flattenForSelectAll: Map<string, ITreeNode>;\n isAccessPermissionConfigured: boolean;\n toggleHiddenRef?: MutableRefObject<((checked: boolean) => void) | null>;\n}\n\nexport interface ITreeNodeSelection {\n selectedNodesIds: string[];\n allSelected: boolean;\n indeterminate: boolean;\n handleOnSelectEmptyValue: (selected: boolean) => void;\n handleOnSelect: (node: ITreeNode, selected: boolean) => void;\n handleOnSelectAll: (treeToSelect: Map<string, ITreeNode>, isSelected: boolean) => void;\n}\n\nexport const useTreeNodeSelection = ({\n filter,\n onFilterChange,\n flattenTreeData,\n flattenForSelectAll,\n isAccessPermissionConfigured,\n toggleHiddenRef,\n}: IUseTreeNodeSelectionParams): ITreeNodeSelection => {\n const selectedNodesIds = (filter.userNodes ?? []).map(node => node.nodeId);\n\n const {allSelected, indeterminate} = getSelectAllState(selectedNodesIds, flattenForSelectAll);\n\n const handleOnSelectEmptyValue = (selected: boolean) => {\n onFilterChange({...filter, withEmptyValues: selected});\n };\n\n const handleOnSelect = (node: ITreeNode, selected: boolean) => {\n const newSelectedIds = selected\n ? [...selectedNodesIds, node.id]\n : selectedNodesIds.filter(id => id !== node.id);\n\n const selectedNodes = newSelectedIds\n .map(nodeId => flattenTreeData.get(nodeId))\n .filter((n): n is ITreeNode => Boolean(n));\n\n const mappedNodes = selectedNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId}));\n onFilterChange({\n ...filter,\n nodes: mappedNodes,\n value: selectedNodes.map(n => n.recordId),\n userNodes: mappedNodes,\n userFormattedValue: selectedNodes.map(n => n.title),\n });\n };\n\n const handleOnSelectAll = (treeToSelect: Map<string, ITreeNode>, isSelected: boolean) => {\n const newSelectedIds = isSelected\n ? [...new Set([...selectedNodesIds, ...treeToSelect.keys()])]\n : selectedNodesIds.filter(id => !treeToSelect.has(id));\n\n const selectedNodes = newSelectedIds\n .map(nodeId => flattenTreeData.get(nodeId))\n .filter((n): n is ITreeNode => Boolean(n));\n\n const mappedNodes = selectedNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId}));\n onFilterChange({\n ...filter,\n nodes: mappedNodes,\n value: selectedNodes.map(n => n.recordId),\n userNodes: mappedNodes,\n userFormattedValue: selectedNodes.map(n => n.title),\n });\n };\n\n const handleToggle = (checked: boolean) => {\n if (filter.userNodes != null) {\n // Has user selection: on toggle off, drop hidden selections from user selection.\n if (!checked) {\n const keptNodes = filter.userNodes\n .map(n => flattenTreeData.get(n.nodeId))\n .filter(\n (node): node is ITreeNode =>\n node !== undefined && node.accessRecordByDefaultPermission !== false,\n );\n const hasKept = keptNodes.length > 0;\n const mappedKept = hasKept ? keptNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId})) : null;\n onFilterChange({\n ...filter,\n includeHiddenOptions: false,\n nodes: mappedKept,\n value: hasKept ? keptNodes.map(n => n.recordId) : null,\n userNodes: mappedKept,\n userFormattedValue: hasKept ? keptNodes.map(n => n.title) : null,\n });\n } else {\n onFilterChange({...filter, includeHiddenOptions: true});\n }\n } else {\n // No user selection: update the network values (value/nodes) to reflect all currently\n // visible nodes, without creating a UI selection (userNodes stays null).\n // Toggle ON → all nodes (flattenTreeData contains hidden nodes too).\n // Toggle OFF → only nodes with explicit access (accessRecordByDefaultPermission === true).\n const networkNodes = checked\n ? [...flattenTreeData.values()]\n : [...flattenTreeData.values()].filter(node => node.accessRecordByDefaultPermission === true);\n onFilterChange({\n ...filter,\n includeHiddenOptions: checked,\n nodes: networkNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId})),\n value: networkNodes.map(n => n.recordId),\n formattedValue: networkNodes.map(n => n.title),\n });\n }\n };\n\n // Expose the toggle handler to FilterDropDown via ref (updated every render to stay current)\n if (toggleHiddenRef) {\n toggleHiddenRef.current = isAccessPermissionConfigured ? handleToggle : null;\n }\n\n return {selectedNodesIds, allSelected, indeterminate, handleOnSelectEmptyValue, handleOnSelect, handleOnSelectAll};\n};\n"]}
1
+ {"version":3,"file":"useTreeNodeSelection.js","sourceRoot":"","sources":["../../../../../../src/components/Filters/filter-items/filter-type/tree/useTreeNodeSelection.ts"],"names":[],"mappings":"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","sourcesContent":["import {type MutableRefObject} from 'react';\nimport {type IUIFilterTree} from '_ui/components/Filters/_types';\nimport {type ITreeNode} from './useGetTreeData';\nimport {getSelectAllState} from './utils/getSelectAllState';\n\ninterface IUseTreeNodeSelectionParams {\n filter: IUIFilterTree;\n onFilterChange: (filterData: IUIFilterTree) => void;\n flattenTreeData: Map<string, ITreeNode>;\n flattenForSelectAll: Map<string, ITreeNode>;\n isAccessPermissionConfigured: boolean;\n toggleHiddenRef?: MutableRefObject<((checked: boolean) => void) | null>;\n}\n\nexport interface ITreeNodeSelection {\n selectedNodesIds: string[];\n allSelected: boolean;\n indeterminate: boolean;\n handleOnSelectEmptyValue: (selected: boolean) => void;\n handleOnSelect: (node: ITreeNode, selected: boolean) => void;\n handleOnSelectAll: (treeToSelect: Map<string, ITreeNode>, isSelected: boolean) => void;\n}\n\nexport const useTreeNodeSelection = ({\n filter,\n onFilterChange,\n flattenTreeData,\n flattenForSelectAll,\n isAccessPermissionConfigured,\n toggleHiddenRef,\n}: IUseTreeNodeSelectionParams): ITreeNodeSelection => {\n const selectedNodesIds = (filter.userNodes ?? []).map(node => node.nodeId);\n\n const {allSelected, indeterminate} = getSelectAllState(selectedNodesIds, flattenForSelectAll);\n\n const handleOnSelectEmptyValue = (selected: boolean) => {\n onFilterChange({...filter, withEmptyValues: selected});\n };\n\n const handleOnSelect = (node: ITreeNode, selected: boolean) => {\n const newSelectedIds = selected\n ? [...selectedNodesIds, node.id]\n : selectedNodesIds.filter(id => id !== node.id);\n\n const selectedNodes = newSelectedIds\n .map(nodeId => flattenTreeData.get(nodeId))\n .filter((n): n is ITreeNode => Boolean(n));\n\n const mappedNodes = selectedNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId}));\n onFilterChange({\n ...filter,\n nodes: mappedNodes,\n value: selectedNodes.map(n => n.recordId),\n userNodes: mappedNodes,\n userFormattedValue: selectedNodes.map(n => n.title),\n });\n };\n\n const handleOnSelectAll = (treeToSelect: Map<string, ITreeNode>, isSelected: boolean) => {\n const newSelectedIds = isSelected\n ? [...new Set([...selectedNodesIds, ...treeToSelect.keys()])]\n : selectedNodesIds.filter(id => !treeToSelect.has(id));\n\n const selectedNodes = newSelectedIds\n .map(nodeId => flattenTreeData.get(nodeId))\n .filter((n): n is ITreeNode => Boolean(n));\n\n const mappedNodes = selectedNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId}));\n onFilterChange({\n ...filter,\n nodes: mappedNodes,\n value: selectedNodes.map(n => n.recordId),\n userNodes: mappedNodes,\n userFormattedValue: selectedNodes.map(n => n.title),\n });\n };\n\n const handleToggle = (checked: boolean) => {\n if (filter.userNodes != null) {\n // Has user selection: on toggle off, drop hidden selections from user selection.\n if (!checked) {\n const keptNodes = filter.userNodes\n .map(n => flattenTreeData.get(n.nodeId))\n .filter(\n (node): node is ITreeNode =>\n node !== undefined && node.accessRecordByDefaultPermission !== false,\n );\n if (keptNodes.length > 0) {\n const mappedKept = keptNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId}));\n onFilterChange({\n ...filter,\n includeHiddenOptions: false,\n nodes: mappedKept,\n value: keptNodes.map(n => n.recordId),\n userNodes: mappedKept,\n userFormattedValue: keptNodes.map(n => n.title),\n });\n } else {\n // No user-selected node survives the toggle off: fall back to the initial\n // state (no user selection, network filter on default-visible nodes only).\n const networkNodes = [...flattenTreeData.values()].filter(\n node => node.accessRecordByDefaultPermission === true,\n );\n onFilterChange({\n ...filter,\n includeHiddenOptions: false,\n nodes: networkNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId})),\n value: networkNodes.map(n => n.recordId),\n formattedValue: networkNodes.map(n => n.title),\n userNodes: null,\n userFormattedValue: null,\n });\n }\n } else {\n onFilterChange({...filter, includeHiddenOptions: true});\n }\n } else {\n // No user selection: update the network values (value/nodes) to reflect all currently\n // visible nodes, without creating a UI selection (userNodes stays null).\n // Toggle ON → all nodes (flattenTreeData contains hidden nodes too).\n // Toggle OFF → only nodes with explicit access (accessRecordByDefaultPermission === true).\n const networkNodes = checked\n ? [...flattenTreeData.values()]\n : [...flattenTreeData.values()].filter(node => node.accessRecordByDefaultPermission === true);\n onFilterChange({\n ...filter,\n includeHiddenOptions: checked,\n nodes: networkNodes.map(n => ({nodeId: n.id, libraryId: n.libraryId})),\n value: networkNodes.map(n => n.recordId),\n formattedValue: networkNodes.map(n => n.title),\n });\n }\n };\n\n // Expose the toggle handler to FilterDropDown via ref (updated every render to stay current)\n if (toggleHiddenRef) {\n toggleHiddenRef.current = isAccessPermissionConfigured ? handleToggle : null;\n }\n\n return {selectedNodesIds, allSelected, indeterminate, handleOnSelectEmptyValue, handleOnSelect, handleOnSelectAll};\n};\n"]}
@@ -3,7 +3,7 @@ import { localizedTranslation } from '@leav/utils';
3
3
  import { Form, Space } from 'antd';
4
4
  import { KitSelect } from 'aristid-ds';
5
5
  import styled from 'styled-components';
6
- import useLang from '../../../../hooks/useLang';
6
+ import useLang from '../../../../hooks/useLang/useLang';
7
7
  import { useSharedTranslation } from '../../../../hooks/useSharedTranslation';
8
8
  import { AttributeType, ImportMode, ImportType, } from '../../../../_gqlTypes';
9
9
  import { useImportReducerContext } from '../../importReducer/ImportReducerContext';
@@ -1 +1 @@
1
- {"version":3,"file":"ImportSheetSettings.js","sourceRoot":"","sources":["../../../../../src/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import {localizedTranslation} from '@leav/utils';\nimport {Form, Space} from 'antd';\nimport {KitSelect} from 'aristid-ds';\nimport styled from 'styled-components';\nimport useLang from '_ui/hooks/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type AttributesByLibAttributeFragment,\n type AttributesByLibAttributeTreeAttributeFragment,\n AttributeType,\n ImportMode,\n ImportType,\n type LibraryLightFragment,\n} from '_ui/_gqlTypes';\nimport {useImportReducerContext} from '../../importReducer/ImportReducerContext';\n\ninterface IImportSettingsProps {\n sheetIndex: number;\n libraries: LibraryLightFragment[];\n onLibrarySelect: (sheetIndex: number, library: string) => void;\n onImportTypeSelect: (sheetIndex: number, type: ImportType) => void;\n onImportModeSelect: (sheetIndex: number, mode: ImportMode) => void;\n onLinkAttributeSelect: (sheetIndex: number, attribute: string) => void;\n onTreeLinkLibrarySelect: (sheetIndex: number, library: string) => void;\n}\n\nconst isLinkAttribute = (attribute: AttributesByLibAttributeFragment): boolean =>\n attribute.type === AttributeType.simple_link ||\n attribute.type === AttributeType.advanced_link ||\n attribute.type === AttributeType.tree;\n\nconst SettingsWrapper = styled(Space)`\n && .ant-form-item-label {\n padding: 0;\n font-weight: bold;\n }\n`;\n\nfunction ImportSheetSettings({\n sheetIndex,\n libraries,\n onLibrarySelect,\n onImportTypeSelect,\n onImportModeSelect,\n onLinkAttributeSelect,\n onTreeLinkLibrarySelect,\n}: IImportSettingsProps): JSX.Element {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n const {state} = useImportReducerContext();\n const sheet = state.sheets[sheetIndex];\n const isSheetIgnored = sheet.type === ImportType.IGNORE;\n\n const selectTreeLinkLibraryOptions =\n sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree\n ? (\n (sheet.linkAttributeProps as AttributesByLibAttributeTreeAttributeFragment)?.linked_tree?.libraries ??\n []\n ).map(treeLib => ({\n key: treeLib.library.id,\n value: treeLib.library.id,\n label: localizedTranslation(treeLib.library.label, lang),\n }))\n : null;\n\n const typeOptions = Object.values(ImportType).map(type => ({\n key: type,\n value: type,\n label: t(`import.types.${type}`),\n }));\n\n const modeOptions = Object.values(ImportMode).map(mode => ({\n key: mode,\n value: mode,\n label: t(`import.modes.${mode}`),\n }));\n\n const librariesOptions = libraries.map(l => ({\n key: l.id,\n value: l.id,\n label: localizedTranslation(l.label, lang) || l.id,\n }));\n\n const linkAttributeOptions = sheet.attributes.filter(isLinkAttribute).map(a => ({\n key: a.id,\n value: a.id,\n label: localizedTranslation(a.label, lang) || a.id,\n }));\n\n return (\n <Form layout=\"vertical\">\n <SettingsWrapper direction=\"horizontal\" size=\"middle\" wrap>\n <Form.Item label={t('import.type')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.type}\n placeholder={t('import.select_type')}\n onChange={value => onImportTypeSelect(sheetIndex, value)}\n options={typeOptions}\n />\n </Form.Item>\n {!isSheetIgnored && (\n <>\n <Form.Item label={t('import.mode')} required>\n <KitSelect\n style={{minWidth: 240}}\n defaultValue={sheet.mode}\n placeholder={t('import.select_mode')}\n onChange={value => onImportModeSelect(sheetIndex, value)}\n options={modeOptions}\n />\n </Form.Item>\n <Form.Item label={t('import.library')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.library ?? state.defaultLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onLibrarySelect(sheetIndex, value)}\n options={librariesOptions}\n />\n </Form.Item>\n {sheet.type === ImportType.LINK && sheet.library && (\n <Form.Item label={t('import.link_attribute')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.linkAttribute}\n value={sheet.linkAttribute}\n placeholder={t('import.select_link_attribute')}\n onChange={value => onLinkAttributeSelect(sheetIndex, value)}\n options={linkAttributeOptions}\n />\n </Form.Item>\n )}\n {sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree && (\n <Form.Item label={t('import.tree_link_library')} required>\n <KitSelect\n style={{minWidth: 200}}\n value={sheet.treeLinkLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onTreeLinkLibrarySelect(sheetIndex, value)}\n options={selectTreeLinkLibraryOptions}\n />\n </Form.Item>\n )}\n </>\n )}\n </SettingsWrapper>\n </Form>\n );\n}\n\nexport default ImportSheetSettings;\n"]}
1
+ {"version":3,"file":"ImportSheetSettings.js","sourceRoot":"","sources":["../../../../../src/components/ImportModal/ImportModalConfigStep/ImportSheetSettings/ImportSheetSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import {localizedTranslation} from '@leav/utils';\nimport {Form, Space} from 'antd';\nimport {KitSelect} from 'aristid-ds';\nimport styled from 'styled-components';\nimport useLang from '_ui/hooks/useLang/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type AttributesByLibAttributeFragment,\n type AttributesByLibAttributeTreeAttributeFragment,\n AttributeType,\n ImportMode,\n ImportType,\n type LibraryLightFragment,\n} from '_ui/_gqlTypes';\nimport {useImportReducerContext} from '../../importReducer/ImportReducerContext';\n\ninterface IImportSettingsProps {\n sheetIndex: number;\n libraries: LibraryLightFragment[];\n onLibrarySelect: (sheetIndex: number, library: string) => void;\n onImportTypeSelect: (sheetIndex: number, type: ImportType) => void;\n onImportModeSelect: (sheetIndex: number, mode: ImportMode) => void;\n onLinkAttributeSelect: (sheetIndex: number, attribute: string) => void;\n onTreeLinkLibrarySelect: (sheetIndex: number, library: string) => void;\n}\n\nconst isLinkAttribute = (attribute: AttributesByLibAttributeFragment): boolean =>\n attribute.type === AttributeType.simple_link ||\n attribute.type === AttributeType.advanced_link ||\n attribute.type === AttributeType.tree;\n\nconst SettingsWrapper = styled(Space)`\n && .ant-form-item-label {\n padding: 0;\n font-weight: bold;\n }\n`;\n\nfunction ImportSheetSettings({\n sheetIndex,\n libraries,\n onLibrarySelect,\n onImportTypeSelect,\n onImportModeSelect,\n onLinkAttributeSelect,\n onTreeLinkLibrarySelect,\n}: IImportSettingsProps): JSX.Element {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n const {state} = useImportReducerContext();\n const sheet = state.sheets[sheetIndex];\n const isSheetIgnored = sheet.type === ImportType.IGNORE;\n\n const selectTreeLinkLibraryOptions =\n sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree\n ? (\n (sheet.linkAttributeProps as AttributesByLibAttributeTreeAttributeFragment)?.linked_tree?.libraries ??\n []\n ).map(treeLib => ({\n key: treeLib.library.id,\n value: treeLib.library.id,\n label: localizedTranslation(treeLib.library.label, lang),\n }))\n : null;\n\n const typeOptions = Object.values(ImportType).map(type => ({\n key: type,\n value: type,\n label: t(`import.types.${type}`),\n }));\n\n const modeOptions = Object.values(ImportMode).map(mode => ({\n key: mode,\n value: mode,\n label: t(`import.modes.${mode}`),\n }));\n\n const librariesOptions = libraries.map(l => ({\n key: l.id,\n value: l.id,\n label: localizedTranslation(l.label, lang) || l.id,\n }));\n\n const linkAttributeOptions = sheet.attributes.filter(isLinkAttribute).map(a => ({\n key: a.id,\n value: a.id,\n label: localizedTranslation(a.label, lang) || a.id,\n }));\n\n return (\n <Form layout=\"vertical\">\n <SettingsWrapper direction=\"horizontal\" size=\"middle\" wrap>\n <Form.Item label={t('import.type')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.type}\n placeholder={t('import.select_type')}\n onChange={value => onImportTypeSelect(sheetIndex, value)}\n options={typeOptions}\n />\n </Form.Item>\n {!isSheetIgnored && (\n <>\n <Form.Item label={t('import.mode')} required>\n <KitSelect\n style={{minWidth: 240}}\n defaultValue={sheet.mode}\n placeholder={t('import.select_mode')}\n onChange={value => onImportModeSelect(sheetIndex, value)}\n options={modeOptions}\n />\n </Form.Item>\n <Form.Item label={t('import.library')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.library ?? state.defaultLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onLibrarySelect(sheetIndex, value)}\n options={librariesOptions}\n />\n </Form.Item>\n {sheet.type === ImportType.LINK && sheet.library && (\n <Form.Item label={t('import.link_attribute')} required>\n <KitSelect\n style={{minWidth: 200}}\n defaultValue={sheet.linkAttribute}\n value={sheet.linkAttribute}\n placeholder={t('import.select_link_attribute')}\n onChange={value => onLinkAttributeSelect(sheetIndex, value)}\n options={linkAttributeOptions}\n />\n </Form.Item>\n )}\n {sheet.type === ImportType.LINK && sheet.linkAttributeProps?.type === AttributeType.tree && (\n <Form.Item label={t('import.tree_link_library')} required>\n <KitSelect\n style={{minWidth: 200}}\n value={sheet.treeLinkLibrary}\n placeholder={t('import.select_library')}\n onChange={value => onTreeLinkLibrarySelect(sheetIndex, value)}\n options={selectTreeLinkLibraryOptions}\n />\n </Form.Item>\n )}\n </>\n )}\n </SettingsWrapper>\n </Form>\n );\n}\n\nexport default ImportSheetSettings;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { localizedTranslation } from '@leav/utils';
3
- import useLang from '../../hooks/useLang';
3
+ import useLang from '../../hooks/useLang/useLang';
4
4
  import { PreviewSize } from '../../constants';
5
5
  import { EntityCard } from '../EntityCard';
6
6
  const _getPreviewBySize = (preview, size) => {
@@ -1 +1 @@
1
- {"version":3,"file":"RecordCard.js","sourceRoot":"","sources":["../../../src/components/RecordCard/RecordCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,UAAU,EAAmB,MAAM,eAAe,CAAC;AAG3D,MAAM,iBAAiB,GAAG,CAAC,OAA0C,EAAE,IAAkB,EAAE,EAAE;IACzF,MAAM,qBAAqB,GAAoC;QAC3D,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM;QAC1B,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM;QAC3B,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO;QAC7B,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ;KAC9B,CAAC;IAEF,MAAM,WAAW,GAAW,CAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,EAAE,KAAK,CAAW,CAAC;IAEjG,OAAO,WAAW,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAChB,MAAM,EACN,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,WAAW,GAAG,IAAI,EAClB,WAAW,GAAG,IAAI,EAClB,SAAS,GAAG,IAAI,EAChB,IAAI,GAAG,KAAK,EACZ,UAAU,GAAG,KAAK,GACH,EAAe,EAAE;IAChC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAC5B,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IAE1F,MAAM,cAAc,GAAgB;QAChC,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;QAChD,KAAK,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;IAEF,OAAO,CACH,KAAC,UAAU,IACP,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,WAAW,EACzB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,GAC5B,CACL,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import {localizedTranslation} from '@leav/utils';\nimport useLang from '_ui/hooks/useLang';\nimport {PreviewSize} from '../../constants';\nimport {type IRecordIdentityWhoAmI} from '../../types/records';\nimport {EntityCard, type IEntityData} from '../EntityCard';\nimport {type IRecordCardProps} from './_types';\n\nconst _getPreviewBySize = (preview?: IRecordIdentityWhoAmI['preview'], size?: PreviewSize) => {\n const fileSizeByPreviewSize: {[size in PreviewSize]: string} = {\n [PreviewSize.TINY]: 'tiny',\n [PreviewSize.SMALL]: 'tiny',\n [PreviewSize.MEDIUM]: 'small',\n [PreviewSize.BIG]: 'medium',\n };\n\n const previewPath: string = (preview?.[fileSizeByPreviewSize[size]] ?? preview?.small) as string;\n\n return previewPath ?? '';\n};\n\nconst RecordCard = ({\n record,\n size,\n style,\n previewStyle,\n lang,\n withPreview = true,\n withLibrary = true,\n withColor = true,\n tile = false,\n simplistic = false,\n}: IRecordCardProps): JSX.Element => {\n const {lang: userLang} = useLang();\n const label = record.label || record.id;\n const subLabel = record.subLabel\n ? record.subLabel\n : localizedTranslation(record.library?.label, lang ?? userLang) || record.library?.id;\n\n const recordIdentity: IEntityData = {\n label,\n subLabel,\n preview: _getPreviewBySize(record.preview, size),\n color: record.color,\n };\n\n return (\n <EntityCard\n entity={recordIdentity}\n style={style}\n size={size}\n withPreview={withPreview}\n withSubLabel={withLibrary}\n tile={tile}\n simplistic={simplistic}\n withColor={withColor}\n previewStyle={previewStyle}\n />\n );\n};\n\nexport default RecordCard;\n"]}
1
+ {"version":3,"file":"RecordCard.js","sourceRoot":"","sources":["../../../src/components/RecordCard/RecordCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,UAAU,EAAmB,MAAM,eAAe,CAAC;AAG3D,MAAM,iBAAiB,GAAG,CAAC,OAA0C,EAAE,IAAkB,EAAE,EAAE;IACzF,MAAM,qBAAqB,GAAoC;QAC3D,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM;QAC1B,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM;QAC3B,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO;QAC7B,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ;KAC9B,CAAC;IAEF,MAAM,WAAW,GAAW,CAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,EAAE,KAAK,CAAW,CAAC;IAEjG,OAAO,WAAW,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAChB,MAAM,EACN,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,WAAW,GAAG,IAAI,EAClB,WAAW,GAAG,IAAI,EAClB,SAAS,GAAG,IAAI,EAChB,IAAI,GAAG,KAAK,EACZ,UAAU,GAAG,KAAK,GACH,EAAe,EAAE;IAChC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAC5B,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IAE1F,MAAM,cAAc,GAAgB;QAChC,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;QAChD,KAAK,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;IAEF,OAAO,CACH,KAAC,UAAU,IACP,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,WAAW,EACzB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,GAC5B,CACL,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import {localizedTranslation} from '@leav/utils';\nimport useLang from '_ui/hooks/useLang/useLang';\nimport {PreviewSize} from '../../constants';\nimport {type IRecordIdentityWhoAmI} from '../../types/records';\nimport {EntityCard, type IEntityData} from '../EntityCard';\nimport {type IRecordCardProps} from './_types';\n\nconst _getPreviewBySize = (preview?: IRecordIdentityWhoAmI['preview'], size?: PreviewSize) => {\n const fileSizeByPreviewSize: {[size in PreviewSize]: string} = {\n [PreviewSize.TINY]: 'tiny',\n [PreviewSize.SMALL]: 'tiny',\n [PreviewSize.MEDIUM]: 'small',\n [PreviewSize.BIG]: 'medium',\n };\n\n const previewPath: string = (preview?.[fileSizeByPreviewSize[size]] ?? preview?.small) as string;\n\n return previewPath ?? '';\n};\n\nconst RecordCard = ({\n record,\n size,\n style,\n previewStyle,\n lang,\n withPreview = true,\n withLibrary = true,\n withColor = true,\n tile = false,\n simplistic = false,\n}: IRecordCardProps): JSX.Element => {\n const {lang: userLang} = useLang();\n const label = record.label || record.id;\n const subLabel = record.subLabel\n ? record.subLabel\n : localizedTranslation(record.library?.label, lang ?? userLang) || record.library?.id;\n\n const recordIdentity: IEntityData = {\n label,\n subLabel,\n preview: _getPreviewBySize(record.preview, size),\n color: record.color,\n };\n\n return (\n <EntityCard\n entity={recordIdentity}\n style={style}\n size={size}\n withPreview={withPreview}\n withSubLabel={withLibrary}\n tile={tile}\n simplistic={simplistic}\n withColor={withColor}\n previewStyle={previewStyle}\n />\n );\n};\n\nexport default RecordCard;\n"]}
@@ -20,6 +20,6 @@ export const ToggleSidebarButton = () => {
20
20
  if (!state.enableSidebar) {
21
21
  return null;
22
22
  }
23
- return (_jsx(KitTooltip, { title: buttonLabel, mouseEnterDelay: 1, children: _jsx(KitButton, { id: EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID, type: "secondary", size: "m", active: isOpen, icon: _jsx(FontAwesomeIcon, { icon: faInfo }), onClick: toggleSidebar, "aria-label": buttonLabel }) }));
23
+ return (_jsx(KitTooltip, { title: buttonLabel, children: _jsx(KitButton, { id: EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID, type: "secondary", size: "m", active: isOpen, icon: _jsx(FontAwesomeIcon, { icon: faInfo }), onClick: toggleSidebar, "aria-label": buttonLabel }) }));
24
24
  };
25
25
  //# sourceMappingURL=SidebarButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarButton.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordButtons/SidebarButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAC,6BAA6B,EAAC,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,mCAAmC,EAAC,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,mBAAmB,GAAsB,GAAG,EAAE;IACvD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC;IAE5C,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,mBAAmB;YACvD,MAAM,EAAE,CAAC,MAAM;SAClB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAElG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,KAAC,UAAU,IAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,YAC9C,KAAC,SAAS,IACN,EAAE,EAAE,mCAAmC,EACvC,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,GAAG,EACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,GAAI,EACvC,OAAO,EAAE,aAAa,gBACV,WAAW,GACzB,GACO,CAChB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {type FunctionComponent} from 'react';\nimport {KitButton, KitTooltip} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faInfo} from '@fortawesome/free-solid-svg-icons';\nimport {useEditRecordReducer} from '../editRecordReducer/useEditRecordReducer';\nimport {EditRecordReducerActionsTypes} from '../editRecordReducer/editRecordReducer';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID} from '../constants';\n\nexport const ToggleSidebarButton: FunctionComponent = () => {\n const {t} = useSharedTranslation();\n const {state, dispatch} = useEditRecordReducer();\n const isOpen = state.isOpenSidebar ?? false;\n\n const toggleSidebar = () => {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN,\n isOpen: !isOpen,\n });\n };\n\n const buttonLabel = isOpen ? t('record_edition.close_sidebar') : t('record_edition.open_sidebar');\n\n if (!state.enableSidebar) {\n return null;\n }\n\n return (\n <KitTooltip title={buttonLabel} mouseEnterDelay={1}>\n <KitButton\n id={EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID}\n type=\"secondary\"\n size=\"m\"\n active={isOpen}\n icon={<FontAwesomeIcon icon={faInfo} />}\n onClick={toggleSidebar}\n aria-label={buttonLabel}\n />\n </KitTooltip>\n );\n};\n"]}
1
+ {"version":3,"file":"SidebarButton.js","sourceRoot":"","sources":["../../../../src/components/RecordEdition/EditRecordButtons/SidebarButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAC,6BAA6B,EAAC,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,mCAAmC,EAAC,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,mBAAmB,GAAsB,GAAG,EAAE;IACvD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC;IAE5C,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,QAAQ,CAAC;YACL,IAAI,EAAE,6BAA6B,CAAC,mBAAmB;YACvD,MAAM,EAAE,CAAC,MAAM;SAClB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAElG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,KAAC,UAAU,IAAC,KAAK,EAAE,WAAW,YAC1B,KAAC,SAAS,IACN,EAAE,EAAE,mCAAmC,EACvC,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,GAAG,EACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,GAAI,EACvC,OAAO,EAAE,aAAa,gBACV,WAAW,GACzB,GACO,CAChB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {type FunctionComponent} from 'react';\nimport {KitButton, KitTooltip} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faInfo} from '@fortawesome/free-solid-svg-icons';\nimport {useEditRecordReducer} from '../editRecordReducer/useEditRecordReducer';\nimport {EditRecordReducerActionsTypes} from '../editRecordReducer/editRecordReducer';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID} from '../constants';\n\nexport const ToggleSidebarButton: FunctionComponent = () => {\n const {t} = useSharedTranslation();\n const {state, dispatch} = useEditRecordReducer();\n const isOpen = state.isOpenSidebar ?? false;\n\n const toggleSidebar = () => {\n dispatch({\n type: EditRecordReducerActionsTypes.SET_SIDEBAR_IS_OPEN,\n isOpen: !isOpen,\n });\n };\n\n const buttonLabel = isOpen ? t('record_edition.close_sidebar') : t('record_edition.open_sidebar');\n\n if (!state.enableSidebar) {\n return null;\n }\n\n return (\n <KitTooltip title={buttonLabel}>\n <KitButton\n id={EDIT_RECORD_SIDEBAR_TOGGLE_BUTON_ID}\n type=\"secondary\"\n size=\"m\"\n active={isOpen}\n icon={<FontAwesomeIcon icon={faInfo} />}\n onClick={toggleSidebar}\n aria-label={buttonLabel}\n />\n </KitTooltip>\n );\n};\n"]}
@@ -4,7 +4,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import { LINK_RECORDS_MODAL_CLASSNAME } from '../../../../../../../components/Explorer/_constants';
5
5
  import { APICallStatus, } from '../../../../../../../components/RecordEdition/EditRecordContent/_types';
6
6
  import { SelectRecordForLinkModal } from '../../../../../../../components/SelectRecordForLinkModal';
7
- import { TOOLTIP_DEFAULT_DELAY_IN_SECONDS } from '../../../../../../../constants';
8
7
  import { AntForm, KitButton, KitTooltip } from 'aristid-ds';
9
8
  import { useState } from 'react';
10
9
  import { useSharedTranslation } from '../../../../../../../hooks/useSharedTranslation';
@@ -60,7 +59,7 @@ export const useLinkRecord = ({ attribute, isReadOnly, onValueSubmit, backendVal
60
59
  const valuesList = isValuesListEnabled ? attribute.linkValuesList?.values?.map(value => value.id) : undefined;
61
60
  const allowFreeEntry = isValuesListEnabled ? Boolean(attribute.linkValuesList?.allowFreeEntry) : true;
62
61
  return {
63
- LinkRecordButton: !isReadOnly ? (_jsxs(_Fragment, { children: [_jsx(KitTooltip, { title: isReplacementMode ? t('global.replace') : t('global.add'), mouseEnterDelay: TOOLTIP_DEFAULT_DELAY_IN_SECONDS, children: _jsx(KitButton, { type: "secondary", size: "m", icon: _jsx(FontAwesomeIcon, { icon: faPlus }), onClick: () => {
62
+ LinkRecordButton: !isReadOnly ? (_jsxs(_Fragment, { children: [_jsx(KitTooltip, { title: isReplacementMode ? t('global.replace') : t('global.add'), children: _jsx(KitButton, { type: "secondary", size: "m", icon: _jsx(FontAwesomeIcon, { icon: faPlus }), onClick: () => {
64
63
  setIsModalOpen(true);
65
64
  } }) }), linkedTreeId ? (_jsx(SelectTreeNodeModal, { open: isModalOpen, attribute: {
66
65
  multiple_values: attribute.multiple_values,
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkRecord.js","sourceRoot":"","sources":["../../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.tsx"],"names":[],"mappings":"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","sourcesContent":["import {faPlus} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {\n type JoinLibraryContextFragment,\n type ExplorerSelectionIdsQuery,\n type RecordFormAttributeLinkAttributeFragment,\n} from '_ui/_gqlTypes';\nimport {LINK_RECORDS_MODAL_CLASSNAME} from '_ui/components/Explorer/_constants';\nimport {\n APICallStatus,\n type ISubmitMultipleResult,\n type SubmitValueFunc,\n} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {SelectRecordForLinkModal} from '_ui/components/SelectRecordForLinkModal';\nimport {TOOLTIP_DEFAULT_DELAY_IN_SECONDS} from '_ui/constants';\nimport {AntForm, KitButton, KitTooltip} from 'aristid-ds';\nimport {type Dispatch, type SetStateAction, useState} from 'react';\nimport {type RecordFormElementsValueLinkValue} from '_ui/hooks/useGetRecordForm';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {SelectTreeNodeModal} from '../../../TreeField/manage-tree-node-selection/SelectTreeNodeModal';\n\ninterface IUseLinkRecordProps {\n attribute: RecordFormAttributeLinkAttributeFragment;\n isReadOnly: boolean;\n onValueSubmit: SubmitValueFunc;\n backendValues: RecordFormElementsValueLinkValue[];\n setBackendValues: Dispatch<SetStateAction<RecordFormElementsValueLinkValue[]>>;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport const useLinkRecord = ({\n attribute,\n isReadOnly,\n onValueSubmit,\n backendValues,\n setBackendValues,\n joinLibraryContext,\n}: IUseLinkRecordProps) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const {t} = useSharedTranslation();\n const antdForm = AntForm.useFormInstance();\n\n const _buildValueToSubmit = (recordId: string) => ({\n id: recordId,\n whoAmI: {id: recordId, library: {id: attribute.linked_library?.id}},\n });\n\n const _handleLinkRecord = async (data: ExplorerSelectionIdsQuery) => {\n let submitRes: ISubmitMultipleResult;\n\n if (attribute.multiple_values) {\n submitRes = await onValueSubmit(\n data.records.list.map(record => ({value: _buildValueToSubmit(record.id), idValue: null, attribute})),\n null,\n );\n } else {\n submitRes = await onValueSubmit(\n [\n {\n value: _buildValueToSubmit(data.records.list[0].id),\n idValue: backendValues[0]?.id_value ?? null,\n attribute,\n },\n ],\n null,\n );\n }\n\n if (submitRes.status === APICallStatus.SUCCESS) {\n const linkValues = submitRes.values as unknown as RecordFormElementsValueLinkValue[];\n\n if (attribute.multiple_values) {\n setBackendValues(previousBackendValues => [...previousBackendValues, ...linkValues]);\n } else {\n setBackendValues([linkValues[0]]);\n }\n }\n\n if (submitRes.status === APICallStatus.ERROR) {\n antdForm.setFields([\n {\n name: attribute.id,\n errors: [submitRes.error],\n },\n ]);\n }\n };\n\n const isReplacementMode = backendValues.length > 0 && !attribute.multiple_values;\n\n const linkedLibraryId =\n joinLibraryContext &&\n 'linked_library' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_library?.id;\n\n const linkedTreeId =\n joinLibraryContext &&\n 'linked_tree' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_tree?.id;\n\n const isValuesListEnabled = attribute.linkValuesList?.enable;\n\n const valuesList = isValuesListEnabled ? attribute.linkValuesList?.values?.map(value => value.id) : undefined;\n\n const allowFreeEntry = isValuesListEnabled ? Boolean(attribute.linkValuesList?.allowFreeEntry) : true;\n\n return {\n LinkRecordButton: !isReadOnly ? (\n <>\n <KitTooltip\n title={isReplacementMode ? t('global.replace') : t('global.add')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <KitButton\n type=\"secondary\"\n size=\"m\"\n icon={<FontAwesomeIcon icon={faPlus} />}\n onClick={() => {\n setIsModalOpen(true);\n }}\n />\n </KitTooltip>\n {linkedTreeId ? (\n <SelectTreeNodeModal\n open={isModalOpen}\n attribute={{\n multiple_values: attribute.multiple_values,\n linked_tree: {\n id: linkedTreeId,\n },\n }}\n title={t(\n attribute.multiple_values ? 'tree-node-selection.title_many' : 'tree-node-selection.title',\n )}\n // We can select new node(s), ignoring current value(s).\n // Selected element might be duplicated in link attribute in backend for now.\n backendValues={[]}\n onClose={() => setIsModalOpen(false)}\n onConfirm={async selectedNodes => {\n const nodeIds = selectedNodes.map(node => node.id);\n await _handleLinkRecord({records: {list: nodeIds.map(id => ({id}))}});\n }}\n />\n ) : (\n <SelectRecordForLinkModal\n className={LINK_RECORDS_MODAL_CLASSNAME}\n open={isModalOpen}\n childLibraryId={linkedLibraryId || attribute.linked_library?.id}\n onSelectionCompleted={async data => {\n await _handleLinkRecord(data);\n setIsModalOpen(false);\n }}\n columnsToDisplay={[]} // TODO: One day, we should be able to choose the columns to display from a given viewId\n replacementMode={isReplacementMode}\n selectionMode={!attribute.multiple_values ? 'simple' : 'multiple'}\n hideSelectAllAction={!attribute.multiple_values}\n valuesList={valuesList}\n allowFreeEntry={allowFreeEntry}\n isMultivalue={attribute.multiple_values}\n onClose={() => setIsModalOpen(false)}\n joinLibraryContext={joinLibraryContext}\n />\n )}\n </>\n ) : undefined,\n };\n};\n"]}
1
+ {"version":3,"file":"useLinkRecord.js","sourceRoot":"","sources":["../../../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAM/D,OAAO,EAAC,4BAA4B,EAAC,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACH,aAAa,GAGhB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAC,wBAAwB,EAAC,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAqC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,mEAAmE,CAAC;AAWtG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACA,EAAE,EAAE;IACtB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE3C,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;QAC/C,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,EAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAE,EAAE,EAAC,EAAC;KACtE,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAA+B,EAAE,EAAE;QAChE,IAAI,SAAgC,CAAC;QAErC,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC5B,SAAS,GAAG,MAAM,aAAa,CAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,EACpG,IAAI,CACP,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,MAAM,aAAa,CAC3B;gBACI;oBACI,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI;oBAC3C,SAAS;iBACZ;aACJ,EACD,IAAI,CACP,CAAC;QACN,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,MAAuD,CAAC;YAErF,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC5B,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,GAAG,qBAAqB,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACJ,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3C,QAAQ,CAAC,SAAS,CAAC;gBACf;oBACI,IAAI,EAAE,SAAS,CAAC,EAAE;oBAClB,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC5B;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;IAEjF,MAAM,eAAe,GACjB,kBAAkB;QAClB,gBAAgB,IAAI,kBAAkB,CAAC,kBAAkB;QACzD,kBAAkB,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,CAAC;IAE7D,MAAM,YAAY,GACd,kBAAkB;QAClB,aAAa,IAAI,kBAAkB,CAAC,kBAAkB;QACtD,kBAAkB,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC;IAE1D,MAAM,mBAAmB,GAAG,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IAE7D,MAAM,UAAU,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9G,MAAM,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtG,OAAO;QACH,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAC5B,8BACI,KAAC,UAAU,IAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YACxE,KAAC,SAAS,IACN,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,GAAG,EACR,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,GAAI,EACvC,OAAO,EAAE,GAAG,EAAE;4BACV,cAAc,CAAC,IAAI,CAAC,CAAC;wBACzB,CAAC,GACH,GACO,EACZ,YAAY,CAAC,CAAC,CAAC,CACZ,KAAC,mBAAmB,IAChB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE;wBACP,eAAe,EAAE,SAAS,CAAC,eAAe;wBAC1C,WAAW,EAAE;4BACT,EAAE,EAAE,YAAY;yBACnB;qBACJ,EACD,KAAK,EAAE,CAAC,CACJ,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,2BAA2B,CAC7F;oBACD,wDAAwD;oBACxD,6EAA6E;oBAC7E,aAAa,EAAE,EAAE,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,SAAS,EAAE,KAAK,EAAC,aAAa,EAAC,EAAE;wBAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACnD,MAAM,iBAAiB,CAAC,EAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,CAAC;oBAC1E,CAAC,GACH,CACL,CAAC,CAAC,CAAC,CACA,KAAC,wBAAwB,IACrB,SAAS,EAAE,4BAA4B,EACvC,IAAI,EAAE,WAAW,EACjB,cAAc,EAAE,eAAe,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE,EAC/D,oBAAoB,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;wBAC/B,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBAC9B,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC,EACD,gBAAgB,EAAE,EAAE,EACpB,eAAe,EAAE,iBAAiB,EAClC,aAAa,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EACjE,mBAAmB,EAAE,CAAC,SAAS,CAAC,eAAe,EAC/C,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,SAAS,CAAC,eAAe,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,kBAAkB,EAAE,kBAAkB,GACxC,CACL,IACF,CACN,CAAC,CAAC,CAAC,SAAS;KAChB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {faPlus} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {\n type JoinLibraryContextFragment,\n type ExplorerSelectionIdsQuery,\n type RecordFormAttributeLinkAttributeFragment,\n} from '_ui/_gqlTypes';\nimport {LINK_RECORDS_MODAL_CLASSNAME} from '_ui/components/Explorer/_constants';\nimport {\n APICallStatus,\n type ISubmitMultipleResult,\n type SubmitValueFunc,\n} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {SelectRecordForLinkModal} from '_ui/components/SelectRecordForLinkModal';\nimport {AntForm, KitButton, KitTooltip} from 'aristid-ds';\nimport {type Dispatch, type SetStateAction, useState} from 'react';\nimport {type RecordFormElementsValueLinkValue} from '_ui/hooks/useGetRecordForm';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {SelectTreeNodeModal} from '../../../TreeField/manage-tree-node-selection/SelectTreeNodeModal';\n\ninterface IUseLinkRecordProps {\n attribute: RecordFormAttributeLinkAttributeFragment;\n isReadOnly: boolean;\n onValueSubmit: SubmitValueFunc;\n backendValues: RecordFormElementsValueLinkValue[];\n setBackendValues: Dispatch<SetStateAction<RecordFormElementsValueLinkValue[]>>;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport const useLinkRecord = ({\n attribute,\n isReadOnly,\n onValueSubmit,\n backendValues,\n setBackendValues,\n joinLibraryContext,\n}: IUseLinkRecordProps) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const {t} = useSharedTranslation();\n const antdForm = AntForm.useFormInstance();\n\n const _buildValueToSubmit = (recordId: string) => ({\n id: recordId,\n whoAmI: {id: recordId, library: {id: attribute.linked_library?.id}},\n });\n\n const _handleLinkRecord = async (data: ExplorerSelectionIdsQuery) => {\n let submitRes: ISubmitMultipleResult;\n\n if (attribute.multiple_values) {\n submitRes = await onValueSubmit(\n data.records.list.map(record => ({value: _buildValueToSubmit(record.id), idValue: null, attribute})),\n null,\n );\n } else {\n submitRes = await onValueSubmit(\n [\n {\n value: _buildValueToSubmit(data.records.list[0].id),\n idValue: backendValues[0]?.id_value ?? null,\n attribute,\n },\n ],\n null,\n );\n }\n\n if (submitRes.status === APICallStatus.SUCCESS) {\n const linkValues = submitRes.values as unknown as RecordFormElementsValueLinkValue[];\n\n if (attribute.multiple_values) {\n setBackendValues(previousBackendValues => [...previousBackendValues, ...linkValues]);\n } else {\n setBackendValues([linkValues[0]]);\n }\n }\n\n if (submitRes.status === APICallStatus.ERROR) {\n antdForm.setFields([\n {\n name: attribute.id,\n errors: [submitRes.error],\n },\n ]);\n }\n };\n\n const isReplacementMode = backendValues.length > 0 && !attribute.multiple_values;\n\n const linkedLibraryId =\n joinLibraryContext &&\n 'linked_library' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_library?.id;\n\n const linkedTreeId =\n joinLibraryContext &&\n 'linked_tree' in joinLibraryContext.mandatoryAttribute &&\n joinLibraryContext.mandatoryAttribute.linked_tree?.id;\n\n const isValuesListEnabled = attribute.linkValuesList?.enable;\n\n const valuesList = isValuesListEnabled ? attribute.linkValuesList?.values?.map(value => value.id) : undefined;\n\n const allowFreeEntry = isValuesListEnabled ? Boolean(attribute.linkValuesList?.allowFreeEntry) : true;\n\n return {\n LinkRecordButton: !isReadOnly ? (\n <>\n <KitTooltip title={isReplacementMode ? t('global.replace') : t('global.add')}>\n <KitButton\n type=\"secondary\"\n size=\"m\"\n icon={<FontAwesomeIcon icon={faPlus} />}\n onClick={() => {\n setIsModalOpen(true);\n }}\n />\n </KitTooltip>\n {linkedTreeId ? (\n <SelectTreeNodeModal\n open={isModalOpen}\n attribute={{\n multiple_values: attribute.multiple_values,\n linked_tree: {\n id: linkedTreeId,\n },\n }}\n title={t(\n attribute.multiple_values ? 'tree-node-selection.title_many' : 'tree-node-selection.title',\n )}\n // We can select new node(s), ignoring current value(s).\n // Selected element might be duplicated in link attribute in backend for now.\n backendValues={[]}\n onClose={() => setIsModalOpen(false)}\n onConfirm={async selectedNodes => {\n const nodeIds = selectedNodes.map(node => node.id);\n await _handleLinkRecord({records: {list: nodeIds.map(id => ({id}))}});\n }}\n />\n ) : (\n <SelectRecordForLinkModal\n className={LINK_RECORDS_MODAL_CLASSNAME}\n open={isModalOpen}\n childLibraryId={linkedLibraryId || attribute.linked_library?.id}\n onSelectionCompleted={async data => {\n await _handleLinkRecord(data);\n setIsModalOpen(false);\n }}\n columnsToDisplay={[]} // TODO: One day, we should be able to choose the columns to display from a given viewId\n replacementMode={isReplacementMode}\n selectionMode={!attribute.multiple_values ? 'simple' : 'multiple'}\n hideSelectAllAction={!attribute.multiple_values}\n valuesList={valuesList}\n allowFreeEntry={allowFreeEntry}\n isMultivalue={attribute.multiple_values}\n onClose={() => setIsModalOpen(false)}\n joinLibraryContext={joinLibraryContext}\n />\n )}\n </>\n ) : undefined,\n };\n};\n"]}
@@ -4,7 +4,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import { faLayerGroup, faSquareRootAlt } from '@fortawesome/free-solid-svg-icons';
5
5
  import styled from 'styled-components';
6
6
  import { useSharedTranslation } from '../../../../../hooks/useSharedTranslation';
7
- import { TOOLTIP_DEFAULT_DELAY_IN_SECONDS } from '../../../../../constants';
8
7
  const ComputeIndicatorWrapper = styled.div `
9
8
  font-size: calc(var(--general-typography-fontSize7) * 1px);
10
9
  `;
@@ -12,6 +11,6 @@ export const ComputeIndicator = ({ calculatedFlags, inheritedFlags }) => {
12
11
  const { t } = useSharedTranslation();
13
12
  const shouldDisplayComputedIcon = calculatedFlags.isCalculatedNotOverrideValues || inheritedFlags.isInheritedNotOverrideValues;
14
13
  const shouldDisplayOverridedIcon = calculatedFlags.isCalculatedOverrideValues || inheritedFlags.isInheritedOverrideValues;
15
- return (_jsxs(ComputeIndicatorWrapper, { children: [shouldDisplayComputedIcon && (_jsx(KitTooltip, { title: t('record_edition.calculated_value'), mouseEnterDelay: TOOLTIP_DEFAULT_DELAY_IN_SECONDS, children: _jsx(FontAwesomeIcon, { icon: faSquareRootAlt }) })), shouldDisplayOverridedIcon && (_jsx(KitTooltip, { title: t('record_edition.overrided_value'), mouseEnterDelay: TOOLTIP_DEFAULT_DELAY_IN_SECONDS, children: _jsx(FontAwesomeIcon, { icon: faLayerGroup }) }))] }));
14
+ return (_jsxs(ComputeIndicatorWrapper, { children: [shouldDisplayComputedIcon && (_jsx(KitTooltip, { title: t('record_edition.calculated_value'), children: _jsx(FontAwesomeIcon, { icon: faSquareRootAlt }) })), shouldDisplayOverridedIcon && (_jsx(KitTooltip, { title: t('record_edition.overrided_value'), children: _jsx(FontAwesomeIcon, { icon: faLayerGroup }) }))] }));
16
15
  };
17
16
  //# sourceMappingURL=ComputeIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComputeIndicator.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAChF,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,gCAAgC,EAAC,MAAM,eAAe,CAAC;AAE/D,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEzC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAA8C,CAAC,EAAC,eAAe,EAAE,cAAc,EAAC,EAAE,EAAE;IAC7G,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,yBAAyB,GAC3B,eAAe,CAAC,6BAA6B,IAAI,cAAc,CAAC,4BAA4B,CAAC;IACjG,MAAM,0BAA0B,GAC5B,eAAe,CAAC,0BAA0B,IAAI,cAAc,CAAC,yBAAyB,CAAC;IAE3F,OAAO,CACH,MAAC,uBAAuB,eACnB,yBAAyB,IAAI,CAC1B,KAAC,UAAU,IACP,KAAK,EAAE,CAAC,CAAC,iCAAiC,CAAC,EAC3C,eAAe,EAAE,gCAAgC,YAEjD,KAAC,eAAe,IAAC,IAAI,EAAE,eAAe,GAAI,GACjC,CAChB,EACA,0BAA0B,IAAI,CAC3B,KAAC,UAAU,IACP,KAAK,EAAE,CAAC,CAAC,gCAAgC,CAAC,EAC1C,eAAe,EAAE,gCAAgC,YAEjD,KAAC,eAAe,IAAC,IAAI,EAAE,YAAY,GAAI,GAC9B,CAChB,IACqB,CAC7B,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {type FunctionComponent} from 'react';\nimport {type CalculatedFlags, type InheritedFlags} from './calculatedInheritedFlags';\nimport {KitTooltip} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faLayerGroup, faSquareRootAlt} from '@fortawesome/free-solid-svg-icons';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {TOOLTIP_DEFAULT_DELAY_IN_SECONDS} from '_ui/constants';\n\nconst ComputeIndicatorWrapper = styled.div`\n font-size: calc(var(--general-typography-fontSize7) * 1px);\n`;\n\ninterface IComputeIndicatorProps {\n calculatedFlags: CalculatedFlags;\n inheritedFlags: InheritedFlags;\n}\n\nexport const ComputeIndicator: FunctionComponent<IComputeIndicatorProps> = ({calculatedFlags, inheritedFlags}) => {\n const {t} = useSharedTranslation();\n\n const shouldDisplayComputedIcon =\n calculatedFlags.isCalculatedNotOverrideValues || inheritedFlags.isInheritedNotOverrideValues;\n const shouldDisplayOverridedIcon =\n calculatedFlags.isCalculatedOverrideValues || inheritedFlags.isInheritedOverrideValues;\n\n return (\n <ComputeIndicatorWrapper>\n {shouldDisplayComputedIcon && (\n <KitTooltip\n title={t('record_edition.calculated_value')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <FontAwesomeIcon icon={faSquareRootAlt} />\n </KitTooltip>\n )}\n {shouldDisplayOverridedIcon && (\n <KitTooltip\n title={t('record_edition.overrided_value')}\n mouseEnterDelay={TOOLTIP_DEFAULT_DELAY_IN_SECONDS}\n >\n <FontAwesomeIcon icon={faLayerGroup} />\n </KitTooltip>\n )}\n </ComputeIndicatorWrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"ComputeIndicator.js","sourceRoot":"","sources":["../../../../../../src/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAChF,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEzC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAA8C,CAAC,EAAC,eAAe,EAAE,cAAc,EAAC,EAAE,EAAE;IAC7G,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,yBAAyB,GAC3B,eAAe,CAAC,6BAA6B,IAAI,cAAc,CAAC,4BAA4B,CAAC;IACjG,MAAM,0BAA0B,GAC5B,eAAe,CAAC,0BAA0B,IAAI,cAAc,CAAC,yBAAyB,CAAC;IAE3F,OAAO,CACH,MAAC,uBAAuB,eACnB,yBAAyB,IAAI,CAC1B,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,iCAAiC,CAAC,YACnD,KAAC,eAAe,IAAC,IAAI,EAAE,eAAe,GAAI,GACjC,CAChB,EACA,0BAA0B,IAAI,CAC3B,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,gCAAgC,CAAC,YAClD,KAAC,eAAe,IAAC,IAAI,EAAE,YAAY,GAAI,GAC9B,CAChB,IACqB,CAC7B,CAAC;AACN,CAAC,CAAC","sourcesContent":["import {type FunctionComponent} from 'react';\nimport {type CalculatedFlags, type InheritedFlags} from './calculatedInheritedFlags';\nimport {KitTooltip} from 'aristid-ds';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faLayerGroup, faSquareRootAlt} from '@fortawesome/free-solid-svg-icons';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\nconst ComputeIndicatorWrapper = styled.div`\n font-size: calc(var(--general-typography-fontSize7) * 1px);\n`;\n\ninterface IComputeIndicatorProps {\n calculatedFlags: CalculatedFlags;\n inheritedFlags: InheritedFlags;\n}\n\nexport const ComputeIndicator: FunctionComponent<IComputeIndicatorProps> = ({calculatedFlags, inheritedFlags}) => {\n const {t} = useSharedTranslation();\n\n const shouldDisplayComputedIcon =\n calculatedFlags.isCalculatedNotOverrideValues || inheritedFlags.isInheritedNotOverrideValues;\n const shouldDisplayOverridedIcon =\n calculatedFlags.isCalculatedOverrideValues || inheritedFlags.isInheritedOverrideValues;\n\n return (\n <ComputeIndicatorWrapper>\n {shouldDisplayComputedIcon && (\n <KitTooltip title={t('record_edition.calculated_value')}>\n <FontAwesomeIcon icon={faSquareRootAlt} />\n </KitTooltip>\n )}\n {shouldDisplayOverridedIcon && (\n <KitTooltip title={t('record_edition.overrided_value')}>\n <FontAwesomeIcon icon={faLayerGroup} />\n </KitTooltip>\n )}\n </ComputeIndicatorWrapper>\n );\n};\n"]}