@carbon/ibm-products 1.13.0 → 1.16.0
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/css/components/Datagrid/styles/addons/CustomizeColumnsModal.css +47 -0
- package/css/components/Datagrid/styles/addons/CustomizeColumnsModal.css.map +1 -0
- package/css/components/Datagrid/styles/addons/RowSizeDropdown.css +20 -0
- package/css/components/Datagrid/styles/addons/RowSizeDropdown.css.map +1 -0
- package/css/components/Datagrid/styles/datagrid.css +268 -0
- package/css/components/Datagrid/styles/datagrid.css.map +1 -0
- package/css/components/Datagrid/styles/index.css +513 -0
- package/css/components/Datagrid/styles/index.css.map +1 -0
- package/css/components/Datagrid/styles/useActionsColumn.css +23 -0
- package/css/components/Datagrid/styles/useActionsColumn.css.map +1 -0
- package/css/components/Datagrid/styles/useColumnRightAlign.css +28 -0
- package/css/components/Datagrid/styles/useColumnRightAlign.css.map +1 -0
- package/css/components/Datagrid/styles/useNestedRows.css +15 -0
- package/css/components/Datagrid/styles/useNestedRows.css.map +1 -0
- package/css/components/Datagrid/styles/useNestedTable.css +25 -0
- package/css/components/Datagrid/styles/useNestedTable.css.map +1 -0
- package/css/components/Datagrid/styles/useSelectAllToggle.css +28 -0
- package/css/components/Datagrid/styles/useSelectAllToggle.css.map +1 -0
- package/css/components/Datagrid/styles/useSortableColumns.css +50 -0
- package/css/components/Datagrid/styles/useSortableColumns.css.map +1 -0
- package/css/components/Datagrid/styles/useStickyColumn.css +35 -0
- package/css/components/Datagrid/styles/useStickyColumn.css.map +1 -0
- package/css/index-full-carbon.css +611 -10
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +3 -3
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +7 -4
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +2 -2
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +611 -10
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +3 -3
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +611 -10
- package/css/index.css.map +1 -1
- package/css/index.min.css +3 -3
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +106 -43
- package/es/components/AddSelect/AddSelectFilter.js +172 -0
- package/es/components/AddSelect/add-select-utils.js +30 -0
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +255 -175
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +78 -17
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +65 -20
- package/es/components/DataSpreadsheet/hooks/index.js +11 -0
- package/es/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +139 -0
- package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +2 -4
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +68 -0
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +1 -3
- package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +20 -8
- package/es/components/DataSpreadsheet/utils/generateData.js +17 -9
- package/es/components/DataSpreadsheet/utils/getSelectionAreaPoints.js +18 -0
- package/es/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +30 -0
- package/es/components/DataSpreadsheet/utils/handleActiveCellInSelectionEnter.js +121 -0
- package/es/components/DataSpreadsheet/utils/handleActiveCellInSelectionTab.js +108 -0
- package/es/components/DataSpreadsheet/utils/handleEditSubmit.js +87 -0
- package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +42 -8
- package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +225 -13
- package/es/components/DataSpreadsheet/utils/selectAllCells.js +53 -0
- package/es/components/Datagrid/Datagrid/Datagrid.js +70 -0
- package/es/components/Datagrid/Datagrid/DatagridBody.js +36 -0
- package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +19 -0
- package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +26 -0
- package/es/components/Datagrid/Datagrid/DatagridHead.js +31 -0
- package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +57 -0
- package/es/components/Datagrid/Datagrid/DatagridRefBody.js +37 -0
- package/es/components/Datagrid/Datagrid/DatagridRow.js +60 -0
- package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +50 -0
- package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +122 -0
- package/es/components/Datagrid/Datagrid/DatagridSimpleBody.js +36 -0
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +22 -0
- package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +87 -0
- package/es/components/Datagrid/Datagrid/DraggableElement.js +188 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +78 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +51 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +140 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +157 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +62 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/common.js +13 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +9 -0
- package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +62 -0
- package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +139 -0
- package/es/components/Datagrid/Datagrid/addons/RowSize/index.js +8 -0
- package/es/components/Datagrid/Datagrid/index.js +8 -0
- package/es/components/Datagrid/Datagrid.stories/CustomizeColumnStory.js +6 -0
- package/es/components/Datagrid/Datagrid.stories/LeftPanelStory.js +6 -0
- package/es/components/Datagrid/Datagrid.stories/RowSizeDropdownStory.js +6 -0
- package/es/components/Datagrid/Datagrid.stories/SelectAllWithToggleStory.js +6 -0
- package/es/components/Datagrid/Datagrid.stories/StickyActionsColumnStory.js +92 -0
- package/es/components/Datagrid/Datagrid.stories/common.js +199 -0
- package/es/components/Datagrid/Datagrid.stories/index.js +5 -0
- package/es/components/Datagrid/common-column-ids.js +8 -0
- package/es/components/Datagrid/index.js +22 -0
- package/es/components/Datagrid/useActionsColumn.js +86 -0
- package/es/components/Datagrid/useColumnRightAlign.js +52 -0
- package/es/components/Datagrid/useCustomizeColumns.js +45 -0
- package/es/components/Datagrid/useDatagrid.js +44 -0
- package/es/components/Datagrid/useDefaultStringRenderer.js +48 -0
- package/es/components/Datagrid/useDisableSelectRows.js +84 -0
- package/es/components/Datagrid/useExpandedRow.js +52 -0
- package/es/components/Datagrid/useFlexResize.js +51 -0
- package/es/components/Datagrid/useFloatingScroll.js +88 -0
- package/es/components/Datagrid/useInfiniteScroll.js +54 -0
- package/es/components/Datagrid/useNestedRows.js +53 -0
- package/es/components/Datagrid/useOnRowClick.js +37 -0
- package/es/components/Datagrid/useParentDimensions.js +65 -0
- package/es/components/Datagrid/useResizeTable.js +40 -0
- package/es/components/Datagrid/useRowExpander.js +34 -0
- package/es/components/Datagrid/useRowIsMouseOver.js +61 -0
- package/es/components/Datagrid/useRowRenderer.js +30 -0
- package/es/components/Datagrid/useRowSize.js +56 -0
- package/es/components/Datagrid/useSelectAllToggle.js +74 -0
- package/es/components/Datagrid/useSelectRows.js +107 -0
- package/es/components/Datagrid/useSkeletonRows.js +32 -0
- package/es/components/Datagrid/useSortableColumns.js +110 -0
- package/es/components/Datagrid/useStickyColumn.js +183 -0
- package/es/components/MultiAddSelect/MultiAddSelect.js +150 -3
- package/es/components/PageHeader/PageHeader.js +3 -1
- package/es/components/SingleAddSelect/SingleAddSelect.js +90 -4
- package/es/components/TagSet/TagSet.js +13 -6
- package/es/components/Tearsheet/TearsheetShell.js +34 -10
- package/es/components/index.js +2 -1
- package/es/global/js/package-settings.js +4 -2
- package/lib/components/AddSelect/AddSelect.js +105 -41
- package/lib/components/AddSelect/AddSelectFilter.js +190 -0
- package/lib/components/AddSelect/add-select-utils.js +35 -2
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +261 -177
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +79 -23
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +67 -21
- package/lib/components/DataSpreadsheet/hooks/index.js +45 -0
- package/lib/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +151 -0
- package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +2 -4
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +79 -0
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +1 -3
- package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +21 -8
- package/lib/components/DataSpreadsheet/utils/generateData.js +17 -9
- package/lib/components/DataSpreadsheet/utils/getSelectionAreaPoints.js +27 -0
- package/lib/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +40 -0
- package/lib/components/DataSpreadsheet/utils/handleActiveCellInSelectionEnter.js +127 -0
- package/lib/components/DataSpreadsheet/utils/handleActiveCellInSelectionTab.js +118 -0
- package/lib/components/DataSpreadsheet/utils/handleEditSubmit.js +94 -0
- package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +44 -8
- package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +235 -20
- package/lib/components/DataSpreadsheet/utils/selectAllCells.js +60 -0
- package/lib/components/Datagrid/Datagrid/Datagrid.js +86 -0
- package/lib/components/Datagrid/Datagrid/DatagridBody.js +50 -0
- package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +31 -0
- package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +38 -0
- package/lib/components/Datagrid/Datagrid/DatagridHead.js +43 -0
- package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +73 -0
- package/lib/components/Datagrid/Datagrid/DatagridRefBody.js +44 -0
- package/lib/components/Datagrid/Datagrid/DatagridRow.js +68 -0
- package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +55 -0
- package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +139 -0
- package/lib/components/Datagrid/Datagrid/DatagridSimpleBody.js +44 -0
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +35 -0
- package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +101 -0
- package/lib/components/Datagrid/Datagrid/DraggableElement.js +210 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +92 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +65 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +166 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +173 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +73 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/common.js +25 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +23 -0
- package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +80 -0
- package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +160 -0
- package/lib/components/Datagrid/Datagrid/addons/RowSize/index.js +15 -0
- package/lib/components/Datagrid/Datagrid/index.js +15 -0
- package/lib/components/Datagrid/Datagrid.stories/CustomizeColumnStory.js +13 -0
- package/lib/components/Datagrid/Datagrid.stories/LeftPanelStory.js +13 -0
- package/lib/components/Datagrid/Datagrid.stories/RowSizeDropdownStory.js +13 -0
- package/lib/components/Datagrid/Datagrid.stories/SelectAllWithToggleStory.js +13 -0
- package/lib/components/Datagrid/Datagrid.stories/StickyActionsColumnStory.js +112 -0
- package/lib/components/Datagrid/Datagrid.stories/common.js +215 -0
- package/lib/components/Datagrid/Datagrid.stories/index.js +47 -0
- package/lib/components/Datagrid/common-column-ids.js +16 -0
- package/lib/components/Datagrid/index.js +127 -0
- package/lib/components/Datagrid/useActionsColumn.js +94 -0
- package/lib/components/Datagrid/useColumnRightAlign.js +59 -0
- package/lib/components/Datagrid/useCustomizeColumns.js +55 -0
- package/lib/components/Datagrid/useDatagrid.js +58 -0
- package/lib/components/Datagrid/useDefaultStringRenderer.js +54 -0
- package/lib/components/Datagrid/useDisableSelectRows.js +92 -0
- package/lib/components/Datagrid/useExpandedRow.js +58 -0
- package/lib/components/Datagrid/useFlexResize.js +61 -0
- package/lib/components/Datagrid/useFloatingScroll.js +101 -0
- package/lib/components/Datagrid/useInfiniteScroll.js +67 -0
- package/lib/components/Datagrid/useNestedRows.js +65 -0
- package/lib/components/Datagrid/useOnRowClick.js +45 -0
- package/lib/components/Datagrid/useParentDimensions.js +75 -0
- package/lib/components/Datagrid/useResizeTable.js +48 -0
- package/lib/components/Datagrid/useRowExpander.js +45 -0
- package/lib/components/Datagrid/useRowIsMouseOver.js +66 -0
- package/lib/components/Datagrid/useRowRenderer.js +40 -0
- package/lib/components/Datagrid/useRowSize.js +67 -0
- package/lib/components/Datagrid/useSelectAllToggle.js +88 -0
- package/lib/components/Datagrid/useSelectRows.js +119 -0
- package/lib/components/Datagrid/useSkeletonRows.js +42 -0
- package/lib/components/Datagrid/useSortableColumns.js +117 -0
- package/lib/components/Datagrid/useStickyColumn.js +190 -0
- package/lib/components/MultiAddSelect/MultiAddSelect.js +150 -2
- package/lib/components/PageHeader/PageHeader.js +3 -1
- package/lib/components/SingleAddSelect/SingleAddSelect.js +91 -3
- package/lib/components/TagSet/TagSet.js +13 -6
- package/lib/components/Tearsheet/TearsheetShell.js +36 -10
- package/lib/components/index.js +9 -1
- package/lib/global/js/package-settings.js +4 -2
- package/package.json +16 -12
- package/scss/components/AboutModal/_about-modal.scss +4 -0
- package/scss/components/AddSelect/_add-select.scss +46 -2
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +41 -4
- package/scss/components/Datagrid/_datagrid.scss +66 -0
- package/scss/components/Datagrid/_index.scss +8 -0
- package/scss/components/Datagrid/_storybook-styles.scss +26 -0
- package/scss/components/Datagrid/styles/_variables.scss +9 -0
- package/scss/components/Datagrid/styles/addons/CustomizeColumnsModal.scss +48 -0
- package/scss/components/Datagrid/styles/addons/RowSizeDropdown.scss +23 -0
- package/scss/components/Datagrid/styles/datagrid.scss +326 -0
- package/scss/components/Datagrid/styles/index.scss +17 -0
- package/scss/components/Datagrid/styles/useActionsColumn.scss +24 -0
- package/scss/components/Datagrid/styles/useColumnRightAlign.scss +29 -0
- package/scss/components/Datagrid/styles/useNestedRows.scss +17 -0
- package/scss/components/Datagrid/styles/useNestedTable.scss +28 -0
- package/scss/components/Datagrid/styles/useSelectAllToggle.scss +28 -0
- package/scss/components/Datagrid/styles/useSortableColumns.scss +55 -0
- package/scss/components/Datagrid/styles/useStickyColumn.scss +38 -0
- package/scss/components/ExportModal/_export-modal.scss +0 -4
- package/scss/components/Tearsheet/_tearsheet.scss +4 -0
- package/scss/components/_index.scss +1 -0
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
-
var _excluded = ["className", "columnInputPlaceholder", "description", "
|
|
5
|
+
var _excluded = ["className", "clearFiltersText", "columnInputPlaceholder", "description", "globalFilters", "globalFiltersIconDescription", "globalFiltersPlaceholderText", "globalFiltersPrimaryButtonText", "globalFiltersSecondaryButtonText", "globalSearchLabel", "globalSearchPlaceholder", "influencerTitle", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSubmit", "onSubmitButtonText", "open", "portalTarget", "removeIconDescription", "searchResultsLabel", "title"];
|
|
6
6
|
//
|
|
7
7
|
// Copyright IBM Corp. 2022
|
|
8
8
|
//
|
|
@@ -12,7 +12,7 @@ var _excluded = ["className", "columnInputPlaceholder", "description", "influenc
|
|
|
12
12
|
import React, { forwardRef, useState, useEffect } from 'react';
|
|
13
13
|
import PropTypes from 'prop-types';
|
|
14
14
|
import cx from 'classnames';
|
|
15
|
-
import {
|
|
15
|
+
import { Tag } from 'carbon-components-react';
|
|
16
16
|
import { Tearsheet, TearsheetNarrow } from '../../components/Tearsheet';
|
|
17
17
|
import { NoDataEmptyState } from '../../components/EmptyStates/NoDataEmptyState';
|
|
18
18
|
import { pkg } from '../../settings';
|
|
@@ -20,16 +20,24 @@ import { AddSelectSidebar } from './AddSelectSidebar';
|
|
|
20
20
|
import { AddSelectBreadcrumbs } from './AddSelectBreadcrumbs';
|
|
21
21
|
import { AddSelectList } from './AddSelectList';
|
|
22
22
|
import { AddSelectColumn } from './AddSelectColumn';
|
|
23
|
-
import { normalize, flatten } from './add-select-utils';
|
|
23
|
+
import { normalize, flatten, getGlobalFilterValues } from './add-select-utils';
|
|
24
|
+
import { AddSelectFilter } from './AddSelectFilter';
|
|
24
25
|
var componentName = 'AddSelect';
|
|
25
26
|
export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
26
27
|
var _cx;
|
|
27
28
|
|
|
28
29
|
var className = _ref.className,
|
|
30
|
+
clearFiltersText = _ref.clearFiltersText,
|
|
29
31
|
columnInputPlaceholder = _ref.columnInputPlaceholder,
|
|
30
32
|
description = _ref.description,
|
|
33
|
+
globalFilters = _ref.globalFilters,
|
|
34
|
+
globalFiltersIconDescription = _ref.globalFiltersIconDescription,
|
|
35
|
+
globalFiltersPlaceholderText = _ref.globalFiltersPlaceholderText,
|
|
36
|
+
globalFiltersPrimaryButtonText = _ref.globalFiltersPrimaryButtonText,
|
|
37
|
+
globalFiltersSecondaryButtonText = _ref.globalFiltersSecondaryButtonText,
|
|
38
|
+
globalSearchLabel = _ref.globalSearchLabel,
|
|
39
|
+
globalSearchPlaceholder = _ref.globalSearchPlaceholder,
|
|
31
40
|
influencerTitle = _ref.influencerTitle,
|
|
32
|
-
inputPlaceholder = _ref.inputPlaceholder,
|
|
33
41
|
items = _ref.items,
|
|
34
42
|
itemsLabel = _ref.itemsLabel,
|
|
35
43
|
multi = _ref.multi,
|
|
@@ -39,13 +47,12 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
39
47
|
noSelectionTitle = _ref.noSelectionTitle,
|
|
40
48
|
onClose = _ref.onClose,
|
|
41
49
|
onCloseButtonText = _ref.onCloseButtonText,
|
|
42
|
-
onSearchFilter = _ref.onSearchFilter,
|
|
43
50
|
onSubmit = _ref.onSubmit,
|
|
44
51
|
onSubmitButtonText = _ref.onSubmitButtonText,
|
|
45
52
|
open = _ref.open,
|
|
53
|
+
portalTarget = _ref.portalTarget,
|
|
46
54
|
removeIconDescription = _ref.removeIconDescription,
|
|
47
55
|
searchResultsLabel = _ref.searchResultsLabel,
|
|
48
|
-
textInputLabel = _ref.textInputLabel,
|
|
49
56
|
title = _ref.title,
|
|
50
57
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
51
58
|
|
|
@@ -86,19 +93,39 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
86
93
|
flatItems = _useState14[0],
|
|
87
94
|
setFlatItems = _useState14[1];
|
|
88
95
|
|
|
96
|
+
var _useState15 = useState([]),
|
|
97
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
98
|
+
globalFilterOpts = _useState16[0],
|
|
99
|
+
setGlobalFilterOpts = _useState16[1];
|
|
100
|
+
|
|
101
|
+
var _useState17 = useState({}),
|
|
102
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
103
|
+
appliedGlobalFilters = _useState18[0],
|
|
104
|
+
setAppliedGlobalFilters = _useState18[1];
|
|
105
|
+
|
|
89
106
|
useEffect(function () {
|
|
90
107
|
var entries = items.entries; // flatItems is just a single array of all entries including children
|
|
91
108
|
|
|
92
|
-
|
|
109
|
+
var flattenedItems = flatten(entries);
|
|
110
|
+
|
|
111
|
+
if (multi) {
|
|
112
|
+
if (globalFilters !== null && globalFilters !== void 0 && globalFilters.length) {
|
|
113
|
+
var globalFilterValues = getGlobalFilterValues(globalFilters, flattenedItems);
|
|
114
|
+
setGlobalFilterOpts(globalFilterValues);
|
|
115
|
+
} // multi select with nested data needs to be normalized
|
|
116
|
+
|
|
93
117
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
118
|
+
if (entries.find(function (entry) {
|
|
119
|
+
return entry.children;
|
|
120
|
+
})) {
|
|
121
|
+
var newItems = normalize(items);
|
|
122
|
+
setNormalizedItems(newItems);
|
|
123
|
+
setUsedNormalizedItems(true);
|
|
124
|
+
}
|
|
100
125
|
}
|
|
101
|
-
|
|
126
|
+
|
|
127
|
+
setFlatItems(flattenedItems);
|
|
128
|
+
}, [items, multi, globalFilters]); // used to generate columns of results for multi select with hierarchy
|
|
102
129
|
|
|
103
130
|
var getPages = function getPages() {
|
|
104
131
|
var pages = [];
|
|
@@ -157,11 +184,6 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
157
184
|
var results = itemsToFilter.filter(function (item) {
|
|
158
185
|
if (!searchTerm) {
|
|
159
186
|
return item;
|
|
160
|
-
} // if user provides their own filter function use that
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (onSearchFilter) {
|
|
164
|
-
return onSearchFilter(item, searchTerm);
|
|
165
187
|
} // otherwise use the default label filter
|
|
166
188
|
|
|
167
189
|
|
|
@@ -172,11 +194,18 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
172
194
|
|
|
173
195
|
var getDisplayItems = function getDisplayItems() {
|
|
174
196
|
if (useNormalizedItems) {
|
|
175
|
-
// when global search is in use the results are not in column format
|
|
176
|
-
|
|
177
|
-
|
|
197
|
+
// when global search or filter is in use the results are not in column format
|
|
198
|
+
var filters = Object.keys(appliedGlobalFilters);
|
|
199
|
+
|
|
200
|
+
if (searchTerm || filters.length) {
|
|
201
|
+
var results = flatItems.filter(function (item) {
|
|
178
202
|
return item.title.toLowerCase().includes(searchTerm);
|
|
203
|
+
}).filter(function (item) {
|
|
204
|
+
return filters.every(function (filter) {
|
|
205
|
+
return item[filter] === appliedGlobalFilters[filter];
|
|
206
|
+
});
|
|
179
207
|
});
|
|
208
|
+
return results;
|
|
180
209
|
}
|
|
181
210
|
|
|
182
211
|
return getPages();
|
|
@@ -197,15 +226,21 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
197
226
|
singleSelection: singleSelection
|
|
198
227
|
}; // handlers
|
|
199
228
|
|
|
200
|
-
var handleSearch = function handleSearch(
|
|
201
|
-
setSearchTerm(
|
|
229
|
+
var handleSearch = function handleSearch(term) {
|
|
230
|
+
setSearchTerm(term);
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
var handleFilter = function handleFilter(filters) {
|
|
234
|
+
setAppliedGlobalFilters(filters);
|
|
202
235
|
};
|
|
203
236
|
|
|
204
237
|
var submitHandler = function submitHandler() {
|
|
205
238
|
onSubmit(multi ? multiSelection : singleSelection);
|
|
206
239
|
};
|
|
207
240
|
|
|
241
|
+
var classNames = cx(className, blockClass, (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__single"), !multi), _defineProperty(_cx, "".concat(blockClass, "__multi"), multi), _cx));
|
|
208
242
|
var commonTearsheetProps = {
|
|
243
|
+
className: classNames,
|
|
209
244
|
open: open,
|
|
210
245
|
title: title,
|
|
211
246
|
description: description,
|
|
@@ -219,7 +254,8 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
219
254
|
kind: 'primary',
|
|
220
255
|
onClick: submitHandler,
|
|
221
256
|
disabled: multi ? multiSelection.length === 0 : !singleSelection
|
|
222
|
-
}]
|
|
257
|
+
}],
|
|
258
|
+
portalTarget: portalTarget
|
|
223
259
|
};
|
|
224
260
|
var sidebarProps = {
|
|
225
261
|
influencerTitle: influencerTitle,
|
|
@@ -230,7 +266,6 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
230
266
|
removeIconDescription: removeIconDescription,
|
|
231
267
|
setMultiSelection: setMultiSelection
|
|
232
268
|
};
|
|
233
|
-
var classNames = cx(className, blockClass, (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__single"), !multi), _defineProperty(_cx, "".concat(blockClass, "__multi"), multi), _cx));
|
|
234
269
|
|
|
235
270
|
var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
|
|
236
271
|
if (searchTerm) {
|
|
@@ -257,16 +292,26 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
257
292
|
};
|
|
258
293
|
|
|
259
294
|
var showBreadsCrumbs = setShowBreadsCrumbs();
|
|
260
|
-
var showTags = setShowTags();
|
|
295
|
+
var showTags = setShowTags();
|
|
296
|
+
var globalFiltersApplied = Object.keys(appliedGlobalFilters).length > 0; // main content
|
|
261
297
|
|
|
262
298
|
var body = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
263
299
|
className: "".concat(blockClass, "__header")
|
|
264
|
-
}, /*#__PURE__*/React.createElement(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
300
|
+
}, /*#__PURE__*/React.createElement(AddSelectFilter, {
|
|
301
|
+
inputLabel: globalSearchLabel,
|
|
302
|
+
inputPlaceholder: globalSearchPlaceholder,
|
|
303
|
+
searchTerm: searchTerm,
|
|
304
|
+
handleSearch: handleSearch,
|
|
305
|
+
multi: multi,
|
|
306
|
+
filterOpts: globalFilterOpts,
|
|
307
|
+
handleFilter: handleFilter,
|
|
308
|
+
primaryButtonText: globalFiltersPrimaryButtonText,
|
|
309
|
+
secondaryButtonText: globalFiltersSecondaryButtonText,
|
|
310
|
+
placeholder: globalFiltersPlaceholderText,
|
|
311
|
+
iconDescription: globalFiltersIconDescription,
|
|
312
|
+
appliedFilters: appliedGlobalFilters,
|
|
313
|
+
hasFiltersApplied: globalFiltersApplied,
|
|
314
|
+
clearFiltersText: clearFiltersText
|
|
270
315
|
}), /*#__PURE__*/React.createElement("div", {
|
|
271
316
|
className: "".concat(blockClass, "__tag-container")
|
|
272
317
|
}, showBreadsCrumbs ? /*#__PURE__*/React.createElement(AddSelectBreadcrumbs, {
|
|
@@ -278,7 +323,7 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
278
323
|
}, searchTerm ? searchResultsLabel : itemsLabel), showTags && /*#__PURE__*/React.createElement(Tag, {
|
|
279
324
|
type: "gray",
|
|
280
325
|
size: "sm"
|
|
281
|
-
}, itemsToDisplay.length))), useNormalizedItems && !searchTerm ? /*#__PURE__*/React.createElement("div", {
|
|
326
|
+
}, itemsToDisplay.length))), useNormalizedItems && !searchTerm && !globalFiltersApplied ? /*#__PURE__*/React.createElement("div", {
|
|
282
327
|
className: "".concat(blockClass, "__columns")
|
|
283
328
|
}, itemsToDisplay.map(function (page, idx) {
|
|
284
329
|
var _path;
|
|
@@ -299,8 +344,7 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
299
344
|
title: noResultsTitle
|
|
300
345
|
}))));
|
|
301
346
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
302
|
-
ref: ref
|
|
303
|
-
className: classNames
|
|
347
|
+
ref: ref
|
|
304
348
|
}, rest), multi ? /*#__PURE__*/React.createElement(Tearsheet, _extends({}, commonTearsheetProps, {
|
|
305
349
|
influencer: multi && /*#__PURE__*/React.createElement(AddSelectSidebar, sidebarProps),
|
|
306
350
|
influencerPosition: "right"
|
|
@@ -308,23 +352,39 @@ export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
308
352
|
});
|
|
309
353
|
AddSelect.propTypes = {
|
|
310
354
|
className: PropTypes.string,
|
|
355
|
+
clearFiltersText: PropTypes.string,
|
|
311
356
|
columnInputPlaceholder: PropTypes.string,
|
|
312
357
|
description: PropTypes.string,
|
|
358
|
+
globalFilters: PropTypes.arrayOf(PropTypes.shape({
|
|
359
|
+
id: PropTypes.string,
|
|
360
|
+
label: PropTypes.string
|
|
361
|
+
})),
|
|
362
|
+
globalFiltersIconDescription: PropTypes.string,
|
|
363
|
+
globalFiltersPlaceholderText: PropTypes.string,
|
|
364
|
+
globalFiltersPrimaryButtonText: PropTypes.string,
|
|
365
|
+
globalFiltersSecondaryButtonText: PropTypes.string,
|
|
366
|
+
globalSearchLabel: PropTypes.string,
|
|
367
|
+
globalSearchPlaceholder: PropTypes.string,
|
|
313
368
|
influencerTitle: PropTypes.string,
|
|
314
|
-
inputPlaceholder: PropTypes.string,
|
|
315
369
|
items: PropTypes.shape({
|
|
316
370
|
modifiers: PropTypes.shape({
|
|
317
371
|
label: PropTypes.string,
|
|
318
|
-
options: PropTypes.array
|
|
319
|
-
property: PropTypes.string
|
|
372
|
+
options: PropTypes.array
|
|
320
373
|
}),
|
|
321
374
|
sortBy: PropTypes.array,
|
|
322
375
|
filterBy: PropTypes.array,
|
|
323
376
|
entries: PropTypes.arrayOf(PropTypes.shape({
|
|
377
|
+
avatar: PropTypes.shape({
|
|
378
|
+
alt: PropTypes.string,
|
|
379
|
+
icon: PropTypes.object,
|
|
380
|
+
src: PropTypes.string
|
|
381
|
+
}),
|
|
382
|
+
children: PropTypes.object,
|
|
383
|
+
icon: PropTypes.object,
|
|
324
384
|
id: PropTypes.string.isRequired,
|
|
385
|
+
subtitle: PropTypes.string,
|
|
325
386
|
title: PropTypes.string.isRequired,
|
|
326
|
-
value: PropTypes.string.isRequired
|
|
327
|
-
children: PropTypes.object
|
|
387
|
+
value: PropTypes.string.isRequired
|
|
328
388
|
}))
|
|
329
389
|
}),
|
|
330
390
|
itemsLabel: PropTypes.string,
|
|
@@ -335,13 +395,16 @@ AddSelect.propTypes = {
|
|
|
335
395
|
noSelectionTitle: PropTypes.string,
|
|
336
396
|
onClose: PropTypes.func,
|
|
337
397
|
onCloseButtonText: PropTypes.string,
|
|
338
|
-
onSearchFilter: PropTypes.func,
|
|
339
398
|
onSubmit: PropTypes.func,
|
|
340
399
|
onSubmitButtonText: PropTypes.string,
|
|
341
400
|
open: PropTypes.bool,
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* portal target for the all tags modal
|
|
404
|
+
*/
|
|
405
|
+
portalTarget: PropTypes.node,
|
|
342
406
|
removeIconDescription: PropTypes.string,
|
|
343
407
|
searchResultsLabel: PropTypes.string,
|
|
344
|
-
textInputLabel: PropTypes.string,
|
|
345
408
|
title: PropTypes.string
|
|
346
409
|
};
|
|
347
410
|
AddSelect.defaultProps = {
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
|
|
4
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
|
+
|
|
6
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// Copyright IBM Corp. 2022
|
|
10
|
+
//
|
|
11
|
+
// This source code is licensed under the Apache-2.0 license found in the
|
|
12
|
+
// LICENSE file in the root directory of this source tree.
|
|
13
|
+
//
|
|
14
|
+
import React, { useState } from 'react';
|
|
15
|
+
import { Button, ButtonSet, Dropdown, TextInput, Tag } from 'carbon-components-react';
|
|
16
|
+
import PropTypes from 'prop-types';
|
|
17
|
+
import { Filter16 } from '@carbon/icons-react';
|
|
18
|
+
import { pkg } from '../../settings';
|
|
19
|
+
var componentName = 'AddSelectFilter';
|
|
20
|
+
export var AddSelectFilter = function AddSelectFilter(_ref) {
|
|
21
|
+
var appliedFilters = _ref.appliedFilters,
|
|
22
|
+
clearFiltersText = _ref.clearFiltersText,
|
|
23
|
+
filterOpts = _ref.filterOpts,
|
|
24
|
+
handleFilter = _ref.handleFilter,
|
|
25
|
+
handleSearch = _ref.handleSearch,
|
|
26
|
+
hasFiltersApplied = _ref.hasFiltersApplied,
|
|
27
|
+
iconDescription = _ref.iconDescription,
|
|
28
|
+
inputLabel = _ref.inputLabel,
|
|
29
|
+
inputPlaceholder = _ref.inputPlaceholder,
|
|
30
|
+
multi = _ref.multi,
|
|
31
|
+
placeholder = _ref.placeholder,
|
|
32
|
+
primaryButtonText = _ref.primaryButtonText,
|
|
33
|
+
searchTerm = _ref.searchTerm,
|
|
34
|
+
secondaryButtonText = _ref.secondaryButtonText;
|
|
35
|
+
|
|
36
|
+
var _useState = useState({}),
|
|
37
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
38
|
+
filters = _useState2[0],
|
|
39
|
+
setFilters = _useState2[1];
|
|
40
|
+
|
|
41
|
+
var _useState3 = useState(false),
|
|
42
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
43
|
+
open = _useState4[0],
|
|
44
|
+
setOpen = _useState4[1];
|
|
45
|
+
|
|
46
|
+
var blockClass = "".concat(pkg.prefix, "--add-select__global-filter");
|
|
47
|
+
|
|
48
|
+
var searchHandler = function searchHandler(e) {
|
|
49
|
+
handleSearch(e.target.value);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var onchangeHandler = function onchangeHandler(_ref2, id) {
|
|
53
|
+
var selectedItem = _ref2.selectedItem;
|
|
54
|
+
setFilters(_objectSpread(_objectSpread({}, filters), {}, _defineProperty({}, id, selectedItem)));
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* this component needs to manage it's own internal state of filters before they're applied
|
|
58
|
+
* setFilters manages the local filter state
|
|
59
|
+
* applyFilters adds the filter state to the parent
|
|
60
|
+
* resetFilters resets the local state
|
|
61
|
+
* clearFilters resets both
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
var applyFilters = function applyFilters() {
|
|
66
|
+
handleFilter(filters);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
var resetFilters = function resetFilters() {
|
|
70
|
+
setFilters({});
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var clearFilters = function clearFilters() {
|
|
74
|
+
resetFilters();
|
|
75
|
+
handleFilter({});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
var removeTag = function removeTag(key) {
|
|
79
|
+
var newFilters = _objectSpread({}, filters);
|
|
80
|
+
|
|
81
|
+
delete newFilters[key];
|
|
82
|
+
setFilters(newFilters);
|
|
83
|
+
handleFilter(newFilters);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
var getSelectedItem = function getSelectedItem(id) {
|
|
87
|
+
return filters[id] || '';
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
var showFilter = multi && (filterOpts === null || filterOpts === void 0 ? void 0 : filterOpts.length) > 0;
|
|
91
|
+
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
92
|
+
className: "".concat(blockClass, "-search")
|
|
93
|
+
}, /*#__PURE__*/React.createElement(TextInput, {
|
|
94
|
+
id: "temp-id",
|
|
95
|
+
labelText: inputLabel,
|
|
96
|
+
placeholder: inputPlaceholder,
|
|
97
|
+
value: searchTerm,
|
|
98
|
+
onChange: searchHandler
|
|
99
|
+
}), showFilter && /*#__PURE__*/React.createElement(Button, {
|
|
100
|
+
renderIcon: Filter16,
|
|
101
|
+
hasIconOnly: true,
|
|
102
|
+
kind: "ghost",
|
|
103
|
+
onClick: function onClick() {
|
|
104
|
+
return setOpen(!open);
|
|
105
|
+
},
|
|
106
|
+
iconDescription: iconDescription,
|
|
107
|
+
className: "".concat(blockClass, "-toggle"),
|
|
108
|
+
size: "md"
|
|
109
|
+
}), open && /*#__PURE__*/React.createElement("div", {
|
|
110
|
+
className: "".concat(blockClass)
|
|
111
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
112
|
+
className: "".concat(blockClass, "-content")
|
|
113
|
+
}, /*#__PURE__*/React.createElement("p", null, "Filters"), /*#__PURE__*/React.createElement("div", {
|
|
114
|
+
className: "".concat(blockClass, "-opts")
|
|
115
|
+
}, filterOpts.map(function (filterOpts) {
|
|
116
|
+
return /*#__PURE__*/React.createElement(Dropdown, {
|
|
117
|
+
id: filterOpts.id,
|
|
118
|
+
key: filterOpts.id,
|
|
119
|
+
titleText: filterOpts.label,
|
|
120
|
+
items: filterOpts.opts,
|
|
121
|
+
light: true,
|
|
122
|
+
onChange: function onChange(value) {
|
|
123
|
+
return onchangeHandler(value, filterOpts.id);
|
|
124
|
+
},
|
|
125
|
+
selectedItem: getSelectedItem(filterOpts.id),
|
|
126
|
+
label: placeholder
|
|
127
|
+
});
|
|
128
|
+
}))), /*#__PURE__*/React.createElement(ButtonSet, {
|
|
129
|
+
className: "".concat(blockClass, "-button-set")
|
|
130
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
131
|
+
kind: "secondary",
|
|
132
|
+
onClick: resetFilters,
|
|
133
|
+
className: "".concat(blockClass, "-button")
|
|
134
|
+
}, secondaryButtonText), /*#__PURE__*/React.createElement(Button, {
|
|
135
|
+
kind: "primary",
|
|
136
|
+
onClick: applyFilters,
|
|
137
|
+
className: "".concat(blockClass, "-button")
|
|
138
|
+
}, primaryButtonText)))), hasFiltersApplied && /*#__PURE__*/React.createElement("div", {
|
|
139
|
+
className: "".concat(blockClass, "-applied")
|
|
140
|
+
}, Object.keys(appliedFilters).map(function (filterType) {
|
|
141
|
+
return /*#__PURE__*/React.createElement(Tag, {
|
|
142
|
+
key: filterType,
|
|
143
|
+
type: "gray",
|
|
144
|
+
size: "sm",
|
|
145
|
+
onClose: function onClose() {
|
|
146
|
+
return removeTag(filterType);
|
|
147
|
+
},
|
|
148
|
+
filter: true
|
|
149
|
+
}, "".concat(filterType, ": ").concat(appliedFilters[filterType]));
|
|
150
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
151
|
+
kind: "ghost",
|
|
152
|
+
size: "sm",
|
|
153
|
+
onClick: clearFilters
|
|
154
|
+
}, clearFiltersText)));
|
|
155
|
+
};
|
|
156
|
+
AddSelectFilter.propTypes = {
|
|
157
|
+
appliedFilters: PropTypes.object,
|
|
158
|
+
clearFiltersText: PropTypes.string,
|
|
159
|
+
filterOpts: PropTypes.array,
|
|
160
|
+
handleFilter: PropTypes.func,
|
|
161
|
+
handleSearch: PropTypes.func,
|
|
162
|
+
hasFiltersApplied: PropTypes.bool,
|
|
163
|
+
iconDescription: PropTypes.string,
|
|
164
|
+
inputLabel: PropTypes.string,
|
|
165
|
+
inputPlaceholder: PropTypes.string,
|
|
166
|
+
multi: PropTypes.bool,
|
|
167
|
+
placeholder: PropTypes.string,
|
|
168
|
+
primaryButtonText: PropTypes.string,
|
|
169
|
+
searchTerm: PropTypes.string,
|
|
170
|
+
secondaryButtonText: PropTypes.string
|
|
171
|
+
};
|
|
172
|
+
AddSelectFilter.displayName = componentName;
|
|
@@ -61,4 +61,34 @@ export var flatten = function flatten(entries) {
|
|
|
61
61
|
|
|
62
62
|
return prev.concat(item).concat(children ? flatten(children.entries) : []);
|
|
63
63
|
}, []);
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* takes in a global filters array and a flat list of items
|
|
67
|
+
* it then searches through the items and finds any with the matching filter properties
|
|
68
|
+
* and adds those values to the array
|
|
69
|
+
* globalFilters looks like [{ id: someProperty }]
|
|
70
|
+
* the returned array would look like [{ id: someProperty, opts: [value, value]}]
|
|
71
|
+
* @param {Array} globalFilters - list of filter properties
|
|
72
|
+
* @param {Array} items - items to search through
|
|
73
|
+
* @returns an array of filter values
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
export var getGlobalFilterValues = function getGlobalFilterValues(globalFilters, items) {
|
|
77
|
+
var filterOpts = globalFilters.reduce(function (prevFilter, curFilter) {
|
|
78
|
+
var filterId = curFilter.id;
|
|
79
|
+
var opts = items.reduce(function (prevItem, curItem) {
|
|
80
|
+
var value = curItem[filterId];
|
|
81
|
+
|
|
82
|
+
if (value && !prevItem.includes(value)) {
|
|
83
|
+
prevItem.push(value);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return prevItem;
|
|
87
|
+
}, []);
|
|
88
|
+
prevFilter.push(_objectSpread({
|
|
89
|
+
opts: opts
|
|
90
|
+
}, curFilter));
|
|
91
|
+
return prevFilter;
|
|
92
|
+
}, []);
|
|
93
|
+
return filterOpts;
|
|
64
94
|
};
|