@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.
@@ -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 : (_appliedFilters$flat = appliedFilters.flat()) === null || _appliedFilters$flat === void 0 ? void 0 : _appliedFilters$flat.filter(function (elem) {
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","flat","filter","elem","undefined","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\n ?.flat()\n ?.filter((elem) => elem !== undefined)\n .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;;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,oCAAAA,cAAc,CACVM,IADJ,gFAEIC,MAFJ,CAEW,UAACC,IAAD;IAAA,OAAUA,IAAI,KAAKC,SAAnB;EAAA,CAFX,EAGGrB,OAHH,CAGW,UAACsB,EAAD,EAAKC,CAAL,EAAW;IAClBN,aAAa,IAAItB,sBAAsB,CAAC4B,CAAD,EAAI1B,YAAJ,EAAkBC,aAAlB,CAAvC;EACD,CALH;EAOA,IAAM0B,cAAc,GAAGnB,EAAE,GACrBV,sBAAsB,CAACoB,SAAD,EAAYlB,YAAZ,EAA0BC,aAA1B,CAAtB,IAAkE,CAD7C,GAErBmB,aAFJ;EAGA,IAAMQ,YAAY,GAAGZ,OAAO,CAACa,MAAR,CAAe,UAACC,GAAD,EAAMb,MAAN;IAAA,OAAiBa,GAAG,GAAGb,MAAM,CAACZ,IAAP,CAAY0B,MAAnC;EAAA,CAAf,EAA0D,CAA1D,CAArB;EAEA,oBACE;IAAK,SAAS,EAAE,IAAAC,aAAA,EAAKrB,OAAO,CAACsB,IAAb,EAAmBvB,SAAnB;EAAhB,GACGiB,cAAc,GAAG,CAAjB,gBAAqB,wCAAIA,cAAJ,CAArB,GAA+CA,cADlD,eAESC,YAFT,EADF;AAMD,CA1BD;;AA4BA,wCAAAnB,OAAO,CAACyB,SAAR,GAAoB;EAClBxB,SAAS,EAAEyB,kBAAA,CAAUC,MADH;EAElB5B,EAAE,EAAE2B,kBAAA,CAAUC;AAFI,CAApB;eAKe3B,O"}
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 (((_filterOptions$active = filterOptions[activeGroup]) === null || _filterOptions$active === void 0 ? void 0 : _filterOptions$active.data) || []).map(function (option) {
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
- newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;
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","scrollWidth","current","isOverflowing","isParag","useMemo","toString","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 { width = 0, ref } = useResizeDetector({\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n handleHeight: false,\n });\n const scrollWidth = ref.current?.scrollWidth || 0;\n // The difference should be higher than a pixel to be considered as overflowing\n const isOverflowing = scrollWidth - width >= 1;\n\n const isParag = useMemo(\n () => paragraphOverflow && isParagraph(data.toString()),\n [data, paragraphOverflow]\n );\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;;;;;AAEA,IAAMA,MAAM,GAAG,IAAAC,kBAAA,EAAa;EAC1BC,WAAW,EAAE,EADa;EAE1BC,aAAa,EAAE;IACbC,UAAU,EAAE,QADC;IAEbC,QAAQ,EAAE,QAFG;IAGbC,YAAY,EAAE;EAHD,CAFW;EAO1BC,sBAAsB,EAAE;IACtBF,QAAQ,EAAE,QADY;IAEtBG,OAAO,EAAE,aAFa;IAGtB,sBAAsB,CAHA;IAItB,sBAAsB;EAJA;AAPE,CAAb,CAAf;;AAeA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD;EAAA,OAAc,KAAKC,IAAL,CAAUD,QAAV,CAAd;AAAA,CAApB;AAEA;AACA;AACA;;;AACA,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB,OASpB;EAAA;;EAAA,IARJC,EAQI,QARJA,EAQI;EAAA,IAPJC,SAOI,QAPJA,SAOI;EAAA,IANJC,OAMI,QANJA,OAMI;EAAA,IALJC,IAKI,QALJA,IAKI;EAAA,IAJJC,IAII,QAJJA,IAII;EAAA,IAHJC,iBAGI,QAHJA,iBAGI;EAAA,0BAFJC,SAEI;EAAA,IAFJA,SAEI,+BAFQ,WAER;EAAA,IADJC,aACI,QADJA,aACI;;EACJ,yBAA2B,IAAAC,sCAAA,EAAkB;IAC3CC,WAAW,EAAE,UAD8B;IAE3CC,cAAc,EAAE;MACdC,QAAQ,EAAE;IADI,CAF2B;IAK3CC,YAAY,EAAE;EAL6B,CAAlB,CAA3B;EAAA,+CAAQC,KAAR;EAAA,IAAQA,KAAR,sCAAgB,CAAhB;EAAA,IAAmBC,GAAnB,sBAAmBA,GAAnB;;EAOA,IAAMC,WAAW,GAAG,iBAAAD,GAAG,CAACE,OAAJ,8DAAaD,WAAb,KAA4B,CAAhD,CARI,CASJ;;EACA,IAAME,aAAa,GAAGF,WAAW,GAAGF,KAAd,IAAuB,CAA7C;EAEA,IAAMK,OAAO,GAAG,IAAAC,cAAA,EACd;IAAA,OAAMd,iBAAiB,IAAIT,WAAW,CAACO,IAAI,CAACiB,QAAL,EAAD,CAAtC;EAAA,CADc,EAEd,CAACjB,IAAD,EAAOE,iBAAP,CAFc,CAAhB;EAKA,IAAMgB,OAAO,GAAG,IAAAF,cAAA,EACd;IAAA,oBACE;MACE,GAAG,EAAEL,GADP;MAEE,SAAS,EAAE,IAAAQ,aAAA,EAAKrB,SAAL,EAEyBiB,OAFzB,GAERhB,OAAO,CAACR,sBAFA,GACRQ,OAAO,CAACZ,aADA;IAFb,GAOGa,IAPH,CADF;EAAA,CADc,EAYd,CAACF,SAAD,EAAYC,OAAO,CAACZ,aAApB,EAAmCY,OAAO,CAACR,sBAA3C,EAAmES,IAAnE,EAAyEe,OAAzE,EAAkFJ,GAAlF,CAZc,CAAhB;EAeA,OAAOV,IAAI,IAAIa,aAAR,gBACL,6BAAC,WAAD;IACE,EAAE,EAAEjB,EADN;IAEE,oBAAoB,EAAE,CAACiB,aAFzB;IAGE,IAAI,EAAEb,IAHR;IAIE,SAAS,EAAEE,SAJb;IAKE,KAAK,eACH,6BAAC,cAAD;MAAc,SAAS,EAAEJ,OAAO,CAACb,WAAjC;MAA8C,OAAO,EAAC;IAAtD,GACGc,IADH;EANJ,GAUMI,aAVN,GAYGc,OAZH,CADK,GAgBLA,OAhBF;AAkBD,CA3DD;;;AA6DA,wCAAAtB,iBAAiB,CAACwB,SAAlB,GAA8B;EAC5B;AACF;AACA;EACEvB,EAAE,EAAEwB,kBAAA,CAAUC,MAJc;;EAK5B;AACF;AACA;EACEtB,IAAI,EAAEqB,kBAAA,CAAUE,IARY;;EAS5B;AACF;AACA;EACEzB,SAAS,EAAEuB,kBAAA,CAAUC,MAZO;;EAa5B;AACF;AACA;EACEvB,OAAO,EAAEsB,kBAAA,CAAUG,KAAV,CAAgB;IACvB;AACJ;AACA;IACIC,IAAI,EAAEJ,kBAAA,CAAUC,MAJO;;IAKvB;AACJ;AACA;IACIpC,WAAW,EAAEmC,kBAAA,CAAUC,MARA;;IASvB;AACJ;AACA;IACInC,aAAa,EAAEkC,kBAAA,CAAUC,MAZF;;IAavB;AACJ;AACA;IACI/B,sBAAsB,EAAE8B,kBAAA,CAAUC;EAhBX,CAAhB,EAiBNI,UAjCyB;;EAkC5B;AACF;AACA;EACExB,iBAAiB,EAAEmB,kBAAA,CAAUM,IArCD;;EAsC5B;AACF;AACA;EACExB,SAAS,EAAEkB,kBAAA,CAAUO,KAAV,CAAgB,CACzB,YADyB,EAEzB,cAFyB,EAGzB,QAHyB,EAIzB,UAJyB,EAKzB,YALyB,EAMzB,MANyB,EAOzB,WAPyB,EAQzB,aARyB,EASzB,OATyB,EAUzB,SAVyB,EAWzB,WAXyB,EAYzB,KAZyB,CAAhB,CAzCiB;;EAuD5B;AACF;AACA;EACE3B,IAAI,EAAEoB,kBAAA,CAAUM,IA1DY;;EA2D5B;AACF;AACA;EACEvB,aAAa,EAAEiB,kBAAA,CAAUQ,UAAV,CAAqBC,MAArB;AA9Da,CAA9B;;eAiEe,IAAAC,gBAAA,EAAW/C,MAAX,EAAmB;EAChCgD,IAAI,EAAE;AAD0B,CAAnB,gBAEZC,cAAA,CAAMC,IAAN,CAAWtC,iBAAX,CAFY,C"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;;;;;AAEA,IAAMA,MAAM,GAAG,IAAAC,kBAAA,EAAa;EAC1BC,WAAW,EAAE,EADa;EAE1BC,aAAa,EAAE;IACbC,UAAU,EAAE,QADC;IAEbC,QAAQ,EAAE,QAFG;IAGbC,YAAY,EAAE;EAHD,CAFW;EAO1BC,sBAAsB,EAAE;IACtBF,QAAQ,EAAE,QADY;IAEtBG,OAAO,EAAE,aAFa;IAGtB,sBAAsB,CAHA;IAItB,sBAAsB;EAJA;AAPE,CAAb,CAAf;;AAeA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD;EAAA,OAAc,KAAKC,IAAL,CAAUD,QAAV,CAAd;AAAA,CAApB;AAEA;AACA;AACA;;;AACA,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB,OASpB;EAAA,IARJC,EAQI,QARJA,EAQI;EAAA,IAPJC,SAOI,QAPJA,SAOI;EAAA,IANJC,OAMI,QANJA,OAMI;EAAA,IALJC,IAKI,QALJA,IAKI;EAAA,IAJJC,IAII,QAJJA,IAII;EAAA,IAHJC,iBAGI,QAHJA,iBAGI;EAAA,0BAFJC,SAEI;EAAA,IAFJA,SAEI,+BAFQ,WAER;EAAA,IADJC,aACI,QADJA,aACI;;EACJ,yBAII,IAAAC,sCAAA,EAAkB;IACpBC,WAAW,EAAE,UADO;IAEpBC,cAAc,EAAE;MACdC,QAAQ,EAAE;IADI,CAFI;IAKpBC,YAAY,EAAE;EALM,CAAlB,CAJJ;EAAA,+CACEC,MADF;EAAA,IACEA,MADF,sCACW,CADX;EAAA,+CAEEC,KAFF;EAAA,IAEEA,KAFF,sCAEU,CAFV;EAAA,IAGEC,GAHF,sBAGEA,GAHF;;EAYA,IAAMC,OAAO,GAAG,IAAAC,cAAA,EACd;IAAA,OAAMZ,iBAAiB,IAAIT,WAAW,CAACO,IAAI,CAACe,QAAL,EAAD,CAAtC;EAAA,CADc,EAEd,CAACf,IAAD,EAAOE,iBAAP,CAFc,CAAhB,CAbI,CAkBJ;;EACA,IAAMc,aAAa,GAAG,IAAAF,cAAA,EAAQ,YAAM;IAAA;;IAClC,IAAID,OAAJ,EAAa;MAAA;;MACX,IAAMI,YAAY,GAAG,iBAAAL,GAAG,CAACM,OAAJ,8DAAaD,YAAb,KAA6B,CAAlD;MAEA,OAAOA,YAAY,GAAGP,MAAf,IAAyB,CAAhC;IACD;;IAED,IAAMS,WAAW,GAAG,kBAAAP,GAAG,CAACM,OAAJ,gEAAaC,WAAb,KAA4B,CAAhD;IAEA,OAAOA,WAAW,GAAGR,KAAd,IAAuB,CAA9B;EACD,CAVqB,EAUnB,CAACD,MAAD,EAASG,OAAT,EAAkBD,GAAlB,EAAuBD,KAAvB,CAVmB,CAAtB;EAYA,IAAMS,OAAO,GAAG,IAAAN,cAAA,EACd;IAAA,oBACE;MACE,GAAG,EAAEF,GADP;MAEE,SAAS,EAAE,IAAAS,aAAA,EAAKvB,SAAL,EAEyBe,OAFzB,GAERd,OAAO,CAACR,sBAFA,GACRQ,OAAO,CAACZ,aADA;IAFb,GAOGa,IAPH,CADF;EAAA,CADc,EAYd,CAACF,SAAD,EAAYC,OAAO,CAACZ,aAApB,EAAmCY,OAAO,CAACR,sBAA3C,EAAmES,IAAnE,EAAyEa,OAAzE,EAAkFD,GAAlF,CAZc,CAAhB;EAeA,OAAOX,IAAI,IAAIe,aAAR,gBACL,6BAAC,WAAD;IACE,EAAE,EAAEnB,EADN;IAEE,oBAAoB,EAAE,CAACmB,aAFzB;IAGE,IAAI,EAAEf,IAHR;IAIE,SAAS,EAAEE,SAJb;IAKE,KAAK,eACH,6BAAC,cAAD;MAAc,SAAS,EAAEJ,OAAO,CAACb,WAAjC;MAA8C,OAAO,EAAC;IAAtD,GACGc,IADH;EANJ,GAUMI,aAVN,GAYGgB,OAZH,CADK,GAgBLA,OAhBF;AAkBD,CAzED;;;AA2EA,wCAAAxB,iBAAiB,CAAC0B,SAAlB,GAA8B;EAC5B;AACF;AACA;EACEzB,EAAE,EAAE0B,kBAAA,CAAUC,MAJc;;EAK5B;AACF;AACA;EACExB,IAAI,EAAEuB,kBAAA,CAAUE,IARY;;EAS5B;AACF;AACA;EACE3B,SAAS,EAAEyB,kBAAA,CAAUC,MAZO;;EAa5B;AACF;AACA;EACEzB,OAAO,EAAEwB,kBAAA,CAAUG,KAAV,CAAgB;IACvB;AACJ;AACA;IACIC,IAAI,EAAEJ,kBAAA,CAAUC,MAJO;;IAKvB;AACJ;AACA;IACItC,WAAW,EAAEqC,kBAAA,CAAUC,MARA;;IASvB;AACJ;AACA;IACIrC,aAAa,EAAEoC,kBAAA,CAAUC,MAZF;;IAavB;AACJ;AACA;IACIjC,sBAAsB,EAAEgC,kBAAA,CAAUC;EAhBX,CAAhB,EAiBNI,UAjCyB;;EAkC5B;AACF;AACA;EACE1B,iBAAiB,EAAEqB,kBAAA,CAAUM,IArCD;;EAsC5B;AACF;AACA;EACE1B,SAAS,EAAEoB,kBAAA,CAAUO,KAAV,CAAgB,CACzB,YADyB,EAEzB,cAFyB,EAGzB,QAHyB,EAIzB,UAJyB,EAKzB,YALyB,EAMzB,MANyB,EAOzB,WAPyB,EAQzB,aARyB,EASzB,OATyB,EAUzB,SAVyB,EAWzB,WAXyB,EAYzB,KAZyB,CAAhB,CAzCiB;;EAuD5B;AACF;AACA;EACE7B,IAAI,EAAEsB,kBAAA,CAAUM,IA1DY;;EA2D5B;AACF;AACA;EACEzB,aAAa,EAAEmB,kBAAA,CAAUQ,UAAV,CAAqBC,MAArB;AA9Da,CAA9B;;eAiEe,IAAAC,gBAAA,EAAWjD,MAAX,EAAmB;EAChCkD,IAAI,EAAE;AAD0B,CAAnB,gBAEZC,cAAA,CAAMC,IAAN,CAAWxC,iBAAX,CAFY,C"}
@@ -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 : (_appliedFilters$flat = appliedFilters.flat()) === null || _appliedFilters$flat === void 0 ? void 0 : _appliedFilters$flat.filter(function (elem) {
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","flat","filter","elem","undefined","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\n ?.flat()\n ?.filter((elem) => elem !== undefined)\n .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;;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,oCAAAA,cAAc,CACVM,IADJ,gFAEIC,MAFJ,CAEW,UAACC,IAAD;IAAA,OAAUA,IAAI,KAAKC,SAAnB;EAAA,CAFX,EAGGlB,OAHH,CAGW,UAACmB,EAAD,EAAKC,CAAL,EAAW;IAClBN,aAAa,IAAInB,sBAAsB,CAACyB,CAAD,EAAIvB,YAAJ,EAAkBC,aAAlB,CAAvC;EACD,CALH;EAOA,IAAMuB,cAAc,GAAGhB,EAAE,GACrBV,sBAAsB,CAACiB,SAAD,EAAYf,YAAZ,EAA0BC,aAA1B,CAAtB,IAAkE,CAD7C,GAErBgB,aAFJ;EAGA,IAAMQ,YAAY,GAAGZ,OAAO,CAACa,MAAR,CAAe,UAACC,GAAD,EAAMb,MAAN;IAAA,OAAiBa,GAAG,GAAGb,MAAM,CAACT,IAAP,CAAYuB,MAAnC;EAAA,CAAf,EAA0D,CAA1D,CAArB;EAEA,oBACE;IAAK,SAAS,EAAElC,IAAI,CAACiB,OAAO,CAACkB,IAAT,EAAenB,SAAf;EAApB,GACGc,cAAc,GAAG,CAAjB,gBAAqB,+BAAIA,cAAJ,CAArB,GAA+CA,cADlD,eAESC,YAFT,EADF;AAMD,CA1BD;;AA4BA,wCAAAhB,OAAO,CAACqB,SAAR,GAAoB;EAClBpB,SAAS,EAAEf,SAAS,CAACoC,MADH;EAElBvB,EAAE,EAAEb,SAAS,CAACoC;AAFI,CAApB;AAKA,eAAetB,OAAf"}
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 (((_filterOptions$active = filterOptions[activeGroup]) === null || _filterOptions$active === void 0 ? void 0 : _filterOptions$active.data) || []).map(function (option) {
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
- newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;
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","scrollWidth","current","isOverflowing","isParag","toString","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 { width = 0, ref } = useResizeDetector({\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n handleHeight: false,\n });\n const scrollWidth = ref.current?.scrollWidth || 0;\n // The difference should be higher than a pixel to be considered as overflowing\n const isOverflowing = scrollWidth - width >= 1;\n\n const isParag = useMemo(\n () => paragraphOverflow && isParagraph(data.toString()),\n [data, paragraphOverflow]\n );\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
+ {"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 : (_appliedFilters$flat = appliedFilters.flat()) === null || _appliedFilters$flat === void 0 ? void 0 : _appliedFilters$flat.filter(elem => elem !== undefined).forEach((fg, i) => {
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","flat","filter","elem","undefined","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\n ?.flat()\n ?.filter((elem) => elem !== undefined)\n .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;EAAA;;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,oCAAAA,cAAc,CACVM,IADJ,gFAEIC,MAFJ,CAEYC,IAAD,IAAUA,IAAI,KAAKC,SAF9B,EAGGlB,OAHH,CAGW,CAACmB,EAAD,EAAKC,CAAL,KAAW;IAClBN,aAAa,IAAInB,sBAAsB,CAACyB,CAAD,EAAIvB,YAAJ,EAAkBC,aAAlB,CAAvC;EACD,CALH;EAOA,MAAMuB,cAAc,GAAGhB,EAAE,GACrBV,sBAAsB,CAACiB,SAAD,EAAYf,YAAZ,EAA0BC,aAA1B,CAAtB,IAAkE,CAD7C,GAErBgB,aAFJ;EAGA,MAAMQ,YAAY,GAAGZ,OAAO,CAACa,MAAR,CAAe,CAACC,GAAD,EAAMb,MAAN,KAAiBa,GAAG,GAAGb,MAAM,CAACT,IAAP,CAAYuB,MAAlD,EAA0D,CAA1D,CAArB;EAEA,oBACE;IAAK,SAAS,EAAElC,IAAI,CAACiB,OAAO,CAACkB,IAAT,EAAenB,SAAf;EAApB,GACGc,cAAc,GAAG,CAAjB,gBAAqB,+BAAIA,cAAJ,CAArB,GAA+CA,cADlD,EAEI,MAAKC,YAAa,EAFtB,CADF;AAMD,CA1BD;;AA4BA,wCAAAhB,OAAO,CAACqB,SAAR,GAAoB;EAClBpB,SAAS,EAAEf,SAAS,CAACoC,MADH;EAElBvB,EAAE,EAAEb,SAAS,CAACoC;AAFI,CAApB;AAKA,eAAetB,OAAf"}
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 (((_filterOptions$active = filterOptions[activeGroup]) === null || _filterOptions$active === void 0 ? void 0 : _filterOptions$active.data) || []).map(option => option.id);
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
- newFilterValues[activeGroup] = anySelected ? [] : activeGroupOptions;
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":";;;;;;;;AAAA,OAAOA,KAAP,IAAgBC,OAAhB,EAAyBC,UAAzB,EAAqCC,QAArC,EAA+CC,SAA/C,EAA0DC,WAA1D,QAA6E,OAA7E;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,SAAP,MAAsB,UAAtB;AACA,SAASC,KAAT,EAAgBC,YAAhB,EAA8BC,MAA9B,EAAsCC,OAAtC,EAA+CC,OAA/C,EAAwDC,UAAxD,QAA0E,OAA1E;;AAEA,MAAMC,UAAU,GAAG,CAAC;EAAEC,EAAF;EAAMC,SAAN;EAAiBC,MAAjB;EAAyBC;AAAzB,CAAD,KAA6C;EAC9D,MAAMC,OAAO,GAAGZ,SAAS,EAAzB;EACA,MAAM,CAACa,SAAD,EAAYC,YAAZ,IAA4BrB,QAAQ,CAAC,EAAD,CAA1C;EACA,MAAM,CAACsB,WAAD,EAAcC,cAAd,IAAgCvB,QAAQ,CAAC,KAAD,CAA9C;EACA,MAAM,CAACwB,WAAD,EAAcC,cAAd,IAAgCzB,QAAQ,CAAC,KAAD,CAA9C;EAEA,MAAM;IACJ0B,aADI;IAEJC,YAAY,GAAG,EAFX;IAGJC,eAHI;IAIJC;EAJI,IAKF9B,UAAU,CAACO,kBAAD,CALd;EAOA,MAAMwB,kBAAkB,GAAGhC,OAAO,CAChC;IAAA;;IAAA,OAAM,CAAC,0BAAA4B,aAAa,CAACG,WAAD,CAAb,gFAA4BE,IAA5B,KAAoC,EAArC,EAAyCC,GAAzC,CAA8CC,MAAD,IAAYA,MAAM,CAAClB,EAAhE,CAAN;EAAA,CADgC,EAEhC,CAACW,aAAD,EAAgBG,WAAhB,CAFgC,CAAlC;EAKA,MAAMK,kBAAkB,GAAGpC,OAAO,CAChC;IAAA;;IAAA,gCAAM6B,YAAY,CAACE,WAAD,CAAlB,0DAAM,sBAA2BM,MAA3B,CAAmCC,KAAD,IAAWN,kBAAkB,CAACO,QAAnB,CAA4BD,KAA5B,CAA7C,CAAN;EAAA,CADgC,EAEhC,CAACT,YAAD,EAAeG,kBAAf,EAAmCD,WAAnC,CAFgC,CAAlC;EAKA,MAAMS,UAAU,GAAGxC,OAAO,CACxB;IAAA;;IAAA,OACE,CAAC,2BAAA4B,aAAa,CAACG,WAAD,CAAb,kFAA4BE,IAA5B,KAAoC,EAArC,EAAyCC,GAAzC,CAA8CC,MAAD;MAAA;;MAAA,uCACxCA,MADwC;QAE3CM,KAAK,EAAEN,MAAM,CAACO,IAF6B;QAG3CC,QAAQ,4BAAEd,YAAY,CAACE,WAAD,CAAd,2DAAE,uBAA2BQ,QAA3B,CAAoCJ,MAAM,CAAClB,EAA3C,CAHiC;QAI3C2B,QAAQ,EAAET,MAAM,CAACO,IAAP,CAAYG,WAAZ,GAA0BC,OAA1B,CAAkCxB,SAAS,CAACuB,WAAV,EAAlC,IAA6D;MAJ5B;IAAA,CAA7C,CADF;EAAA,CADwB,EAQxB,CAACjB,aAAD,EAAgBC,YAAhB,EAA8BE,WAA9B,EAA2CT,SAA3C,CARwB,CAA1B;EAWA,MAAMyB,eAAe,GAAG3C,WAAW,CAAC,MAAM;IACxC,MAAM4C,WAAW,GAAGZ,kBAAH,aAAGA,kBAAH,uBAAGA,kBAAkB,CAAEa,MAAxC;IACA,MAAMC,YAAY,GAAGF,WAAW,GAAG,CAAnC;IACA,MAAMG,SAAS,GAAGH,WAAW,KAAKhB,kBAAkB,CAACiB,MAArD;IAEAtB,cAAc,CAACuB,YAAD,CAAd;IACAzB,cAAc,CAACyB,YAAY,IAAIC,SAAjB,CAAd;EACD,CAPkC,EAOhC,CAACf,kBAAD,EAAqBJ,kBAArB,CAPgC,CAAnC;EASA7B,SAAS,CAAC,MAAM;IACd4C,eAAe;EAChB,CAFQ,EAEN,CAACX,kBAAD,EAAqBW,eAArB,CAFM,CAAT;EAIA5C,SAAS,CAAC,MAAMoB,YAAY,CAAC,EAAD,CAAnB,EAAyB,CAACQ,WAAD,CAAzB,CAAT;;EAEA,MAAMqB,eAAe,GAAIC,MAAD,IAAY;IAClC,MAAMC,eAAe,GAAG1B,aAAa,CAACM,GAAd,CAAkB,CAACC,MAAD,EAASoB,CAAT,KACxCxB,WAAW,KAAKwB,CAAhB,GACIF,MAAM,CAAChB,MAAP,CAAemB,CAAD,IAAOA,CAAC,CAACb,QAAvB,EAAiCT,GAAjC,CAAsCsB,CAAD,IAAOA,CAAC,CAACvC,EAA9C,CADJ,GAEI,CAAC,IAAIY,YAAY,CAAC0B,CAAD,CAAZ,IAAmB,EAAvB,CAAD,CAHkB,CAAxB;IAKAzB,eAAe,CAACwB,eAAD,CAAf;EACD,CAPD;;EASA,MAAMG,eAAe,GAAGrD,WAAW,CAAC,MAAM;IACxC,MAAMkD,eAAe,GAAGhD,SAAS,CAACuB,YAAD,CAAjC;IACAyB,eAAe,CAACvB,WAAD,CAAf,GAA+BL,WAAW,GAAG,EAAH,GAAQM,kBAAlD;IAEAF,eAAe,CAACwB,eAAD,CAAf;EACD,CALkC,EAKhC,CAACvB,WAAD,EAAcC,kBAAd,EAAkCN,WAAlC,EAA+CG,YAA/C,EAA6DC,eAA7D,CALgC,CAAnC;EAOA;AACF;AACA;AACA;AACA;;EACE,MAAM4B,SAAS,GAAGtD,WAAW,CAAC,MAAM;IAClC,MAAM;MAAEuD,SAAF;MAAaC;IAAb,IAA2CzC,MAAjD;IACA,MAAM6B,WAAW,GAAGZ,kBAAH,aAAGA,kBAAH,uBAAGA,kBAAkB,CAAEa,MAAxC;IAEA,MAAMY,YAAY,gBAChB,oBAAC,YAAD;MAAc,SAAS,EAAC;IAAxB,GACGb,WAAW,GAAG,CAAd,gBACC,uDACE,+BAAIA,WAAJ,CADF,EAEI,IAAGY,yBAA0B,IAAG5B,kBAAkB,CAACiB,MAAO,EAF9D,CADD,gBAMC,uDACE,+BAAIU,SAAJ,CADF,EAEI,KAAI3B,kBAAkB,CAACiB,MAAO,GAFlC,CAPJ,CADF;IAgBA,oBACE;MAAK,SAAS,EAAE5B,OAAO,CAACyC;IAAxB,gBACE,oBAAC,UAAD;MACE,EAAE,EAAEpD,KAAK,CAACO,EAAD,EAAK,YAAL,CADX;MAEE,KAAK,EAAE4C,YAFT;MAGE,QAAQ,EAAE,MAAMJ,eAAe,EAHjC;MAIE,OAAO,EAAE;QAAEM,SAAS,EAAE1C,OAAO,CAAC2C;MAArB,CAJX;MAKE,SAAS,EAAE3C,OAAO,CAACsC,SALrB;MAME,aAAa,EAAEjC,WAAW,IAAI,CAACF,WANjC;MAOE,OAAO,EAAEA;IAPX,EADF,CADF;EAaD,CAjC4B,EAiC1B,CACDY,kBADC,aACDA,kBADC,uBACDA,kBAAkB,CAAEa,MADnB,EAEDjB,kBAAkB,CAACiB,MAFlB,EAGDzB,WAHC,EAIDE,WAJC,EAKDL,OAAO,CAACsC,SALP,EAMDtC,OAAO,CAACyC,kBANP,EAODzC,OAAO,CAAC2C,SAPP,EAQDP,eARC,EASDxC,EATC,EAUDE,MAVC,CAjC0B,CAA7B;EA8CA,oBACE,oBAAC,OAAD;IAAS,EAAE,EAAET,KAAK,CAACO,EAAD,EAAK,YAAL,CAAlB;IAAsC,SAAS,EAAEV,IAAI,CAACW,SAAD,EAAYG,OAAO,CAAC4C,IAApB;EAArD,GACGzB,UAAU,CAACS,MAAX,GAAoB,CAApB,gBACC,uDACE,oBAAC,OAAD;IACE,EAAE,EAAEvC,KAAK,CAACO,EAAD,EAAK,QAAL,CADX;IAEE,OAAO,EAAE;MACPgD,IAAI,EAAE5C,OAAO,CAAC6C;IADP,CAFX;IAKE,IAAI,EAAC,QALP;IAME,WAAW,EAAE/C,MAAM,CAACgD,oBANtB;IAOE,KAAK,EAAE7C,SAPT;IAQE,QAAQ,EAAE,CAAC8C,KAAD,EAAQC,GAAR,KAAgB9C,YAAY,CAAC8C,GAAD;EARxC,EADF,eAWE,oBAAC,SAAD,OAXF,eAYE,oBAAC,MAAD;IACE,GAAG,EAAEtC,WADP;IAEE,EAAE,EAAErB,KAAK,CAACO,EAAD,EAAK,MAAL,CAFX;IAGE,SAAS,EAAEI,OAAO,CAACiD,IAHrB;IAIE,MAAM,EAAE9B,UAJV;IAKE,WAAW,MALb;IAME,WAAW,MANb;IAOE,aAAa,EAAE,KAPjB;IAQE,QAAQ,EAAEY,eARZ;IASE,UAAU,MATZ;IAUE,SAAS,MAVX;IAWE,WAAW;EAXb,EAZF,CADD,GA4BChC,YA7BJ,CADF;AAkCD,CAtJD;;AAwJA,wCAAAJ,UAAU,CAACuD,SAAX,GAAuB;EACrBtD,EAAE,EAAEZ,SAAS,CAACmE,MADO;EAErBtD,SAAS,EAAEb,SAAS,CAACmE,MAFA;EAGrBrD,MAAM,EAAEd,SAAS,CAACoE,KAAV,CAAgB;IACtBN,oBAAoB,EAAE9D,SAAS,CAACmE,MADV;IAEtBb,SAAS,EAAEtD,SAAS,CAACmE,MAFC;IAGtBZ,yBAAyB,EAAEvD,SAAS,CAACmE;EAHf,CAAhB,CAHa;EAQrBpD,YAAY,EAAEf,SAAS,CAACqE;AARH,CAAvB;AAWA,eAAe1D,UAAf"}
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 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
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
- const isOverflowing = scrollWidth - width >= 1;
54
- const isParag = useMemo(() => paragraphOverflow && isParagraph(data.toString()), [data, paragraphOverflow]);
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","scrollWidth","current","isOverflowing","isParag","toString","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 { width = 0, ref } = useResizeDetector({\n refreshMode: \"debounce\",\n refreshOptions: {\n trailing: true,\n },\n handleHeight: false,\n });\n const scrollWidth = ref.current?.scrollWidth || 0;\n // The difference should be higher than a pixel to be considered as overflowing\n const isOverflowing = scrollWidth - width >= 1;\n\n const isParag = useMemo(\n () => paragraphOverflow && isParagraph(data.toString()),\n [data, paragraphOverflow]\n );\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
+ {"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.1",
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.3",
45
- "@hitachivantara/uikit-react-icons": "^3.9.6",
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": "d8482581ba420ea754437df3a1ce92a6acd3c5ce"
84
+ "gitHead": "a396628896903c77ad7cbbbbc5f0db3ef98e952b"
84
85
  }