@hitachivantara/uikit-react-core 3.75.1 → 3.75.3
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/FilterGroup/Counter/Counter.js +1 -11
- package/dist/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/FilterGroup/RightPanel/RightPanel.js +21 -5
- package/dist/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/OverflowTooltip/OverflowTooltip.js +17 -6
- package/dist/OverflowTooltip/OverflowTooltip.js.map +1 -1
- package/dist/legacy/FilterGroup/Counter/Counter.js +1 -8
- package/dist/legacy/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/legacy/FilterGroup/RightPanel/RightPanel.js +21 -5
- package/dist/legacy/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/legacy/OverflowTooltip/OverflowTooltip.js +17 -6
- package/dist/legacy/OverflowTooltip/OverflowTooltip.js.map +1 -1
- package/dist/modern/FilterGroup/Counter/Counter.js +1 -4
- package/dist/modern/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/modern/FilterGroup/RightPanel/RightPanel.js +16 -4
- package/dist/modern/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/modern/OverflowTooltip/OverflowTooltip.js +15 -5
- package/dist/modern/OverflowTooltip/OverflowTooltip.js.map +1 -1
- package/package.json +6 -5
|
@@ -27,12 +27,6 @@ require("core-js/modules/es.array.find.js");
|
|
|
27
27
|
|
|
28
28
|
require("core-js/modules/es.array.find-index.js");
|
|
29
29
|
|
|
30
|
-
require("core-js/modules/es.array.flat.js");
|
|
31
|
-
|
|
32
|
-
require("core-js/modules/es.array.unscopables.flat.js");
|
|
33
|
-
|
|
34
|
-
require("core-js/modules/es.array.filter.js");
|
|
35
|
-
|
|
36
30
|
var _react = _interopRequireWildcard(require("react"));
|
|
37
31
|
|
|
38
32
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
@@ -64,8 +58,6 @@ var getExistingFiltersById = function getExistingFiltersById(idx, filterValues,
|
|
|
64
58
|
};
|
|
65
59
|
|
|
66
60
|
var Counter = function Counter(_ref) {
|
|
67
|
-
var _appliedFilters$flat;
|
|
68
|
-
|
|
69
61
|
var className = _ref.className,
|
|
70
62
|
id = _ref.id;
|
|
71
63
|
var classes = (0, _styles.default)();
|
|
@@ -84,9 +76,7 @@ var Counter = function Counter(_ref) {
|
|
|
84
76
|
return option.id === id;
|
|
85
77
|
});
|
|
86
78
|
var groupsCounter = 0;
|
|
87
|
-
appliedFilters === null || appliedFilters === void 0 ? void 0 :
|
|
88
|
-
return elem !== undefined;
|
|
89
|
-
}).forEach(function (fg, i) {
|
|
79
|
+
appliedFilters === null || appliedFilters === void 0 ? void 0 : appliedFilters.forEach(function (fg, i) {
|
|
90
80
|
groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);
|
|
91
81
|
});
|
|
92
82
|
var partialCounter = id ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0 : groupsCounter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Counter.js","names":["getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","Counter","className","classes","useStyles","useContext","FilterGroupContext","appliedFilters","options","option","optionIdx","findIndex","groupsCounter","
|
|
1
|
+
{"version":3,"file":"Counter.js","names":["getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","Counter","className","classes","useStyles","useContext","FilterGroupContext","appliedFilters","options","option","optionIdx","findIndex","groupsCounter","fg","i","partialCounter","totalCounter","reduce","acc","length","clsx","root","propTypes","PropTypes","string"],"sources":["../../../src/FilterGroup/Counter/Counter.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\n\nconst getExistingFiltersById = (idx, filterValues, filterOptions) => {\n let total = 0;\n filterValues[idx]?.forEach((fv) => {\n if (filterOptions[idx]?.data.find((f) => f.id === fv)) {\n total += 1;\n }\n });\n return total;\n};\n\nconst Counter = ({ className, id }) => {\n const classes = useStyles();\n const { filterOptions, filterValues = [], appliedFilters = [] } = useContext(FilterGroupContext);\n\n const options = id ? [filterOptions.find((option) => option.id === id)] : filterOptions;\n const optionIdx = filterOptions.findIndex((option) => option.id === id);\n\n let groupsCounter = 0;\n appliedFilters?.forEach((fg, i) => {\n groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);\n });\n\n const partialCounter = id\n ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0\n : groupsCounter;\n const totalCounter = options.reduce((acc, option) => acc + option.data.length, 0);\n\n return (\n <div className={clsx(classes.root, className)}>\n {partialCounter > 0 ? <b>{partialCounter}</b> : partialCounter}\n {` / ${totalCounter}`}\n </div>\n );\n};\n\nCounter.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n};\n\nexport default Counter;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,GAAD,EAAMC,YAAN,EAAoBC,aAApB,EAAsC;EAAA;;EACnE,IAAIC,KAAK,GAAG,CAAZ;EACA,qBAAAF,YAAY,CAACD,GAAD,CAAZ,wEAAmBI,OAAnB,CAA2B,UAACC,EAAD,EAAQ;IAAA;;IACjC,0BAAIH,aAAa,CAACF,GAAD,CAAjB,+CAAI,mBAAoBM,IAApB,CAAyBC,IAAzB,CAA8B,UAACC,CAAD;MAAA,OAAOA,CAAC,CAACC,EAAF,KAASJ,EAAhB;IAAA,CAA9B,CAAJ,EAAuD;MACrDF,KAAK,IAAI,CAAT;IACD;EACF,CAJD;EAKA,OAAOA,KAAP;AACD,CARD;;AAUA,IAAMO,OAAO,GAAG,SAAVA,OAAU,OAAuB;EAAA,IAApBC,SAAoB,QAApBA,SAAoB;EAAA,IAATF,EAAS,QAATA,EAAS;EACrC,IAAMG,OAAO,GAAG,IAAAC,eAAA,GAAhB;;EACA,kBAAkE,IAAAC,iBAAA,EAAWC,sCAAX,CAAlE;EAAA,IAAQb,aAAR,eAAQA,aAAR;EAAA,wCAAuBD,YAAvB;EAAA,IAAuBA,YAAvB,sCAAsC,EAAtC;EAAA,wCAA0Ce,cAA1C;EAAA,IAA0CA,cAA1C,sCAA2D,EAA3D;;EAEA,IAAMC,OAAO,GAAGR,EAAE,GAAG,CAACP,aAAa,CAACK,IAAd,CAAmB,UAACW,MAAD;IAAA,OAAYA,MAAM,CAACT,EAAP,KAAcA,EAA1B;EAAA,CAAnB,CAAD,CAAH,GAAwDP,aAA1E;EACA,IAAMiB,SAAS,GAAGjB,aAAa,CAACkB,SAAd,CAAwB,UAACF,MAAD;IAAA,OAAYA,MAAM,CAACT,EAAP,KAAcA,EAA1B;EAAA,CAAxB,CAAlB;EAEA,IAAIY,aAAa,GAAG,CAApB;EACAL,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAEZ,OAAhB,CAAwB,UAACkB,EAAD,EAAKC,CAAL,EAAW;IACjCF,aAAa,IAAItB,sBAAsB,CAACwB,CAAD,EAAItB,YAAJ,EAAkBC,aAAlB,CAAvC;EACD,CAFD;EAIA,IAAMsB,cAAc,GAAGf,EAAE,GACrBV,sBAAsB,CAACoB,SAAD,EAAYlB,YAAZ,EAA0BC,aAA1B,CAAtB,IAAkE,CAD7C,GAErBmB,aAFJ;EAGA,IAAMI,YAAY,GAAGR,OAAO,CAACS,MAAR,CAAe,UAACC,GAAD,EAAMT,MAAN;IAAA,OAAiBS,GAAG,GAAGT,MAAM,CAACZ,IAAP,CAAYsB,MAAnC;EAAA,CAAf,EAA0D,CAA1D,CAArB;EAEA,oBACE;IAAK,SAAS,EAAE,IAAAC,aAAA,EAAKjB,OAAO,CAACkB,IAAb,EAAmBnB,SAAnB;EAAhB,GACGa,cAAc,GAAG,CAAjB,gBAAqB,wCAAIA,cAAJ,CAArB,GAA+CA,cADlD,eAESC,YAFT,EADF;AAMD,CAvBD;;AAyBA,wCAAAf,OAAO,CAACqB,SAAR,GAAoB;EAClBpB,SAAS,EAAEqB,kBAAA,CAAUC,MADH;EAElBxB,EAAE,EAAEuB,kBAAA,CAAUC;AAFI,CAApB;eAKevB,O"}
|
|
@@ -105,10 +105,12 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
105
105
|
var activeGroupOptions = (0, _react.useMemo)(function () {
|
|
106
106
|
var _filterOptions$active;
|
|
107
107
|
|
|
108
|
-
return ((
|
|
108
|
+
return ((_filterOptions$active = filterOptions[activeGroup]) === null || _filterOptions$active === void 0 ? void 0 : _filterOptions$active.data.filter(function (option) {
|
|
109
|
+
return option.name.toLowerCase().includes(searchStr.toLowerCase());
|
|
110
|
+
}).map(function (option) {
|
|
109
111
|
return option.id;
|
|
110
|
-
});
|
|
111
|
-
}, [filterOptions, activeGroup]);
|
|
112
|
+
})) || [];
|
|
113
|
+
}, [filterOptions, activeGroup, searchStr]);
|
|
112
114
|
var activeFilterValues = (0, _react.useMemo)(function () {
|
|
113
115
|
var _filterValues$activeG;
|
|
114
116
|
|
|
@@ -156,9 +158,23 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
156
158
|
|
|
157
159
|
var handleSelectAll = (0, _react.useCallback)(function () {
|
|
158
160
|
var newFilterValues = (0, _cloneDeep.default)(filterValues);
|
|
159
|
-
|
|
161
|
+
|
|
162
|
+
if (anySelected) {
|
|
163
|
+
if (searchStr !== "") {
|
|
164
|
+
var _filterValues$activeG3;
|
|
165
|
+
|
|
166
|
+
newFilterValues[activeGroup] = (_filterValues$activeG3 = filterValues[activeGroup]) === null || _filterValues$activeG3 === void 0 ? void 0 : _filterValues$activeG3.filter(function (value) {
|
|
167
|
+
return !activeGroupOptions.includes(value);
|
|
168
|
+
});
|
|
169
|
+
} else {
|
|
170
|
+
newFilterValues[activeGroup] = [];
|
|
171
|
+
}
|
|
172
|
+
} else {
|
|
173
|
+
newFilterValues[activeGroup] = (0, _toConsumableArray2.default)(activeGroupOptions);
|
|
174
|
+
}
|
|
175
|
+
|
|
160
176
|
setFilterValues(newFilterValues);
|
|
161
|
-
}, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues]);
|
|
177
|
+
}, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues, searchStr]);
|
|
162
178
|
/**
|
|
163
179
|
* Create selecteAll component.
|
|
164
180
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.js","names":["RightPanel","id","className","labels","emptyElement","classes","useStyles","useState","searchStr","setSearchStr","allSelected","setAllSelected","anySelected","setAnySelected","useContext","FilterGroupContext","filterOptions","filterValues","setFilterValues","activeGroup","activeGroupOptions","useMemo","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","i","v","handleSelectAll","cloneDeep","SelectAll","selectAll","multiSelectionConjunction","defaultLabel","selectAllContainer","setId","container","selection","clsx","root","search","searchBoxPlaceholder","event","str","list","propTypes","PropTypes","string","shape","node"],"sources":["../../../src/FilterGroup/RightPanel/RightPanel.js"],"sourcesContent":["import React, { useMemo, useContext, useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport clsx from \"clsx\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\nimport { setId, HvTypography, HvList, HvInput, HvPanel, HvCheckBox } from \"../..\";\n\nconst RightPanel = ({ id, className, labels, emptyElement }) => {\n const classes = useStyles();\n const [searchStr, setSearchStr] = useState(\"\");\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(FilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => (filterOptions[activeGroup]?.data || []).map((option) => option.id),\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () => filterValues[activeGroup]?.filter((value) => activeGroupOptions.includes(value)),\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n (filterOptions[activeGroup]?.data || []).map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden: option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })),\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((option, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues]);\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n classes.selectAll,\n classes.selectAllContainer,\n classes.selection,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={clsx(className, classes.root)}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels.searchBoxPlaceholder}\n value={searchStr}\n onChange={(event, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n className={classes.list}\n values={listValues}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n\nRightPanel.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n labels: PropTypes.shape({\n searchBoxPlaceholder: PropTypes.string,\n selectAll: PropTypes.string,\n multiSelectionConjunction: PropTypes.string,\n }),\n emptyElement: PropTypes.node,\n};\n\nexport default RightPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightPanel.js","names":["RightPanel","id","className","labels","emptyElement","classes","useStyles","useState","searchStr","setSearchStr","allSelected","setAllSelected","anySelected","setAnySelected","useContext","FilterGroupContext","filterOptions","filterValues","setFilterValues","activeGroup","activeGroupOptions","useMemo","data","filter","option","name","toLowerCase","includes","map","activeFilterValues","value","listValues","label","selected","isHidden","indexOf","updateSelectAll","useCallback","nbrSelected","length","hasSelection","allSelect","useEffect","onChangeHandler","values","newFilterValues","i","v","handleSelectAll","cloneDeep","SelectAll","selectAll","multiSelectionConjunction","defaultLabel","selectAllContainer","setId","container","selection","clsx","root","search","searchBoxPlaceholder","event","str","list","propTypes","PropTypes","string","shape","node"],"sources":["../../../src/FilterGroup/RightPanel/RightPanel.js"],"sourcesContent":["import React, { useMemo, useContext, useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport clsx from \"clsx\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\nimport { setId, HvTypography, HvList, HvInput, HvPanel, HvCheckBox } from \"../..\";\n\nconst RightPanel = ({ id, className, labels, emptyElement }) => {\n const classes = useStyles();\n const [searchStr, setSearchStr] = useState(\"\");\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(FilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () =>\n filterOptions[activeGroup]?.data\n .filter((option) => option.name.toLowerCase().includes(searchStr.toLowerCase()))\n .map((option) => option.id) || [],\n [filterOptions, activeGroup, searchStr]\n );\n\n const activeFilterValues = useMemo(\n () => filterValues[activeGroup]?.filter((value) => activeGroupOptions.includes(value)),\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n (filterOptions[activeGroup]?.data || []).map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden: option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })),\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((option, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n\n if (anySelected) {\n if (searchStr !== \"\") {\n newFilterValues[activeGroup] = filterValues[activeGroup]?.filter(\n (value) => !activeGroupOptions.includes(value)\n );\n } else {\n newFilterValues[activeGroup] = [];\n }\n } else {\n newFilterValues[activeGroup] = [...activeGroupOptions];\n }\n\n setFilterValues(newFilterValues);\n }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues, searchStr]);\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n classes.selectAll,\n classes.selectAllContainer,\n classes.selection,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={clsx(className, classes.root)}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels.searchBoxPlaceholder}\n value={searchStr}\n onChange={(event, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n className={classes.list}\n values={listValues}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n\nRightPanel.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n labels: PropTypes.shape({\n searchBoxPlaceholder: PropTypes.string,\n selectAll: PropTypes.string,\n multiSelectionConjunction: PropTypes.string,\n }),\n emptyElement: PropTypes.node,\n};\n\nexport default RightPanel;\n"],"mappings":"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"}
|
|
@@ -67,8 +67,6 @@ var isParagraph = function isParagraph(children) {
|
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
var HvOverflowTooltip = function HvOverflowTooltip(_ref) {
|
|
70
|
-
var _ref$current;
|
|
71
|
-
|
|
72
70
|
var id = _ref.id,
|
|
73
71
|
className = _ref.className,
|
|
74
72
|
classes = _ref.classes,
|
|
@@ -86,16 +84,29 @@ var HvOverflowTooltip = function HvOverflowTooltip(_ref) {
|
|
|
86
84
|
},
|
|
87
85
|
handleHeight: false
|
|
88
86
|
}),
|
|
87
|
+
_useResizeDetector$he = _useResizeDetector.height,
|
|
88
|
+
height = _useResizeDetector$he === void 0 ? 0 : _useResizeDetector$he,
|
|
89
89
|
_useResizeDetector$wi = _useResizeDetector.width,
|
|
90
90
|
width = _useResizeDetector$wi === void 0 ? 0 : _useResizeDetector$wi,
|
|
91
91
|
ref = _useResizeDetector.ref;
|
|
92
92
|
|
|
93
|
-
var scrollWidth = ((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollWidth) || 0; // The difference should be higher than a pixel to be considered as overflowing
|
|
94
|
-
|
|
95
|
-
var isOverflowing = scrollWidth - width >= 1;
|
|
96
93
|
var isParag = (0, _react.useMemo)(function () {
|
|
97
94
|
return paragraphOverflow && isParagraph(data.toString());
|
|
98
|
-
}, [data, paragraphOverflow]);
|
|
95
|
+
}, [data, paragraphOverflow]); // The difference should be higher than a pixel to be considered as overflowing
|
|
96
|
+
|
|
97
|
+
var isOverflowing = (0, _react.useMemo)(function () {
|
|
98
|
+
var _ref$current2;
|
|
99
|
+
|
|
100
|
+
if (isParag) {
|
|
101
|
+
var _ref$current;
|
|
102
|
+
|
|
103
|
+
var scrollHeight = ((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollHeight) || 0;
|
|
104
|
+
return scrollHeight - height >= 1;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
var scrollWidth = ((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.scrollWidth) || 0;
|
|
108
|
+
return scrollWidth - width >= 1;
|
|
109
|
+
}, [height, isParag, ref, width]);
|
|
99
110
|
var content = (0, _react.useMemo)(function () {
|
|
100
111
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
101
112
|
ref: ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowTooltip.js","names":["styles","createStyles","tooltipData","tooltipAnchor","whiteSpace","overflow","textOverflow","tooltipAnchorParagraph","display","isParagraph","children","test","HvOverflowTooltip","id","className","classes","data","open","paragraphOverflow","placement","tooltipsProps","useResizeDetector","refreshMode","refreshOptions","trailing","handleHeight","width","ref","
|
|
1
|
+
{"version":3,"file":"OverflowTooltip.js","names":["styles","createStyles","tooltipData","tooltipAnchor","whiteSpace","overflow","textOverflow","tooltipAnchorParagraph","display","isParagraph","children","test","HvOverflowTooltip","id","className","classes","data","open","paragraphOverflow","placement","tooltipsProps","useResizeDetector","refreshMode","refreshOptions","trailing","handleHeight","height","width","ref","isParag","useMemo","toString","isOverflowing","scrollHeight","current","scrollWidth","content","clsx","propTypes","PropTypes","string","node","shape","root","isRequired","bool","oneOf","instanceOf","Object","withStyles","name","React","memo"],"sources":["../../src/OverflowTooltip/OverflowTooltip.js"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { useResizeDetector } from \"react-resize-detector\";\n\nimport { createStyles, withStyles } from \"@material-ui/core\";\n\nimport { HvTooltip, HvTypography } from \"..\";\n\nconst styles = createStyles({\n tooltipData: {},\n tooltipAnchor: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n tooltipAnchorParagraph: {\n overflow: \"hidden\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\",\n },\n});\n\nconst isParagraph = (children) => /\\s/.test(children);\n\n/**\n * This component generates a tooltip whenever the text is overflowed.\n */\nconst HvOverflowTooltip = ({\n id,\n className,\n classes,\n data,\n open,\n paragraphOverflow,\n placement = \"top-start\",\n tooltipsProps,\n}) => {\n const {\n height = 0,\n width = 0,\n ref,\n } = useResizeDetector({\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n handleHeight: false,\n });\n\n const isParag = useMemo(\n () => paragraphOverflow && isParagraph(data.toString()),\n [data, paragraphOverflow]\n );\n\n // The difference should be higher than a pixel to be considered as overflowing\n const isOverflowing = useMemo(() => {\n if (isParag) {\n const scrollHeight = ref.current?.scrollHeight || 0;\n\n return scrollHeight - height >= 1;\n }\n\n const scrollWidth = ref.current?.scrollWidth || 0;\n\n return scrollWidth - width >= 1;\n }, [height, isParag, ref, width]);\n\n const content = useMemo(\n () => (\n <div\n ref={ref}\n className={clsx(className, {\n [classes.tooltipAnchor]: !isParag,\n [classes.tooltipAnchorParagraph]: isParag,\n })}\n >\n {data}\n </div>\n ),\n [className, classes.tooltipAnchor, classes.tooltipAnchorParagraph, data, isParag, ref]\n );\n\n return open || isOverflowing ? (\n <HvTooltip\n id={id}\n disableHoverListener={!isOverflowing}\n open={open}\n placement={placement}\n title={\n <HvTypography className={classes.tooltipData} variant=\"normalText\">\n {data}\n </HvTypography>\n }\n {...tooltipsProps}\n >\n {content}\n </HvTooltip>\n ) : (\n content\n );\n};\n\nHvOverflowTooltip.propTypes = {\n /**\n * Id to be applied to the tooltip.\n */\n id: PropTypes.string,\n /**\n * The node that will be rendered inside the tooltip.\n */\n data: PropTypes.node,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the data container in the tooltip.\n */\n tooltipData: PropTypes.string,\n /**\n * Styles applied to the anchor of the tooltip.\n */\n tooltipAnchor: PropTypes.string,\n /**\n * Styles applied to the anchor of the when it is a paragraph.\n */\n tooltipAnchorParagraph: PropTypes.string,\n }).isRequired,\n /**\n * If `true` the overflow tooltip will always use the paragraph overflow style.\n */\n paragraphOverflow: PropTypes.bool,\n /**\n * Tooltip placement.\n */\n placement: PropTypes.oneOf([\n \"bottom-end\",\n \"bottom-start\",\n \"bottom\",\n \"left-end\",\n \"left-start\",\n \"left\",\n \"right-end\",\n \"right-start\",\n \"right\",\n \"top-end\",\n \"top-start\",\n \"top\",\n ]),\n /**\n * If true, the tooltip is shown.\n */\n open: PropTypes.bool,\n /**\n * Extra properties to add to the tooltip.\n */\n tooltipsProps: PropTypes.instanceOf(Object),\n};\n\nexport default withStyles(styles, {\n name: \"HvOverflowTooltip\",\n})(React.memo(HvOverflowTooltip));\n\nexport { HvOverflowTooltip as RawOverflowTooltip };\n"],"mappings":"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"}
|
|
@@ -2,9 +2,6 @@ import "core-js/modules/es.object.to-string.js";
|
|
|
2
2
|
import "core-js/modules/web.dom-collections.for-each.js";
|
|
3
3
|
import "core-js/modules/es.array.find.js";
|
|
4
4
|
import "core-js/modules/es.array.find-index.js";
|
|
5
|
-
import "core-js/modules/es.array.flat.js";
|
|
6
|
-
import "core-js/modules/es.array.unscopables.flat.js";
|
|
7
|
-
import "core-js/modules/es.array.filter.js";
|
|
8
5
|
import React, { useContext } from "react";
|
|
9
6
|
import clsx from "clsx";
|
|
10
7
|
import PropTypes from "prop-types";
|
|
@@ -28,8 +25,6 @@ var getExistingFiltersById = function getExistingFiltersById(idx, filterValues,
|
|
|
28
25
|
};
|
|
29
26
|
|
|
30
27
|
var Counter = function Counter(_ref) {
|
|
31
|
-
var _appliedFilters$flat;
|
|
32
|
-
|
|
33
28
|
var className = _ref.className,
|
|
34
29
|
id = _ref.id;
|
|
35
30
|
var classes = useStyles();
|
|
@@ -48,9 +43,7 @@ var Counter = function Counter(_ref) {
|
|
|
48
43
|
return option.id === id;
|
|
49
44
|
});
|
|
50
45
|
var groupsCounter = 0;
|
|
51
|
-
appliedFilters === null || appliedFilters === void 0 ? void 0 :
|
|
52
|
-
return elem !== undefined;
|
|
53
|
-
}).forEach(function (fg, i) {
|
|
46
|
+
appliedFilters === null || appliedFilters === void 0 ? void 0 : appliedFilters.forEach(function (fg, i) {
|
|
54
47
|
groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);
|
|
55
48
|
});
|
|
56
49
|
var partialCounter = id ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0 : groupsCounter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Counter.js","names":["React","useContext","clsx","PropTypes","FilterGroupContext","useStyles","getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","Counter","className","classes","appliedFilters","options","option","optionIdx","findIndex","groupsCounter","
|
|
1
|
+
{"version":3,"file":"Counter.js","names":["React","useContext","clsx","PropTypes","FilterGroupContext","useStyles","getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","Counter","className","classes","appliedFilters","options","option","optionIdx","findIndex","groupsCounter","fg","i","partialCounter","totalCounter","reduce","acc","length","root","propTypes","string"],"sources":["../../../../src/FilterGroup/Counter/Counter.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\n\nconst getExistingFiltersById = (idx, filterValues, filterOptions) => {\n let total = 0;\n filterValues[idx]?.forEach((fv) => {\n if (filterOptions[idx]?.data.find((f) => f.id === fv)) {\n total += 1;\n }\n });\n return total;\n};\n\nconst Counter = ({ className, id }) => {\n const classes = useStyles();\n const { filterOptions, filterValues = [], appliedFilters = [] } = useContext(FilterGroupContext);\n\n const options = id ? [filterOptions.find((option) => option.id === id)] : filterOptions;\n const optionIdx = filterOptions.findIndex((option) => option.id === id);\n\n let groupsCounter = 0;\n appliedFilters?.forEach((fg, i) => {\n groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);\n });\n\n const partialCounter = id\n ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0\n : groupsCounter;\n const totalCounter = options.reduce((acc, option) => acc + option.data.length, 0);\n\n return (\n <div className={clsx(classes.root, className)}>\n {partialCounter > 0 ? <b>{partialCounter}</b> : partialCounter}\n {` / ${totalCounter}`}\n </div>\n );\n};\n\nCounter.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n};\n\nexport default Counter;\n"],"mappings":";;;;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,SAAP,MAAsB,UAAtB;;AAEA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,GAAD,EAAMC,YAAN,EAAoBC,aAApB,EAAsC;EAAA;;EACnE,IAAIC,KAAK,GAAG,CAAZ;EACA,qBAAAF,YAAY,CAACD,GAAD,CAAZ,wEAAmBI,OAAnB,CAA2B,UAACC,EAAD,EAAQ;IAAA;;IACjC,0BAAIH,aAAa,CAACF,GAAD,CAAjB,+CAAI,mBAAoBM,IAApB,CAAyBC,IAAzB,CAA8B,UAACC,CAAD;MAAA,OAAOA,CAAC,CAACC,EAAF,KAASJ,EAAhB;IAAA,CAA9B,CAAJ,EAAuD;MACrDF,KAAK,IAAI,CAAT;IACD;EACF,CAJD;EAKA,OAAOA,KAAP;AACD,CARD;;AAUA,IAAMO,OAAO,GAAG,SAAVA,OAAU,OAAuB;EAAA,IAApBC,SAAoB,QAApBA,SAAoB;EAAA,IAATF,EAAS,QAATA,EAAS;EACrC,IAAMG,OAAO,GAAGd,SAAS,EAAzB;;EACA,kBAAkEJ,UAAU,CAACG,kBAAD,CAA5E;EAAA,IAAQK,aAAR,eAAQA,aAAR;EAAA,wCAAuBD,YAAvB;EAAA,IAAuBA,YAAvB,sCAAsC,EAAtC;EAAA,wCAA0CY,cAA1C;EAAA,IAA0CA,cAA1C,sCAA2D,EAA3D;;EAEA,IAAMC,OAAO,GAAGL,EAAE,GAAG,CAACP,aAAa,CAACK,IAAd,CAAmB,UAACQ,MAAD;IAAA,OAAYA,MAAM,CAACN,EAAP,KAAcA,EAA1B;EAAA,CAAnB,CAAD,CAAH,GAAwDP,aAA1E;EACA,IAAMc,SAAS,GAAGd,aAAa,CAACe,SAAd,CAAwB,UAACF,MAAD;IAAA,OAAYA,MAAM,CAACN,EAAP,KAAcA,EAA1B;EAAA,CAAxB,CAAlB;EAEA,IAAIS,aAAa,GAAG,CAApB;EACAL,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAET,OAAhB,CAAwB,UAACe,EAAD,EAAKC,CAAL,EAAW;IACjCF,aAAa,IAAInB,sBAAsB,CAACqB,CAAD,EAAInB,YAAJ,EAAkBC,aAAlB,CAAvC;EACD,CAFD;EAIA,IAAMmB,cAAc,GAAGZ,EAAE,GACrBV,sBAAsB,CAACiB,SAAD,EAAYf,YAAZ,EAA0BC,aAA1B,CAAtB,IAAkE,CAD7C,GAErBgB,aAFJ;EAGA,IAAMI,YAAY,GAAGR,OAAO,CAACS,MAAR,CAAe,UAACC,GAAD,EAAMT,MAAN;IAAA,OAAiBS,GAAG,GAAGT,MAAM,CAACT,IAAP,CAAYmB,MAAnC;EAAA,CAAf,EAA0D,CAA1D,CAArB;EAEA,oBACE;IAAK,SAAS,EAAE9B,IAAI,CAACiB,OAAO,CAACc,IAAT,EAAef,SAAf;EAApB,GACGU,cAAc,GAAG,CAAjB,gBAAqB,+BAAIA,cAAJ,CAArB,GAA+CA,cADlD,eAESC,YAFT,EADF;AAMD,CAvBD;;AAyBA,wCAAAZ,OAAO,CAACiB,SAAR,GAAoB;EAClBhB,SAAS,EAAEf,SAAS,CAACgC,MADH;EAElBnB,EAAE,EAAEb,SAAS,CAACgC;AAFI,CAApB;AAKA,eAAelB,OAAf"}
|
|
@@ -60,10 +60,12 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
60
60
|
var activeGroupOptions = useMemo(function () {
|
|
61
61
|
var _filterOptions$active;
|
|
62
62
|
|
|
63
|
-
return ((
|
|
63
|
+
return ((_filterOptions$active = filterOptions[activeGroup]) === null || _filterOptions$active === void 0 ? void 0 : _filterOptions$active.data.filter(function (option) {
|
|
64
|
+
return option.name.toLowerCase().includes(searchStr.toLowerCase());
|
|
65
|
+
}).map(function (option) {
|
|
64
66
|
return option.id;
|
|
65
|
-
});
|
|
66
|
-
}, [filterOptions, activeGroup]);
|
|
67
|
+
})) || [];
|
|
68
|
+
}, [filterOptions, activeGroup, searchStr]);
|
|
67
69
|
var activeFilterValues = useMemo(function () {
|
|
68
70
|
var _filterValues$activeG;
|
|
69
71
|
|
|
@@ -111,9 +113,23 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
111
113
|
|
|
112
114
|
var handleSelectAll = useCallback(function () {
|
|
113
115
|
var newFilterValues = cloneDeep(filterValues);
|
|
114
|
-
|
|
116
|
+
|
|
117
|
+
if (anySelected) {
|
|
118
|
+
if (searchStr !== "") {
|
|
119
|
+
var _filterValues$activeG3;
|
|
120
|
+
|
|
121
|
+
newFilterValues[activeGroup] = (_filterValues$activeG3 = filterValues[activeGroup]) === null || _filterValues$activeG3 === void 0 ? void 0 : _filterValues$activeG3.filter(function (value) {
|
|
122
|
+
return !activeGroupOptions.includes(value);
|
|
123
|
+
});
|
|
124
|
+
} else {
|
|
125
|
+
newFilterValues[activeGroup] = [];
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
newFilterValues[activeGroup] = _toConsumableArray(activeGroupOptions);
|
|
129
|
+
}
|
|
130
|
+
|
|
115
131
|
setFilterValues(newFilterValues);
|
|
116
|
-
}, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues]);
|
|
132
|
+
}, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues, searchStr]);
|
|
117
133
|
/**
|
|
118
134
|
* Create selecteAll component.
|
|
119
135
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.js","names":["React","useMemo","useContext","useState","useEffect","useCallback","PropTypes","cloneDeep","clsx","FilterGroupContext","useStyles","setId","HvTypography","HvList","HvInput","HvPanel","HvCheckBox","RightPanel","id","className","labels","emptyElement","classes","searchStr","setSearchStr","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","activeGroupOptions","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","nbrSelected","length","hasSelection","allSelect","onChangeHandler","values","newFilterValues","i","v","handleSelectAll","SelectAll","selectAll","multiSelectionConjunction","defaultLabel","selectAllContainer","container","selection","root","search","searchBoxPlaceholder","event","str","list","propTypes","string","shape","node"],"sources":["../../../../src/FilterGroup/RightPanel/RightPanel.js"],"sourcesContent":["import React, { useMemo, useContext, useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport clsx from \"clsx\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\nimport { setId, HvTypography, HvList, HvInput, HvPanel, HvCheckBox } from \"../..\";\n\nconst RightPanel = ({ id, className, labels, emptyElement }) => {\n const classes = useStyles();\n const [searchStr, setSearchStr] = useState(\"\");\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(FilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => (filterOptions[activeGroup]?.data || []).map((option) => option.id),\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () => filterValues[activeGroup]?.filter((value) => activeGroupOptions.includes(value)),\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n (filterOptions[activeGroup]?.data || []).map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden: option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })),\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((option, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues]);\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n classes.selectAll,\n classes.selectAllContainer,\n classes.selection,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={clsx(className, classes.root)}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels.searchBoxPlaceholder}\n value={searchStr}\n onChange={(event, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n className={classes.list}\n values={listValues}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n\nRightPanel.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n labels: PropTypes.shape({\n searchBoxPlaceholder: PropTypes.string,\n selectAll: PropTypes.string,\n multiSelectionConjunction: PropTypes.string,\n }),\n emptyElement: PropTypes.node,\n};\n\nexport default RightPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightPanel.js","names":["React","useMemo","useContext","useState","useEffect","useCallback","PropTypes","cloneDeep","clsx","FilterGroupContext","useStyles","setId","HvTypography","HvList","HvInput","HvPanel","HvCheckBox","RightPanel","id","className","labels","emptyElement","classes","searchStr","setSearchStr","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","activeGroupOptions","data","filter","option","name","toLowerCase","includes","map","activeFilterValues","value","listValues","label","selected","isHidden","indexOf","updateSelectAll","nbrSelected","length","hasSelection","allSelect","onChangeHandler","values","newFilterValues","i","v","handleSelectAll","SelectAll","selectAll","multiSelectionConjunction","defaultLabel","selectAllContainer","container","selection","root","search","searchBoxPlaceholder","event","str","list","propTypes","string","shape","node"],"sources":["../../../../src/FilterGroup/RightPanel/RightPanel.js"],"sourcesContent":["import React, { useMemo, useContext, useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport clsx from \"clsx\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\nimport { setId, HvTypography, HvList, HvInput, HvPanel, HvCheckBox } from \"../..\";\n\nconst RightPanel = ({ id, className, labels, emptyElement }) => {\n const classes = useStyles();\n const [searchStr, setSearchStr] = useState(\"\");\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(FilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () =>\n filterOptions[activeGroup]?.data\n .filter((option) => option.name.toLowerCase().includes(searchStr.toLowerCase()))\n .map((option) => option.id) || [],\n [filterOptions, activeGroup, searchStr]\n );\n\n const activeFilterValues = useMemo(\n () => filterValues[activeGroup]?.filter((value) => activeGroupOptions.includes(value)),\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n (filterOptions[activeGroup]?.data || []).map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden: option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })),\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((option, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n\n if (anySelected) {\n if (searchStr !== \"\") {\n newFilterValues[activeGroup] = filterValues[activeGroup]?.filter(\n (value) => !activeGroupOptions.includes(value)\n );\n } else {\n newFilterValues[activeGroup] = [];\n }\n } else {\n newFilterValues[activeGroup] = [...activeGroupOptions];\n }\n\n setFilterValues(newFilterValues);\n }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues, searchStr]);\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n classes.selectAll,\n classes.selectAllContainer,\n classes.selection,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={clsx(className, classes.root)}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels.searchBoxPlaceholder}\n value={searchStr}\n onChange={(event, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n className={classes.list}\n values={listValues}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n\nRightPanel.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n labels: PropTypes.shape({\n searchBoxPlaceholder: PropTypes.string,\n selectAll: PropTypes.string,\n multiSelectionConjunction: PropTypes.string,\n }),\n emptyElement: PropTypes.node,\n};\n\nexport default RightPanel;\n"],"mappings":"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"}
|
|
@@ -32,8 +32,6 @@ var isParagraph = function isParagraph(children) {
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
var HvOverflowTooltip = function HvOverflowTooltip(_ref) {
|
|
35
|
-
var _ref$current;
|
|
36
|
-
|
|
37
35
|
var id = _ref.id,
|
|
38
36
|
className = _ref.className,
|
|
39
37
|
classes = _ref.classes,
|
|
@@ -51,16 +49,29 @@ var HvOverflowTooltip = function HvOverflowTooltip(_ref) {
|
|
|
51
49
|
},
|
|
52
50
|
handleHeight: false
|
|
53
51
|
}),
|
|
52
|
+
_useResizeDetector$he = _useResizeDetector.height,
|
|
53
|
+
height = _useResizeDetector$he === void 0 ? 0 : _useResizeDetector$he,
|
|
54
54
|
_useResizeDetector$wi = _useResizeDetector.width,
|
|
55
55
|
width = _useResizeDetector$wi === void 0 ? 0 : _useResizeDetector$wi,
|
|
56
56
|
ref = _useResizeDetector.ref;
|
|
57
57
|
|
|
58
|
-
var scrollWidth = ((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollWidth) || 0; // The difference should be higher than a pixel to be considered as overflowing
|
|
59
|
-
|
|
60
|
-
var isOverflowing = scrollWidth - width >= 1;
|
|
61
58
|
var isParag = useMemo(function () {
|
|
62
59
|
return paragraphOverflow && isParagraph(data.toString());
|
|
63
|
-
}, [data, paragraphOverflow]);
|
|
60
|
+
}, [data, paragraphOverflow]); // The difference should be higher than a pixel to be considered as overflowing
|
|
61
|
+
|
|
62
|
+
var isOverflowing = useMemo(function () {
|
|
63
|
+
var _ref$current2;
|
|
64
|
+
|
|
65
|
+
if (isParag) {
|
|
66
|
+
var _ref$current;
|
|
67
|
+
|
|
68
|
+
var scrollHeight = ((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollHeight) || 0;
|
|
69
|
+
return scrollHeight - height >= 1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
var scrollWidth = ((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.scrollWidth) || 0;
|
|
73
|
+
return scrollWidth - width >= 1;
|
|
74
|
+
}, [height, isParag, ref, width]);
|
|
64
75
|
var content = useMemo(function () {
|
|
65
76
|
return /*#__PURE__*/React.createElement("div", {
|
|
66
77
|
ref: ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowTooltip.js","names":["React","useMemo","clsx","PropTypes","useResizeDetector","createStyles","withStyles","HvTooltip","HvTypography","styles","tooltipData","tooltipAnchor","whiteSpace","overflow","textOverflow","tooltipAnchorParagraph","display","isParagraph","children","test","HvOverflowTooltip","id","className","classes","data","open","paragraphOverflow","placement","tooltipsProps","refreshMode","refreshOptions","trailing","handleHeight","width","ref","
|
|
1
|
+
{"version":3,"file":"OverflowTooltip.js","names":["React","useMemo","clsx","PropTypes","useResizeDetector","createStyles","withStyles","HvTooltip","HvTypography","styles","tooltipData","tooltipAnchor","whiteSpace","overflow","textOverflow","tooltipAnchorParagraph","display","isParagraph","children","test","HvOverflowTooltip","id","className","classes","data","open","paragraphOverflow","placement","tooltipsProps","refreshMode","refreshOptions","trailing","handleHeight","height","width","ref","isParag","toString","isOverflowing","scrollHeight","current","scrollWidth","content","propTypes","string","node","shape","root","isRequired","bool","oneOf","instanceOf","Object","name","memo","RawOverflowTooltip"],"sources":["../../../src/OverflowTooltip/OverflowTooltip.js"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { useResizeDetector } from \"react-resize-detector\";\n\nimport { createStyles, withStyles } from \"@material-ui/core\";\n\nimport { HvTooltip, HvTypography } from \"..\";\n\nconst styles = createStyles({\n tooltipData: {},\n tooltipAnchor: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n tooltipAnchorParagraph: {\n overflow: \"hidden\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\",\n },\n});\n\nconst isParagraph = (children) => /\\s/.test(children);\n\n/**\n * This component generates a tooltip whenever the text is overflowed.\n */\nconst HvOverflowTooltip = ({\n id,\n className,\n classes,\n data,\n open,\n paragraphOverflow,\n placement = \"top-start\",\n tooltipsProps,\n}) => {\n const {\n height = 0,\n width = 0,\n ref,\n } = useResizeDetector({\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n handleHeight: false,\n });\n\n const isParag = useMemo(\n () => paragraphOverflow && isParagraph(data.toString()),\n [data, paragraphOverflow]\n );\n\n // The difference should be higher than a pixel to be considered as overflowing\n const isOverflowing = useMemo(() => {\n if (isParag) {\n const scrollHeight = ref.current?.scrollHeight || 0;\n\n return scrollHeight - height >= 1;\n }\n\n const scrollWidth = ref.current?.scrollWidth || 0;\n\n return scrollWidth - width >= 1;\n }, [height, isParag, ref, width]);\n\n const content = useMemo(\n () => (\n <div\n ref={ref}\n className={clsx(className, {\n [classes.tooltipAnchor]: !isParag,\n [classes.tooltipAnchorParagraph]: isParag,\n })}\n >\n {data}\n </div>\n ),\n [className, classes.tooltipAnchor, classes.tooltipAnchorParagraph, data, isParag, ref]\n );\n\n return open || isOverflowing ? (\n <HvTooltip\n id={id}\n disableHoverListener={!isOverflowing}\n open={open}\n placement={placement}\n title={\n <HvTypography className={classes.tooltipData} variant=\"normalText\">\n {data}\n </HvTypography>\n }\n {...tooltipsProps}\n >\n {content}\n </HvTooltip>\n ) : (\n content\n );\n};\n\nHvOverflowTooltip.propTypes = {\n /**\n * Id to be applied to the tooltip.\n */\n id: PropTypes.string,\n /**\n * The node that will be rendered inside the tooltip.\n */\n data: PropTypes.node,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the data container in the tooltip.\n */\n tooltipData: PropTypes.string,\n /**\n * Styles applied to the anchor of the tooltip.\n */\n tooltipAnchor: PropTypes.string,\n /**\n * Styles applied to the anchor of the when it is a paragraph.\n */\n tooltipAnchorParagraph: PropTypes.string,\n }).isRequired,\n /**\n * If `true` the overflow tooltip will always use the paragraph overflow style.\n */\n paragraphOverflow: PropTypes.bool,\n /**\n * Tooltip placement.\n */\n placement: PropTypes.oneOf([\n \"bottom-end\",\n \"bottom-start\",\n \"bottom\",\n \"left-end\",\n \"left-start\",\n \"left\",\n \"right-end\",\n \"right-start\",\n \"right\",\n \"top-end\",\n \"top-start\",\n \"top\",\n ]),\n /**\n * If true, the tooltip is shown.\n */\n open: PropTypes.bool,\n /**\n * Extra properties to add to the tooltip.\n */\n tooltipsProps: PropTypes.instanceOf(Object),\n};\n\nexport default withStyles(styles, {\n name: \"HvOverflowTooltip\",\n})(React.memo(HvOverflowTooltip));\n\nexport { HvOverflowTooltip as RawOverflowTooltip };\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "core-js/modules/es.array.unscopables.flat.js";
|
|
2
1
|
import React, { useContext } from "react";
|
|
3
2
|
import clsx from "clsx";
|
|
4
3
|
import PropTypes from "prop-types";
|
|
@@ -23,8 +22,6 @@ const Counter = ({
|
|
|
23
22
|
className,
|
|
24
23
|
id
|
|
25
24
|
}) => {
|
|
26
|
-
var _appliedFilters$flat;
|
|
27
|
-
|
|
28
25
|
const classes = useStyles();
|
|
29
26
|
const {
|
|
30
27
|
filterOptions,
|
|
@@ -34,7 +31,7 @@ const Counter = ({
|
|
|
34
31
|
const options = id ? [filterOptions.find(option => option.id === id)] : filterOptions;
|
|
35
32
|
const optionIdx = filterOptions.findIndex(option => option.id === id);
|
|
36
33
|
let groupsCounter = 0;
|
|
37
|
-
appliedFilters === null || appliedFilters === void 0 ? void 0 :
|
|
34
|
+
appliedFilters === null || appliedFilters === void 0 ? void 0 : appliedFilters.forEach((fg, i) => {
|
|
38
35
|
groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);
|
|
39
36
|
});
|
|
40
37
|
const partialCounter = id ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0 : groupsCounter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Counter.js","names":["React","useContext","clsx","PropTypes","FilterGroupContext","useStyles","getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","Counter","className","classes","appliedFilters","options","option","optionIdx","findIndex","groupsCounter","
|
|
1
|
+
{"version":3,"file":"Counter.js","names":["React","useContext","clsx","PropTypes","FilterGroupContext","useStyles","getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","Counter","className","classes","appliedFilters","options","option","optionIdx","findIndex","groupsCounter","fg","i","partialCounter","totalCounter","reduce","acc","length","root","propTypes","string"],"sources":["../../../../src/FilterGroup/Counter/Counter.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\n\nconst getExistingFiltersById = (idx, filterValues, filterOptions) => {\n let total = 0;\n filterValues[idx]?.forEach((fv) => {\n if (filterOptions[idx]?.data.find((f) => f.id === fv)) {\n total += 1;\n }\n });\n return total;\n};\n\nconst Counter = ({ className, id }) => {\n const classes = useStyles();\n const { filterOptions, filterValues = [], appliedFilters = [] } = useContext(FilterGroupContext);\n\n const options = id ? [filterOptions.find((option) => option.id === id)] : filterOptions;\n const optionIdx = filterOptions.findIndex((option) => option.id === id);\n\n let groupsCounter = 0;\n appliedFilters?.forEach((fg, i) => {\n groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);\n });\n\n const partialCounter = id\n ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0\n : groupsCounter;\n const totalCounter = options.reduce((acc, option) => acc + option.data.length, 0);\n\n return (\n <div className={clsx(classes.root, className)}>\n {partialCounter > 0 ? <b>{partialCounter}</b> : partialCounter}\n {` / ${totalCounter}`}\n </div>\n );\n};\n\nCounter.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n};\n\nexport default Counter;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,SAAP,MAAsB,UAAtB;;AAEA,MAAMC,sBAAsB,GAAG,CAACC,GAAD,EAAMC,YAAN,EAAoBC,aAApB,KAAsC;EAAA;;EACnE,IAAIC,KAAK,GAAG,CAAZ;EACA,qBAAAF,YAAY,CAACD,GAAD,CAAZ,wEAAmBI,OAAnB,CAA4BC,EAAD,IAAQ;IAAA;;IACjC,0BAAIH,aAAa,CAACF,GAAD,CAAjB,+CAAI,mBAAoBM,IAApB,CAAyBC,IAAzB,CAA+BC,CAAD,IAAOA,CAAC,CAACC,EAAF,KAASJ,EAA9C,CAAJ,EAAuD;MACrDF,KAAK,IAAI,CAAT;IACD;EACF,CAJD;EAKA,OAAOA,KAAP;AACD,CARD;;AAUA,MAAMO,OAAO,GAAG,CAAC;EAAEC,SAAF;EAAaF;AAAb,CAAD,KAAuB;EACrC,MAAMG,OAAO,GAAGd,SAAS,EAAzB;EACA,MAAM;IAAEI,aAAF;IAAiBD,YAAY,GAAG,EAAhC;IAAoCY,cAAc,GAAG;EAArD,IAA4DnB,UAAU,CAACG,kBAAD,CAA5E;EAEA,MAAMiB,OAAO,GAAGL,EAAE,GAAG,CAACP,aAAa,CAACK,IAAd,CAAoBQ,MAAD,IAAYA,MAAM,CAACN,EAAP,KAAcA,EAA7C,CAAD,CAAH,GAAwDP,aAA1E;EACA,MAAMc,SAAS,GAAGd,aAAa,CAACe,SAAd,CAAyBF,MAAD,IAAYA,MAAM,CAACN,EAAP,KAAcA,EAAlD,CAAlB;EAEA,IAAIS,aAAa,GAAG,CAApB;EACAL,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAET,OAAhB,CAAwB,CAACe,EAAD,EAAKC,CAAL,KAAW;IACjCF,aAAa,IAAInB,sBAAsB,CAACqB,CAAD,EAAInB,YAAJ,EAAkBC,aAAlB,CAAvC;EACD,CAFD;EAIA,MAAMmB,cAAc,GAAGZ,EAAE,GACrBV,sBAAsB,CAACiB,SAAD,EAAYf,YAAZ,EAA0BC,aAA1B,CAAtB,IAAkE,CAD7C,GAErBgB,aAFJ;EAGA,MAAMI,YAAY,GAAGR,OAAO,CAACS,MAAR,CAAe,CAACC,GAAD,EAAMT,MAAN,KAAiBS,GAAG,GAAGT,MAAM,CAACT,IAAP,CAAYmB,MAAlD,EAA0D,CAA1D,CAArB;EAEA,oBACE;IAAK,SAAS,EAAE9B,IAAI,CAACiB,OAAO,CAACc,IAAT,EAAef,SAAf;EAApB,GACGU,cAAc,GAAG,CAAjB,gBAAqB,+BAAIA,cAAJ,CAArB,GAA+CA,cADlD,EAEI,MAAKC,YAAa,EAFtB,CADF;AAMD,CAvBD;;AAyBA,wCAAAZ,OAAO,CAACiB,SAAR,GAAoB;EAClBhB,SAAS,EAAEf,SAAS,CAACgC,MADH;EAElBnB,EAAE,EAAEb,SAAS,CAACgC;AAFI,CAApB;AAKA,eAAelB,OAAf"}
|
|
@@ -33,8 +33,8 @@ const RightPanel = ({
|
|
|
33
33
|
const activeGroupOptions = useMemo(() => {
|
|
34
34
|
var _filterOptions$active;
|
|
35
35
|
|
|
36
|
-
return ((
|
|
37
|
-
}, [filterOptions, activeGroup]);
|
|
36
|
+
return ((_filterOptions$active = filterOptions[activeGroup]) === null || _filterOptions$active === void 0 ? void 0 : _filterOptions$active.data.filter(option => option.name.toLowerCase().includes(searchStr.toLowerCase())).map(option => option.id)) || [];
|
|
37
|
+
}, [filterOptions, activeGroup, searchStr]);
|
|
38
38
|
const activeFilterValues = useMemo(() => {
|
|
39
39
|
var _filterValues$activeG;
|
|
40
40
|
|
|
@@ -72,9 +72,21 @@ const RightPanel = ({
|
|
|
72
72
|
|
|
73
73
|
const handleSelectAll = useCallback(() => {
|
|
74
74
|
const newFilterValues = cloneDeep(filterValues);
|
|
75
|
-
|
|
75
|
+
|
|
76
|
+
if (anySelected) {
|
|
77
|
+
if (searchStr !== "") {
|
|
78
|
+
var _filterValues$activeG3;
|
|
79
|
+
|
|
80
|
+
newFilterValues[activeGroup] = (_filterValues$activeG3 = filterValues[activeGroup]) === null || _filterValues$activeG3 === void 0 ? void 0 : _filterValues$activeG3.filter(value => !activeGroupOptions.includes(value));
|
|
81
|
+
} else {
|
|
82
|
+
newFilterValues[activeGroup] = [];
|
|
83
|
+
}
|
|
84
|
+
} else {
|
|
85
|
+
newFilterValues[activeGroup] = [...activeGroupOptions];
|
|
86
|
+
}
|
|
87
|
+
|
|
76
88
|
setFilterValues(newFilterValues);
|
|
77
|
-
}, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues]);
|
|
89
|
+
}, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues, searchStr]);
|
|
78
90
|
/**
|
|
79
91
|
* Create selecteAll component.
|
|
80
92
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPanel.js","names":["React","useMemo","useContext","useState","useEffect","useCallback","PropTypes","cloneDeep","clsx","FilterGroupContext","useStyles","setId","HvTypography","HvList","HvInput","HvPanel","HvCheckBox","RightPanel","id","className","labels","emptyElement","classes","searchStr","setSearchStr","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","activeGroupOptions","data","map","option","activeFilterValues","filter","value","includes","listValues","label","name","selected","isHidden","toLowerCase","indexOf","updateSelectAll","nbrSelected","length","hasSelection","allSelect","onChangeHandler","values","newFilterValues","i","v","handleSelectAll","SelectAll","selectAll","multiSelectionConjunction","defaultLabel","selectAllContainer","container","selection","root","search","searchBoxPlaceholder","event","str","list","propTypes","string","shape","node"],"sources":["../../../../src/FilterGroup/RightPanel/RightPanel.js"],"sourcesContent":["import React, { useMemo, useContext, useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport clsx from \"clsx\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\nimport { setId, HvTypography, HvList, HvInput, HvPanel, HvCheckBox } from \"../..\";\n\nconst RightPanel = ({ id, className, labels, emptyElement }) => {\n const classes = useStyles();\n const [searchStr, setSearchStr] = useState(\"\");\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(FilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () => (filterOptions[activeGroup]?.data || []).map((option) => option.id),\n [filterOptions, activeGroup]\n );\n\n const activeFilterValues = useMemo(\n () => filterValues[activeGroup]?.filter((value) => activeGroupOptions.includes(value)),\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n (filterOptions[activeGroup]?.data || []).map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden: option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })),\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((option, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;\n\n setFilterValues(newFilterValues);\n }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues]);\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n classes.selectAll,\n classes.selectAllContainer,\n classes.selection,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={clsx(className, classes.root)}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels.searchBoxPlaceholder}\n value={searchStr}\n onChange={(event, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n className={classes.list}\n values={listValues}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n\nRightPanel.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n labels: PropTypes.shape({\n searchBoxPlaceholder: PropTypes.string,\n selectAll: PropTypes.string,\n multiSelectionConjunction: PropTypes.string,\n }),\n emptyElement: PropTypes.node,\n};\n\nexport default RightPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightPanel.js","names":["React","useMemo","useContext","useState","useEffect","useCallback","PropTypes","cloneDeep","clsx","FilterGroupContext","useStyles","setId","HvTypography","HvList","HvInput","HvPanel","HvCheckBox","RightPanel","id","className","labels","emptyElement","classes","searchStr","setSearchStr","allSelected","setAllSelected","anySelected","setAnySelected","filterOptions","filterValues","setFilterValues","activeGroup","activeGroupOptions","data","filter","option","name","toLowerCase","includes","map","activeFilterValues","value","listValues","label","selected","isHidden","indexOf","updateSelectAll","nbrSelected","length","hasSelection","allSelect","onChangeHandler","values","newFilterValues","i","v","handleSelectAll","SelectAll","selectAll","multiSelectionConjunction","defaultLabel","selectAllContainer","container","selection","root","search","searchBoxPlaceholder","event","str","list","propTypes","string","shape","node"],"sources":["../../../../src/FilterGroup/RightPanel/RightPanel.js"],"sourcesContent":["import React, { useMemo, useContext, useState, useEffect, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport clsx from \"clsx\";\nimport { FilterGroupContext } from \"../FilterGroupContext\";\nimport useStyles from \"./styles\";\nimport { setId, HvTypography, HvList, HvInput, HvPanel, HvCheckBox } from \"../..\";\n\nconst RightPanel = ({ id, className, labels, emptyElement }) => {\n const classes = useStyles();\n const [searchStr, setSearchStr] = useState(\"\");\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n\n const {\n filterOptions,\n filterValues = [],\n setFilterValues,\n activeGroup,\n } = useContext(FilterGroupContext);\n\n const activeGroupOptions = useMemo(\n () =>\n filterOptions[activeGroup]?.data\n .filter((option) => option.name.toLowerCase().includes(searchStr.toLowerCase()))\n .map((option) => option.id) || [],\n [filterOptions, activeGroup, searchStr]\n );\n\n const activeFilterValues = useMemo(\n () => filterValues[activeGroup]?.filter((value) => activeGroupOptions.includes(value)),\n [filterValues, activeGroupOptions, activeGroup]\n );\n\n const listValues = useMemo(\n () =>\n (filterOptions[activeGroup]?.data || []).map((option) => ({\n ...option,\n label: option.name,\n selected: filterValues[activeGroup]?.includes(option.id),\n isHidden: option.name.toLowerCase().indexOf(searchStr.toLowerCase()) < 0,\n })),\n [filterOptions, filterValues, activeGroup, searchStr]\n );\n\n const updateSelectAll = useCallback(() => {\n const nbrSelected = activeFilterValues?.length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === activeGroupOptions.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n }, [activeFilterValues, activeGroupOptions]);\n\n useEffect(() => {\n updateSelectAll();\n }, [activeFilterValues, updateSelectAll]);\n\n useEffect(() => setSearchStr(\"\"), [activeGroup]);\n\n const onChangeHandler = (values) => {\n const newFilterValues = filterOptions.map((option, i) =>\n activeGroup === i\n ? values.filter((v) => v.selected).map((v) => v.id)\n : [...(filterValues[i] || [])]\n );\n setFilterValues(newFilterValues);\n };\n\n const handleSelectAll = useCallback(() => {\n const newFilterValues = cloneDeep(filterValues);\n\n if (anySelected) {\n if (searchStr !== \"\") {\n newFilterValues[activeGroup] = filterValues[activeGroup]?.filter(\n (value) => !activeGroupOptions.includes(value)\n );\n } else {\n newFilterValues[activeGroup] = [];\n }\n } else {\n newFilterValues[activeGroup] = [...activeGroupOptions];\n }\n\n setFilterValues(newFilterValues);\n }, [activeGroup, activeGroupOptions, anySelected, filterValues, setFilterValues, searchStr]);\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const SelectAll = useCallback(() => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = activeFilterValues?.length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${activeGroupOptions.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${activeGroupOptions.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n }, [\n activeFilterValues?.length,\n activeGroupOptions.length,\n allSelected,\n anySelected,\n classes.selectAll,\n classes.selectAllContainer,\n classes.selection,\n handleSelectAll,\n id,\n labels,\n ]);\n\n return (\n <HvPanel id={setId(id, \"rightPanel\")} className={clsx(className, classes.root)}>\n {listValues.length > 0 ? (\n <>\n <HvInput\n id={setId(id, \"search\")}\n classes={{\n root: classes.search,\n }}\n type=\"search\"\n placeholder={labels.searchBoxPlaceholder}\n value={searchStr}\n onChange={(event, str) => setSearchStr(str)}\n />\n <SelectAll />\n <HvList\n key={activeGroup}\n id={setId(id, \"list\")}\n className={classes.list}\n values={listValues}\n multiSelect\n useSelector\n showSelectAll={false}\n onChange={onChangeHandler}\n selectable\n condensed\n hasTooltips\n />\n </>\n ) : (\n emptyElement\n )}\n </HvPanel>\n );\n};\n\nRightPanel.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n labels: PropTypes.shape({\n searchBoxPlaceholder: PropTypes.string,\n selectAll: PropTypes.string,\n multiSelectionConjunction: PropTypes.string,\n }),\n emptyElement: PropTypes.node,\n};\n\nexport default RightPanel;\n"],"mappings":"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"}
|
|
@@ -36,9 +36,8 @@ const HvOverflowTooltip = ({
|
|
|
36
36
|
placement = "top-start",
|
|
37
37
|
tooltipsProps
|
|
38
38
|
}) => {
|
|
39
|
-
var _ref$current;
|
|
40
|
-
|
|
41
39
|
const {
|
|
40
|
+
height = 0,
|
|
42
41
|
width = 0,
|
|
43
42
|
ref
|
|
44
43
|
} = useResizeDetector({
|
|
@@ -48,10 +47,21 @@ const HvOverflowTooltip = ({
|
|
|
48
47
|
},
|
|
49
48
|
handleHeight: false
|
|
50
49
|
});
|
|
51
|
-
const
|
|
50
|
+
const isParag = useMemo(() => paragraphOverflow && isParagraph(data.toString()), [data, paragraphOverflow]); // The difference should be higher than a pixel to be considered as overflowing
|
|
51
|
+
|
|
52
|
+
const isOverflowing = useMemo(() => {
|
|
53
|
+
var _ref$current2;
|
|
54
|
+
|
|
55
|
+
if (isParag) {
|
|
56
|
+
var _ref$current;
|
|
57
|
+
|
|
58
|
+
const scrollHeight = ((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.scrollHeight) || 0;
|
|
59
|
+
return scrollHeight - height >= 1;
|
|
60
|
+
}
|
|
52
61
|
|
|
53
|
-
|
|
54
|
-
|
|
62
|
+
const scrollWidth = ((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.scrollWidth) || 0;
|
|
63
|
+
return scrollWidth - width >= 1;
|
|
64
|
+
}, [height, isParag, ref, width]);
|
|
55
65
|
const content = useMemo(() => /*#__PURE__*/React.createElement("div", {
|
|
56
66
|
ref: ref,
|
|
57
67
|
className: clsx(className, isParag ? classes.tooltipAnchorParagraph : classes.tooltipAnchor)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowTooltip.js","names":["React","useMemo","clsx","PropTypes","useResizeDetector","createStyles","withStyles","HvTooltip","HvTypography","styles","tooltipData","tooltipAnchor","whiteSpace","overflow","textOverflow","tooltipAnchorParagraph","display","isParagraph","children","test","HvOverflowTooltip","id","className","classes","data","open","paragraphOverflow","placement","tooltipsProps","width","ref","refreshMode","refreshOptions","trailing","handleHeight","
|
|
1
|
+
{"version":3,"file":"OverflowTooltip.js","names":["React","useMemo","clsx","PropTypes","useResizeDetector","createStyles","withStyles","HvTooltip","HvTypography","styles","tooltipData","tooltipAnchor","whiteSpace","overflow","textOverflow","tooltipAnchorParagraph","display","isParagraph","children","test","HvOverflowTooltip","id","className","classes","data","open","paragraphOverflow","placement","tooltipsProps","height","width","ref","refreshMode","refreshOptions","trailing","handleHeight","isParag","toString","isOverflowing","scrollHeight","current","scrollWidth","content","propTypes","string","node","shape","root","isRequired","bool","oneOf","instanceOf","Object","name","memo","RawOverflowTooltip"],"sources":["../../../src/OverflowTooltip/OverflowTooltip.js"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { useResizeDetector } from \"react-resize-detector\";\n\nimport { createStyles, withStyles } from \"@material-ui/core\";\n\nimport { HvTooltip, HvTypography } from \"..\";\n\nconst styles = createStyles({\n tooltipData: {},\n tooltipAnchor: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n tooltipAnchorParagraph: {\n overflow: \"hidden\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\",\n },\n});\n\nconst isParagraph = (children) => /\\s/.test(children);\n\n/**\n * This component generates a tooltip whenever the text is overflowed.\n */\nconst HvOverflowTooltip = ({\n id,\n className,\n classes,\n data,\n open,\n paragraphOverflow,\n placement = \"top-start\",\n tooltipsProps,\n}) => {\n const {\n height = 0,\n width = 0,\n ref,\n } = useResizeDetector({\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n handleHeight: false,\n });\n\n const isParag = useMemo(\n () => paragraphOverflow && isParagraph(data.toString()),\n [data, paragraphOverflow]\n );\n\n // The difference should be higher than a pixel to be considered as overflowing\n const isOverflowing = useMemo(() => {\n if (isParag) {\n const scrollHeight = ref.current?.scrollHeight || 0;\n\n return scrollHeight - height >= 1;\n }\n\n const scrollWidth = ref.current?.scrollWidth || 0;\n\n return scrollWidth - width >= 1;\n }, [height, isParag, ref, width]);\n\n const content = useMemo(\n () => (\n <div\n ref={ref}\n className={clsx(className, {\n [classes.tooltipAnchor]: !isParag,\n [classes.tooltipAnchorParagraph]: isParag,\n })}\n >\n {data}\n </div>\n ),\n [className, classes.tooltipAnchor, classes.tooltipAnchorParagraph, data, isParag, ref]\n );\n\n return open || isOverflowing ? (\n <HvTooltip\n id={id}\n disableHoverListener={!isOverflowing}\n open={open}\n placement={placement}\n title={\n <HvTypography className={classes.tooltipData} variant=\"normalText\">\n {data}\n </HvTypography>\n }\n {...tooltipsProps}\n >\n {content}\n </HvTooltip>\n ) : (\n content\n );\n};\n\nHvOverflowTooltip.propTypes = {\n /**\n * Id to be applied to the tooltip.\n */\n id: PropTypes.string,\n /**\n * The node that will be rendered inside the tooltip.\n */\n data: PropTypes.node,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the data container in the tooltip.\n */\n tooltipData: PropTypes.string,\n /**\n * Styles applied to the anchor of the tooltip.\n */\n tooltipAnchor: PropTypes.string,\n /**\n * Styles applied to the anchor of the when it is a paragraph.\n */\n tooltipAnchorParagraph: PropTypes.string,\n }).isRequired,\n /**\n * If `true` the overflow tooltip will always use the paragraph overflow style.\n */\n paragraphOverflow: PropTypes.bool,\n /**\n * Tooltip placement.\n */\n placement: PropTypes.oneOf([\n \"bottom-end\",\n \"bottom-start\",\n \"bottom\",\n \"left-end\",\n \"left-start\",\n \"left\",\n \"right-end\",\n \"right-start\",\n \"right\",\n \"top-end\",\n \"top-start\",\n \"top\",\n ]),\n /**\n * If true, the tooltip is shown.\n */\n open: PropTypes.bool,\n /**\n * Extra properties to add to the tooltip.\n */\n tooltipsProps: PropTypes.instanceOf(Object),\n};\n\nexport default withStyles(styles, {\n name: \"HvOverflowTooltip\",\n})(React.memo(HvOverflowTooltip));\n\nexport { HvOverflowTooltip as RawOverflowTooltip };\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hitachivantara/uikit-react-core",
|
|
3
|
-
"version": "3.75.
|
|
3
|
+
"version": "3.75.3",
|
|
4
4
|
"description": "A collection of React components for the Hitachi Vantara's Design System.",
|
|
5
5
|
"homepage": "https://github.com/lumada-design/hv-uikit-react",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"react-dom": "^16.13.1 || ^17.0.2"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@hitachivantara/uikit-common-themes": "^3.6.
|
|
45
|
-
"@hitachivantara/uikit-react-icons": "^3.9.
|
|
44
|
+
"@hitachivantara/uikit-common-themes": "^3.6.4",
|
|
45
|
+
"@hitachivantara/uikit-react-icons": "^3.9.7",
|
|
46
46
|
"@popperjs/core": "2.11.5",
|
|
47
47
|
"attr-accept": "^2.2.2",
|
|
48
48
|
"clsx": "^1.2.1",
|
|
@@ -78,7 +78,8 @@
|
|
|
78
78
|
"dist"
|
|
79
79
|
],
|
|
80
80
|
"publishConfig": {
|
|
81
|
-
"access": "public"
|
|
81
|
+
"access": "public",
|
|
82
|
+
"tag": "previous"
|
|
82
83
|
},
|
|
83
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "a396628896903c77ad7cbbbbc5f0db3ef98e952b"
|
|
84
85
|
}
|