@leav/ui 1.7.0 → 1.8.0-73498354

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 (122) hide show
  1. package/dist/__mocks__/common/library.d.ts +1 -0
  2. package/dist/_gqlTypes/index.d.ts +317 -113
  3. package/dist/_gqlTypes/index.js +142 -53
  4. package/dist/_gqlTypes/index.js.map +1 -1
  5. package/dist/_queries/attributes/attributeDetailsFragment.js +3 -0
  6. package/dist/_queries/attributes/attributeDetailsFragment.js.map +1 -1
  7. package/dist/_queries/attributes/getAttributeWithEmbeddedFields.d.ts +1 -1
  8. package/dist/_queries/libraries/libraryDetailsFragment.js +1 -0
  9. package/dist/_queries/libraries/libraryDetailsFragment.js.map +1 -1
  10. package/dist/components/AttributePicker/AttributesList/AttributesList.js +3 -7
  11. package/dist/components/AttributePicker/AttributesList/AttributesList.js.map +1 -1
  12. package/dist/components/EditLibraryModal/EditLibrary/EditLibraryAttributes/AttributesList/AttributesList.js +3 -7
  13. package/dist/components/EditLibraryModal/EditLibrary/EditLibraryAttributes/AttributesList/AttributesList.js.map +1 -1
  14. package/dist/components/Explorer/TableCell.js +9 -16
  15. package/dist/components/Explorer/TableCell.js.map +1 -1
  16. package/dist/components/Explorer/manage-view-settings/configure-display/view-type/SelectViewType.js +2 -2
  17. package/dist/components/Explorer/manage-view-settings/configure-display/view-type/SelectViewType.js.map +1 -1
  18. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js +3 -0
  19. package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js.map +1 -1
  20. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js +2 -2
  21. package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js.map +1 -1
  22. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js +17 -8
  23. package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js.map +1 -1
  24. package/dist/components/Filters/_types.d.ts +12 -1
  25. package/dist/components/Filters/_types.js +2 -1
  26. package/dist/components/Filters/_types.js.map +1 -1
  27. package/dist/components/Filters/context/filtersReducer.js +3 -2
  28. package/dist/components/Filters/context/filtersReducer.js.map +1 -1
  29. package/dist/components/Filters/context/useGetTreeFilters.d.ts +8 -6
  30. package/dist/components/Filters/context/useGetTreeFilters.js +41 -18
  31. package/dist/components/Filters/context/useGetTreeFilters.js.map +1 -1
  32. package/dist/components/Filters/filter-items/CommonFilterItem.js +3 -3
  33. package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
  34. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js +1 -1
  35. package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js.map +1 -1
  36. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js +6 -2
  37. package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js.map +1 -1
  38. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js +4 -4
  39. package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js.map +1 -1
  40. package/dist/components/Filters/filter-items/filter-type/_types.d.ts +6 -1
  41. package/dist/components/Filters/filter-items/filter-type/_types.js.map +1 -1
  42. package/dist/components/Filters/filter-items/filter-type/smart-filter/SmartFilterAttributeDropdown.d.ts +2 -0
  43. package/dist/components/Filters/filter-items/filter-type/smart-filter/SmartFilterAttributeDropdown.js +106 -0
  44. package/dist/components/Filters/filter-items/filter-type/smart-filter/SmartFilterAttributeDropdown.js.map +1 -0
  45. package/dist/components/Filters/filter-items/filter-type/smart-filter/useGetSmartFilterData.d.ts +25 -0
  46. package/dist/components/Filters/filter-items/filter-type/smart-filter/useGetSmartFilterData.js +59 -0
  47. package/dist/components/Filters/filter-items/filter-type/smart-filter/useGetSmartFilterData.js.map +1 -0
  48. package/dist/components/Filters/filter-items/filter-type/smart-filter/useSmartFilerSearch.d.ts +5 -0
  49. package/dist/components/Filters/filter-items/filter-type/smart-filter/useSmartFilerSearch.js +25 -0
  50. package/dist/components/Filters/filter-items/filter-type/smart-filter/useSmartFilerSearch.js.map +1 -0
  51. package/dist/components/Filters/filter-items/filter-type/{TreeAttributeDropDown.d.ts → tree/TreeAttributeDropDown.d.ts} +1 -1
  52. package/dist/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.js +131 -0
  53. package/dist/components/Filters/filter-items/filter-type/tree/TreeAttributeDropDown.js.map +1 -0
  54. package/dist/components/Filters/filter-items/filter-type/tree/useGetTreeData.d.ts +20 -0
  55. package/dist/components/Filters/filter-items/filter-type/tree/useGetTreeData.js +72 -0
  56. package/dist/components/Filters/filter-items/filter-type/tree/useGetTreeData.js.map +1 -0
  57. package/dist/components/Filters/filter-items/filter-type/tree/useTreesSearch.d.ts +7 -0
  58. package/dist/components/Filters/filter-items/filter-type/tree/useTreesSearch.js +36 -0
  59. package/dist/components/Filters/filter-items/filter-type/tree/useTreesSearch.js.map +1 -0
  60. package/dist/components/Filters/filter-items/filter-type/tree/utils/buildFlattenTreeMap.d.ts +2 -0
  61. package/dist/components/Filters/filter-items/filter-type/tree/utils/buildFlattenTreeMap.js +14 -0
  62. package/dist/components/Filters/filter-items/filter-type/tree/utils/buildFlattenTreeMap.js.map +1 -0
  63. package/dist/components/Filters/filter-items/filter-type/tree/utils/filterTreeByPermission.d.ts +2 -0
  64. package/dist/components/Filters/filter-items/filter-type/tree/utils/filterTreeByPermission.js +15 -0
  65. package/dist/components/Filters/filter-items/filter-type/tree/utils/filterTreeByPermission.js.map +1 -0
  66. package/dist/components/Filters/filter-items/filter-type/tree/utils/getSelectAllState.d.ts +5 -0
  67. package/dist/components/Filters/filter-items/filter-type/tree/utils/getSelectAllState.js +17 -0
  68. package/dist/components/Filters/filter-items/filter-type/tree/utils/getSelectAllState.js.map +1 -0
  69. package/dist/components/Filters/filter-items/{EmptyValueCheckbox.d.ts → shared/EmptyValueCheckbox.d.ts} +2 -1
  70. package/dist/components/Filters/filter-items/shared/EmptyValueCheckbox.js +20 -0
  71. package/dist/components/Filters/filter-items/shared/EmptyValueCheckbox.js.map +1 -0
  72. package/dist/components/Filters/filter-items/shared/FilterTreeNodeTitle.d.ts +5 -0
  73. package/dist/components/Filters/filter-items/shared/FilterTreeNodeTitle.js +18 -0
  74. package/dist/components/Filters/filter-items/shared/FilterTreeNodeTitle.js.map +1 -0
  75. package/dist/components/Filters/filter-items/shared/SelectAllCheckbox.d.ts +8 -0
  76. package/dist/components/Filters/filter-items/shared/SelectAllCheckbox.js +22 -0
  77. package/dist/components/Filters/filter-items/shared/SelectAllCheckbox.js.map +1 -0
  78. package/dist/components/Filters/prepareFiltersForRequest.js +10 -5
  79. package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
  80. package/dist/components/Filters/useFilters.d.ts +542 -0
  81. package/dist/components/Filters/useTransformFilters.js +3 -0
  82. package/dist/components/Filters/useTransformFilters.js.map +1 -1
  83. package/dist/components/LibraryItemsList/hooks/useSearchReducer/_types.d.ts +2 -2
  84. package/dist/components/LibraryItemsList/hooks/useSearchReducer/_types.js.map +1 -1
  85. package/dist/components/LibraryItemsList/hooks/useSearchReducer/searchReducer.d.ts +2 -2
  86. package/dist/components/LibraryItemsList/hooks/useSearchReducer/searchReducer.js.map +1 -1
  87. package/dist/components/LibraryItemsList/hooks/useSearchReducer/useSearchReducer.d.ts +1 -1
  88. package/dist/components/Notifications/hooks/useNotificationSubscription.d.ts +9 -3
  89. package/dist/components/Notifications/hooks/useNotificationSubscription.js +2 -2
  90. package/dist/components/Notifications/hooks/useNotificationSubscription.js.map +1 -1
  91. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js +2 -0
  92. package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
  93. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js +4 -1
  94. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js.map +1 -1
  95. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js +1 -1
  96. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.js.map +1 -1
  97. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.js +2 -0
  98. package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.js.map +1 -1
  99. package/dist/components/RecordHistory/RecordHistoryLogEntry.js +10 -2
  100. package/dist/components/RecordHistory/RecordHistoryLogEntry.js.map +1 -1
  101. package/dist/components/RecordHistory/_queries/recordHistoryQuery.d.ts +7 -0
  102. package/dist/components/RecordHistory/_queries/recordHistoryQuery.js +64 -0
  103. package/dist/components/RecordHistory/_queries/recordHistoryQuery.js.map +1 -0
  104. package/dist/components/RecordHistory/hooks/useFetchRecordHistory.js +5 -2
  105. package/dist/components/RecordHistory/hooks/useFetchRecordHistory.js.map +1 -1
  106. package/dist/components/RecordHistory/utils/extendedAttribute.d.ts +13 -0
  107. package/dist/components/RecordHistory/utils/extendedAttribute.js +40 -0
  108. package/dist/components/RecordHistory/utils/extendedAttribute.js.map +1 -0
  109. package/dist/components/SelectTreeNode/TreeNodeTitle.js +2 -2
  110. package/dist/components/SelectTreeNode/TreeNodeTitle.js.map +1 -1
  111. package/dist/hooks/useGetLibraryDetailExtendedQuery/useGetLibraryDetailExtendedQuery.d.ts +1 -1
  112. package/dist/hooks/useGetRecordUpdatesSubscription/useGetRecordUpdatesSubscription.d.ts +9 -3
  113. package/dist/hooks/useGetRecordValuesQuery/useGetRecordValuesQuery.js.map +1 -1
  114. package/dist/locales/en/shared.json +6 -2
  115. package/dist/locales/fr/shared.json +6 -2
  116. package/dist/types/records.d.ts +1 -0
  117. package/dist/types/records.js.map +1 -1
  118. package/package.json +8 -8
  119. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +0 -16
  120. package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +0 -1
  121. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +0 -71
  122. package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +0 -1
@@ -1,71 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { RecordFilterCondition } from '../../../../_gqlTypes';
3
- import { SelectTreeNode } from '../../../../components/SelectTreeNode';
4
- import styled from 'styled-components';
5
- import { EmptyValueCheckbox } from '../EmptyValueCheckbox';
6
- const DivStyled = styled.div `
7
- max-height: 30rem;
8
- overflow: auto;
9
- `;
10
- export const TreeAttributeDropDown = ({ filter, onFilterChange, }) => {
11
- const selectedNodesIds = (filter.nodes ?? []).map(node => node.nodeId);
12
- const _handleOnCheckEmptyValue = (selected) => {
13
- onFilterChange({
14
- ...filter,
15
- withEmptyValues: selected,
16
- });
17
- };
18
- const _handleOnSelect = (node, selected) => {
19
- let newSelectedIds;
20
- if (selected) {
21
- newSelectedIds = [...selectedNodesIds, node.id];
22
- }
23
- else {
24
- newSelectedIds = selectedNodesIds.filter(selectedValue => selectedValue !== node.id);
25
- }
26
- onFilterChange({
27
- ...filter,
28
- nodes: newSelectedIds.map(id => ({ nodeId: id, libraryId: node.record.whoAmI.library.id })),
29
- });
30
- };
31
- const _getRecursiveChildrenRecord = (nodes) => {
32
- const records = [];
33
- const collectRecordIdsRecursively = (nodeList) => {
34
- for (const node of nodeList) {
35
- if (node.id === filter.attribute.linkedTree?.id) {
36
- continue;
37
- }
38
- if (node.record) {
39
- records.push(node.record);
40
- }
41
- if (node.children && node.children.length > 0) {
42
- collectRecordIdsRecursively(node.children);
43
- }
44
- }
45
- };
46
- collectRecordIdsRecursively(nodes);
47
- // Delete duplicates
48
- return Array.from(new Set(records));
49
- };
50
- const _getRecursiveFieldsFromLibraries = (nodes) => nodes
51
- .filter(node => !!node.record?.whoAmI?.library?.id)
52
- .map(node => `${filter.attribute.id}.${node.record?.whoAmI?.library?.id}.id`);
53
- const _handleOnCheck = (selection) => {
54
- const newSelectedNodes = selection.filter(node => !node?.disabled);
55
- const records = _getRecursiveChildrenRecord(selection);
56
- const fields = _getRecursiveFieldsFromLibraries(selection);
57
- onFilterChange({
58
- ...filter,
59
- nodes: newSelectedNodes.map(node => ({
60
- nodeId: node.id,
61
- libraryId: node.record?.whoAmI.library.id ?? records[0]?.whoAmI.library.id ?? '',
62
- })),
63
- value: records.map(record => record.id),
64
- formattedValue: records.map(record => record.whoAmI.label).filter(Boolean),
65
- condition: RecordFilterCondition.EQUAL,
66
- field: fields,
67
- });
68
- };
69
- return (_jsxs(DivStyled, { children: [_jsx(EmptyValueCheckbox, { onSelect: _handleOnCheckEmptyValue, filter: filter }), _jsx(SelectTreeNode, { treeId: filter.attribute.linkedTree?.id ?? '', selectedNodes: selectedNodesIds, onSelect: _handleOnSelect, onCheck: _handleOnCheck, multiple: true, canSelectRoot: true, checkStrictly: false, checkable: true, loadRecursively: true, noPagination: true })] }));
70
- };
71
- //# sourceMappingURL=TreeAttributeDropDown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeAttributeDropDown.js","sourceRoot":"","sources":["../../../../../src/components/Filters/filter-items/filter-type/TreeAttributeDropDown.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 FunctionComponent} from 'react';\nimport {type IRecordIdentity, type ITreeNodeWithRecord} from '_ui/types';\nimport {RecordFilterCondition} from '_ui/_gqlTypes';\nimport {type IFilterChildrenTreeDropDownProps} from './_types';\nimport {SelectTreeNode} from '_ui/components/SelectTreeNode';\nimport styled from 'styled-components';\nimport {EmptyValueCheckbox} from '../EmptyValueCheckbox';\n\nconst DivStyled = styled.div`\n max-height: 30rem;\n overflow: auto;\n`;\n\nexport const TreeAttributeDropDown: FunctionComponent<IFilterChildrenTreeDropDownProps> = ({\n filter,\n onFilterChange,\n}) => {\n const selectedNodesIds = (filter.nodes ?? []).map(node => node.nodeId);\n\n const _handleOnCheckEmptyValue = (selected: boolean) => {\n onFilterChange({\n ...filter,\n withEmptyValues: selected,\n });\n };\n\n const _handleOnSelect = (node: ITreeNodeWithRecord, selected: boolean) => {\n let newSelectedIds: string[];\n if (selected) {\n newSelectedIds = [...selectedNodesIds, node.id];\n } else {\n newSelectedIds = selectedNodesIds.filter(selectedValue => selectedValue !== node.id);\n }\n onFilterChange({\n ...filter,\n nodes: newSelectedIds.map(id => ({nodeId: id, libraryId: node.record.whoAmI.library.id})),\n });\n };\n\n const _getRecursiveChildrenRecord = (nodes: ITreeNodeWithRecord[]): IRecordIdentity[] => {\n const records: IRecordIdentity[] = [];\n const collectRecordIdsRecursively = (nodeList: ITreeNodeWithRecord[]) => {\n for (const node of nodeList) {\n if (node.id === filter.attribute.linkedTree?.id) {\n continue;\n }\n if (node.record) {\n records.push(node.record);\n }\n if (node.children && node.children.length > 0) {\n collectRecordIdsRecursively(node.children);\n }\n }\n };\n collectRecordIdsRecursively(nodes);\n // Delete duplicates\n return Array.from(new Set(records));\n };\n const _getRecursiveFieldsFromLibraries = (nodes: ITreeNodeWithRecord[]): string[] =>\n nodes\n .filter(node => !!node.record?.whoAmI?.library?.id)\n .map(node => `${filter.attribute.id}.${node.record?.whoAmI?.library?.id}.id`);\n\n const _handleOnCheck = (selection: ITreeNodeWithRecord[]) => {\n const newSelectedNodes = selection.filter(node => !node?.disabled);\n\n const records = _getRecursiveChildrenRecord(selection);\n const fields = _getRecursiveFieldsFromLibraries(selection);\n\n onFilterChange({\n ...filter,\n nodes: newSelectedNodes.map(node => ({\n nodeId: node.id,\n libraryId: node.record?.whoAmI.library.id ?? records[0]?.whoAmI.library.id ?? '',\n })),\n value: records.map(record => record.id),\n formattedValue: records.map(record => record.whoAmI.label).filter(Boolean),\n condition: RecordFilterCondition.EQUAL,\n field: fields,\n });\n };\n\n return (\n <DivStyled>\n <EmptyValueCheckbox onSelect={_handleOnCheckEmptyValue} filter={filter} />\n <SelectTreeNode\n treeId={filter.attribute.linkedTree?.id ?? ''}\n selectedNodes={selectedNodesIds}\n onSelect={_handleOnSelect}\n onCheck={_handleOnCheck}\n multiple\n canSelectRoot={true}\n checkStrictly={false}\n checkable\n loadRecursively={true}\n noPagination={true}\n />\n </DivStyled>\n );\n};\n"]}