@leav/ui 1.6.0-a54099d3 → 1.6.0-aa183ac2
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.
- package/dist/_gqlTypes/index.d.ts +318 -27
- package/dist/_gqlTypes/index.js +177 -1
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/trees/treeNodeChildrenQuery.js +2 -0
- package/dist/_queries/trees/treeNodeChildrenQuery.js.map +1 -1
- package/dist/_queries/views/viewDetailsFragment.js +1 -0
- package/dist/_queries/views/viewDetailsFragment.js.map +1 -1
- package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js +20 -12
- package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map +1 -1
- package/dist/components/AttributesSelectionList/sharedComponents.d.ts +159 -153
- package/dist/components/Explorer/Explorer.js +3 -1
- package/dist/components/Explorer/Explorer.js.map +1 -1
- package/dist/components/Explorer/ExplorerFiltersAndSorts.js +1 -1
- package/dist/components/Explorer/ExplorerFiltersAndSorts.js.map +1 -1
- package/dist/components/Explorer/TableCell.js +1 -0
- package/dist/components/Explorer/TableCell.js.map +1 -1
- package/dist/components/Explorer/actions-item/useReplaceItemAction.d.ts +2 -1
- package/dist/components/Explorer/actions-item/useReplaceItemAction.js +2 -2
- package/dist/components/Explorer/actions-item/useReplaceItemAction.js.map +1 -1
- package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.d.ts +2 -1
- package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js +2 -2
- package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js.map +1 -1
- package/dist/components/Explorer/link-item/LinkModal.d.ts +1 -0
- package/dist/components/Explorer/link-item/LinkModal.js +2 -2
- package/dist/components/Explorer/link-item/LinkModal.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js +3 -0
- package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js.map +1 -1
- package/dist/components/Filters/FiltersProvider.d.ts +2 -2
- package/dist/components/Filters/FiltersProvider.js.map +1 -1
- package/dist/components/Filters/_types.d.ts +3 -0
- package/dist/components/Filters/_types.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +5 -1
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/filter-items/CommonFilterItem.d.ts +1 -0
- package/dist/components/Filters/filter-items/CommonFilterItem.js +28 -8
- package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.d.ts +8 -0
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +16 -0
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -0
- package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js +9 -8
- package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js +2 -2
- package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.d.ts +0 -1
- package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js +14 -21
- package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +10 -12
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js +3 -13
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
- package/dist/components/Filters/index.d.ts +1 -0
- package/dist/components/Filters/index.js +1 -0
- package/dist/components/Filters/index.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +36 -3
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/Filters/useFilters.d.ts +5 -0
- package/dist/components/Filters/useTransformFilters.js +4 -0
- package/dist/components/Filters/useTransformFilters.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js +1 -8
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js +15 -17
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/View/View.d.ts +1 -3
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js +6 -2
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
- package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
- package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.d.ts +53 -51
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +6 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeFieldWrapper.d.ts +53 -51
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.d.ts +2 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js +2 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.d.ts +3 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js +2 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
- package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
- package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
- package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.d.ts +1 -0
- package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js +4 -2
- package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNode.d.ts +2 -1
- package/dist/components/SelectTreeNode/SelectTreeNode.js +3 -3
- package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.d.ts +2 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +6 -2
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.d.ts +2 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.js +8 -0
- package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/schema.d.ts +6 -3
- package/dist/hooks/useIFrameMessenger/schema.js +2 -1
- package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +12 -2
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +1 -0
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js +15 -0
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js.map +1 -1
- package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +1 -0
- package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +1 -0
- package/dist/locales/en/shared.json +2 -1
- package/dist/locales/fr/shared.json +2 -1
- package/package.json +9 -9
|
@@ -4,12 +4,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
5
|
import { localizedTranslation } from '@leav/utils';
|
|
6
6
|
import { useSharedTranslation } from '../../hooks/useSharedTranslation';
|
|
7
|
-
import { useTreeDataQueryQuery } from '../../_gqlTypes';
|
|
7
|
+
import { useTreeDataQueryQuery, } from '../../_gqlTypes';
|
|
8
8
|
import { ErrorDisplay } from '../..';
|
|
9
9
|
import useLang from '../../hooks/useLang';
|
|
10
10
|
import { SelectTreeNodeContent } from './SelectTreeNodeContent';
|
|
11
11
|
import { SelectTreeNodeContentSkeleton } from './SelectTreeNodeContentSkeleton';
|
|
12
|
-
export const SelectTreeNode = ({ treeId, childrenAsRecordValuePermissionFilter, onSelect, onCheck, selectedNodes, disabledNodes, selectableLibraries, multiple = false, checkStrictly = true, checkable = false, canSelectRoot = false, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
|
|
12
|
+
export const SelectTreeNode = ({ treeId, childrenAsRecordValuePermissionFilter, dependentValuesPermissionFilter, onSelect, onCheck, selectedNodes, disabledNodes, selectableLibraries, multiple = false, checkStrictly = true, checkable = false, canSelectRoot = false, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
|
|
13
13
|
const { lang } = useLang();
|
|
14
14
|
const { t } = useSharedTranslation();
|
|
15
15
|
const { loading, error, data } = useTreeDataQueryQuery({
|
|
@@ -24,6 +24,6 @@ export const SelectTreeNode = ({ treeId, childrenAsRecordValuePermissionFilter,
|
|
|
24
24
|
if (!data?.trees.list[0]) {
|
|
25
25
|
return _jsx(ErrorDisplay, { message: t('error.unknown_tree', { treeId }) });
|
|
26
26
|
}
|
|
27
|
-
return (_jsx(SelectTreeNodeContent, { treeData: { id: treeId, label: localizedTranslation(data.trees.list[0].label, lang) || treeId }, childrenAsRecordValuePermissionFilter: childrenAsRecordValuePermissionFilter, onCheck: onCheck, onSelect: onSelect, multiple: multiple, checkable: checkable, checkStrictly: checkStrictly, selectedNodes: selectedNodes, disabledNodes: disabledNodes, canSelectRoot: canSelectRoot, selectableLibraries: selectableLibraries, loadRecursively: loadRecursively, noPagination: noPagination, showSelectChildrenButton: showSelectChildrenButton }));
|
|
27
|
+
return (_jsx(SelectTreeNodeContent, { treeData: { id: treeId, label: localizedTranslation(data.trees.list[0].label, lang) || treeId }, childrenAsRecordValuePermissionFilter: childrenAsRecordValuePermissionFilter, dependentValuesPermissionFilter: dependentValuesPermissionFilter, onCheck: onCheck, onSelect: onSelect, multiple: multiple, checkable: checkable, checkStrictly: checkStrictly, selectedNodes: selectedNodes, disabledNodes: disabledNodes, canSelectRoot: canSelectRoot, selectableLibraries: selectableLibraries, loadRecursively: loadRecursively, noPagination: noPagination, showSelectChildrenButton: showSelectChildrenButton }));
|
|
28
28
|
};
|
|
29
29
|
//# sourceMappingURL=SelectTreeNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTreeNode.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNode.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"SelectTreeNode.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNode.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAGH,qBAAqB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,6BAA6B,EAAC,MAAM,iCAAiC,CAAC;AAoB9E,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EACpE,MAAM,EACN,qCAAqC,EACrC,+BAA+B,EAC/B,QAAQ,EACR,OAAO,EACP,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,IAAI,EACpB,SAAS,GAAG,KAAK,EACjB,aAAa,GAAG,KAAK,EACrB,eAAe,GAAG,IAAI,EACtB,YAAY,GAAG,KAAK,EACpB,wBAAwB,GAAG,KAAK,GACnC,EAAE,EAAE;IACD,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,qBAAqB,CAAC;QACjD,SAAS,EAAE,EAAC,MAAM,EAAC;KACtB,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,KAAC,6BAA6B,KAAG,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAC,MAAM,EAAC,CAAC,GAAI,CAAC;IACxE,CAAC;IAED,OAAO,CACH,KAAC,qBAAqB,IAClB,QAAQ,EAAE,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,EAAC,EAC7F,qCAAqC,EAAE,qCAAqC,EAC5E,+BAA+B,EAAE,+BAA+B,EAChE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,wBAAwB,EAAE,wBAAwB,GACpD,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {localizedTranslation} from '@leav/utils';\nimport {type FunctionComponent} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type ChildrenAsRecordValuePermissionFilterInput,\n type DependentValuesPermissionFilterInput,\n useTreeDataQueryQuery,\n} from '_ui/_gqlTypes';\nimport {ErrorDisplay} from '../..';\nimport useLang from '../../hooks/useLang';\nimport {type ITreeNodeWithRecord} from '../../types/trees';\nimport {SelectTreeNodeContent} from './SelectTreeNodeContent';\nimport {SelectTreeNodeContentSkeleton} from './SelectTreeNodeContentSkeleton';\n\ninterface ISelectTreeNodeProps {\n treeId: string;\n childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;\n dependentValuesPermissionFilter?: DependentValuesPermissionFilterInput;\n onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;\n onCheck?: (selection: ITreeNodeWithRecord[]) => void;\n selectedNodes?: string[];\n disabledNodes?: string[];\n selectableLibraries?: string[]; // all by default\n multiple?: boolean;\n checkStrictly?: boolean;\n checkable?: boolean;\n canSelectRoot?: boolean;\n loadRecursively?: boolean;\n noPagination?: boolean;\n showSelectChildrenButton?: boolean;\n}\n\nexport const SelectTreeNode: FunctionComponent<ISelectTreeNodeProps> = ({\n treeId,\n childrenAsRecordValuePermissionFilter,\n dependentValuesPermissionFilter,\n onSelect,\n onCheck,\n selectedNodes,\n disabledNodes,\n selectableLibraries,\n multiple = false,\n checkStrictly = true,\n checkable = false,\n canSelectRoot = false,\n loadRecursively = true,\n noPagination = false,\n showSelectChildrenButton = false,\n}) => {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n const {loading, error, data} = useTreeDataQueryQuery({\n variables: {treeId},\n });\n\n if (loading) {\n return <SelectTreeNodeContentSkeleton />;\n }\n\n if (error) {\n return <ErrorDisplay message={error.message} />;\n }\n\n if (!data?.trees.list[0]) {\n return <ErrorDisplay message={t('error.unknown_tree', {treeId})} />;\n }\n\n return (\n <SelectTreeNodeContent\n treeData={{id: treeId, label: localizedTranslation(data.trees.list[0].label, lang) || treeId}}\n childrenAsRecordValuePermissionFilter={childrenAsRecordValuePermissionFilter}\n dependentValuesPermissionFilter={dependentValuesPermissionFilter}\n onCheck={onCheck}\n onSelect={onSelect}\n multiple={multiple}\n checkable={checkable}\n checkStrictly={checkStrictly}\n selectedNodes={selectedNodes}\n disabledNodes={disabledNodes}\n canSelectRoot={canSelectRoot}\n selectableLibraries={selectableLibraries}\n loadRecursively={loadRecursively}\n noPagination={noPagination}\n showSelectChildrenButton={showSelectChildrenButton}\n />\n );\n};\n"]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { type FunctionComponent } from 'react';
|
|
2
2
|
import { type ITreeNodeWithRecord } from '../../types';
|
|
3
|
-
import { type ChildrenAsRecordValuePermissionFilterInput } from '../../_gqlTypes';
|
|
3
|
+
import { type ChildrenAsRecordValuePermissionFilterInput, type DependentValuesPermissionFilterInput } from '../../_gqlTypes';
|
|
4
4
|
interface ISelectTreeNodeContentProps {
|
|
5
5
|
treeData: {
|
|
6
6
|
id: string;
|
|
7
7
|
label: string;
|
|
8
8
|
};
|
|
9
9
|
childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;
|
|
10
|
+
dependentValuesPermissionFilter?: DependentValuesPermissionFilterInput;
|
|
10
11
|
selectedNodes?: string[];
|
|
11
12
|
disabledNodes?: string[];
|
|
12
13
|
onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;
|
|
@@ -5,12 +5,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
import { useEffect, useState } from 'react';
|
|
6
6
|
import { KitTree } from 'aristid-ds';
|
|
7
7
|
import { Spin } from 'antd';
|
|
8
|
-
import { useTreeNodeChildrenLazyQuery } from '../../_gqlTypes';
|
|
8
|
+
import { useTreeNodeChildrenLazyQuery, } from '../../_gqlTypes';
|
|
9
9
|
import { defaultPaginationPageSize, ErrorDisplay } from '../../index';
|
|
10
10
|
import { TreeNodeTitle } from './TreeNodeTitle';
|
|
11
11
|
import { _isObjectSelection } from './_types';
|
|
12
12
|
import { useSharedTranslation } from '../../hooks/useSharedTranslation';
|
|
13
|
-
export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePermissionFilter, onSelect, onCheck, selectedNodes = [], disabledNodes = [], multiple = false, checkable = false, checkStrictly = true, canSelectRoot = false, selectableLibraries, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
|
|
13
|
+
export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePermissionFilter, dependentValuesPermissionFilter, onSelect, onCheck, selectedNodes = [], disabledNodes = [], multiple = false, checkable = false, checkStrictly = true, canSelectRoot = false, selectableLibraries, loadRecursively = true, noPagination = false, showSelectChildrenButton = false, }) => {
|
|
14
14
|
const { t } = useSharedTranslation();
|
|
15
15
|
const rootNode = {
|
|
16
16
|
title: tree.label,
|
|
@@ -32,6 +32,9 @@ export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePer
|
|
|
32
32
|
const _fetchTreeContent = async (parentNodeKey, offset = 0, currentTreeMap = { ...treeMap }) => {
|
|
33
33
|
try {
|
|
34
34
|
const { data: { treeNodeChildren }, } = await loadTreeContent({
|
|
35
|
+
// If dependentValuesPermissionFilter is set, we need to bypass the cache to get up-to-date data,
|
|
36
|
+
// because tree content depends on record values that may have changed
|
|
37
|
+
fetchPolicy: dependentValuesPermissionFilter ? 'no-cache' : undefined,
|
|
35
38
|
variables: {
|
|
36
39
|
treeId: tree.id,
|
|
37
40
|
node: parentNodeKey && parentNodeKey !== tree.id ? parentNodeKey : null,
|
|
@@ -42,6 +45,7 @@ export const SelectTreeNodeContent = ({ treeData: tree, childrenAsRecordValuePer
|
|
|
42
45
|
offset,
|
|
43
46
|
},
|
|
44
47
|
childrenAsRecordValuePermissionFilter,
|
|
48
|
+
dependentValuesPermissionFilter,
|
|
45
49
|
},
|
|
46
50
|
});
|
|
47
51
|
const parentMapKey = parentNodeKey ?? tree.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTreeNodeContent.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNodeContent.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps, type FunctionComponent, useEffect, useState} from 'react';\nimport {KitTree} from 'aristid-ds';\nimport {Spin} from 'antd';\nimport {type EventDataNode} from 'antd/lib/tree';\nimport {type ITreeNodeWithRecord} from '_ui/types';\nimport {type ChildrenAsRecordValuePermissionFilterInput, useTreeNodeChildrenLazyQuery} from '_ui/_gqlTypes';\nimport {defaultPaginationPageSize, ErrorDisplay} from '../../index';\nimport {TreeNodeTitle} from './TreeNodeTitle';\nimport {_isObjectSelection, type ITreeMap, type ITreeMapElement} from './_types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\ninterface ISelectTreeNodeContentProps {\n treeData: {id: string; label: string};\n childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;\n selectedNodes?: string[];\n disabledNodes?: string[];\n onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;\n onCheck?: (selection: ITreeNodeWithRecord[]) => void;\n multiple?: boolean;\n checkable?: boolean;\n checkStrictly?: boolean;\n canSelectRoot?: boolean;\n selectableLibraries?: string[]; // all by default\n loadRecursively?: boolean;\n noPagination?: boolean;\n showSelectChildrenButton?: boolean;\n}\n\nexport const SelectTreeNodeContent: FunctionComponent<ISelectTreeNodeContentProps> = ({\n treeData: tree,\n childrenAsRecordValuePermissionFilter,\n onSelect,\n onCheck,\n selectedNodes = [],\n disabledNodes = [],\n multiple = false,\n checkable = false,\n checkStrictly = true,\n canSelectRoot = false,\n selectableLibraries,\n loadRecursively = true,\n noPagination = false,\n showSelectChildrenButton = false,\n}) => {\n const {t} = useSharedTranslation();\n\n const rootNode: ITreeMapElement = {\n title: tree.label,\n record: null,\n id: tree.id,\n key: tree.id,\n isLeaf: false,\n parents: [],\n paginationOffset: 0,\n children: [],\n };\n\n // As we'll fetch children when a node is expanded, we store the whole tree content in a hash map\n // to make update easier and more efficient\n const [treeMap, setTreeMap] = useState<ITreeMap>({\n [tree.id]: rootNode,\n });\n\n const [fetchError, setFetchError] = useState<string | undefined>();\n const [loadTreeContent, {error, called}] = useTreeNodeChildrenLazyQuery();\n\n const _fetchTreeContent = async (parentNodeKey?: string, offset = 0, currentTreeMap = {...treeMap}) => {\n try {\n const {\n data: {treeNodeChildren},\n } = await loadTreeContent({\n variables: {\n treeId: tree.id,\n node: parentNodeKey && parentNodeKey !== tree.id ? parentNodeKey : null,\n pagination: noPagination\n ? undefined\n : {\n limit: defaultPaginationPageSize,\n offset,\n },\n childrenAsRecordValuePermissionFilter,\n },\n });\n\n const parentMapKey = parentNodeKey ?? tree.id;\n const totalCount = treeNodeChildren.totalCount;\n const parentElement = currentTreeMap[parentMapKey];\n const showMoreKey = '__showMore' + parentMapKey + offset;\n\n const parentPath = parentElement?.parents ?? [];\n const currentParents = [...parentPath, parentMapKey];\n\n const formattedNodes = treeNodeChildren.list.map(e => ({\n record: e.record,\n title: e.record.whoAmI.label || e.record.whoAmI.id,\n id: e.id,\n key: e.id,\n isLeaf: !e.childrenCount,\n children: [],\n parents: currentParents,\n paginationOffset: 0,\n disabled: disabledNodes.includes(e.id),\n }));\n\n const existingKeys = new Set(parentElement.children.map(child => child.key));\n const newNodes = formattedNodes.filter(node => !existingKeys.has(node.key));\n parentElement.children = [\n ...parentElement.children.filter(child => !child.key.startsWith(`__showMore${parentMapKey}`)),\n ...newNodes,\n ];\n\n for (const node of formattedNodes) {\n currentTreeMap[node.key] = node as ITreeMapElement;\n parentElement.paginationOffset = offset;\n }\n\n if (!noPagination && totalCount > parentElement.paginationOffset + defaultPaginationPageSize) {\n const showMoreElement: ITreeMapElement = {\n isShowMore: true,\n record: null,\n title: t('tree-node-selection.show_more'),\n id: parentMapKey,\n key: showMoreKey,\n isLeaf: false,\n children: [],\n paginationOffset: 0,\n };\n parentElement.children.push(showMoreElement);\n }\n\n const newOffset = offset + defaultPaginationPageSize;\n if (treeNodeChildren.totalCount > newOffset) {\n await _fetchTreeContent(parentNodeKey, newOffset, currentTreeMap);\n }\n\n if (loadRecursively) {\n for (const node of formattedNodes) {\n if (!node.isLeaf) {\n await _fetchTreeContent(node.key, 0, currentTreeMap);\n }\n }\n }\n\n setTreeMap(currentTreeMap);\n setFetchError(undefined);\n } catch (err) {\n setFetchError((err as Error).message);\n }\n };\n\n useEffect(() => {\n _fetchTreeContent(undefined, 0);\n }, []);\n\n /**\n * In strict mode, loadData handler is called twice\n * https://github.com/ant-design/ant-design/issues/54497\n */\n const _handleLoadData: ComponentProps<typeof KitTree>['loadData'] = async nodeData => {\n const {id, isShowMore} = nodeData as EventDataNode<ITreeMapElement>;\n\n // Handle offset if we get here through the \"show more\" element\n const currentNodeOffset = treeMap[id]?.paginationOffset ?? 0;\n const paginationOffset = isShowMore\n ? (treeMap[id]?.paginationOffset ?? 0) + defaultPaginationPageSize\n : currentNodeOffset;\n\n if (id === tree.id && !isShowMore) {\n // Root has already been loaded\n return;\n }\n\n await _fetchTreeContent(id, paginationOffset);\n };\n\n const _handleSelect: ComponentProps<typeof KitTree>['onSelect'] = (_, e) => {\n // Prevent selecting when clicking on select all children button\n if (e.nativeEvent.target instanceof HTMLButtonElement) {\n return;\n }\n // If user clicked on the text \"show more\", we load more children instead of selecting the node\n if ('isShowMore' in e.node && e.node.isShowMore) {\n _handleLoadData(e.node);\n return;\n }\n\n const node = treeMap[e.node.key];\n const isRoot = node.id === tree.id;\n\n if (\n (!canSelectRoot && isRoot) ||\n (!isRoot && selectableLibraries && !selectableLibraries.includes(node.record.whoAmI.library.id))\n ) {\n return;\n }\n\n const getAllDescendants = (nodeId: string): string[] =>\n treeMap[nodeId].children.reduce<string[]>(\n (acc, child) => [...acc, child.id, ...getAllDescendants(child.id)],\n [],\n );\n\n if (node) {\n if (checkable) {\n const isDeselecting = selectedNodes.includes(node.id);\n\n if (isDeselecting && isRoot) {\n _handleCheck([], null);\n } else if (isDeselecting) {\n const nodeToDeselect = [node.id, ...node.parents, ...getAllDescendants(node.id)];\n const selectionToKeep = selectedNodes.filter(\n selectedNode => !nodeToDeselect.includes(selectedNode),\n );\n\n _handleCheck(selectionToKeep, null);\n } else if (isRoot) {\n _handleCheck([...getAllDescendants(tree.id), tree.id], null);\n } else {\n _handleCheck([...selectedNodes, node.id], null);\n }\n } else {\n onSelect(node, e.selected);\n }\n }\n };\n\n const _handleCheck: ComponentProps<typeof KitTree>['onCheck'] = selection => {\n if (!canSelectRoot && Array.isArray(selection) && selection.includes(tree.id)) {\n return;\n }\n\n const checkedKeys = _isObjectSelection(selection) ? selection.checked : selection;\n const nodes = checkedKeys.map(key => treeMap[key]);\n\n onCheck(nodes);\n };\n\n if (!called) {\n return <Spin />;\n }\n\n if (error || fetchError) {\n return <ErrorDisplay message={error?.message ?? fetchError} />;\n }\n\n return (\n <KitTree\n checkStrictly={checkStrictly}\n treeData={[treeMap[rootNode.key]]}\n loadData={loadRecursively ? undefined : _handleLoadData}\n multiple={multiple}\n checkable={checkable}\n defaultExpandedKeys={selectedNodes.length > 0 ? [...selectedNodes, tree.id] : [tree.id]}\n selectedKeys={selectedNodes}\n checkedKeys={selectedNodes}\n titleRender={node => (\n <TreeNodeTitle\n checkable={checkable}\n disabledNodes={disabledNodes}\n loadRecursively={loadRecursively}\n node={node as ITreeMapElement}\n onSelect={onSelect}\n selectedNodes={selectedNodes}\n showSelectChildrenButton={showSelectChildrenButton}\n />\n )}\n onSelect={_handleSelect}\n onCheck={_handleCheck}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SelectTreeNodeContent.js","sourceRoot":"","sources":["../../../src/components/SelectTreeNode/SelectTreeNodeContent.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps, type FunctionComponent, useEffect, useState} from 'react';\nimport {KitTree} from 'aristid-ds';\nimport {Spin} from 'antd';\nimport {type EventDataNode} from 'antd/lib/tree';\nimport {type ITreeNodeWithRecord} from '_ui/types';\nimport {\n type ChildrenAsRecordValuePermissionFilterInput,\n type DependentValuesPermissionFilterInput,\n useTreeNodeChildrenLazyQuery,\n} from '_ui/_gqlTypes';\nimport {defaultPaginationPageSize, ErrorDisplay} from '../../index';\nimport {TreeNodeTitle} from './TreeNodeTitle';\nimport {_isObjectSelection, type ITreeMap, type ITreeMapElement} from './_types';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\ninterface ISelectTreeNodeContentProps {\n treeData: {id: string; label: string};\n childrenAsRecordValuePermissionFilter?: ChildrenAsRecordValuePermissionFilterInput;\n dependentValuesPermissionFilter?: DependentValuesPermissionFilterInput;\n selectedNodes?: string[];\n disabledNodes?: string[];\n onSelect: (node: ITreeNodeWithRecord, selected: boolean) => void;\n onCheck?: (selection: ITreeNodeWithRecord[]) => void;\n multiple?: boolean;\n checkable?: boolean;\n checkStrictly?: boolean;\n canSelectRoot?: boolean;\n selectableLibraries?: string[]; // all by default\n loadRecursively?: boolean;\n noPagination?: boolean;\n showSelectChildrenButton?: boolean;\n}\n\nexport const SelectTreeNodeContent: FunctionComponent<ISelectTreeNodeContentProps> = ({\n treeData: tree,\n childrenAsRecordValuePermissionFilter,\n dependentValuesPermissionFilter,\n onSelect,\n onCheck,\n selectedNodes = [],\n disabledNodes = [],\n multiple = false,\n checkable = false,\n checkStrictly = true,\n canSelectRoot = false,\n selectableLibraries,\n loadRecursively = true,\n noPagination = false,\n showSelectChildrenButton = false,\n}) => {\n const {t} = useSharedTranslation();\n\n const rootNode: ITreeMapElement = {\n title: tree.label,\n record: null,\n id: tree.id,\n key: tree.id,\n isLeaf: false,\n parents: [],\n paginationOffset: 0,\n children: [],\n };\n\n // As we'll fetch children when a node is expanded, we store the whole tree content in a hash map\n // to make update easier and more efficient\n const [treeMap, setTreeMap] = useState<ITreeMap>({\n [tree.id]: rootNode,\n });\n\n const [fetchError, setFetchError] = useState<string | undefined>();\n const [loadTreeContent, {error, called}] = useTreeNodeChildrenLazyQuery();\n\n const _fetchTreeContent = async (parentNodeKey?: string, offset = 0, currentTreeMap = {...treeMap}) => {\n try {\n const {\n data: {treeNodeChildren},\n } = await loadTreeContent({\n // If dependentValuesPermissionFilter is set, we need to bypass the cache to get up-to-date data,\n // because tree content depends on record values that may have changed\n fetchPolicy: dependentValuesPermissionFilter ? 'no-cache' : undefined,\n variables: {\n treeId: tree.id,\n node: parentNodeKey && parentNodeKey !== tree.id ? parentNodeKey : null,\n pagination: noPagination\n ? undefined\n : {\n limit: defaultPaginationPageSize,\n offset,\n },\n childrenAsRecordValuePermissionFilter,\n dependentValuesPermissionFilter,\n },\n });\n\n const parentMapKey = parentNodeKey ?? tree.id;\n const totalCount = treeNodeChildren.totalCount;\n const parentElement = currentTreeMap[parentMapKey];\n const showMoreKey = '__showMore' + parentMapKey + offset;\n\n const parentPath = parentElement?.parents ?? [];\n const currentParents = [...parentPath, parentMapKey];\n\n const formattedNodes = treeNodeChildren.list.map(e => ({\n record: e.record,\n title: e.record.whoAmI.label || e.record.whoAmI.id,\n id: e.id,\n key: e.id,\n isLeaf: !e.childrenCount,\n children: [],\n parents: currentParents,\n paginationOffset: 0,\n disabled: disabledNodes.includes(e.id),\n }));\n\n const existingKeys = new Set(parentElement.children.map(child => child.key));\n const newNodes = formattedNodes.filter(node => !existingKeys.has(node.key));\n parentElement.children = [\n ...parentElement.children.filter(child => !child.key.startsWith(`__showMore${parentMapKey}`)),\n ...newNodes,\n ];\n\n for (const node of formattedNodes) {\n currentTreeMap[node.key] = node as ITreeMapElement;\n parentElement.paginationOffset = offset;\n }\n\n if (!noPagination && totalCount > parentElement.paginationOffset + defaultPaginationPageSize) {\n const showMoreElement: ITreeMapElement = {\n isShowMore: true,\n record: null,\n title: t('tree-node-selection.show_more'),\n id: parentMapKey,\n key: showMoreKey,\n isLeaf: false,\n children: [],\n paginationOffset: 0,\n };\n parentElement.children.push(showMoreElement);\n }\n\n const newOffset = offset + defaultPaginationPageSize;\n if (treeNodeChildren.totalCount > newOffset) {\n await _fetchTreeContent(parentNodeKey, newOffset, currentTreeMap);\n }\n\n if (loadRecursively) {\n for (const node of formattedNodes) {\n if (!node.isLeaf) {\n await _fetchTreeContent(node.key, 0, currentTreeMap);\n }\n }\n }\n\n setTreeMap(currentTreeMap);\n setFetchError(undefined);\n } catch (err) {\n setFetchError((err as Error).message);\n }\n };\n\n useEffect(() => {\n _fetchTreeContent(undefined, 0);\n }, []);\n\n /**\n * In strict mode, loadData handler is called twice\n * https://github.com/ant-design/ant-design/issues/54497\n */\n const _handleLoadData: ComponentProps<typeof KitTree>['loadData'] = async nodeData => {\n const {id, isShowMore} = nodeData as EventDataNode<ITreeMapElement>;\n\n // Handle offset if we get here through the \"show more\" element\n const currentNodeOffset = treeMap[id]?.paginationOffset ?? 0;\n const paginationOffset = isShowMore\n ? (treeMap[id]?.paginationOffset ?? 0) + defaultPaginationPageSize\n : currentNodeOffset;\n\n if (id === tree.id && !isShowMore) {\n // Root has already been loaded\n return;\n }\n\n await _fetchTreeContent(id, paginationOffset);\n };\n\n const _handleSelect: ComponentProps<typeof KitTree>['onSelect'] = (_, e) => {\n // Prevent selecting when clicking on select all children button\n if (e.nativeEvent.target instanceof HTMLButtonElement) {\n return;\n }\n // If user clicked on the text \"show more\", we load more children instead of selecting the node\n if ('isShowMore' in e.node && e.node.isShowMore) {\n _handleLoadData(e.node);\n return;\n }\n\n const node = treeMap[e.node.key];\n const isRoot = node.id === tree.id;\n\n if (\n (!canSelectRoot && isRoot) ||\n (!isRoot && selectableLibraries && !selectableLibraries.includes(node.record.whoAmI.library.id))\n ) {\n return;\n }\n\n const getAllDescendants = (nodeId: string): string[] =>\n treeMap[nodeId].children.reduce<string[]>(\n (acc, child) => [...acc, child.id, ...getAllDescendants(child.id)],\n [],\n );\n\n if (node) {\n if (checkable) {\n const isDeselecting = selectedNodes.includes(node.id);\n\n if (isDeselecting && isRoot) {\n _handleCheck([], null);\n } else if (isDeselecting) {\n const nodeToDeselect = [node.id, ...node.parents, ...getAllDescendants(node.id)];\n const selectionToKeep = selectedNodes.filter(\n selectedNode => !nodeToDeselect.includes(selectedNode),\n );\n\n _handleCheck(selectionToKeep, null);\n } else if (isRoot) {\n _handleCheck([...getAllDescendants(tree.id), tree.id], null);\n } else {\n _handleCheck([...selectedNodes, node.id], null);\n }\n } else {\n onSelect(node, e.selected);\n }\n }\n };\n\n const _handleCheck: ComponentProps<typeof KitTree>['onCheck'] = selection => {\n if (!canSelectRoot && Array.isArray(selection) && selection.includes(tree.id)) {\n return;\n }\n\n const checkedKeys = _isObjectSelection(selection) ? selection.checked : selection;\n const nodes = checkedKeys.map(key => treeMap[key]);\n\n onCheck(nodes);\n };\n\n if (!called) {\n return <Spin />;\n }\n\n if (error || fetchError) {\n return <ErrorDisplay message={error?.message ?? fetchError} />;\n }\n\n return (\n <KitTree\n checkStrictly={checkStrictly}\n treeData={[treeMap[rootNode.key]]}\n loadData={loadRecursively ? undefined : _handleLoadData}\n multiple={multiple}\n checkable={checkable}\n defaultExpandedKeys={selectedNodes.length > 0 ? [...selectedNodes, tree.id] : [tree.id]}\n selectedKeys={selectedNodes}\n checkedKeys={selectedNodes}\n titleRender={node => (\n <TreeNodeTitle\n checkable={checkable}\n disabledNodes={disabledNodes}\n loadRecursively={loadRecursively}\n node={node as ITreeMapElement}\n onSelect={onSelect}\n selectedNodes={selectedNodes}\n showSelectChildrenButton={showSelectChildrenButton}\n />\n )}\n onSelect={_handleSelect}\n onCheck={_handleCheck}\n />\n );\n};\n"]}
|
package/dist/constants.d.ts
CHANGED
package/dist/constants.js
CHANGED
|
@@ -12,6 +12,7 @@ export var PreviewSize;
|
|
|
12
12
|
PreviewSize["MEDIUM"] = "medium";
|
|
13
13
|
PreviewSize["BIG"] = "big";
|
|
14
14
|
})(PreviewSize || (PreviewSize = {}));
|
|
15
|
+
export const ACTIVE_ATTRIBUTE_ID = 'active';
|
|
15
16
|
export const tagColorByAttributeType = {
|
|
16
17
|
[AttributeType.simple]: ['purple', '#ffe5ff'],
|
|
17
18
|
[AttributeType.simple_link]: ['blue', '#e5e5ff'],
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,gCAAgC;AAChC,sCAAsC;AACtC,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAE3D,sEAAsE;AACtE,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,0BAAW,CAAA;AACf,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAmE;IACnG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7C,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC/C,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IACrD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAqE;IACvG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAC9C,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3C,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IACpD,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;IAC/C,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAClD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAChD,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC9C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;CACtD,CAAC;AAEF,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,oCAAe,CAAA;IACf,0DAAqC,CAAA;IACrC,4DAAuC,CAAA;AAC3C,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAaD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAC;AAEpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAK,CAAC;AAChD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAK,CAAC;AACjD,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAK,CAAC;AACnD,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAM,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAK,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAK,CAAC;AAE1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\n// Copyright LEAV Solutions 2017\n// This file is released under LGPL V3\nimport {AttributeFormat, AttributeType} from './_gqlTypes';\n\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nexport enum PreviewSize {\n TINY = 'tiny',\n SMALL = 'small',\n MEDIUM = 'medium',\n BIG = 'big',\n}\n\nexport const tagColorByAttributeType: {[key in AttributeType]: [border: string, background: string]} = {\n [AttributeType.simple]: ['purple', '#ffe5ff'],\n [AttributeType.simple_link]: ['blue', '#e5e5ff'],\n [AttributeType.advanced]: ['orange', '#fff6e5'],\n [AttributeType.advanced_link]: ['#d4380d', '#fde4dd'],\n [AttributeType.tree]: ['green', '#e5ffe5'],\n};\n\nexport const tagColorByAttributeFormat: {[key in AttributeFormat]: [border: string, background: string]} = {\n [AttributeFormat.boolean]: ['gold', '#fff099'],\n [AttributeFormat.date]: ['blue', '#e5e5ff'],\n [AttributeFormat.date_range]: ['#1d39c4', '#e9ecfc'],\n [AttributeFormat.encrypted]: ['red', '#ffe5e5'],\n [AttributeFormat.extended]: ['magenta', '#ffe5e5'],\n [AttributeFormat.numeric]: ['orange', '#fff6e5'],\n [AttributeFormat.text]: ['green', '#e5ffe5'],\n [AttributeFormat.color]: ['purple', '#ffe5ff'],\n [AttributeFormat.rich_text]: ['#d4380d', '#fde4dd'],\n};\n\nexport enum ErrorDisplayTypes {\n ERROR = 'error',\n PERMISSION_ERROR = 'permission_error',\n PAGE_NOT_FOUND = 'page_not_found_error',\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Window {\n __dynamic_base__?: string;\n __global_base_url__?: string;\n __bugsnag_api_key__?: string;\n __bugsnag_app_version__?: string;\n __bugsnag_release_stage__?: string;\n }\n}\n\nexport const defaultPaginationPageSize = 20;\n\nexport const GLOBAL_BASE_URL = window.__global_base_url__ || '';\n\nexport const PREFIX_USER_VIEWS_ORDER_KEY = 'user_views_order_';\nexport const PREFIX_SHARED_VIEWS_ORDER_KEY = 'shared_views_order_';\n\nexport const TOOLTIP_DEFAULT_DELAY_IN_SECONDS = 0.5;\n\nexport const INFO_NOTIFICATION_DURATION = 5_000;\nexport const ERROR_NOTIFICATION_DURATION = 5_000;\nexport const SUCCESS_NOTIFICATION_DURATION = 5_000;\nexport const SUBSCRIPTION_NOTIFICATION_DURATION = 10_000;\n\nexport const SUCCESS_ALERT_DURATION = 3_000;\nexport const ERROR_ALERT_DURATION = 5_000;\n\nexport const EDIT_RECORD_SIDEBAR_ID = 'edit_record_sidebar';\n\nexport const STANDARD_FIELD_ID_PREFIX = 'standardfield-';\n\nexport const LINK_FIELD_ID_PREFIX = 'linkfield-';\n\nexport const TREE_FIELD_ID_PREFIX = 'treefield-';\n\nexport const SUBMIT_BUTTONS_PORTAL = 'submit_buttons_portal';\nexport const NEW_RECORD_ID = 'newRecord';\n"]}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,gCAAgC;AAChC,sCAAsC;AACtC,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAE3D,sEAAsE;AACtE,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,0BAAW,CAAA;AACf,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,uBAAuB,GAAmE;IACnG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7C,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC/C,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IACrD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAqE;IACvG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAC9C,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3C,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IACpD,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;IAC/C,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAClD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAChD,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC9C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;CACtD,CAAC;AAEF,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,oCAAe,CAAA;IACf,0DAAqC,CAAA;IACrC,4DAAuC,CAAA;AAC3C,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAaD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAC;AAEpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAK,CAAC;AAChD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAK,CAAC;AACjD,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAK,CAAC;AACnD,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAM,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAK,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAK,CAAC;AAE1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\n// Copyright LEAV Solutions 2017\n// This file is released under LGPL V3\nimport {AttributeFormat, AttributeType} from './_gqlTypes';\n\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nexport enum PreviewSize {\n TINY = 'tiny',\n SMALL = 'small',\n MEDIUM = 'medium',\n BIG = 'big',\n}\n\nexport const ACTIVE_ATTRIBUTE_ID = 'active';\n\nexport const tagColorByAttributeType: {[key in AttributeType]: [border: string, background: string]} = {\n [AttributeType.simple]: ['purple', '#ffe5ff'],\n [AttributeType.simple_link]: ['blue', '#e5e5ff'],\n [AttributeType.advanced]: ['orange', '#fff6e5'],\n [AttributeType.advanced_link]: ['#d4380d', '#fde4dd'],\n [AttributeType.tree]: ['green', '#e5ffe5'],\n};\n\nexport const tagColorByAttributeFormat: {[key in AttributeFormat]: [border: string, background: string]} = {\n [AttributeFormat.boolean]: ['gold', '#fff099'],\n [AttributeFormat.date]: ['blue', '#e5e5ff'],\n [AttributeFormat.date_range]: ['#1d39c4', '#e9ecfc'],\n [AttributeFormat.encrypted]: ['red', '#ffe5e5'],\n [AttributeFormat.extended]: ['magenta', '#ffe5e5'],\n [AttributeFormat.numeric]: ['orange', '#fff6e5'],\n [AttributeFormat.text]: ['green', '#e5ffe5'],\n [AttributeFormat.color]: ['purple', '#ffe5ff'],\n [AttributeFormat.rich_text]: ['#d4380d', '#fde4dd'],\n};\n\nexport enum ErrorDisplayTypes {\n ERROR = 'error',\n PERMISSION_ERROR = 'permission_error',\n PAGE_NOT_FOUND = 'page_not_found_error',\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Window {\n __dynamic_base__?: string;\n __global_base_url__?: string;\n __bugsnag_api_key__?: string;\n __bugsnag_app_version__?: string;\n __bugsnag_release_stage__?: string;\n }\n}\n\nexport const defaultPaginationPageSize = 20;\n\nexport const GLOBAL_BASE_URL = window.__global_base_url__ || '';\n\nexport const PREFIX_USER_VIEWS_ORDER_KEY = 'user_views_order_';\nexport const PREFIX_SHARED_VIEWS_ORDER_KEY = 'shared_views_order_';\n\nexport const TOOLTIP_DEFAULT_DELAY_IN_SECONDS = 0.5;\n\nexport const INFO_NOTIFICATION_DURATION = 5_000;\nexport const ERROR_NOTIFICATION_DURATION = 5_000;\nexport const SUCCESS_NOTIFICATION_DURATION = 5_000;\nexport const SUBSCRIPTION_NOTIFICATION_DURATION = 10_000;\n\nexport const SUCCESS_ALERT_DURATION = 3_000;\nexport const ERROR_ALERT_DURATION = 5_000;\n\nexport const EDIT_RECORD_SIDEBAR_ID = 'edit_record_sidebar';\n\nexport const STANDARD_FIELD_ID_PREFIX = 'standardfield-';\n\nexport const LINK_FIELD_ID_PREFIX = 'linkfield-';\n\nexport const TREE_FIELD_ID_PREFIX = 'treefield-';\n\nexport const SUBMIT_BUTTONS_PORTAL = 'submit_buttons_portal';\nexport const NEW_RECORD_ID = 'newRecord';\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type MutableRefObject } from 'react';
|
|
2
|
-
import { type AlertMessage, type Callbacks, type CallCbFunction, type ClosePanelMessage, type IUseIFrameMessengerOptions, type Message, type MessageDispatcher, type MessageHandler, type MessageToPanelMessage, type ModalConfirmMessage, type NavigateToIframeMessage, type NavigateToPanelMessage, type NotificationMessage, type SimpleMessage, type OpenFlapPanelMessage } from './types';
|
|
2
|
+
import { type AlertMessage, type Callbacks, type CallCbFunction, type ClosePanelMessage, type IUseIFrameMessengerOptions, type Message, type MessageDispatcher, type MessageHandler, type MessageToPanelMessage, type ModalConfirmMessage, type NavigateToIframeMessage, type NavigateToPanelMessage, type NotificationMessage, type SimpleMessage, type OpenFlapPanelMessage, type GetPanelConfigMessage } from './types';
|
|
3
3
|
export declare const encodeMessage: (message: Message) => string;
|
|
4
4
|
export declare const decodeMessage: (raw: string) => Message | undefined;
|
|
5
5
|
export declare const initClientHandlers: (callCb: CallCbFunction, options?: IUseIFrameMessengerOptions, callbacksList?: MutableRefObject<Callbacks>) => MessageHandler;
|
|
@@ -14,4 +14,5 @@ export declare const getExposedMethods: (callbacksStore: MutableRefObject<Callba
|
|
|
14
14
|
messageToPanel: (data: MessageToPanelMessage["data"]) => void;
|
|
15
15
|
openFlapPanel: (data: OpenFlapPanelMessage["data"]) => void;
|
|
16
16
|
closeFlapPanel: () => void;
|
|
17
|
+
getPanelConfig: (data: GetPanelConfigMessage["data"]) => void;
|
|
17
18
|
};
|
|
@@ -69,6 +69,9 @@ export const initClientHandlers = (callCb, options, callbacksList) => (message,
|
|
|
69
69
|
case 'close-flap-panel':
|
|
70
70
|
options?.handlers?.onCloseFlapPanel?.();
|
|
71
71
|
break;
|
|
72
|
+
case 'get-panel-config':
|
|
73
|
+
options?.handlers?.onGetPanelConfig?.(setCallbacks(message.id, message.__frameId, message.data, callCb, message.overrides), message.id, dispatch, callCb);
|
|
74
|
+
break;
|
|
72
75
|
default:
|
|
73
76
|
break;
|
|
74
77
|
}
|
|
@@ -125,5 +128,10 @@ export const getExposedMethods = (callbacksStore, dispatch) => ({
|
|
|
125
128
|
closeFlapPanel: () => {
|
|
126
129
|
dispatch?.({ type: 'close-flap-panel' });
|
|
127
130
|
},
|
|
131
|
+
getPanelConfig: (data) => {
|
|
132
|
+
const id = Date.now().toString();
|
|
133
|
+
const { data: nextData, overrides } = storeCallbacks(data, id, callbacksStore);
|
|
134
|
+
dispatch?.({ type: 'get-panel-config', data: nextData, id, overrides });
|
|
135
|
+
},
|
|
128
136
|
});
|
|
129
137
|
//# sourceMappingURL=messageHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHandlers.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/messageHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type MutableRefObject} from 'react';\nimport {\n type AlertMessage,\n type CallbackFunction,\n type Callbacks,\n type CallCbFunction,\n type ClosePanelMessage,\n type IEncodedMessage,\n type IUseIFrameMessengerOptions,\n type Message,\n type MessageDispatcher,\n type MessageHandler,\n type MessageToPanelMessage,\n type ModalConfirmMessage,\n type NavigateToIframeMessage,\n type NavigateToPanelMessage,\n type NotificationMessage,\n packetId,\n type SimpleMessage,\n type OpenFlapPanelMessage,\n type CloseFlapPanelMessage,\n} from './types';\n\nexport const encodeMessage = (message: Message): string =>\n JSON.stringify({\n payload: JSON.stringify(message),\n [packetId]: true,\n });\n\nexport const decodeMessage = (raw: string): Message | undefined => {\n try {\n const decoded: IEncodedMessage = JSON.parse(raw) as unknown as IEncodedMessage;\n if (packetId in decoded && decoded[packetId] === true) {\n return JSON.parse(decoded.payload) as Message;\n }\n } catch (e) {\n return undefined;\n }\n return undefined;\n};\n\nconst getCallback = (path: string, callbacksList?: MutableRefObject<Callbacks>): CallbackFunction | null => {\n if (!callbacksList?.current) {\n return null;\n }\n const pathArray = path.split('.');\n let callback: CallbackFunction | Callbacks | Record<string, CallbackFunction> = callbacksList.current;\n pathArray.forEach(part => (callback = (callback as Callbacks | Record<string, CallbackFunction>)?.[part]));\n return typeof callback === 'function' ? callback : null;\n};\n\nconst setCallbacks = (\n id: string,\n frameId: string,\n data: unknown,\n callCb: CallCbFunction,\n overrides?: string[],\n): unknown => {\n if (!overrides) {\n return data;\n }\n\n const nextData = {...(data as Record<string, unknown>)};\n overrides.forEach((key: string) => {\n nextData[key] = (...args: unknown[]) => {\n callCb(`${id}.${key}`, args, frameId);\n };\n });\n return nextData;\n};\n\nexport const initClientHandlers: (\n callCb: CallCbFunction,\n options?: IUseIFrameMessengerOptions,\n callbacksList?: MutableRefObject<Callbacks>,\n) => MessageHandler = (callCb, options, callbacksList) => (message, dispatch) => {\n switch (message.type) {\n case 'modal-confirm':\n options?.handlers?.onModalConfirm?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as ModalConfirmMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'alert':\n options?.handlers?.onAlert?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as AlertMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'notification':\n options?.handlers?.onNotification?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as NotificationMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'message':\n options?.handlers?.onMessage?.(message.data, message.id, dispatch, callCb);\n break;\n case 'on-call-callback':\n // TODO How to know if handler can be removed from callbacksList ?\n getCallback(message.path, callbacksList)?.(...(message.data as never[]));\n break;\n case 'navigate-to-panel':\n options?.handlers?.onNavigateToPanel?.(message.data);\n break;\n case 'close-panel':\n options?.handlers?.onClosePanel?.(message.data);\n break;\n case 'navigate-to-iframe':\n options?.handlers?.onNavigateToIframe?.(message.data);\n break;\n case 'open-flap-panel':\n options?.handlers?.onOpenFlapPanel?.(message.data);\n break;\n case 'close-flap-panel':\n options?.handlers?.onCloseFlapPanel?.();\n break;\n default:\n break;\n }\n};\n\nconst storeCallbacks = (\n data: unknown,\n id: string,\n callbacksStore: MutableRefObject<Callbacks>,\n): {data: unknown; overrides: string[]} => {\n const nextData = {...(data as Record<string, unknown>)};\n const overrides: string[] = [];\n Object.entries(nextData).forEach(([key, value]) => {\n if (typeof value === 'function') {\n callbacksStore.current[id] = {\n ...callbacksStore.current[id],\n [key]: value as CallbackFunction,\n };\n overrides.push(key);\n }\n });\n return {data: nextData, overrides};\n};\n\nexport const getExposedMethods = (callbacksStore: MutableRefObject<Callbacks>, dispatch?: MessageDispatcher) => ({\n showModalConfirm: (data: ModalConfirmMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'modal-confirm', data: nextData as ModalConfirmMessage['data'], id, overrides});\n },\n showAlert: (data: AlertMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'alert', data: nextData as AlertMessage['data'], id, overrides});\n },\n showNotification: (data: NotificationMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'notification', data: nextData as NotificationMessage['data'], id, overrides});\n },\n messageToParent: (data: SimpleMessage['data']) => {\n const id = Date.now().toString();\n dispatch?.({type: 'message', data, id});\n },\n navigateToPanel: (data: NavigateToPanelMessage['data']) => {\n dispatch?.({type: 'navigate-to-panel', data});\n },\n closePanel: (data: ClosePanelMessage['data']) => {\n dispatch?.({type: 'close-panel', data});\n },\n navigateToIframe: (data: NavigateToIframeMessage['data']) => {\n dispatch?.({type: 'navigate-to-iframe', data});\n },\n messageToPanel: (data: MessageToPanelMessage['data']) => {\n dispatch?.({type: 'message-to-panel', data});\n },\n openFlapPanel: (data: OpenFlapPanelMessage['data']) => {\n dispatch?.({type: 'open-flap-panel', data});\n },\n closeFlapPanel: () => {\n dispatch?.({type: 'close-flap-panel'});\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"messageHandlers.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/messageHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type MutableRefObject} from 'react';\nimport {\n type AlertMessage,\n type CallbackFunction,\n type Callbacks,\n type CallCbFunction,\n type ClosePanelMessage,\n type IEncodedMessage,\n type IUseIFrameMessengerOptions,\n type Message,\n type MessageDispatcher,\n type MessageHandler,\n type MessageToPanelMessage,\n type ModalConfirmMessage,\n type NavigateToIframeMessage,\n type NavigateToPanelMessage,\n type NotificationMessage,\n packetId,\n type SimpleMessage,\n type OpenFlapPanelMessage,\n type GetPanelConfigMessage,\n} from './types';\n\nexport const encodeMessage = (message: Message): string =>\n JSON.stringify({\n payload: JSON.stringify(message),\n [packetId]: true,\n });\n\nexport const decodeMessage = (raw: string): Message | undefined => {\n try {\n const decoded: IEncodedMessage = JSON.parse(raw) as unknown as IEncodedMessage;\n if (packetId in decoded && decoded[packetId] === true) {\n return JSON.parse(decoded.payload) as Message;\n }\n } catch (e) {\n return undefined;\n }\n return undefined;\n};\n\nconst getCallback = (path: string, callbacksList?: MutableRefObject<Callbacks>): CallbackFunction | null => {\n if (!callbacksList?.current) {\n return null;\n }\n const pathArray = path.split('.');\n let callback: CallbackFunction | Callbacks | Record<string, CallbackFunction> = callbacksList.current;\n pathArray.forEach(part => (callback = (callback as Callbacks | Record<string, CallbackFunction>)?.[part]));\n return typeof callback === 'function' ? callback : null;\n};\n\nconst setCallbacks = (\n id: string,\n frameId: string,\n data: unknown,\n callCb: CallCbFunction,\n overrides?: string[],\n): unknown => {\n if (!overrides) {\n return data;\n }\n\n const nextData = {...(data as Record<string, unknown>)};\n overrides.forEach((key: string) => {\n nextData[key] = (...args: unknown[]) => {\n callCb(`${id}.${key}`, args, frameId);\n };\n });\n return nextData;\n};\n\nexport const initClientHandlers: (\n callCb: CallCbFunction,\n options?: IUseIFrameMessengerOptions,\n callbacksList?: MutableRefObject<Callbacks>,\n) => MessageHandler = (callCb, options, callbacksList) => (message, dispatch) => {\n switch (message.type) {\n case 'modal-confirm':\n options?.handlers?.onModalConfirm?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as ModalConfirmMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'alert':\n options?.handlers?.onAlert?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as AlertMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'notification':\n options?.handlers?.onNotification?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as NotificationMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n case 'message':\n options?.handlers?.onMessage?.(message.data, message.id, dispatch, callCb);\n break;\n case 'on-call-callback':\n // TODO How to know if handler can be removed from callbacksList ?\n getCallback(message.path, callbacksList)?.(...(message.data as never[]));\n break;\n case 'navigate-to-panel':\n options?.handlers?.onNavigateToPanel?.(message.data);\n break;\n case 'close-panel':\n options?.handlers?.onClosePanel?.(message.data);\n break;\n case 'navigate-to-iframe':\n options?.handlers?.onNavigateToIframe?.(message.data);\n break;\n case 'open-flap-panel':\n options?.handlers?.onOpenFlapPanel?.(message.data);\n break;\n case 'close-flap-panel':\n options?.handlers?.onCloseFlapPanel?.();\n break;\n case 'get-panel-config':\n options?.handlers?.onGetPanelConfig?.(\n setCallbacks(\n message.id,\n message.__frameId,\n message.data,\n callCb,\n message.overrides,\n ) as GetPanelConfigMessage['data'],\n message.id,\n dispatch,\n callCb,\n );\n break;\n default:\n break;\n }\n};\n\nconst storeCallbacks = (\n data: unknown,\n id: string,\n callbacksStore: MutableRefObject<Callbacks>,\n): {data: unknown; overrides: string[]} => {\n const nextData = {...(data as Record<string, unknown>)};\n const overrides: string[] = [];\n Object.entries(nextData).forEach(([key, value]) => {\n if (typeof value === 'function') {\n callbacksStore.current[id] = {\n ...callbacksStore.current[id],\n [key]: value as CallbackFunction,\n };\n overrides.push(key);\n }\n });\n return {data: nextData, overrides};\n};\n\nexport const getExposedMethods = (callbacksStore: MutableRefObject<Callbacks>, dispatch?: MessageDispatcher) => ({\n showModalConfirm: (data: ModalConfirmMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'modal-confirm', data: nextData as ModalConfirmMessage['data'], id, overrides});\n },\n showAlert: (data: AlertMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'alert', data: nextData as AlertMessage['data'], id, overrides});\n },\n showNotification: (data: NotificationMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'notification', data: nextData as NotificationMessage['data'], id, overrides});\n },\n messageToParent: (data: SimpleMessage['data']) => {\n const id = Date.now().toString();\n dispatch?.({type: 'message', data, id});\n },\n navigateToPanel: (data: NavigateToPanelMessage['data']) => {\n dispatch?.({type: 'navigate-to-panel', data});\n },\n closePanel: (data: ClosePanelMessage['data']) => {\n dispatch?.({type: 'close-panel', data});\n },\n navigateToIframe: (data: NavigateToIframeMessage['data']) => {\n dispatch?.({type: 'navigate-to-iframe', data});\n },\n messageToPanel: (data: MessageToPanelMessage['data']) => {\n dispatch?.({type: 'message-to-panel', data});\n },\n openFlapPanel: (data: OpenFlapPanelMessage['data']) => {\n dispatch?.({type: 'open-flap-panel', data});\n },\n closeFlapPanel: () => {\n dispatch?.({type: 'close-flap-panel'});\n },\n getPanelConfig: (data: GetPanelConfigMessage['data']) => {\n const id = Date.now().toString();\n const {data: nextData, overrides} = storeCallbacks(data, id, callbacksStore);\n dispatch?.({type: 'get-panel-config', data: nextData as GetPanelConfigMessage['data'], id, overrides});\n },\n});\n"]}
|
|
@@ -33,11 +33,12 @@ export declare const basePanelSchema: z.ZodObject<{
|
|
|
33
33
|
icon: z.ZodOptional<z.ZodString>;
|
|
34
34
|
name: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
35
35
|
isStandalone: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
-
|
|
36
|
+
hideInCompactMode: z.ZodOptional<z.ZodBoolean>;
|
|
37
37
|
}, z.core.$strip>;
|
|
38
38
|
export declare const iframePanelSchema: z.ZodObject<{
|
|
39
39
|
type: z.ZodLiteral<"custom">;
|
|
40
40
|
iframeSource: z.ZodString;
|
|
41
|
+
viewId: z.ZodOptional<z.ZodString>;
|
|
41
42
|
isSelfContaining: z.ZodOptional<z.ZodBoolean>;
|
|
42
43
|
}, z.core.$strip>;
|
|
43
44
|
export declare const creationPanelSchema: z.ZodObject<{
|
|
@@ -82,7 +83,7 @@ export declare const PanelSchema: z.ZodIntersection<z.ZodObject<{
|
|
|
82
83
|
icon: z.ZodOptional<z.ZodString>;
|
|
83
84
|
name: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
84
85
|
isStandalone: z.ZodOptional<z.ZodBoolean>;
|
|
85
|
-
|
|
86
|
+
hideInCompactMode: z.ZodOptional<z.ZodBoolean>;
|
|
86
87
|
}, z.core.$strip>, z.ZodUnion<readonly [z.ZodIntersection<z.ZodObject<{
|
|
87
88
|
type: z.ZodLiteral<"explorer">;
|
|
88
89
|
viewId: z.ZodOptional<z.ZodString>;
|
|
@@ -129,6 +130,7 @@ export declare const PanelSchema: z.ZodIntersection<z.ZodObject<{
|
|
|
129
130
|
}, z.core.$strip>]>>, z.ZodObject<{
|
|
130
131
|
type: z.ZodLiteral<"custom">;
|
|
131
132
|
iframeSource: z.ZodString;
|
|
133
|
+
viewId: z.ZodOptional<z.ZodString>;
|
|
132
134
|
isSelfContaining: z.ZodOptional<z.ZodBoolean>;
|
|
133
135
|
}, z.core.$strip>, z.ZodObject<{
|
|
134
136
|
type: z.ZodLiteral<"editionForm">;
|
|
@@ -144,9 +146,10 @@ export declare const PanelIFrameSchema: z.ZodIntersection<z.ZodObject<{
|
|
|
144
146
|
icon: z.ZodOptional<z.ZodString>;
|
|
145
147
|
name: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
146
148
|
isStandalone: z.ZodOptional<z.ZodBoolean>;
|
|
147
|
-
|
|
149
|
+
hideInCompactMode: z.ZodOptional<z.ZodBoolean>;
|
|
148
150
|
}, z.core.$strip>, z.ZodObject<{
|
|
149
151
|
type: z.ZodLiteral<"custom">;
|
|
150
152
|
iframeSource: z.ZodString;
|
|
153
|
+
viewId: z.ZodOptional<z.ZodString>;
|
|
151
154
|
isSelfContaining: z.ZodOptional<z.ZodBoolean>;
|
|
152
155
|
}, z.core.$strip>>;
|
|
@@ -44,11 +44,12 @@ export const basePanelSchema = z.object({
|
|
|
44
44
|
icon: FontAwesomeIconSchema,
|
|
45
45
|
name: z.record(LanguageSchema, z.string()).optional(),
|
|
46
46
|
isStandalone: z.boolean().optional(),
|
|
47
|
-
|
|
47
|
+
hideInCompactMode: z.boolean().optional(),
|
|
48
48
|
});
|
|
49
49
|
export const iframePanelSchema = z.object({
|
|
50
50
|
type: z.literal('custom'),
|
|
51
51
|
iframeSource: z.string(),
|
|
52
|
+
viewId: z.string().optional(),
|
|
52
53
|
isSelfContaining: z.boolean().optional(),
|
|
53
54
|
});
|
|
54
55
|
const editionPanelSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/schema.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport * as z from 'zod/v4';\n\nexport const FONT_AWESOME_ICON_REGEX = /^fa-/;\n\nexport const PanelIdSchema = z.string();\nexport const LanguageSchema = z.string();\nexport const LibraryIdSchema = z.string();\nexport const FontAwesomeIconSchema = z.string().regex(FONT_AWESOME_ICON_REGEX).optional();\n\nexport const WhereSchema = z.union([z.literal('popup'), z.literal('slider'), z.literal('fullpage')]);\n\nexport const FlapPanelIdSchema = z.union([z.literal('info-history'), z.literal('thread')]);\n\nexport const ExplorerPropsSchema = z.object({\n showSearch: z.boolean().optional(),\n showFilters: z.boolean().optional(),\n showSorts: z.boolean().optional(),\n freezeView: z.boolean().optional(),\n showAttributeLabels: z.boolean().optional(),\n creationFormId: z.string().optional(),\n noPagination: z.literal(true).optional(),\n showActionsLabels: z.boolean().optional(),\n defaultPrimaryActions: z.array(z.union([z.literal('create')])).optional(),\n defaultMassActions: z\n .array(z.union([z.literal('deactivate'), z.literal('export'), z.literal('editAttribute')]))\n .optional(),\n defaultActionsForItem: z\n .array(z.union([z.literal('replaceLink'), z.literal('remove'), z.literal('activate')]))\n .optional(),\n});\n\nexport const ItemActionsSchema = z\n .array(\n z.object({\n where: WhereSchema,\n what: z.literal('record'),\n targetPanelId: PanelIdSchema.optional(),\n targetFlapPanelId: FlapPanelIdSchema.optional(),\n icon: FontAwesomeIconSchema,\n label: z.record(LanguageSchema, z.string()),\n onRowClick: z.boolean().optional(),\n }),\n )\n .refine(actions => actions.reduce((acc, action) => (action.onRowClick ? acc + 1 : acc), 0) <= 1, {\n message: 'At most one action must have onRowClick set to true',\n });\n\nexport const basePanelSchema = z.object({\n id: PanelIdSchema,\n icon: FontAwesomeIconSchema,\n name: z.record(LanguageSchema, z.string()).optional(),\n isStandalone: z.boolean().optional(),\n hideInCompactMode: z.boolean().optional(),\n});\n\nexport const iframePanelSchema = z.object({\n type: z.literal('custom'),\n iframeSource: z.string(),\n viewId: z.string().optional(),\n isSelfContaining: z.boolean().optional(),\n});\n\nconst editionPanelSchema = z.object({\n type: z.literal('editionForm'),\n formId: z.string(),\n});\n\nexport const creationPanelSchema = z.object({\n type: z.literal('creationForm'),\n formId: z.string(),\n attributeSource: z.string(),\n isStandalone: z.literal(true),\n});\n\nexport const baseExplorerPanelSchema = z.object({\n type: z.literal('explorer'),\n viewId: z.string().optional(),\n actions: ItemActionsSchema,\n});\n\nexport const attributeExplorerPanelSchema = z.object({\n attributeSource: z.string(),\n deactivateOnUnlink: z.boolean().optional(),\n libraryId: LibraryIdSchema,\n explorerProps: ExplorerPropsSchema.optional(),\n});\n\nconst libraryExplorerPanelSchema = z.object({\n explorerProps: ExplorerPropsSchema.optional(),\n});\n\nconst explorerPanelSchema = baseExplorerPanelSchema.and(\n z.union([attributeExplorerPanelSchema, libraryExplorerPanelSchema]),\n);\n\nexport const PanelSchema = basePanelSchema.and(\n z.union([explorerPanelSchema, iframePanelSchema, editionPanelSchema, creationPanelSchema]),\n);\n\nexport const PanelIFrameSchema = basePanelSchema.and(iframePanelSchema);\n"]}
|
|
@@ -55,7 +55,7 @@ export type AttributeExplorerPanel = Panel & z.infer<typeof baseExplorerPanelSch
|
|
|
55
55
|
export type LibraryId = z.infer<typeof LibraryIdSchema>;
|
|
56
56
|
export type PanelId = z.infer<typeof PanelIdSchema>;
|
|
57
57
|
export type Where = z.infer<typeof WhereSchema>;
|
|
58
|
-
type PanelIFrame = z.infer<typeof PanelIFrameSchema>;
|
|
58
|
+
export type PanelIFrame = z.infer<typeof PanelIFrameSchema>;
|
|
59
59
|
type FlapPanelId = z.infer<typeof FlapPanelIdSchema>;
|
|
60
60
|
export type NavigateToPanelMessage = IMessageBase & {
|
|
61
61
|
type: 'navigate-to-panel';
|
|
@@ -108,7 +108,16 @@ export type OpenFlapPanelMessage = IMessageBase & {
|
|
|
108
108
|
export type CloseFlapPanelMessage = IMessageBase & {
|
|
109
109
|
type: 'close-flap-panel';
|
|
110
110
|
};
|
|
111
|
-
export type
|
|
111
|
+
export type GetPanelConfigMessage = IMessageBase & {
|
|
112
|
+
type: 'get-panel-config';
|
|
113
|
+
id: string;
|
|
114
|
+
data: {
|
|
115
|
+
panelId?: string;
|
|
116
|
+
onGetPanelConfig: (data: PanelIFrame) => void;
|
|
117
|
+
};
|
|
118
|
+
overrides?: string[];
|
|
119
|
+
};
|
|
120
|
+
export type MessageToParent = ModalConfirmMessage | AlertMessage | NotificationMessage | SimpleMessage | RegisterMessage | UnregisterMessage | NavigateToPanelMessage | ClosePanelMessage | NavigateToIframeMessage | MessageToPanelMessage | OpenFlapPanelMessage | CloseFlapPanelMessage | GetPanelConfigMessage;
|
|
112
121
|
export type MessageFromParent = (IMessageBase & {
|
|
113
122
|
type: 'on-call-callback';
|
|
114
123
|
path: string;
|
|
@@ -134,6 +143,7 @@ export interface IUseIFrameMessengerOptions {
|
|
|
134
143
|
onClosePanel?: (data: ClosePanelMessage['data']) => void;
|
|
135
144
|
onNavigateToIframe?: (data: NavigateToIframeMessage['data']) => void;
|
|
136
145
|
onOpenFlapPanel?: (data: OpenFlapPanelMessage['data']) => void;
|
|
146
|
+
onGetPanelConfig?: (data: GetPanelConfigMessage['data'], id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;
|
|
137
147
|
onCloseFlapPanel?: () => void;
|
|
138
148
|
};
|
|
139
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/types.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type RefObject, type ComponentProps, type Key, type JSXElementConstructor} from 'react';\nimport type * as z from 'zod/v4';\nimport {type KitNotification} from 'aristid-ds';\nimport {type IKitConfirmDialog} from 'aristid-ds/dist/Kit/Feedback/Modal/types';\nimport {type ToastedAlertProps} from 'aristid-ds/dist/Kit/Feedback/Alert/types';\nimport {\n type LibraryIdSchema,\n type WhereSchema,\n type PanelIdSchema,\n type PanelSchema,\n type PanelIFrameSchema,\n type FlapPanelIdSchema,\n type attributeExplorerPanelSchema,\n type baseExplorerPanelSchema,\n} from '_ui/hooks/useIFrameMessenger/schema';\n\nexport const packetId = '__fromIframeMessenger';\n\nexport interface IEncodedMessage {\n payload: string;\n [packetId]: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComponentPropsWithKey<T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>> =\n ComponentProps<T> & {\n key?: Key;\n };\n\nexport interface IMessageBase {\n __frameId?: string;\n}\n\nexport type ModalConfirmMessage = IMessageBase & {\n type: 'modal-confirm';\n id: string;\n data: IKitConfirmDialog;\n overrides?: string[];\n};\n\nexport type AlertMessage = IMessageBase & {\n type: 'alert';\n id: string;\n data: ToastedAlertProps;\n overrides?: string[];\n};\n\nexport type NotificationMessage = IMessageBase & {\n type: 'notification';\n id: string;\n data: ComponentPropsWithKey<typeof KitNotification>;\n overrides?: string[];\n};\n\nexport type ChangeLanguageMessage = IMessageBase & {\n type: 'change-language';\n language: string;\n};\n\nexport type SimpleMessage = IMessageBase & {\n type: 'message';\n id: string;\n data: unknown;\n};\n\nexport type RegisterMessage = IMessageBase & {\n type: 'register';\n id: string;\n};\n\nexport type UnregisterMessage = IMessageBase & {\n type: 'unregister';\n id: string;\n};\n\nexport type Panel = z.infer<typeof PanelSchema>;\n\nexport type AttributeExplorerPanel = Panel &\n z.infer<typeof baseExplorerPanelSchema> &\n z.infer<typeof attributeExplorerPanelSchema>;\n\nexport type LibraryId = z.infer<typeof LibraryIdSchema>;\n\nexport type PanelId = z.infer<typeof PanelIdSchema>;\n\nexport type Where = z.infer<typeof WhereSchema>;\n\
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/types.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type RefObject, type ComponentProps, type Key, type JSXElementConstructor} from 'react';\nimport type * as z from 'zod/v4';\nimport {type KitNotification} from 'aristid-ds';\nimport {type IKitConfirmDialog} from 'aristid-ds/dist/Kit/Feedback/Modal/types';\nimport {type ToastedAlertProps} from 'aristid-ds/dist/Kit/Feedback/Alert/types';\nimport {\n type LibraryIdSchema,\n type WhereSchema,\n type PanelIdSchema,\n type PanelSchema,\n type PanelIFrameSchema,\n type FlapPanelIdSchema,\n type attributeExplorerPanelSchema,\n type baseExplorerPanelSchema,\n} from '_ui/hooks/useIFrameMessenger/schema';\n\nexport const packetId = '__fromIframeMessenger';\n\nexport interface IEncodedMessage {\n payload: string;\n [packetId]: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComponentPropsWithKey<T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>> =\n ComponentProps<T> & {\n key?: Key;\n };\n\nexport interface IMessageBase {\n __frameId?: string;\n}\n\nexport type ModalConfirmMessage = IMessageBase & {\n type: 'modal-confirm';\n id: string;\n data: IKitConfirmDialog;\n overrides?: string[];\n};\n\nexport type AlertMessage = IMessageBase & {\n type: 'alert';\n id: string;\n data: ToastedAlertProps;\n overrides?: string[];\n};\n\nexport type NotificationMessage = IMessageBase & {\n type: 'notification';\n id: string;\n data: ComponentPropsWithKey<typeof KitNotification>;\n overrides?: string[];\n};\n\nexport type ChangeLanguageMessage = IMessageBase & {\n type: 'change-language';\n language: string;\n};\n\nexport type SimpleMessage = IMessageBase & {\n type: 'message';\n id: string;\n data: unknown;\n};\n\nexport type RegisterMessage = IMessageBase & {\n type: 'register';\n id: string;\n};\n\nexport type UnregisterMessage = IMessageBase & {\n type: 'unregister';\n id: string;\n};\n\nexport type Panel = z.infer<typeof PanelSchema>;\n\nexport type AttributeExplorerPanel = Panel &\n z.infer<typeof baseExplorerPanelSchema> &\n z.infer<typeof attributeExplorerPanelSchema>;\n\nexport type LibraryId = z.infer<typeof LibraryIdSchema>;\n\nexport type PanelId = z.infer<typeof PanelIdSchema>;\n\nexport type Where = z.infer<typeof WhereSchema>;\n\nexport type PanelIFrame = z.infer<typeof PanelIFrameSchema>;\n\ntype FlapPanelId = z.infer<typeof FlapPanelIdSchema>;\n\nexport type NavigateToPanelMessage = IMessageBase & {\n type: 'navigate-to-panel';\n data: {\n where: Where;\n libraryId: LibraryId;\n panelId?: PanelId;\n recordId?: string;\n flapRecordId?: string;\n flapLibraryId?: LibraryId;\n flapPanelId?: FlapPanelId;\n };\n};\n\nexport type ClosePanelMessage = IMessageBase & {\n type: 'close-panel';\n data: {\n recordId: string;\n where: string;\n recordPanelId: string;\n };\n};\n\nexport type NavigateToIframeMessage = IMessageBase & {\n type: 'navigate-to-iframe';\n data: {\n panel: PanelIFrame;\n destination: {libraryId: LibraryId};\n where: Where;\n recordId: string;\n recordPanelId: string;\n };\n};\n\nexport type MessageToPanelMessage = IMessageBase & {\n type: 'message-to-panel';\n data: {\n type: string;\n target?: string;\n payload: unknown;\n };\n};\n\nexport type OpenFlapPanelMessage = IMessageBase & {\n type: 'open-flap-panel';\n data: {\n flapRecordId: string;\n flapLibraryId: LibraryId;\n flapPanelId: FlapPanelId;\n };\n};\n\nexport type CloseFlapPanelMessage = IMessageBase & {\n type: 'close-flap-panel';\n};\n\nexport type GetPanelConfigMessage = IMessageBase & {\n type: 'get-panel-config';\n id: string;\n data: {\n panelId?: string;\n onGetPanelConfig: (data: PanelIFrame) => void;\n };\n overrides?: string[];\n};\n\nexport type MessageToParent =\n | ModalConfirmMessage\n | AlertMessage\n | NotificationMessage\n | SimpleMessage\n | RegisterMessage\n | UnregisterMessage\n | NavigateToPanelMessage\n | ClosePanelMessage\n | NavigateToIframeMessage\n | MessageToPanelMessage\n | OpenFlapPanelMessage\n | CloseFlapPanelMessage\n | GetPanelConfigMessage;\n\nexport type MessageFromParent =\n | (IMessageBase & {\n type: 'on-call-callback';\n path: string;\n data: unknown;\n })\n | ChangeLanguageMessage;\n\nexport type Message = MessageToParent | MessageFromParent;\n\nexport type MessageHandler<T = Message> = (message: T, dispatch: MessageDispatcher<T>) => void;\nexport type MessageDispatcher<T = Message> = (message: T, frameId?: string) => void;\n\nexport type CallCbFunction = (path: string, data: unknown, frameId: string) => void;\n\nexport type CallbackFunction = (...args: never[]) => void;\nexport type Callbacks = Record<string, Record<string, CallbackFunction>>;\n\nexport type MessageToPanelMessageHandler = (data: MessageToPanelMessage['data']['payload']) => void;\nexport type AddMessageToPanelMessageHandler = (type: string, handler: MessageToPanelMessageHandler) => void;\n\nexport interface IUseIFrameMessengerOptions {\n ref?: RefObject<HTMLIFrameElement>;\n id?: string;\n handlers?: {\n onModalConfirm?: (\n data: ModalConfirmMessage['data'],\n id: string,\n dispatch: MessageDispatcher,\n callCb: CallCbFunction,\n ) => void;\n onAlert?: (data: AlertMessage['data'], id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;\n onNotification?: (\n data: NotificationMessage['data'],\n id: string,\n dispatch: MessageDispatcher,\n callCb: CallCbFunction,\n ) => void;\n onMessage?: (data: unknown, id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;\n onNavigateToPanel?: (data: NavigateToPanelMessage['data']) => void;\n onClosePanel?: (data: ClosePanelMessage['data']) => void;\n onNavigateToIframe?: (data: NavigateToIframeMessage['data']) => void;\n onOpenFlapPanel?: (data: OpenFlapPanelMessage['data']) => void;\n onGetPanelConfig?: (\n data: GetPanelConfigMessage['data'],\n id: string,\n dispatch: MessageDispatcher,\n callCb: CallCbFunction,\n ) => void;\n onCloseFlapPanel?: () => void;\n };\n}\n"]}
|
|
@@ -18,4 +18,5 @@ export declare const useIFrameMessenger: (options?: IUseIFrameMessengerOptions)
|
|
|
18
18
|
messageToPanel: (data: import("./types").MessageToPanelMessage["data"]) => void;
|
|
19
19
|
openFlapPanel: (data: import("./types").OpenFlapPanelMessage["data"]) => void;
|
|
20
20
|
closeFlapPanel: () => void;
|
|
21
|
+
getPanelConfig: (data: import("./types").GetPanelConfigMessage["data"]) => void;
|
|
21
22
|
};
|
|
@@ -53,6 +53,16 @@ export const useIFrameMessenger = (options) => {
|
|
|
53
53
|
changeLangInAllFrames,
|
|
54
54
|
addPanelMessageHandler,
|
|
55
55
|
});
|
|
56
|
+
const getPanelIdFromEvent = (event) => {
|
|
57
|
+
const iFrames = window.document.getElementsByTagName('iframe');
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
59
|
+
for (let i = 0; i < iFrames.length; i++) {
|
|
60
|
+
if (event.source === iFrames[i].contentWindow) {
|
|
61
|
+
return iFrames[i].name;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
};
|
|
56
66
|
useEffect(() => {
|
|
57
67
|
const clientHandlers = initClientHandlers(callCb, { ...options, id: selfId.current }, callbacksStore);
|
|
58
68
|
const onMessage = (event) => {
|
|
@@ -83,6 +93,11 @@ export const useIFrameMessenger = (options) => {
|
|
|
83
93
|
dispatch(message, target);
|
|
84
94
|
}
|
|
85
95
|
break;
|
|
96
|
+
case 'get-panel-config':
|
|
97
|
+
clientHandlers({
|
|
98
|
+
...message,
|
|
99
|
+
data: { ...message.data, panelId: getPanelIdFromEvent(event) },
|
|
100
|
+
}, dispatch);
|
|
86
101
|
default:
|
|
87
102
|
if (message.type === 'change-language') {
|
|
88
103
|
setLang(message.language);
|