linear-react-components-ui 2.2.0-beta.8 → 2.2.0-beta.9

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.
@@ -5,4 +5,4 @@ export interface ScrollEndReachedParams extends UseScrollEndReachedParams {
5
5
  onEndReachedThreshold?: number;
6
6
  }
7
7
  export declare function getCurrentThreshold(scrollableElement: HTMLElement, scrollThreshold: number): number;
8
- export declare function useScrollEndReached({ elementRef, onEndReached, onEndReachedThreshold, }: ScrollEndReachedParams): void;
8
+ export declare function useScrollEndReached({ elementRef, onEndReached, onEndReachedThreshold, itemsCount, }: ScrollEndReachedParams): void;
@@ -15,10 +15,20 @@ function getCurrentThreshold(scrollableElement, scrollThreshold) {
15
15
  function useScrollEndReached({
16
16
  elementRef,
17
17
  onEndReached,
18
- onEndReachedThreshold = 0.25
18
+ onEndReachedThreshold = 0.25,
19
+ itemsCount
19
20
  }) {
20
21
  const lastScrollTop = useRef(null);
21
22
  const enableOnEndReached = useRef(true);
23
+ const lastItemsCount = useRef(itemsCount);
24
+ const waitingForItems = useRef(false);
25
+ useEffect(() => {
26
+ if (itemsCount !== void 0 && lastItemsCount.current !== itemsCount) {
27
+ lastItemsCount.current = itemsCount;
28
+ waitingForItems.current = false;
29
+ enableOnEndReached.current = true;
30
+ }
31
+ }, [itemsCount]);
22
32
  const onScrollEndReached = async () => {
23
33
  const element = elementRef.current;
24
34
  if (element && onEndReached) {
@@ -31,12 +41,13 @@ function useScrollEndReached({
31
41
  lastScrollTop.current = scrollTop;
32
42
  const scrollOffset = scrollHeight - clientHeight - scrollTop - 1;
33
43
  const threshold = getCurrentThreshold(element, onEndReachedThreshold);
34
- if (scrollOffset <= threshold && isScrollingDown && enableOnEndReached.current) {
44
+ if (scrollOffset <= threshold && isScrollingDown && enableOnEndReached.current && !waitingForItems.current) {
35
45
  enableOnEndReached.current = false;
46
+ waitingForItems.current = itemsCount !== void 0;
36
47
  try {
37
48
  await onEndReached();
38
49
  } finally {
39
- enableOnEndReached.current = true;
50
+ enableOnEndReached.current = itemsCount === void 0;
40
51
  }
41
52
  }
42
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/lib/hooks/useScrollEndReached/index.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { AsyncFunc, Func, UseScrollEndReachedParams } from \"./types\";\n\nexport interface ScrollEndReachedParams extends UseScrollEndReachedParams {\n elementRef: React.RefObject<HTMLElement | null>;\n onEndReached?: Func | AsyncFunc;\n onEndReachedThreshold?: number;\n}\n\nexport function getCurrentThreshold(\n scrollableElement: HTMLElement,\n scrollThreshold: number,\n): number {\n const MIN_THRESHOLD = 0;\n const MAX_THRESHOLD = 1;\n if (scrollThreshold < MIN_THRESHOLD) return MIN_THRESHOLD;\n if (scrollThreshold > MAX_THRESHOLD) return MAX_THRESHOLD;\n const { scrollHeight, clientHeight } = scrollableElement;\n const scrollableHeight = Math.max(scrollHeight - clientHeight, 0);\n const thresholdBase = Math.min(clientHeight, scrollableHeight);\n\n return Math.round(thresholdBase * scrollThreshold);\n}\n\nexport function useScrollEndReached({\n elementRef,\n onEndReached,\n onEndReachedThreshold = 0.25,\n}: ScrollEndReachedParams) {\n const lastScrollTop = useRef<number | null>(null);\n const enableOnEndReached = useRef(true);\n\n const onScrollEndReached = async () => {\n const element = elementRef.current;\n\n if (element && onEndReached) {\n const { scrollTop, scrollHeight, clientHeight } = element;\n const isScrollingDown =\n lastScrollTop.current === null || scrollTop > lastScrollTop.current;\n lastScrollTop.current = scrollTop;\n const scrollOffset = scrollHeight - clientHeight - scrollTop - 1;\n const threshold = getCurrentThreshold(element, onEndReachedThreshold);\n\n if (\n scrollOffset <= threshold &&\n isScrollingDown &&\n enableOnEndReached.current\n ) {\n enableOnEndReached.current = false;\n try {\n await onEndReached();\n } finally {\n enableOnEndReached.current = true;\n }\n }\n }\n };\n\n useEffect(() => {\n const element = elementRef.current;\n if (element && onEndReached) {\n element.addEventListener('scroll', onScrollEndReached);\n }\n\n return () => {\n element?.removeEventListener('scroll', onScrollEndReached);\n };\n }, [onEndReached, onEndReachedThreshold]);\n}\n"],"names":["getCurrentThreshold","scrollableElement","scrollThreshold","MIN_THRESHOLD","MAX_THRESHOLD","scrollHeight","clientHeight","scrollableHeight","Math","max","thresholdBase","min","round","useScrollEndReached","elementRef","onEndReached","onEndReachedThreshold","lastScrollTop","useRef","enableOnEndReached","onScrollEndReached","element","current","scrollTop","isScrollingDown","scrollOffset","threshold","useEffect","addEventListener","removeEventListener"],"mappings":";AASO,SAASA,oBACdC,mBACAC,iBACQ;AACR,QAAMC,gBAAgB;AACtB,QAAMC,gBAAgB;AACtB,MAAIF,kBAAkBC,cAAe,QAAOA;AAC5C,MAAID,kBAAkBE,cAAe,QAAOA;AAC5C,QAAM;AAAA,IAAEC;AAAAA,IAAcC;AAAAA,EAAAA,IAAiBL;AACvC,QAAMM,mBAAmBC,KAAKC,IAAIJ,eAAeC,cAAc,CAAC;AAChE,QAAMI,gBAAgBF,KAAKG,IAAIL,cAAcC,gBAAgB;AAE7D,SAAOC,KAAKI,MAAMF,gBAAgBR,eAAe;AACnD;AAEO,SAASW,oBAAoB;AAAA,EAClCC;AAAAA,EACAC;AAAAA,EACAC,wBAAwB;AACF,GAAG;AACzB,QAAMC,gBAAgBC,OAAsB,IAAI;AAChD,QAAMC,qBAAqBD,OAAO,IAAI;AAEtC,QAAME,qBAAqB,YAAY;AACrC,UAAMC,UAAUP,WAAWQ;AAE3B,QAAID,WAAWN,cAAc;AAC3B,YAAM;AAAA,QAAEQ;AAAAA,QAAWlB;AAAAA,QAAcC;AAAAA,MAAAA,IAAiBe;AAClD,YAAMG,kBACJP,cAAcK,YAAY,QAAQC,YAAYN,cAAcK;AAC9DL,oBAAcK,UAAUC;AACxB,YAAME,eAAepB,eAAeC,eAAeiB,YAAY;AAC/D,YAAMG,YAAY1B,oBAAoBqB,SAASL,qBAAqB;AAEpE,UACES,gBAAgBC,aAChBF,mBACAL,mBAAmBG,SACnB;AACAH,2BAAmBG,UAAU;AAC7B,YAAI;AACF,gBAAMP,aAAAA;AAAAA,QACR,UAAA;AACEI,6BAAmBG,UAAU;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEAK,YAAU,MAAM;AACd,UAAMN,YAAUP,WAAWQ;AAC3B,QAAID,aAAWN,cAAc;AAC3BM,gBAAQO,iBAAiB,UAAUR,kBAAkB;AAAA,IACvD;AAEA,WAAO,MAAM;AACXC,iBAASQ,oBAAoB,UAAUT,kBAAkB;AAAA,IAC3D;AAAA,EACF,GAAG,CAACL,cAAcC,qBAAqB,CAAC;AAC1C;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/lib/hooks/useScrollEndReached/index.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { AsyncFunc, Func, UseScrollEndReachedParams } from \"./types\";\n\nexport interface ScrollEndReachedParams extends UseScrollEndReachedParams {\n elementRef: React.RefObject<HTMLElement | null>;\n onEndReached?: Func | AsyncFunc;\n onEndReachedThreshold?: number;\n}\n\nexport function getCurrentThreshold(\n scrollableElement: HTMLElement,\n scrollThreshold: number,\n): number {\n const MIN_THRESHOLD = 0;\n const MAX_THRESHOLD = 1;\n if (scrollThreshold < MIN_THRESHOLD) return MIN_THRESHOLD;\n if (scrollThreshold > MAX_THRESHOLD) return MAX_THRESHOLD;\n const { scrollHeight, clientHeight } = scrollableElement;\n const scrollableHeight = Math.max(scrollHeight - clientHeight, 0);\n const thresholdBase = Math.min(clientHeight, scrollableHeight);\n\n return Math.round(thresholdBase * scrollThreshold);\n}\n\nexport function useScrollEndReached({\n elementRef,\n onEndReached,\n onEndReachedThreshold = 0.25,\n itemsCount,\n}: ScrollEndReachedParams) {\n const lastScrollTop = useRef<number | null>(null);\n const enableOnEndReached = useRef(true);\n const lastItemsCount = useRef<number | undefined>(itemsCount);\n const waitingForItems = useRef(false);\n\n useEffect(() => {\n if (itemsCount !== undefined && lastItemsCount.current !== itemsCount) {\n lastItemsCount.current = itemsCount;\n waitingForItems.current = false;\n enableOnEndReached.current = true;\n }\n }, [itemsCount]);\n\n const onScrollEndReached = async () => {\n const element = elementRef.current;\n\n if (element && onEndReached) {\n const { scrollTop, scrollHeight, clientHeight } = element;\n const isScrollingDown =\n lastScrollTop.current === null || scrollTop > lastScrollTop.current;\n lastScrollTop.current = scrollTop;\n const scrollOffset = scrollHeight - clientHeight - scrollTop - 1;\n const threshold = getCurrentThreshold(element, onEndReachedThreshold);\n\n if (\n scrollOffset <= threshold &&\n isScrollingDown &&\n enableOnEndReached.current &&\n !waitingForItems.current\n ) {\n enableOnEndReached.current = false;\n waitingForItems.current = itemsCount !== undefined;\n try {\n await onEndReached();\n } finally {\n enableOnEndReached.current = itemsCount === undefined;\n }\n }\n }\n };\n\n useEffect(() => {\n const element = elementRef.current;\n if (element && onEndReached) {\n element.addEventListener('scroll', onScrollEndReached);\n }\n\n return () => {\n element?.removeEventListener('scroll', onScrollEndReached);\n };\n }, [onEndReached, onEndReachedThreshold]);\n}\n"],"names":["getCurrentThreshold","scrollableElement","scrollThreshold","MIN_THRESHOLD","MAX_THRESHOLD","scrollHeight","clientHeight","scrollableHeight","Math","max","thresholdBase","min","round","useScrollEndReached","elementRef","onEndReached","onEndReachedThreshold","itemsCount","lastScrollTop","useRef","enableOnEndReached","lastItemsCount","waitingForItems","useEffect","undefined","current","onScrollEndReached","element","scrollTop","isScrollingDown","scrollOffset","threshold","addEventListener","removeEventListener"],"mappings":";AASO,SAASA,oBACdC,mBACAC,iBACQ;AACR,QAAMC,gBAAgB;AACtB,QAAMC,gBAAgB;AACtB,MAAIF,kBAAkBC,cAAe,QAAOA;AAC5C,MAAID,kBAAkBE,cAAe,QAAOA;AAC5C,QAAM;AAAA,IAAEC;AAAAA,IAAcC;AAAAA,EAAAA,IAAiBL;AACvC,QAAMM,mBAAmBC,KAAKC,IAAIJ,eAAeC,cAAc,CAAC;AAChE,QAAMI,gBAAgBF,KAAKG,IAAIL,cAAcC,gBAAgB;AAE7D,SAAOC,KAAKI,MAAMF,gBAAgBR,eAAe;AACnD;AAEO,SAASW,oBAAoB;AAAA,EAClCC;AAAAA,EACAC;AAAAA,EACAC,wBAAwB;AAAA,EACxBC;AACsB,GAAG;AACzB,QAAMC,gBAAgBC,OAAsB,IAAI;AAChD,QAAMC,qBAAqBD,OAAO,IAAI;AACtC,QAAME,iBAAiBF,OAA2BF,UAAU;AAC5D,QAAMK,kBAAkBH,OAAO,KAAK;AAEpCI,YAAU,MAAM;AACd,QAAIN,eAAeO,UAAaH,eAAeI,YAAYR,YAAY;AACrEI,qBAAeI,UAAUR;AACzBK,sBAAgBG,UAAU;AAC1BL,yBAAmBK,UAAU;AAAA,IAC/B;AAAA,EACF,GAAG,CAACR,UAAU,CAAC;AAEf,QAAMS,qBAAqB,YAAY;AACrC,UAAMC,UAAUb,WAAWW;AAE3B,QAAIE,WAAWZ,cAAc;AAC3B,YAAM;AAAA,QAAEa;AAAAA,QAAWvB;AAAAA,QAAcC;AAAAA,MAAAA,IAAiBqB;AAClD,YAAME,kBACJX,cAAcO,YAAY,QAAQG,YAAYV,cAAcO;AAC9DP,oBAAcO,UAAUG;AACxB,YAAME,eAAezB,eAAeC,eAAesB,YAAY;AAC/D,YAAMG,YAAY/B,oBAAoB2B,SAASX,qBAAqB;AAEpE,UACEc,gBAAgBC,aAChBF,mBACAT,mBAAmBK,WACnB,CAACH,gBAAgBG,SACjB;AACAL,2BAAmBK,UAAU;AAC7BH,wBAAgBG,UAAUR,eAAeO;AACzC,YAAI;AACF,gBAAMT,aAAAA;AAAAA,QACR,UAAA;AACEK,6BAAmBK,UAAUR,eAAeO;AAAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEAD,YAAU,MAAM;AACd,UAAMI,YAAUb,WAAWW;AAC3B,QAAIE,aAAWZ,cAAc;AAC3BY,gBAAQK,iBAAiB,UAAUN,kBAAkB;AAAA,IACvD;AAEA,WAAO,MAAM;AACXC,iBAASM,oBAAoB,UAAUP,kBAAkB;AAAA,IAC3D;AAAA,EACF,GAAG,CAACX,cAAcC,qBAAqB,CAAC;AAC1C;"}
@@ -3,4 +3,5 @@ export type AsyncFunc = () => Promise<void>;
3
3
  export interface UseScrollEndReachedParams {
4
4
  onEndReached?: Func | AsyncFunc;
5
5
  onEndReachedThreshold?: number;
6
+ itemsCount?: number;
6
7
  }
@@ -28,7 +28,8 @@ const Dropdown = (props) => {
28
28
  idKey,
29
29
  selectFieldRef,
30
30
  onEndReached,
31
- onEndReachedThreshold
31
+ onEndReachedThreshold,
32
+ itemsCount
32
33
  } = props;
33
34
  const [dropdownDynamicStyles, setDropdownDynamicStyles] = useState(returnDropdownDynamicStyles({
34
35
  ...props
@@ -43,7 +44,8 @@ const Dropdown = (props) => {
43
44
  useScrollEndReached({
44
45
  elementRef: dropdownRef,
45
46
  onEndReached,
46
- onEndReachedThreshold
47
+ onEndReachedThreshold,
48
+ itemsCount: itemsCount ?? dataCombo.length
47
49
  });
48
50
  return /* @__PURE__ */ jsx(DropdownPopup, { align: "left", leftPosition: dropdownDynamicStyles.left, topPosition: dropdownDynamicStyles.top, targetRef: selectFieldRef?.current, children: /* @__PURE__ */ jsxs("div", { className: "select-dropdown", ref: dropdownRef, style: {
49
51
  width: dropdownWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sources":["../../../src/lib/inputs/select/Dropdown.tsx"],"sourcesContent":["import { ChangeEvent, KeyboardEvent, useEffect, useState } from 'react';\nimport { useScrollEndReached } from '../../hooks/useScrollEndReached';\nimport Icon from '../../icons';\nimport Avatar from '../../avatar';\nimport * as helper from './helper';\nimport DropdownPopup from '../../dropdown/Popup';\nimport { IDropdownSelectProps } from '../types';\nimport { DataCombo } from '../../@types/DataCombo';\n\nconst Dropdown = (props: IDropdownSelectProps) => {\n const {\n imageAlign = 'left', striped = false, dataCombo, descriptionKey, imgSrcKey, dropdownRef,\n currents = [], dropdownWidth, gridWrapperStyle, handleOnSelect, inputValue,\n handleOnFocus, opened, handleOnFilter, selected = null, searchOnDropdown, handleOnKeydown,\n searchNotFoundText, idKey, selectFieldRef, onEndReached, onEndReachedThreshold,\n } = props;\n const [dropdownDynamicStyles, setDropdownDynamicStyles] =\n useState(helper.returnDropdownDynamicStyles({ ...props }));\n\n useEffect(() => {\n if (dropdownRef.current) {\n setDropdownDynamicStyles(helper.returnDropdownDynamicStyles({ ...props }));\n }\n }, [dropdownRef.current, dataCombo]);\n\n useScrollEndReached({\n elementRef: dropdownRef,\n onEndReached,\n onEndReachedThreshold,\n });\n\n return (\n <DropdownPopup\n align=\"left\"\n leftPosition={dropdownDynamicStyles.left}\n topPosition={dropdownDynamicStyles.top}\n targetRef={selectFieldRef?.current}>\n <div\n className=\"select-dropdown\"\n ref={dropdownRef}\n style={{\n width: dropdownWidth,\n marginLeft: gridWrapperStyle ? gridWrapperStyle.paddingLeft : '0',\n maxHeight: dropdownDynamicStyles.maxHeight,\n }}>\n {searchOnDropdown &&\n <div className=\"filtercontainer\">\n <input\n className=\"filterinput\"\n type=\"text\"\n value={inputValue}\n onFocus={() => { handleOnFocus(); }}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n handleOnFilter(e.target.value);\n }}\n onKeyDown={(e: KeyboardEvent<Element>) => { handleOnKeydown(e); }}\n autoFocus={opened} />\n <Icon name=\"search\" viewBox=\"0 0 32 32\" />\n </div>\n }\n {dataCombo.map((item: DataCombo) => {\n const disabled = (currents && currents.length > 0 ?\n currents.some(s => s[idKey] === item[idKey])\n : false);\n const itemSelected = Boolean(selected && selected[idKey] === item[idKey]);\n return (\n <div\n key={`dropdowmIten ${item[idKey]}}`}\n className={helper.getDropdownItemCssClass(itemSelected, disabled, striped)} >\n <button\n className=\"menubutton\"\n tabIndex={-1}\n onClick={() => { if (!disabled) { handleOnSelect(item); } }}>\n {item.iconName &&\n <Icon\n name={item.iconName}\n customClass=\"menuicon\"\n style={{ order: imageAlign === 'left' ? 0 : 1 }} />\n }\n {imgSrcKey && item.imgSrcKey &&\n <Avatar\n src={item.imgSrcKey}\n customClass=\"menuicon\"\n style={{ order: imageAlign === 'left' ? 0 : 1 }} />\n }\n <span className=\"label\">{typeof descriptionKey === 'string' ? item[descriptionKey] : descriptionKey(item)}</span>\n </button>\n </div>\n );\n })}\n {dataCombo && dataCombo.length === 0 &&\n <div className=\"notfound\">{searchNotFoundText}</div>\n }\n </div>\n </DropdownPopup>\n );\n};\n\nexport default Dropdown;\n"],"names":["Dropdown","props","imageAlign","striped","dataCombo","descriptionKey","imgSrcKey","dropdownRef","currents","dropdownWidth","gridWrapperStyle","handleOnSelect","inputValue","handleOnFocus","opened","handleOnFilter","selected","searchOnDropdown","handleOnKeydown","searchNotFoundText","idKey","selectFieldRef","onEndReached","onEndReachedThreshold","dropdownDynamicStyles","setDropdownDynamicStyles","useState","helper","useEffect","current","useScrollEndReached","elementRef","left","top","width","marginLeft","paddingLeft","maxHeight","e","target","value","map","item","disabled","length","some","s","itemSelected","Boolean","iconName","order"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../src/lib/inputs/select/Dropdown.tsx"],"sourcesContent":["import { ChangeEvent, KeyboardEvent, useEffect, useState } from 'react';\nimport { useScrollEndReached } from '../../hooks/useScrollEndReached';\nimport Icon from '../../icons';\nimport Avatar from '../../avatar';\nimport * as helper from './helper';\nimport DropdownPopup from '../../dropdown/Popup';\nimport { IDropdownSelectProps } from '../types';\nimport { DataCombo } from '../../@types/DataCombo';\n\nconst Dropdown = (props: IDropdownSelectProps) => {\n const {\n imageAlign = 'left', striped = false, dataCombo, descriptionKey, imgSrcKey, dropdownRef,\n currents = [], dropdownWidth, gridWrapperStyle, handleOnSelect, inputValue,\n handleOnFocus, opened, handleOnFilter, selected = null, searchOnDropdown, handleOnKeydown,\n searchNotFoundText, idKey, selectFieldRef, onEndReached, onEndReachedThreshold, itemsCount,\n } = props;\n const [dropdownDynamicStyles, setDropdownDynamicStyles] =\n useState(helper.returnDropdownDynamicStyles({ ...props }));\n\n useEffect(() => {\n if (dropdownRef.current) {\n setDropdownDynamicStyles(helper.returnDropdownDynamicStyles({ ...props }));\n }\n }, [dropdownRef.current, dataCombo]);\n\n useScrollEndReached({\n elementRef: dropdownRef,\n onEndReached,\n onEndReachedThreshold,\n itemsCount: itemsCount ?? dataCombo.length,\n });\n\n return (\n <DropdownPopup\n align=\"left\"\n leftPosition={dropdownDynamicStyles.left}\n topPosition={dropdownDynamicStyles.top}\n targetRef={selectFieldRef?.current}>\n <div\n className=\"select-dropdown\"\n ref={dropdownRef}\n style={{\n width: dropdownWidth,\n marginLeft: gridWrapperStyle ? gridWrapperStyle.paddingLeft : '0',\n maxHeight: dropdownDynamicStyles.maxHeight,\n }}>\n {searchOnDropdown &&\n <div className=\"filtercontainer\">\n <input\n className=\"filterinput\"\n type=\"text\"\n value={inputValue}\n onFocus={() => { handleOnFocus(); }}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n handleOnFilter(e.target.value);\n }}\n onKeyDown={(e: KeyboardEvent<Element>) => { handleOnKeydown(e); }}\n autoFocus={opened} />\n <Icon name=\"search\" viewBox=\"0 0 32 32\" />\n </div>\n }\n {dataCombo.map((item: DataCombo) => {\n const disabled = (currents && currents.length > 0 ?\n currents.some(s => s[idKey] === item[idKey])\n : false);\n const itemSelected = Boolean(selected && selected[idKey] === item[idKey]);\n return (\n <div\n key={`dropdowmIten ${item[idKey]}}`}\n className={helper.getDropdownItemCssClass(itemSelected, disabled, striped)} >\n <button\n className=\"menubutton\"\n tabIndex={-1}\n onClick={() => { if (!disabled) { handleOnSelect(item); } }}>\n {item.iconName &&\n <Icon\n name={item.iconName}\n customClass=\"menuicon\"\n style={{ order: imageAlign === 'left' ? 0 : 1 }} />\n }\n {imgSrcKey && item.imgSrcKey &&\n <Avatar\n src={item.imgSrcKey}\n customClass=\"menuicon\"\n style={{ order: imageAlign === 'left' ? 0 : 1 }} />\n }\n <span className=\"label\">{typeof descriptionKey === 'string' ? item[descriptionKey] : descriptionKey(item)}</span>\n </button>\n </div>\n );\n })}\n {dataCombo && dataCombo.length === 0 &&\n <div className=\"notfound\">{searchNotFoundText}</div>\n }\n </div>\n </DropdownPopup>\n );\n};\n\nexport default Dropdown;\n"],"names":["Dropdown","props","imageAlign","striped","dataCombo","descriptionKey","imgSrcKey","dropdownRef","currents","dropdownWidth","gridWrapperStyle","handleOnSelect","inputValue","handleOnFocus","opened","handleOnFilter","selected","searchOnDropdown","handleOnKeydown","searchNotFoundText","idKey","selectFieldRef","onEndReached","onEndReachedThreshold","itemsCount","dropdownDynamicStyles","setDropdownDynamicStyles","useState","helper","useEffect","current","useScrollEndReached","elementRef","length","left","top","width","marginLeft","paddingLeft","maxHeight","e","target","value","map","item","disabled","some","s","itemSelected","Boolean","iconName","order"],"mappings":"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"}
@@ -28,7 +28,8 @@ const MultipleSelect = (props) => {
28
28
  disabled = false,
29
29
  dropdownMaxWidth = void 0,
30
30
  onEndReached,
31
- onEndReachedThreshold
31
+ onEndReachedThreshold,
32
+ itemsCount
32
33
  } = props;
33
34
  const [dataCombo, setDataCombo] = useState(dataSource);
34
35
  const [currents, setCurrents] = useState([]);
@@ -227,7 +228,7 @@ const MultipleSelect = (props) => {
227
228
  if (shouldDisable()) return null;
228
229
  return onClearClick();
229
230
  }, handlerOpenClose: onOpenClose, customClassForSideButtons }, "action-buttons-multiselect")], children: /* @__PURE__ */ jsx(Selecteds, { ...props, currents, handlerOnUnselect: onUnselect }) }),
230
- opened && /* @__PURE__ */ jsx(Dropdown, { ...props, selected, selectFieldRef: componentRef, dropdownRef, gridWrapperStyle: props.gridLayout && gridElRef.current ? window.getComputedStyle(gridElRef.current) : void 0, handleOnSelect: onSelect, handleOnFilter: onFilter, handleOnKeydown: onInputKeyDown, handleOnBlur: () => onBlur, handleOnFocus: onFocus, opened, dataCombo, currents, dropdownWidth: dropdownMaxWidth || dropdownWidth || 0, onEndReached, onEndReachedThreshold }),
231
+ opened && /* @__PURE__ */ jsx(Dropdown, { ...props, selected, selectFieldRef: componentRef, dropdownRef, gridWrapperStyle: props.gridLayout && gridElRef.current ? window.getComputedStyle(gridElRef.current) : void 0, handleOnSelect: onSelect, handleOnFilter: onFilter, handleOnKeydown: onInputKeyDown, handleOnBlur: () => onBlur, handleOnFocus: onFocus, opened, dataCombo, currents, dropdownWidth: dropdownMaxWidth || dropdownWidth || 0, onEndReached, onEndReachedThreshold, itemsCount }),
231
232
  /* @__PURE__ */ jsx(Hint, { visible: !!hint && hintPosition === "below", customClass: "hint", description: hint })
232
233
  ] });
233
234
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/lib/inputs/select/multiple/index.tsx"],"sourcesContent":["import { KeyboardEvent, useEffect, useRef, useState } from 'react';\nimport _ from 'lodash';\nimport * as uuid from 'uuid';\nimport Dropdown from '../Dropdown';\nimport ActionButtons from '../ActionButtons';\nimport Selecteds from './Selecteds';\nimport * as constants from '../../../internals/constants';\nimport InputTextBase from '../../base/InputTextBase';\nimport { getFilteredMultipleDataCombo } from '../helper';\nimport { OnDenied } from '../../../@types/PermissionAttr';\nimport { DataCombo } from '../../../@types/DataCombo';\nimport { IMultipleSelectProps } from '../types';\nimport { CustomInputEvent } from '../../base/types';\nimport Hint from '../../../hint';\n\nconst MultipleSelect = (props: IMultipleSelectProps) => {\n const {\n idKey, dataSource = [], handlerClear, value = [], remoteSearch = false, descriptionKey,\n showClearButton, rightElements = [], hint, hintPosition = 'below', customClassForLabel,\n customClassForWrapper, customClassForInputContent, customClassForSideButtons, disabled = false,\n dropdownMaxWidth = undefined, onEndReached, onEndReachedThreshold,\n } = props;\n const [dataCombo, setDataCombo] = useState(dataSource);\n const [currents, setCurrents] = useState<DataCombo[]>([]);\n const [selected, setSelected] = useState<DataCombo>();\n const [inputValue, setInputValue] = useState<string[] | number[]>([]);\n const [opened, setOpened] = useState(false);\n const [dropdownWidth, setDropdownWidth] = useState(0);\n const [insideComponent, setInsideComponent] = useState(false);\n const [onDenied, setOnDeniedSelect] = useState<OnDenied>();\n const [valueFromProps, setValueFromProps] = useState<string[] | number[]>([]);\n\n const componentId = `select-component${uuid.v1()}`;\n const componentRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLInputElement>(null);\n const selectWrapper = useRef<HTMLDivElement | HTMLTextAreaElement>(null);\n const gridElRef = useRef<Element>(null);\n const inputTextRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n const descriptionKeyIsString = typeof descriptionKey === 'string';\n const insideComponents =\n ['item', 'menubutton', 'filterinput', 'filtercontainer', 'label', 'actionbutton'];\n\n const onScreenResize = () => {\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onClickOutside = (event: MouseEvent) => {\n const { target } = event;\n if (!insideComponents.includes((target as Element).className) &&\n target !== selectWrapper.current && selectWrapper.current &&\n !selectWrapper.current.contains(target as Node) &&\n dropdownRef.current && !dropdownRef.current.contains(target as Node)) {\n setOpened(false);\n }\n };\n\n const onMouseMove = (event: MouseEvent) => {\n const target = event.target as Element;\n const idDropdown = dropdownRef.current?.parentElement?.id || '';\n const dropdownElement = document.getElementById(idDropdown);\n const keepDropdownOpen = Boolean(dropdownElement?.contains(target));\n setInsideComponent(keepDropdownOpen);\n };\n\n const onClearClick = () => {\n setSelected(undefined);\n setCurrents([]);\n if (props.onSelect) props.onSelect();\n };\n\n const onFilter = (filteredValue: string) => {\n let selectedFilter = null;\n if (remoteSearch) {\n if (props.onSearch) props.onSearch(filteredValue);\n setOpened(true);\n setInputValue([filteredValue]);\n } else {\n let dataComboFilter = dataSource;\n if (filteredValue.length > 0) {\n dataComboFilter = getFilteredMultipleDataCombo({\n inputText: [filteredValue],\n dataSource,\n descriptionKey,\n currents,\n });\n }\n if (dataComboFilter && dataComboFilter.length > 0) selectedFilter = dataComboFilter[0];\n setDataCombo(dataComboFilter);\n setOpened(true);\n if (selectedFilter) setSelected(selectedFilter);\n setInputValue([filteredValue]);\n }\n };\n\n const onFocus = () => {\n const dropdownWidthFocus =\n selectWrapper.current ? selectWrapper.current.clientWidth : dropdownWidth;\n setOpened(true);\n setDropdownWidth(dropdownWidthFocus);\n };\n\n const onSelect = (select: DataCombo) => {\n if (select === null) return;\n const currentsSelect = [...currents, select];\n\n setCurrents(currentsSelect);\n setDataCombo(dataSource);\n setInputValue([]);\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n if (props.onSelect) setSelected(props.onSelect(currentsSelect.map(i => i[idKey])));\n dropdownRef.current?.focus();\n };\n\n const onUnselect = (id: string) => {\n if (currents) {\n const result = currents.filter(item => item[idKey] !== id);\n setCurrents(result);\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n setOpened(false);\n if (props.onSelect) setSelected(props.onSelect(result.map(i => i[idKey])));\n dropdownRef.current?.focus();\n }\n };\n\n const onOpenClose = () => {\n setOpened(prevState => !prevState);\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onBlur = (e: CustomInputEvent) => {\n if (props.onBlur) props.onBlur(e);\n if (selected && opened) {\n onSelect(selected);\n }\n if (!insideComponent) {\n setOpened(false);\n setDataCombo(dataSource);\n }\n };\n\n const onInputKeyDown = (e: CustomInputEvent | KeyboardEvent) => {\n if (e.keyCode) {\n if ((e.keyCode === constants.keyCodes.ENTER || e.key === constants.keys.TAB) \n && selected && opened) {\n if (e.keyCode === constants.keyCodes.ENTER) e.preventDefault?.();\n if (!currents.some(current => current[idKey] === selected[idKey])) {\n onSelect(selected);\n }\n } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {\n if (!opened) setOpened(true);\n let index = dataCombo ? dataCombo.findIndex(d => d === selected) : 0;\n if (e.keyCode === constants.keyCodes.ARROW_DOWN) {\n index = (dataCombo && index === dataCombo.length - 1 ? 0 : index + 1);\n } else {\n index = (dataCombo && index === 0 ? dataCombo.length - 1 : index - 1);\n }\n if (dataCombo && dataCombo.length) {\n if (descriptionKeyIsString && dataCombo[index][descriptionKey]) {\n setInputValue(dataCombo[index][descriptionKey]);\n } else if (!descriptionKeyIsString) setInputValue([descriptionKey(dataCombo[index])]);\n }\n if (dataCombo) setSelected(dataCombo[index]);\n } else if (e.keyCode === constants.keyCodes.BACKSPACE) {\n if (inputValue.length === 0) {\n const currentsKeyDown = _.dropRight(currents);\n setCurrents(currentsKeyDown);\n if (props.onSelect) props.onSelect(currentsKeyDown.map(i => i[idKey]));\n }\n } else if (e.keyCode === constants.keyCodes.TAB) {\n setOpened(false);\n }\n }\n };\n\n const setOnDenied = (denied: OnDenied) => {\n setOnDeniedSelect(denied);\n };\n\n const shouldDisable = () =>\n disabled ||\n (onDenied && (onDenied.disabled || onDenied.hideContent));\n\n const shouldBeReadOnly = () => props.readOnly || (onDenied && (onDenied.readOnly));\n\n useEffect(() => {\n window.addEventListener('resize', onScreenResize);\n document.addEventListener('click', onClickOutside);\n document.addEventListener('mousemove', onMouseMove);\n if (handlerClear) onClearClick();\n\n return () => {\n window.removeEventListener('resize', onScreenResize);\n document.removeEventListener('click', onClickOutside);\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, []);\n\n useEffect(() => {\n if (props.gridLayout) {\n const gridEl = document.querySelector(`#${componentId}>.-withinput.grid-container`);\n if (gridElRef.current !== gridEl && gridEl) gridElRef.current = gridEl;\n }\n }, []);\n\n useEffect(() => {\n if (value.length > 0 && value !== valueFromProps && dataSource.length > 0) {\n const newCurrents = dataSource.filter((item: { [id: string]: string }) =>\n value.includes(item[idKey] as never));\n\n setValueFromProps(value);\n setCurrents(newCurrents);\n }\n }, [dataSource.length, value.length]);\n\n useEffect(() => {\n if (!_.isEqual(dataSource, dataCombo)) {\n const filteredDataCombo = remoteSearch\n ? dataSource\n : getFilteredMultipleDataCombo({\n currents, dataSource, descriptionKey, inputText: inputValue,\n });\n\n setDataCombo(filteredDataCombo);\n setSelected(filteredDataCombo.length > 0 ? dataCombo[0] : null);\n }\n }, [dataSource]);\n\n return (\n <span\n id={componentId}\n ref={componentRef}\n className=\"select-component\">\n <InputTextBase\n {...props}\n inputRef={(ref) => {\n if (props.inputRef) {\n if (!_.isFunction(props.inputRef)) {\n props.inputRef.current = ref;\n } else {\n props.inputRef(ref);\n }\n }\n inputTextRef.current = ref;\n }}\n autoComplete=\"off\"\n value={inputValue.toString()}\n readOnly={shouldBeReadOnly()}\n onFocus={() => { onFocus(); }}\n onBlur={(e: CustomInputEvent) => { onBlur(e); }}\n onChange={(e?: CustomInputEvent) => {\n if (e) onFilter(e.target.value);\n }}\n onClick={onFocus}\n onKeyDown={onInputKeyDown}\n customClassForLabel={customClassForLabel}\n customClassForWrapper={\n `selectwrapper ${(props.readOnly || shouldDisable() || shouldBeReadOnly()) && ' -undigitable'} ${customClassForWrapper}`\n }\n customClassForInputContent={`multiselect ${customClassForInputContent}`}\n inputBaseRef={(r: HTMLDivElement | HTMLTextAreaElement) => { selectWrapper.current = r; }}\n handlerSetOnDenied={setOnDenied}\n rightElements={[\n ...rightElements,\n <ActionButtons\n key=\"action-buttons-multiselect\"\n showClearButton={showClearButton}\n disabled={shouldDisable() || shouldBeReadOnly()}\n dropDownOpened={opened}\n handlerClear={() => {\n if (shouldDisable()) return null;\n return onClearClick();\n }}\n handlerOpenClose={onOpenClose}\n customClassForSideButtons={customClassForSideButtons} />,\n ]}>\n <Selecteds\n {...props}\n currents={currents}\n handlerOnUnselect={onUnselect} />\n </InputTextBase>\n {opened &&\n <Dropdown\n {...props}\n selected={selected}\n selectFieldRef={componentRef}\n dropdownRef={dropdownRef}\n gridWrapperStyle={props.gridLayout && gridElRef.current\n ? window.getComputedStyle(gridElRef.current)\n : undefined}\n handleOnSelect={onSelect}\n handleOnFilter={onFilter}\n handleOnKeydown={onInputKeyDown}\n handleOnBlur={() => onBlur}\n handleOnFocus={onFocus}\n opened={opened}\n dataCombo={dataCombo}\n currents={currents}\n dropdownWidth={dropdownMaxWidth || dropdownWidth || 0}\n onEndReached={onEndReached}\n onEndReachedThreshold={onEndReachedThreshold} />\n }\n <Hint visible={!!hint && hintPosition === 'below'} customClass=\"hint\" description={hint} />\n </span>\n );\n};\n\nexport default MultipleSelect;\n"],"names":["MultipleSelect","props","idKey","dataSource","handlerClear","value","remoteSearch","descriptionKey","showClearButton","rightElements","hint","hintPosition","customClassForLabel","customClassForWrapper","customClassForInputContent","customClassForSideButtons","disabled","dropdownMaxWidth","undefined","onEndReached","onEndReachedThreshold","dataCombo","setDataCombo","useState","currents","setCurrents","selected","setSelected","inputValue","setInputValue","opened","setOpened","dropdownWidth","setDropdownWidth","insideComponent","setInsideComponent","onDenied","setOnDeniedSelect","valueFromProps","setValueFromProps","componentId","uuid","v1","componentRef","useRef","dropdownRef","selectWrapper","gridElRef","inputTextRef","descriptionKeyIsString","insideComponents","onScreenResize","current","clientWidth","onClickOutside","event","target","includes","className","contains","onMouseMove","idDropdown","parentElement","id","dropdownElement","document","getElementById","keepDropdownOpen","Boolean","onClearClick","onSelect","onFilter","filteredValue","selectedFilter","onSearch","dataComboFilter","length","getFilteredMultipleDataCombo","inputText","onFocus","dropdownWidthFocus","select","currentsSelect","focus","map","i","onUnselect","result","filter","item","onOpenClose","prevState","onBlur","e","onInputKeyDown","keyCode","constants","ENTER","key","TAB","preventDefault","some","ARROW_UP","ARROW_DOWN","index","findIndex","d","BACKSPACE","currentsKeyDown","_","dropRight","setOnDenied","denied","shouldDisable","hideContent","shouldBeReadOnly","readOnly","useEffect","window","addEventListener","removeEventListener","gridLayout","gridEl","querySelector","newCurrents","isEqual","filteredDataCombo","ref","inputRef","isFunction","toString","r","getComputedStyle"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/lib/inputs/select/multiple/index.tsx"],"sourcesContent":["import { KeyboardEvent, useEffect, useRef, useState } from 'react';\nimport _ from 'lodash';\nimport * as uuid from 'uuid';\nimport Dropdown from '../Dropdown';\nimport ActionButtons from '../ActionButtons';\nimport Selecteds from './Selecteds';\nimport * as constants from '../../../internals/constants';\nimport InputTextBase from '../../base/InputTextBase';\nimport { getFilteredMultipleDataCombo } from '../helper';\nimport { OnDenied } from '../../../@types/PermissionAttr';\nimport { DataCombo } from '../../../@types/DataCombo';\nimport { IMultipleSelectProps } from '../types';\nimport { CustomInputEvent } from '../../base/types';\nimport Hint from '../../../hint';\n\nconst MultipleSelect = (props: IMultipleSelectProps) => {\n const {\n idKey, dataSource = [], handlerClear, value = [], remoteSearch = false, descriptionKey,\n showClearButton, rightElements = [], hint, hintPosition = 'below', customClassForLabel,\n customClassForWrapper, customClassForInputContent, customClassForSideButtons, disabled = false,\n dropdownMaxWidth = undefined, onEndReached, onEndReachedThreshold, itemsCount,\n } = props;\n const [dataCombo, setDataCombo] = useState(dataSource);\n const [currents, setCurrents] = useState<DataCombo[]>([]);\n const [selected, setSelected] = useState<DataCombo>();\n const [inputValue, setInputValue] = useState<string[] | number[]>([]);\n const [opened, setOpened] = useState(false);\n const [dropdownWidth, setDropdownWidth] = useState(0);\n const [insideComponent, setInsideComponent] = useState(false);\n const [onDenied, setOnDeniedSelect] = useState<OnDenied>();\n const [valueFromProps, setValueFromProps] = useState<string[] | number[]>([]);\n\n const componentId = `select-component${uuid.v1()}`;\n const componentRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLInputElement>(null);\n const selectWrapper = useRef<HTMLDivElement | HTMLTextAreaElement>(null);\n const gridElRef = useRef<Element>(null);\n const inputTextRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n const descriptionKeyIsString = typeof descriptionKey === 'string';\n const insideComponents =\n ['item', 'menubutton', 'filterinput', 'filtercontainer', 'label', 'actionbutton'];\n\n const onScreenResize = () => {\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onClickOutside = (event: MouseEvent) => {\n const { target } = event;\n if (!insideComponents.includes((target as Element).className) &&\n target !== selectWrapper.current && selectWrapper.current &&\n !selectWrapper.current.contains(target as Node) &&\n dropdownRef.current && !dropdownRef.current.contains(target as Node)) {\n setOpened(false);\n }\n };\n\n const onMouseMove = (event: MouseEvent) => {\n const target = event.target as Element;\n const idDropdown = dropdownRef.current?.parentElement?.id || '';\n const dropdownElement = document.getElementById(idDropdown);\n const keepDropdownOpen = Boolean(dropdownElement?.contains(target));\n setInsideComponent(keepDropdownOpen);\n };\n\n const onClearClick = () => {\n setSelected(undefined);\n setCurrents([]);\n if (props.onSelect) props.onSelect();\n };\n\n const onFilter = (filteredValue: string) => {\n let selectedFilter = null;\n if (remoteSearch) {\n if (props.onSearch) props.onSearch(filteredValue);\n setOpened(true);\n setInputValue([filteredValue]);\n } else {\n let dataComboFilter = dataSource;\n if (filteredValue.length > 0) {\n dataComboFilter = getFilteredMultipleDataCombo({\n inputText: [filteredValue],\n dataSource,\n descriptionKey,\n currents,\n });\n }\n if (dataComboFilter && dataComboFilter.length > 0) selectedFilter = dataComboFilter[0];\n setDataCombo(dataComboFilter);\n setOpened(true);\n if (selectedFilter) setSelected(selectedFilter);\n setInputValue([filteredValue]);\n }\n };\n\n const onFocus = () => {\n const dropdownWidthFocus =\n selectWrapper.current ? selectWrapper.current.clientWidth : dropdownWidth;\n setOpened(true);\n setDropdownWidth(dropdownWidthFocus);\n };\n\n const onSelect = (select: DataCombo) => {\n if (select === null) return;\n const currentsSelect = [...currents, select];\n\n setCurrents(currentsSelect);\n setDataCombo(dataSource);\n setInputValue([]);\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n if (props.onSelect) setSelected(props.onSelect(currentsSelect.map(i => i[idKey])));\n dropdownRef.current?.focus();\n };\n\n const onUnselect = (id: string) => {\n if (currents) {\n const result = currents.filter(item => item[idKey] !== id);\n setCurrents(result);\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n setOpened(false);\n if (props.onSelect) setSelected(props.onSelect(result.map(i => i[idKey])));\n dropdownRef.current?.focus();\n }\n };\n\n const onOpenClose = () => {\n setOpened(prevState => !prevState);\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onBlur = (e: CustomInputEvent) => {\n if (props.onBlur) props.onBlur(e);\n if (selected && opened) {\n onSelect(selected);\n }\n if (!insideComponent) {\n setOpened(false);\n setDataCombo(dataSource);\n }\n };\n\n const onInputKeyDown = (e: CustomInputEvent | KeyboardEvent) => {\n if (e.keyCode) {\n if ((e.keyCode === constants.keyCodes.ENTER || e.key === constants.keys.TAB) \n && selected && opened) {\n if (e.keyCode === constants.keyCodes.ENTER) e.preventDefault?.();\n if (!currents.some(current => current[idKey] === selected[idKey])) {\n onSelect(selected);\n }\n } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {\n if (!opened) setOpened(true);\n let index = dataCombo ? dataCombo.findIndex(d => d === selected) : 0;\n if (e.keyCode === constants.keyCodes.ARROW_DOWN) {\n index = (dataCombo && index === dataCombo.length - 1 ? 0 : index + 1);\n } else {\n index = (dataCombo && index === 0 ? dataCombo.length - 1 : index - 1);\n }\n if (dataCombo && dataCombo.length) {\n if (descriptionKeyIsString && dataCombo[index][descriptionKey]) {\n setInputValue(dataCombo[index][descriptionKey]);\n } else if (!descriptionKeyIsString) setInputValue([descriptionKey(dataCombo[index])]);\n }\n if (dataCombo) setSelected(dataCombo[index]);\n } else if (e.keyCode === constants.keyCodes.BACKSPACE) {\n if (inputValue.length === 0) {\n const currentsKeyDown = _.dropRight(currents);\n setCurrents(currentsKeyDown);\n if (props.onSelect) props.onSelect(currentsKeyDown.map(i => i[idKey]));\n }\n } else if (e.keyCode === constants.keyCodes.TAB) {\n setOpened(false);\n }\n }\n };\n\n const setOnDenied = (denied: OnDenied) => {\n setOnDeniedSelect(denied);\n };\n\n const shouldDisable = () =>\n disabled ||\n (onDenied && (onDenied.disabled || onDenied.hideContent));\n\n const shouldBeReadOnly = () => props.readOnly || (onDenied && (onDenied.readOnly));\n\n useEffect(() => {\n window.addEventListener('resize', onScreenResize);\n document.addEventListener('click', onClickOutside);\n document.addEventListener('mousemove', onMouseMove);\n if (handlerClear) onClearClick();\n\n return () => {\n window.removeEventListener('resize', onScreenResize);\n document.removeEventListener('click', onClickOutside);\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, []);\n\n useEffect(() => {\n if (props.gridLayout) {\n const gridEl = document.querySelector(`#${componentId}>.-withinput.grid-container`);\n if (gridElRef.current !== gridEl && gridEl) gridElRef.current = gridEl;\n }\n }, []);\n\n useEffect(() => {\n if (value.length > 0 && value !== valueFromProps && dataSource.length > 0) {\n const newCurrents = dataSource.filter((item: { [id: string]: string }) =>\n value.includes(item[idKey] as never));\n\n setValueFromProps(value);\n setCurrents(newCurrents);\n }\n }, [dataSource.length, value.length]);\n\n useEffect(() => {\n if (!_.isEqual(dataSource, dataCombo)) {\n const filteredDataCombo = remoteSearch\n ? dataSource\n : getFilteredMultipleDataCombo({\n currents, dataSource, descriptionKey, inputText: inputValue,\n });\n\n setDataCombo(filteredDataCombo);\n setSelected(filteredDataCombo.length > 0 ? dataCombo[0] : null);\n }\n }, [dataSource]);\n\n return (\n <span\n id={componentId}\n ref={componentRef}\n className=\"select-component\">\n <InputTextBase\n {...props}\n inputRef={(ref) => {\n if (props.inputRef) {\n if (!_.isFunction(props.inputRef)) {\n props.inputRef.current = ref;\n } else {\n props.inputRef(ref);\n }\n }\n inputTextRef.current = ref;\n }}\n autoComplete=\"off\"\n value={inputValue.toString()}\n readOnly={shouldBeReadOnly()}\n onFocus={() => { onFocus(); }}\n onBlur={(e: CustomInputEvent) => { onBlur(e); }}\n onChange={(e?: CustomInputEvent) => {\n if (e) onFilter(e.target.value);\n }}\n onClick={onFocus}\n onKeyDown={onInputKeyDown}\n customClassForLabel={customClassForLabel}\n customClassForWrapper={\n `selectwrapper ${(props.readOnly || shouldDisable() || shouldBeReadOnly()) && ' -undigitable'} ${customClassForWrapper}`\n }\n customClassForInputContent={`multiselect ${customClassForInputContent}`}\n inputBaseRef={(r: HTMLDivElement | HTMLTextAreaElement) => { selectWrapper.current = r; }}\n handlerSetOnDenied={setOnDenied}\n rightElements={[\n ...rightElements,\n <ActionButtons\n key=\"action-buttons-multiselect\"\n showClearButton={showClearButton}\n disabled={shouldDisable() || shouldBeReadOnly()}\n dropDownOpened={opened}\n handlerClear={() => {\n if (shouldDisable()) return null;\n return onClearClick();\n }}\n handlerOpenClose={onOpenClose}\n customClassForSideButtons={customClassForSideButtons} />,\n ]}>\n <Selecteds\n {...props}\n currents={currents}\n handlerOnUnselect={onUnselect} />\n </InputTextBase>\n {opened &&\n <Dropdown\n {...props}\n selected={selected}\n selectFieldRef={componentRef}\n dropdownRef={dropdownRef}\n gridWrapperStyle={props.gridLayout && gridElRef.current\n ? window.getComputedStyle(gridElRef.current)\n : undefined}\n handleOnSelect={onSelect}\n handleOnFilter={onFilter}\n handleOnKeydown={onInputKeyDown}\n handleOnBlur={() => onBlur}\n handleOnFocus={onFocus}\n opened={opened}\n dataCombo={dataCombo}\n currents={currents}\n dropdownWidth={dropdownMaxWidth || dropdownWidth || 0}\n onEndReached={onEndReached}\n onEndReachedThreshold={onEndReachedThreshold}\n itemsCount={itemsCount} />\n }\n <Hint visible={!!hint && hintPosition === 'below'} customClass=\"hint\" description={hint} />\n </span>\n );\n};\n\nexport default MultipleSelect;\n"],"names":["MultipleSelect","props","idKey","dataSource","handlerClear","value","remoteSearch","descriptionKey","showClearButton","rightElements","hint","hintPosition","customClassForLabel","customClassForWrapper","customClassForInputContent","customClassForSideButtons","disabled","dropdownMaxWidth","undefined","onEndReached","onEndReachedThreshold","itemsCount","dataCombo","setDataCombo","useState","currents","setCurrents","selected","setSelected","inputValue","setInputValue","opened","setOpened","dropdownWidth","setDropdownWidth","insideComponent","setInsideComponent","onDenied","setOnDeniedSelect","valueFromProps","setValueFromProps","componentId","uuid","v1","componentRef","useRef","dropdownRef","selectWrapper","gridElRef","inputTextRef","descriptionKeyIsString","insideComponents","onScreenResize","current","clientWidth","onClickOutside","event","target","includes","className","contains","onMouseMove","idDropdown","parentElement","id","dropdownElement","document","getElementById","keepDropdownOpen","Boolean","onClearClick","onSelect","onFilter","filteredValue","selectedFilter","onSearch","dataComboFilter","length","getFilteredMultipleDataCombo","inputText","onFocus","dropdownWidthFocus","select","currentsSelect","focus","map","i","onUnselect","result","filter","item","onOpenClose","prevState","onBlur","e","onInputKeyDown","keyCode","constants","ENTER","key","TAB","preventDefault","some","ARROW_UP","ARROW_DOWN","index","findIndex","d","BACKSPACE","currentsKeyDown","_","dropRight","setOnDenied","denied","shouldDisable","hideContent","shouldBeReadOnly","readOnly","useEffect","window","addEventListener","removeEventListener","gridLayout","gridEl","querySelector","newCurrents","isEqual","filteredDataCombo","ref","inputRef","isFunction","toString","r","getComputedStyle"],"mappings":"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"}
@@ -33,7 +33,8 @@ const SimpleSelect = (props) => {
33
33
  customClassForSideButtons,
34
34
  dropdownMaxWidth = void 0,
35
35
  onEndReached,
36
- onEndReachedThreshold
36
+ onEndReachedThreshold,
37
+ itemsCount
37
38
  } = props;
38
39
  const descriptionKeyIsString = typeof descriptionKey === "string";
39
40
  const dataSourceWithAllOptions = allOptions ? [{
@@ -260,7 +261,7 @@ const SimpleSelect = (props) => {
260
261
  }, handlerOpenClose: onOpenClose, customClassForSideButtons }, "action-buttons-simpleselect")] }),
261
262
  opened && /* @__PURE__ */ jsx(Dropdown, { ...props, opened, selected, inputValue: inputText, selectFieldRef: componentRef, dropdownRef, searchOnDropdown, gridWrapperStyle: gridLayout && gridElement.current ? window.getComputedStyle(gridElement.current) : void 0, handleOnSelect: (dataSelected) => {
262
263
  if (dataSelected) onSelect(dataSelected);
263
- }, handleOnFilter: (valueFilter_0) => onFilter(valueFilter_0), handleOnKeydown: onInputKeyDown, handleOnBlur: () => onBlur, handleOnFocus: onFocus, dataCombo, searchNotFoundText, dropdownWidth: dropdownMaxWidth || dropdownWidth || 0, onEndReached, onEndReachedThreshold })
264
+ }, handleOnFilter: (valueFilter_0) => onFilter(valueFilter_0), handleOnKeydown: onInputKeyDown, handleOnBlur: () => onBlur, handleOnFocus: onFocus, dataCombo, searchNotFoundText, dropdownWidth: dropdownMaxWidth || dropdownWidth || 0, onEndReached, onEndReachedThreshold, itemsCount })
264
265
  ] });
265
266
  };
266
267
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/lib/inputs/select/simple/index.tsx"],"sourcesContent":["import { KeyboardEvent as KeyboardEventReact, useEffect, useRef, useState } from 'react';\nimport * as uuid from 'uuid';\nimport _ from 'lodash';\nimport Dropdown from '../Dropdown';\nimport ActionButtons from '../ActionButtons';\nimport * as constants from '../../../internals/constants';\nimport { getFilteredSimpleDataCombo } from '../helper';\nimport { DataCombo } from '../../../@types/DataCombo';\nimport { OnDenied } from '../../../@types/PermissionAttr';\nimport InputTextBase from '../../base/InputTextBase';\nimport { ISimpleSelectProps } from '../types';\nimport { CustomInputEvent } from '../../base/types';\n\nconst SimpleSelect = (props: ISimpleSelectProps) => {\n const {\n value, descriptionKey, dataSource = [], gridLayout, onSearch, disabled, readOnly,\n openDropdownOnFocus = true, selectFirstOnEnter = false, idKey, remoteSearch = false, name = '',\n undigitable, searchOnDropdown = false, allOptions = undefined, showClearButton = false,\n searchNotFoundText, rightElements = [], customClassForWrapper, customClassForInputContent, \n customClassForLabel, customClassForSideButtons, dropdownMaxWidth = undefined,\n onEndReached, onEndReachedThreshold,\n } = props;\n\n const descriptionKeyIsString = typeof descriptionKey === 'string';\n const dataSourceWithAllOptions = allOptions\n ? [{\n [idKey]: allOptions.idValue,\n [descriptionKeyIsString ?\n descriptionKey :\n descriptionKey(allOptions.label)]: allOptions.label,\n }, ...dataSource]\n : dataSource;\n const [dataCombo, setDataCombo] = useState<DataCombo[]>(dataSourceWithAllOptions);\n const [selected, setSelected] = useState<DataCombo | null>(null);\n const [inputText, setInputText] = useState('');\n const [opened, setOpened] = useState(false);\n const [dropdownWidth, setDropdownWidth] = useState(0);\n const [insideComponent, setInsideComponent] = useState(false);\n const [onDenied, setOnDeniedSelect] = useState<OnDenied>();\n const [isTyping, setIsTyping] = useState(false);\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const componentId = `select-component-${name}-${uuid.v1()}`;\n const componentRef = useRef<HTMLInputElement>(null);\n const selectWrapper = useRef<HTMLDivElement>(null);\n const gridElement = useRef<Element>(null);\n const inputTextRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n\n const onScreenResize = () => {\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onClickOutside = (event: MouseEvent) => {\n const { target } = event;\n if (target !== selectWrapper.current && !selectWrapper.current?.contains(target as Node) &&\n !dropdownRef.current?.contains(target as Node)) {\n setOpened(false);\n }\n };\n\n const onMouseMove = (event: MouseEvent) => {\n const target = event.target as Element;\n const idDropdown = dropdownRef.current?.parentElement?.id || '';\n const dropdownElement = document.getElementById(idDropdown);\n const keepDropdownOpen = Boolean(dropdownElement?.contains(target));\n setInsideComponent(keepDropdownOpen);\n };\n\n const getSelectEvent = (selectedEvent?: DataCombo) => (\n {\n target: {\n value: selectedEvent ? selectedEvent[idKey] : undefined,\n name,\n },\n }\n );\n\n const onChange = (selectedChange?: DataCombo) => {\n if (props.onChange) {\n const event = getSelectEvent(selectedChange);\n props.onChange(event);\n }\n };\n\n const onFilter = (valueFilter: string) => {\n let selectedFilter = null;\n if (remoteSearch) {\n if (onSearch) onSearch(valueFilter);\n } else {\n const dataComboFilter = getFilteredSimpleDataCombo({\n inputText: valueFilter,\n descriptionKey,\n dataSource: dataSourceWithAllOptions,\n });\n\n if (dataComboFilter && dataComboFilter.length > 0) {\n selectedFilter = dataComboFilter[0];\n setSelected(selectedFilter);\n }\n setDataCombo(dataComboFilter);\n }\n setOpened(true);\n setInputText(valueFilter);\n if (selectedFilter) {\n if ((descriptionKeyIsString && valueFilter === selectedFilter[descriptionKey])\n || (!descriptionKeyIsString && valueFilter === descriptionKey(selectedFilter))) {\n onChange(selectedFilter);\n }\n }\n };\n\n const onSelect = (selectedDropdown: DataCombo) => {\n if (!selectedDropdown) return;\n setSelected(selectedDropdown);\n\n if (descriptionKeyIsString) setInputText(selectedDropdown[descriptionKey]);\n else setInputText(descriptionKey(selectedDropdown));\n new Promise((resolve) => {\n resolve(onChange(selectedDropdown));\n }).finally(() => {\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n setOpened(false);\n });\n dropdownRef.current?.focus();\n };\n\n const onOpenClose = () => {\n setOpened(prevState => !prevState);\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onFocus = () => {\n if (openDropdownOnFocus) setOpened(true);\n if (selectWrapper) {\n const dropdownWidthFocus = selectWrapper.current ? selectWrapper.current.clientWidth : 0;\n setDropdownWidth(dropdownWidthFocus);\n }\n };\n\n const onBlur = () => {\n if (props.onBlur) {\n const event = getSelectEvent(selected);\n props.onBlur(event);\n if (selected && (descriptionKeyIsString && inputText !== selected[descriptionKey])\n || (!descriptionKeyIsString && inputText !== descriptionKey(selected))) {\n setSelected(null);\n setInputText(inputText);\n new Promise((resolve) => {\n resolve(onChange(null));\n }).finally(() => {\n onChange();\n });\n }\n }\n if (!insideComponent) {\n setOpened(false);\n setIsTyping(false);\n setDataCombo(dataSourceWithAllOptions);\n }\n };\n\n const onInputKeyDown = (e: CustomInputEvent | KeyboardEventReact) => {\n if (e.keyCode) {\n if ((e.keyCode === constants.keyCodes.ENTER || e.key === constants.keys.TAB) && \n selected && opened) {\n if (e.keyCode === constants.keyCodes.ENTER) e.preventDefault?.();\n onSelect(selected);\n } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {\n if (!opened) setOpened(true);\n let index = dataCombo.length > 0\n ? dataCombo.findIndex(d => selected &&\n d[idKey] === selected[idKey])\n : 0;\n if (e.keyCode === constants.keyCodes.ARROW_DOWN) {\n index = (dataCombo\n && index === dataCombo.length - 1\n ? 0\n : index + 1);\n } else {\n index = (dataCombo\n && index === 0\n ? dataCombo?.length - 1\n : index - 1);\n }\n setSelected(dataCombo[index]);\n if (descriptionKeyIsString) setInputText(dataCombo[index][descriptionKey]);\n if (!descriptionKeyIsString) setInputText(descriptionKey(dataCombo[index]));\n }\n }\n if (!isTyping) setIsTyping(true);\n };\n\n const onClearClick = () => {\n new Promise((resolve) => {\n resolve(onChange(null));\n }).finally(() => {\n setSelected(null);\n setInputText('');\n onChange();\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n setOpened(false);\n });\n };\n\n const setOnDenied = (onDeniedSelect: OnDenied) => {\n setOnDeniedSelect(onDeniedSelect);\n };\n\n const shouldDisable = () =>\n disabled || (onDenied && (onDenied.disabled || onDenied.hideContent));\n\n const shouldBeReadOnly = () => readOnly || (onDenied && (onDenied.readOnly));\n\n useEffect(() => {\n window.addEventListener('resize', onScreenResize);\n document.addEventListener('click', onClickOutside);\n document.addEventListener('mousemove', onMouseMove);\n\n return () => {\n window.removeEventListener('resize', onScreenResize);\n document.removeEventListener('click', onClickOutside);\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, []);\n\n useEffect(() => {\n if (gridLayout) {\n const gridEl = document.querySelector(`#${componentId}>.-withinput.grid-container`);\n if (gridElement.current !== gridEl && gridEl) gridElement.current = gridEl;\n }\n }, [gridLayout]);\n\n useEffect(() => {\n if (dataSourceWithAllOptions.length > 0) {\n let newCurrent = null;\n if (value || value === 0) {\n newCurrent = dataSourceWithAllOptions.find(i => (value || value === 0)\n && i[idKey]?.toString().toLowerCase() === value?.toString().toLowerCase());\n } else if (dataSourceWithAllOptions.length > 0 && selectFirstOnEnter) {\n newCurrent = dataSourceWithAllOptions[0];\n }\n\n setSelected(newCurrent);\n if (descriptionKeyIsString) setInputText(newCurrent ? newCurrent[descriptionKey] : '');\n else setInputText(newCurrent ? descriptionKey(newCurrent) : '');\n }\n\n if (dataSourceWithAllOptions.length === 0 && inputText) {\n setInputText('');\n }\n }, [dataSourceWithAllOptions.length, value]);\n\n useEffect(() => {\n if (!_.isEqual(dataCombo, dataSourceWithAllOptions)) {\n const dataComboFilteredSimple = (undigitable || remoteSearch || !isTyping) ?\n dataSourceWithAllOptions\n : getFilteredSimpleDataCombo({\n inputText, dataSource: dataSourceWithAllOptions, descriptionKey,\n });\n setDataCombo(dataComboFilteredSimple);\n if (dataSourceWithAllOptions.length > 0 && remoteSearch) {\n const data = dataSourceWithAllOptions[0];\n setSelected(data);\n }\n }\n\n if (allOptions) {\n setDataCombo([\n {\n [idKey]: allOptions.idValue,\n [descriptionKeyIsString ?\n descriptionKey :\n descriptionKey(allOptions.label)]: allOptions.label,\n },\n ...dataSource,\n ]);\n }\n }, [JSON.stringify(dataSourceWithAllOptions)]);\n\n return (\n <span\n id={componentId}\n ref={componentRef}\n className=\"select-component\">\n <InputTextBase\n {...props}\n inputRef={(ref) => {\n if (props.inputRef) {\n if (!_.isFunction(props.inputRef)) {\n props.inputRef.current = ref;\n } else {\n props.inputRef(ref);\n }\n }\n inputTextRef.current = ref;\n }}\n autoComplete=\"off\"\n readOnly={undigitable || shouldBeReadOnly()}\n value={inputText}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={(e?: CustomInputEvent) => {\n if (e) onFilter(e.target.value);\n }}\n onClick={onFocus}\n onKeyDown={onInputKeyDown}\n customClassForLabel={customClassForLabel}\n customClassForWrapper={\n `selectwrapper ${(undigitable || searchOnDropdown || shouldBeReadOnly()) && ' -undigitable'} ${customClassForWrapper}`\n }\n customClassForInputContent={`multiselect ${customClassForInputContent}`}\n inputBaseRef={(r: HTMLDivElement) => { selectWrapper.current = r; }}\n handlerSetOnDenied={(inputOnDenied: OnDenied) => setOnDenied(inputOnDenied)}\n rightElements={[\n ...rightElements,\n <ActionButtons\n key=\"action-buttons-simpleselect\"\n disabled={shouldDisable() || shouldBeReadOnly()}\n showClearButton={showClearButton}\n dropDownOpened={opened}\n handlerClear={() => {\n if (shouldDisable()) return null;\n return onClearClick();\n }}\n handlerOpenClose={onOpenClose}\n customClassForSideButtons={customClassForSideButtons} />,\n ]} />\n {opened &&\n <Dropdown\n {...props}\n opened={opened}\n selected={selected}\n inputValue={inputText}\n selectFieldRef={componentRef}\n dropdownRef={dropdownRef}\n searchOnDropdown={searchOnDropdown}\n gridWrapperStyle={gridLayout && gridElement.current ?\n window.getComputedStyle(gridElement.current)\n : undefined}\n handleOnSelect={(dataSelected?: DataCombo) => {\n if (dataSelected) onSelect(dataSelected);\n }}\n handleOnFilter={(valueFilter: string) => onFilter(valueFilter)}\n handleOnKeydown={onInputKeyDown}\n handleOnBlur={() => onBlur}\n handleOnFocus={onFocus}\n dataCombo={dataCombo}\n searchNotFoundText={searchNotFoundText}\n dropdownWidth={dropdownMaxWidth || dropdownWidth || 0}\n onEndReached={onEndReached}\n onEndReachedThreshold={onEndReachedThreshold} />\n }\n </span>\n );\n};\nexport default SimpleSelect;\n"],"names":["SimpleSelect","props","value","descriptionKey","dataSource","gridLayout","onSearch","disabled","readOnly","openDropdownOnFocus","selectFirstOnEnter","idKey","remoteSearch","name","undigitable","searchOnDropdown","allOptions","undefined","showClearButton","searchNotFoundText","rightElements","customClassForWrapper","customClassForInputContent","customClassForLabel","customClassForSideButtons","dropdownMaxWidth","onEndReached","onEndReachedThreshold","descriptionKeyIsString","dataSourceWithAllOptions","idValue","label","dataCombo","setDataCombo","useState","selected","setSelected","inputText","setInputText","opened","setOpened","dropdownWidth","setDropdownWidth","insideComponent","setInsideComponent","onDenied","setOnDeniedSelect","isTyping","setIsTyping","dropdownRef","useRef","componentId","uuid","componentRef","selectWrapper","gridElement","inputTextRef","onScreenResize","current","clientWidth","onClickOutside","event","target","contains","onMouseMove","idDropdown","parentElement","id","dropdownElement","document","getElementById","keepDropdownOpen","Boolean","getSelectEvent","selectedEvent","onChange","selectedChange","onFilter","valueFilter","selectedFilter","dataComboFilter","getFilteredSimpleDataCombo","length","onSelect","selectedDropdown","Promise","resolve","finally","focus","onOpenClose","prevState","onFocus","dropdownWidthFocus","onBlur","onInputKeyDown","e","keyCode","constants","ENTER","key","TAB","preventDefault","ARROW_UP","ARROW_DOWN","includes","index","findIndex","d","onClearClick","setOnDenied","onDeniedSelect","shouldDisable","hideContent","shouldBeReadOnly","useEffect","window","addEventListener","removeEventListener","gridEl","querySelector","newCurrent","find","i","toString","toLowerCase","_","isEqual","dataComboFilteredSimple","data","JSON","stringify","ref","inputRef","isFunction","r","inputOnDenied","getComputedStyle","dataSelected"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/lib/inputs/select/simple/index.tsx"],"sourcesContent":["import { KeyboardEvent as KeyboardEventReact, useEffect, useRef, useState } from 'react';\nimport * as uuid from 'uuid';\nimport _ from 'lodash';\nimport Dropdown from '../Dropdown';\nimport ActionButtons from '../ActionButtons';\nimport * as constants from '../../../internals/constants';\nimport { getFilteredSimpleDataCombo } from '../helper';\nimport { DataCombo } from '../../../@types/DataCombo';\nimport { OnDenied } from '../../../@types/PermissionAttr';\nimport InputTextBase from '../../base/InputTextBase';\nimport { ISimpleSelectProps } from '../types';\nimport { CustomInputEvent } from '../../base/types';\n\nconst SimpleSelect = (props: ISimpleSelectProps) => {\n const {\n value, descriptionKey, dataSource = [], gridLayout, onSearch, disabled, readOnly,\n openDropdownOnFocus = true, selectFirstOnEnter = false, idKey, remoteSearch = false, name = '',\n undigitable, searchOnDropdown = false, allOptions = undefined, showClearButton = false,\n searchNotFoundText, rightElements = [], customClassForWrapper, customClassForInputContent, \n customClassForLabel, customClassForSideButtons, dropdownMaxWidth = undefined,\n onEndReached, onEndReachedThreshold, itemsCount,\n } = props;\n\n const descriptionKeyIsString = typeof descriptionKey === 'string';\n const dataSourceWithAllOptions = allOptions\n ? [{\n [idKey]: allOptions.idValue,\n [descriptionKeyIsString ?\n descriptionKey :\n descriptionKey(allOptions.label)]: allOptions.label,\n }, ...dataSource]\n : dataSource;\n const [dataCombo, setDataCombo] = useState<DataCombo[]>(dataSourceWithAllOptions);\n const [selected, setSelected] = useState<DataCombo | null>(null);\n const [inputText, setInputText] = useState('');\n const [opened, setOpened] = useState(false);\n const [dropdownWidth, setDropdownWidth] = useState(0);\n const [insideComponent, setInsideComponent] = useState(false);\n const [onDenied, setOnDeniedSelect] = useState<OnDenied>();\n const [isTyping, setIsTyping] = useState(false);\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const componentId = `select-component-${name}-${uuid.v1()}`;\n const componentRef = useRef<HTMLInputElement>(null);\n const selectWrapper = useRef<HTMLDivElement>(null);\n const gridElement = useRef<Element>(null);\n const inputTextRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n\n const onScreenResize = () => {\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onClickOutside = (event: MouseEvent) => {\n const { target } = event;\n if (target !== selectWrapper.current && !selectWrapper.current?.contains(target as Node) &&\n !dropdownRef.current?.contains(target as Node)) {\n setOpened(false);\n }\n };\n\n const onMouseMove = (event: MouseEvent) => {\n const target = event.target as Element;\n const idDropdown = dropdownRef.current?.parentElement?.id || '';\n const dropdownElement = document.getElementById(idDropdown);\n const keepDropdownOpen = Boolean(dropdownElement?.contains(target));\n setInsideComponent(keepDropdownOpen);\n };\n\n const getSelectEvent = (selectedEvent?: DataCombo) => (\n {\n target: {\n value: selectedEvent ? selectedEvent[idKey] : undefined,\n name,\n },\n }\n );\n\n const onChange = (selectedChange?: DataCombo) => {\n if (props.onChange) {\n const event = getSelectEvent(selectedChange);\n props.onChange(event);\n }\n };\n\n const onFilter = (valueFilter: string) => {\n let selectedFilter = null;\n if (remoteSearch) {\n if (onSearch) onSearch(valueFilter);\n } else {\n const dataComboFilter = getFilteredSimpleDataCombo({\n inputText: valueFilter,\n descriptionKey,\n dataSource: dataSourceWithAllOptions,\n });\n\n if (dataComboFilter && dataComboFilter.length > 0) {\n selectedFilter = dataComboFilter[0];\n setSelected(selectedFilter);\n }\n setDataCombo(dataComboFilter);\n }\n setOpened(true);\n setInputText(valueFilter);\n if (selectedFilter) {\n if ((descriptionKeyIsString && valueFilter === selectedFilter[descriptionKey])\n || (!descriptionKeyIsString && valueFilter === descriptionKey(selectedFilter))) {\n onChange(selectedFilter);\n }\n }\n };\n\n const onSelect = (selectedDropdown: DataCombo) => {\n if (!selectedDropdown) return;\n setSelected(selectedDropdown);\n\n if (descriptionKeyIsString) setInputText(selectedDropdown[descriptionKey]);\n else setInputText(descriptionKey(selectedDropdown));\n new Promise((resolve) => {\n resolve(onChange(selectedDropdown));\n }).finally(() => {\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n setOpened(false);\n });\n dropdownRef.current?.focus();\n };\n\n const onOpenClose = () => {\n setOpened(prevState => !prevState);\n if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);\n };\n\n const onFocus = () => {\n if (openDropdownOnFocus) setOpened(true);\n if (selectWrapper) {\n const dropdownWidthFocus = selectWrapper.current ? selectWrapper.current.clientWidth : 0;\n setDropdownWidth(dropdownWidthFocus);\n }\n };\n\n const onBlur = () => {\n if (props.onBlur) {\n const event = getSelectEvent(selected);\n props.onBlur(event);\n if (selected && (descriptionKeyIsString && inputText !== selected[descriptionKey])\n || (!descriptionKeyIsString && inputText !== descriptionKey(selected))) {\n setSelected(null);\n setInputText(inputText);\n new Promise((resolve) => {\n resolve(onChange(null));\n }).finally(() => {\n onChange();\n });\n }\n }\n if (!insideComponent) {\n setOpened(false);\n setIsTyping(false);\n setDataCombo(dataSourceWithAllOptions);\n }\n };\n\n const onInputKeyDown = (e: CustomInputEvent | KeyboardEventReact) => {\n if (e.keyCode) {\n if ((e.keyCode === constants.keyCodes.ENTER || e.key === constants.keys.TAB) && \n selected && opened) {\n if (e.keyCode === constants.keyCodes.ENTER) e.preventDefault?.();\n onSelect(selected);\n } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {\n if (!opened) setOpened(true);\n let index = dataCombo.length > 0\n ? dataCombo.findIndex(d => selected &&\n d[idKey] === selected[idKey])\n : 0;\n if (e.keyCode === constants.keyCodes.ARROW_DOWN) {\n index = (dataCombo\n && index === dataCombo.length - 1\n ? 0\n : index + 1);\n } else {\n index = (dataCombo\n && index === 0\n ? dataCombo?.length - 1\n : index - 1);\n }\n setSelected(dataCombo[index]);\n if (descriptionKeyIsString) setInputText(dataCombo[index][descriptionKey]);\n if (!descriptionKeyIsString) setInputText(descriptionKey(dataCombo[index]));\n }\n }\n if (!isTyping) setIsTyping(true);\n };\n\n const onClearClick = () => {\n new Promise((resolve) => {\n resolve(onChange(null));\n }).finally(() => {\n setSelected(null);\n setInputText('');\n onChange();\n if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();\n setOpened(false);\n });\n };\n\n const setOnDenied = (onDeniedSelect: OnDenied) => {\n setOnDeniedSelect(onDeniedSelect);\n };\n\n const shouldDisable = () =>\n disabled || (onDenied && (onDenied.disabled || onDenied.hideContent));\n\n const shouldBeReadOnly = () => readOnly || (onDenied && (onDenied.readOnly));\n\n useEffect(() => {\n window.addEventListener('resize', onScreenResize);\n document.addEventListener('click', onClickOutside);\n document.addEventListener('mousemove', onMouseMove);\n\n return () => {\n window.removeEventListener('resize', onScreenResize);\n document.removeEventListener('click', onClickOutside);\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, []);\n\n useEffect(() => {\n if (gridLayout) {\n const gridEl = document.querySelector(`#${componentId}>.-withinput.grid-container`);\n if (gridElement.current !== gridEl && gridEl) gridElement.current = gridEl;\n }\n }, [gridLayout]);\n\n useEffect(() => {\n if (dataSourceWithAllOptions.length > 0) {\n let newCurrent = null;\n if (value || value === 0) {\n newCurrent = dataSourceWithAllOptions.find(i => (value || value === 0)\n && i[idKey]?.toString().toLowerCase() === value?.toString().toLowerCase());\n } else if (dataSourceWithAllOptions.length > 0 && selectFirstOnEnter) {\n newCurrent = dataSourceWithAllOptions[0];\n }\n\n setSelected(newCurrent);\n if (descriptionKeyIsString) setInputText(newCurrent ? newCurrent[descriptionKey] : '');\n else setInputText(newCurrent ? descriptionKey(newCurrent) : '');\n }\n\n if (dataSourceWithAllOptions.length === 0 && inputText) {\n setInputText('');\n }\n }, [dataSourceWithAllOptions.length, value]);\n\n useEffect(() => {\n if (!_.isEqual(dataCombo, dataSourceWithAllOptions)) {\n const dataComboFilteredSimple = (undigitable || remoteSearch || !isTyping) ?\n dataSourceWithAllOptions\n : getFilteredSimpleDataCombo({\n inputText, dataSource: dataSourceWithAllOptions, descriptionKey,\n });\n setDataCombo(dataComboFilteredSimple);\n if (dataSourceWithAllOptions.length > 0 && remoteSearch) {\n const data = dataSourceWithAllOptions[0];\n setSelected(data);\n }\n }\n\n if (allOptions) {\n setDataCombo([\n {\n [idKey]: allOptions.idValue,\n [descriptionKeyIsString ?\n descriptionKey :\n descriptionKey(allOptions.label)]: allOptions.label,\n },\n ...dataSource,\n ]);\n }\n }, [JSON.stringify(dataSourceWithAllOptions)]);\n\n return (\n <span\n id={componentId}\n ref={componentRef}\n className=\"select-component\">\n <InputTextBase\n {...props}\n inputRef={(ref) => {\n if (props.inputRef) {\n if (!_.isFunction(props.inputRef)) {\n props.inputRef.current = ref;\n } else {\n props.inputRef(ref);\n }\n }\n inputTextRef.current = ref;\n }}\n autoComplete=\"off\"\n readOnly={undigitable || shouldBeReadOnly()}\n value={inputText}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={(e?: CustomInputEvent) => {\n if (e) onFilter(e.target.value);\n }}\n onClick={onFocus}\n onKeyDown={onInputKeyDown}\n customClassForLabel={customClassForLabel}\n customClassForWrapper={\n `selectwrapper ${(undigitable || searchOnDropdown || shouldBeReadOnly()) && ' -undigitable'} ${customClassForWrapper}`\n }\n customClassForInputContent={`multiselect ${customClassForInputContent}`}\n inputBaseRef={(r: HTMLDivElement) => { selectWrapper.current = r; }}\n handlerSetOnDenied={(inputOnDenied: OnDenied) => setOnDenied(inputOnDenied)}\n rightElements={[\n ...rightElements,\n <ActionButtons\n key=\"action-buttons-simpleselect\"\n disabled={shouldDisable() || shouldBeReadOnly()}\n showClearButton={showClearButton}\n dropDownOpened={opened}\n handlerClear={() => {\n if (shouldDisable()) return null;\n return onClearClick();\n }}\n handlerOpenClose={onOpenClose}\n customClassForSideButtons={customClassForSideButtons} />,\n ]} />\n {opened &&\n <Dropdown\n {...props}\n opened={opened}\n selected={selected}\n inputValue={inputText}\n selectFieldRef={componentRef}\n dropdownRef={dropdownRef}\n searchOnDropdown={searchOnDropdown}\n gridWrapperStyle={gridLayout && gridElement.current ?\n window.getComputedStyle(gridElement.current)\n : undefined}\n handleOnSelect={(dataSelected?: DataCombo) => {\n if (dataSelected) onSelect(dataSelected);\n }}\n handleOnFilter={(valueFilter: string) => onFilter(valueFilter)}\n handleOnKeydown={onInputKeyDown}\n handleOnBlur={() => onBlur}\n handleOnFocus={onFocus}\n dataCombo={dataCombo}\n searchNotFoundText={searchNotFoundText}\n dropdownWidth={dropdownMaxWidth || dropdownWidth || 0}\n onEndReached={onEndReached}\n onEndReachedThreshold={onEndReachedThreshold}\n itemsCount={itemsCount} />\n }\n </span>\n );\n};\nexport default SimpleSelect;\n"],"names":["SimpleSelect","props","value","descriptionKey","dataSource","gridLayout","onSearch","disabled","readOnly","openDropdownOnFocus","selectFirstOnEnter","idKey","remoteSearch","name","undigitable","searchOnDropdown","allOptions","undefined","showClearButton","searchNotFoundText","rightElements","customClassForWrapper","customClassForInputContent","customClassForLabel","customClassForSideButtons","dropdownMaxWidth","onEndReached","onEndReachedThreshold","itemsCount","descriptionKeyIsString","dataSourceWithAllOptions","idValue","label","dataCombo","setDataCombo","useState","selected","setSelected","inputText","setInputText","opened","setOpened","dropdownWidth","setDropdownWidth","insideComponent","setInsideComponent","onDenied","setOnDeniedSelect","isTyping","setIsTyping","dropdownRef","useRef","componentId","uuid","componentRef","selectWrapper","gridElement","inputTextRef","onScreenResize","current","clientWidth","onClickOutside","event","target","contains","onMouseMove","idDropdown","parentElement","id","dropdownElement","document","getElementById","keepDropdownOpen","Boolean","getSelectEvent","selectedEvent","onChange","selectedChange","onFilter","valueFilter","selectedFilter","dataComboFilter","getFilteredSimpleDataCombo","length","onSelect","selectedDropdown","Promise","resolve","finally","focus","onOpenClose","prevState","onFocus","dropdownWidthFocus","onBlur","onInputKeyDown","e","keyCode","constants","ENTER","key","TAB","preventDefault","ARROW_UP","ARROW_DOWN","includes","index","findIndex","d","onClearClick","setOnDenied","onDeniedSelect","shouldDisable","hideContent","shouldBeReadOnly","useEffect","window","addEventListener","removeEventListener","gridEl","querySelector","newCurrent","find","i","toString","toLowerCase","_","isEqual","dataComboFilteredSimple","data","JSON","stringify","ref","inputRef","isFunction","r","inputOnDenied","getComputedStyle","dataSelected"],"mappings":"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"}
@@ -53,6 +53,7 @@ const InputBase = forwardRef((props, ref) => {
53
53
  readOnly,
54
54
  onEndReached,
55
55
  onEndReachedThreshold,
56
+ itemsCount,
56
57
  ...rest
57
58
  } = props;
58
59
  const SELECT_FIELD_CONTROLS_ID = useId();
@@ -430,7 +431,7 @@ const InputBase = forwardRef((props, ref) => {
430
431
  ] }),
431
432
  hasRightSlotElements && !skeletonize && rightSlotElements,
432
433
  /* @__PURE__ */ jsx("div", { className: "triggers", "data-state-disabled": disabled, "data-state-read-only": readOnly, "data-state-skeletonize": skeletonize, children: /* @__PURE__ */ jsx(Triggers, {}) }),
433
- listBoxOpen && createPortal(/* @__PURE__ */ jsx(ListBox, { ref: selectListBoxRef, dropdownMaxWidth, onEndReached, onEndReachedThreshold, children: childrenItems }), document.body)
434
+ listBoxOpen && createPortal(/* @__PURE__ */ jsx(ListBox, { ref: selectListBoxRef, dropdownMaxWidth, onEndReached, onEndReachedThreshold, itemsCount, children: childrenItems }), document.body)
434
435
  ] }),
435
436
  hintPosition === "below" && /* @__PURE__ */ jsx(Hint, { customClass: "hint", skeletonize, description: props.hint, disabled, visible: hasHintMessages }),
436
437
  hasValidationErrors && /* @__PURE__ */ jsx("span", { "data-testid": "test-select-field-list-errors", className: "error", "data-state-skeletonize": skeletonize, "aria-describedby": String(name).concat("-errors"), children: errors?.map((error, index_2) => /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sources":["../../../src/lib/inputs2/selectfield/base.tsx"],"sourcesContent":["import '../../assets/styles/selectfield.scss';\n\nimport {\n Children, cloneElement, forwardRef, Fragment, isValidElement, useEffect,\n useId, useMemo, useRef, useState, type ChangeEvent, type ClipboardEvent,\n type FocusEvent, type InputEvent, type KeyboardEvent, type ReactNode,\n type MouseEvent, \n} from 'react';\nimport _ from 'lodash';\nimport { createPortal } from 'react-dom';\nimport Hint from '../../hint';\nimport Popover, { PopoverText } from '../../popover';\nimport { Tooltip } from '../../tooltip';\nimport { mergeRefs } from '../../form2/helpers';\nimport { LeftSlot, RightSlot, type SlotProps } from '../slot';\nimport { ListBox } from './listbox';\nimport { Triggers } from './triggers';\nimport { Selections } from './selections';\nimport { SelectFieldContext } from './context';\nimport { Options, type OptionsProps } from './options';\nimport { Item, type SelectFieldItemProps } from './item';\nimport { Keys, MultipleVariantEnum, SelectFieldInputBaseProps } from './types';\nimport { isTypingKey, NAVIGATION_KEYS, scrollListBoxToElement } from './helpers';\n\nexport const InputBase = forwardRef<HTMLInputElement, SelectFieldInputBaseProps>(\n (props, ref) => {\n const {\n name, label, errors, children, onChange, tooltip, tooltipPosition, tooltipWidth, hintPosition = 'below',\n themePopover = 'light', popoverAlign = 'left', skeletonize = false, striped = false, undigitable = false, externalSearch = false,\n openDropdownOnFocus = true, showClearButton = true, textAlign = 'left', searchOnDropdown = false, onSearch = undefined,\n customClass = '', customClassLabel = '', customClassWrapper = '', customClassInputContainer = '',\n notFoundFilterLabel = 'Nenhuma opção encontrada.', multipleInputLabelEmpty = 'Nenhum registro selecionado',\n multipleInputLabelManySelection = 'Múltiplos registros selecionados', searchInputPlaceholder = 'Pesquisar registros',\n dropdownAlignButton = 'left', dropdownMaxWidth = undefined, disabled, readOnly, onEndReached,\n onEndReachedThreshold, ...rest\n } = props;\n const SELECT_FIELD_CONTROLS_ID = useId();\n const [inputValue, setInputValue] = useState('');\n const [filterValue, setFilterValue] = useState('');\n const [listBoxOpen, setListBoxOpen] = useState(false);\n const [activeDescendant, setActiveDescendant] = useState<string | undefined>(undefined);\n const isMultipleDefault = _.isEqual(props?.multiple, MultipleVariantEnum.default);\n const isMultipleWithCheckboxes = _.isEqual(props?.multiple, MultipleVariantEnum.checkboxes);\n const isMultipleSelect = isMultipleDefault || isMultipleWithCheckboxes;\n const liSelectedRef = useRef<HTMLLIElement | null>(null);\n const selectFieldRoot = useRef<HTMLDivElement | null>(null);\n const selectInputRef = useRef<HTMLInputElement | null>(null);\n const selectListBoxRef = useRef<HTMLDivElement | null>(null);\n const selectContainerRef = useRef<HTMLDivElement | null>(null);\n const selectSearchInputRef = useRef<HTMLInputElement | null>(null);\n\n const listOptionsMap = useMemo(() => {\n const optionsMap = new Map<string, string>();\n Children.forEach(children, (child) => {\n if (isValidElement<SelectFieldItemProps>(child)) {\n optionsMap.set(child.props.value, child.props.label);\n }\n });\n return optionsMap;\n }, [children]);\n\n useEffect(() => {\n if (isMultipleWithCheckboxes) {\n setInputValue(multipleInputLabelEmpty);\n }\n }, []);\n\n useEffect(() => {\n if (openDropdownOnFocus && listBoxOpen) {\n if (isMultipleWithCheckboxes) {\n setTimeout(() => { selectSearchInputRef.current?.focus?.(); }, 10);\n }\n }\n\n if (listBoxOpen) {\n /**\n * Scroll automático para o item selecionado na abertura do listbox.\n *\n * Usa requestAnimationFrame para aguardar que o DOM esteja renderizado e que o container\n * tenha dimensões estáveis (clientHeight > 0), já que a animação CSS \"revealelement\"\n * inicia com height: 0%, o que invalida o cálculo de scroll se executado antes.\n *\n * O scroll é feito via scrollListBoxToElement (helpers.ts) que manipula diretamente\n * o scrollTop do <ul>, sem usar scrollIntoView(), evitando propagação indesejada\n * de scroll para containers ancestrais(ex: body).\n */\n let retries = 0;\n const maxRetries = 20;\n const scrollToViewSelectedElement = () => {\n const listBox = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n const currentValue = !isMultipleSelect ?\n props?.value\n : _.orderBy([...props.value], value => _.toNumber(value), ['asc'])[0];\n const currentLiElement = listBox?.querySelector(`li[id=\"${\n _.toString(currentValue)}\"]`) as HTMLLIElement | null;\n if (currentLiElement && listBox) {\n if (listBox.clientHeight > 0) {\n scrollListBoxToElement(listBox, currentLiElement, 'center');\n } else if (retries < maxRetries) {\n retries++;\n requestAnimationFrame(scrollToViewSelectedElement);\n }\n }\n };\n requestAnimationFrame(scrollToViewSelectedElement);\n }\n }, [listBoxOpen]);\n\n useEffect(() => {\n if (props?.value && !isMultipleSelect) setActiveDescendant(props?.value);\n if (!isMultipleWithCheckboxes && !props?.value) setInputValue('');\n const lazyInputValue = listOptionsMap.get(rest.value);\n if (!isMultipleWithCheckboxes) setInputValue(lazyInputValue ?? '');\n if (isMultipleWithCheckboxes) {\n const firstSelectionLabel = listOptionsMap.get(props?.value[0]);\n switch (_.size(props?.value)) {\n case 0:\n return setInputValue(multipleInputLabelEmpty);\n case 1:\n return setInputValue(firstSelectionLabel ?? '');\n default:\n return setInputValue(multipleInputLabelManySelection);\n }\n }\n }, [props?.value, listOptionsMap]);\n\n const hasLabel = !_.isEmpty(props?.label);\n const hasHintMessages = Boolean(props.hint?.length);\n const hasValidationErrors = Boolean(errors?.length);\n\n const { childrenItems } = useMemo(() => {\n const itens: ReactNode[] = [];\n\n Children.map(children, (childElement, index) => {\n if (isValidElement<SelectFieldItemProps>(childElement)) {\n const clonedChild = cloneElement(childElement, {\n key: childElement.key ?? `child-item-${index + 1}`,\n });\n if (childElement.type === Item) itens.push(clonedChild);\n }\n });\n\n return { childrenItems: itens };\n }, [children, disabled]);\n\n const { leftSlotElements, rightSlotElements } = useMemo(() => {\n const left: ReactNode[] = [];\n const right: ReactNode[] = [];\n\n Children.map(children, (childElement, index) => {\n if (isValidElement<SlotProps>(childElement)) {\n const clonedChild = cloneElement(childElement, {\n key: childElement.key ?? `slot-${index}`,\n disabled: disabled,\n 'aria-disabled': disabled,\n });\n if (childElement.type === LeftSlot) left.push(clonedChild);\n if (childElement.type === RightSlot) right.push(clonedChild);\n }\n });\n\n return { leftSlotElements: left, rightSlotElements: right };\n }, [children, disabled]);\n\n const { optionItens } = useMemo(() => {\n const itens: ReactNode[] = [];\n\n Children.map(children, (childElement, index) => {\n if (isValidElement<OptionsProps>(childElement)) {\n const clonedChildItem = cloneElement(childElement, {\n key: childElement.key ?? `option-list-${index}`,\n disabled: disabled,\n });\n if (childElement.type === Options) itens.push(clonedChildItem);\n }\n });\n\n return { optionItens: itens };\n }, [children, disabled]);\n\n const hasLeftSlotElements = Boolean(leftSlotElements?.length);\n const hasRightSlotElements = Boolean(rightSlotElements?.length);\n\n const handleCloseListBox = () => {\n setListBoxOpen(false);\n setFilterValue('');\n };\n\n const handleOpenListBox = () => {\n const currentValue = !isMultipleSelect ?\n props?.value\n : _.orderBy([...props.value], value => _.toNumber(value), ['asc'])[0];\n setActiveDescendant(_.toString(currentValue) ?? undefined);\n };\n\n const handleChangeListBoxState = () => {\n setListBoxOpen((prevState) => {\n if (prevState) {\n setFilterValue('');\n }\n if (selectInputRef.current !== document.activeElement) {\n selectInputRef?.current?.focus?.();\n }\n handleOpenListBox();\n return !prevState;\n });\n };\n\n const handleChangeLiSelected = (liElement: HTMLLIElement | null) => {\n liSelectedRef.current = liElement;\n };\n\n const handleOnChange = (value?: any, inputLabel?: string, addOrRemove?: boolean) => {\n let multipleValue = props?.value;\n if (!addOrRemove) multipleValue = _.union(props.value, [value]);\n if (addOrRemove) multipleValue = _.without(props.value, value);\n const changedValue = !isMultipleSelect ?\n value\n : _.orderBy(multipleValue, multiValue => _.toNumber(multiValue), ['asc']);\n const syntheticEvent = {\n target: {\n name,\n value: changedValue as any,\n },\n } as ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n if (!isMultipleSelect) {\n setListBoxOpen(false);\n setFilterValue('');\n setInputValue(inputLabel ?? '');\n if (document.activeElement === selectSearchInputRef.current) {\n selectInputRef?.current?.focus?.();\n setListBoxOpen(false);\n }\n }\n };\n\n const handleCheckMultiple = (checkOrUncheckAll?: boolean) => {\n const checkAll = Boolean(checkOrUncheckAll);\n const allValues: any[] = [];\n listOptionsMap.forEach((__, key) => allValues.push(key));\n const value: any = checkAll ? allValues : [];\n const syntheticEvent = {\n target: {\n name,\n value,\n },\n } as ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n };\n\n const handleClearValue = () => {\n const resetValue = !isMultipleSelect ? '' : [];\n const syntheticEvent = {\n target: {\n name,\n value: resetValue as any,\n },\n } as ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n setListBoxOpen(false);\n if (!isMultipleSelect) {\n setFilterValue('');\n setInputValue('');\n }\n if (isMultipleWithCheckboxes) {\n setInputValue(multipleInputLabelEmpty);\n }\n };\n\n const handleOnBlur = (event: FocusEvent<HTMLInputElement>) => {\n props?.onBlur?.(event);\n if (!event.relatedTarget || event.relatedTarget !== selectSearchInputRef.current) {\n setListBoxOpen(false);\n }\n setFilterValue('');\n };\n\n const handleOnFocus = (event: FocusEvent<HTMLInputElement>) => {\n props?.onFocus?.(event);\n if (openDropdownOnFocus) {\n setListBoxOpen(true);\n handleOpenListBox();\n }\n };\n\n const handleOnChangeInput = (event: ChangeEvent<HTMLInputElement>) => {\n setFilterValue(event.target.value);\n setInputValue(event.target.value);\n };\n\n const handleOnPaste = (event: ClipboardEvent<HTMLInputElement>) => {\n if (undigitable || isMultipleWithCheckboxes) {\n event.preventDefault();\n } else {\n props.onPaste?.(event);\n }\n };\n\n const handleOnBeforeInput = (event: InputEvent<HTMLInputElement>) => {\n if (undigitable || isMultipleWithCheckboxes) {\n event.preventDefault();\n } else {\n props.onBeforeInput?.(event);\n }\n };\n\n const handleOnMouseDown = (event: MouseEvent<HTMLInputElement>) => {\n if (undigitable) {\n event.preventDefault();\n } else {\n props.onMouseDown?.(event);\n if (openDropdownOnFocus && !listBoxOpen) {\n setListBoxOpen(true);\n handleOpenListBox();\n }\n }\n };\n\n const handleOnSearch = (event: ChangeEvent<HTMLInputElement>) => {\n if (externalSearch) {\n onSearch?.(event);\n } else {\n setFilterValue(event.target.value);\n }\n };\n\n const handleOnKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n props?.onKeyDown?.(event);\n const notUndigitableKeys: string[] = [Keys.backspace, Keys.delete];\n if ((undigitable) && notUndigitableKeys.includes(event.key)) {\n event.preventDefault();\n return;\n }\n const shouldOpenByTyping = isTypingKey(event) || event.key === Keys.arrowDown;\n if (shouldOpenByTyping && selectInputRef.current === document.activeElement) {\n if (event.key === Keys.arrowDown) {\n event.preventDefault();\n }\n requestAnimationFrame(() => {\n const ulListElement = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n const liElementsFiltered = (ulListElement?.querySelectorAll(\n 'li[data-state-filtered=\"true\"]',\n ) ?? []) as HTMLLIElement[];\n if (!listBoxOpen && event.key === Keys.arrowDown) {\n const currentValue = !isMultipleSelect ?\n props?.value\n : _.orderBy([...props.value], value => _.toNumber(value), ['asc'])[0];\n setActiveDescendant(_.toString(currentValue) ?? undefined);\n } else {\n setActiveDescendant(liElementsFiltered[0]?.id ?? undefined);\n }\n });\n if (!listBoxOpen) {\n setListBoxOpen(true);\n handleOpenListBox();\n }\n }\n if (listBoxOpen && NAVIGATION_KEYS.includes(event.key)) {\n event.preventDefault();\n }\n requestAnimationFrame(() => {\n const ulListElement = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n const liElementsFiltered = (ulListElement?.querySelectorAll(\n 'li[data-state-filtered=\"true\"]',\n ) ?? []) as HTMLLIElement[];\n const currentElementIndex = Array.from(liElementsFiltered).findIndex(\n liElement => liElement.id === activeDescendant,\n );\n let nextElementIndex = currentElementIndex;\n if (listBoxOpen) {\n if (NAVIGATION_KEYS.includes(event.key)) {\n switch (event.key) {\n case Keys.escape:\n setListBoxOpen(false);\n setFilterValue('');\n selectInputRef.current?.focus();\n if (event.target === selectSearchInputRef.current) {\n setListBoxOpen(false);\n }\n break;\n case Keys.arrowDown:\n nextElementIndex = Math.min(currentElementIndex + 1, liElementsFiltered.length - 1);\n break;\n case Keys.arrowUp:\n nextElementIndex = Math.max(currentElementIndex - 1, 0);\n break;\n case Keys.enter:\n if (activeDescendant) {\n const selectedLIOption = liElementsFiltered[nextElementIndex];\n if (selectedLIOption) {\n selectedLIOption.click();\n }\n }\n break;\n default:\n break;\n }\n const nextLIOption = liElementsFiltered[nextElementIndex];\n if (nextLIOption) {\n setActiveDescendant(nextLIOption?.id ?? '');\n const ulListBox = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n scrollListBoxToElement(ulListBox, nextLIOption, 'nearest');\n }\n }\n } else return null;\n });\n };\n\n const contextValues = ({\n selectFieldId: SELECT_FIELD_CONTROLS_ID, label: props.label, striped, listBoxOpen,\n filterValue, disabled, liSelectedRef, selectInputRef, selectSearchInputRef, handleOnSearch,\n searchOnDropdown, nameSelect: String(props.name), valueSelect: props?.value,\n activeDescendant, handleOnChange, handleOnKeyDown, selectContainerRef, handleCloseListBox,\n notFoundFilterLabel, handleChangeLiSelected, isMultipleSelect, isMultipleDefault,\n isMultipleWithCheckboxes, searchInputPlaceholder, showClearButton, dropdownAlignButton,\n handleClearValue, handleCheckMultiple, handleChangeListBoxState, optionItens,\n });\n\n return (\n <Fragment>\n <SelectFieldContext.Provider value={contextValues}>\n <div\n ref={selectFieldRoot}\n data-testid=\"test-select-field-root\"\n className={`select-field-root ${customClassWrapper}`}\n data-state-error={hasValidationErrors}\n data-state-hint-position={hintPosition}>\n {hasLabel && (\n <span\n className={`root-label ${customClassLabel}`}\n data-state-skeletonize={skeletonize}>\n <label\n data-testid=\"test-select-field-label\"\n className=\"label\"\n title={label}\n htmlFor={name}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n data-state-input-required={props.required}>\n {label}\n </label>\n {hasHintMessages && hintPosition === 'onLabelRight' && !skeletonize && (\n <Popover\n customClass=\"label-popover\"\n theme={themePopover}\n align={popoverAlign}\n iconColor=\"#03bde2\">\n <PopoverText text={props?.hint ?? ''} />\n </Popover>\n )}\n </span>\n )}\n <div\n ref={selectContainerRef}\n className={`container ${customClassInputContainer}`}\n aria-expanded={listBoxOpen}\n data-state-skeletonize={skeletonize}>\n {(hasLeftSlotElements && !skeletonize) && leftSlotElements}\n <div className=\"input-root\">\n <input\n {...rest}\n ref={mergeRefs(ref, selectInputRef)}\n readOnly={props.readOnly || undigitable}\n className={`input ${customClass}`}\n placeholder={rest.placeholder}\n data-state-error={hasValidationErrors}\n data-state-multiple={isMultipleSelect}\n data-state-read-only={readOnly}\n data-state-text-align={textAlign}\n data-state-undigitable={undigitable}\n data-state-skeletonize={skeletonize}\n data-state-multiple-with-checkboxes={isMultipleWithCheckboxes}\n id={name}\n type=\"text\"\n role=\"combobox\"\n multiple={false}\n disabled={disabled}\n data-testid=\"test-select-field-input\"\n aria-autocomplete=\"list\"\n aria-expanded={listBoxOpen}\n aria-controls={SELECT_FIELD_CONTROLS_ID}\n aria-activedescendant={activeDescendant}\n tabIndex={(!readOnly && !skeletonize) ? 0 : -1}\n value={inputValue}\n onBlur={handleOnBlur}\n onFocus={handleOnFocus}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChangeInput}\n onPaste={handleOnPaste}\n onMouseDown={handleOnMouseDown}\n onBeforeInput={handleOnBeforeInput} />\n {isMultipleDefault && (\n <Selections\n disabled={Boolean(disabled)}\n isReadOnly={Boolean(readOnly)}\n listOfOptionsToSelect={listOptionsMap} />\n )}\n </div>\n {(hasRightSlotElements && !skeletonize) && rightSlotElements}\n <div\n className=\"triggers\"\n data-state-disabled={disabled}\n data-state-read-only={readOnly}\n data-state-skeletonize={skeletonize}>\n <Triggers />\n </div>\n {listBoxOpen && createPortal(\n <ListBox\n ref={selectListBoxRef}\n dropdownMaxWidth={dropdownMaxWidth}\n onEndReached={onEndReached}\n onEndReachedThreshold={onEndReachedThreshold}>\n {childrenItems}\n </ListBox>,\n document.body,\n )}\n </div>\n {hintPosition === 'below' && (\n <Hint\n customClass=\"hint\"\n skeletonize={skeletonize}\n description={props.hint}\n disabled={disabled}\n visible={hasHintMessages} />\n )}\n {hasValidationErrors && (\n <span\n data-testid=\"test-select-field-list-errors\"\n className=\"error\"\n data-state-skeletonize={skeletonize}\n aria-describedby={String(name).concat('-errors')}>\n {errors?.map((error, index) => (\n <Fragment key={`${index + 1}-${error}`}>\n {error}\n {' '}\n </Fragment>\n ))}\n </span>\n )}\n </div>\n </SelectFieldContext.Provider>\n <Tooltip\n targetRef={selectInputRef}\n text={tooltip}\n position={tooltipPosition}\n width={tooltipWidth}\n space={tooltipPosition === 'right' ? 64 : undefined} />\n </Fragment>\n );\n },\n);\n\nInputBase.displayName = 'SelectFieldInputBase';\n"],"names":["InputBase","forwardRef","props","ref","name","label","errors","children","onChange","tooltip","tooltipPosition","tooltipWidth","hintPosition","themePopover","popoverAlign","skeletonize","striped","undigitable","externalSearch","openDropdownOnFocus","showClearButton","textAlign","searchOnDropdown","onSearch","undefined","customClass","customClassLabel","customClassWrapper","customClassInputContainer","notFoundFilterLabel","multipleInputLabelEmpty","multipleInputLabelManySelection","searchInputPlaceholder","dropdownAlignButton","dropdownMaxWidth","disabled","readOnly","onEndReached","onEndReachedThreshold","rest","SELECT_FIELD_CONTROLS_ID","useId","inputValue","setInputValue","useState","filterValue","setFilterValue","listBoxOpen","setListBoxOpen","activeDescendant","setActiveDescendant","isMultipleDefault","_","isEqual","multiple","MultipleVariantEnum","default","isMultipleWithCheckboxes","checkboxes","isMultipleSelect","liSelectedRef","useRef","selectFieldRoot","selectInputRef","selectListBoxRef","selectContainerRef","selectSearchInputRef","listOptionsMap","useMemo","optionsMap","Map","Children","forEach","child","isValidElement","set","value","useEffect","setTimeout","current","focus","retries","maxRetries","scrollToViewSelectedElement","listBox","querySelector","currentValue","orderBy","toNumber","currentLiElement","toString","clientHeight","scrollListBoxToElement","requestAnimationFrame","lazyInputValue","get","firstSelectionLabel","size","hasLabel","isEmpty","hasHintMessages","Boolean","hint","length","hasValidationErrors","childrenItems","itens","map","childElement","index","clonedChild","cloneElement","key","type","Item","push","leftSlotElements","rightSlotElements","left","right","LeftSlot","RightSlot","optionItens","clonedChildItem","Options","hasLeftSlotElements","hasRightSlotElements","handleCloseListBox","handleOpenListBox","handleChangeListBoxState","prevState","document","activeElement","handleChangeLiSelected","liElement","handleOnChange","inputLabel","addOrRemove","multipleValue","union","without","changedValue","multiValue","syntheticEvent","target","handleCheckMultiple","checkOrUncheckAll","checkAll","allValues","__","handleClearValue","resetValue","handleOnBlur","event","onBlur","relatedTarget","handleOnFocus","onFocus","handleOnChangeInput","handleOnPaste","preventDefault","onPaste","handleOnBeforeInput","onBeforeInput","handleOnMouseDown","onMouseDown","handleOnSearch","handleOnKeyDown","onKeyDown","notUndigitableKeys","Keys","backspace","delete","includes","shouldOpenByTyping","isTypingKey","arrowDown","ulListElement","liElementsFiltered","querySelectorAll","id","NAVIGATION_KEYS","currentElementIndex","Array","from","findIndex","nextElementIndex","escape","Math","min","arrowUp","max","enter","selectedLIOption","click","nextLIOption","ulListBox","contextValues","selectFieldId","nameSelect","String","valueSelect","required","mergeRefs","placeholder","createPortal","body","concat","error","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sources":["../../../src/lib/inputs2/selectfield/base.tsx"],"sourcesContent":["import '../../assets/styles/selectfield.scss';\n\nimport {\n Children, cloneElement, forwardRef, Fragment, isValidElement, useEffect,\n useId, useMemo, useRef, useState, type ChangeEvent, type ClipboardEvent,\n type FocusEvent, type InputEvent, type KeyboardEvent, type ReactNode,\n type MouseEvent, \n} from 'react';\nimport _ from 'lodash';\nimport { createPortal } from 'react-dom';\nimport Hint from '../../hint';\nimport Popover, { PopoverText } from '../../popover';\nimport { Tooltip } from '../../tooltip';\nimport { mergeRefs } from '../../form2/helpers';\nimport { LeftSlot, RightSlot, type SlotProps } from '../slot';\nimport { ListBox } from './listbox';\nimport { Triggers } from './triggers';\nimport { Selections } from './selections';\nimport { SelectFieldContext } from './context';\nimport { Options, type OptionsProps } from './options';\nimport { Item, type SelectFieldItemProps } from './item';\nimport { Keys, MultipleVariantEnum, SelectFieldInputBaseProps } from './types';\nimport { isTypingKey, NAVIGATION_KEYS, scrollListBoxToElement } from './helpers';\n\nexport const InputBase = forwardRef<HTMLInputElement, SelectFieldInputBaseProps>(\n (props, ref) => {\n const {\n name, label, errors, children, onChange, tooltip, tooltipPosition, tooltipWidth, hintPosition = 'below',\n themePopover = 'light', popoverAlign = 'left', skeletonize = false, striped = false, undigitable = false, externalSearch = false,\n openDropdownOnFocus = true, showClearButton = true, textAlign = 'left', searchOnDropdown = false, onSearch = undefined,\n customClass = '', customClassLabel = '', customClassWrapper = '', customClassInputContainer = '',\n notFoundFilterLabel = 'Nenhuma opção encontrada.', multipleInputLabelEmpty = 'Nenhum registro selecionado',\n multipleInputLabelManySelection = 'Múltiplos registros selecionados', searchInputPlaceholder = 'Pesquisar registros',\n dropdownAlignButton = 'left', dropdownMaxWidth = undefined, disabled, readOnly, onEndReached,\n onEndReachedThreshold, itemsCount, ...rest\n } = props;\n const SELECT_FIELD_CONTROLS_ID = useId();\n const [inputValue, setInputValue] = useState('');\n const [filterValue, setFilterValue] = useState('');\n const [listBoxOpen, setListBoxOpen] = useState(false);\n const [activeDescendant, setActiveDescendant] = useState<string | undefined>(undefined);\n const isMultipleDefault = _.isEqual(props?.multiple, MultipleVariantEnum.default);\n const isMultipleWithCheckboxes = _.isEqual(props?.multiple, MultipleVariantEnum.checkboxes);\n const isMultipleSelect = isMultipleDefault || isMultipleWithCheckboxes;\n const liSelectedRef = useRef<HTMLLIElement | null>(null);\n const selectFieldRoot = useRef<HTMLDivElement | null>(null);\n const selectInputRef = useRef<HTMLInputElement | null>(null);\n const selectListBoxRef = useRef<HTMLDivElement | null>(null);\n const selectContainerRef = useRef<HTMLDivElement | null>(null);\n const selectSearchInputRef = useRef<HTMLInputElement | null>(null);\n\n const listOptionsMap = useMemo(() => {\n const optionsMap = new Map<string, string>();\n Children.forEach(children, (child) => {\n if (isValidElement<SelectFieldItemProps>(child)) {\n optionsMap.set(child.props.value, child.props.label);\n }\n });\n return optionsMap;\n }, [children]);\n\n useEffect(() => {\n if (isMultipleWithCheckboxes) {\n setInputValue(multipleInputLabelEmpty);\n }\n }, []);\n\n useEffect(() => {\n if (openDropdownOnFocus && listBoxOpen) {\n if (isMultipleWithCheckboxes) {\n setTimeout(() => { selectSearchInputRef.current?.focus?.(); }, 10);\n }\n }\n\n if (listBoxOpen) {\n /**\n * Scroll automático para o item selecionado na abertura do listbox.\n *\n * Usa requestAnimationFrame para aguardar que o DOM esteja renderizado e que o container\n * tenha dimensões estáveis (clientHeight > 0), já que a animação CSS \"revealelement\"\n * inicia com height: 0%, o que invalida o cálculo de scroll se executado antes.\n *\n * O scroll é feito via scrollListBoxToElement (helpers.ts) que manipula diretamente\n * o scrollTop do <ul>, sem usar scrollIntoView(), evitando propagação indesejada\n * de scroll para containers ancestrais(ex: body).\n */\n let retries = 0;\n const maxRetries = 20;\n const scrollToViewSelectedElement = () => {\n const listBox = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n const currentValue = !isMultipleSelect ?\n props?.value\n : _.orderBy([...props.value], value => _.toNumber(value), ['asc'])[0];\n const currentLiElement = listBox?.querySelector(`li[id=\"${\n _.toString(currentValue)}\"]`) as HTMLLIElement | null;\n if (currentLiElement && listBox) {\n if (listBox.clientHeight > 0) {\n scrollListBoxToElement(listBox, currentLiElement, 'center');\n } else if (retries < maxRetries) {\n retries++;\n requestAnimationFrame(scrollToViewSelectedElement);\n }\n }\n };\n requestAnimationFrame(scrollToViewSelectedElement);\n }\n }, [listBoxOpen]);\n\n useEffect(() => {\n if (props?.value && !isMultipleSelect) setActiveDescendant(props?.value);\n if (!isMultipleWithCheckboxes && !props?.value) setInputValue('');\n const lazyInputValue = listOptionsMap.get(rest.value);\n if (!isMultipleWithCheckboxes) setInputValue(lazyInputValue ?? '');\n if (isMultipleWithCheckboxes) {\n const firstSelectionLabel = listOptionsMap.get(props?.value[0]);\n switch (_.size(props?.value)) {\n case 0:\n return setInputValue(multipleInputLabelEmpty);\n case 1:\n return setInputValue(firstSelectionLabel ?? '');\n default:\n return setInputValue(multipleInputLabelManySelection);\n }\n }\n }, [props?.value, listOptionsMap]);\n\n const hasLabel = !_.isEmpty(props?.label);\n const hasHintMessages = Boolean(props.hint?.length);\n const hasValidationErrors = Boolean(errors?.length);\n\n const { childrenItems } = useMemo(() => {\n const itens: ReactNode[] = [];\n\n Children.map(children, (childElement, index) => {\n if (isValidElement<SelectFieldItemProps>(childElement)) {\n const clonedChild = cloneElement(childElement, {\n key: childElement.key ?? `child-item-${index + 1}`,\n });\n if (childElement.type === Item) itens.push(clonedChild);\n }\n });\n\n return { childrenItems: itens };\n }, [children, disabled]);\n\n const { leftSlotElements, rightSlotElements } = useMemo(() => {\n const left: ReactNode[] = [];\n const right: ReactNode[] = [];\n\n Children.map(children, (childElement, index) => {\n if (isValidElement<SlotProps>(childElement)) {\n const clonedChild = cloneElement(childElement, {\n key: childElement.key ?? `slot-${index}`,\n disabled: disabled,\n 'aria-disabled': disabled,\n });\n if (childElement.type === LeftSlot) left.push(clonedChild);\n if (childElement.type === RightSlot) right.push(clonedChild);\n }\n });\n\n return { leftSlotElements: left, rightSlotElements: right };\n }, [children, disabled]);\n\n const { optionItens } = useMemo(() => {\n const itens: ReactNode[] = [];\n\n Children.map(children, (childElement, index) => {\n if (isValidElement<OptionsProps>(childElement)) {\n const clonedChildItem = cloneElement(childElement, {\n key: childElement.key ?? `option-list-${index}`,\n disabled: disabled,\n });\n if (childElement.type === Options) itens.push(clonedChildItem);\n }\n });\n\n return { optionItens: itens };\n }, [children, disabled]);\n\n const hasLeftSlotElements = Boolean(leftSlotElements?.length);\n const hasRightSlotElements = Boolean(rightSlotElements?.length);\n\n const handleCloseListBox = () => {\n setListBoxOpen(false);\n setFilterValue('');\n };\n\n const handleOpenListBox = () => {\n const currentValue = !isMultipleSelect ?\n props?.value\n : _.orderBy([...props.value], value => _.toNumber(value), ['asc'])[0];\n setActiveDescendant(_.toString(currentValue) ?? undefined);\n };\n\n const handleChangeListBoxState = () => {\n setListBoxOpen((prevState) => {\n if (prevState) {\n setFilterValue('');\n }\n if (selectInputRef.current !== document.activeElement) {\n selectInputRef?.current?.focus?.();\n }\n handleOpenListBox();\n return !prevState;\n });\n };\n\n const handleChangeLiSelected = (liElement: HTMLLIElement | null) => {\n liSelectedRef.current = liElement;\n };\n\n const handleOnChange = (value?: any, inputLabel?: string, addOrRemove?: boolean) => {\n let multipleValue = props?.value;\n if (!addOrRemove) multipleValue = _.union(props.value, [value]);\n if (addOrRemove) multipleValue = _.without(props.value, value);\n const changedValue = !isMultipleSelect ?\n value\n : _.orderBy(multipleValue, multiValue => _.toNumber(multiValue), ['asc']);\n const syntheticEvent = {\n target: {\n name,\n value: changedValue as any,\n },\n } as ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n if (!isMultipleSelect) {\n setListBoxOpen(false);\n setFilterValue('');\n setInputValue(inputLabel ?? '');\n if (document.activeElement === selectSearchInputRef.current) {\n selectInputRef?.current?.focus?.();\n setListBoxOpen(false);\n }\n }\n };\n\n const handleCheckMultiple = (checkOrUncheckAll?: boolean) => {\n const checkAll = Boolean(checkOrUncheckAll);\n const allValues: any[] = [];\n listOptionsMap.forEach((__, key) => allValues.push(key));\n const value: any = checkAll ? allValues : [];\n const syntheticEvent = {\n target: {\n name,\n value,\n },\n } as ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n };\n\n const handleClearValue = () => {\n const resetValue = !isMultipleSelect ? '' : [];\n const syntheticEvent = {\n target: {\n name,\n value: resetValue as any,\n },\n } as ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n setListBoxOpen(false);\n if (!isMultipleSelect) {\n setFilterValue('');\n setInputValue('');\n }\n if (isMultipleWithCheckboxes) {\n setInputValue(multipleInputLabelEmpty);\n }\n };\n\n const handleOnBlur = (event: FocusEvent<HTMLInputElement>) => {\n props?.onBlur?.(event);\n if (!event.relatedTarget || event.relatedTarget !== selectSearchInputRef.current) {\n setListBoxOpen(false);\n }\n setFilterValue('');\n };\n\n const handleOnFocus = (event: FocusEvent<HTMLInputElement>) => {\n props?.onFocus?.(event);\n if (openDropdownOnFocus) {\n setListBoxOpen(true);\n handleOpenListBox();\n }\n };\n\n const handleOnChangeInput = (event: ChangeEvent<HTMLInputElement>) => {\n setFilterValue(event.target.value);\n setInputValue(event.target.value);\n };\n\n const handleOnPaste = (event: ClipboardEvent<HTMLInputElement>) => {\n if (undigitable || isMultipleWithCheckboxes) {\n event.preventDefault();\n } else {\n props.onPaste?.(event);\n }\n };\n\n const handleOnBeforeInput = (event: InputEvent<HTMLInputElement>) => {\n if (undigitable || isMultipleWithCheckboxes) {\n event.preventDefault();\n } else {\n props.onBeforeInput?.(event);\n }\n };\n\n const handleOnMouseDown = (event: MouseEvent<HTMLInputElement>) => {\n if (undigitable) {\n event.preventDefault();\n } else {\n props.onMouseDown?.(event);\n if (openDropdownOnFocus && !listBoxOpen) {\n setListBoxOpen(true);\n handleOpenListBox();\n }\n }\n };\n\n const handleOnSearch = (event: ChangeEvent<HTMLInputElement>) => {\n if (externalSearch) {\n onSearch?.(event);\n } else {\n setFilterValue(event.target.value);\n }\n };\n\n const handleOnKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n props?.onKeyDown?.(event);\n const notUndigitableKeys: string[] = [Keys.backspace, Keys.delete];\n if ((undigitable) && notUndigitableKeys.includes(event.key)) {\n event.preventDefault();\n return;\n }\n const shouldOpenByTyping = isTypingKey(event) || event.key === Keys.arrowDown;\n if (shouldOpenByTyping && selectInputRef.current === document.activeElement) {\n if (event.key === Keys.arrowDown) {\n event.preventDefault();\n }\n requestAnimationFrame(() => {\n const ulListElement = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n const liElementsFiltered = (ulListElement?.querySelectorAll(\n 'li[data-state-filtered=\"true\"]',\n ) ?? []) as HTMLLIElement[];\n if (!listBoxOpen && event.key === Keys.arrowDown) {\n const currentValue = !isMultipleSelect ?\n props?.value\n : _.orderBy([...props.value], value => _.toNumber(value), ['asc'])[0];\n setActiveDescendant(_.toString(currentValue) ?? undefined);\n } else {\n setActiveDescendant(liElementsFiltered[0]?.id ?? undefined);\n }\n });\n if (!listBoxOpen) {\n setListBoxOpen(true);\n handleOpenListBox();\n }\n }\n if (listBoxOpen && NAVIGATION_KEYS.includes(event.key)) {\n event.preventDefault();\n }\n requestAnimationFrame(() => {\n const ulListElement = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n const liElementsFiltered = (ulListElement?.querySelectorAll(\n 'li[data-state-filtered=\"true\"]',\n ) ?? []) as HTMLLIElement[];\n const currentElementIndex = Array.from(liElementsFiltered).findIndex(\n liElement => liElement.id === activeDescendant,\n );\n let nextElementIndex = currentElementIndex;\n if (listBoxOpen) {\n if (NAVIGATION_KEYS.includes(event.key)) {\n switch (event.key) {\n case Keys.escape:\n setListBoxOpen(false);\n setFilterValue('');\n selectInputRef.current?.focus();\n if (event.target === selectSearchInputRef.current) {\n setListBoxOpen(false);\n }\n break;\n case Keys.arrowDown:\n nextElementIndex = Math.min(currentElementIndex + 1, liElementsFiltered.length - 1);\n break;\n case Keys.arrowUp:\n nextElementIndex = Math.max(currentElementIndex - 1, 0);\n break;\n case Keys.enter:\n if (activeDescendant) {\n const selectedLIOption = liElementsFiltered[nextElementIndex];\n if (selectedLIOption) {\n selectedLIOption.click();\n }\n }\n break;\n default:\n break;\n }\n const nextLIOption = liElementsFiltered[nextElementIndex];\n if (nextLIOption) {\n setActiveDescendant(nextLIOption?.id ?? '');\n const ulListBox = selectListBoxRef.current?.querySelector('ul[role=\"listbox\"]');\n scrollListBoxToElement(ulListBox, nextLIOption, 'nearest');\n }\n }\n } else return null;\n });\n };\n\n const contextValues = ({\n selectFieldId: SELECT_FIELD_CONTROLS_ID, label: props.label, striped, listBoxOpen,\n filterValue, disabled, liSelectedRef, selectInputRef, selectSearchInputRef, handleOnSearch,\n searchOnDropdown, nameSelect: String(props.name), valueSelect: props?.value,\n activeDescendant, handleOnChange, handleOnKeyDown, selectContainerRef, handleCloseListBox,\n notFoundFilterLabel, handleChangeLiSelected, isMultipleSelect, isMultipleDefault,\n isMultipleWithCheckboxes, searchInputPlaceholder, showClearButton, dropdownAlignButton,\n handleClearValue, handleCheckMultiple, handleChangeListBoxState, optionItens,\n });\n\n return (\n <Fragment>\n <SelectFieldContext.Provider value={contextValues}>\n <div\n ref={selectFieldRoot}\n data-testid=\"test-select-field-root\"\n className={`select-field-root ${customClassWrapper}`}\n data-state-error={hasValidationErrors}\n data-state-hint-position={hintPosition}>\n {hasLabel && (\n <span\n className={`root-label ${customClassLabel}`}\n data-state-skeletonize={skeletonize}>\n <label\n data-testid=\"test-select-field-label\"\n className=\"label\"\n title={label}\n htmlFor={name}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n data-state-input-required={props.required}>\n {label}\n </label>\n {hasHintMessages && hintPosition === 'onLabelRight' && !skeletonize && (\n <Popover\n customClass=\"label-popover\"\n theme={themePopover}\n align={popoverAlign}\n iconColor=\"#03bde2\">\n <PopoverText text={props?.hint ?? ''} />\n </Popover>\n )}\n </span>\n )}\n <div\n ref={selectContainerRef}\n className={`container ${customClassInputContainer}`}\n aria-expanded={listBoxOpen}\n data-state-skeletonize={skeletonize}>\n {(hasLeftSlotElements && !skeletonize) && leftSlotElements}\n <div className=\"input-root\">\n <input\n {...rest}\n ref={mergeRefs(ref, selectInputRef)}\n readOnly={props.readOnly || undigitable}\n className={`input ${customClass}`}\n placeholder={rest.placeholder}\n data-state-error={hasValidationErrors}\n data-state-multiple={isMultipleSelect}\n data-state-read-only={readOnly}\n data-state-text-align={textAlign}\n data-state-undigitable={undigitable}\n data-state-skeletonize={skeletonize}\n data-state-multiple-with-checkboxes={isMultipleWithCheckboxes}\n id={name}\n type=\"text\"\n role=\"combobox\"\n multiple={false}\n disabled={disabled}\n data-testid=\"test-select-field-input\"\n aria-autocomplete=\"list\"\n aria-expanded={listBoxOpen}\n aria-controls={SELECT_FIELD_CONTROLS_ID}\n aria-activedescendant={activeDescendant}\n tabIndex={(!readOnly && !skeletonize) ? 0 : -1}\n value={inputValue}\n onBlur={handleOnBlur}\n onFocus={handleOnFocus}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChangeInput}\n onPaste={handleOnPaste}\n onMouseDown={handleOnMouseDown}\n onBeforeInput={handleOnBeforeInput} />\n {isMultipleDefault && (\n <Selections\n disabled={Boolean(disabled)}\n isReadOnly={Boolean(readOnly)}\n listOfOptionsToSelect={listOptionsMap} />\n )}\n </div>\n {(hasRightSlotElements && !skeletonize) && rightSlotElements}\n <div\n className=\"triggers\"\n data-state-disabled={disabled}\n data-state-read-only={readOnly}\n data-state-skeletonize={skeletonize}>\n <Triggers />\n </div>\n {listBoxOpen && createPortal(\n <ListBox\n ref={selectListBoxRef}\n dropdownMaxWidth={dropdownMaxWidth}\n onEndReached={onEndReached}\n onEndReachedThreshold={onEndReachedThreshold}\n itemsCount={itemsCount}>\n {childrenItems}\n </ListBox>,\n document.body,\n )}\n </div>\n {hintPosition === 'below' && (\n <Hint\n customClass=\"hint\"\n skeletonize={skeletonize}\n description={props.hint}\n disabled={disabled}\n visible={hasHintMessages} />\n )}\n {hasValidationErrors && (\n <span\n data-testid=\"test-select-field-list-errors\"\n className=\"error\"\n data-state-skeletonize={skeletonize}\n aria-describedby={String(name).concat('-errors')}>\n {errors?.map((error, index) => (\n <Fragment key={`${index + 1}-${error}`}>\n {error}\n {' '}\n </Fragment>\n ))}\n </span>\n )}\n </div>\n </SelectFieldContext.Provider>\n <Tooltip\n targetRef={selectInputRef}\n text={tooltip}\n position={tooltipPosition}\n width={tooltipWidth}\n space={tooltipPosition === 'right' ? 64 : undefined} />\n </Fragment>\n );\n },\n);\n\nInputBase.displayName = 'SelectFieldInputBase';\n"],"names":["InputBase","forwardRef","props","ref","name","label","errors","children","onChange","tooltip","tooltipPosition","tooltipWidth","hintPosition","themePopover","popoverAlign","skeletonize","striped","undigitable","externalSearch","openDropdownOnFocus","showClearButton","textAlign","searchOnDropdown","onSearch","undefined","customClass","customClassLabel","customClassWrapper","customClassInputContainer","notFoundFilterLabel","multipleInputLabelEmpty","multipleInputLabelManySelection","searchInputPlaceholder","dropdownAlignButton","dropdownMaxWidth","disabled","readOnly","onEndReached","onEndReachedThreshold","itemsCount","rest","SELECT_FIELD_CONTROLS_ID","useId","inputValue","setInputValue","useState","filterValue","setFilterValue","listBoxOpen","setListBoxOpen","activeDescendant","setActiveDescendant","isMultipleDefault","_","isEqual","multiple","MultipleVariantEnum","default","isMultipleWithCheckboxes","checkboxes","isMultipleSelect","liSelectedRef","useRef","selectFieldRoot","selectInputRef","selectListBoxRef","selectContainerRef","selectSearchInputRef","listOptionsMap","useMemo","optionsMap","Map","Children","forEach","child","isValidElement","set","value","useEffect","setTimeout","current","focus","retries","maxRetries","scrollToViewSelectedElement","listBox","querySelector","currentValue","orderBy","toNumber","currentLiElement","toString","clientHeight","scrollListBoxToElement","requestAnimationFrame","lazyInputValue","get","firstSelectionLabel","size","hasLabel","isEmpty","hasHintMessages","Boolean","hint","length","hasValidationErrors","childrenItems","itens","map","childElement","index","clonedChild","cloneElement","key","type","Item","push","leftSlotElements","rightSlotElements","left","right","LeftSlot","RightSlot","optionItens","clonedChildItem","Options","hasLeftSlotElements","hasRightSlotElements","handleCloseListBox","handleOpenListBox","handleChangeListBoxState","prevState","document","activeElement","handleChangeLiSelected","liElement","handleOnChange","inputLabel","addOrRemove","multipleValue","union","without","changedValue","multiValue","syntheticEvent","target","handleCheckMultiple","checkOrUncheckAll","checkAll","allValues","__","handleClearValue","resetValue","handleOnBlur","event","onBlur","relatedTarget","handleOnFocus","onFocus","handleOnChangeInput","handleOnPaste","preventDefault","onPaste","handleOnBeforeInput","onBeforeInput","handleOnMouseDown","onMouseDown","handleOnSearch","handleOnKeyDown","onKeyDown","notUndigitableKeys","Keys","backspace","delete","includes","shouldOpenByTyping","isTypingKey","arrowDown","ulListElement","liElementsFiltered","querySelectorAll","id","NAVIGATION_KEYS","currentElementIndex","Array","from","findIndex","nextElementIndex","escape","Math","min","arrowUp","max","enter","selectedLIOption","click","nextLIOption","ulListBox","contextValues","selectFieldId","nameSelect","String","valueSelect","required","mergeRefs","placeholder","createPortal","body","concat","error","displayName"],"mappings":"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"}
@@ -11,6 +11,7 @@ const ListBox = forwardRef((props, ref) => {
11
11
  dropdownMaxWidth,
12
12
  onEndReached,
13
13
  onEndReachedThreshold,
14
+ itemsCount,
14
15
  ...rest
15
16
  } = props;
16
17
  const {
@@ -72,7 +73,8 @@ const ListBox = forwardRef((props, ref) => {
72
73
  useScrollEndReached({
73
74
  elementRef: listBoxRef,
74
75
  onEndReached,
75
- onEndReachedThreshold
76
+ onEndReachedThreshold,
77
+ itemsCount
76
78
  });
77
79
  return /* @__PURE__ */ jsxs("div", { ref, style: listBoxStyles, "aria-expanded": listBoxOpen, className: "select-field-listbox", "data-testid": "test-select-field-listbox", "data-dropdown-max-width": dropdownMaxWidth, ...rest, children: [
78
80
  shouldBeShowSearchInput && /* @__PURE__ */ jsx(Search, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"listbox.js","sources":["../../../src/lib/inputs2/selectfield/listbox.tsx"],"sourcesContent":["import _ from 'lodash';\nimport { ComponentProps, CSSProperties, forwardRef, useEffect, useRef, useState } from 'react';\nimport { UseScrollEndReachedParams } from 'src/lib/hooks/useScrollEndReached/types';\nimport { useScrollEndReached } from '../../hooks/useScrollEndReached';\nimport { Search } from './search';\nimport { useSelectFieldContext } from './context';\n\ninterface SelectFieldListBoxProps extends ComponentProps<'div'>, UseScrollEndReachedParams {\n dropdownMaxWidth?: number;\n}\n\nconst MAX_HEIGHT = ((27 * 15) + 1); // 27px de height do list item * 15 itens máximos na exibição + 1px de borda listbox.\nconst ListBox = forwardRef<HTMLDivElement, SelectFieldListBoxProps>((props, ref) => {\n const { children, dropdownMaxWidth, onEndReached, onEndReachedThreshold, ...rest } = props;\n const {\n listBoxOpen, valueSelect, selectFieldId, selectContainerRef, notFoundFilterLabel,\n searchOnDropdown, isMultipleWithCheckboxes,\n } = useSelectFieldContext();\n\n const [listBoxStyles, setListBoxStyles] = useState<CSSProperties>({});\n const [filterResultIsEmpty, setFilterResultIsEmpty] = useState(false);\n const listBoxRef = useRef<HTMLUListElement>(null);\n const shouldBeShowSearchInput = searchOnDropdown || isMultipleWithCheckboxes;\n\n requestAnimationFrame(() => {\n const hasChildrenElementsInUL = (listBoxRef.current?.childNodes);\n const liElementsFiltered = (listBoxRef.current?.querySelectorAll(\n 'li[data-state-filtered=\"true\"]',\n ) ?? []) as HTMLLIElement[];\n const filterIsEmpty = !_.isEmpty(hasChildrenElementsInUL) && _.isEmpty(liElementsFiltered);\n setFilterResultIsEmpty(filterIsEmpty);\n });\n\n useEffect(() => {\n const updatePosition = () => {\n const selectPositionOnScreen = selectContainerRef.current?.getBoundingClientRect();\n if (selectPositionOnScreen) {\n const { top, left, width, height } = selectPositionOnScreen;\n const spaceBelow = window.innerHeight - (top + height);\n const spaceAbove = top;\n const shouldOpenUp = spaceBelow < MAX_HEIGHT && spaceAbove > spaceBelow;\n\n const styles: CSSProperties = {\n left: left + window.scrollX,\n minWidth: dropdownMaxWidth ?? width,\n };\n\n if (shouldOpenUp) {\n styles.bottom = window.innerHeight - top - window.scrollY;\n styles.maxHeight = Math.min(MAX_HEIGHT, spaceAbove);\n } else {\n styles.top = top + height + window.scrollY;\n styles.maxHeight = Math.min(MAX_HEIGHT, spaceBelow);\n }\n\n setListBoxStyles(styles);\n }\n };\n\n if (listBoxOpen) {\n updatePosition();\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n }\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [listBoxOpen, valueSelect, selectContainerRef]);\n\n useScrollEndReached({\n elementRef: listBoxRef,\n onEndReached,\n onEndReachedThreshold,\n });\n\n return (\n <div\n ref={ref}\n style={listBoxStyles}\n aria-expanded={listBoxOpen}\n className=\"select-field-listbox\"\n data-testid=\"test-select-field-listbox\"\n data-dropdown-max-width={dropdownMaxWidth}\n {...rest}>\n {shouldBeShowSearchInput && (<Search />)}\n <ul\n id={selectFieldId}\n role=\"listbox\"\n ref={listBoxRef}>\n {children}\n {filterResultIsEmpty && (\n <li\n tabIndex={-1}\n aria-disabled={true}\n aria-label={notFoundFilterLabel}\n key=\"not-found-values\"\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n role=\"option\"\n id=\"not-found-values\"\n className=\"not-found-values\"\n onClick={(event) => { event.preventDefault(); }}\n onMouseDown={(event) => { event.preventDefault(); }}>\n {notFoundFilterLabel}\n </li>\n )}\n </ul>\n </div>\n );\n});\n\nListBox.displayName = 'SelectListBox';\nexport { ListBox };\nexport type { SelectFieldListBoxProps };\n"],"names":["MAX_HEIGHT","ListBox","forwardRef","props","ref","children","dropdownMaxWidth","onEndReached","onEndReachedThreshold","rest","listBoxOpen","valueSelect","selectFieldId","selectContainerRef","notFoundFilterLabel","searchOnDropdown","isMultipleWithCheckboxes","useSelectFieldContext","listBoxStyles","setListBoxStyles","useState","filterResultIsEmpty","setFilterResultIsEmpty","listBoxRef","useRef","shouldBeShowSearchInput","requestAnimationFrame","hasChildrenElementsInUL","current","childNodes","liElementsFiltered","querySelectorAll","filterIsEmpty","_","isEmpty","useEffect","updatePosition","selectPositionOnScreen","getBoundingClientRect","top","left","width","height","spaceBelow","window","innerHeight","spaceAbove","shouldOpenUp","styles","scrollX","minWidth","bottom","scrollY","maxHeight","Math","min","addEventListener","removeEventListener","useScrollEndReached","elementRef","event","preventDefault","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"listbox.js","sources":["../../../src/lib/inputs2/selectfield/listbox.tsx"],"sourcesContent":["import _ from 'lodash';\nimport { ComponentProps, CSSProperties, forwardRef, useEffect, useRef, useState } from 'react';\nimport { UseScrollEndReachedParams } from 'src/lib/hooks/useScrollEndReached/types';\nimport { useScrollEndReached } from '../../hooks/useScrollEndReached';\nimport { Search } from './search';\nimport { useSelectFieldContext } from './context';\n\ninterface SelectFieldListBoxProps extends ComponentProps<'div'>, UseScrollEndReachedParams {\n dropdownMaxWidth?: number;\n}\n\nconst MAX_HEIGHT = ((27 * 15) + 1); // 27px de height do list item * 15 itens máximos na exibição + 1px de borda listbox.\nconst ListBox = forwardRef<HTMLDivElement, SelectFieldListBoxProps>((props, ref) => {\n const {\n children, dropdownMaxWidth, onEndReached, onEndReachedThreshold, itemsCount, ...rest\n } = props;\n const {\n listBoxOpen, valueSelect, selectFieldId, selectContainerRef, notFoundFilterLabel,\n searchOnDropdown, isMultipleWithCheckboxes,\n } = useSelectFieldContext();\n\n const [listBoxStyles, setListBoxStyles] = useState<CSSProperties>({});\n const [filterResultIsEmpty, setFilterResultIsEmpty] = useState(false);\n const listBoxRef = useRef<HTMLUListElement>(null);\n const shouldBeShowSearchInput = searchOnDropdown || isMultipleWithCheckboxes;\n\n requestAnimationFrame(() => {\n const hasChildrenElementsInUL = (listBoxRef.current?.childNodes);\n const liElementsFiltered = (listBoxRef.current?.querySelectorAll(\n 'li[data-state-filtered=\"true\"]',\n ) ?? []) as HTMLLIElement[];\n const filterIsEmpty = !_.isEmpty(hasChildrenElementsInUL) && _.isEmpty(liElementsFiltered);\n setFilterResultIsEmpty(filterIsEmpty);\n });\n\n useEffect(() => {\n const updatePosition = () => {\n const selectPositionOnScreen = selectContainerRef.current?.getBoundingClientRect();\n if (selectPositionOnScreen) {\n const { top, left, width, height } = selectPositionOnScreen;\n const spaceBelow = window.innerHeight - (top + height);\n const spaceAbove = top;\n const shouldOpenUp = spaceBelow < MAX_HEIGHT && spaceAbove > spaceBelow;\n\n const styles: CSSProperties = {\n left: left + window.scrollX,\n minWidth: dropdownMaxWidth ?? width,\n };\n\n if (shouldOpenUp) {\n styles.bottom = window.innerHeight - top - window.scrollY;\n styles.maxHeight = Math.min(MAX_HEIGHT, spaceAbove);\n } else {\n styles.top = top + height + window.scrollY;\n styles.maxHeight = Math.min(MAX_HEIGHT, spaceBelow);\n }\n\n setListBoxStyles(styles);\n }\n };\n\n if (listBoxOpen) {\n updatePosition();\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n }\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [listBoxOpen, valueSelect, selectContainerRef]);\n\n useScrollEndReached({\n elementRef: listBoxRef,\n onEndReached,\n onEndReachedThreshold,\n itemsCount,\n });\n\n return (\n <div\n ref={ref}\n style={listBoxStyles}\n aria-expanded={listBoxOpen}\n className=\"select-field-listbox\"\n data-testid=\"test-select-field-listbox\"\n data-dropdown-max-width={dropdownMaxWidth}\n {...rest}>\n {shouldBeShowSearchInput && (<Search />)}\n <ul\n id={selectFieldId}\n role=\"listbox\"\n ref={listBoxRef}>\n {children}\n {filterResultIsEmpty && (\n <li\n tabIndex={-1}\n aria-disabled={true}\n aria-label={notFoundFilterLabel}\n key=\"not-found-values\"\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n role=\"option\"\n id=\"not-found-values\"\n className=\"not-found-values\"\n onClick={(event) => { event.preventDefault(); }}\n onMouseDown={(event) => { event.preventDefault(); }}>\n {notFoundFilterLabel}\n </li>\n )}\n </ul>\n </div>\n );\n});\n\nListBox.displayName = 'SelectListBox';\nexport { ListBox };\nexport type { SelectFieldListBoxProps };\n"],"names":["MAX_HEIGHT","ListBox","forwardRef","props","ref","children","dropdownMaxWidth","onEndReached","onEndReachedThreshold","itemsCount","rest","listBoxOpen","valueSelect","selectFieldId","selectContainerRef","notFoundFilterLabel","searchOnDropdown","isMultipleWithCheckboxes","useSelectFieldContext","listBoxStyles","setListBoxStyles","useState","filterResultIsEmpty","setFilterResultIsEmpty","listBoxRef","useRef","shouldBeShowSearchInput","requestAnimationFrame","hasChildrenElementsInUL","current","childNodes","liElementsFiltered","querySelectorAll","filterIsEmpty","_","isEmpty","useEffect","updatePosition","selectPositionOnScreen","getBoundingClientRect","top","left","width","height","spaceBelow","window","innerHeight","spaceAbove","shouldOpenUp","styles","scrollX","minWidth","bottom","scrollY","maxHeight","Math","min","addEventListener","removeEventListener","useScrollEndReached","elementRef","event","preventDefault","displayName"],"mappings":"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"}
@@ -5,7 +5,7 @@ import PanelContext from "./helpers.js";
5
5
  import NoPermission from "../noPermission/index.js";
6
6
  import { useScrollEndReached } from "../hooks/useScrollEndReached/index.js";
7
7
  const PanelContent = (t0) => {
8
- const $ = compilerRuntimeExports.c(13);
8
+ const $ = compilerRuntimeExports.c(14);
9
9
  let children;
10
10
  let customClass;
11
11
  let rest;
@@ -28,38 +28,41 @@ const PanelContent = (t0) => {
28
28
  opened,
29
29
  onEndReached,
30
30
  onEndReachedThreshold: t1,
31
+ itemsCount,
31
32
  hideContent
32
33
  } = useContext(PanelContext);
33
34
  const onEndReachedThreshold = t1 === void 0 ? 0.1 : t1;
34
35
  const rootElementRef = useRef(null);
35
36
  let t2;
36
- if ($[4] !== onEndReached || $[5] !== onEndReachedThreshold) {
37
+ if ($[4] !== itemsCount || $[5] !== onEndReached || $[6] !== onEndReachedThreshold) {
37
38
  t2 = {
38
39
  elementRef: rootElementRef,
39
40
  onEndReached,
40
- onEndReachedThreshold
41
+ onEndReachedThreshold,
42
+ itemsCount
41
43
  };
42
- $[4] = onEndReached;
43
- $[5] = onEndReachedThreshold;
44
- $[6] = t2;
44
+ $[4] = itemsCount;
45
+ $[5] = onEndReached;
46
+ $[6] = onEndReachedThreshold;
47
+ $[7] = t2;
45
48
  } else {
46
- t2 = $[6];
49
+ t2 = $[7];
47
50
  }
48
51
  useScrollEndReached(t2);
49
52
  if (!opened) {
50
53
  return null;
51
54
  }
52
55
  let t3;
53
- if ($[7] !== children || $[8] !== customClass || $[9] !== hideContent || $[10] !== opened || $[11] !== rest) {
56
+ if ($[8] !== children || $[9] !== customClass || $[10] !== hideContent || $[11] !== opened || $[12] !== rest) {
54
57
  t3 = hideContent ? /* @__PURE__ */ jsx(NoPermission, {}) : /* @__PURE__ */ jsx("div", { ref: rootElementRef, className: `panel-content ${customClass ?? ""}`, ...rest, children: opened && children });
55
- $[7] = children;
56
- $[8] = customClass;
57
- $[9] = hideContent;
58
- $[10] = opened;
59
- $[11] = rest;
60
- $[12] = t3;
58
+ $[8] = children;
59
+ $[9] = customClass;
60
+ $[10] = hideContent;
61
+ $[11] = opened;
62
+ $[12] = rest;
63
+ $[13] = t3;
61
64
  } else {
62
- t3 = $[12];
65
+ t3 = $[13];
63
66
  }
64
67
  return t3;
65
68
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sources":["../../src/lib/panel/Content.tsx"],"sourcesContent":["import { useContext, useRef } from 'react';\nimport PanelContext from './helpers';\nimport NoPermission from '../noPermission';\nimport { IPanelContentProps } from './types';\nimport { useScrollEndReached } from '../hooks/useScrollEndReached';\n\nconst PanelContent = ({ customClass, children, ...rest }: IPanelContentProps) => {\n const {\n opened, onEndReached, onEndReachedThreshold = 0.1, hideContent,\n } = useContext(PanelContext);\n const rootElementRef = useRef<HTMLDivElement>(null);\n \n useScrollEndReached({\n elementRef: rootElementRef,\n onEndReached,\n onEndReachedThreshold,\n });\n\n if (!opened) return null;\n return (\n hideContent\n ? (\n <NoPermission />\n )\n : (\n <div\n ref={rootElementRef}\n className={`panel-content ${customClass ?? ''}`}\n {...rest}>\n {opened && children}\n </div>\n )\n );\n};\n\nexport default PanelContent;\n"],"names":["PanelContent","t0","$","_c","children","customClass","rest","opened","onEndReached","onEndReachedThreshold","t1","hideContent","useContext","PanelContext","undefined","rootElementRef","useRef","t2","elementRef","useScrollEndReached","t3"],"mappings":";;;;;;AAMA,MAAMA,eAAeC,CAAAA,OAAA;AAAA,QAAAC,IAAAC,uBAAAA,EAAA,EAAA;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAJ,SAAAD,IAAA;AAAC,KAAA;AAAA,MAAAI;AAAAA,MAAAD;AAAAA,MAAA,GAAAE;AAAAA,IAAAA,IAAAL;AAAsDC,WAAAD;AAAAC,WAAAE;AAAAF,WAAAG;AAAAH,WAAAI;AAAAA,EAAA,OAAA;AAAAF,eAAAF,EAAA,CAAA;AAAAG,kBAAAH,EAAA,CAAA;AAAAI,WAAAJ,EAAA,CAAA;AAAA,EAAA;AAC1E,QAAA;AAAA,IAAAK;AAAAA,IAAAC;AAAAA,IAAAC,uBAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAEIC,WAAWC,YAAY;AADH,QAAAJ,wBAAAC,OAAAI,SAAA,MAAAJ;AAExB,QAAAK,iBAAuBC,OAAuB,IAAI;AAAE,MAAAC;AAAA,MAAAf,EAAA,CAAA,MAAAM,gBAAAN,SAAAO,uBAAA;AAEhCQ,SAAA;AAAA,MAAAC,YACNH;AAAAA,MAAcP;AAAAA,MAAAC;AAAAA,IAAAA;AAG3BP,WAAAM;AAAAN,WAAAO;AAAAP,WAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,EAAA,CAAA;AAAA,EAAA;AAJDiB,sBAAoBF,EAInB;AAED,MAAI,CAACV,QAAM;AAAA,WAAS;AAAA,EAAI;AAAC,MAAAa;AAAA,MAAAlB,EAAA,CAAA,MAAAE,YAAAF,EAAA,CAAA,MAAAG,eAAAH,EAAA,CAAA,MAAAS,eAAAT,EAAA,EAAA,MAAAK,UAAAL,UAAAI,MAAA;AAEvBc,SAAAT,cAEI,oBAAC,cAAA,CAAA,CAAY,IAGb,oBAAA,SACOI,KAAAA,gBACM,WAAA,iBAAiBV,eAAA,EAAiB,OACzCC,MACHC,oBAAAH,UACH;AACCF,WAAAE;AAAAF,WAAAG;AAAAH,WAAAS;AAAAT,YAAAK;AAAAL,YAAAI;AAAAJ,YAAAkB;AAAAA,EAAA,OAAA;AAAAA,SAAAlB,EAAA,EAAA;AAAA,EAAA;AAAA,SAXLkB;AAWK;"}
1
+ {"version":3,"file":"Content.js","sources":["../../src/lib/panel/Content.tsx"],"sourcesContent":["import { useContext, useRef } from 'react';\nimport PanelContext from './helpers';\nimport NoPermission from '../noPermission';\nimport { IPanelContentProps } from './types';\nimport { useScrollEndReached } from '../hooks/useScrollEndReached';\n\nconst PanelContent = ({ customClass, children, ...rest }: IPanelContentProps) => {\n const {\n opened, onEndReached, onEndReachedThreshold = 0.1, itemsCount, hideContent,\n } = useContext(PanelContext);\n const rootElementRef = useRef<HTMLDivElement>(null);\n \n useScrollEndReached({\n elementRef: rootElementRef,\n onEndReached,\n onEndReachedThreshold,\n itemsCount,\n });\n\n if (!opened) return null;\n return (\n hideContent\n ? (\n <NoPermission />\n )\n : (\n <div\n ref={rootElementRef}\n className={`panel-content ${customClass ?? ''}`}\n {...rest}>\n {opened && children}\n </div>\n )\n );\n};\n\nexport default PanelContent;\n"],"names":["PanelContent","t0","$","_c","children","customClass","rest","opened","onEndReached","onEndReachedThreshold","t1","itemsCount","hideContent","useContext","PanelContext","undefined","rootElementRef","useRef","t2","elementRef","useScrollEndReached","t3"],"mappings":";;;;;;AAMA,MAAMA,eAAeC,CAAAA,OAAA;AAAA,QAAAC,IAAAC,uBAAAA,EAAA,EAAA;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAJ,SAAAD,IAAA;AAAC,KAAA;AAAA,MAAAI;AAAAA,MAAAD;AAAAA,MAAA,GAAAE;AAAAA,IAAAA,IAAAL;AAAsDC,WAAAD;AAAAC,WAAAE;AAAAF,WAAAG;AAAAH,WAAAI;AAAAA,EAAA,OAAA;AAAAF,eAAAF,EAAA,CAAA;AAAAG,kBAAAH,EAAA,CAAA;AAAAI,WAAAJ,EAAA,CAAA;AAAA,EAAA;AAC1E,QAAA;AAAA,IAAAK;AAAAA,IAAAC;AAAAA,IAAAC,uBAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAEIC,WAAWC,YAAY;AADH,QAAAL,wBAAAC,OAAAK,SAAA,MAAAL;AAExB,QAAAM,iBAAuBC,OAAuB,IAAI;AAAE,MAAAC;AAAA,MAAAhB,EAAA,CAAA,MAAAS,cAAAT,SAAAM,gBAAAN,EAAA,CAAA,MAAAO,uBAAA;AAEhCS,SAAA;AAAA,MAAAC,YACNH;AAAAA,MAAcR;AAAAA,MAAAC;AAAAA,MAAAE;AAAAA,IAAAA;AAI3BT,WAAAS;AAAAT,WAAAM;AAAAN,WAAAO;AAAAP,WAAAgB;AAAAA,EAAA,OAAA;AAAAA,SAAAhB,EAAA,CAAA;AAAA,EAAA;AALDkB,sBAAoBF,EAKnB;AAED,MAAI,CAACX,QAAM;AAAA,WAAS;AAAA,EAAI;AAAC,MAAAc;AAAA,MAAAnB,EAAA,CAAA,MAAAE,YAAAF,EAAA,CAAA,MAAAG,eAAAH,EAAA,EAAA,MAAAU,eAAAV,EAAA,EAAA,MAAAK,UAAAL,UAAAI,MAAA;AAEvBe,SAAAT,cAEI,oBAAC,cAAA,CAAA,CAAY,IAGb,oBAAA,SACOI,KAAAA,gBACM,WAAA,iBAAiBX,eAAA,EAAiB,OACzCC,MACHC,oBAAAH,UACH;AACCF,WAAAE;AAAAF,WAAAG;AAAAH,YAAAU;AAAAV,YAAAK;AAAAL,YAAAI;AAAAJ,YAAAmB;AAAAA,EAAA,OAAA;AAAAA,SAAAnB,EAAA,EAAA;AAAA,EAAA;AAAA,SAXLmB;AAWK;"}
@@ -1,3 +1,3 @@
1
1
  import { IPanelProps } from './types';
2
- declare const DefaultPanel: ({ startOpened, toggleable, customClass, children, title, gridCols, onEndReached, onEndReachedThreshold, permissionAttr, colorStyle, ...rest }: IPanelProps) => import("react/jsx-runtime").JSX.Element | null;
2
+ declare const DefaultPanel: ({ startOpened, toggleable, customClass, children, title, gridCols, onEndReached, onEndReachedThreshold, itemsCount, permissionAttr, colorStyle, ...rest }: IPanelProps) => import("react/jsx-runtime").JSX.Element | null;
3
3
  export default DefaultPanel;
@@ -6,11 +6,12 @@ import PanelHeader from "./Header.js";
6
6
  import PanelContext from "./helpers.js";
7
7
  import { OPTIONS_ON_DENIED, actionsOnPermissionDenied } from "../permissionValidations.js";
8
8
  const DefaultPanel = (t0) => {
9
- const $ = compilerRuntimeExports.c(37);
9
+ const $ = compilerRuntimeExports.c(39);
10
10
  let children;
11
11
  let colorStyle;
12
12
  let customClass;
13
13
  let gridCols;
14
+ let itemsCount;
14
15
  let onEndReached;
15
16
  let permissionAttr;
16
17
  let rest;
@@ -28,6 +29,7 @@ const DefaultPanel = (t0) => {
28
29
  gridCols,
29
30
  onEndReached,
30
31
  onEndReachedThreshold: t2,
32
+ itemsCount,
31
33
  permissionAttr,
32
34
  colorStyle,
33
35
  ...rest
@@ -37,25 +39,27 @@ const DefaultPanel = (t0) => {
37
39
  $[2] = colorStyle;
38
40
  $[3] = customClass;
39
41
  $[4] = gridCols;
40
- $[5] = onEndReached;
41
- $[6] = permissionAttr;
42
- $[7] = rest;
43
- $[8] = t1;
44
- $[9] = t2;
45
- $[10] = title;
46
- $[11] = toggleable;
42
+ $[5] = itemsCount;
43
+ $[6] = onEndReached;
44
+ $[7] = permissionAttr;
45
+ $[8] = rest;
46
+ $[9] = t1;
47
+ $[10] = t2;
48
+ $[11] = title;
49
+ $[12] = toggleable;
47
50
  } else {
48
51
  children = $[1];
49
52
  colorStyle = $[2];
50
53
  customClass = $[3];
51
54
  gridCols = $[4];
52
- onEndReached = $[5];
53
- permissionAttr = $[6];
54
- rest = $[7];
55
- t1 = $[8];
56
- t2 = $[9];
57
- title = $[10];
58
- toggleable = $[11];
55
+ itemsCount = $[5];
56
+ onEndReached = $[6];
57
+ permissionAttr = $[7];
58
+ rest = $[8];
59
+ t1 = $[9];
60
+ t2 = $[10];
61
+ title = $[11];
62
+ toggleable = $[12];
59
63
  }
60
64
  const startOpened = t1 === void 0 ? true : t1;
61
65
  const onEndReachedThreshold = t2 === void 0 ? 0.1 : t2;
@@ -65,45 +69,45 @@ const DefaultPanel = (t0) => {
65
69
  unvisible
66
70
  } = OPTIONS_ON_DENIED;
67
71
  let t3;
68
- if ($[12] !== permissionAttr) {
72
+ if ($[13] !== permissionAttr) {
69
73
  t3 = actionsOnPermissionDenied([hideContent, unvisible], permissionAttr);
70
- $[12] = permissionAttr;
71
- $[13] = t3;
74
+ $[13] = permissionAttr;
75
+ $[14] = t3;
72
76
  } else {
73
- t3 = $[13];
77
+ t3 = $[14];
74
78
  }
75
79
  const [onDenied] = useState(t3);
76
80
  let t4;
77
- if ($[14] !== colorStyle || $[15] !== customClass) {
81
+ if ($[15] !== colorStyle || $[16] !== customClass) {
78
82
  t4 = () => {
79
83
  let cssClass = `panel-component ${customClass}`;
80
84
  cssClass = cssClass + (colorStyle !== "" ? ` -${colorStyle}` : "");
81
85
  return cssClass;
82
86
  };
83
- $[14] = colorStyle;
84
- $[15] = customClass;
85
- $[16] = t4;
87
+ $[15] = colorStyle;
88
+ $[16] = customClass;
89
+ $[17] = t4;
86
90
  } else {
87
- t4 = $[16];
91
+ t4 = $[17];
88
92
  }
89
93
  const getCssClass = t4;
90
94
  let t5;
91
- if ($[17] !== children || $[18] !== getCssClass || $[19] !== rest || $[20] !== title) {
95
+ if ($[18] !== children || $[19] !== getCssClass || $[20] !== rest || $[21] !== title) {
92
96
  t5 = () => /* @__PURE__ */ jsxs("div", { className: getCssClass(), ...rest, children: [
93
97
  title && /* @__PURE__ */ jsx(PanelHeader, { title }),
94
98
  children
95
99
  ] });
96
- $[17] = children;
97
- $[18] = getCssClass;
98
- $[19] = rest;
99
- $[20] = title;
100
- $[21] = t5;
100
+ $[18] = children;
101
+ $[19] = getCssClass;
102
+ $[20] = rest;
103
+ $[21] = title;
104
+ $[22] = t5;
101
105
  } else {
102
- t5 = $[21];
106
+ t5 = $[22];
103
107
  }
104
108
  const renderContent = t5;
105
109
  let t6;
106
- if ($[22] !== onDenied.hideContent || $[23] !== onDenied.unvisible || $[24] !== onEndReached || $[25] !== onEndReachedThreshold || $[26] !== opened || $[27] !== toggleable) {
110
+ if ($[23] !== itemsCount || $[24] !== onDenied.hideContent || $[25] !== onDenied.unvisible || $[26] !== onEndReached || $[27] !== onEndReachedThreshold || $[28] !== opened || $[29] !== toggleable) {
107
111
  t6 = () => ({
108
112
  toggleable,
109
113
  handlerToggleable: () => {
@@ -112,48 +116,50 @@ const DefaultPanel = (t0) => {
112
116
  opened,
113
117
  onEndReached,
114
118
  onEndReachedThreshold,
119
+ itemsCount,
115
120
  hideContent: onDenied.hideContent,
116
121
  unvisible: onDenied.unvisible
117
122
  });
118
- $[22] = onDenied.hideContent;
119
- $[23] = onDenied.unvisible;
120
- $[24] = onEndReached;
121
- $[25] = onEndReachedThreshold;
122
- $[26] = opened;
123
- $[27] = toggleable;
124
- $[28] = t6;
123
+ $[23] = itemsCount;
124
+ $[24] = onDenied.hideContent;
125
+ $[25] = onDenied.unvisible;
126
+ $[26] = onEndReached;
127
+ $[27] = onEndReachedThreshold;
128
+ $[28] = opened;
129
+ $[29] = toggleable;
130
+ $[30] = t6;
125
131
  } else {
126
- t6 = $[28];
132
+ t6 = $[30];
127
133
  }
128
134
  const contextValues = t6;
129
135
  if (onDenied.unvisible) {
130
136
  return null;
131
137
  }
132
138
  let t7;
133
- if ($[29] !== contextValues) {
139
+ if ($[31] !== contextValues) {
134
140
  t7 = contextValues();
135
- $[29] = contextValues;
136
- $[30] = t7;
141
+ $[31] = contextValues;
142
+ $[32] = t7;
137
143
  } else {
138
- t7 = $[30];
144
+ t7 = $[32];
139
145
  }
140
146
  let t8;
141
- if ($[31] !== gridCols || $[32] !== renderContent) {
147
+ if ($[33] !== gridCols || $[34] !== renderContent) {
142
148
  t8 = gridCols ? /* @__PURE__ */ jsx(GridCol, { cols: gridCols, children: renderContent() }) : renderContent();
143
- $[31] = gridCols;
144
- $[32] = renderContent;
145
- $[33] = t8;
149
+ $[33] = gridCols;
150
+ $[34] = renderContent;
151
+ $[35] = t8;
146
152
  } else {
147
- t8 = $[33];
153
+ t8 = $[35];
148
154
  }
149
155
  let t9;
150
- if ($[34] !== t7 || $[35] !== t8) {
156
+ if ($[36] !== t7 || $[37] !== t8) {
151
157
  t9 = /* @__PURE__ */ jsx(PanelContext.Provider, { value: t7, children: t8 });
152
- $[34] = t7;
153
- $[35] = t8;
154
- $[36] = t9;
158
+ $[36] = t7;
159
+ $[37] = t8;
160
+ $[38] = t9;
155
161
  } else {
156
- t9 = $[36];
162
+ t9 = $[38];
157
163
  }
158
164
  return t9;
159
165
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Default.js","sources":["../../src/lib/panel/Default.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Grid from '../gridlayout';\nimport Header from './Header';\nimport PanelContext from './helpers';\nimport { actionsOnPermissionDenied, OPTIONS_ON_DENIED } from '../permissionValidations';\nimport { IPanelProps, ContextProps } from './types';\nimport { OnDenied } from '../@types/PermissionAttr';\n\nconst DefaultPanel = ({\n startOpened = true, toggleable, customClass, children, title, gridCols, onEndReached,\n onEndReachedThreshold = 0.1, permissionAttr, colorStyle, ...rest\n}: IPanelProps) => {\n const [opened, setOpened] = useState(startOpened);\n const { hideContent, unvisible } = OPTIONS_ON_DENIED;\n const [onDenied] =\n useState<OnDenied>(actionsOnPermissionDenied([hideContent, unvisible], permissionAttr));\n\n const getCssClass = () => {\n let cssClass = `panel-component ${customClass}`;\n cssClass += colorStyle !== '' ? ` -${colorStyle}` : '';\n return cssClass;\n };\n\n const renderContent = () => (\n <div className={getCssClass()} {...rest}>\n {title && <Header title={title} />}\n {children}\n </div>\n );\n\n const contextValues = () => ({\n toggleable,\n handlerToggleable: () => { setOpened(!opened); },\n opened,\n onEndReached,\n onEndReachedThreshold,\n hideContent: onDenied.hideContent,\n unvisible: onDenied.unvisible,\n }) as ContextProps;\n\n if (onDenied.unvisible) return null;\n\n return (\n <PanelContext.Provider value={contextValues()}>\n { gridCols\n ? (\n <Grid cols={gridCols}>{renderContent()}</Grid>\n )\n : (\n renderContent()\n )}\n </PanelContext.Provider>\n );\n};\n\nexport default DefaultPanel;\n"],"names":["DefaultPanel","t0","$","_c","children","colorStyle","customClass","gridCols","onEndReached","permissionAttr","rest","t1","t2","title","toggleable","startOpened","onEndReachedThreshold","undefined","opened","setOpened","useState","hideContent","unvisible","OPTIONS_ON_DENIED","t3","actionsOnPermissionDenied","onDenied","t4","cssClass","getCssClass","t5","Header","renderContent","t6","handlerToggleable","contextValues","t7","t8","Grid","t9"],"mappings":"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"}
1
+ {"version":3,"file":"Default.js","sources":["../../src/lib/panel/Default.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Grid from '../gridlayout';\nimport Header from './Header';\nimport PanelContext from './helpers';\nimport { actionsOnPermissionDenied, OPTIONS_ON_DENIED } from '../permissionValidations';\nimport { IPanelProps, ContextProps } from './types';\nimport { OnDenied } from '../@types/PermissionAttr';\n\nconst DefaultPanel = ({\n startOpened = true, toggleable, customClass, children, title, gridCols, onEndReached,\n onEndReachedThreshold = 0.1, itemsCount, permissionAttr, colorStyle, ...rest\n}: IPanelProps) => {\n const [opened, setOpened] = useState(startOpened);\n const { hideContent, unvisible } = OPTIONS_ON_DENIED;\n const [onDenied] =\n useState<OnDenied>(actionsOnPermissionDenied([hideContent, unvisible], permissionAttr));\n\n const getCssClass = () => {\n let cssClass = `panel-component ${customClass}`;\n cssClass += colorStyle !== '' ? ` -${colorStyle}` : '';\n return cssClass;\n };\n\n const renderContent = () => (\n <div className={getCssClass()} {...rest}>\n {title && <Header title={title} />}\n {children}\n </div>\n );\n\n const contextValues = () => ({\n toggleable,\n handlerToggleable: () => { setOpened(!opened); },\n opened,\n onEndReached,\n onEndReachedThreshold,\n itemsCount,\n hideContent: onDenied.hideContent,\n unvisible: onDenied.unvisible,\n }) as ContextProps;\n\n if (onDenied.unvisible) return null;\n\n return (\n <PanelContext.Provider value={contextValues()}>\n { gridCols\n ? (\n <Grid cols={gridCols}>{renderContent()}</Grid>\n )\n : (\n renderContent()\n )}\n </PanelContext.Provider>\n );\n};\n\nexport default DefaultPanel;\n"],"names":["DefaultPanel","t0","$","_c","children","colorStyle","customClass","gridCols","itemsCount","onEndReached","permissionAttr","rest","t1","t2","title","toggleable","startOpened","onEndReachedThreshold","undefined","opened","setOpened","useState","hideContent","unvisible","OPTIONS_ON_DENIED","t3","actionsOnPermissionDenied","onDenied","t4","cssClass","getCssClass","t5","Header","renderContent","t6","handlerToggleable","contextValues","t7","t8","Grid","t9"],"mappings":";;;;;;;AAQA,MAAMA,eAAeC,CAAAA,OAAA;AAAA,QAAAC,IAAAC,uBAAAA,EAAA,EAAA;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAC;AAAA,MAAAb,SAAAD,IAAA;AAAC,KAAA;AAAA,MAAAe,aAAAJ;AAAAA,MAAAG;AAAAA,MAAAT;AAAAA,MAAAF;AAAAA,MAAAU;AAAAA,MAAAP;AAAAA,MAAAE;AAAAA,MAAAQ,uBAAAJ;AAAAA,MAAAL;AAAAA,MAAAE;AAAAA,MAAAL;AAAAA,MAAA,GAAAM;AAAAA,IAAAA,IAAAV;AAGRC,WAAAD;AAAAC,WAAAE;AAAAF,WAAAG;AAAAH,WAAAI;AAAAJ,WAAAK;AAAAL,WAAAM;AAAAN,WAAAO;AAAAP,WAAAQ;AAAAR,WAAAS;AAAAT,WAAAU;AAAAV,YAAAW;AAAAX,YAAAY;AAAAZ,YAAAa;AAAAA,EAAA,OAAA;AAAAX,eAAAF,EAAA,CAAA;AAAAG,iBAAAH,EAAA,CAAA;AAAAI,kBAAAJ,EAAA,CAAA;AAAAK,eAAAL,EAAA,CAAA;AAAAM,iBAAAN,EAAA,CAAA;AAAAO,mBAAAP,EAAA,CAAA;AAAAQ,qBAAAR,EAAA,CAAA;AAAAS,WAAAT,EAAA,CAAA;AAAAU,SAAAV,EAAA,CAAA;AAAAW,SAAAX,EAAA,EAAA;AAAAY,YAAAZ,EAAA,EAAA;AAAAa,iBAAAb,EAAA,EAAA;AAAA,EAAA;AAFZ,QAAAc,cAAAJ,OAAAM,SAAA,OAAAN;AACA,QAAAK,wBAAAJ,OAAAK,SAAA,MAAAL;AAEA,QAAA,CAAAM,QAAAC,SAAA,IAA4BC,SAASL,WAAW;AAChD,QAAA;AAAA,IAAAM;AAAAA,IAAAC;AAAAA,EAAAA,IAAmCC;AAAkB,MAAAC;AAAA,MAAAvB,UAAAQ,gBAAA;AAEhCe,SAAAC,0BAA0B,CAACJ,aAAaC,SAAS,GAAGb,cAAc;AAACR,YAAAQ;AAAAR,YAAAuB;AAAAA,EAAA,OAAA;AAAAA,SAAAvB,EAAA,EAAA;AAAA,EAAA;AADxF,QAAA,CAAAyB,QAAA,IACEN,SAAmBI,EAAmE;AAAE,MAAAG;AAAA,MAAA1B,EAAA,EAAA,MAAAG,cAAAH,UAAAI,aAAA;AAEtEsB,SAAAA,MAAA;AAClB,UAAAC,WAAe,mBAAmBvB,WAAW;AAC7CuB,iBAAAA,YAAYxB,eAAe,KAAf,KAAyBA,UAAU,KAAnC;AAA0C,aAC/CwB;AAAAA,IAAQ;AAChB3B,YAAAG;AAAAH,YAAAI;AAAAJ,YAAA0B;AAAAA,EAAA,OAAA;AAAAA,SAAA1B,EAAA,EAAA;AAAA,EAAA;AAJD,QAAA4B,cAAoBF;AAIlB,MAAAG;AAAA,MAAA7B,EAAA,EAAA,MAAAE,YAAAF,EAAA,EAAA,MAAA4B,eAAA5B,EAAA,EAAA,MAAAS,QAAAT,UAAAY,OAAA;AAEoBiB,SAAAA,MACpB,qBAAA,OAAA,EAAgB,WAAAD,YAAAA,GAAa,GAAMnB,MAChCG,UAAAA;AAAAA,MAAAA,SAAS,oBAACkB,eAAclB,MAAAA,CAAK;AAAA,MAC7BV;AAAAA,IAAAA,GACH;AACDF,YAAAE;AAAAF,YAAA4B;AAAA5B,YAAAS;AAAAT,YAAAY;AAAAZ,YAAA6B;AAAAA,EAAA,OAAA;AAAAA,SAAA7B,EAAA,EAAA;AAAA,EAAA;AALD,QAAA+B,gBAAsBF;AAKpB,MAAAG;AAAA,MAAAhC,EAAA,EAAA,MAAAM,cAAAN,EAAA,EAAA,MAAAyB,SAAAL,eAAApB,EAAA,EAAA,MAAAyB,SAAAJ,aAAArB,EAAA,EAAA,MAAAO,gBAAAP,EAAA,EAAA,MAAAe,yBAAAf,EAAA,EAAA,MAAAiB,UAAAjB,UAAAa,YAAA;AAEoBmB,SAAAA,OAAO;AAAA,MAAAnB;AAAAA,MAAAoB,mBAERA,MAAA;AAAQf,kBAAU,CAACD,MAAM;AAAA,MAAC;AAAA,MAAGA;AAAAA,MAAAV;AAAAA,MAAAQ;AAAAA,MAAAT;AAAAA,MAAAc,aAKnCK,SAAQL;AAAAA,MAAYC,WACtBI,SAAQJ;AAAAA,IAAAA;AACHrB,YAAAM;AAAAN,MAAA,EAAA,IAAAyB,SAAAL;AAAApB,MAAA,EAAA,IAAAyB,SAAAJ;AAAArB,YAAAO;AAAAP,YAAAe;AAAAf,YAAAiB;AAAAjB,YAAAa;AAAAb,YAAAgC;AAAAA,EAAA,OAAA;AAAAA,SAAAhC,EAAA,EAAA;AAAA,EAAA;AATlB,QAAAkC,gBAAsBF;AAWtB,MAAIP,SAAQJ,WAAU;AAAA,WAAS;AAAA,EAAI;AAAC,MAAAc;AAAA,MAAAnC,UAAAkC,eAAA;AAGJC,SAAAD,cAAAA;AAAelC,YAAAkC;AAAAlC,YAAAmC;AAAAA,EAAA,OAAA;AAAAA,SAAAnC,EAAA,EAAA;AAAA,EAAA;AAAA,MAAAoC;AAAA,MAAApC,EAAA,EAAA,MAAAK,YAAAL,UAAA+B,eAAA;AACzCK,SAAA/B,+BAEGgC,SAAA,EAAWhC,MAAAA,UAAW0B,UAAAA,gBAAc,CAAE,IAGrCA,cAAAA;AACD/B,YAAAK;AAAAL,YAAA+B;AAAA/B,YAAAoC;AAAAA,EAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AAAA,MAAAsC;AAAA,MAAAtC,EAAA,EAAA,MAAAmC,MAAAnC,UAAAoC,IAAA;AAPPE,6BAAA,aAAA,UAAA,EAA8B,OAAAH,IAC1BC,UAAAA,IAOJ;AAAwBpC,YAAAmC;AAAAnC,YAAAoC;AAAApC,YAAAsC;AAAAA,EAAA,OAAA;AAAAA,SAAAtC,EAAA,EAAA;AAAA,EAAA;AAAA,SARxBsC;AAQwB;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "2.2.0-beta.8",
3
+ "version": "2.2.0-beta.9",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",