@leav/ui 1.5.0 → 1.5.1-339c20fb
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/__mocks__/common/library.d.ts +9 -0
- package/dist/_gqlTypes/index.d.ts +107 -26
- package/dist/_gqlTypes/index.js +64 -12
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/libraries/libraryDetailsFragment.js +7 -0
- package/dist/_queries/libraries/libraryDetailsFragment.js.map +1 -1
- package/dist/components/Explorer/DataView.js +4 -3
- package/dist/components/Explorer/DataView.js.map +1 -1
- package/dist/components/Explorer/Explorer.js +2 -1
- package/dist/components/Explorer/Explorer.js.map +1 -1
- package/dist/components/Explorer/ExplorerFiltersAndSorts.d.ts +1 -0
- package/dist/components/Explorer/ExplorerFiltersAndSorts.js +2 -2
- package/dist/components/Explorer/ExplorerFiltersAndSorts.js.map +1 -1
- package/dist/components/Explorer/ExplorerToolbar.d.ts +1 -0
- package/dist/components/Explorer/ExplorerToolbar.js +2 -2
- package/dist/components/Explorer/ExplorerToolbar.js.map +1 -1
- package/dist/components/Explorer/IdCard.js +2 -2
- package/dist/components/Explorer/IdCard.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useExportMassAction.js +5 -6
- package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
- package/dist/components/Explorer/useLoadView.js +0 -2
- package/dist/components/Explorer/useLoadView.js.map +1 -1
- package/dist/components/Filters/_types.d.ts +4 -0
- package/dist/components/Filters/_types.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +20 -11
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/context/useFiltersReducer.d.ts +2 -1
- package/dist/components/Filters/context/useFiltersReducer.js +9 -5
- package/dist/components/Filters/context/useFiltersReducer.js.map +1 -1
- package/dist/components/Filters/context/useGetTreeFilters.d.ts +15 -0
- package/dist/components/Filters/context/useGetTreeFilters.js +63 -0
- package/dist/components/Filters/context/useGetTreeFilters.js.map +1 -0
- package/dist/components/Filters/filter-items/filter-type/TextAttributeDropDown.js +24 -7
- package/dist/components/Filters/filter-items/filter-type/TextAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +15 -17
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/index.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +14 -5
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/Filters/useFilters.d.ts +4 -0
- package/dist/components/Filters/useTransformFilters.d.ts +5 -1
- package/dist/components/Filters/useTransformFilters.js +26 -3
- package/dist/components/Filters/useTransformFilters.js.map +1 -1
- package/dist/components/LibraryPicker/LibrariesList/LibrariesList.js +1 -1
- package/dist/components/LibraryPicker/LibrariesList/LibrariesList.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeList.js +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeList.js.map +1 -1
- package/dist/components/RecordHistory/RecordHistory.js +11 -6
- package/dist/components/RecordHistory/RecordHistory.js.map +1 -1
- package/dist/components/RecordHistory/RecordHistoryLogEntry.js +13 -7
- package/dist/components/RecordHistory/RecordHistoryLogEntry.js.map +1 -1
- package/dist/components/SearchModal/SearchModal.js +1 -1
- package/dist/components/SearchModal/SearchModal.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +4 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
- package/dist/components/TreePicker/TreesList/TreesList.js +1 -1
- package/dist/components/TreePicker/TreesList/TreesList.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 +3 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.js +12 -0
- package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/schema.d.ts +30 -1
- package/dist/hooks/useIFrameMessenger/schema.js +5 -4
- package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +20 -2
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +2 -0
- package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +2 -0
- package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +2 -0
- package/dist/locales/en/shared.json +2 -2
- package/dist/locales/fr/shared.json +2 -2
- package/package.json +6 -7
|
@@ -13,6 +13,12 @@ export const libraryDetailsFragment = gql `
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
fragment LibraryTreeAttributeDetails on TreeAttribute {
|
|
17
|
+
linked_tree {
|
|
18
|
+
id
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
fragment LibraryAttributes on Attribute {
|
|
17
23
|
id
|
|
18
24
|
label
|
|
@@ -20,6 +26,7 @@ export const libraryDetailsFragment = gql `
|
|
|
20
26
|
type
|
|
21
27
|
format
|
|
22
28
|
...LibraryLinkAttributeDetails
|
|
29
|
+
...LibraryTreeAttributeDetails
|
|
23
30
|
}
|
|
24
31
|
|
|
25
32
|
fragment LibraryPreviewsSettings on LibraryPreviewsSettings {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libraryDetailsFragment.js","sourceRoot":"","sources":["../../../src/_queries/libraries/libraryDetailsFragment.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;MACnC,sBAAsB
|
|
1
|
+
{"version":3,"file":"libraryDetailsFragment.js","sourceRoot":"","sources":["../../../src/_queries/libraries/libraryDetailsFragment.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;MACnC,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsF3B,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 {gql} from '@apollo/client';\nimport {recordIdentityFragment} from '../../gqlFragments';\n\nexport const libraryDetailsFragment = gql`\n ${recordIdentityFragment}\n\n fragment LibraryLinkAttributeDetails on LinkAttribute {\n linked_library {\n id\n behavior\n }\n }\n\n fragment LibraryTreeAttributeDetails on TreeAttribute {\n linked_tree {\n id\n }\n }\n\n fragment LibraryAttributes on Attribute {\n id\n label\n system\n type\n format\n ...LibraryLinkAttributeDetails\n ...LibraryTreeAttributeDetails\n }\n\n fragment LibraryPreviewsSettings on LibraryPreviewsSettings {\n label\n description\n system\n versions {\n background\n density\n sizes {\n name\n size\n }\n }\n }\n\n fragment LibraryDetails on Library {\n id\n label\n behavior\n system\n label\n fullTextAttributes {\n id\n label\n }\n attributes {\n ...LibraryAttributes\n }\n permissions_conf {\n permissionTreeAttributes {\n id\n ... on TreeAttribute {\n linked_tree {\n id\n }\n }\n label\n }\n relation\n }\n recordIdentityConf {\n label\n subLabel\n color\n preview\n treeColorPreview\n }\n permissions {\n admin_library\n access_library\n access_record\n create_record\n edit_record\n delete_record\n }\n icon {\n ...RecordIdentity\n }\n previewsSettings {\n ...LibraryPreviewsSettings\n }\n }\n`;\n"]}
|
|
@@ -88,9 +88,10 @@ export const DataView = memo(({ dataGroupedFilteredSorted, attributesToDisplay,
|
|
|
88
88
|
title: attributeName === WHO_AM_I_COLUMN ? t('explorer.name') : attributesProperties[attributeName].label,
|
|
89
89
|
dataIndex: USELESS,
|
|
90
90
|
width: getFieldColumnWidth(attributesProperties[attributeName]),
|
|
91
|
-
shouldCellUpdate: (record, prevRecord) =>
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
shouldCellUpdate: (record, prevRecord) => isMassSelectionAll ||
|
|
92
|
+
(attributeName === WHO_AM_I_COLUMN
|
|
93
|
+
? record.whoAmI !== prevRecord.whoAmI
|
|
94
|
+
: record.propertiesById[attributeName] !== prevRecord.propertiesById[attributeName]),
|
|
94
95
|
render: (_, item) => attributeName === WHO_AM_I_COLUMN ? (_jsx(TableNameCell, { item: item, itemActions: itemActions })) : (_jsx(TableCell, { attributeProperties: attributesProperties[attributeName], values: item.propertiesById[attributeName] })),
|
|
95
96
|
}));
|
|
96
97
|
//TODO: test row click
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataView.js","sourceRoot":"","sources":["../../../src/components/Explorer/DataView.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, type Key, memo} from 'react';\nimport {KitPagination, KitTable} from 'aristid-ds';\nimport {type KitTableColumnType} from 'aristid-ds/dist/Kit/DataDisplay/Table/types';\nimport styled from 'styled-components';\nimport isEqual from 'lodash/isEqual';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IExplorerData, type IItemAction, type IItemData} from './_types';\nimport {TableCell} from './TableCell';\nimport {defaultPaginationHeight, useTableScrollableHeight} from './useTableScrollableHeight';\nimport {useColumnWidth} from './useColumnWidth';\nimport {WHO_AM_I_COLUMN} from './_constants';\nimport {TableNameCell} from './TableNameCell';\nimport cn from 'classnames';\n\nconst USELESS = '';\n\nconst tableRowHeight = 56;\nconst tableHeaderMinLineHeight = 22;\n\nconst DataViewContainerDivStyled = styled.div`\n flex: 1 1 min-content;\n max-height: minmax(0, 1fr);\n overflow: hidden;\n\n &.headless {\n overflow-y: auto;\n }\n\n .kit-table {\n padding-bottom: ${defaultPaginationHeight}px;\n position: relative;\n }\n\n .pagination {\n flex: 0 0 auto;\n justify-content: center;\n display: flex;\n padding-top: calc(var(--general-spacing-xs) * 1px);\n }\n`;\n\n// TODO: Table component should be updated fix header display\nconst StyledTable = styled(KitTable)`\n .ant-table-thead > tr > th {\n padding-top: calc(var(--general-spacing-xxs) * 1px) !important;\n padding-bottom: calc(var(--general-spacing-xxs) * 1px) !important;\n height: ${tableRowHeight}px;\n\n .ant-table-cell {\n min-height: ${tableHeaderMinLineHeight}px;\n height: auto !important;\n padding: 0 calc(var(--general-spacing-s) * 1px) 0 0;\n }\n }\n\n .ant-table-tbody > tr:hover .ant-table-cell {\n .actions-list {\n display: inline-flex;\n }\n }\n\n .ant-table-tbody > tr {\n .ant-table-cell {\n min-height: ${tableRowHeight}px;\n height: auto !important;\n }\n }\n\n &.row-clickable {\n .ant-table-tbody > tr {\n cursor: pointer;\n }\n }\n`;\n\ninterface IDataViewProps {\n dataGroupedFilteredSorted: IItemData[];\n itemActions: IItemAction[];\n attributesProperties: IExplorerData['attributes'];\n attributesToDisplay: string[];\n paginationProps?: {\n pageSizeOptions: number[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n setNewPage: (page: number, pageSize: number) => void;\n setNewPageSize: (page: number, pageSize: number) => void;\n };\n selection: {\n onSelectionChange: null | ((keys: Key[]) => void);\n isMassSelectionAll: boolean;\n selectedKeys: Key[];\n mode?: 'simple' | 'multiple';\n };\n hideTableHeader: boolean;\n}\n\n// TODO: tests will fail if we don't check attributeToDisplay because we have a render with no attributes but data is present. We should check why there's this behavior\nconst arePropsEqual = (prevProps: IDataViewProps, nextProps: IDataViewProps) =>\n isEqual(\n {\n attributesToDisplay: prevProps.attributesToDisplay,\n data: prevProps.dataGroupedFilteredSorted,\n selectedKeys: prevProps.selection.selectedKeys,\n },\n {\n attributesToDisplay: nextProps.attributesToDisplay,\n data: nextProps.dataGroupedFilteredSorted,\n selectedKeys: nextProps.selection.selectedKeys,\n },\n );\n\nexport const DataView: FunctionComponent<IDataViewProps> = memo(\n ({\n dataGroupedFilteredSorted,\n attributesToDisplay,\n attributesProperties,\n paginationProps,\n itemActions,\n selection: {onSelectionChange, selectedKeys, isMassSelectionAll, mode},\n hideTableHeader = false,\n }) => {\n const {t} = useSharedTranslation();\n\n const {containerRef, scrollHeight} = useTableScrollableHeight(!!paginationProps);\n const {getFieldColumnWidth} = useColumnWidth();\n\n const columns = attributesToDisplay.map<KitTableColumnType<IItemData>>(attributeName => ({\n title: attributeName === WHO_AM_I_COLUMN ? t('explorer.name') : attributesProperties[attributeName].label,\n dataIndex: USELESS,\n width: getFieldColumnWidth(attributesProperties[attributeName]),\n shouldCellUpdate: (record, prevRecord) =>\n attributeName === WHO_AM_I_COLUMN\n ? record.whoAmI !== prevRecord.whoAmI\n : record.propertiesById[attributeName] !== prevRecord.propertiesById[attributeName],\n render: (_, item) =>\n attributeName === WHO_AM_I_COLUMN ? (\n <TableNameCell item={item} itemActions={itemActions} />\n ) : (\n <TableCell\n attributeProperties={attributesProperties[attributeName]}\n values={item.propertiesById[attributeName]}\n />\n ),\n }));\n\n //TODO: test row click\n const itemActionToUseOnRowClick = itemActions.find(itemAction => itemAction.useItemActionOnRowClick);\n\n const _rowSelection: ComponentProps<typeof KitTable>['rowSelection'] =\n onSelectionChange === null\n ? undefined\n : {\n type: mode === 'simple' ? 'radio' : 'checkbox',\n columnTitle: ' ', // blank string to hide select all checkbox from <KitTable />\n selectedRowKeys: selectedKeys,\n preserveSelectedRowKeys: true,\n // TODO: review types from antd directly\n onChange: (selectedRowKeys: Key[]) => onSelectionChange(selectedRowKeys),\n getCheckboxProps: isMassSelectionAll\n ? () => ({\n disabled: true,\n })\n : undefined,\n };\n\n // TODO: handle columns width based on attribute type/format\n return (\n <DataViewContainerDivStyled ref={containerRef} className={cn({headless: hideTableHeader})}>\n <StyledTable\n className={cn({\n 'row-clickable': itemActionToUseOnRowClick,\n })}\n showHeader={dataGroupedFilteredSorted.length > 0 && !hideTableHeader}\n columns={columns}\n tableLayout=\"fixed\"\n scroll={{y: hideTableHeader ? '100%' : scrollHeight, x: '100%'}}\n dataSource={dataGroupedFilteredSorted}\n pagination={false}\n rowSelection={_rowSelection}\n onRow={(item: IItemData) => ({\n onClick: () => itemActionToUseOnRowClick?.callback(item),\n })}\n />\n {paginationProps && (\n <div className=\"pagination\">\n <KitPagination\n aria-label=\"pagination\"\n showSizeChanger\n showTotal={(total, [from, to]) =>\n t('explorer.pagination-total-number', {from, to, count: total})\n }\n total={paginationProps.totalCount}\n defaultCurrent={paginationProps.currentPage}\n defaultPageSize={paginationProps.pageSize}\n pageSizeOptions={paginationProps.pageSizeOptions}\n onChange={paginationProps.setNewPage}\n onShowSizeChange={paginationProps.setNewPageSize}\n />\n </div>\n )}\n </DataViewContainerDivStyled>\n );\n },\n arePropsEqual,\n);\n"]}
|
|
1
|
+
{"version":3,"file":"DataView.js","sourceRoot":"","sources":["../../../src/components/Explorer/DataView.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, type Key, memo} from 'react';\nimport {KitPagination, KitTable} from 'aristid-ds';\nimport {type KitTableColumnType} from 'aristid-ds/dist/Kit/DataDisplay/Table/types';\nimport styled from 'styled-components';\nimport isEqual from 'lodash/isEqual';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IExplorerData, type IItemAction, type IItemData} from './_types';\nimport {TableCell} from './TableCell';\nimport {defaultPaginationHeight, useTableScrollableHeight} from './useTableScrollableHeight';\nimport {useColumnWidth} from './useColumnWidth';\nimport {WHO_AM_I_COLUMN} from './_constants';\nimport {TableNameCell} from './TableNameCell';\nimport cn from 'classnames';\n\nconst USELESS = '';\n\nconst tableRowHeight = 56;\nconst tableHeaderMinLineHeight = 22;\n\nconst DataViewContainerDivStyled = styled.div`\n flex: 1 1 min-content;\n max-height: minmax(0, 1fr);\n overflow: hidden;\n\n &.headless {\n overflow-y: auto;\n }\n\n .kit-table {\n padding-bottom: ${defaultPaginationHeight}px;\n position: relative;\n }\n\n .pagination {\n flex: 0 0 auto;\n justify-content: center;\n display: flex;\n padding-top: calc(var(--general-spacing-xs) * 1px);\n }\n`;\n\n// TODO: Table component should be updated fix header display\nconst StyledTable = styled(KitTable)`\n .ant-table-thead > tr > th {\n padding-top: calc(var(--general-spacing-xxs) * 1px) !important;\n padding-bottom: calc(var(--general-spacing-xxs) * 1px) !important;\n height: ${tableRowHeight}px;\n\n .ant-table-cell {\n min-height: ${tableHeaderMinLineHeight}px;\n height: auto !important;\n padding: 0 calc(var(--general-spacing-s) * 1px) 0 0;\n }\n }\n\n .ant-table-tbody > tr:hover .ant-table-cell {\n .actions-list {\n display: inline-flex;\n }\n }\n\n .ant-table-tbody > tr {\n .ant-table-cell {\n min-height: ${tableRowHeight}px;\n height: auto !important;\n }\n }\n\n &.row-clickable {\n .ant-table-tbody > tr {\n cursor: pointer;\n }\n }\n`;\n\ninterface IDataViewProps {\n dataGroupedFilteredSorted: IItemData[];\n itemActions: IItemAction[];\n attributesProperties: IExplorerData['attributes'];\n attributesToDisplay: string[];\n paginationProps?: {\n pageSizeOptions: number[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n setNewPage: (page: number, pageSize: number) => void;\n setNewPageSize: (page: number, pageSize: number) => void;\n };\n selection: {\n onSelectionChange: null | ((keys: Key[]) => void);\n isMassSelectionAll: boolean;\n selectedKeys: Key[];\n mode?: 'simple' | 'multiple';\n };\n hideTableHeader: boolean;\n}\n\n// TODO: tests will fail if we don't check attributeToDisplay because we have a render with no attributes but data is present. We should check why there's this behavior\nconst arePropsEqual = (prevProps: IDataViewProps, nextProps: IDataViewProps) =>\n isEqual(\n {\n attributesToDisplay: prevProps.attributesToDisplay,\n data: prevProps.dataGroupedFilteredSorted,\n selectedKeys: prevProps.selection.selectedKeys,\n },\n {\n attributesToDisplay: nextProps.attributesToDisplay,\n data: nextProps.dataGroupedFilteredSorted,\n selectedKeys: nextProps.selection.selectedKeys,\n },\n );\n\nexport const DataView: FunctionComponent<IDataViewProps> = memo(\n ({\n dataGroupedFilteredSorted,\n attributesToDisplay,\n attributesProperties,\n paginationProps,\n itemActions,\n selection: {onSelectionChange, selectedKeys, isMassSelectionAll, mode},\n hideTableHeader = false,\n }) => {\n const {t} = useSharedTranslation();\n\n const {containerRef, scrollHeight} = useTableScrollableHeight(!!paginationProps);\n const {getFieldColumnWidth} = useColumnWidth();\n\n const columns = attributesToDisplay.map<KitTableColumnType<IItemData>>(attributeName => ({\n title: attributeName === WHO_AM_I_COLUMN ? t('explorer.name') : attributesProperties[attributeName].label,\n dataIndex: USELESS,\n width: getFieldColumnWidth(attributesProperties[attributeName]),\n shouldCellUpdate: (record, prevRecord) =>\n isMassSelectionAll ||\n (attributeName === WHO_AM_I_COLUMN\n ? record.whoAmI !== prevRecord.whoAmI\n : record.propertiesById[attributeName] !== prevRecord.propertiesById[attributeName]),\n render: (_, item) =>\n attributeName === WHO_AM_I_COLUMN ? (\n <TableNameCell item={item} itemActions={itemActions} />\n ) : (\n <TableCell\n attributeProperties={attributesProperties[attributeName]}\n values={item.propertiesById[attributeName]}\n />\n ),\n }));\n\n //TODO: test row click\n const itemActionToUseOnRowClick = itemActions.find(itemAction => itemAction.useItemActionOnRowClick);\n\n const _rowSelection: ComponentProps<typeof KitTable>['rowSelection'] =\n onSelectionChange === null\n ? undefined\n : {\n type: mode === 'simple' ? 'radio' : 'checkbox',\n columnTitle: ' ', // blank string to hide select all checkbox from <KitTable />\n selectedRowKeys: selectedKeys,\n preserveSelectedRowKeys: true,\n // TODO: review types from antd directly\n onChange: (selectedRowKeys: Key[]) => onSelectionChange(selectedRowKeys),\n getCheckboxProps: isMassSelectionAll\n ? () => ({\n disabled: true,\n })\n : undefined,\n };\n\n // TODO: handle columns width based on attribute type/format\n return (\n <DataViewContainerDivStyled ref={containerRef} className={cn({headless: hideTableHeader})}>\n <StyledTable\n className={cn({\n 'row-clickable': itemActionToUseOnRowClick,\n })}\n showHeader={dataGroupedFilteredSorted.length > 0 && !hideTableHeader}\n columns={columns}\n tableLayout=\"fixed\"\n scroll={{y: hideTableHeader ? '100%' : scrollHeight, x: '100%'}}\n dataSource={dataGroupedFilteredSorted}\n pagination={false}\n rowSelection={_rowSelection}\n onRow={(item: IItemData) => ({\n onClick: () => itemActionToUseOnRowClick?.callback(item),\n })}\n />\n {paginationProps && (\n <div className=\"pagination\">\n <KitPagination\n aria-label=\"pagination\"\n showSizeChanger\n showTotal={(total, [from, to]) =>\n t('explorer.pagination-total-number', {from, to, count: total})\n }\n total={paginationProps.totalCount}\n defaultCurrent={paginationProps.currentPage}\n defaultPageSize={paginationProps.pageSize}\n pageSizeOptions={paginationProps.pageSizeOptions}\n onChange={paginationProps.setNewPage}\n onShowSizeChange={paginationProps.setNewPageSize}\n />\n </div>\n )}\n </DataViewContainerDivStyled>\n );\n },\n arePropsEqual,\n);\n"]}
|
|
@@ -59,6 +59,7 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
|
|
|
59
59
|
filters: defaultViewSettings?.filters ?? undefined,
|
|
60
60
|
filtersOperator: defaultViewSettings?.filtersOperator ?? undefined,
|
|
61
61
|
ignoreViewByDefault,
|
|
62
|
+
skip: viewSettingsLoading,
|
|
62
63
|
});
|
|
63
64
|
const { currentPage, setNewPageSize, setNewPage } = usePagination(viewSettingsDispatch);
|
|
64
65
|
const { data, isMultivalue, canEditLinkAttributeValues, loading: loadingData, refetch, } = useExplorerData({
|
|
@@ -164,7 +165,7 @@ export const Explorer = forwardRef(({ entrypoint, itemActions = [], primaryActio
|
|
|
164
165
|
linkAction: linkPrimaryAction,
|
|
165
166
|
totalCount,
|
|
166
167
|
}), [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCount]);
|
|
167
|
-
return (_jsxs(_Fragment, { children: [_jsx(FiltersContext.Provider, { value: { filtersData, dispatch: filtersDispatch }, children: _jsxs(ViewSettingsContext.Provider, { value: { view, dispatch: viewSettingsDispatch }, children: [_jsxs(ExplorerPageDivStyled, { children: [showTitle && (_jsx(ExplorerHeaderDivStyled, { children: _jsx(KitTypography.Title, { level: "h3", children: !viewSettingsLoading && (_jsx(ExplorerTitle, { library: view.libraryId, title: title, entrypoint: entrypoint })) /*TODO: manage loading*/ }) })), _jsxs(ExplorerToolbar, { showFilters: showFilters, showSorts: showSorts, isMassSelectionAll: isMassSelectionAll, headless: hideTableHeader, selectAllButton: hideSelectAllAction ? null : selectAllButton, viewSettingsLoading: viewSettingsLoading, children: [view?.enableConfigureView ? viewListButton : null, showSearch ? searchInput : null, view?.enableConfigureView ? viewSettingsButton : null, hidePrimaryActions ? null : primaryButton] }), loadingData || viewSettingsLoading ? (_jsx(Loading, {})) : hasNoResults ? (_jsx(ExplorerEmptyDataStyled, { children: emptyPlaceholder || _jsx(KitEmpty, { title: t('explorer.empty-data') }) })) : (_jsx(DataView, { dataGroupedFilteredSorted: data?.records ?? emptyArray, attributesProperties: data?.attributes ?? emptyObject, attributesToDisplay: [WHO_AM_I_COLUMN, ...view.attributesIds], hideTableHeader: hideTableHeader, paginationProps: entrypoint.type === 'library' && !noPagination
|
|
168
|
+
return (_jsxs(_Fragment, { children: [_jsx(FiltersContext.Provider, { value: { filtersData, dispatch: filtersDispatch }, children: _jsxs(ViewSettingsContext.Provider, { value: { view, dispatch: viewSettingsDispatch }, children: [_jsxs(ExplorerPageDivStyled, { children: [showTitle && (_jsx(ExplorerHeaderDivStyled, { children: _jsx(KitTypography.Title, { level: "h3", children: !viewSettingsLoading && (_jsx(ExplorerTitle, { library: view.libraryId, title: title, entrypoint: entrypoint })) /*TODO: manage loading*/ }) })), _jsxs(ExplorerToolbar, { showFilters: showFilters, showSorts: showSorts, isMassSelectionAll: isMassSelectionAll, headless: hideTableHeader, canRemoveFilters: view?.enableConfigureView ?? false, selectAllButton: hideSelectAllAction ? null : selectAllButton, viewSettingsLoading: viewSettingsLoading, children: [view?.enableConfigureView ? viewListButton : null, showSearch ? searchInput : null, view?.enableConfigureView ? viewSettingsButton : null, hidePrimaryActions ? null : primaryButton] }), loadingData || viewSettingsLoading ? (_jsx(Loading, {})) : hasNoResults ? (_jsx(ExplorerEmptyDataStyled, { children: emptyPlaceholder || _jsx(KitEmpty, { title: t('explorer.empty-data') }) })) : (_jsx(DataView, { dataGroupedFilteredSorted: data?.records ?? emptyArray, attributesProperties: data?.attributes ?? emptyObject, attributesToDisplay: [WHO_AM_I_COLUMN, ...view.attributesIds], hideTableHeader: hideTableHeader, paginationProps: entrypoint.type === 'library' && !noPagination
|
|
168
169
|
? {
|
|
169
170
|
pageSizeOptions: defaultPageSizeOptions,
|
|
170
171
|
currentPage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Explorer.js","sourceRoot":"","sources":["../../../src/components/Explorer/Explorer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {forwardRef, type ReactNode, useImperativeHandle, useMemo} from 'react';\nimport {createPortal} from 'react-dom';\nimport {KitEmpty, KitSnackBarProvider, KitTypography} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {Loading} from '_ui/components/Loading';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ISubmitMultipleResult} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {\n type DefaultViewSettings,\n type Entrypoint,\n type IItemAction,\n type IMassActions,\n type IPrimaryAction,\n} from './_types';\nimport {useExplorerData} from './_queries/useExplorerData';\nimport {DataView} from './DataView';\nimport {ExplorerTitle} from './ExplorerTitle';\nimport {ExplorerToolbar} from './ExplorerToolbar';\nimport {useEditStatusItemAction} from './actions-item/useEditStatusItemAction';\nimport {usePrimaryActionsButton} from './actions-primary/usePrimaryActions';\nimport {useCreatePrimaryAction} from './actions-primary/useCreatePrimaryAction';\nimport {useLinkPrimaryAction} from './actions-primary/useLinkPrimaryAction';\nimport {useMassActions} from './actions-mass/useMassActions';\nimport {useDeactivateMassAction} from './actions-mass/useDeactivateMassAction';\nimport {\n defaultPageSizeOptions,\n SidePanel,\n useEditSettings,\n useOpenViewSettings,\n ViewSettingsContext,\n} from './manage-view-settings';\nimport {useSearchInput} from './useSearchInput';\nimport {usePagination} from './usePagination';\nimport {useViewSettingsReducer} from './useViewSettingsReducer';\nimport {MASS_SELECTION_ALL, SNACKBAR_MASS_ID, WHO_AM_I_COLUMN} from './_constants';\nimport {useDeleteLinkValues} from './actions-mass/useDeleteLinkValues';\nimport {useReplaceItemAction} from './actions-item/useReplaceItemAction';\nimport {type JoinLibraryContextFragment} from '_ui/_gqlTypes';\nimport {useFiltersReducer} from '_ui/components/Filters/context/useFiltersReducer';\nimport {FiltersContext} from '_ui/components/Filters/context/filtersContext';\nimport {useExportMassAction} from './actions-mass/useExportMassAction';\n\nconst isNotEmpty = <T extends unknown[]>(union: T): union is Exclude<T, []> => union.length > 0;\n\nconst emptyArray = [];\nconst emptyObject = {};\n\nconst ExplorerHeaderDivStyled = styled.div`\n display: flex;\n align-items: flex-start;\n padding: calc(var(--general-spacing-xs) * 1px);\n`;\n\nconst ExplorerPageDivStyled = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`;\n\nconst ExplorerEmptyDataStyled = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport interface IExplorerProps {\n entrypoint: Entrypoint;\n noPagination?: true;\n itemActions?: IItemAction[];\n primaryActions?: IPrimaryAction[];\n massActions?: IMassActions[];\n title?: string;\n selectionMode?: 'multiple' | 'simple';\n emptyPlaceholder?: ReactNode;\n defaultActionsForItem?: Array<'replaceLink' | 'remove' | 'activate'>;\n defaultPrimaryActions?: Array<'create'>;\n defaultMassActions?: Array<'deactivate' | 'export'>;\n defaultViewSettings?: DefaultViewSettings;\n defaultCallbacks?: {\n item?: {\n edit?: IItemAction['callback'];\n replaceLink?: (replaceValuesResult: ISubmitMultipleResult) => void;\n remove?: IItemAction['callback'];\n };\n primary?: {\n create?: ({\n recordIdCreated,\n saveValuesResultOnLink,\n }: {\n recordIdCreated: string;\n saveValuesResultOnLink?: ISubmitMultipleResult;\n }) => void;\n link?: (saveValuesResult: ISubmitMultipleResult) => void;\n };\n mass?: {\n deactivate?: IMassActions['callback'];\n export?: IMassActions['callback'];\n };\n };\n showCreateOnNoResultOnly?: boolean;\n showFilters?: boolean;\n showSorts?: boolean;\n hideFirstActionLabel?: boolean;\n /**\n * Optional to `false` load the last added view when `props.defaultViewSettings.viewId` is `undefined`,\n * if set to `true` load default view.\n */\n ignoreViewByDefault?: boolean;\n showTitle?: boolean;\n showSearch?: boolean;\n disableSelection?: boolean;\n hideSelectAllAction?: boolean;\n hidePrimaryActions?: boolean;\n hideTableHeader?: boolean;\n creationFormId?: string;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport interface IExplorerRef {\n createAction: IPrimaryAction | null;\n linkAction: IPrimaryAction | null;\n totalCount: number;\n}\n\nexport const Explorer = forwardRef<IExplorerRef, IExplorerProps>(\n (\n {\n entrypoint,\n itemActions = [],\n primaryActions = [],\n massActions = [],\n title,\n selectionMode = 'multiple',\n emptyPlaceholder,\n noPagination,\n creationFormId,\n showCreateOnNoResultOnly = false,\n showFilters = false,\n showSorts = false,\n hideFirstActionLabel = false,\n disableSelection = false,\n hideSelectAllAction = false,\n showTitle = false,\n showSearch = false,\n hidePrimaryActions = false,\n hideTableHeader = false,\n ignoreViewByDefault = false,\n defaultActionsForItem = ['replaceLink', 'remove', 'activate'],\n defaultPrimaryActions = ['create'],\n defaultMassActions = ['deactivate'],\n defaultCallbacks,\n defaultViewSettings,\n joinLibraryContext,\n },\n ref,\n ) => {\n const {t} = useSharedTranslation();\n\n const {panelElement: settingsPanelElement} = useEditSettings();\n\n const {\n loading: viewSettingsLoading,\n view,\n dispatch: viewSettingsDispatch,\n } = useViewSettingsReducer(entrypoint, defaultViewSettings, ignoreViewByDefault);\n\n const {filtersData, dispatch: filtersDispatch} = useFiltersReducer({\n libraryId: view.libraryId,\n viewId: view.viewId ?? undefined,\n filters: defaultViewSettings?.filters ?? undefined,\n filtersOperator: defaultViewSettings?.filtersOperator ?? undefined,\n ignoreViewByDefault,\n });\n\n const {currentPage, setNewPageSize, setNewPage} = usePagination(viewSettingsDispatch);\n\n const {\n data,\n isMultivalue,\n canEditLinkAttributeValues,\n loading: loadingData,\n refetch,\n } = useExplorerData({\n entrypoint,\n libraryId: view.libraryId,\n attributeIds: view.attributesIds,\n fulltextSearch: view.fulltextSearch,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n sorts: view.sort,\n filters: filtersData.filters,\n filtersOperator: filtersData.filtersOperator,\n skip: viewSettingsLoading,\n }); // TODO: refresh when go back on page\n const isMassSelectionAll = view.massSelection === MASS_SELECTION_ALL;\n const isLink = entrypoint.type === 'link';\n\n const {editStatusItemAction} = useEditStatusItemAction({\n isEnabled:\n isNotEmpty(defaultActionsForItem) &&\n (defaultActionsForItem.includes('remove') || defaultActionsForItem.includes('activate')),\n onRemove: defaultCallbacks?.item?.remove,\n canDeleteLinkValues: canEditLinkAttributeValues,\n store: {view, dispatch: viewSettingsDispatch},\n entrypoint,\n });\n\n const {replaceItemAction, replaceItemModal} = useReplaceItemAction({\n isEnabled: isLink && isNotEmpty(defaultActionsForItem) && defaultActionsForItem.includes('replaceLink'),\n isMultivalue,\n onReplace: defaultCallbacks?.item?.replaceLink,\n canReplaceLinkValues: canEditLinkAttributeValues,\n });\n\n const totalCount = data?.totalCount ?? 0;\n\n const hasNoResults = data === null || data.totalCount === 0;\n\n const isAllowedFreeEntry = !(entrypoint.type === 'library' && !entrypoint.allowFreeEntry);\n\n const showCreatePrimaryButton = showCreateOnNoResultOnly\n ? !hidePrimaryActions && !loadingData && hasNoResults && isAllowedFreeEntry\n : true;\n\n const {createPrimaryAction, createModal} = useCreatePrimaryAction({\n isEnabled: isNotEmpty(defaultPrimaryActions) && defaultPrimaryActions.includes('create'),\n isVisible: showCreatePrimaryButton,\n libraryId: view.libraryId,\n canCreateAndLinkValue: canEditLinkAttributeValues,\n onCreate: defaultCallbacks?.primary?.create,\n joinLibraryContext,\n entrypoint,\n isMultivalue,\n totalCount,\n formId: creationFormId,\n refetch,\n });\n const {linkPrimaryAction, linkModal} = useLinkPrimaryAction({\n isEnabled: isLink,\n joinLibraryContext,\n isVisible: showCreatePrimaryButton,\n canAddLinkValue: canEditLinkAttributeValues,\n onLink: defaultCallbacks?.primary?.link,\n linkId: data?.totalCount === 0 ? undefined : data?.records[0]?.id_value,\n isMultivalue,\n maxItemsLeft: null, // TODO: use KitTable.row\n });\n\n const allVisibleKeys = data?.records.map(({key}) => key) ?? [];\n\n const {exportMassAction} = useExportMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('export'),\n store: {view, dispatch: viewSettingsDispatch},\n totalCount,\n onExport: defaultCallbacks?.mass?.export,\n });\n\n const {deactivateMassAction} = useDeactivateMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n allVisibleKeys,\n totalCount,\n onDeactivate: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const {unlinkMassAction} = useDeleteLinkValues({\n isEnabled: isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n allVisibleKeys,\n onDelete: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const _isSelectionDisable = disableSelection || (isLink && !isMultivalue && totalCount > 0);\n\n const massActionSnackbarId = useMemo(() => `${SNACKBAR_MASS_ID}_${Date.now()}`, []);\n\n const {setSelectedKeys, selectAllButton} = useMassActions({\n isEnabled:\n totalCount > 0 && !_isSelectionDisable && (isNotEmpty(defaultMassActions) || isNotEmpty(massActions)),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n totalCount,\n allVisibleKeys,\n massActions: [exportMassAction, deactivateMassAction, unlinkMassAction, ...massActions].filter(Boolean),\n snackbarId: massActionSnackbarId,\n });\n\n const {primaryButton} = usePrimaryActionsButton({\n view,\n actions: [createPrimaryAction, linkPrimaryAction, ...primaryActions].filter(Boolean),\n hideFirstActionLabel,\n });\n\n const {viewSettingsButton, viewListButton} = useOpenViewSettings({view, isEnabled: !isMassSelectionAll});\n\n const {searchInput} = useSearchInput({view, dispatch: viewSettingsDispatch, setNewPage});\n\n useImperativeHandle(\n ref,\n () => ({\n createAction: createPrimaryAction,\n linkAction: linkPrimaryAction,\n totalCount,\n }),\n [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCount],\n );\n\n return (\n <>\n <FiltersContext.Provider value={{filtersData, dispatch: filtersDispatch}}>\n <ViewSettingsContext.Provider value={{view, dispatch: viewSettingsDispatch}}>\n <ExplorerPageDivStyled>\n {showTitle && (\n <ExplorerHeaderDivStyled>\n <KitTypography.Title level=\"h3\">\n {\n !viewSettingsLoading && (\n <ExplorerTitle\n library={view.libraryId}\n title={title}\n entrypoint={entrypoint}\n />\n ) /*TODO: manage loading*/\n }\n </KitTypography.Title>\n </ExplorerHeaderDivStyled>\n )}\n <ExplorerToolbar\n showFilters={showFilters}\n showSorts={showSorts}\n isMassSelectionAll={isMassSelectionAll}\n headless={hideTableHeader}\n selectAllButton={hideSelectAllAction ? null : selectAllButton}\n viewSettingsLoading={viewSettingsLoading}\n >\n {view?.enableConfigureView ? viewListButton : null}\n {showSearch ? searchInput : null}\n {view?.enableConfigureView ? viewSettingsButton : null}\n {hidePrimaryActions ? null : primaryButton}\n </ExplorerToolbar>\n {loadingData || viewSettingsLoading ? (\n <Loading />\n ) : hasNoResults ? (\n <ExplorerEmptyDataStyled>\n {emptyPlaceholder || <KitEmpty title={t('explorer.empty-data')} />}\n </ExplorerEmptyDataStyled>\n ) : (\n <DataView\n dataGroupedFilteredSorted={data?.records ?? emptyArray}\n attributesProperties={data?.attributes ?? emptyObject}\n attributesToDisplay={[WHO_AM_I_COLUMN, ...view.attributesIds]}\n hideTableHeader={hideTableHeader}\n paginationProps={\n entrypoint.type === 'library' && !noPagination\n ? {\n pageSizeOptions: defaultPageSizeOptions,\n currentPage,\n pageSize: view.pageSize,\n setNewPageSize,\n setNewPage,\n totalCount,\n }\n : undefined\n }\n itemActions={[...itemActions, replaceItemAction, editStatusItemAction]\n .filter(Boolean)\n .map(action => ({\n ...action,\n disabled: isMassSelectionAll || action.disabled,\n }))}\n selection={{\n onSelectionChange: _isSelectionDisable ? null : setSelectedKeys,\n isMassSelectionAll,\n selectedKeys: isMassSelectionAll\n ? data?.records.map(({whoAmI}) => whoAmI.id)\n : (view.massSelection as string[]),\n mode: selectionMode,\n }}\n />\n )}\n </ExplorerPageDivStyled>\n {settingsPanelElement && createPortal(<SidePanel />, settingsPanelElement?.() ?? document.body)}\n {replaceItemModal}\n {createModal}\n {linkModal}\n </ViewSettingsContext.Provider>\n </FiltersContext.Provider>\n <KitSnackBarProvider id={massActionSnackbarId} />\n </>\n );\n },\n);\n"]}
|
|
1
|
+
{"version":3,"file":"Explorer.js","sourceRoot":"","sources":["../../../src/components/Explorer/Explorer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {forwardRef, type ReactNode, useImperativeHandle, useMemo} from 'react';\nimport {createPortal} from 'react-dom';\nimport {KitEmpty, KitSnackBarProvider, KitTypography} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {Loading} from '_ui/components/Loading';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ISubmitMultipleResult} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {\n type DefaultViewSettings,\n type Entrypoint,\n type IItemAction,\n type IMassActions,\n type IPrimaryAction,\n} from './_types';\nimport {useExplorerData} from './_queries/useExplorerData';\nimport {DataView} from './DataView';\nimport {ExplorerTitle} from './ExplorerTitle';\nimport {ExplorerToolbar} from './ExplorerToolbar';\nimport {useEditStatusItemAction} from './actions-item/useEditStatusItemAction';\nimport {usePrimaryActionsButton} from './actions-primary/usePrimaryActions';\nimport {useCreatePrimaryAction} from './actions-primary/useCreatePrimaryAction';\nimport {useLinkPrimaryAction} from './actions-primary/useLinkPrimaryAction';\nimport {useMassActions} from './actions-mass/useMassActions';\nimport {useDeactivateMassAction} from './actions-mass/useDeactivateMassAction';\nimport {\n defaultPageSizeOptions,\n SidePanel,\n useEditSettings,\n useOpenViewSettings,\n ViewSettingsContext,\n} from './manage-view-settings';\nimport {useSearchInput} from './useSearchInput';\nimport {usePagination} from './usePagination';\nimport {useViewSettingsReducer} from './useViewSettingsReducer';\nimport {MASS_SELECTION_ALL, SNACKBAR_MASS_ID, WHO_AM_I_COLUMN} from './_constants';\nimport {useDeleteLinkValues} from './actions-mass/useDeleteLinkValues';\nimport {useReplaceItemAction} from './actions-item/useReplaceItemAction';\nimport {type JoinLibraryContextFragment} from '_ui/_gqlTypes';\nimport {useFiltersReducer} from '_ui/components/Filters/context/useFiltersReducer';\nimport {FiltersContext} from '_ui/components/Filters/context/filtersContext';\nimport {useExportMassAction} from './actions-mass/useExportMassAction';\n\nconst isNotEmpty = <T extends unknown[]>(union: T): union is Exclude<T, []> => union.length > 0;\n\nconst emptyArray = [];\nconst emptyObject = {};\n\nconst ExplorerHeaderDivStyled = styled.div`\n display: flex;\n align-items: flex-start;\n padding: calc(var(--general-spacing-xs) * 1px);\n`;\n\nconst ExplorerPageDivStyled = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`;\n\nconst ExplorerEmptyDataStyled = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport interface IExplorerProps {\n entrypoint: Entrypoint;\n noPagination?: true;\n itemActions?: IItemAction[];\n primaryActions?: IPrimaryAction[];\n massActions?: IMassActions[];\n title?: string;\n selectionMode?: 'multiple' | 'simple';\n emptyPlaceholder?: ReactNode;\n defaultActionsForItem?: Array<'replaceLink' | 'remove' | 'activate'>;\n defaultPrimaryActions?: Array<'create'>;\n defaultMassActions?: Array<'deactivate' | 'export'>;\n defaultViewSettings?: DefaultViewSettings;\n defaultCallbacks?: {\n item?: {\n edit?: IItemAction['callback'];\n replaceLink?: (replaceValuesResult: ISubmitMultipleResult) => void;\n remove?: IItemAction['callback'];\n };\n primary?: {\n create?: ({\n recordIdCreated,\n saveValuesResultOnLink,\n }: {\n recordIdCreated: string;\n saveValuesResultOnLink?: ISubmitMultipleResult;\n }) => void;\n link?: (saveValuesResult: ISubmitMultipleResult) => void;\n };\n mass?: {\n deactivate?: IMassActions['callback'];\n export?: IMassActions['callback'];\n };\n };\n showCreateOnNoResultOnly?: boolean;\n showFilters?: boolean;\n showSorts?: boolean;\n hideFirstActionLabel?: boolean;\n /**\n * Optional to `false` load the last added view when `props.defaultViewSettings.viewId` is `undefined`,\n * if set to `true` load default view.\n */\n ignoreViewByDefault?: boolean;\n showTitle?: boolean;\n showSearch?: boolean;\n disableSelection?: boolean;\n hideSelectAllAction?: boolean;\n hidePrimaryActions?: boolean;\n hideTableHeader?: boolean;\n creationFormId?: string;\n joinLibraryContext?: JoinLibraryContextFragment;\n}\n\nexport interface IExplorerRef {\n createAction: IPrimaryAction | null;\n linkAction: IPrimaryAction | null;\n totalCount: number;\n}\n\nexport const Explorer = forwardRef<IExplorerRef, IExplorerProps>(\n (\n {\n entrypoint,\n itemActions = [],\n primaryActions = [],\n massActions = [],\n title,\n selectionMode = 'multiple',\n emptyPlaceholder,\n noPagination,\n creationFormId,\n showCreateOnNoResultOnly = false,\n showFilters = false,\n showSorts = false,\n hideFirstActionLabel = false,\n disableSelection = false,\n hideSelectAllAction = false,\n showTitle = false,\n showSearch = false,\n hidePrimaryActions = false,\n hideTableHeader = false,\n ignoreViewByDefault = false,\n defaultActionsForItem = ['replaceLink', 'remove', 'activate'],\n defaultPrimaryActions = ['create'],\n defaultMassActions = ['deactivate'],\n defaultCallbacks,\n defaultViewSettings,\n joinLibraryContext,\n },\n ref,\n ) => {\n const {t} = useSharedTranslation();\n\n const {panelElement: settingsPanelElement} = useEditSettings();\n\n const {\n loading: viewSettingsLoading,\n view,\n dispatch: viewSettingsDispatch,\n } = useViewSettingsReducer(entrypoint, defaultViewSettings, ignoreViewByDefault);\n\n const {filtersData, dispatch: filtersDispatch} = useFiltersReducer({\n libraryId: view.libraryId,\n viewId: view.viewId ?? undefined,\n filters: defaultViewSettings?.filters ?? undefined,\n filtersOperator: defaultViewSettings?.filtersOperator ?? undefined,\n ignoreViewByDefault,\n skip: viewSettingsLoading,\n });\n\n const {currentPage, setNewPageSize, setNewPage} = usePagination(viewSettingsDispatch);\n\n const {\n data,\n isMultivalue,\n canEditLinkAttributeValues,\n loading: loadingData,\n refetch,\n } = useExplorerData({\n entrypoint,\n libraryId: view.libraryId,\n attributeIds: view.attributesIds,\n fulltextSearch: view.fulltextSearch,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n sorts: view.sort,\n filters: filtersData.filters,\n filtersOperator: filtersData.filtersOperator,\n skip: viewSettingsLoading,\n }); // TODO: refresh when go back on page\n const isMassSelectionAll = view.massSelection === MASS_SELECTION_ALL;\n const isLink = entrypoint.type === 'link';\n\n const {editStatusItemAction} = useEditStatusItemAction({\n isEnabled:\n isNotEmpty(defaultActionsForItem) &&\n (defaultActionsForItem.includes('remove') || defaultActionsForItem.includes('activate')),\n onRemove: defaultCallbacks?.item?.remove,\n canDeleteLinkValues: canEditLinkAttributeValues,\n store: {view, dispatch: viewSettingsDispatch},\n entrypoint,\n });\n\n const {replaceItemAction, replaceItemModal} = useReplaceItemAction({\n isEnabled: isLink && isNotEmpty(defaultActionsForItem) && defaultActionsForItem.includes('replaceLink'),\n isMultivalue,\n onReplace: defaultCallbacks?.item?.replaceLink,\n canReplaceLinkValues: canEditLinkAttributeValues,\n });\n\n const totalCount = data?.totalCount ?? 0;\n\n const hasNoResults = data === null || data.totalCount === 0;\n\n const isAllowedFreeEntry = !(entrypoint.type === 'library' && !entrypoint.allowFreeEntry);\n\n const showCreatePrimaryButton = showCreateOnNoResultOnly\n ? !hidePrimaryActions && !loadingData && hasNoResults && isAllowedFreeEntry\n : true;\n\n const {createPrimaryAction, createModal} = useCreatePrimaryAction({\n isEnabled: isNotEmpty(defaultPrimaryActions) && defaultPrimaryActions.includes('create'),\n isVisible: showCreatePrimaryButton,\n libraryId: view.libraryId,\n canCreateAndLinkValue: canEditLinkAttributeValues,\n onCreate: defaultCallbacks?.primary?.create,\n joinLibraryContext,\n entrypoint,\n isMultivalue,\n totalCount,\n formId: creationFormId,\n refetch,\n });\n const {linkPrimaryAction, linkModal} = useLinkPrimaryAction({\n isEnabled: isLink,\n joinLibraryContext,\n isVisible: showCreatePrimaryButton,\n canAddLinkValue: canEditLinkAttributeValues,\n onLink: defaultCallbacks?.primary?.link,\n linkId: data?.totalCount === 0 ? undefined : data?.records[0]?.id_value,\n isMultivalue,\n maxItemsLeft: null, // TODO: use KitTable.row\n });\n\n const allVisibleKeys = data?.records.map(({key}) => key) ?? [];\n\n const {exportMassAction} = useExportMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('export'),\n store: {view, dispatch: viewSettingsDispatch},\n totalCount,\n onExport: defaultCallbacks?.mass?.export,\n });\n\n const {deactivateMassAction} = useDeactivateMassAction({\n isEnabled: !isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n allVisibleKeys,\n totalCount,\n onDeactivate: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const {unlinkMassAction} = useDeleteLinkValues({\n isEnabled: isLink && isNotEmpty(defaultMassActions) && defaultMassActions.includes('deactivate'),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n pagination: noPagination ? null : {limit: view.pageSize, offset: view.pageSize * (currentPage - 1)},\n allVisibleKeys,\n onDelete: defaultCallbacks?.mass?.deactivate,\n refetch,\n });\n\n const _isSelectionDisable = disableSelection || (isLink && !isMultivalue && totalCount > 0);\n\n const massActionSnackbarId = useMemo(() => `${SNACKBAR_MASS_ID}_${Date.now()}`, []);\n\n const {setSelectedKeys, selectAllButton} = useMassActions({\n isEnabled:\n totalCount > 0 && !_isSelectionDisable && (isNotEmpty(defaultMassActions) || isNotEmpty(massActions)),\n store: {view, dispatch: viewSettingsDispatch},\n filtersStore: filtersData,\n totalCount,\n allVisibleKeys,\n massActions: [exportMassAction, deactivateMassAction, unlinkMassAction, ...massActions].filter(Boolean),\n snackbarId: massActionSnackbarId,\n });\n\n const {primaryButton} = usePrimaryActionsButton({\n view,\n actions: [createPrimaryAction, linkPrimaryAction, ...primaryActions].filter(Boolean),\n hideFirstActionLabel,\n });\n\n const {viewSettingsButton, viewListButton} = useOpenViewSettings({view, isEnabled: !isMassSelectionAll});\n\n const {searchInput} = useSearchInput({view, dispatch: viewSettingsDispatch, setNewPage});\n\n useImperativeHandle(\n ref,\n () => ({\n createAction: createPrimaryAction,\n linkAction: linkPrimaryAction,\n totalCount,\n }),\n [createPrimaryAction?.disabled, linkPrimaryAction?.disabled, totalCount],\n );\n\n return (\n <>\n <FiltersContext.Provider value={{filtersData, dispatch: filtersDispatch}}>\n <ViewSettingsContext.Provider value={{view, dispatch: viewSettingsDispatch}}>\n <ExplorerPageDivStyled>\n {showTitle && (\n <ExplorerHeaderDivStyled>\n <KitTypography.Title level=\"h3\">\n {\n !viewSettingsLoading && (\n <ExplorerTitle\n library={view.libraryId}\n title={title}\n entrypoint={entrypoint}\n />\n ) /*TODO: manage loading*/\n }\n </KitTypography.Title>\n </ExplorerHeaderDivStyled>\n )}\n <ExplorerToolbar\n showFilters={showFilters}\n showSorts={showSorts}\n isMassSelectionAll={isMassSelectionAll}\n headless={hideTableHeader}\n canRemoveFilters={view?.enableConfigureView ?? false}\n selectAllButton={hideSelectAllAction ? null : selectAllButton}\n viewSettingsLoading={viewSettingsLoading}\n >\n {view?.enableConfigureView ? viewListButton : null}\n {showSearch ? searchInput : null}\n {view?.enableConfigureView ? viewSettingsButton : null}\n {hidePrimaryActions ? null : primaryButton}\n </ExplorerToolbar>\n {loadingData || viewSettingsLoading ? (\n <Loading />\n ) : hasNoResults ? (\n <ExplorerEmptyDataStyled>\n {emptyPlaceholder || <KitEmpty title={t('explorer.empty-data')} />}\n </ExplorerEmptyDataStyled>\n ) : (\n <DataView\n dataGroupedFilteredSorted={data?.records ?? emptyArray}\n attributesProperties={data?.attributes ?? emptyObject}\n attributesToDisplay={[WHO_AM_I_COLUMN, ...view.attributesIds]}\n hideTableHeader={hideTableHeader}\n paginationProps={\n entrypoint.type === 'library' && !noPagination\n ? {\n pageSizeOptions: defaultPageSizeOptions,\n currentPage,\n pageSize: view.pageSize,\n setNewPageSize,\n setNewPage,\n totalCount,\n }\n : undefined\n }\n itemActions={[...itemActions, replaceItemAction, editStatusItemAction]\n .filter(Boolean)\n .map(action => ({\n ...action,\n disabled: isMassSelectionAll || action.disabled,\n }))}\n selection={{\n onSelectionChange: _isSelectionDisable ? null : setSelectedKeys,\n isMassSelectionAll,\n selectedKeys: isMassSelectionAll\n ? data?.records.map(({whoAmI}) => whoAmI.id)\n : (view.massSelection as string[]),\n mode: selectionMode,\n }}\n />\n )}\n </ExplorerPageDivStyled>\n {settingsPanelElement && createPortal(<SidePanel />, settingsPanelElement?.() ?? document.body)}\n {replaceItemModal}\n {createModal}\n {linkModal}\n </ViewSettingsContext.Provider>\n </FiltersContext.Provider>\n <KitSnackBarProvider id={massActionSnackbarId} />\n </>\n );\n },\n);\n"]}
|
|
@@ -18,12 +18,12 @@ const DividerStyled = styled(KitDivider) `
|
|
|
18
18
|
height: 26px;
|
|
19
19
|
margin-inline: calc(var(--general-spacing-xxs) * 1px);
|
|
20
20
|
`;
|
|
21
|
-
export const ExplorerFiltersAndSorts = ({ isMassSelectionAll, showFilters, showSorts, selectAllButton }) => {
|
|
21
|
+
export const ExplorerFiltersAndSorts = ({ isMassSelectionAll, showFilters, showSorts, canRemoveFilters, selectAllButton }) => {
|
|
22
22
|
const { t } = useSharedTranslation();
|
|
23
23
|
const { view } = useViewSettingsContext();
|
|
24
24
|
const { sort } = view;
|
|
25
25
|
const { openSettingsPanel } = useOpenViewSettings({ view, isEnabled: true });
|
|
26
|
-
const { filtersProps } = useFilters();
|
|
26
|
+
const { filtersProps } = useFilters(!canRemoveFilters);
|
|
27
27
|
const { attributeDetailsById } = useAttributeDetailsData(view.libraryId);
|
|
28
28
|
// const visibleFilters = filters.filter(filterItem => !filterItem.hidden);
|
|
29
29
|
if (((filtersProps.length === 0 && sort.length === 0) || (!showFilters && !showSorts)) && !selectAllButton) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExplorerFiltersAndSorts.js","sourceRoot":"","sources":["../../../src/components/Explorer/ExplorerFiltersAndSorts.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AACxC,OAAO,EAAC,sBAAsB,EAAC,MAAM,mEAAmE,CAAC;AACzG,OAAO,EAAC,uBAAuB,EAAC,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,gBAAgB,EAA0B,MAAM,sDAAsD,CAAC;AAC/G,OAAO,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAE7D,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;;CAErC,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;;;CAGvC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ExplorerFiltersAndSorts.js","sourceRoot":"","sources":["../../../src/components/Explorer/ExplorerFiltersAndSorts.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 {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {SortOrder} from '_ui/_gqlTypes';\nimport {useViewSettingsContext} from './manage-view-settings/store-view-settings/useViewSettingsContext';\nimport {useAttributeDetailsData} from './manage-view-settings/_shared/useAttributeDetailsData';\nimport {useOpenViewSettings} from './manage-view-settings';\nimport {type ComponentProps, type FunctionComponent, type ReactNode} from 'react';\nimport {KitDivider, KitFilter} from 'aristid-ds';\nimport styled from 'styled-components';\nimport {CommonFilterItem, type ICommonFilterProps} from '_ui/components/Filters/filter-items/CommonFilterItem';\nimport {useFilters} from '_ui/components/Filters/useFilters';\n\nconst FilterStyled = styled(KitFilter)`\n flex: 0 0 auto;\n`;\n\nconst DividerStyled = styled(KitDivider)`\n height: 26px;\n margin-inline: calc(var(--general-spacing-xxs) * 1px);\n`;\n\nexport const ExplorerFiltersAndSorts: FunctionComponent<{\n isMassSelectionAll: boolean;\n showFilters: boolean;\n showSorts: boolean;\n canRemoveFilters: boolean;\n selectAllButton: ReactNode | null;\n}> = ({isMassSelectionAll, showFilters, showSorts, canRemoveFilters, selectAllButton}) => {\n const {t} = useSharedTranslation();\n\n const {view} = useViewSettingsContext();\n const {sort} = view;\n\n const {openSettingsPanel} = useOpenViewSettings({view, isEnabled: true});\n const {filtersProps} = useFilters(!canRemoveFilters);\n\n const {attributeDetailsById} = useAttributeDetailsData(view.libraryId);\n // const visibleFilters = filters.filter(filterItem => !filterItem.hidden);\n\n if (((filtersProps.length === 0 && sort.length === 0) || (!showFilters && !showSorts)) && !selectAllButton) {\n return null;\n }\n\n const sortValues =\n sort.length === 0\n ? undefined\n : sort.map(\n ({field, order}) =>\n (attributeDetailsById?.[field]?.label ?? field) +\n ' ' +\n (order === SortOrder.asc ? t('explorer.sort-ascending') : t('explorer.sort-descending')),\n );\n\n const _handleClickOnSort: ComponentProps<typeof FilterStyled>['onClick'] = () =>\n isMassSelectionAll ? undefined : openSettingsPanel('sort-items');\n\n if (!Object.keys(attributeDetailsById).length) {\n return <></>;\n }\n return (\n <>\n {selectAllButton && (\n <>\n <li>{selectAllButton}</li>\n {((showFilters && filtersProps.length !== 0) || (showSorts && sort.length > 0)) && (\n <DividerStyled type=\"vertical\" />\n )}\n </>\n )}\n {(showFilters || showSorts) && (\n <>\n {filtersProps.length > 0 &&\n filtersProps.map(filterProps => (\n <li key={filterProps.key}>\n <CommonFilterItem\n {...(filterProps as ICommonFilterProps)}\n disabled={isMassSelectionAll}\n />\n </li>\n ))}\n {showSorts && sort.length > 0 && (\n <li>\n <FilterStyled\n label={t('explorer.sort-items')}\n values={sortValues}\n disabled={isMassSelectionAll}\n onClick={_handleClickOnSort}\n />\n </li>\n )}\n </>\n )}\n </>\n );\n};\n"]}
|
|
@@ -32,8 +32,8 @@ const Section = styled.div `
|
|
|
32
32
|
align-items: center;
|
|
33
33
|
gap: calc(var(--general-spacing-xxs) * 1px);
|
|
34
34
|
`;
|
|
35
|
-
export const ExplorerToolbar = ({ isMassSelectionAll, showFilters, showSorts, headless, selectAllButton, viewSettingsLoading, children }) => {
|
|
35
|
+
export const ExplorerToolbar = ({ isMassSelectionAll, showFilters, showSorts, headless, canRemoveFilters, selectAllButton, viewSettingsLoading, children, }) => {
|
|
36
36
|
const { t } = useSharedTranslation();
|
|
37
|
-
return (_jsxs(ExplorerToolbarListStyled, { "aria-label": t('explorer.toolbar'), className: headless ? 'headless' : '', children: [_jsx(Section, { children: !viewSettingsLoading && (_jsx(ExplorerFiltersAndSorts, { selectAllButton: selectAllButton, showFilters: showFilters, showSorts: showSorts, isMassSelectionAll: isMassSelectionAll })) }), _jsx(Section, { children: children })] }));
|
|
37
|
+
return (_jsxs(ExplorerToolbarListStyled, { "aria-label": t('explorer.toolbar'), className: headless ? 'headless' : '', children: [_jsx(Section, { children: !viewSettingsLoading && (_jsx(ExplorerFiltersAndSorts, { selectAllButton: selectAllButton, showFilters: showFilters, showSorts: showSorts, canRemoveFilters: canRemoveFilters, isMassSelectionAll: isMassSelectionAll })) }), _jsx(Section, { children: children })] }));
|
|
38
38
|
};
|
|
39
39
|
//# sourceMappingURL=ExplorerToolbar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExplorerToolbar.js","sourceRoot":"","sources":["../../../src/components/Explorer/ExplorerToolbar.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,yBAAyB,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuB1C,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAKzB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"ExplorerToolbar.js","sourceRoot":"","sources":["../../../src/components/Explorer/ExplorerToolbar.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,yBAAyB,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuB1C,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAKzB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAQvB,CAAC,EACF,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,OAAO,CACH,MAAC,yBAAyB,kBAAa,CAAC,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAC/F,KAAC,OAAO,cACH,CAAC,mBAAmB,IAAI,CACrB,KAAC,uBAAuB,IACpB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,GACxC,CACL,GACK,EACV,KAAC,OAAO,cAAE,QAAQ,GAAW,IACL,CAC/B,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ReactNode, type FunctionComponent} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {ExplorerFiltersAndSorts} from './ExplorerFiltersAndSorts';\nimport styled from 'styled-components';\n\nconst ExplorerToolbarListStyled = styled.ul`\n padding: calc(var(--general-spacing-xs) * 1px);\n margin: 0;\n margin-bottom: calc(var(--general-spacing-s) * 1px);\n background: var(--general-colors-neutral-grey-100);\n border-radius: calc(var(--general-border-radius-s) * 1px);\n list-style: none;\n display: flex;\n overflow: auto;\n align-items: center;\n gap: calc(var(--general-spacing-xxs) * 1px);\n white-space: nowrap;\n min-height: 26px; // height of the filter chip\n justify-content: space-between;\n\n &.headless {\n margin-bottom: 0;\n }\n\n & > div:last-of-type {\n flex-shrink: 0;\n align-self: start;\n }\n`;\n\nconst Section = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: calc(var(--general-spacing-xxs) * 1px);\n`;\n\nexport const ExplorerToolbar: FunctionComponent<{\n isMassSelectionAll: boolean;\n showFilters: boolean;\n showSorts: boolean;\n headless: boolean;\n canRemoveFilters: boolean;\n selectAllButton: ReactNode | null;\n viewSettingsLoading: boolean;\n}> = ({\n isMassSelectionAll,\n showFilters,\n showSorts,\n headless,\n canRemoveFilters,\n selectAllButton,\n viewSettingsLoading,\n children,\n}) => {\n const {t} = useSharedTranslation();\n\n return (\n <ExplorerToolbarListStyled aria-label={t('explorer.toolbar')} className={headless ? 'headless' : ''}>\n <Section>\n {!viewSettingsLoading && (\n <ExplorerFiltersAndSorts\n selectAllButton={selectAllButton}\n showFilters={showFilters}\n showSorts={showSorts}\n canRemoveFilters={canRemoveFilters}\n isMassSelectionAll={isMassSelectionAll}\n />\n )}\n </Section>\n <Section>{children}</Section>\n </ExplorerToolbarListStyled>\n );\n};\n"]}
|
|
@@ -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 { KitIdCard } from 'aristid-ds';
|
|
6
6
|
export const IdCard = ({ item }) => {
|
|
7
|
-
const { id, label, preview, subLabel } = item;
|
|
7
|
+
const { id, label, preview, subLabel, color } = item;
|
|
8
8
|
const itemLabel = label ?? id;
|
|
9
9
|
const avatarProps = { label: itemLabel };
|
|
10
10
|
if (preview) {
|
|
11
11
|
avatarProps.src = preview.small;
|
|
12
12
|
}
|
|
13
|
-
return _jsx(KitIdCard, { avatarProps: avatarProps, title: label ?? id, description: subLabel ?? undefined });
|
|
13
|
+
return (_jsx(KitIdCard, { avatarProps: avatarProps, title: label ?? id, description: subLabel ?? undefined, color: color ?? undefined }));
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=IdCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdCard.js","sourceRoot":"","sources":["../../../src/components/Explorer/IdCard.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AASrC,MAAM,CAAC,MAAM,MAAM,GAAoC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;IAC9D,MAAM,EAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"IdCard.js","sourceRoot":"","sources":["../../../src/components/Explorer/IdCard.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AASrC,MAAM,CAAC,MAAM,MAAM,GAAoC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;IAC9D,MAAM,EAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC;IACnD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAe,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC;IAEnD,IAAI,OAAO,EAAE,CAAC;QACV,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,OAAO,CACH,KAAC,SAAS,IACN,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,WAAW,EAAE,QAAQ,IAAI,SAAS,EAClC,KAAK,EAAE,KAAK,IAAI,SAAS,GAC3B,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 {KitIdCard} from 'aristid-ds';\nimport {type IKitAvatar} from 'aristid-ds/dist/Kit/DataDisplay/Avatar/types';\nimport {type FunctionComponent} from 'react';\nimport {type RecordIdentityFragment} from '_ui/_gqlTypes';\n\ninterface IIdCardProps {\n item: RecordIdentityFragment['whoAmI'];\n}\n\nexport const IdCard: FunctionComponent<IIdCardProps> = ({item}) => {\n const {id, label, preview, subLabel, color} = item;\n const itemLabel = label ?? id;\n const avatarProps: IKitAvatar = {label: itemLabel};\n\n if (preview) {\n avatarProps.src = preview.small;\n }\n\n return (\n <KitIdCard\n avatarProps={avatarProps}\n title={label ?? id}\n description={subLabel ?? undefined}\n color={color ?? undefined}\n />\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeleteLinkValues.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/useDeleteLinkValues.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,yBAAyB,MAAM,uFAAuF,CAAC;AAE9H,OAAO,EAAoD,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AACnH,OAAO,EAA0B,OAAO,EAAC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"useDeleteLinkValues.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/useDeleteLinkValues.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 useSaveValueBatchMutation from '_ui/components/RecordEdition/EditRecordContent/hooks/useExecuteSaveValueBatchMutation';\nimport {type FeatureHook, type IEntrypointLink, type IMassActions} from '../_types';\nimport {type IViewSettingsAction, type IViewSettingsState, ViewSettingsActionTypes} from '../manage-view-settings';\nimport {type Dispatch, type Key, useMemo} from 'react';\nimport {useExplorerData} from '../_queries/useExplorerData';\nimport {FaTrash} from 'react-icons/fa';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {KitModal} from 'aristid-ds';\nimport {BREAK_TWO_LINES, MASS_SELECTION_ALL} from '../_constants';\nimport {type IValueToSubmit} from '_ui/components/RecordEdition/EditRecordContent/_types';\nimport {type IUIFiltersState} from '_ui/components/Filters/context/filtersReducer';\n\nexport const useDeleteLinkValues = ({\n isEnabled,\n store: {view, dispatch},\n filtersStore: {filters, filtersOperator},\n pagination,\n allVisibleKeys,\n onDelete,\n refetch,\n}: FeatureHook<{\n pagination: null | {limit: number; offset: number};\n store: {\n view: IViewSettingsState;\n dispatch: Dispatch<IViewSettingsAction>;\n };\n filtersStore: IUIFiltersState;\n allVisibleKeys: string[];\n onDelete?: IMassActions['callback'];\n refetch: ReturnType<typeof useExplorerData>['refetch'];\n}>) => {\n const {t} = useSharedTranslation();\n const {saveValues} = useSaveValueBatchMutation();\n\n const isLink = view.entrypoint.type === 'link';\n const {data: linkData, canEditLinkAttributeValues: canUnlinkValues} = useExplorerData({\n entrypoint: view.entrypoint,\n libraryId: view.libraryId,\n attributeIds: view.attributesIds,\n fulltextSearch: view.fulltextSearch,\n pagination,\n sorts: view.sort,\n filtersOperator,\n filters,\n skip: !isLink,\n });\n\n const _unlinkMassAction: IMassActions = useMemo(\n () => ({\n label: t('explorer.massAction.deactivate'),\n icon: <FaTrash />,\n deselectAll: true,\n callback: massSelectionFilter => {\n KitModal.confirm({\n width: '100%',\n style: {content: {width: '90vw', maxWidth: '656px'}},\n type: 'confirm',\n icon: false,\n title:\n t('explorer.delete_link', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) ?? undefined,\n content:\n t('explorer.delete_link_description', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) +\n BREAK_TWO_LINES +\n t('global.are_you_sure'),\n okText: t('global.submit') ?? undefined,\n cancelText: t('global.cancel') ?? undefined,\n onOk: async () => {\n const entrypoint = view.entrypoint as IEntrypointLink;\n let values: IValueToSubmit[];\n if (\n view.massSelection === MASS_SELECTION_ALL ||\n allVisibleKeys.every(key => view.massSelection.includes(key))\n ) {\n values =\n (linkData?.records ?? []).map(({id_value}) => ({\n attribute: entrypoint.linkAttributeId,\n idValue: id_value ?? null,\n value: null,\n })) ?? [];\n } else {\n values = (linkData?.records ?? []).reduce<IValueToSubmit[]>((acc, {id_value, key}) => {\n if (view.massSelection.includes(key)) {\n acc.push({\n attribute: entrypoint.linkAttributeId,\n idValue: id_value ?? null,\n value: null,\n });\n }\n return acc;\n }, []);\n }\n\n if (values.length > 0) {\n await saveValues(\n {\n id: entrypoint.parentRecordId,\n library: {\n id: entrypoint.parentLibraryId,\n },\n },\n values,\n undefined,\n true,\n );\n\n onDelete?.(\n massSelectionFilter,\n values.map(({idValue}) => idValue as Key),\n );\n await refetch();\n }\n dispatch({\n type: ViewSettingsActionTypes.SET_SELECTED_KEYS,\n payload: [],\n });\n },\n });\n },\n }),\n [t, saveValues, view.massSelection, dispatch, view.libraryId, allVisibleKeys],\n );\n\n return {\n unlinkMassAction: isEnabled && canUnlinkValues ? _unlinkMassAction : null,\n };\n};\n"]}
|
|
@@ -4,17 +4,18 @@ 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 { useMemo } from 'react';
|
|
6
6
|
import { FaFileExport } from 'react-icons/fa';
|
|
7
|
-
import { KitAlert, KitModal } from 'aristid-ds';
|
|
7
|
+
import { KitAlert, KitModal, useKitNotification } from 'aristid-ds';
|
|
8
8
|
import { useExportLazyQuery } from '../../../_gqlTypes';
|
|
9
9
|
import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
|
|
10
10
|
import { BREAK_TWO_LINES, MASS_SELECTION_ALL } from '../_constants';
|
|
11
|
-
import { ERROR_ALERT_DURATION,
|
|
11
|
+
import { ERROR_ALERT_DURATION, INFO_NOTIFICATION_DURATION_SECONDS } from '../../../constants';
|
|
12
12
|
/**
|
|
13
13
|
* Hook that provides a mass action configuration for exporting selected or all items
|
|
14
14
|
* from a view/data set
|
|
15
15
|
*/
|
|
16
16
|
export const useExportMassAction = ({ isEnabled, store: { view, dispatch }, totalCount, onExport, }) => {
|
|
17
17
|
const { t } = useSharedTranslation();
|
|
18
|
+
const { kitNotification } = useKitNotification();
|
|
18
19
|
const [exportQuery] = useExportLazyQuery();
|
|
19
20
|
const _exportMassAction = useMemo(() => ({
|
|
20
21
|
label: t('explorer.massAction.export'),
|
|
@@ -53,15 +54,13 @@ export const useExportMassAction = ({ isEnabled, store: { view, dispatch }, tota
|
|
|
53
54
|
errorWithExtensions.extensions = graphQLError?.extensions;
|
|
54
55
|
throw errorWithExtensions;
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
showIcon: true,
|
|
58
|
-
duration: SUCCESS_ALERT_DURATION,
|
|
57
|
+
kitNotification.info({
|
|
59
58
|
message: t('explorer.massAction.export_message', { count: total }),
|
|
60
59
|
description: t('explorer.massAction.export_description', {
|
|
61
60
|
count: total,
|
|
62
61
|
total,
|
|
63
62
|
}),
|
|
64
|
-
|
|
63
|
+
duration: INFO_NOTIFICATION_DURATION_SECONDS,
|
|
65
64
|
});
|
|
66
65
|
onExport?.(massSelectionFilter, view.massSelection);
|
|
67
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExportMassAction.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/useExportMassAction.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAgB,OAAO,EAAC,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"useExportMassAction.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-mass/useExportMassAction.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAgB,OAAO,EAAC,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAGpE,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAClE,OAAO,EAAC,oBAAoB,EAAE,kCAAkC,EAAC,MAAM,eAAe,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAChC,SAAS,EACT,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EACvB,UAAU,EACV,QAAQ,GAQV,EAAE,EAAE;IACF,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,eAAe,EAAC,GAAG,kBAAkB,EAAE,CAAC;IAE/C,MAAM,CAAC,WAAW,CAAC,GAAG,kBAAkB,EAAE,CAAC;IAE3C,MAAM,iBAAiB,GAAiB,OAAO,CAC3C,GAAG,EAAE,CAAC,CAAC;QACH,KAAK,EAAE,CAAC,CAAC,4BAA4B,CAAC;QACtC,IAAI,EAAE,KAAC,YAAY,KAAG;QACtB,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE,mBAAmB,CAAC,EAAE;YAC5B,QAAQ,CAAC,OAAO,CAAC;gBACb,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,EAAC,OAAO,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAC,EAAC;gBACpD,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,SAAS;gBACf,KAAK,EACD,CAAC,CAAC,sBAAsB,EAAE;oBACtB,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;iBAC1F,CAAC,IAAI,SAAS;gBACnB,OAAO,EACH,CAAC,CAAC,kCAAkC,EAAE;oBAClC,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;iBAC1F,CAAC;oBACF,eAAe;oBACf,CAAC,CAAC,qBAAqB,CAAC;gBAC5B,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,SAAS;gBACxC,UAAU,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,SAAS;gBAC3C,IAAI,EAAE,KAAK,IAAI,EAAE;oBACb,MAAM,KAAK,GACP,IAAI,CAAC,aAAa,KAAK,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;oBACvF,IAAI,CAAC;wBACD,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,WAAW,CAAC;4BACpC,SAAS,EAAE;gCACP,OAAO,EAAE,IAAI,CAAC,SAAS;gCACvB,OAAO,EAAE,mBAAmB;gCAC5B,OAAO,EAAE,SAAS,EAAE,kFAAkF;6BACzG;yBACJ,CAAC,CAAC;wBACH,IAAI,KAAK,EAAE,CAAC;4BACR,iEAAiE;4BACjE,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;4BAC9C,MAAM,mBAAmB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BACpD,mBAA2B,CAAC,UAAU,GAAG,YAAY,EAAE,UAAU,CAAC;4BACnE,MAAM,mBAAmB,CAAC;wBAC9B,CAAC;wBAED,eAAe,CAAC,IAAI,CAAC;4BACjB,OAAO,EAAE,CAAC,CAAC,oCAAoC,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;4BAChE,WAAW,EAAE,CAAC,CAAC,wCAAwC,EAAE;gCACrD,KAAK,EAAE,KAAK;gCACZ,KAAK;6BACR,CAAC;4BACF,QAAQ,EAAE,kCAAkC;yBAC/C,CAAC,CAAC;wBAEH,QAAQ,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;4BAC/C,QAAQ,CAAC,KAAK,CAAC;gCACX,QAAQ,EAAE,IAAI;gCACd,QAAQ,EAAE,oBAAoB;gCAC9B,OAAO,EAAE,CAAC,CAAC,sBAAsB,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;gCAClD,WAAW,EAAE,CAAC,CAAC,qDAAqD,EAAE;oCAClE,OAAO,EAAE,IAAI,CAAC,SAAS;iCAC1B,CAAC;gCACF,QAAQ,EAAE,IAAI;6BACjB,CAAC,CAAC;wBACP,CAAC;6BAAM,CAAC;4BACJ,QAAQ,CAAC,KAAK,CAAC;gCACX,QAAQ,EAAE,IAAI;gCACd,QAAQ,EAAE,oBAAoB;gCAC9B,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC;gCAClC,WAAW,EAAE,CAAC,CAAC,8CAA8C,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;gCAC9E,QAAQ,EAAE,IAAI;6BACjB,CAAC,CAAC;wBACP,CAAC;oBACL,CAAC;gBACL,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;KACJ,CAAC,EACF,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CACjE,CAAC;IAEF,OAAO;QACH,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;KACzD,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type Dispatch, useMemo} from 'react';\nimport {FaFileExport} from 'react-icons/fa';\nimport {KitAlert, KitModal, useKitNotification} from 'aristid-ds';\nimport {useExportLazyQuery} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type FeatureHook, type IMassActions} from '../_types';\nimport {type IViewSettingsAction, type IViewSettingsState} from '../manage-view-settings';\nimport {BREAK_TWO_LINES, MASS_SELECTION_ALL} from '../_constants';\nimport {ERROR_ALERT_DURATION, INFO_NOTIFICATION_DURATION_SECONDS} from '_ui/constants';\n\n/**\n * Hook that provides a mass action configuration for exporting selected or all items\n * from a view/data set\n */\nexport const useExportMassAction = ({\n isEnabled,\n store: {view, dispatch},\n totalCount,\n onExport,\n}: FeatureHook<{\n store: {\n view: IViewSettingsState;\n dispatch: Dispatch<IViewSettingsAction>;\n };\n totalCount: number;\n onExport?: IMassActions['callback'];\n}>) => {\n const {t} = useSharedTranslation();\n const {kitNotification} = useKitNotification();\n\n const [exportQuery] = useExportLazyQuery();\n\n const _exportMassAction: IMassActions = useMemo(\n () => ({\n label: t('explorer.massAction.export'),\n icon: <FaFileExport />,\n deselectAll: false,\n callback: massSelectionFilter => {\n KitModal.confirm({\n width: '100%',\n style: {content: {width: '90vw', maxWidth: '656px'}},\n icon: false,\n type: 'confirm',\n title:\n t('explorer.export_item', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) ?? undefined,\n content:\n t('explorer.export_item_description', {\n count: view.massSelection === MASS_SELECTION_ALL ? Infinity : view.massSelection.length,\n }) +\n BREAK_TWO_LINES +\n t('global.are_you_sure'),\n okText: t('global.confirm') ?? undefined,\n cancelText: t('global.cancel') ?? undefined,\n onOk: async () => {\n const total =\n view.massSelection === MASS_SELECTION_ALL ? totalCount : view.massSelection.length;\n try {\n const {data, error} = await exportQuery({\n variables: {\n library: view.libraryId,\n filters: massSelectionFilter,\n profile: 'default', // Set 'default' by default, it'll change when we can select a profile from the UI\n },\n });\n if (error) {\n // Preserve the extensions property which contains the error code\n const graphQLError = error.graphQLErrors?.[0];\n const errorWithExtensions = new Error(error.message);\n (errorWithExtensions as any).extensions = graphQLError?.extensions;\n throw errorWithExtensions;\n }\n\n kitNotification.info({\n message: t('explorer.massAction.export_message', {count: total}),\n description: t('explorer.massAction.export_description', {\n count: total,\n total,\n }),\n duration: INFO_NOTIFICATION_DURATION_SECONDS,\n });\n\n onExport?.(massSelectionFilter, view.massSelection);\n } catch (e) {\n if (e.extensions?.code === 'CUSTOM_CONFIG_ERROR') {\n KitAlert.error({\n showIcon: true,\n duration: ERROR_ALERT_DURATION,\n message: t('error.error_occurred', {count: total}),\n description: t('explorer.massAction.export_config_error_description', {\n library: view.libraryId,\n }),\n closable: true,\n });\n } else {\n KitAlert.error({\n showIcon: true,\n duration: ERROR_ALERT_DURATION,\n message: t('error.error_occurred'),\n description: t('explorer.massAction.export_error_description', {count: total}),\n closable: true,\n });\n }\n }\n },\n });\n },\n }),\n [t, exportQuery, view.massSelection, dispatch, view.libraryId],\n );\n\n return {\n exportMassAction: isEnabled ? _exportMassAction : null,\n };\n};\n"]}
|
|
@@ -6,14 +6,12 @@ import { useRef } from 'react';
|
|
|
6
6
|
import { useViewSettingsContext } from './manage-view-settings/store-view-settings/useViewSettingsContext';
|
|
7
7
|
import { useEditSettings, ViewSettingsActionTypes } from './manage-view-settings';
|
|
8
8
|
import { mapViewTypeFromExplorerToLegacy, mapViewTypeFromLegacyToExplorer } from './_constants';
|
|
9
|
-
import { useTransformFilters } from '../../components/Filters/useTransformFilters';
|
|
10
9
|
import { useFiltersContext } from '../../components/Filters/useFiltersContext';
|
|
11
10
|
import { FiltersActionTypes } from '../../components/Filters/context/filtersReducer';
|
|
12
11
|
export const useLoadView = () => {
|
|
13
12
|
const { view, dispatch } = useViewSettingsContext();
|
|
14
13
|
const { dispatch: filtersDispatch } = useFiltersContext();
|
|
15
14
|
const { closeSettingsPanel } = useEditSettings();
|
|
16
|
-
const { toUIFilters, toValidFilters } = useTransformFilters();
|
|
17
15
|
const currentView = useRef(null);
|
|
18
16
|
const [fetchAttributes] = useExplorerAttributesLazyQuery({
|
|
19
17
|
fetchPolicy: 'network-only',
|