@activecollab/components 1.0.153 → 1.0.154

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.
@@ -31,6 +31,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
31
 
32
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
33
 
34
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
35
+
34
36
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
35
37
 
36
38
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -51,7 +53,8 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
51
53
 
52
54
  var Filter = function Filter(_ref) {
53
55
  var data = _ref.data,
54
- selected = _ref.selected,
56
+ _ref$selected = _ref.selected,
57
+ selected = _ref$selected === void 0 ? {} : _ref$selected,
55
58
  label = _ref.label,
56
59
  clearAllText = _ref.clearAllText,
57
60
  _ref$resetLabel = _ref.resetLabel,
@@ -60,6 +63,7 @@ var Filter = function Filter(_ref) {
60
63
  _ref$width = _ref.width,
61
64
  width = _ref$width === void 0 ? 260 : _ref$width,
62
65
  noResultText = _ref.noResultText,
66
+ emptyFilterText = _ref.emptyFilterText,
63
67
  children = _ref.children;
64
68
 
65
69
  var _useState = (0, _react.useState)(false),
@@ -147,6 +151,32 @@ var Filter = function Filter(_ref) {
147
151
  });
148
152
  return c;
149
153
  }, [filter]);
154
+ var shouldRenderSubmenus = (0, _react.useMemo)(function () {
155
+ if (data.length === 0) {
156
+ return false;
157
+ }
158
+
159
+ var _iterator = _createForOfIteratorHelper(data),
160
+ _step;
161
+
162
+ try {
163
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
164
+ var _entry$submenu;
165
+
166
+ var entry = _step.value;
167
+
168
+ if (((_entry$submenu = entry.submenu) === null || _entry$submenu === void 0 ? void 0 : _entry$submenu.length) > 1) {
169
+ return true;
170
+ }
171
+ }
172
+ } catch (err) {
173
+ _iterator.e(err);
174
+ } finally {
175
+ _iterator.f();
176
+ }
177
+
178
+ return false;
179
+ }, [data]);
150
180
  return /*#__PURE__*/_react.default.createElement(_Styles.StyledMenu, {
151
181
  open: open,
152
182
  onOpen: handleOpen,
@@ -181,8 +211,10 @@ var Filter = function Filter(_ref) {
181
211
  width: width
182
212
  },
183
213
  onHeightChange: setHeight,
184
- onItemClick: handleItemClick
185
- }, children))), data.map(function (_ref2, index) {
214
+ onItemClick: handleItemClick,
215
+ shouldRenderSubmenus: shouldRenderSubmenus,
216
+ emptyFilterText: emptyFilterText
217
+ }, children))), shouldRenderSubmenus && data.map(function (_ref2, index) {
186
218
  var _filter$id;
187
219
 
188
220
  var id = _ref2.id,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Filter/Filter.tsx"],"names":["Filter","data","selected","label","clearAllText","resetLabel","onChange","width","noResultText","children","open","setOpen","menu","setMenu","isLeft","setIsLeft","height","setHeight","enteredMenu","setEnteredMenu","filter","setFilter","handleOpen","handleClose","handleHeight","element","offsetHeight","handleItemClick","value","setIndex","handleChange","selectedArray","newFilters","length","handleClearAll","event","stopPropagation","handleReset","count","c","Object","values","forEach","entry","map","index","id","title","submenu","searchPlaceholder","Boolean"],"mappings":"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","sourcesContent":["import React, { FC, useCallback, useMemo, useState } from \"react\";\nimport { MoveFocusInside } from \"react-focus-lock\";\nimport { Submenu } from \"./Submenu\";\nimport { StartMenu } from \"./StartMenu\";\nimport { FilterIcon } from \"../Icons\";\nimport { ResizeTransition, SlideLeftRightTransition } from \"../Transitions\";\nimport { IOptionGroupProps, IOptionItemProps, Select } from \"../Select\";\nimport { CounterButton } from \"../CounterButton\";\nimport { Button } from \"../Button\";\nimport { StyledMenu, StyledMenuFooter } from \"./Styles\";\n\nexport type DataType = {\n id: number | string;\n title: string;\n searchPlaceholder?: string;\n submenu: Array<IOptionGroupProps | IOptionItemProps>;\n};\n\nexport type SelectedType = {\n [key: number | string]: Array<string>;\n};\n\nexport interface FilterProps {\n /** Data rendered in submenus */\n data: Array<DataType>;\n /** Selected data inside submenus */\n selected: SelectedType;\n /** Main filter label */\n label: string;\n /** Filter width */\n width?: number;\n /** Text displayed for the tooltip of clear all button */\n clearAllText: string;\n /** Handler for changes on the filter */\n onChange: (selected: SelectedType) => void;\n /** Label for reset button inside submenu */\n resetLabel?: string;\n /** Text to show when search results are empty */\n noResultText: string;\n}\n\nexport const Filter: FC<FilterProps> = ({\n data,\n selected,\n label,\n clearAllText,\n resetLabel = \"Reset\",\n onChange,\n width = 260,\n noResultText,\n children,\n}) => {\n const [open, setOpen] = useState(false);\n const [menu, setMenu] = useState<number | string>(\"index\");\n const [isLeft, setIsLeft] = useState(true);\n const [height, setHeight] = useState(0);\n const [enteredMenu, setEnteredMenu] = useState<number | string>(\"index\");\n const [filter, setFilter] = useState<SelectedType>(() => selected);\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setMenu(\"index\");\n setHeight(0);\n }, []);\n\n const handleHeight = useCallback((element) => {\n setHeight(element?.offsetHeight ?? 0);\n }, []);\n\n const handleItemClick = useCallback((value) => {\n setMenu(value);\n setIsLeft(true);\n }, []);\n\n const setIndex = useCallback(() => {\n setMenu(\"index\");\n setIsLeft(false);\n }, []);\n\n const handleChange = useCallback(\n (selectedArray) => {\n let newFilters = {};\n if (selectedArray.length) {\n newFilters = {\n ...filter,\n [menu]: selectedArray,\n };\n } else {\n newFilters = { ...filter };\n delete newFilters[menu];\n }\n\n setFilter(newFilters);\n onChange(newFilters);\n },\n [filter, menu, onChange]\n );\n\n const handleClearAll = useCallback(\n (event) => {\n event.stopPropagation();\n setFilter({});\n onChange({});\n },\n [onChange]\n );\n\n const handleReset = useCallback(() => {\n const newFilters = { ...filter };\n delete newFilters[menu];\n setFilter(newFilters);\n onChange(newFilters);\n }, [filter, menu, onChange]);\n\n const count = useMemo(() => {\n let c = 0;\n Object.values(filter).forEach((entry) => (c += entry.length));\n return c;\n }, [filter]);\n\n return (\n <StyledMenu\n open={open}\n onOpen={handleOpen}\n onClose={handleClose}\n position=\"bottom-end\"\n target={\n <CounterButton\n active={open}\n label={label}\n icon={<FilterIcon />}\n counter={count}\n tooltipText={clearAllText}\n onClearAll={handleClearAll}\n />\n }\n >\n <ResizeTransition in>\n <div style={{ height, width }}>\n <SlideLeftRightTransition\n in={menu === \"index\"}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(\"index\")}\n >\n <MoveFocusInside>\n <StartMenu\n data={data}\n selected={filter}\n style={{ width }}\n onHeightChange={setHeight}\n onItemClick={handleItemClick}\n >\n {children}\n </StartMenu>\n </MoveFocusInside>\n </SlideLeftRightTransition>\n {data.map(\n (\n { id, title, submenu, searchPlaceholder }: DataType,\n index: number\n ) => (\n <SlideLeftRightTransition\n key={`filter-submenu-${index}`}\n in={menu === id}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(id)}\n >\n <Submenu\n title={title}\n onBack={setIndex}\n onHeightChange={setHeight}\n style={{ width }}\n >\n <MoveFocusInside disabled={enteredMenu !== id}>\n <Select\n options={submenu}\n selected={filter[id]}\n onChange={handleChange}\n type=\"multiple\"\n autoHeightMax={255}\n placeholder={searchPlaceholder}\n noResultText={noResultText}\n keepSameOptionsOrder={Boolean(submenu.length <= 7)}\n disableSearch={Boolean(submenu.length <= 7)}\n />\n {filter[id]?.length ? (\n <StyledMenuFooter>\n <Button\n variant=\"text colored\"\n size=\"small\"\n onClick={handleReset}\n >\n {resetLabel}\n </Button>\n </StyledMenuFooter>\n ) : null}\n </MoveFocusInside>\n </Submenu>\n </SlideLeftRightTransition>\n )\n )}\n </div>\n </ResizeTransition>\n </StyledMenu>\n );\n};\n"],"file":"Filter.js"}
1
+ {"version":3,"sources":["../../../../src/components/Filter/Filter.tsx"],"names":["Filter","data","selected","label","clearAllText","resetLabel","onChange","width","noResultText","emptyFilterText","children","open","setOpen","menu","setMenu","isLeft","setIsLeft","height","setHeight","enteredMenu","setEnteredMenu","filter","setFilter","handleOpen","handleClose","handleHeight","element","offsetHeight","handleItemClick","value","setIndex","handleChange","selectedArray","newFilters","length","handleClearAll","event","stopPropagation","handleReset","count","c","Object","values","forEach","entry","shouldRenderSubmenus","submenu","map","index","id","title","searchPlaceholder","Boolean"],"mappings":"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","sourcesContent":["import React, { FC, useCallback, useMemo, useState } from \"react\";\nimport { MoveFocusInside } from \"react-focus-lock\";\nimport { Submenu } from \"./Submenu\";\nimport { StartMenu } from \"./StartMenu\";\nimport { FilterIcon } from \"../Icons\";\nimport { ResizeTransition, SlideLeftRightTransition } from \"../Transitions\";\nimport { IOptionGroupProps, IOptionItemProps, Select } from \"../Select\";\nimport { CounterButton } from \"../CounterButton\";\nimport { Button } from \"../Button\";\nimport { StyledMenu, StyledMenuFooter } from \"./Styles\";\n\nexport type DataType = {\n id: number | string;\n title: string;\n searchPlaceholder?: string;\n submenu: Array<IOptionGroupProps | IOptionItemProps>;\n};\n\nexport type SelectedType = {\n [key: number | string]: Array<string>;\n};\n\nexport interface FilterProps {\n /** Data rendered in submenus */\n data: Array<DataType>;\n /** Selected data inside submenus */\n selected?: SelectedType;\n /** Main filter label */\n label: string;\n /** Filter width */\n width?: number;\n /** Text displayed for the tooltip of clear all button */\n clearAllText: string;\n /** Handler for changes on the filter */\n onChange: (selected: SelectedType) => void;\n /** Label for reset button inside submenu */\n resetLabel?: string;\n /** Text to show when search results are empty */\n noResultText: string;\n /** Text to show when there are no submenus to display */\n emptyFilterText?: string;\n}\n\nexport const Filter: FC<FilterProps> = ({\n data,\n selected = {},\n label,\n clearAllText,\n resetLabel = \"Reset\",\n onChange,\n width = 260,\n noResultText,\n emptyFilterText,\n children,\n}) => {\n const [open, setOpen] = useState(false);\n const [menu, setMenu] = useState<number | string>(\"index\");\n const [isLeft, setIsLeft] = useState(true);\n const [height, setHeight] = useState(0);\n const [enteredMenu, setEnteredMenu] = useState<number | string>(\"index\");\n const [filter, setFilter] = useState<SelectedType>(() => selected);\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setMenu(\"index\");\n setHeight(0);\n }, []);\n\n const handleHeight = useCallback((element) => {\n setHeight(element?.offsetHeight ?? 0);\n }, []);\n\n const handleItemClick = useCallback((value) => {\n setMenu(value);\n setIsLeft(true);\n }, []);\n\n const setIndex = useCallback(() => {\n setMenu(\"index\");\n setIsLeft(false);\n }, []);\n\n const handleChange = useCallback(\n (selectedArray) => {\n let newFilters = {};\n if (selectedArray.length) {\n newFilters = {\n ...filter,\n [menu]: selectedArray,\n };\n } else {\n newFilters = { ...filter };\n delete newFilters[menu];\n }\n\n setFilter(newFilters);\n onChange(newFilters);\n },\n [filter, menu, onChange]\n );\n\n const handleClearAll = useCallback(\n (event) => {\n event.stopPropagation();\n setFilter({});\n onChange({});\n },\n [onChange]\n );\n\n const handleReset = useCallback(() => {\n const newFilters = { ...filter };\n delete newFilters[menu];\n setFilter(newFilters);\n onChange(newFilters);\n }, [filter, menu, onChange]);\n\n const count = useMemo(() => {\n let c = 0;\n Object.values(filter).forEach((entry) => (c += entry.length));\n return c;\n }, [filter]);\n\n const shouldRenderSubmenus = useMemo(() => {\n if (data.length === 0) {\n return false;\n }\n\n for (const entry of data) {\n if (entry.submenu?.length > 1) {\n return true;\n }\n }\n\n return false;\n }, [data]);\n\n return (\n <StyledMenu\n open={open}\n onOpen={handleOpen}\n onClose={handleClose}\n position=\"bottom-end\"\n target={\n <CounterButton\n active={open}\n label={label}\n icon={<FilterIcon />}\n counter={count}\n tooltipText={clearAllText}\n onClearAll={handleClearAll}\n />\n }\n >\n <ResizeTransition in>\n <div style={{ height, width }}>\n <SlideLeftRightTransition\n in={menu === \"index\"}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(\"index\")}\n >\n <MoveFocusInside>\n <StartMenu\n data={data}\n selected={filter}\n style={{ width }}\n onHeightChange={setHeight}\n onItemClick={handleItemClick}\n shouldRenderSubmenus={shouldRenderSubmenus}\n emptyFilterText={emptyFilterText}\n >\n {children}\n </StartMenu>\n </MoveFocusInside>\n </SlideLeftRightTransition>\n {shouldRenderSubmenus &&\n data.map(\n (\n { id, title, submenu, searchPlaceholder }: DataType,\n index: number\n ) => (\n <SlideLeftRightTransition\n key={`filter-submenu-${index}`}\n in={menu === id}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(id)}\n >\n <Submenu\n title={title}\n onBack={setIndex}\n onHeightChange={setHeight}\n style={{ width }}\n >\n <MoveFocusInside disabled={enteredMenu !== id}>\n <Select\n options={submenu}\n selected={filter[id]}\n onChange={handleChange}\n type=\"multiple\"\n autoHeightMax={255}\n placeholder={searchPlaceholder}\n noResultText={noResultText}\n keepSameOptionsOrder={Boolean(submenu.length <= 7)}\n disableSearch={Boolean(submenu.length <= 7)}\n />\n {filter[id]?.length ? (\n <StyledMenuFooter>\n <Button\n variant=\"text colored\"\n size=\"small\"\n onClick={handleReset}\n >\n {resetLabel}\n </Button>\n </StyledMenuFooter>\n ) : null}\n </MoveFocusInside>\n </Submenu>\n </SlideLeftRightTransition>\n )\n )}\n </div>\n </ResizeTransition>\n </StyledMenu>\n );\n};\n"],"file":"Filter.js"}
@@ -25,6 +25,8 @@ var StartMenu = function StartMenu(_ref) {
25
25
  onItemClick = _ref.onItemClick,
26
26
  style = _ref.style,
27
27
  onHeightChange = _ref.onHeightChange,
28
+ shouldRenderSubmenus = _ref.shouldRenderSubmenus,
29
+ emptyFilterText = _ref.emptyFilterText,
28
30
  children = _ref.children;
29
31
  var ref = (0, _react.useRef)(null);
30
32
  var dimensions = (0, _utils.useResizeObserver)(ref);
@@ -37,7 +39,7 @@ var StartMenu = function StartMenu(_ref) {
37
39
  return /*#__PURE__*/_react.default.createElement("div", {
38
40
  style: style,
39
41
  ref: ref
40
- }, /*#__PURE__*/_react.default.createElement(_Styles.StyledStartMenuList, null, data.map(function (_ref2, index) {
42
+ }, /*#__PURE__*/_react.default.createElement(_Styles.StyledStartMenuList, null, shouldRenderSubmenus ? data.map(function (_ref2, index) {
41
43
  var _selected$id;
42
44
 
43
45
  var id = _ref2.id,
@@ -45,7 +47,7 @@ var StartMenu = function StartMenu(_ref) {
45
47
  submenu = _ref2.submenu;
46
48
  var count = (_selected$id = selected[id]) === null || _selected$id === void 0 ? void 0 : _selected$id.length;
47
49
 
48
- if (submenu !== null && submenu !== void 0 && submenu.length) {
50
+ if ((submenu === null || submenu === void 0 ? void 0 : submenu.length) > 1) {
49
51
  return /*#__PURE__*/_react.default.createElement(_Styles.StyledStartMenuListItem, {
50
52
  key: "filter-list-item-".concat(index),
51
53
  onClick: function onClick() {
@@ -53,7 +55,7 @@ var StartMenu = function StartMenu(_ref) {
53
55
  }
54
56
  }, /*#__PURE__*/_react.default.createElement(_Styles.StyledStartMenuTitle, null, title), count > 0 ? /*#__PURE__*/_react.default.createElement(_Styles.StyledStartMenuDot, null, count) : null, /*#__PURE__*/_react.default.createElement(_Icons.ArrowRightIcon, null));
55
57
  }
56
- }), children));
58
+ }) : emptyFilterText ? /*#__PURE__*/_react.default.createElement(_Styles.StyledStartMenuNoResults, null, emptyFilterText) : null, children));
57
59
  };
58
60
 
59
61
  exports.StartMenu = StartMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Filter/StartMenu.tsx"],"names":["StartMenu","data","selected","onItemClick","style","onHeightChange","children","ref","dimensions","height","map","index","id","title","submenu","count","length"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAMA;;;;;;AASO,IAAMA,SAA8D,GAAG,SAAjEA,SAAiE,OAOxE;AAAA,MANJC,IAMI,QANJA,IAMI;AAAA,MALJC,QAKI,QALJA,QAKI;AAAA,MAJJC,WAII,QAJJA,WAII;AAAA,MAHJC,KAGI,QAHJA,KAGI;AAAA,MAFJC,cAEI,QAFJA,cAEI;AAAA,MADJC,QACI,QADJA,QACI;AACJ,MAAMC,GAAG,GAAG,mBAAO,IAAP,CAAZ;AACA,MAAMC,UAAU,GAAG,8BAAkBD,GAAlB,CAAnB;AACA,MAAME,MAAM,GAAGD,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEC,MAA3B;AAEA,wBAAU,YAAM;AACd,QAAIA,MAAM,IAAIA,MAAM,GAAG,CAAvB,EAA0B;AACxBJ,MAAAA,cAAc,CAACI,MAAD,CAAd;AACD;AACF,GAJD,EAIG,CAACA,MAAD,EAASJ,cAAT,CAJH;AAMA,sBACE;AAAK,IAAA,KAAK,EAAED,KAAZ;AAAmB,IAAA,GAAG,EAAEG;AAAxB,kBACE,6BAAC,2BAAD,QACGN,IAAI,CAACS,GAAL,CAAS,iBAAyBC,KAAzB,EAA2C;AAAA;;AAAA,QAAxCC,EAAwC,SAAxCA,EAAwC;AAAA,QAApCC,KAAoC,SAApCA,KAAoC;AAAA,QAA7BC,OAA6B,SAA7BA,OAA6B;AACnD,QAAMC,KAAK,mBAAGb,QAAQ,CAACU,EAAD,CAAX,iDAAG,aAAcI,MAA5B;;AACA,QAAIF,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEE,MAAb,EAAqB;AACnB,0BACE,6BAAC,+BAAD;AACE,QAAA,GAAG,6BAAsBL,KAAtB,CADL;AAEE,QAAA,OAAO,EAAE;AAAA,iBAAMR,WAAW,CAACS,EAAD,CAAjB;AAAA;AAFX,sBAIE,6BAAC,4BAAD,QAAuBC,KAAvB,CAJF,EAKGE,KAAK,GAAG,CAAR,gBACC,6BAAC,0BAAD,QAAqBA,KAArB,CADD,GAEG,IAPN,eAQE,6BAAC,qBAAD,OARF,CADF;AAYD;AACF,GAhBA,CADH,EAkBGT,QAlBH,CADF,CADF;AAwBD,CA1CM","sourcesContent":["import React, { FC, useRef, useEffect, HTMLAttributes } from \"react\";\nimport { ArrowRightIcon } from \"../Icons\";\nimport { DataType, SelectedType } from \"./Filter\";\nimport {\n StyledStartMenuTitle,\n StyledStartMenuDot,\n StyledStartMenuListItem,\n StyledStartMenuList,\n} from \"./Styles\";\nimport { useResizeObserver } from \"../../utils\";\n\nexport interface StartMenuProps {\n data: Array<DataType>;\n selected: SelectedType;\n onItemClick: (id: number | string) => void;\n onHeightChange: (height: number) => void;\n}\n\nexport const StartMenu: FC<StartMenuProps & HTMLAttributes<HTMLDivElement>> = ({\n data,\n selected,\n onItemClick,\n style,\n onHeightChange,\n children,\n}) => {\n const ref = useRef(null);\n const dimensions = useResizeObserver(ref);\n const height = dimensions?.height;\n\n useEffect(() => {\n if (height && height > 0) {\n onHeightChange(height);\n }\n }, [height, onHeightChange]);\n\n return (\n <div style={style} ref={ref}>\n <StyledStartMenuList>\n {data.map(({ id, title, submenu }, index: number) => {\n const count = selected[id]?.length;\n if (submenu?.length) {\n return (\n <StyledStartMenuListItem\n key={`filter-list-item-${index}`}\n onClick={() => onItemClick(id)}\n >\n <StyledStartMenuTitle>{title}</StyledStartMenuTitle>\n {count > 0 ? (\n <StyledStartMenuDot>{count}</StyledStartMenuDot>\n ) : null}\n <ArrowRightIcon />\n </StyledStartMenuListItem>\n );\n }\n })}\n {children}\n </StyledStartMenuList>\n </div>\n );\n};\n"],"file":"StartMenu.js"}
1
+ {"version":3,"sources":["../../../../src/components/Filter/StartMenu.tsx"],"names":["StartMenu","data","selected","onItemClick","style","onHeightChange","shouldRenderSubmenus","emptyFilterText","children","ref","dimensions","height","map","index","id","title","submenu","count","length"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAOA;;;;;;AAWO,IAAMA,SAA8D,GAAG,SAAjEA,SAAiE,OASxE;AAAA,MARJC,IAQI,QARJA,IAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,WAMI,QANJA,WAMI;AAAA,MALJC,KAKI,QALJA,KAKI;AAAA,MAJJC,cAII,QAJJA,cAII;AAAA,MAHJC,oBAGI,QAHJA,oBAGI;AAAA,MAFJC,eAEI,QAFJA,eAEI;AAAA,MADJC,QACI,QADJA,QACI;AACJ,MAAMC,GAAG,GAAG,mBAAO,IAAP,CAAZ;AACA,MAAMC,UAAU,GAAG,8BAAkBD,GAAlB,CAAnB;AACA,MAAME,MAAM,GAAGD,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEC,MAA3B;AAEA,wBAAU,YAAM;AACd,QAAIA,MAAM,IAAIA,MAAM,GAAG,CAAvB,EAA0B;AACxBN,MAAAA,cAAc,CAACM,MAAD,CAAd;AACD;AACF,GAJD,EAIG,CAACA,MAAD,EAASN,cAAT,CAJH;AAMA,sBACE;AAAK,IAAA,KAAK,EAAED,KAAZ;AAAmB,IAAA,GAAG,EAAEK;AAAxB,kBACE,6BAAC,2BAAD,QACGH,oBAAoB,GACnBL,IAAI,CAACW,GAAL,CAAS,iBAAyBC,KAAzB,EAA2C;AAAA;;AAAA,QAAxCC,EAAwC,SAAxCA,EAAwC;AAAA,QAApCC,KAAoC,SAApCA,KAAoC;AAAA,QAA7BC,OAA6B,SAA7BA,OAA6B;AAClD,QAAMC,KAAK,mBAAGf,QAAQ,CAACY,EAAD,CAAX,iDAAG,aAAcI,MAA5B;;AACA,QAAI,CAAAF,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEE,MAAT,IAAkB,CAAtB,EAAyB;AACvB,0BACE,6BAAC,+BAAD;AACE,QAAA,GAAG,6BAAsBL,KAAtB,CADL;AAEE,QAAA,OAAO,EAAE;AAAA,iBAAMV,WAAW,CAACW,EAAD,CAAjB;AAAA;AAFX,sBAIE,6BAAC,4BAAD,QAAuBC,KAAvB,CAJF,EAKGE,KAAK,GAAG,CAAR,gBACC,6BAAC,0BAAD,QAAqBA,KAArB,CADD,GAEG,IAPN,eAQE,6BAAC,qBAAD,OARF,CADF;AAYD;AACF,GAhBD,CADmB,GAkBjBV,eAAe,gBACjB,6BAAC,gCAAD,QAA2BA,eAA3B,CADiB,GAEf,IArBN,EAsBGC,QAtBH,CADF,CADF;AA4BD,CAhDM","sourcesContent":["import React, { FC, useRef, useEffect, HTMLAttributes } from \"react\";\nimport { ArrowRightIcon } from \"../Icons\";\nimport { DataType, SelectedType } from \"./Filter\";\nimport {\n StyledStartMenuTitle,\n StyledStartMenuDot,\n StyledStartMenuListItem,\n StyledStartMenuList,\n StyledStartMenuNoResults,\n} from \"./Styles\";\nimport { useResizeObserver } from \"../../utils\";\n\nexport interface StartMenuProps {\n data: Array<DataType>;\n selected: SelectedType;\n onItemClick: (id: number | string) => void;\n onHeightChange: (height: number) => void;\n shouldRenderSubmenus: boolean;\n emptyFilterText?: string;\n}\n\nexport const StartMenu: FC<StartMenuProps & HTMLAttributes<HTMLDivElement>> = ({\n data,\n selected,\n onItemClick,\n style,\n onHeightChange,\n shouldRenderSubmenus,\n emptyFilterText,\n children,\n}) => {\n const ref = useRef(null);\n const dimensions = useResizeObserver(ref);\n const height = dimensions?.height;\n\n useEffect(() => {\n if (height && height > 0) {\n onHeightChange(height);\n }\n }, [height, onHeightChange]);\n\n return (\n <div style={style} ref={ref}>\n <StyledStartMenuList>\n {shouldRenderSubmenus ? (\n data.map(({ id, title, submenu }, index: number) => {\n const count = selected[id]?.length;\n if (submenu?.length > 1) {\n return (\n <StyledStartMenuListItem\n key={`filter-list-item-${index}`}\n onClick={() => onItemClick(id)}\n >\n <StyledStartMenuTitle>{title}</StyledStartMenuTitle>\n {count > 0 ? (\n <StyledStartMenuDot>{count}</StyledStartMenuDot>\n ) : null}\n <ArrowRightIcon />\n </StyledStartMenuListItem>\n );\n }\n })\n ) : emptyFilterText ? (\n <StyledStartMenuNoResults>{emptyFilterText}</StyledStartMenuNoResults>\n ) : null}\n {children}\n </StyledStartMenuList>\n </div>\n );\n};\n"],"file":"StartMenu.js"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.StyledStartMenuTitle = exports.StyledStartMenuListItem = exports.StyledStartMenuList = exports.StyledStartMenuDot = exports.StyledMenuFooter = exports.StyledMenu = void 0;
6
+ exports.StyledStartMenuTitle = exports.StyledStartMenuNoResults = exports.StyledStartMenuListItem = exports.StyledStartMenuList = exports.StyledStartMenuDot = exports.StyledMenuFooter = exports.StyledMenu = void 0;
7
7
 
8
8
  var _styledComponents = _interopRequireDefault(require("styled-components"));
9
9
 
@@ -54,9 +54,21 @@ var StyledStartMenuTitle = _styledComponents.default.div.withConfig({
54
54
 
55
55
  exports.StyledStartMenuTitle = StyledStartMenuTitle;
56
56
 
57
+ var StyledStartMenuNoResults = _styledComponents.default.div.withConfig({
58
+ displayName: "Styles__StyledStartMenuNoResults",
59
+ componentId: "sc-lxuoiz-5"
60
+ })(["", " ", ""], {
61
+ "paddingTop": "0.125rem",
62
+ "paddingBottom": "0.125rem"
63
+ }, {
64
+ "textAlign": "center"
65
+ });
66
+
67
+ exports.StyledStartMenuNoResults = StyledStartMenuNoResults;
68
+
57
69
  var StyledStartMenuDot = _styledComponents.default.span.withConfig({
58
70
  displayName: "Styles__StyledStartMenuDot",
59
- componentId: "sc-lxuoiz-5"
71
+ componentId: "sc-lxuoiz-6"
60
72
  })(["border-radius:50%;background-color:var(--color-primary);color:var(--page-paper-main);line-height:15px;width:15px;font-weight:bold;font-size:10px;text-align:center;margin-left:4px;"]);
61
73
 
62
74
  exports.StyledStartMenuDot = StyledStartMenuDot;
@@ -66,4 +78,5 @@ StyledStartMenuList.displayName = "StyledStartMenuList";
66
78
  StyledStartMenuListItem.displayName = "StyledStartMenuListItem";
67
79
  StyledStartMenuTitle.displayName = "StyledStartMenuTitle";
68
80
  StyledStartMenuDot.displayName = "StyledStartMenuDot";
81
+ StyledStartMenuNoResults.displayName = "StyledStartMenuNoResults";
69
82
  //# sourceMappingURL=Styles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Filter/Styles.ts"],"names":["StyledMenu","Menu","StyledMenuFooter","MenuFooter","StyledStartMenuList","List","StyledStartMenuListItem","ListItem","StyledStartMenuTitle","styled","div","StyledStartMenuDot","span","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAGO,IAAMA,UAAU,GAAG,+BAAOC,UAAP,CAAH;AAAA;AAAA;AAAA,kBACjB;AAAA;AAAA,CADiB,EAEjB;AAAA;AAAA,CAFiB,CAAhB;;AAKA,IAAMC,gBAAgB,GAAG,+BAAOC,gBAAP,CAAH;AAAA;AAAA;AAAA,aACvB;AAAA;AAAA,CADuB,CAAtB;;AAIA,IAAMC,mBAAmB,GAAG,+BAAOC,UAAP,CAAH;AAAA;AAAA;AAAA,aAC1B;AAAA;AAAA;AAAA,CAD0B,CAAzB;;AAIA,IAAMC,uBAAuB,GAAG,+BAAOC,cAAP,CAAH;AAAA;AAAA;AAAA,aAC9B;AAAA;AAAA,CAD8B,CAA7B;;;AAIA,IAAMC,oBAAoB,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,aAC3B;AAAA;AAAA,CAD2B,CAA1B;;;;AAIA,IAAMC,kBAAkB,GAAGF,0BAAOG,IAAV;AAAA;AAAA;AAAA,2LAAxB;;;AAYPZ,UAAU,CAACa,WAAX,GAAyB,YAAzB;AACAX,gBAAgB,CAACW,WAAjB,GAA+B,kBAA/B;AACAT,mBAAmB,CAACS,WAApB,GAAkC,qBAAlC;AACAP,uBAAuB,CAACO,WAAxB,GAAsC,yBAAtC;AACAL,oBAAoB,CAACK,WAArB,GAAmC,sBAAnC;AACAF,kBAAkB,CAACE,WAAnB,GAAiC,oBAAjC","sourcesContent":["import styled from \"styled-components\";\nimport { Menu, IMenu, MenuFooter, IMenuFooter } from \"../Menu\";\nimport { ListItem, IListItem, List, IList } from \"../List\";\nimport tw from \"twin.macro\";\n\nexport const StyledMenu = styled(Menu)<IMenu>`\n ${tw`tw-relative`}\n ${tw`tw-overflow-hidden`}\n`;\n\nexport const StyledMenuFooter = styled(MenuFooter)<IMenuFooter>`\n ${tw`tw-justify-center`}\n`;\n\nexport const StyledStartMenuList = styled(List)<IList>`\n ${tw`tw-py-2`}\n`;\n\nexport const StyledStartMenuListItem = styled(ListItem)<IListItem>`\n ${tw`tw-pr-3`}\n`;\n\nexport const StyledStartMenuTitle = styled.div`\n ${tw`tw-flex-1`}\n`;\n\nexport const StyledStartMenuDot = styled.span`\n border-radius: 50%;\n background-color: var(--color-primary);\n color: var(--page-paper-main);\n line-height: 15px;\n width: 15px;\n font-weight: bold;\n font-size: 10px;\n text-align: center;\n margin-left: 4px;\n`;\n\nStyledMenu.displayName = \"StyledMenu\";\nStyledMenuFooter.displayName = \"StyledMenuFooter\";\nStyledStartMenuList.displayName = \"StyledStartMenuList\";\nStyledStartMenuListItem.displayName = \"StyledStartMenuListItem\";\nStyledStartMenuTitle.displayName = \"StyledStartMenuTitle\";\nStyledStartMenuDot.displayName = \"StyledStartMenuDot\";\n"],"file":"Styles.js"}
1
+ {"version":3,"sources":["../../../../src/components/Filter/Styles.ts"],"names":["StyledMenu","Menu","StyledMenuFooter","MenuFooter","StyledStartMenuList","List","StyledStartMenuListItem","ListItem","StyledStartMenuTitle","styled","div","StyledStartMenuNoResults","StyledStartMenuDot","span","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAGO,IAAMA,UAAU,GAAG,+BAAOC,UAAP,CAAH;AAAA;AAAA;AAAA,kBACjB;AAAA;AAAA,CADiB,EAEjB;AAAA;AAAA,CAFiB,CAAhB;;AAKA,IAAMC,gBAAgB,GAAG,+BAAOC,gBAAP,CAAH;AAAA;AAAA;AAAA,aACvB;AAAA;AAAA,CADuB,CAAtB;;AAIA,IAAMC,mBAAmB,GAAG,+BAAOC,UAAP,CAAH;AAAA;AAAA;AAAA,aAC1B;AAAA;AAAA;AAAA,CAD0B,CAAzB;;AAIA,IAAMC,uBAAuB,GAAG,+BAAOC,cAAP,CAAH;AAAA;AAAA;AAAA,aAC9B;AAAA;AAAA,CAD8B,CAA7B;;;AAIA,IAAMC,oBAAoB,GAAGC,0BAAOC,GAAV;AAAA;AAAA;AAAA,aAC3B;AAAA;AAAA,CAD2B,CAA1B;;;;AAIA,IAAMC,wBAAwB,GAAGF,0BAAOC,GAAV;AAAA;AAAA;AAAA,kBAC/B;AAAA;AAAA;AAAA,CAD+B,EAE/B;AAAA;AAAA,CAF+B,CAA9B;;;;AAKA,IAAME,kBAAkB,GAAGH,0BAAOI,IAAV;AAAA;AAAA;AAAA,2LAAxB;;;AAYPb,UAAU,CAACc,WAAX,GAAyB,YAAzB;AACAZ,gBAAgB,CAACY,WAAjB,GAA+B,kBAA/B;AACAV,mBAAmB,CAACU,WAApB,GAAkC,qBAAlC;AACAR,uBAAuB,CAACQ,WAAxB,GAAsC,yBAAtC;AACAN,oBAAoB,CAACM,WAArB,GAAmC,sBAAnC;AACAF,kBAAkB,CAACE,WAAnB,GAAiC,oBAAjC;AACAH,wBAAwB,CAACG,WAAzB,GAAuC,0BAAvC","sourcesContent":["import styled from \"styled-components\";\nimport { Menu, IMenu, MenuFooter, IMenuFooter } from \"../Menu\";\nimport { ListItem, IListItem, List, IList } from \"../List\";\nimport tw from \"twin.macro\";\n\nexport const StyledMenu = styled(Menu)<IMenu>`\n ${tw`tw-relative`}\n ${tw`tw-overflow-hidden`}\n`;\n\nexport const StyledMenuFooter = styled(MenuFooter)<IMenuFooter>`\n ${tw`tw-justify-center`}\n`;\n\nexport const StyledStartMenuList = styled(List)<IList>`\n ${tw`tw-py-2`}\n`;\n\nexport const StyledStartMenuListItem = styled(ListItem)<IListItem>`\n ${tw`tw-pr-3`}\n`;\n\nexport const StyledStartMenuTitle = styled.div`\n ${tw`tw-flex-1`}\n`;\n\nexport const StyledStartMenuNoResults = styled.div`\n ${tw`tw-py-0.5`}\n ${tw`tw-text-center`}\n`;\n\nexport const StyledStartMenuDot = styled.span`\n border-radius: 50%;\n background-color: var(--color-primary);\n color: var(--page-paper-main);\n line-height: 15px;\n width: 15px;\n font-weight: bold;\n font-size: 10px;\n text-align: center;\n margin-left: 4px;\n`;\n\nStyledMenu.displayName = \"StyledMenu\";\nStyledMenuFooter.displayName = \"StyledMenuFooter\";\nStyledStartMenuList.displayName = \"StyledStartMenuList\";\nStyledStartMenuListItem.displayName = \"StyledStartMenuListItem\";\nStyledStartMenuTitle.displayName = \"StyledStartMenuTitle\";\nStyledStartMenuDot.displayName = \"StyledStartMenuDot\";\nStyledStartMenuNoResults.displayName = \"StyledStartMenuNoResults\";\n"],"file":"Styles.js"}
@@ -11,13 +11,14 @@ export declare type SelectedType = {
11
11
  };
12
12
  export interface FilterProps {
13
13
  data: Array<DataType>;
14
- selected: SelectedType;
14
+ selected?: SelectedType;
15
15
  label: string;
16
16
  width?: number;
17
17
  clearAllText: string;
18
18
  onChange: (selected: SelectedType) => void;
19
19
  resetLabel?: string;
20
20
  noResultText: string;
21
+ emptyFilterText?: string;
21
22
  }
22
23
  export declare const Filter: FC<FilterProps>;
23
24
  //# sourceMappingURL=Filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../src/components/Filter/Filter.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAkC,MAAM,OAAO,CAAC;AAMlE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAU,MAAM,WAAW,CAAC;AAKxE,oBAAY,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;CACtD,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtB,QAAQ,EAAE,YAAY,CAAC;IAEvB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAE3C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA0KlC,CAAC"}
1
+ {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../src/components/Filter/Filter.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAkC,MAAM,OAAO,CAAC;AAMlE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAU,MAAM,WAAW,CAAC;AAKxE,oBAAY,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;CACtD,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtB,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAE3C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IAErB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA4LlC,CAAC"}
@@ -1,4 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+
3
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
+
2
9
  import React, { useCallback, useMemo, useState } from "react";
3
10
  import { MoveFocusInside } from "react-focus-lock";
4
11
  import { Submenu } from "./Submenu";
@@ -11,7 +18,8 @@ import { Button } from "../Button";
11
18
  import { StyledMenu, StyledMenuFooter } from "./Styles";
12
19
  export var Filter = function Filter(_ref) {
13
20
  var data = _ref.data,
14
- selected = _ref.selected,
21
+ _ref$selected = _ref.selected,
22
+ selected = _ref$selected === void 0 ? {} : _ref$selected,
15
23
  label = _ref.label,
16
24
  clearAllText = _ref.clearAllText,
17
25
  _ref$resetLabel = _ref.resetLabel,
@@ -20,6 +28,7 @@ export var Filter = function Filter(_ref) {
20
28
  _ref$width = _ref.width,
21
29
  width = _ref$width === void 0 ? 260 : _ref$width,
22
30
  noResultText = _ref.noResultText,
31
+ emptyFilterText = _ref.emptyFilterText,
23
32
  children = _ref.children;
24
33
 
25
34
  var _useState = useState(false),
@@ -103,6 +112,23 @@ export var Filter = function Filter(_ref) {
103
112
  });
104
113
  return c;
105
114
  }, [filter]);
115
+ var shouldRenderSubmenus = useMemo(function () {
116
+ if (data.length === 0) {
117
+ return false;
118
+ }
119
+
120
+ for (var _iterator = _createForOfIteratorHelperLoose(data), _step; !(_step = _iterator()).done;) {
121
+ var _entry$submenu;
122
+
123
+ var entry = _step.value;
124
+
125
+ if (((_entry$submenu = entry.submenu) == null ? void 0 : _entry$submenu.length) > 1) {
126
+ return true;
127
+ }
128
+ }
129
+
130
+ return false;
131
+ }, [data]);
106
132
  return /*#__PURE__*/React.createElement(StyledMenu, {
107
133
  open: open,
108
134
  onOpen: handleOpen,
@@ -137,8 +163,10 @@ export var Filter = function Filter(_ref) {
137
163
  width: width
138
164
  },
139
165
  onHeightChange: setHeight,
140
- onItemClick: handleItemClick
141
- }, children))), data.map(function (_ref2, index) {
166
+ onItemClick: handleItemClick,
167
+ shouldRenderSubmenus: shouldRenderSubmenus,
168
+ emptyFilterText: emptyFilterText
169
+ }, children))), shouldRenderSubmenus && data.map(function (_ref2, index) {
142
170
  var _filter$id;
143
171
 
144
172
  var id = _ref2.id,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Filter/Filter.tsx"],"names":["React","useCallback","useMemo","useState","MoveFocusInside","Submenu","StartMenu","FilterIcon","ResizeTransition","SlideLeftRightTransition","Select","CounterButton","Button","StyledMenu","StyledMenuFooter","Filter","data","selected","label","clearAllText","resetLabel","onChange","width","noResultText","children","open","setOpen","menu","setMenu","isLeft","setIsLeft","height","setHeight","enteredMenu","setEnteredMenu","filter","setFilter","handleOpen","handleClose","handleHeight","element","offsetHeight","handleItemClick","value","setIndex","handleChange","selectedArray","newFilters","length","handleClearAll","event","stopPropagation","handleReset","count","c","Object","values","forEach","entry","map","index","id","title","submenu","searchPlaceholder","Boolean"],"mappings":"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","sourcesContent":["import React, { FC, useCallback, useMemo, useState } from \"react\";\nimport { MoveFocusInside } from \"react-focus-lock\";\nimport { Submenu } from \"./Submenu\";\nimport { StartMenu } from \"./StartMenu\";\nimport { FilterIcon } from \"../Icons\";\nimport { ResizeTransition, SlideLeftRightTransition } from \"../Transitions\";\nimport { IOptionGroupProps, IOptionItemProps, Select } from \"../Select\";\nimport { CounterButton } from \"../CounterButton\";\nimport { Button } from \"../Button\";\nimport { StyledMenu, StyledMenuFooter } from \"./Styles\";\n\nexport type DataType = {\n id: number | string;\n title: string;\n searchPlaceholder?: string;\n submenu: Array<IOptionGroupProps | IOptionItemProps>;\n};\n\nexport type SelectedType = {\n [key: number | string]: Array<string>;\n};\n\nexport interface FilterProps {\n /** Data rendered in submenus */\n data: Array<DataType>;\n /** Selected data inside submenus */\n selected: SelectedType;\n /** Main filter label */\n label: string;\n /** Filter width */\n width?: number;\n /** Text displayed for the tooltip of clear all button */\n clearAllText: string;\n /** Handler for changes on the filter */\n onChange: (selected: SelectedType) => void;\n /** Label for reset button inside submenu */\n resetLabel?: string;\n /** Text to show when search results are empty */\n noResultText: string;\n}\n\nexport const Filter: FC<FilterProps> = ({\n data,\n selected,\n label,\n clearAllText,\n resetLabel = \"Reset\",\n onChange,\n width = 260,\n noResultText,\n children,\n}) => {\n const [open, setOpen] = useState(false);\n const [menu, setMenu] = useState<number | string>(\"index\");\n const [isLeft, setIsLeft] = useState(true);\n const [height, setHeight] = useState(0);\n const [enteredMenu, setEnteredMenu] = useState<number | string>(\"index\");\n const [filter, setFilter] = useState<SelectedType>(() => selected);\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setMenu(\"index\");\n setHeight(0);\n }, []);\n\n const handleHeight = useCallback((element) => {\n setHeight(element?.offsetHeight ?? 0);\n }, []);\n\n const handleItemClick = useCallback((value) => {\n setMenu(value);\n setIsLeft(true);\n }, []);\n\n const setIndex = useCallback(() => {\n setMenu(\"index\");\n setIsLeft(false);\n }, []);\n\n const handleChange = useCallback(\n (selectedArray) => {\n let newFilters = {};\n if (selectedArray.length) {\n newFilters = {\n ...filter,\n [menu]: selectedArray,\n };\n } else {\n newFilters = { ...filter };\n delete newFilters[menu];\n }\n\n setFilter(newFilters);\n onChange(newFilters);\n },\n [filter, menu, onChange]\n );\n\n const handleClearAll = useCallback(\n (event) => {\n event.stopPropagation();\n setFilter({});\n onChange({});\n },\n [onChange]\n );\n\n const handleReset = useCallback(() => {\n const newFilters = { ...filter };\n delete newFilters[menu];\n setFilter(newFilters);\n onChange(newFilters);\n }, [filter, menu, onChange]);\n\n const count = useMemo(() => {\n let c = 0;\n Object.values(filter).forEach((entry) => (c += entry.length));\n return c;\n }, [filter]);\n\n return (\n <StyledMenu\n open={open}\n onOpen={handleOpen}\n onClose={handleClose}\n position=\"bottom-end\"\n target={\n <CounterButton\n active={open}\n label={label}\n icon={<FilterIcon />}\n counter={count}\n tooltipText={clearAllText}\n onClearAll={handleClearAll}\n />\n }\n >\n <ResizeTransition in>\n <div style={{ height, width }}>\n <SlideLeftRightTransition\n in={menu === \"index\"}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(\"index\")}\n >\n <MoveFocusInside>\n <StartMenu\n data={data}\n selected={filter}\n style={{ width }}\n onHeightChange={setHeight}\n onItemClick={handleItemClick}\n >\n {children}\n </StartMenu>\n </MoveFocusInside>\n </SlideLeftRightTransition>\n {data.map(\n (\n { id, title, submenu, searchPlaceholder }: DataType,\n index: number\n ) => (\n <SlideLeftRightTransition\n key={`filter-submenu-${index}`}\n in={menu === id}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(id)}\n >\n <Submenu\n title={title}\n onBack={setIndex}\n onHeightChange={setHeight}\n style={{ width }}\n >\n <MoveFocusInside disabled={enteredMenu !== id}>\n <Select\n options={submenu}\n selected={filter[id]}\n onChange={handleChange}\n type=\"multiple\"\n autoHeightMax={255}\n placeholder={searchPlaceholder}\n noResultText={noResultText}\n keepSameOptionsOrder={Boolean(submenu.length <= 7)}\n disableSearch={Boolean(submenu.length <= 7)}\n />\n {filter[id]?.length ? (\n <StyledMenuFooter>\n <Button\n variant=\"text colored\"\n size=\"small\"\n onClick={handleReset}\n >\n {resetLabel}\n </Button>\n </StyledMenuFooter>\n ) : null}\n </MoveFocusInside>\n </Submenu>\n </SlideLeftRightTransition>\n )\n )}\n </div>\n </ResizeTransition>\n </StyledMenu>\n );\n};\n"],"file":"Filter.js"}
1
+ {"version":3,"sources":["../../../../src/components/Filter/Filter.tsx"],"names":["React","useCallback","useMemo","useState","MoveFocusInside","Submenu","StartMenu","FilterIcon","ResizeTransition","SlideLeftRightTransition","Select","CounterButton","Button","StyledMenu","StyledMenuFooter","Filter","data","selected","label","clearAllText","resetLabel","onChange","width","noResultText","emptyFilterText","children","open","setOpen","menu","setMenu","isLeft","setIsLeft","height","setHeight","enteredMenu","setEnteredMenu","filter","setFilter","handleOpen","handleClose","handleHeight","element","offsetHeight","handleItemClick","value","setIndex","handleChange","selectedArray","newFilters","length","handleClearAll","event","stopPropagation","handleReset","count","c","Object","values","forEach","entry","shouldRenderSubmenus","submenu","map","index","id","title","searchPlaceholder","Boolean"],"mappings":"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","sourcesContent":["import React, { FC, useCallback, useMemo, useState } from \"react\";\nimport { MoveFocusInside } from \"react-focus-lock\";\nimport { Submenu } from \"./Submenu\";\nimport { StartMenu } from \"./StartMenu\";\nimport { FilterIcon } from \"../Icons\";\nimport { ResizeTransition, SlideLeftRightTransition } from \"../Transitions\";\nimport { IOptionGroupProps, IOptionItemProps, Select } from \"../Select\";\nimport { CounterButton } from \"../CounterButton\";\nimport { Button } from \"../Button\";\nimport { StyledMenu, StyledMenuFooter } from \"./Styles\";\n\nexport type DataType = {\n id: number | string;\n title: string;\n searchPlaceholder?: string;\n submenu: Array<IOptionGroupProps | IOptionItemProps>;\n};\n\nexport type SelectedType = {\n [key: number | string]: Array<string>;\n};\n\nexport interface FilterProps {\n /** Data rendered in submenus */\n data: Array<DataType>;\n /** Selected data inside submenus */\n selected?: SelectedType;\n /** Main filter label */\n label: string;\n /** Filter width */\n width?: number;\n /** Text displayed for the tooltip of clear all button */\n clearAllText: string;\n /** Handler for changes on the filter */\n onChange: (selected: SelectedType) => void;\n /** Label for reset button inside submenu */\n resetLabel?: string;\n /** Text to show when search results are empty */\n noResultText: string;\n /** Text to show when there are no submenus to display */\n emptyFilterText?: string;\n}\n\nexport const Filter: FC<FilterProps> = ({\n data,\n selected = {},\n label,\n clearAllText,\n resetLabel = \"Reset\",\n onChange,\n width = 260,\n noResultText,\n emptyFilterText,\n children,\n}) => {\n const [open, setOpen] = useState(false);\n const [menu, setMenu] = useState<number | string>(\"index\");\n const [isLeft, setIsLeft] = useState(true);\n const [height, setHeight] = useState(0);\n const [enteredMenu, setEnteredMenu] = useState<number | string>(\"index\");\n const [filter, setFilter] = useState<SelectedType>(() => selected);\n\n const handleOpen = useCallback(() => {\n setOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setMenu(\"index\");\n setHeight(0);\n }, []);\n\n const handleHeight = useCallback((element) => {\n setHeight(element?.offsetHeight ?? 0);\n }, []);\n\n const handleItemClick = useCallback((value) => {\n setMenu(value);\n setIsLeft(true);\n }, []);\n\n const setIndex = useCallback(() => {\n setMenu(\"index\");\n setIsLeft(false);\n }, []);\n\n const handleChange = useCallback(\n (selectedArray) => {\n let newFilters = {};\n if (selectedArray.length) {\n newFilters = {\n ...filter,\n [menu]: selectedArray,\n };\n } else {\n newFilters = { ...filter };\n delete newFilters[menu];\n }\n\n setFilter(newFilters);\n onChange(newFilters);\n },\n [filter, menu, onChange]\n );\n\n const handleClearAll = useCallback(\n (event) => {\n event.stopPropagation();\n setFilter({});\n onChange({});\n },\n [onChange]\n );\n\n const handleReset = useCallback(() => {\n const newFilters = { ...filter };\n delete newFilters[menu];\n setFilter(newFilters);\n onChange(newFilters);\n }, [filter, menu, onChange]);\n\n const count = useMemo(() => {\n let c = 0;\n Object.values(filter).forEach((entry) => (c += entry.length));\n return c;\n }, [filter]);\n\n const shouldRenderSubmenus = useMemo(() => {\n if (data.length === 0) {\n return false;\n }\n\n for (const entry of data) {\n if (entry.submenu?.length > 1) {\n return true;\n }\n }\n\n return false;\n }, [data]);\n\n return (\n <StyledMenu\n open={open}\n onOpen={handleOpen}\n onClose={handleClose}\n position=\"bottom-end\"\n target={\n <CounterButton\n active={open}\n label={label}\n icon={<FilterIcon />}\n counter={count}\n tooltipText={clearAllText}\n onClearAll={handleClearAll}\n />\n }\n >\n <ResizeTransition in>\n <div style={{ height, width }}>\n <SlideLeftRightTransition\n in={menu === \"index\"}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(\"index\")}\n >\n <MoveFocusInside>\n <StartMenu\n data={data}\n selected={filter}\n style={{ width }}\n onHeightChange={setHeight}\n onItemClick={handleItemClick}\n shouldRenderSubmenus={shouldRenderSubmenus}\n emptyFilterText={emptyFilterText}\n >\n {children}\n </StartMenu>\n </MoveFocusInside>\n </SlideLeftRightTransition>\n {shouldRenderSubmenus &&\n data.map(\n (\n { id, title, submenu, searchPlaceholder }: DataType,\n index: number\n ) => (\n <SlideLeftRightTransition\n key={`filter-submenu-${index}`}\n in={menu === id}\n direction={isLeft ? \"left\" : \"right\"}\n onEnter={handleHeight}\n onEntered={() => setEnteredMenu(id)}\n >\n <Submenu\n title={title}\n onBack={setIndex}\n onHeightChange={setHeight}\n style={{ width }}\n >\n <MoveFocusInside disabled={enteredMenu !== id}>\n <Select\n options={submenu}\n selected={filter[id]}\n onChange={handleChange}\n type=\"multiple\"\n autoHeightMax={255}\n placeholder={searchPlaceholder}\n noResultText={noResultText}\n keepSameOptionsOrder={Boolean(submenu.length <= 7)}\n disableSearch={Boolean(submenu.length <= 7)}\n />\n {filter[id]?.length ? (\n <StyledMenuFooter>\n <Button\n variant=\"text colored\"\n size=\"small\"\n onClick={handleReset}\n >\n {resetLabel}\n </Button>\n </StyledMenuFooter>\n ) : null}\n </MoveFocusInside>\n </Submenu>\n </SlideLeftRightTransition>\n )\n )}\n </div>\n </ResizeTransition>\n </StyledMenu>\n );\n};\n"],"file":"Filter.js"}
@@ -5,6 +5,8 @@ export interface StartMenuProps {
5
5
  selected: SelectedType;
6
6
  onItemClick: (id: number | string) => void;
7
7
  onHeightChange: (height: number) => void;
8
+ shouldRenderSubmenus: boolean;
9
+ emptyFilterText?: string;
8
10
  }
9
11
  export declare const StartMenu: FC<StartMenuProps & HTMLAttributes<HTMLDivElement>>;
10
12
  //# sourceMappingURL=StartMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StartMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/Filter/StartMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAqB,cAAc,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AASlD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,CA0CzE,CAAC"}
1
+ {"version":3,"file":"StartMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/Filter/StartMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAqB,cAAc,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAUlD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,CAgDzE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import React, { useRef, useEffect } from "react";
2
2
  import { ArrowRightIcon } from "../Icons";
3
- import { StyledStartMenuTitle, StyledStartMenuDot, StyledStartMenuListItem, StyledStartMenuList } from "./Styles";
3
+ import { StyledStartMenuTitle, StyledStartMenuDot, StyledStartMenuListItem, StyledStartMenuList, StyledStartMenuNoResults } from "./Styles";
4
4
  import { useResizeObserver } from "../../utils";
5
5
  export var StartMenu = function StartMenu(_ref) {
6
6
  var data = _ref.data,
@@ -8,6 +8,8 @@ export var StartMenu = function StartMenu(_ref) {
8
8
  onItemClick = _ref.onItemClick,
9
9
  style = _ref.style,
10
10
  onHeightChange = _ref.onHeightChange,
11
+ shouldRenderSubmenus = _ref.shouldRenderSubmenus,
12
+ emptyFilterText = _ref.emptyFilterText,
11
13
  children = _ref.children;
12
14
  var ref = useRef(null);
13
15
  var dimensions = useResizeObserver(ref);
@@ -20,7 +22,7 @@ export var StartMenu = function StartMenu(_ref) {
20
22
  return /*#__PURE__*/React.createElement("div", {
21
23
  style: style,
22
24
  ref: ref
23
- }, /*#__PURE__*/React.createElement(StyledStartMenuList, null, data.map(function (_ref2, index) {
25
+ }, /*#__PURE__*/React.createElement(StyledStartMenuList, null, shouldRenderSubmenus ? data.map(function (_ref2, index) {
24
26
  var _selected$id;
25
27
 
26
28
  var id = _ref2.id,
@@ -28,7 +30,7 @@ export var StartMenu = function StartMenu(_ref) {
28
30
  submenu = _ref2.submenu;
29
31
  var count = (_selected$id = selected[id]) == null ? void 0 : _selected$id.length;
30
32
 
31
- if (submenu != null && submenu.length) {
33
+ if ((submenu == null ? void 0 : submenu.length) > 1) {
32
34
  return /*#__PURE__*/React.createElement(StyledStartMenuListItem, {
33
35
  key: "filter-list-item-" + index,
34
36
  onClick: function onClick() {
@@ -36,6 +38,6 @@ export var StartMenu = function StartMenu(_ref) {
36
38
  }
37
39
  }, /*#__PURE__*/React.createElement(StyledStartMenuTitle, null, title), count > 0 ? /*#__PURE__*/React.createElement(StyledStartMenuDot, null, count) : null, /*#__PURE__*/React.createElement(ArrowRightIcon, null));
38
40
  }
39
- }), children));
41
+ }) : emptyFilterText ? /*#__PURE__*/React.createElement(StyledStartMenuNoResults, null, emptyFilterText) : null, children));
40
42
  };
41
43
  //# sourceMappingURL=StartMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Filter/StartMenu.tsx"],"names":["React","useRef","useEffect","ArrowRightIcon","StyledStartMenuTitle","StyledStartMenuDot","StyledStartMenuListItem","StyledStartMenuList","useResizeObserver","StartMenu","data","selected","onItemClick","style","onHeightChange","children","ref","dimensions","height","map","index","id","title","submenu","count","length"],"mappings":"AAAA,OAAOA,KAAP,IAAoBC,MAApB,EAA4BC,SAA5B,QAA6D,OAA7D;AACA,SAASC,cAAT,QAA+B,UAA/B;AAEA,SACEC,oBADF,EAEEC,kBAFF,EAGEC,uBAHF,EAIEC,mBAJF,QAKO,UALP;AAMA,SAASC,iBAAT,QAAkC,aAAlC;AASA,OAAO,IAAMC,SAA8D,GAAG,SAAjEA,SAAiE,OAOxE;AAAA,MANJC,IAMI,QANJA,IAMI;AAAA,MALJC,QAKI,QALJA,QAKI;AAAA,MAJJC,WAII,QAJJA,WAII;AAAA,MAHJC,KAGI,QAHJA,KAGI;AAAA,MAFJC,cAEI,QAFJA,cAEI;AAAA,MADJC,QACI,QADJA,QACI;AACJ,MAAMC,GAAG,GAAGf,MAAM,CAAC,IAAD,CAAlB;AACA,MAAMgB,UAAU,GAAGT,iBAAiB,CAACQ,GAAD,CAApC;AACA,MAAME,MAAM,GAAGD,UAAH,oBAAGA,UAAU,CAAEC,MAA3B;AAEAhB,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIgB,MAAM,IAAIA,MAAM,GAAG,CAAvB,EAA0B;AACxBJ,MAAAA,cAAc,CAACI,MAAD,CAAd;AACD;AACF,GAJQ,EAIN,CAACA,MAAD,EAASJ,cAAT,CAJM,CAAT;AAMA,sBACE;AAAK,IAAA,KAAK,EAAED,KAAZ;AAAmB,IAAA,GAAG,EAAEG;AAAxB,kBACE,oBAAC,mBAAD,QACGN,IAAI,CAACS,GAAL,CAAS,iBAAyBC,KAAzB,EAA2C;AAAA;;AAAA,QAAxCC,EAAwC,SAAxCA,EAAwC;AAAA,QAApCC,KAAoC,SAApCA,KAAoC;AAAA,QAA7BC,OAA6B,SAA7BA,OAA6B;AACnD,QAAMC,KAAK,mBAAGb,QAAQ,CAACU,EAAD,CAAX,qBAAG,aAAcI,MAA5B;;AACA,QAAIF,OAAJ,YAAIA,OAAO,CAAEE,MAAb,EAAqB;AACnB,0BACE,oBAAC,uBAAD;AACE,QAAA,GAAG,wBAAsBL,KAD3B;AAEE,QAAA,OAAO,EAAE;AAAA,iBAAMR,WAAW,CAACS,EAAD,CAAjB;AAAA;AAFX,sBAIE,oBAAC,oBAAD,QAAuBC,KAAvB,CAJF,EAKGE,KAAK,GAAG,CAAR,gBACC,oBAAC,kBAAD,QAAqBA,KAArB,CADD,GAEG,IAPN,eAQE,oBAAC,cAAD,OARF,CADF;AAYD;AACF,GAhBA,CADH,EAkBGT,QAlBH,CADF,CADF;AAwBD,CA1CM","sourcesContent":["import React, { FC, useRef, useEffect, HTMLAttributes } from \"react\";\nimport { ArrowRightIcon } from \"../Icons\";\nimport { DataType, SelectedType } from \"./Filter\";\nimport {\n StyledStartMenuTitle,\n StyledStartMenuDot,\n StyledStartMenuListItem,\n StyledStartMenuList,\n} from \"./Styles\";\nimport { useResizeObserver } from \"../../utils\";\n\nexport interface StartMenuProps {\n data: Array<DataType>;\n selected: SelectedType;\n onItemClick: (id: number | string) => void;\n onHeightChange: (height: number) => void;\n}\n\nexport const StartMenu: FC<StartMenuProps & HTMLAttributes<HTMLDivElement>> = ({\n data,\n selected,\n onItemClick,\n style,\n onHeightChange,\n children,\n}) => {\n const ref = useRef(null);\n const dimensions = useResizeObserver(ref);\n const height = dimensions?.height;\n\n useEffect(() => {\n if (height && height > 0) {\n onHeightChange(height);\n }\n }, [height, onHeightChange]);\n\n return (\n <div style={style} ref={ref}>\n <StyledStartMenuList>\n {data.map(({ id, title, submenu }, index: number) => {\n const count = selected[id]?.length;\n if (submenu?.length) {\n return (\n <StyledStartMenuListItem\n key={`filter-list-item-${index}`}\n onClick={() => onItemClick(id)}\n >\n <StyledStartMenuTitle>{title}</StyledStartMenuTitle>\n {count > 0 ? (\n <StyledStartMenuDot>{count}</StyledStartMenuDot>\n ) : null}\n <ArrowRightIcon />\n </StyledStartMenuListItem>\n );\n }\n })}\n {children}\n </StyledStartMenuList>\n </div>\n );\n};\n"],"file":"StartMenu.js"}
1
+ {"version":3,"sources":["../../../../src/components/Filter/StartMenu.tsx"],"names":["React","useRef","useEffect","ArrowRightIcon","StyledStartMenuTitle","StyledStartMenuDot","StyledStartMenuListItem","StyledStartMenuList","StyledStartMenuNoResults","useResizeObserver","StartMenu","data","selected","onItemClick","style","onHeightChange","shouldRenderSubmenus","emptyFilterText","children","ref","dimensions","height","map","index","id","title","submenu","count","length"],"mappings":"AAAA,OAAOA,KAAP,IAAoBC,MAApB,EAA4BC,SAA5B,QAA6D,OAA7D;AACA,SAASC,cAAT,QAA+B,UAA/B;AAEA,SACEC,oBADF,EAEEC,kBAFF,EAGEC,uBAHF,EAIEC,mBAJF,EAKEC,wBALF,QAMO,UANP;AAOA,SAASC,iBAAT,QAAkC,aAAlC;AAWA,OAAO,IAAMC,SAA8D,GAAG,SAAjEA,SAAiE,OASxE;AAAA,MARJC,IAQI,QARJA,IAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,WAMI,QANJA,WAMI;AAAA,MALJC,KAKI,QALJA,KAKI;AAAA,MAJJC,cAII,QAJJA,cAII;AAAA,MAHJC,oBAGI,QAHJA,oBAGI;AAAA,MAFJC,eAEI,QAFJA,eAEI;AAAA,MADJC,QACI,QADJA,QACI;AACJ,MAAMC,GAAG,GAAGlB,MAAM,CAAC,IAAD,CAAlB;AACA,MAAMmB,UAAU,GAAGX,iBAAiB,CAACU,GAAD,CAApC;AACA,MAAME,MAAM,GAAGD,UAAH,oBAAGA,UAAU,CAAEC,MAA3B;AAEAnB,EAAAA,SAAS,CAAC,YAAM;AACd,QAAImB,MAAM,IAAIA,MAAM,GAAG,CAAvB,EAA0B;AACxBN,MAAAA,cAAc,CAACM,MAAD,CAAd;AACD;AACF,GAJQ,EAIN,CAACA,MAAD,EAASN,cAAT,CAJM,CAAT;AAMA,sBACE;AAAK,IAAA,KAAK,EAAED,KAAZ;AAAmB,IAAA,GAAG,EAAEK;AAAxB,kBACE,oBAAC,mBAAD,QACGH,oBAAoB,GACnBL,IAAI,CAACW,GAAL,CAAS,iBAAyBC,KAAzB,EAA2C;AAAA;;AAAA,QAAxCC,EAAwC,SAAxCA,EAAwC;AAAA,QAApCC,KAAoC,SAApCA,KAAoC;AAAA,QAA7BC,OAA6B,SAA7BA,OAA6B;AAClD,QAAMC,KAAK,mBAAGf,QAAQ,CAACY,EAAD,CAAX,qBAAG,aAAcI,MAA5B;;AACA,QAAI,CAAAF,OAAO,QAAP,YAAAA,OAAO,CAAEE,MAAT,IAAkB,CAAtB,EAAyB;AACvB,0BACE,oBAAC,uBAAD;AACE,QAAA,GAAG,wBAAsBL,KAD3B;AAEE,QAAA,OAAO,EAAE;AAAA,iBAAMV,WAAW,CAACW,EAAD,CAAjB;AAAA;AAFX,sBAIE,oBAAC,oBAAD,QAAuBC,KAAvB,CAJF,EAKGE,KAAK,GAAG,CAAR,gBACC,oBAAC,kBAAD,QAAqBA,KAArB,CADD,GAEG,IAPN,eAQE,oBAAC,cAAD,OARF,CADF;AAYD;AACF,GAhBD,CADmB,GAkBjBV,eAAe,gBACjB,oBAAC,wBAAD,QAA2BA,eAA3B,CADiB,GAEf,IArBN,EAsBGC,QAtBH,CADF,CADF;AA4BD,CAhDM","sourcesContent":["import React, { FC, useRef, useEffect, HTMLAttributes } from \"react\";\nimport { ArrowRightIcon } from \"../Icons\";\nimport { DataType, SelectedType } from \"./Filter\";\nimport {\n StyledStartMenuTitle,\n StyledStartMenuDot,\n StyledStartMenuListItem,\n StyledStartMenuList,\n StyledStartMenuNoResults,\n} from \"./Styles\";\nimport { useResizeObserver } from \"../../utils\";\n\nexport interface StartMenuProps {\n data: Array<DataType>;\n selected: SelectedType;\n onItemClick: (id: number | string) => void;\n onHeightChange: (height: number) => void;\n shouldRenderSubmenus: boolean;\n emptyFilterText?: string;\n}\n\nexport const StartMenu: FC<StartMenuProps & HTMLAttributes<HTMLDivElement>> = ({\n data,\n selected,\n onItemClick,\n style,\n onHeightChange,\n shouldRenderSubmenus,\n emptyFilterText,\n children,\n}) => {\n const ref = useRef(null);\n const dimensions = useResizeObserver(ref);\n const height = dimensions?.height;\n\n useEffect(() => {\n if (height && height > 0) {\n onHeightChange(height);\n }\n }, [height, onHeightChange]);\n\n return (\n <div style={style} ref={ref}>\n <StyledStartMenuList>\n {shouldRenderSubmenus ? (\n data.map(({ id, title, submenu }, index: number) => {\n const count = selected[id]?.length;\n if (submenu?.length > 1) {\n return (\n <StyledStartMenuListItem\n key={`filter-list-item-${index}`}\n onClick={() => onItemClick(id)}\n >\n <StyledStartMenuTitle>{title}</StyledStartMenuTitle>\n {count > 0 ? (\n <StyledStartMenuDot>{count}</StyledStartMenuDot>\n ) : null}\n <ArrowRightIcon />\n </StyledStartMenuListItem>\n );\n }\n })\n ) : emptyFilterText ? (\n <StyledStartMenuNoResults>{emptyFilterText}</StyledStartMenuNoResults>\n ) : null}\n {children}\n </StyledStartMenuList>\n </div>\n );\n};\n"],"file":"StartMenu.js"}
@@ -6,5 +6,6 @@ export declare const StyledMenuFooter: import("styled-components").StyledCompone
6
6
  export declare const StyledStartMenuList: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<IList & import("react").HTMLAttributes<HTMLUListElement> & import("react").RefAttributes<HTMLUListElement>>, any, IList, never>;
7
7
  export declare const StyledStartMenuListItem: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<IListItem & import("react").HTMLAttributes<HTMLLIElement> & import("react").RefAttributes<HTMLLIElement>>, any, IListItem, never>;
8
8
  export declare const StyledStartMenuTitle: import("styled-components").StyledComponent<"div", any, {}, never>;
9
+ export declare const StyledStartMenuNoResults: import("styled-components").StyledComponent<"div", any, {}, never>;
9
10
  export declare const StyledStartMenuDot: import("styled-components").StyledComponent<"span", any, {}, never>;
10
11
  //# sourceMappingURL=Styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Filter/Styles.ts"],"names":[],"mappings":";AACA,OAAO,EAAQ,KAAK,EAAc,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAY,SAAS,EAAQ,KAAK,EAAE,MAAM,SAAS,CAAC;AAG3D,eAAO,MAAM,UAAU,2FAGtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,+NAE5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,uNAE/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,yNAEnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,oEAEhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,qEAU9B,CAAC"}
1
+ {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Filter/Styles.ts"],"names":[],"mappings":";AACA,OAAO,EAAQ,KAAK,EAAc,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAY,SAAS,EAAQ,KAAK,EAAE,MAAM,SAAS,CAAC;AAG3D,eAAO,MAAM,UAAU,2FAGtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,+NAE5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,uNAE/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,yNAEnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,oEAEhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,oEAGpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,qEAU9B,CAAC"}
@@ -34,9 +34,18 @@ export var StyledStartMenuTitle = styled.div.withConfig({
34
34
  })(["", ""], {
35
35
  "flex": "1 1 0%"
36
36
  });
37
+ export var StyledStartMenuNoResults = styled.div.withConfig({
38
+ displayName: "Styles__StyledStartMenuNoResults",
39
+ componentId: "sc-lxuoiz-5"
40
+ })(["", " ", ""], {
41
+ "paddingTop": "0.125rem",
42
+ "paddingBottom": "0.125rem"
43
+ }, {
44
+ "textAlign": "center"
45
+ });
37
46
  export var StyledStartMenuDot = styled.span.withConfig({
38
47
  displayName: "Styles__StyledStartMenuDot",
39
- componentId: "sc-lxuoiz-5"
48
+ componentId: "sc-lxuoiz-6"
40
49
  })(["border-radius:50%;background-color:var(--color-primary);color:var(--page-paper-main);line-height:15px;width:15px;font-weight:bold;font-size:10px;text-align:center;margin-left:4px;"]);
41
50
  StyledMenu.displayName = "StyledMenu";
42
51
  StyledMenuFooter.displayName = "StyledMenuFooter";
@@ -44,4 +53,5 @@ StyledStartMenuList.displayName = "StyledStartMenuList";
44
53
  StyledStartMenuListItem.displayName = "StyledStartMenuListItem";
45
54
  StyledStartMenuTitle.displayName = "StyledStartMenuTitle";
46
55
  StyledStartMenuDot.displayName = "StyledStartMenuDot";
56
+ StyledStartMenuNoResults.displayName = "StyledStartMenuNoResults";
47
57
  //# sourceMappingURL=Styles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Filter/Styles.ts"],"names":["styled","Menu","MenuFooter","ListItem","List","StyledMenu","StyledMenuFooter","StyledStartMenuList","StyledStartMenuListItem","StyledStartMenuTitle","div","StyledStartMenuDot","span","displayName"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,mBAAnB;AACA,SAASC,IAAT,EAAsBC,UAAtB,QAAqD,SAArD;AACA,SAASC,QAAT,EAA8BC,IAA9B,QAAiD,SAAjD;AAGA,OAAO,IAAMC,UAAU,GAAGL,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA;AAAA,kBACjB;AAAA;AAAA,CADiB,EAEjB;AAAA;AAAA,CAFiB,CAAhB;AAKP,OAAO,IAAMK,gBAAgB,GAAGN,MAAM,CAACE,UAAD,CAAT;AAAA;AAAA;AAAA,aACvB;AAAA;AAAA,CADuB,CAAtB;AAIP,OAAO,IAAMK,mBAAmB,GAAGP,MAAM,CAACI,IAAD,CAAT;AAAA;AAAA;AAAA,aAC1B;AAAA;AAAA;AAAA,CAD0B,CAAzB;AAIP,OAAO,IAAMI,uBAAuB,GAAGR,MAAM,CAACG,QAAD,CAAT;AAAA;AAAA;AAAA,aAC9B;AAAA;AAAA,CAD8B,CAA7B;AAIP,OAAO,IAAMM,oBAAoB,GAAGT,MAAM,CAACU,GAAV;AAAA;AAAA;AAAA,aAC3B;AAAA;AAAA,CAD2B,CAA1B;AAIP,OAAO,IAAMC,kBAAkB,GAAGX,MAAM,CAACY,IAAV;AAAA;AAAA;AAAA,2LAAxB;AAYPP,UAAU,CAACQ,WAAX,GAAyB,YAAzB;AACAP,gBAAgB,CAACO,WAAjB,GAA+B,kBAA/B;AACAN,mBAAmB,CAACM,WAApB,GAAkC,qBAAlC;AACAL,uBAAuB,CAACK,WAAxB,GAAsC,yBAAtC;AACAJ,oBAAoB,CAACI,WAArB,GAAmC,sBAAnC;AACAF,kBAAkB,CAACE,WAAnB,GAAiC,oBAAjC","sourcesContent":["import styled from \"styled-components\";\nimport { Menu, IMenu, MenuFooter, IMenuFooter } from \"../Menu\";\nimport { ListItem, IListItem, List, IList } from \"../List\";\nimport tw from \"twin.macro\";\n\nexport const StyledMenu = styled(Menu)<IMenu>`\n ${tw`tw-relative`}\n ${tw`tw-overflow-hidden`}\n`;\n\nexport const StyledMenuFooter = styled(MenuFooter)<IMenuFooter>`\n ${tw`tw-justify-center`}\n`;\n\nexport const StyledStartMenuList = styled(List)<IList>`\n ${tw`tw-py-2`}\n`;\n\nexport const StyledStartMenuListItem = styled(ListItem)<IListItem>`\n ${tw`tw-pr-3`}\n`;\n\nexport const StyledStartMenuTitle = styled.div`\n ${tw`tw-flex-1`}\n`;\n\nexport const StyledStartMenuDot = styled.span`\n border-radius: 50%;\n background-color: var(--color-primary);\n color: var(--page-paper-main);\n line-height: 15px;\n width: 15px;\n font-weight: bold;\n font-size: 10px;\n text-align: center;\n margin-left: 4px;\n`;\n\nStyledMenu.displayName = \"StyledMenu\";\nStyledMenuFooter.displayName = \"StyledMenuFooter\";\nStyledStartMenuList.displayName = \"StyledStartMenuList\";\nStyledStartMenuListItem.displayName = \"StyledStartMenuListItem\";\nStyledStartMenuTitle.displayName = \"StyledStartMenuTitle\";\nStyledStartMenuDot.displayName = \"StyledStartMenuDot\";\n"],"file":"Styles.js"}
1
+ {"version":3,"sources":["../../../../src/components/Filter/Styles.ts"],"names":["styled","Menu","MenuFooter","ListItem","List","StyledMenu","StyledMenuFooter","StyledStartMenuList","StyledStartMenuListItem","StyledStartMenuTitle","div","StyledStartMenuNoResults","StyledStartMenuDot","span","displayName"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,mBAAnB;AACA,SAASC,IAAT,EAAsBC,UAAtB,QAAqD,SAArD;AACA,SAASC,QAAT,EAA8BC,IAA9B,QAAiD,SAAjD;AAGA,OAAO,IAAMC,UAAU,GAAGL,MAAM,CAACC,IAAD,CAAT;AAAA;AAAA;AAAA,kBACjB;AAAA;AAAA,CADiB,EAEjB;AAAA;AAAA,CAFiB,CAAhB;AAKP,OAAO,IAAMK,gBAAgB,GAAGN,MAAM,CAACE,UAAD,CAAT;AAAA;AAAA;AAAA,aACvB;AAAA;AAAA,CADuB,CAAtB;AAIP,OAAO,IAAMK,mBAAmB,GAAGP,MAAM,CAACI,IAAD,CAAT;AAAA;AAAA;AAAA,aAC1B;AAAA;AAAA;AAAA,CAD0B,CAAzB;AAIP,OAAO,IAAMI,uBAAuB,GAAGR,MAAM,CAACG,QAAD,CAAT;AAAA;AAAA;AAAA,aAC9B;AAAA;AAAA,CAD8B,CAA7B;AAIP,OAAO,IAAMM,oBAAoB,GAAGT,MAAM,CAACU,GAAV;AAAA;AAAA;AAAA,aAC3B;AAAA;AAAA,CAD2B,CAA1B;AAIP,OAAO,IAAMC,wBAAwB,GAAGX,MAAM,CAACU,GAAV;AAAA;AAAA;AAAA,kBAC/B;AAAA;AAAA;AAAA,CAD+B,EAE/B;AAAA;AAAA,CAF+B,CAA9B;AAKP,OAAO,IAAME,kBAAkB,GAAGZ,MAAM,CAACa,IAAV;AAAA;AAAA;AAAA,2LAAxB;AAYPR,UAAU,CAACS,WAAX,GAAyB,YAAzB;AACAR,gBAAgB,CAACQ,WAAjB,GAA+B,kBAA/B;AACAP,mBAAmB,CAACO,WAApB,GAAkC,qBAAlC;AACAN,uBAAuB,CAACM,WAAxB,GAAsC,yBAAtC;AACAL,oBAAoB,CAACK,WAArB,GAAmC,sBAAnC;AACAF,kBAAkB,CAACE,WAAnB,GAAiC,oBAAjC;AACAH,wBAAwB,CAACG,WAAzB,GAAuC,0BAAvC","sourcesContent":["import styled from \"styled-components\";\nimport { Menu, IMenu, MenuFooter, IMenuFooter } from \"../Menu\";\nimport { ListItem, IListItem, List, IList } from \"../List\";\nimport tw from \"twin.macro\";\n\nexport const StyledMenu = styled(Menu)<IMenu>`\n ${tw`tw-relative`}\n ${tw`tw-overflow-hidden`}\n`;\n\nexport const StyledMenuFooter = styled(MenuFooter)<IMenuFooter>`\n ${tw`tw-justify-center`}\n`;\n\nexport const StyledStartMenuList = styled(List)<IList>`\n ${tw`tw-py-2`}\n`;\n\nexport const StyledStartMenuListItem = styled(ListItem)<IListItem>`\n ${tw`tw-pr-3`}\n`;\n\nexport const StyledStartMenuTitle = styled.div`\n ${tw`tw-flex-1`}\n`;\n\nexport const StyledStartMenuNoResults = styled.div`\n ${tw`tw-py-0.5`}\n ${tw`tw-text-center`}\n`;\n\nexport const StyledStartMenuDot = styled.span`\n border-radius: 50%;\n background-color: var(--color-primary);\n color: var(--page-paper-main);\n line-height: 15px;\n width: 15px;\n font-weight: bold;\n font-size: 10px;\n text-align: center;\n margin-left: 4px;\n`;\n\nStyledMenu.displayName = \"StyledMenu\";\nStyledMenuFooter.displayName = \"StyledMenuFooter\";\nStyledStartMenuList.displayName = \"StyledStartMenuList\";\nStyledStartMenuListItem.displayName = \"StyledStartMenuListItem\";\nStyledStartMenuTitle.displayName = \"StyledStartMenuTitle\";\nStyledStartMenuDot.displayName = \"StyledStartMenuDot\";\nStyledStartMenuNoResults.displayName = \"StyledStartMenuNoResults\";\n"],"file":"Styles.js"}