@activecollab/components 1.0.158 → 1.0.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Filter/Filter.js +4 -2
- package/dist/cjs/components/Filter/Filter.js.map +1 -1
- package/dist/esm/components/Filter/Filter.d.ts +1 -0
- package/dist/esm/components/Filter/Filter.d.ts.map +1 -1
- package/dist/esm/components/Filter/Filter.js +4 -2
- package/dist/esm/components/Filter/Filter.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -220,7 +220,8 @@ var Filter = function Filter(_ref) {
|
|
|
220
220
|
var id = _ref2.id,
|
|
221
221
|
title = _ref2.title,
|
|
222
222
|
submenu = _ref2.submenu,
|
|
223
|
-
searchPlaceholder = _ref2.searchPlaceholder
|
|
223
|
+
searchPlaceholder = _ref2.searchPlaceholder,
|
|
224
|
+
disableInternalSort = _ref2.disableInternalSort;
|
|
224
225
|
return /*#__PURE__*/_react.default.createElement(_Transitions.SlideLeftRightTransition, {
|
|
225
226
|
key: "filter-submenu-".concat(index),
|
|
226
227
|
in: menu === id,
|
|
@@ -247,7 +248,8 @@ var Filter = function Filter(_ref) {
|
|
|
247
248
|
placeholder: searchPlaceholder,
|
|
248
249
|
noResultText: noResultText,
|
|
249
250
|
keepSameOptionsOrder: Boolean(submenu.length <= 7),
|
|
250
|
-
disableSearch: Boolean(submenu.length <= 7)
|
|
251
|
+
disableSearch: Boolean(submenu.length <= 7),
|
|
252
|
+
disabledInternalSort: disableInternalSort
|
|
251
253
|
}), (_filter$id = filter[id]) !== null && _filter$id !== void 0 && _filter$id.length ? /*#__PURE__*/_react.default.createElement(_Styles.StyledMenuFooter, null, /*#__PURE__*/_react.default.createElement(_Button.Button, {
|
|
252
254
|
variant: "text colored",
|
|
253
255
|
size: "small",
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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","disableInternalSort","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 disableInternalSort?: boolean;\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 {\n id,\n title,\n submenu,\n searchPlaceholder,\n disableInternalSort,\n }: 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 disabledInternalSort={disableInternalSort}\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 +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,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,
|
|
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,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,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,CAmMlC,CAAC"}
|
|
@@ -172,7 +172,8 @@ export var Filter = function Filter(_ref) {
|
|
|
172
172
|
var id = _ref2.id,
|
|
173
173
|
title = _ref2.title,
|
|
174
174
|
submenu = _ref2.submenu,
|
|
175
|
-
searchPlaceholder = _ref2.searchPlaceholder
|
|
175
|
+
searchPlaceholder = _ref2.searchPlaceholder,
|
|
176
|
+
disableInternalSort = _ref2.disableInternalSort;
|
|
176
177
|
return /*#__PURE__*/React.createElement(SlideLeftRightTransition, {
|
|
177
178
|
key: "filter-submenu-" + index,
|
|
178
179
|
in: menu === id,
|
|
@@ -199,7 +200,8 @@ export var Filter = function Filter(_ref) {
|
|
|
199
200
|
placeholder: searchPlaceholder,
|
|
200
201
|
noResultText: noResultText,
|
|
201
202
|
keepSameOptionsOrder: Boolean(submenu.length <= 7),
|
|
202
|
-
disableSearch: Boolean(submenu.length <= 7)
|
|
203
|
+
disableSearch: Boolean(submenu.length <= 7),
|
|
204
|
+
disabledInternalSort: disableInternalSort
|
|
203
205
|
}), (_filter$id = filter[id]) != null && _filter$id.length ? /*#__PURE__*/React.createElement(StyledMenuFooter, null, /*#__PURE__*/React.createElement(Button, {
|
|
204
206
|
variant: "text colored",
|
|
205
207
|
size: "small",
|
|
@@ -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","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"}
|
|
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","disableInternalSort","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 disableInternalSort?: boolean;\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 {\n id,\n title,\n submenu,\n searchPlaceholder,\n disableInternalSort,\n }: 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 disabledInternalSort={disableInternalSort}\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"}
|
package/dist/index.js
CHANGED
|
@@ -12044,7 +12044,8 @@
|
|
|
12044
12044
|
var id = _ref2.id,
|
|
12045
12045
|
title = _ref2.title,
|
|
12046
12046
|
submenu = _ref2.submenu,
|
|
12047
|
-
searchPlaceholder = _ref2.searchPlaceholder
|
|
12047
|
+
searchPlaceholder = _ref2.searchPlaceholder,
|
|
12048
|
+
disableInternalSort = _ref2.disableInternalSort;
|
|
12048
12049
|
return /*#__PURE__*/React__default["default"].createElement(SlideLeftRightTransition, {
|
|
12049
12050
|
key: "filter-submenu-".concat(index),
|
|
12050
12051
|
in: menu === id,
|
|
@@ -12071,7 +12072,8 @@
|
|
|
12071
12072
|
placeholder: searchPlaceholder,
|
|
12072
12073
|
noResultText: noResultText,
|
|
12073
12074
|
keepSameOptionsOrder: Boolean(submenu.length <= 7),
|
|
12074
|
-
disableSearch: Boolean(submenu.length <= 7)
|
|
12075
|
+
disableSearch: Boolean(submenu.length <= 7),
|
|
12076
|
+
disabledInternalSort: disableInternalSort
|
|
12075
12077
|
}), (_filter$id = filter[id]) !== null && _filter$id !== void 0 && _filter$id.length ? /*#__PURE__*/React__default["default"].createElement(StyledMenuFooter, null, /*#__PURE__*/React__default["default"].createElement(Button, {
|
|
12076
12078
|
variant: "text colored",
|
|
12077
12079
|
size: "small",
|