@activecollab/components 1.0.264 → 1.0.266

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.
Files changed (56) hide show
  1. package/dist/cjs/components/Autocomplete/Autocomplete.js +10 -3
  2. package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/dist/cjs/components/CommandPallete/CommandPallete.js +119 -20
  4. package/dist/cjs/components/CommandPallete/CommandPallete.js.map +1 -1
  5. package/dist/cjs/components/CommandPallete/CommandPallete.styles.js +15 -3
  6. package/dist/cjs/components/CommandPallete/CommandPallete.styles.js.map +1 -1
  7. package/dist/cjs/components/CommandPallete/CommandPalleteHeader.js +21 -7
  8. package/dist/cjs/components/CommandPallete/CommandPalleteHeader.js.map +1 -1
  9. package/dist/cjs/components/CommandPallete/CommandPalleteItem.js +27 -7
  10. package/dist/cjs/components/CommandPallete/CommandPalleteItem.js.map +1 -1
  11. package/dist/cjs/components/CommandPallete/CommandPalleteList.js +2 -1
  12. package/dist/cjs/components/CommandPallete/CommandPalleteList.js.map +1 -1
  13. package/dist/cjs/components/CommandPallete/context/ModeContext.js +2 -3
  14. package/dist/cjs/components/CommandPallete/context/ModeContext.js.map +1 -1
  15. package/dist/cjs/components/CommandPallete/context/SelectedContext.js +21 -0
  16. package/dist/cjs/components/CommandPallete/context/SelectedContext.js.map +1 -0
  17. package/dist/cjs/components/CommandPallete/context/index.js +28 -0
  18. package/dist/cjs/components/CommandPallete/context/index.js.map +1 -0
  19. package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  20. package/dist/esm/components/Autocomplete/Autocomplete.js +10 -3
  21. package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
  22. package/dist/esm/components/CommandPallete/CommandPallete.d.ts +4 -7
  23. package/dist/esm/components/CommandPallete/CommandPallete.d.ts.map +1 -1
  24. package/dist/esm/components/CommandPallete/CommandPallete.js +111 -21
  25. package/dist/esm/components/CommandPallete/CommandPallete.js.map +1 -1
  26. package/dist/esm/components/CommandPallete/CommandPallete.styles.d.ts +5 -1
  27. package/dist/esm/components/CommandPallete/CommandPallete.styles.d.ts.map +1 -1
  28. package/dist/esm/components/CommandPallete/CommandPallete.styles.js +13 -2
  29. package/dist/esm/components/CommandPallete/CommandPallete.styles.js.map +1 -1
  30. package/dist/esm/components/CommandPallete/CommandPalleteHeader.d.ts.map +1 -1
  31. package/dist/esm/components/CommandPallete/CommandPalleteHeader.js +22 -11
  32. package/dist/esm/components/CommandPallete/CommandPalleteHeader.js.map +1 -1
  33. package/dist/esm/components/CommandPallete/CommandPalleteItem.d.ts +5 -6
  34. package/dist/esm/components/CommandPallete/CommandPalleteItem.d.ts.map +1 -1
  35. package/dist/esm/components/CommandPallete/CommandPalleteItem.js +23 -10
  36. package/dist/esm/components/CommandPallete/CommandPalleteItem.js.map +1 -1
  37. package/dist/esm/components/CommandPallete/CommandPalleteList.d.ts.map +1 -1
  38. package/dist/esm/components/CommandPallete/CommandPalleteList.js +2 -4
  39. package/dist/esm/components/CommandPallete/CommandPalleteList.js.map +1 -1
  40. package/dist/esm/components/CommandPallete/context/ModeContext.d.ts +2 -2
  41. package/dist/esm/components/CommandPallete/context/ModeContext.d.ts.map +1 -1
  42. package/dist/esm/components/CommandPallete/context/ModeContext.js +1 -2
  43. package/dist/esm/components/CommandPallete/context/ModeContext.js.map +1 -1
  44. package/dist/esm/components/CommandPallete/context/SelectedContext.d.ts +10 -0
  45. package/dist/esm/components/CommandPallete/context/SelectedContext.d.ts.map +1 -0
  46. package/dist/esm/components/CommandPallete/context/SelectedContext.js +12 -0
  47. package/dist/esm/components/CommandPallete/context/SelectedContext.js.map +1 -0
  48. package/dist/esm/components/CommandPallete/context/index.d.ts +3 -0
  49. package/dist/esm/components/CommandPallete/context/index.d.ts.map +1 -0
  50. package/dist/esm/components/CommandPallete/context/index.js +3 -0
  51. package/dist/esm/components/CommandPallete/context/index.js.map +1 -0
  52. package/dist/index.js +10 -3
  53. package/dist/index.js.map +1 -1
  54. package/dist/index.min.js +1 -1
  55. package/dist/index.min.js.map +1 -1
  56. package/package.json +2 -1
@@ -1,29 +1,49 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.CommandPalleteItem = void 0;
7
8
  var _classnames = _interopRequireDefault(require("classnames"));
8
- var _react = _interopRequireDefault(require("react"));
9
+ var _react = _interopRequireWildcard(require("react"));
9
10
  var _Typography = require("../Typography/Typography");
10
11
  var _CommandPallete = require("./CommandPallete.styles");
12
+ var _context = require("./context");
13
+ var _excluded = ["title", "renderIcon", "className", "index"];
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- var CommandPalleteItem = function CommandPalleteItem(_ref) {
17
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
18
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
19
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
20
+ var CommandPalleteItem = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
13
21
  var title = _ref.title,
14
22
  renderIcon = _ref.renderIcon,
15
- className = _ref.className;
23
+ className = _ref.className,
24
+ index = _ref.index,
25
+ rest = _objectWithoutProperties(_ref, _excluded);
16
26
  var icon = renderIcon();
17
- return /*#__PURE__*/_react.default.createElement(_CommandPallete.StyledCommandPalleteItem, {
27
+ var _useSelectedContext = (0, _context.useSelectedContext)(),
28
+ selected = _useSelectedContext.selected,
29
+ setSelected = _useSelectedContext.setSelected;
30
+ var onMouseOver = function onMouseOver() {
31
+ setSelected(index);
32
+ };
33
+ return /*#__PURE__*/_react.default.createElement(_CommandPallete.StyledCommandPalleteItem, _extends({}, rest, {
34
+ ref: ref,
18
35
  className: (0, _classnames.default)("cp-item", className),
19
- tabIndex: 1
20
- }, /*#__PURE__*/_react.default.createElement(_CommandPallete.StyledIcon, null, icon), /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
36
+ tabIndex: 1,
37
+ "aria-selected": selected === index,
38
+ onMouseOver: onMouseOver,
39
+ $selected: index === selected
40
+ }), /*#__PURE__*/_react.default.createElement(_CommandPallete.StyledIcon, null, icon), /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
21
41
  overflow: "truncate",
22
42
  whitespace: "no-wrap",
23
43
  variant: "Body 1",
24
44
  color: "primary"
25
45
  }, title));
26
- };
46
+ });
27
47
  exports.CommandPalleteItem = CommandPalleteItem;
28
48
  CommandPalleteItem.displayName = "CommandPalleteItem";
29
49
  //# sourceMappingURL=CommandPalleteItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalleteItem.js","names":["CommandPalleteItem","title","renderIcon","className","icon","classNames","displayName"],"sources":["../../../../src/components/CommandPallete/CommandPalleteItem.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { Typography } from \"../Typography/Typography\";\nimport { StyledCommandPalleteItem, StyledIcon } from \"./CommandPallete.styles\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface CommandPalleteItemProps {\n title: string;\n renderIcon: () => ReactNode;\n className?: string;\n}\n\nexport const CommandPalleteItem = ({\n title,\n renderIcon,\n className,\n}: CommandPalleteItemProps) => {\n const icon = renderIcon();\n\n return (\n <StyledCommandPalleteItem\n className={classNames(\"cp-item\", className)}\n tabIndex={1}\n >\n <StyledIcon>{icon}</StyledIcon>\n <Typography\n overflow=\"truncate\"\n whitespace=\"no-wrap\"\n variant=\"Body 1\"\n color=\"primary\"\n >\n {title}\n </Typography>\n </StyledCommandPalleteItem>\n );\n};\n\nCommandPalleteItem.displayName = \"CommandPalleteItem\";\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAA+E;AASxE,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkB,OAIA;EAAA,IAH7BC,KAAK,QAALA,KAAK;IACLC,UAAU,QAAVA,UAAU;IACVC,SAAS,QAATA,SAAS;EAET,IAAMC,IAAI,GAAGF,UAAU,EAAE;EAEzB,oBACE,6BAAC,wCAAwB;IACvB,SAAS,EAAE,IAAAG,mBAAU,EAAC,SAAS,EAAEF,SAAS,CAAE;IAC5C,QAAQ,EAAE;EAAE,gBAEZ,6BAAC,0BAAU,QAAEC,IAAI,CAAc,eAC/B,6BAAC,sBAAU;IACT,QAAQ,EAAC,UAAU;IACnB,UAAU,EAAC,SAAS;IACpB,OAAO,EAAC,QAAQ;IAChB,KAAK,EAAC;EAAS,GAEdH,KAAK,CACK,CACY;AAE/B,CAAC;AAAC;AAEFD,kBAAkB,CAACM,WAAW,GAAG,oBAAoB"}
1
+ {"version":3,"file":"CommandPalleteItem.js","names":["CommandPalleteItem","forwardRef","ref","title","renderIcon","className","index","rest","icon","useSelectedContext","selected","setSelected","onMouseOver","classNames","displayName"],"sources":["../../../../src/components/CommandPallete/CommandPalleteItem.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { forwardRef, HTMLAttributes, ReactNode, Ref } from \"react\";\nimport { Typography } from \"../Typography/Typography\";\nimport { StyledCommandPalleteItem, StyledIcon } from \"./CommandPallete.styles\";\nimport { useSelectedContext } from \"./context\";\n\nexport interface CommandPalleteItemProps extends HTMLAttributes<HTMLLIElement> {\n title: string;\n renderIcon: () => ReactNode;\n className?: string;\n index?: number;\n selected?: number;\n}\n\nexport const CommandPalleteItem = forwardRef(\n (\n { title, renderIcon, className, index, ...rest }: CommandPalleteItemProps,\n ref: Ref<HTMLLIElement>\n ) => {\n const icon = renderIcon();\n const { selected, setSelected } = useSelectedContext();\n\n const onMouseOver = () => {\n setSelected(index as number);\n };\n\n return (\n <StyledCommandPalleteItem\n {...rest}\n ref={ref}\n className={classNames(\"cp-item\", className)}\n tabIndex={1}\n aria-selected={selected === index}\n onMouseOver={onMouseOver}\n $selected={index === selected}\n >\n <StyledIcon>{icon}</StyledIcon>\n <Typography\n overflow=\"truncate\"\n whitespace=\"no-wrap\"\n variant=\"Body 1\"\n color=\"primary\"\n >\n {title}\n </Typography>\n </StyledCommandPalleteItem>\n );\n }\n);\n\nCommandPalleteItem.displayName = \"CommandPalleteItem\";\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AAA+C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUxC,IAAMA,kBAAkB,gBAAG,IAAAC,iBAAU,EAC1C,gBAEEC,GAAuB,EACpB;EAAA,IAFDC,KAAK,QAALA,KAAK;IAAEC,UAAU,QAAVA,UAAU;IAAEC,SAAS,QAATA,SAAS;IAAEC,KAAK,QAALA,KAAK;IAAKC,IAAI;EAG9C,IAAMC,IAAI,GAAGJ,UAAU,EAAE;EACzB,0BAAkC,IAAAK,2BAAkB,GAAE;IAA9CC,QAAQ,uBAARA,QAAQ;IAAEC,WAAW,uBAAXA,WAAW;EAE7B,IAAMC,WAAW,GAAG,SAAdA,WAAW,GAAS;IACxBD,WAAW,CAACL,KAAK,CAAW;EAC9B,CAAC;EAED,oBACE,6BAAC,wCAAwB,eACnBC,IAAI;IACR,GAAG,EAAEL,GAAI;IACT,SAAS,EAAE,IAAAW,mBAAU,EAAC,SAAS,EAAER,SAAS,CAAE;IAC5C,QAAQ,EAAE,CAAE;IACZ,iBAAeK,QAAQ,KAAKJ,KAAM;IAClC,WAAW,EAAEM,WAAY;IACzB,SAAS,EAAEN,KAAK,KAAKI;EAAS,iBAE9B,6BAAC,0BAAU,QAAEF,IAAI,CAAc,eAC/B,6BAAC,sBAAU;IACT,QAAQ,EAAC,UAAU;IACnB,UAAU,EAAC,SAAS;IACpB,OAAO,EAAC,QAAQ;IAChB,KAAK,EAAC;EAAS,GAEdL,KAAK,CACK,CACY;AAE/B,CAAC,CACF;AAAC;AAEFH,kBAAkB,CAACc,WAAW,GAAG,oBAAoB"}
@@ -14,7 +14,8 @@ var CommandPalleteList = function CommandPalleteList(_ref) {
14
14
  visible = _ref$visible === void 0 ? false : _ref$visible;
15
15
  return visible ? /*#__PURE__*/_react.default.createElement(_CommandPallete.StyledCommandPalleteList, {
16
16
  className: "cp-list",
17
- tabIndex: -1
17
+ tabIndex: -1,
18
+ role: "listbox"
18
19
  }, heading ? /*#__PURE__*/_react.default.createElement(_CommandPallete.StyledHeading, {
19
20
  tabIndex: -1
20
21
  }, heading) : null, children) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalleteList.js","names":["CommandPalleteList","children","heading","visible","displayName"],"sources":["../../../../src/components/CommandPallete/CommandPalleteList.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport {\n StyledCommandPalleteList,\n StyledHeading,\n} from \"./CommandPallete.styles\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface CommandPalleteListProps {\n heading?: string;\n visible?: boolean;\n}\n\nexport const CommandPalleteList = ({\n children,\n heading,\n visible = false,\n}: PropsWithChildren<CommandPalleteListProps>) => {\n return visible ? (\n <StyledCommandPalleteList className=\"cp-list\" tabIndex={-1}>\n {heading ? <StyledHeading tabIndex={-1}>{heading}</StyledHeading> : null}\n {children}\n </StyledCommandPalleteList>\n ) : null;\n};\n\nCommandPalleteList.displayName = \"CommandPalleteList\";\n"],"mappings":";;;;;;AAAA;AACA;AAGiC;AAQ1B,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkB,OAImB;EAAA,IAHhDC,QAAQ,QAARA,QAAQ;IACRC,OAAO,QAAPA,OAAO;IAAA,oBACPC,OAAO;IAAPA,OAAO,6BAAG,KAAK;EAEf,OAAOA,OAAO,gBACZ,6BAAC,wCAAwB;IAAC,SAAS,EAAC,SAAS;IAAC,QAAQ,EAAE,CAAC;EAAE,GACxDD,OAAO,gBAAG,6BAAC,6BAAa;IAAC,QAAQ,EAAE,CAAC;EAAE,GAAEA,OAAO,CAAiB,GAAG,IAAI,EACvED,QAAQ,CACgB,GACzB,IAAI;AACV,CAAC;AAAC;AAEFD,kBAAkB,CAACI,WAAW,GAAG,oBAAoB"}
1
+ {"version":3,"file":"CommandPalleteList.js","names":["CommandPalleteList","children","heading","visible","displayName"],"sources":["../../../../src/components/CommandPallete/CommandPalleteList.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport {\n StyledCommandPalleteList,\n StyledHeading,\n} from \"./CommandPallete.styles\";\n\nexport interface CommandPalleteListProps {\n heading?: string;\n visible?: boolean;\n}\n\nexport const CommandPalleteList = ({\n children,\n heading,\n visible = false,\n}: PropsWithChildren<CommandPalleteListProps>) => {\n return visible ? (\n <StyledCommandPalleteList className=\"cp-list\" tabIndex={-1} role=\"listbox\">\n {heading ? <StyledHeading tabIndex={-1}>{heading}</StyledHeading> : null}\n\n {children}\n </StyledCommandPalleteList>\n ) : null;\n};\n\nCommandPalleteList.displayName = \"CommandPalleteList\";\n"],"mappings":";;;;;;AAAA;AACA;AAGiC;AAO1B,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkB,OAImB;EAAA,IAHhDC,QAAQ,QAARA,QAAQ;IACRC,OAAO,QAAPA,OAAO;IAAA,oBACPC,OAAO;IAAPA,OAAO,6BAAG,KAAK;EAEf,OAAOA,OAAO,gBACZ,6BAAC,wCAAwB;IAAC,SAAS,EAAC,SAAS;IAAC,QAAQ,EAAE,CAAC,CAAE;IAAC,IAAI,EAAC;EAAS,GACvED,OAAO,gBAAG,6BAAC,6BAAa;IAAC,QAAQ,EAAE,CAAC;EAAE,GAAEA,OAAO,CAAiB,GAAG,IAAI,EAEvED,QAAQ,CACgB,GACzB,IAAI;AACV,CAAC;AAAC;AAEFD,kBAAkB,CAACI,WAAW,GAAG,oBAAoB"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useModeContext = exports.default = exports.ModeContextProvider = void 0;
6
+ exports.useModeContext = exports.ModeContextProvider = exports.ModeContext = void 0;
7
7
  var _react = require("react");
8
8
  var ModeContext = /*#__PURE__*/(0, _react.createContext)({
9
9
  mode: "default",
@@ -11,12 +11,11 @@ var ModeContext = /*#__PURE__*/(0, _react.createContext)({
11
11
  return null;
12
12
  }
13
13
  });
14
+ exports.ModeContext = ModeContext;
14
15
  var ModeContextProvider = ModeContext.Provider;
15
16
  exports.ModeContextProvider = ModeContextProvider;
16
17
  var useModeContext = function useModeContext() {
17
18
  return (0, _react.useContext)(ModeContext);
18
19
  };
19
20
  exports.useModeContext = useModeContext;
20
- var _default = ModeContext;
21
- exports.default = _default;
22
21
  //# sourceMappingURL=ModeContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModeContext.js","names":["ModeContext","createContext","mode","setMode","ModeContextProvider","Provider","useModeContext","useContext"],"sources":["../../../../../src/components/CommandPallete/context/ModeContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\ninterface ModeContextProps {\n mode: string;\n setMode: (value: string) => void;\n}\n\nconst ModeContext = createContext<ModeContextProps>({\n mode: \"default\",\n setMode: () => null,\n});\n\nexport const ModeContextProvider = ModeContext.Provider;\n\nexport const useModeContext = (): ModeContextProps => useContext(ModeContext);\n\nexport default ModeContext;\n"],"mappings":";;;;;;AAAA;AAOA,IAAMA,WAAW,gBAAG,IAAAC,oBAAa,EAAmB;EAClDC,IAAI,EAAE,SAAS;EACfC,OAAO,EAAE;IAAA,OAAM,IAAI;EAAA;AACrB,CAAC,CAAC;AAEK,IAAMC,mBAAmB,GAAGJ,WAAW,CAACK,QAAQ;AAAC;AAEjD,IAAMC,cAAc,GAAG,SAAjBA,cAAc;EAAA,OAA2B,IAAAC,iBAAU,EAACP,WAAW,CAAC;AAAA;AAAC;AAAA,eAE/DA,WAAW;AAAA"}
1
+ {"version":3,"file":"ModeContext.js","names":["ModeContext","createContext","mode","setMode","ModeContextProvider","Provider","useModeContext","useContext"],"sources":["../../../../../src/components/CommandPallete/context/ModeContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\ninterface ModeContextProps {\n mode: string;\n setMode: (value: string) => void;\n}\n\nexport const ModeContext = createContext<ModeContextProps>({\n mode: \"default\",\n setMode: () => null,\n});\n\nexport const ModeContextProvider = ModeContext.Provider;\n\nexport const useModeContext = (): ModeContextProps => useContext(ModeContext);\n"],"mappings":";;;;;;AAAA;AAOO,IAAMA,WAAW,gBAAG,IAAAC,oBAAa,EAAmB;EACzDC,IAAI,EAAE,SAAS;EACfC,OAAO,EAAE;IAAA,OAAM,IAAI;EAAA;AACrB,CAAC,CAAC;AAAC;AAEI,IAAMC,mBAAmB,GAAGJ,WAAW,CAACK,QAAQ;AAAC;AAEjD,IAAMC,cAAc,GAAG,SAAjBA,cAAc;EAAA,OAA2B,IAAAC,iBAAU,EAACP,WAAW,CAAC;AAAA;AAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSelectedContext = exports.SelectedContextProvider = exports.SelectedContext = void 0;
7
+ var _react = require("react");
8
+ var SelectedContext = /*#__PURE__*/(0, _react.createContext)({
9
+ selected: 0,
10
+ setSelected: function setSelected() {
11
+ return null;
12
+ }
13
+ });
14
+ exports.SelectedContext = SelectedContext;
15
+ var SelectedContextProvider = SelectedContext.Provider;
16
+ exports.SelectedContextProvider = SelectedContextProvider;
17
+ var useSelectedContext = function useSelectedContext() {
18
+ return (0, _react.useContext)(SelectedContext);
19
+ };
20
+ exports.useSelectedContext = useSelectedContext;
21
+ //# sourceMappingURL=SelectedContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectedContext.js","names":["SelectedContext","createContext","selected","setSelected","SelectedContextProvider","Provider","useSelectedContext","useContext"],"sources":["../../../../../src/components/CommandPallete/context/SelectedContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\ninterface SelectedContextProps {\n selected: number;\n setSelected: (value: number) => void;\n}\n\nexport const SelectedContext = createContext<SelectedContextProps>({\n selected: 0,\n setSelected: () => null,\n});\n\nexport const SelectedContextProvider = SelectedContext.Provider;\n\nexport const useSelectedContext = (): SelectedContextProps =>\n useContext(SelectedContext);\n"],"mappings":";;;;;;AAAA;AAOO,IAAMA,eAAe,gBAAG,IAAAC,oBAAa,EAAuB;EACjEC,QAAQ,EAAE,CAAC;EACXC,WAAW,EAAE;IAAA,OAAM,IAAI;EAAA;AACzB,CAAC,CAAC;AAAC;AAEI,IAAMC,uBAAuB,GAAGJ,eAAe,CAACK,QAAQ;AAAC;AAEzD,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkB;EAAA,OAC7B,IAAAC,iBAAU,EAACP,eAAe,CAAC;AAAA;AAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _ModeContext = require("./ModeContext");
7
+ Object.keys(_ModeContext).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _ModeContext[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _ModeContext[key];
14
+ }
15
+ });
16
+ });
17
+ var _SelectedContext = require("./SelectedContext");
18
+ Object.keys(_SelectedContext).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _SelectedContext[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _SelectedContext[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/CommandPallete/context/index.ts"],"sourcesContent":["export * from \"./ModeContext\";\nexport * from \"./SelectedContext\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAMF,SAAS,EACT,YAAY,EACZ,gBAAgB,EACjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,gBAAgB,EAAU,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,uBAAuB,CAAC;AAQvE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,GACzC,IAAI,IAAI,iBAAiB,CAE3B;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IACnD,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IACjD,qBAAqB;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChE,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,GAAG,YAAY,CAAC;IAC3B,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,4BAA4B;IAC5B,YAAY,CAAC,EAAE,CACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IACV,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,8BAA8B;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAOD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CAmc/C,CAAC"}
1
+ {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAMF,SAAS,EACT,YAAY,EACZ,gBAAgB,EACjB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,gBAAgB,EAAU,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAe,MAAM,uBAAuB,CAAC;AAQvE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,GACzC,IAAI,IAAI,iBAAiB,CAE3B;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IACnD,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IACjD,qBAAqB;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChE,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,GAAG,YAAY,CAAC;IAC3B,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,4BAA4B;IAC5B,YAAY,CAAC,EAAE,CACb,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KACxD,IAAI,CAAC;IACV,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,8BAA8B;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAOD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CA0c/C,CAAC"}
@@ -319,10 +319,17 @@ export var Autocomplete = function Autocomplete(_ref) {
319
319
  });
320
320
  }, [filter, flatOptions, toggleSelected, handleDefaultOptionChange, handleEmpty, hover, showAddNew, showDefaultOption]);
321
321
  useEffect(function () {
322
- if (inputEl != null && inputEl.current) {
323
- inputEl.current.onkeydown = handleOnKeyDown;
324
- inputEl.current.onkeyup = handleInputChange;
322
+ var inputRef = inputEl == null ? void 0 : inputEl.current;
323
+ if (inputRef) {
324
+ inputRef.addEventListener("input", handleInputChange);
325
+ inputRef.addEventListener("keydown", handleOnKeyDown);
325
326
  }
327
+ return function () {
328
+ if (inputRef) {
329
+ inputRef.removeEventListener("input", handleInputChange);
330
+ inputRef.removeEventListener("keydown", handleOnKeyDown);
331
+ }
332
+ };
326
333
  }, [handleInputChange, handleOnKeyDown, inputEl]);
327
334
  var isDefaultOptionSelected = useCallback(function () {
328
335
  if (preselectDefaultValue) {
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Scrollbars","highlightText","handleKeyboardMovement","Option","OptionGroup","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","StyledOption","isOptionGroup","item","options","undefined","Autocomplete","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","sort","a","b","includes","id","sortList","localeCompare","sortedList","by","hover","setHover","filter","setFilter","handleEmpty","e","button","current","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","offsetTop","handleOnKeyDown","onkeydown","onkeyup","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","displayName"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n MutableRefObject,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars-2\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport { StyledOption } from \"../Select/Option/Styles\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n}\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Input Element. */\n inputEl?: MutableRefObject<HTMLInputElement | null | undefined>;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n /** Clear input on select - works in single mode */\n clearInputOnSelect?: boolean;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n clearInputOnSelect,\n}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n return opts.sort((a: IOptionItemProps, b: IOptionItemProps) => {\n if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {\n return 1;\n }\n if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {\n return -1;\n }\n return 0;\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n return handleSort(\n [...options].sort((a: IOptionItemProps, b: IOptionItemProps) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n )\n );\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.current?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isOptionGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const renderAddNew = useMemo(() => {\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n result = id;\n }\n if (clearInputOnSelect && inputEl?.current) {\n inputEl.current.value = \"\";\n inputEl.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [\n clearInputOnSelect,\n handleChange,\n handleDefaultOptionChange,\n inputEl,\n selectedOptions,\n type,\n ]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isOptionGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (typeof hover.item !== \"undefined\" || hover.item !== null) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n if (inputEl?.current) {\n inputEl.current.onkeydown = handleOnKeyDown;\n inputEl.current.onkeyup = handleInputChange;\n }\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>,\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n )}\n {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Autocomplete.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Scrollbars","highlightText","handleKeyboardMovement","Option","OptionGroup","StyledAutocompleteBody","StyledAutocompleteNewItem","StyledAutocompleteScrollShadow","StyledOption","isOptionGroup","item","options","undefined","Autocomplete","type","inputEl","selected","emptyValue","noResultText","renderOption","option","name","defaultValue","sortDirection","handleChange","optionClassName","handleEmptyAction","disabledInternalSort","AutocompleteClassName","handleDefaultOptionChange","preselectDefaultValue","keepSameOptionsOrder","autoHeightMax","clearInputOnSelect","itemRef","listRef","selectedOptions","Array","isArray","handleSort","opts","sort","a","b","includes","id","sortList","localeCompare","sortedList","by","hover","setHover","filter","setFilter","handleEmpty","e","button","current","focus","onAddNewMouseEnter","showAddNew","trim","every","v","toLowerCase","renderAddNew","filterOptions","trimmedFilter","isGrouped","hovered","reduce","acc","groupedOption","filteredOptions","length","list","showDefaultOption","flatOptions","handleInputChange","target","key","value","handleHoverCallback","toggleSelected","result","_id","dispatchEvent","Event","bubbles","handleMouseEnter","handleClick","preventDefault","handleRenderOption","index","checked","onChange","handleOnMouseLeave","handleScroll","itemOffset","getClientHeight","getScrollTop","scrollTop","offsetTop","handleOnKeyDown","inputRef","addEventListener","removeEventListener","isDefaultOptionSelected","showNoResult","renderNoResult","onScroll","map","displayName"],"sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useMemo,\n useEffect,\n useRef,\n ReactNode,\n ReactElement,\n MutableRefObject,\n} from \"react\";\nimport { Scrollbars } from \"react-custom-scrollbars-2\";\nimport highlightText from \"../../hooks/useHighlightText\";\nimport { handleKeyboardMovement } from \"./HandleKeyboard\";\nimport { IOptionItemProps, Option } from \"../Select/Option\";\nimport { IOptionGroupProps, OptionGroup } from \"../Select/OptionGroup\";\nimport {\n StyledAutocompleteBody,\n StyledAutocompleteNewItem,\n StyledAutocompleteScrollShadow,\n} from \"./Styles\";\nimport { StyledOption } from \"../Select/Option/Styles\";\n\nexport function isOptionGroup(\n item: IOptionGroupProps | IOptionItemProps\n): item is IOptionGroupProps {\n return (item as IOptionGroupProps).options !== undefined;\n}\n\nexport interface IAutocompleteProps {\n /** Select type: single or multiple */\n type?: \"single\" | \"multiple\";\n /** List of options or group options */\n options?: (IOptionGroupProps | IOptionItemProps)[];\n /** Selected values */\n selected?: (string | number)[] | string | number;\n /** Input Element. */\n inputEl?: MutableRefObject<HTMLInputElement | null | undefined>;\n /** Text for empty value */\n emptyValue?: string;\n /** Text for No result */\n noResultText?: string;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n /** Default value that renders on top of list */\n defaultValue?: string;\n /** Sort direction for labels */\n sortDirection?: \"asc\" | \"desc\";\n /** handleChange callback */\n handleChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** ClassName for single option */\n optionClassName?: string;\n /** handleEmptyAction */\n handleEmptyAction?: (e: string | number) => void;\n /** Disable sorting options */\n disabledInternalSort?: boolean;\n /** ClassName for Autocomplete component */\n AutocompleteClassName?: string;\n /** handleDefaultOptionChange callback */\n handleDefaultOptionChange?: () => void;\n /** Should default value be selected */\n preselectDefaultValue?: boolean;\n /** Should order stay the same after choosing an option */\n keepSameOptionsOrder?: boolean;\n /** Set max height property for scrollbars */\n autoHeightMax?: number;\n /** Clear input on select - works in single mode */\n clearInputOnSelect?: boolean;\n}\n\ninterface IHover {\n item: number | string | undefined | null;\n by: \"mouse\" | \"keyboard\" | undefined;\n}\n\nexport const Autocomplete: FC<IAutocompleteProps> = ({\n type,\n options = [],\n inputEl,\n selected = [],\n emptyValue,\n noResultText,\n renderOption = (option) => option?.name,\n defaultValue,\n sortDirection = \"asc\",\n handleChange,\n optionClassName,\n handleEmptyAction,\n disabledInternalSort,\n AutocompleteClassName,\n handleDefaultOptionChange,\n preselectDefaultValue,\n keepSameOptionsOrder = false,\n autoHeightMax = 340,\n clearInputOnSelect,\n}) => {\n const itemRef = useRef<HTMLLIElement>(null);\n const listRef = useRef<Scrollbars>(null);\n\n const selectedOptions = useMemo(() => {\n if (Array.isArray(selected)) {\n return selected;\n }\n return [selected];\n }, [selected]);\n\n const handleSort = useCallback((opts) => {\n if (keepSameOptionsOrder) {\n return opts;\n }\n return opts.sort((a: IOptionItemProps, b: IOptionItemProps) => {\n if (selectedOptions.includes(b.id) && !selectedOptions.includes(a.id)) {\n return 1;\n }\n if (selectedOptions.includes(a.id) && !selectedOptions.includes(b.id)) {\n return -1;\n }\n return 0;\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sortList = useCallback(\n (options) => {\n if (disabledInternalSort) {\n return handleSort([...options]);\n }\n return handleSort(\n [...options].sort((a: IOptionItemProps, b: IOptionItemProps) =>\n sortDirection === \"asc\"\n ? a.name.localeCompare(b.name)\n : b.name.localeCompare(a.name)\n )\n );\n },\n [sortDirection, disabledInternalSort, handleSort]\n );\n\n const sortedList = useMemo(() => sortList(options), [options, sortList]);\n\n const [hover, setHover] = useState<IHover>({\n item: undefined,\n by: undefined,\n });\n const [filter, setFilter] = useState(\"\");\n\n const handleEmpty = useCallback(\n (e) => {\n if (e && e.button !== 0) {\n return;\n }\n if (handleEmptyAction) {\n inputEl?.current?.focus();\n setFilter(\"\");\n handleEmptyAction(filter);\n }\n },\n [filter, handleEmptyAction, inputEl]\n );\n\n const onAddNewMouseEnter = useCallback(\n () => setHover({ item: \"addNew\", by: \"mouse\" }),\n []\n );\n\n const showAddNew = useMemo(() => {\n return !!(\n emptyValue &&\n filter.trim() &&\n options.every((option) => {\n if (isOptionGroup(option)) {\n return option.options.every(\n (v) => v.name.toLowerCase() !== filter.trim().toLowerCase()\n );\n }\n return option.name.toLowerCase() !== filter.trim().toLowerCase();\n })\n );\n }, [emptyValue, filter, options]);\n\n const renderAddNew = useMemo(() => {\n return (\n <StyledAutocompleteNewItem\n ref={hover.item === \"addNew\" ? itemRef : null}\n key=\"emptyValue\"\n hover={hover.item === \"addNew\"}\n onMouseDown={handleEmpty}\n onMouseEnter={onAddNewMouseEnter}\n >\n {emptyValue}\n </StyledAutocompleteNewItem>\n );\n }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);\n\n const filterOptions = useCallback(\n (options, filter) => {\n const trimmedFilter = filter.trim();\n const isGrouped = options[0] && isOptionGroup(options[0]);\n if (isGrouped) {\n let hovered = false;\n return options.reduce((acc, groupedOption) => {\n const filteredOptions = groupedOption.options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filteredOptions.length > 0) {\n if (!hovered && filter) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n hovered = true;\n return [...acc, { ...groupedOption, options: filteredOptions }];\n }\n return [...acc];\n }, []);\n } else {\n const filteredOptions = options.filter((v) =>\n v.name.toLowerCase().includes(trimmedFilter.toLowerCase())\n );\n if (filter && filteredOptions.length > 0) {\n setHover({ item: filteredOptions[0].id, by: \"keyboard\" });\n }\n if (filteredOptions.length === 0 && emptyValue) {\n setHover({ item: \"addNew\", by: \"keyboard\" });\n }\n return filteredOptions;\n }\n },\n [emptyValue]\n );\n\n const list = useMemo(\n () => filterOptions(sortedList, filter),\n [filter, filterOptions, sortedList]\n );\n\n const showDefaultOption = useMemo(\n () => !!defaultValue && !filter,\n [defaultValue, filter]\n );\n\n const flatOptions = useMemo(() => {\n const options = list.reduce(\n (\n acc: (IOptionItemProps | IOptionGroupProps | [])[],\n option: IOptionItemProps | IOptionGroupProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option];\n }\n return [...acc, ...option.options];\n },\n []\n );\n return filterOptions(options, filter);\n }, [filter, filterOptions, list]);\n\n const handleInputChange = useCallback((e) => {\n if (\n e.target &&\n !(e.key === \"ArrowDown\") &&\n !(e.key === \"ArrowUp\") &&\n !(e.key === \"Enter\")\n ) {\n setFilter(e.target.value);\n }\n }, []);\n\n const handleHoverCallback = useCallback(\n (e: number | string | undefined): void => {\n setHover({ item: e, by: \"mouse\" });\n },\n []\n );\n\n const toggleSelected = useCallback(\n (id) => {\n let result;\n\n if (id !== null) {\n if (type === \"multiple\") {\n if (selectedOptions.includes(id)) {\n result = selectedOptions.filter((_id) => _id !== id);\n } else {\n result = [...selectedOptions, id];\n }\n } else {\n result = id;\n }\n if (clearInputOnSelect && inputEl?.current) {\n inputEl.current.value = \"\";\n inputEl.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setFilter(\"\");\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n return;\n }\n }\n\n if (typeof handleChange === \"function\") {\n handleChange(result);\n }\n },\n [\n clearInputOnSelect,\n handleChange,\n handleDefaultOptionChange,\n inputEl,\n selectedOptions,\n type,\n ]\n );\n\n const handleMouseEnter = useCallback((e) => {\n if (e === undefined || e === null) {\n return setHover({ item: null, by: \"mouse\" });\n }\n setHover({ item: e, by: \"mouse\" });\n }, []);\n\n const handleClick = useCallback(\n (e) => {\n e.preventDefault();\n toggleSelected(hover.item);\n },\n [toggleSelected, hover]\n );\n\n const handleRenderOption = useCallback(\n (item: IOptionItemProps | IOptionGroupProps, index) => {\n if (isOptionGroup(item)) {\n return (\n <OptionGroup\n checked={selectedOptions}\n name={item.name}\n key={item.id}\n setHover={handleHoverCallback}\n id={item.id}\n hover={hover.item}\n options={item.options}\n renderOptions={handleRenderOption}\n type={type}\n onChange={handleChange}\n filter={filter}\n />\n );\n }\n return (\n <Option\n name={item.name}\n ref={itemRef}\n key={index}\n onMouseEnter={handleMouseEnter}\n onClick={handleClick}\n id={item.id}\n hover={item.id === hover.item}\n className={optionClassName}\n renderOption={renderOption(\n { ...item, name: highlightText(item.name, filter) },\n {\n id: `option_${item.id}`,\n checked: selectedOptions && selectedOptions.includes(item.id),\n hover: hover.item === item.id,\n onChange: () => null,\n }\n )}\n />\n );\n },\n [\n handleClick,\n handleMouseEnter,\n hover.item,\n optionClassName,\n renderOption,\n filter,\n selectedOptions,\n handleHoverCallback,\n type,\n handleChange,\n ]\n );\n\n const handleOnMouseLeave = useCallback(() => {\n setHover({ item: undefined, by: \"mouse\" });\n }, []);\n\n const handleScroll = useCallback((list: Scrollbars, itemOffset: number) => {\n if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {\n return list.scrollTop(itemOffset - list.getClientHeight() + 30);\n }\n if (list.getScrollTop() > itemOffset) {\n return list.scrollTop(itemOffset);\n }\n }, []);\n\n useEffect(() => {\n if (hover.by === \"keyboard\" && hover.item !== undefined) {\n const item: HTMLLIElement | null = itemRef.current;\n const list = listRef.current;\n if (itemRef && item && list) {\n handleScroll(list, item.offsetTop);\n }\n }\n }, [handleScroll, hover]);\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n\n if (hover.item === undefined && filter === \"\") {\n return;\n }\n if (hover.item === \"addNew\") {\n handleEmpty(null);\n return;\n }\n if (hover.item === null && handleDefaultOptionChange) {\n handleDefaultOptionChange();\n return;\n }\n\n if (typeof hover.item !== \"undefined\" || hover.item !== null) {\n toggleSelected(hover.item);\n setFilter(\"\");\n }\n return;\n }\n setHover({\n item: handleKeyboardMovement(\n e,\n hover.item,\n flatOptions,\n showAddNew,\n showDefaultOption\n ),\n by: \"keyboard\",\n });\n },\n [\n filter,\n flatOptions,\n toggleSelected,\n handleDefaultOptionChange,\n handleEmpty,\n hover,\n showAddNew,\n showDefaultOption,\n ]\n );\n\n useEffect(() => {\n const inputRef = inputEl?.current;\n if (inputRef) {\n inputRef.addEventListener(\"input\", handleInputChange);\n inputRef.addEventListener(\"keydown\", handleOnKeyDown);\n }\n return () => {\n if (inputRef) {\n inputRef.removeEventListener(\"input\", handleInputChange);\n inputRef.removeEventListener(\"keydown\", handleOnKeyDown);\n }\n };\n }, [handleInputChange, handleOnKeyDown, inputEl]);\n\n const isDefaultOptionSelected = useCallback(() => {\n if (preselectDefaultValue) {\n return selectedOptions.length < 1 || selectedOptions[0] === \"\";\n } else {\n return (\n selectedOptions[0] === null ||\n selectedOptions.length === flatOptions.length\n );\n }\n }, [flatOptions.length, preselectDefaultValue, selectedOptions]);\n\n const showNoResult = useMemo(\n () => noResultText && !showAddNew && list.length < 1,\n [list.length, noResultText, showAddNew]\n );\n\n const renderNoResult = useMemo(\n () => <StyledOption css=\"cursor: auto\">{noResultText}</StyledOption>,\n [noResultText]\n );\n\n return (\n <StyledAutocompleteScrollShadow\n className={AutocompleteClassName}\n $isHidden={\n !defaultValue && !emptyValue && !noResultText && list.length < 1\n }\n >\n {({ onScroll }): JSX.Element => (\n <StyledAutocompleteBody key=\"body\" onMouseLeave={handleOnMouseLeave}>\n <Scrollbars\n ref={listRef}\n key=\"scrollBar\"\n autoHeight\n autoHeightMax={autoHeightMax}\n onScroll={onScroll}\n >\n {defaultValue && !filter && (\n <Option\n name={defaultValue}\n ref={itemRef}\n hover={hover.item === null}\n onMouseEnter={handleMouseEnter}\n onClick={(e) => {\n e.preventDefault();\n toggleSelected(null);\n }}\n renderOption={renderOption(\n { name: defaultValue, id: null },\n {\n checked: isDefaultOptionSelected(),\n hover: hover.item === null,\n onChange: () => null,\n }\n )}\n />\n )}\n {list.map((item: IOptionItemProps, index) =>\n handleRenderOption(item, index)\n )}\n {showNoResult && renderNoResult}\n {showAddNew && renderAddNew}\n </Scrollbars>\n </StyledAutocompleteBody>\n )}\n </StyledAutocompleteScrollShadow>\n );\n};\n\nAutocomplete.displayName = \"Autocomplete\";\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React, { PropsWithChildren, ReactNode } from "react";
2
2
  import { DialogProps } from "../Dialog";
3
- import { CommandPalleteListProps } from "./CommandPalleteList";
3
+ import { CommandPalleteItemProps } from "./CommandPalleteItem";
4
4
  export interface CommandPalleteProps extends DialogProps {
5
5
  onChangeSearch: (search: string) => void;
6
6
  search: string;
@@ -14,15 +14,12 @@ export interface CommandPalleteProps extends DialogProps {
14
14
  loading?: boolean;
15
15
  }
16
16
  export declare const CommandPallete: {
17
- ({ children, onChangeSearch, search, commands, mode, setMode, ...rest }: PropsWithChildren<CommandPalleteProps>): JSX.Element;
17
+ ({ children, onChangeSearch, search, mode, setMode, ...rest }: PropsWithChildren<CommandPalleteProps>): JSX.Element;
18
18
  displayName: string;
19
19
  List: {
20
- ({ children, heading, visible, }: React.PropsWithChildren<CommandPalleteListProps>): JSX.Element | null;
21
- displayName: string;
22
- };
23
- Item: {
24
- ({ title, renderIcon, className, }: import("./CommandPalleteItem").CommandPalleteItemProps): JSX.Element;
20
+ ({ children, heading, visible, }: React.PropsWithChildren<import("./CommandPalleteList").CommandPalleteListProps>): JSX.Element | null;
25
21
  displayName: string;
26
22
  };
23
+ Item: React.ForwardRefExoticComponent<CommandPalleteItemProps & React.RefAttributes<HTMLLIElement>>;
27
24
  };
28
25
  //# sourceMappingURL=CommandPallete.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPallete.d.ts","sourceRoot":"","sources":["../../../../src/components/CommandPallete/CommandPallete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAGZ,iBAAiB,EAEjB,SAAS,EACV,MAAM,OAAO,CAAC;AACf,OAAO,EAAU,WAAW,EAAE,MAAM,WAAW,CAAC;AAQhD,OAAO,EAEL,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,SAAS,CAAA;KAAE,EAAE,CAAC;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,cAAc;6EAQxB,kBAAkB,mBAAmB,CAAC;;;;;;;;;;CA8CxC,CAAC"}
1
+ {"version":3,"file":"CommandPallete.d.ts","sourceRoot":"","sources":["../../../../src/components/CommandPallete/CommandPallete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAGZ,iBAAiB,EAEjB,SAAS,EAKV,MAAM,OAAO,CAAC;AAEf,OAAO,EAAU,WAAW,EAAE,MAAM,WAAW,CAAC;AAMhD,OAAO,EAEL,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAK9B,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,SAAS,CAAA;KAAE,EAAE,CAAC;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,cAAc;mEAOxB,kBAAkB,mBAAmB,CAAC;;;;;;;CAwIxC,CAAC"}
@@ -1,24 +1,127 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
- var _excluded = ["children", "onChangeSearch", "search", "commands", "mode", "setMode"];
3
- import React, { Children } from "react";
3
+ var _excluded = ["children", "onChangeSearch", "search", "mode", "setMode"];
4
+ import React, { cloneElement, useEffect, useMemo, useRef, useState } from "react";
5
+ import { deepMap } from "react-children-utilities";
4
6
  import { Dialog } from "../Dialog";
5
7
  import { StyledCommandPallete, StyledCommandPalleteWrapper } from "./CommandPallete.styles";
6
8
  import { CommandPalleteHeader } from "./CommandPalleteHeader";
7
9
  import { CommandPalleteItem } from "./CommandPalleteItem";
8
10
  import { CommandPalleteList } from "./CommandPalleteList";
9
- import { ModeContextProvider } from "./context/ModeContext";
11
+ import { ModeContextProvider, SelectedContextProvider } from "./context";
10
12
  export var CommandPallete = function CommandPallete(_ref) {
11
13
  var children = _ref.children,
12
14
  onChangeSearch = _ref.onChangeSearch,
13
15
  search = _ref.search,
14
- commands = _ref.commands,
15
16
  mode = _ref.mode,
16
17
  setMode = _ref.setMode,
17
18
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
19
+ var _useState = useState(0),
20
+ selected = _useState[0],
21
+ setSelected = _useState[1];
22
+ var listWrapperRef = useRef(null);
18
23
  var handleChange = function handleChange(e) {
19
24
  onChangeSearch(e.target.value);
20
25
  };
21
- return /*#__PURE__*/React.createElement(Dialog, rest, /*#__PURE__*/React.createElement(StyledCommandPallete, null, /*#__PURE__*/React.createElement(ModeContextProvider, {
26
+ var scrollToTop = function scrollToTop() {
27
+ var _listWrapperRef$curre;
28
+ (_listWrapperRef$curre = listWrapperRef.current) == null ? void 0 : _listWrapperRef$curre.scrollTo({
29
+ top: 0,
30
+ behavior: "smooth"
31
+ });
32
+ };
33
+ var scrollToBottom = function scrollToBottom() {
34
+ var _listWrapperRef$curre2;
35
+ (_listWrapperRef$curre2 = listWrapperRef.current) == null ? void 0 : _listWrapperRef$curre2.scrollTo({
36
+ top: listWrapperRef.current.scrollHeight,
37
+ behavior: "smooth"
38
+ });
39
+ };
40
+ var filterChildren = useMemo(function () {
41
+ var index = 0;
42
+ var items = deepMap(children, function (child) {
43
+ var item = child;
44
+ var clonedElement;
45
+ if (item && item.type === CommandPalleteList) {
46
+ clonedElement = /*#__PURE__*/cloneElement(item, _extends({}, item.props));
47
+ }
48
+ if (item && item.type === CommandPalleteItem) {
49
+ clonedElement = /*#__PURE__*/cloneElement(item, _extends({}, item.props, {
50
+ index: index,
51
+ selected: selected
52
+ }));
53
+ index++;
54
+ }
55
+ return clonedElement;
56
+ });
57
+ return {
58
+ items: items,
59
+ index: index
60
+ };
61
+ }, [children, selected]);
62
+ useEffect(function () {
63
+ if (search.length === 0) {
64
+ setSelected(0);
65
+ }
66
+ }, [search, selected]);
67
+ var handleChangeSelected = function handleChangeSelected(direction) {
68
+ var items = document.querySelectorAll(".cp-item");
69
+ var index = 0;
70
+ var newIndex = 0;
71
+ var newItem = null;
72
+ if (direction === "down") {
73
+ items.forEach(function (_, i) {
74
+ if (i === selected) {
75
+ index = i;
76
+ }
77
+ });
78
+ newIndex = index === items.length - 1 ? 0 : index + 1;
79
+ } else if (direction === "up") {
80
+ items.forEach(function (_, i) {
81
+ if (i === selected) {
82
+ index = i;
83
+ }
84
+ });
85
+ newIndex = !index ? items.length - 1 : index - 1;
86
+ } else {
87
+ setSelected(0);
88
+ }
89
+ newItem = items[newIndex];
90
+ if (newItem && typeof newIndex === "number") {
91
+ setSelected(newIndex);
92
+ newItem.scrollIntoView({
93
+ behavior: "smooth",
94
+ block: newIndex ? "center" : "end"
95
+ });
96
+ }
97
+ };
98
+ return /*#__PURE__*/React.createElement(Dialog, rest, /*#__PURE__*/React.createElement(SelectedContextProvider, {
99
+ value: {
100
+ selected: selected,
101
+ setSelected: setSelected
102
+ }
103
+ }, /*#__PURE__*/React.createElement(StyledCommandPallete, {
104
+ onKeyDown: function onKeyDown(e) {
105
+ if (e.key === "ArrowDown") {
106
+ e.preventDefault();
107
+ handleChangeSelected("down");
108
+ }
109
+ if (e.key === "ArrowUp") {
110
+ e.preventDefault();
111
+ handleChangeSelected("up");
112
+ }
113
+ if (e.key === "End") {
114
+ e.preventDefault();
115
+ scrollToBottom();
116
+ setSelected(filterChildren.index - 1);
117
+ }
118
+ if (e.key === "Home") {
119
+ e.preventDefault();
120
+ scrollToTop();
121
+ setSelected(0);
122
+ }
123
+ }
124
+ }, /*#__PURE__*/React.createElement(ModeContextProvider, {
22
125
  value: {
23
126
  mode: mode,
24
127
  setMode: setMode
@@ -27,22 +130,9 @@ export var CommandPallete = function CommandPallete(_ref) {
27
130
  search: search,
28
131
  handleChange: handleChange,
29
132
  onChangeSearch: onChangeSearch
30
- })), /*#__PURE__*/React.createElement(StyledCommandPalleteWrapper, null, search.length > 0 ? /*#__PURE__*/React.createElement(CommandPalleteList, {
31
- visible: true
32
- }, commands.map(function (command) {
33
- if (command.visible) {
34
- return /*#__PURE__*/React.createElement(CommandPalleteItem, {
35
- className: "cp-item cp-command",
36
- title: command.title,
37
- key: command.title,
38
- renderIcon: command.renderIcon
39
- });
40
- }
41
- return null;
42
- })) : null, Children.toArray(children).map(function (child) {
43
- var item = child;
44
- return /*#__PURE__*/React.cloneElement(item, {});
45
- }))));
133
+ })), /*#__PURE__*/React.createElement(StyledCommandPalleteWrapper, {
134
+ ref: listWrapperRef
135
+ }, filterChildren.items))));
46
136
  };
47
137
  CommandPallete.displayName = "CommandPallete";
48
138
  CommandPallete.List = CommandPalleteList;