@activecollab/components 1.0.365 → 1.0.367

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/ComboBox/ComboBox.js +1 -1
  2. package/dist/cjs/components/ComboBox/ComboBox.js.map +1 -1
  3. package/dist/cjs/components/EditableContent/Styles.js +2 -2
  4. package/dist/cjs/components/EditableContent/Styles.js.map +1 -1
  5. package/dist/cjs/components/EditableHours/EditableHours.js +221 -0
  6. package/dist/cjs/components/EditableHours/EditableHours.js.map +1 -0
  7. package/dist/cjs/components/EditableHours/index.js +17 -0
  8. package/dist/cjs/components/EditableHours/index.js.map +1 -0
  9. package/dist/cjs/components/index.js +11 -0
  10. package/dist/cjs/components/index.js.map +1 -1
  11. package/dist/cjs/utils/index.js +12 -0
  12. package/dist/cjs/utils/index.js.map +1 -1
  13. package/dist/cjs/utils/timeUtils.js +105 -0
  14. package/dist/cjs/utils/timeUtils.js.map +1 -0
  15. package/dist/cjs/utils/timeUtils.test.js +10 -0
  16. package/dist/cjs/utils/timeUtils.test.js.map +1 -0
  17. package/dist/cjs/utils/validation.js +15 -0
  18. package/dist/cjs/utils/validation.js.map +1 -0
  19. package/dist/esm/components/ComboBox/ComboBox.js +1 -1
  20. package/dist/esm/components/ComboBox/ComboBox.js.map +1 -1
  21. package/dist/esm/components/EditableContent/Styles.d.ts.map +1 -1
  22. package/dist/esm/components/EditableContent/Styles.js +2 -2
  23. package/dist/esm/components/EditableContent/Styles.js.map +1 -1
  24. package/dist/esm/components/EditableHours/EditableHours.d.ts +12 -0
  25. package/dist/esm/components/EditableHours/EditableHours.d.ts.map +1 -0
  26. package/dist/esm/components/EditableHours/EditableHours.js +198 -0
  27. package/dist/esm/components/EditableHours/EditableHours.js.map +1 -0
  28. package/dist/esm/components/EditableHours/index.d.ts +2 -0
  29. package/dist/esm/components/EditableHours/index.d.ts.map +1 -0
  30. package/dist/esm/components/EditableHours/index.js +2 -0
  31. package/dist/esm/components/EditableHours/index.js.map +1 -0
  32. package/dist/esm/components/index.d.ts +1 -0
  33. package/dist/esm/components/index.d.ts.map +1 -1
  34. package/dist/esm/components/index.js +1 -0
  35. package/dist/esm/components/index.js.map +1 -1
  36. package/dist/esm/utils/index.d.ts +1 -0
  37. package/dist/esm/utils/index.d.ts.map +1 -1
  38. package/dist/esm/utils/index.js +1 -0
  39. package/dist/esm/utils/index.js.map +1 -1
  40. package/dist/esm/utils/timeUtils.d.ts +4 -0
  41. package/dist/esm/utils/timeUtils.d.ts.map +1 -0
  42. package/dist/esm/utils/timeUtils.js +93 -0
  43. package/dist/esm/utils/timeUtils.js.map +1 -0
  44. package/dist/esm/utils/timeUtils.test.d.ts +2 -0
  45. package/dist/esm/utils/timeUtils.test.d.ts.map +1 -0
  46. package/dist/esm/utils/timeUtils.test.js +10 -0
  47. package/dist/esm/utils/timeUtils.test.js.map +1 -0
  48. package/dist/esm/utils/validation.d.ts +3 -0
  49. package/dist/esm/utils/validation.d.ts.map +1 -0
  50. package/dist/esm/utils/validation.js +7 -0
  51. package/dist/esm/utils/validation.js.map +1 -0
  52. package/dist/index.js +448 -155
  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 +1 -1
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withLeadingZero = exports.isDecimal = exports.decimalToHours = void 0;
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
11
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ // export const decimalToHours = (decimal: string) => {
14
+ // // we round it on two decimals first, to eliminate quirks, eg, 5.99999999 will return 5:59 instead of 6:00
15
+ // decimal = parseFloat(decimal).toFixed(2);
16
+ // decimal = decimal + "";
17
+ // let hours;
18
+ // let minutes_decimal;
19
+ //
20
+ // if (decimal.indexOf(".") < 0) {
21
+ // hours = parseInt(decimal);
22
+ // minutes_decimal = 0;
23
+ // } else {
24
+ // hours = parseInt(decimal.substring(0, decimal.indexOf(".")));
25
+ // minutes_decimal = decimal.substring(decimal.indexOf(".") + 1);
26
+ // minutes_decimal = minutes_decimal.substring(0, 2);
27
+ // if (minutes_decimal.length === 1) {
28
+ // minutes_decimal += "0";
29
+ // } // if
30
+ // minutes_decimal = parseInt(minutes_decimal);
31
+ // } // if
32
+ //
33
+ // const minutes = Math.round((minutes_decimal / 100) * 60);
34
+ //
35
+ // if (hours < 10) {
36
+ // hours = `0${hours}`;
37
+ // }
38
+ // return {
39
+ // hours: hours,
40
+ // minutes: minutes,
41
+ // };
42
+ // };
43
+
44
+ var decimalToHours = function decimalToHours(num) {
45
+ var withLeadingZeroHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
46
+ if (typeof num === "string" && !num) {
47
+ return withLeadingZeroHours ? "00:00" : "0:00";
48
+ }
49
+ if (typeof num === "string" && num.indexOf(":") >= 0) {
50
+ //eslint-disable-next-line
51
+ var _num$split = num.split(":"),
52
+ _num$split2 = _slicedToArray(_num$split, 2),
53
+ _hours = _num$split2[0],
54
+ _minutes = _num$split2[1];
55
+ if (_minutes && _minutes.length === 1 && Number(_minutes) < 10) {
56
+ _minutes = "".concat(Number(_minutes), "0");
57
+ }
58
+ if (_hours && _minutes) {
59
+ if (withLeadingZeroHours) {
60
+ return "".concat(withLeadingZero(_hours), ":").concat(_minutes);
61
+ }
62
+ return "".concat(_hours, ":").concat(_minutes);
63
+ } else if (!_hours && _minutes) {
64
+ return withLeadingZeroHours ? "00:".concat(_minutes) : "0:".concat(_minutes);
65
+ } else if (!_minutes && _hours) {
66
+ return withLeadingZeroHours ? "".concat(withLeadingZero(_hours), ":00") : "".concat(_hours, ":00");
67
+ } else {
68
+ return withLeadingZeroHours ? "00:00" : "0:00";
69
+ }
70
+ }
71
+ if (typeof num === "string" && num.indexOf(",") >= 0) {
72
+ num = num.replace(",", ".");
73
+ }
74
+ var input = typeof num === "string" ? parseFloat(num) : num;
75
+ if (!isDecimal(input)) {
76
+ if (withLeadingZeroHours) {
77
+ return "".concat(withLeadingZero(input), ":00");
78
+ }
79
+ return "".concat(input, ":00");
80
+ }
81
+ var decimal = input.toFixed(2);
82
+ var time = decimal.toString().split(".");
83
+ var hours = time[0];
84
+ if (withLeadingZeroHours) {
85
+ hours = withLeadingZero(hours);
86
+ }
87
+ var minutes = time[1];
88
+ var minutes_formatted = Math.round(parseInt(minutes, 10) / 100 * 60);
89
+ return "".concat(hours, ":").concat(withLeadingZero(minutes_formatted));
90
+ };
91
+ exports.decimalToHours = decimalToHours;
92
+ var withLeadingZero = function withLeadingZero(num) {
93
+ var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
94
+ var s = "".concat(num);
95
+ while (s.length < size) {
96
+ s = "0" + s;
97
+ }
98
+ return s;
99
+ };
100
+ exports.withLeadingZero = withLeadingZero;
101
+ var isDecimal = function isDecimal(num) {
102
+ return !Number.isInteger(num);
103
+ };
104
+ exports.isDecimal = isDecimal;
105
+ //# sourceMappingURL=timeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeUtils.js","names":["decimalToHours","num","withLeadingZeroHours","indexOf","split","_hours","_minutes","length","Number","withLeadingZero","replace","input","parseFloat","isDecimal","decimal","toFixed","time","toString","hours","minutes","minutes_formatted","Math","round","parseInt","size","s","isInteger"],"sources":["../../../src/utils/timeUtils.ts"],"sourcesContent":["// export const decimalToHours = (decimal: string) => {\n// // we round it on two decimals first, to eliminate quirks, eg, 5.99999999 will return 5:59 instead of 6:00\n// decimal = parseFloat(decimal).toFixed(2);\n// decimal = decimal + \"\";\n// let hours;\n// let minutes_decimal;\n//\n// if (decimal.indexOf(\".\") < 0) {\n// hours = parseInt(decimal);\n// minutes_decimal = 0;\n// } else {\n// hours = parseInt(decimal.substring(0, decimal.indexOf(\".\")));\n// minutes_decimal = decimal.substring(decimal.indexOf(\".\") + 1);\n// minutes_decimal = minutes_decimal.substring(0, 2);\n// if (minutes_decimal.length === 1) {\n// minutes_decimal += \"0\";\n// } // if\n// minutes_decimal = parseInt(minutes_decimal);\n// } // if\n//\n// const minutes = Math.round((minutes_decimal / 100) * 60);\n//\n// if (hours < 10) {\n// hours = `0${hours}`;\n// }\n// return {\n// hours: hours,\n// minutes: minutes,\n// };\n// };\n\nexport const decimalToHours = (\n num: number | string,\n withLeadingZeroHours = false\n): string => {\n if (typeof num === \"string\" && !num) {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n if (typeof num === \"string\" && num.indexOf(\":\") >= 0) {\n //eslint-disable-next-line\n let [_hours, _minutes] = num.split(\":\");\n if (_minutes && _minutes.length === 1 && Number(_minutes) < 10) {\n _minutes = `${Number(_minutes)}0`;\n }\n if (_hours && _minutes) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(_hours)}:${_minutes}`;\n }\n return `${_hours}:${_minutes}`;\n } else if (!_hours && _minutes) {\n return withLeadingZeroHours ? `00:${_minutes}` : `0:${_minutes}`;\n } else if (!_minutes && _hours) {\n return withLeadingZeroHours\n ? `${withLeadingZero(_hours)}:00`\n : `${_hours}:00`;\n } else {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n }\n if (typeof num === \"string\" && num.indexOf(\",\") >= 0) {\n num = num.replace(\",\", \".\");\n }\n const input = typeof num === \"string\" ? parseFloat(num) : num;\n\n if (!isDecimal(input)) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(input)}:00`;\n }\n return `${input}:00`;\n }\n\n const decimal = input.toFixed(2);\n const time = decimal.toString().split(\".\");\n let hours: string = time[0];\n if (withLeadingZeroHours) {\n hours = withLeadingZero(hours);\n }\n const minutes: string = time[1];\n const minutes_formatted = Math.round((parseInt(minutes, 10) / 100) * 60);\n\n return `${hours}:${withLeadingZero(minutes_formatted)}`;\n};\n\nexport const withLeadingZero = (num: string | number, size = 2) => {\n let s = `${num}`;\n while (s.length < size) s = `0` + s;\n return s;\n};\n\nexport const isDecimal = (num: number): boolean => {\n return !Number.isInteger(num);\n};\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ var _timeUtils = require("./timeUtils");
4
+ describe("timeUtis.ts", function () {
5
+ it.each([["1:30", "1:30"], ["1:30", "01:30", true], ["1.5", "1:30"], ["1.05", "1:03"], ["5,5", "5:30"], ["5.5", "5:30"], ["5:30", "5:30"], [",5", "0:30"], [".5", "0:30"], ["", "0:00"], [":", "0:00"], ["1:", "1:00"], ["1:", "01:00", true], [":05", "00:05", true], [",05", "00:03", true], [0.5, "00:30", true], [1.5, "01:30", true], [1.5, "1:30", false], ["0:3", "0:30", false], ["555:35", "555:35", false], ["555", "555:00", false], [555.5, "555:30", false]])("should formatTime", function (value, expected) {
6
+ var leadingZero = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7
+ expect((0, _timeUtils.decimalToHours)(value, leadingZero)).toEqual(expected);
8
+ });
9
+ });
10
+ //# sourceMappingURL=timeUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeUtils.test.js","names":["describe","it","each","value","expected","leadingZero","expect","decimalToHours","toEqual"],"sources":["../../../src/utils/timeUtils.test.ts"],"sourcesContent":["import { decimalToHours } from \"./timeUtils\";\n\ndescribe(\"timeUtis.ts\", () => {\n it.each([\n [\"1:30\", \"1:30\"],\n [\"1:30\", \"01:30\", true],\n [\"1.5\", \"1:30\"],\n [\"1.05\", \"1:03\"],\n [\"5,5\", \"5:30\"],\n [\"5.5\", \"5:30\"],\n [\"5:30\", \"5:30\"],\n [\",5\", \"0:30\"],\n [\".5\", \"0:30\"],\n [\"\", \"0:00\"],\n [\":\", \"0:00\"],\n [\"1:\", \"1:00\"],\n [\"1:\", \"01:00\", true],\n [\":05\", \"00:05\", true],\n [\",05\", \"00:03\", true],\n [0.5, \"00:30\", true],\n [1.5, \"01:30\", true],\n [1.5, \"1:30\", false],\n [\"0:3\", \"0:30\", false],\n [\"555:35\", \"555:35\", false],\n [\"555\", \"555:00\", false],\n [555.5, \"555:30\", false],\n ])(\"should formatTime\", (value, expected, leadingZero = false) => {\n expect(decimalToHours(value, leadingZero)).toEqual(expected);\n });\n});\n"],"mappings":";;AAAA;AAEAA,QAAQ,CAAC,aAAa,EAAE,YAAM;EAC5BC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EACvB,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,EAAE,EAAE,MAAM,CAAC,EACZ,CAAC,GAAG,EAAE,MAAM,CAAC,EACb,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EACrB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EACtB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EACpB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EACpB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EACpB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACtB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC3B,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EACxB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CACzB,CAAC,CAAC,mBAAmB,EAAE,UAACC,KAAK,EAAEC,QAAQ,EAA0B;IAAA,IAAxBC,WAAW,uEAAG,KAAK;IAC3DC,MAAM,CAAC,IAAAC,yBAAc,EAACJ,KAAK,EAAEE,WAAW,CAAC,CAAC,CAACG,OAAO,CAACJ,QAAQ,CAAC;EAC9D,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.validateTimeInput = exports.validateStopwatchTime = void 0;
7
+ var validateStopwatchTime = function validateStopwatchTime(value) {
8
+ return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
9
+ };
10
+ exports.validateStopwatchTime = validateStopwatchTime;
11
+ var validateTimeInput = function validateTimeInput(value) {
12
+ return /^([0-9]+)?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
13
+ };
14
+ exports.validateTimeInput = validateTimeInput;
15
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["export const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string) => {\n return /^([0-9]+)?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n"],"mappings":";;;;;;AAAO,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;AACH,CAAC;AAAC;AAEK,IAAME,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIF,KAAa,EAAK;EAClD,OAAO,0EAA0E,CAACC,IAAI,CACpFD,KAAK,CACN;AACH,CAAC;AAAC"}
@@ -243,7 +243,7 @@ export var ComboBox = function ComboBox(_ref) {
243
243
  color: option.chipColor,
244
244
  onClose: showOnClose ? onClose : undefined,
245
245
  size: size,
246
- variant: "Body 2"
246
+ variant: "Caption 1"
247
247
  });
248
248
  }, [disabled, onChange, renderChip, selected, size]);
249
249
  var autoSize = useMemo(function () {
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["React","useCallback","useState","useEffect","useRef","useMemo","Fragment","RadioButton","Autocomplete","IconButton","isOptionGroup","useForkRef","Popper","RemoveScroll","SpinnerLoader","OptionContent","StyledComboBoxCloseSmallIcon","StyledComboBoxCollapseExpandSingleIcon","StyledComboBoxInput","StyledComboBoxList","StyledChipWrapper","InputAdornment","Checkbox","Chip","StyledInput","StyledInputWrapper","useOnClickOutside","Avatar","Trigger","Typography","Portal","ConditionalWrapper","classNames","useIsFirstRender","MultiAvatar","ComboBox","options","selected","loading","loadingText","onChange","placeholder","handleEmptyAction","disabled","size","invalid","type","renderChip","forceCloseMenu","renderOption","limitChips","hiddenNumberText","inPortal","inputWrapperClassName","scrollWrapper","onClose","onClear","prop","selectedName","value","map","v","find","q","id","name","setValue","focused","setFocused","handleOnChange","e","target","childNode","elementRef","handleRef","wrapperRef","chipWrapper","comboBoxRef","open","setOpen","isFirstRender","current","contains","handleOnKeyDown","key","stopPropagation","focus","blur","emptyAction","handleChange","selectedValue","onOpen","handleRenderOption","option","props","image","color","textColor","handleDeselect","handleMouseDown","preventDefault","handleBlur","renderChipAdornment","index","avatarProps","leftAdornment","undefined","Array","isArray","includes","newSelected","filter","item","showOnClose","chipColor","autoSize","length","startAdornment","elements","total","forEach","isGrouped","push","groupedOptions","o","_index","hidden","splice","optionItem","child","avatarSize","showXIcon","hasSelected","click","display","flex","alignSelf","width","children","zIndex","clientWidth","displayName"],"sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n Fragment,\n} from \"react\";\nimport { RadioButton } from \"../RadioButton\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { IconButton } from \"../IconButton\";\nimport {\n IAutocompleteProps,\n isOptionGroup,\n} from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Popper } from \"../Popper\";\nimport { IOptionGroupProps, IOptionItemProps } from \"../Select\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { SpinnerLoader } from \"../Loaders/Spinner/SpinnerLoader\";\nimport { OptionContent } from \"../Select/OptionContent/OptionContent\";\nimport {\n StyledComboBoxCloseSmallIcon,\n StyledComboBoxCollapseExpandSingleIcon,\n StyledComboBoxInput,\n StyledComboBoxList,\n StyledChipWrapper,\n} from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { InputAdornment } from \"../Input/InputAdornment\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Chip } from \"../Chip\";\nimport { StyledInput, StyledInputWrapper } from \"../Input/Styles\";\nimport { useOnClickOutside } from \"../../hooks/useOnClickOutside\";\nimport { Avatar, AvatarProps } from \"../Avatar\";\nimport { Trigger } from \"../Trigger\";\nimport { Typography } from \"../Typography/Typography\";\nimport tw from \"twin.macro\";\nimport { Portal } from \"../../helpers\";\nimport { ConditionalWrapper } from \"../../helpers/ConditionWrapper/ConditionWrapper\";\nimport classNames from \"classnames\";\nimport { useIsFirstRender } from \"../../hooks/useIsFirstRender\";\nimport { MultiAvatar } from \"../MultiAvatar\";\n\nexport interface IComboBoxProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"clearInputOnSelect\"\n > {\n /** Set combobox in to loading state */\n loading?: boolean;\n /** Text to display while in loading state */\n loadingText?: string;\n /** onChange callback */\n onChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** disable Input element */\n disabled?: boolean;\n /** Combobox size */\n size?: InputSize;\n /** Invalid state */\n invalid?: boolean;\n /** Render Chip */\n renderChip?: <T extends IOptionItemProps>(\n item: T,\n key?: string | number\n ) => JSX.Element;\n /** Close menu on change */\n forceCloseMenu?: boolean;\n /** Limit chips */\n limitChips?: number;\n /** Hidden number text */\n hiddenNumberText?: (hidden: number) => string;\n /** Render Autocomplete in <Portal> */\n inPortal?: boolean;\n /** inputWrapperClassName */\n inputWrapperClassName?: string;\n /** scrollWrapper */\n scrollWrapper?: boolean;\n /** onClose (f) will be called when Popper close */\n onClose?: () => void;\n /** onClear (f) will be called when user clear input on X icon*/\n onClear?: () => void;\n}\n\nexport const ComboBox: FC<IComboBoxProps> = ({\n options = [],\n selected,\n loading = false,\n loadingText,\n onChange,\n placeholder,\n handleEmptyAction,\n disabled = false,\n size = \"regular\",\n invalid = false,\n type = \"single\",\n renderChip,\n forceCloseMenu = type === \"single\",\n renderOption,\n limitChips = 2,\n hiddenNumberText,\n inPortal = false,\n inputWrapperClassName,\n scrollWrapper,\n onClose,\n onClear,\n ...prop\n}) => {\n const selectedName = useMemo(() => {\n let value = \"\";\n if (!selected) {\n return value;\n }\n options.map((v) => {\n if ((v as IOptionGroupProps)?.options) {\n return (v as IOptionGroupProps).options.find((q) => {\n if (q.id === selected) {\n value = q.name;\n return;\n }\n });\n } else {\n if (v.id === selected) {\n value = v.name;\n return;\n }\n }\n });\n return value;\n }, [options, selected]);\n const [value, setValue] = useState(selectedName);\n const [focused, setFocused] = useState<boolean>(false);\n const handleOnChange = useCallback((e) => setValue(e.target.value), []);\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(childNode, elementRef);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const chipWrapper = useRef<HTMLDivElement>(null);\n const comboBoxRef = useRef<HTMLDivElement | null>(null);\n\n const [open, setOpen] = useState(false);\n const isFirstRender = useIsFirstRender();\n\n useOnClickOutside(wrapperRef, (e) => {\n if (e.target && comboBoxRef.current?.contains(e.target as Node)) {\n return;\n }\n setOpen(false);\n });\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Escape\" && open) {\n setOpen(false);\n setValue(selectedName);\n e.stopPropagation();\n }\n\n if (e.key === \"Enter\" && type === \"multiple\") {\n setValue(\"\");\n }\n\n if (e.key === \"Enter\" && !open && focused) {\n setOpen(true);\n }\n },\n [focused, open, selectedName, type]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n !open && childNode?.current?.blur();\n }, [childNode, open]);\n\n useEffect(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n useEffect(() => {\n if (!open && !isFirstRender && !focused) {\n if (typeof onClose === \"function\") {\n onClose();\n }\n }\n }, [focused, isFirstRender, onClose, open]);\n\n const emptyAction = useCallback(\n (v) => {\n handleEmptyAction?.(v);\n setOpen(false);\n },\n [handleEmptyAction]\n );\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (selectedValue !== selected && typeof onChange === \"function\") {\n onChange(selectedValue);\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n },\n [forceCloseMenu, onChange, selected]\n );\n\n const onOpen = useCallback(() => {\n if (!disabled) {\n setOpen(true);\n }\n }, [disabled]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n if (type === \"multiple\") {\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <Checkbox {...props} />\n </>\n );\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <RadioButton {...props} />\n </>\n );\n },\n [type, renderOption]\n );\n\n const handleDeselect = useCallback(\n (e) => {\n e.stopPropagation();\n if (type === \"multiple\") {\n onChange?.([]);\n onClear?.();\n } else {\n onChange?.(\"\");\n onClear?.();\n }\n\n setOpen(false);\n },\n [type, onChange, onClear]\n );\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n }, []);\n\n const handleBlur = useCallback(() => {\n setValue(selectedName);\n setFocused(!focused);\n }, [focused, selectedName]);\n\n const renderChipAdornment = useCallback(\n (option, index) => {\n if (typeof renderChip === \"function\") {\n return renderChip(option, index);\n }\n const avatarProps: Partial<AvatarProps> = {\n size: 18,\n };\n switch (size) {\n case \"big\":\n avatarProps.size = 22;\n break;\n case \"small\":\n avatarProps.size = 14;\n break;\n }\n const leftAdornment = option.image ? (\n <Avatar\n css={`\n ${tw`tw-my-0.5`}\n ${tw`tw-mr-0.5`}\n `}\n url={option.image}\n {...avatarProps}\n />\n ) : undefined;\n\n const onClose = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (Array.isArray(selected) && selected.includes(option.id)) {\n if (typeof onChange === \"function\") {\n const newSelected = selected.filter((item) => item !== option.id);\n onChange(newSelected);\n }\n }\n };\n\n let showOnClose = true;\n if (disabled) {\n showOnClose = false;\n }\n if (option.color) {\n showOnClose = false;\n }\n\n return (\n <Chip\n className=\"c-combo-box-chip\"\n leftAdornment={leftAdornment}\n label={option.name}\n key={index}\n backgroundColor={option.color}\n color={option.chipColor}\n onClose={showOnClose ? onClose : undefined}\n size={size}\n variant=\"Body 2\"\n />\n );\n },\n [disabled, onChange, renderChip, selected, size]\n );\n\n const autoSize = useMemo(() => {\n if (\n type === \"multiple\" &&\n open &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n return \"auto\";\n }\n return size;\n }, [open, selected, size, type]);\n\n const startAdornment = useMemo(() => {\n if (type === \"multiple\" && Array.isArray(selected) && selected.length > 0) {\n const elements: JSX.Element[] = [];\n let total = 0;\n options.forEach((option, index) => {\n const isGrouped = isOptionGroup(option);\n if (selected.includes(option.id) && !isGrouped) {\n total = total + 1;\n elements.push(renderChipAdornment(option, index));\n } else if (isGrouped) {\n const groupedOptions = option.options.filter((o) =>\n selected.includes(o.id)\n );\n total = total + groupedOptions.length;\n if (groupedOptions.length > 0) {\n groupedOptions.forEach((o, _index) => {\n elements.push(renderChipAdornment(o, `${index}_${_index}`));\n });\n }\n }\n });\n let hidden = 0;\n if (!open && limitChips > 0 && elements.length > limitChips) {\n hidden = elements.splice(\n limitChips,\n elements.length - limitChips\n ).length;\n }\n\n return (\n <Fragment>\n {elements}\n {hidden > 0 && (\n <Typography\n variant={\n size === \"small\"\n ? \"Caption 1\"\n : size === \"regular\"\n ? \"Body 2\"\n : \"Body 1\"\n }\n css={`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n `}\n >\n {typeof hiddenNumberText === \"function\"\n ? hiddenNumberText(hidden)\n : `+${hidden}`}\n </Typography>\n )}\n </Fragment>\n );\n }\n if (type === \"single\" && selected) {\n let optionItem;\n options.forEach((option) => {\n if (isOptionGroup(option)) {\n optionItem = option.options.find((child) => child.id === selected);\n } else if (!optionItem && option.id === selected) {\n optionItem = option;\n }\n });\n if (optionItem && optionItem.image) {\n const avatarSize = size === \"big\" ? 22 : size === \"regular\" ? 18 : 14;\n if (Array.isArray(optionItem.image)) {\n return <MultiAvatar url={optionItem.image} size={avatarSize} />;\n }\n return <Avatar url={optionItem.image} size={avatarSize} />;\n }\n }\n\n return undefined;\n }, [\n type,\n selected,\n options,\n open,\n limitChips,\n hiddenNumberText,\n renderChipAdornment,\n size,\n ]);\n\n const showXIcon =\n Array.isArray(selected) && type === \"multiple\" && selected.length > 0;\n\n const hasSelected =\n type === \"multiple\" && Array.isArray(selected) && selected.length > 0;\n\n return (\n <div className=\"c-combo-box\">\n {type === \"multiple\" ? (\n <>\n <StyledInputWrapper\n $disabled={disabled}\n $size={size}\n $invalid={invalid}\n ref={comboBoxRef}\n css={`\n display: flex;\n justify-content: space-between;\n flex: 1;\n height: ${autoSize === \"auto\" ? \"auto\" : undefined};\n overflow-y: ${autoSize === \"auto\" && scrollWrapper\n ? \"scroll\"\n : undefined};\n max-height: ${autoSize === \"auto\" && scrollWrapper\n ? \"80px\"\n : undefined};\n `}\n className={classNames(\n \"c-combo-box-input-wrapper\",\n inputWrapperClassName\n )}\n onClick={() => {\n elementRef.current?.click();\n }}\n >\n <StyledChipWrapper\n $autoSize={autoSize}\n $open={open}\n ref={chipWrapper}\n >\n {startAdornment}\n <StyledInput\n className=\"c-combo-box-input\"\n onBlur={handleBlur}\n onFocus={() => {\n setFocused(!focused);\n }}\n onClick={onOpen}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={!hasSelected ? placeholder : undefined}\n disabled={disabled}\n $size={size}\n $loading={loading}\n style={{\n display: \"flex\",\n flex: 1,\n alignSelf: \"center\",\n width: autoSize === \"auto\" ? \"auto\" : \"100%\",\n }}\n />\n </StyledChipWrapper>\n {!disabled && (\n <>\n {loading ? (\n <SpinnerLoader />\n ) : (\n <>\n {showXIcon && (\n <Trigger\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n data-testid=\"deselect-all\"\n css={`\n display: flex;\n justify-content: center;\n `}\n >\n <StyledComboBoxCloseSmallIcon />\n </Trigger>\n )}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </>\n )}\n </>\n )}\n </StyledInputWrapper>\n </>\n ) : (\n <StyledComboBoxInput\n className={classNames(\"c-combo-box-input\", inputWrapperClassName)}\n onBlur={handleBlur}\n wrapperClick={onOpen}\n onFocus={() => {\n setFocused(!focused);\n }}\n onClick={onOpen}\n wrapRef={comboBoxRef}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n invalid={invalid}\n $loading={loading}\n startAdornment={startAdornment}\n endAdornment={\n !disabled ? (\n <InputAdornment disablePointerEvents={disabled}>\n {loading ? (\n <SpinnerLoader />\n ) : selected ? (\n <IconButton\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n variant=\"text gray\"\n size=\"small\"\n >\n <StyledComboBoxCloseSmallIcon />\n </IconButton>\n ) : null}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </InputAdornment>\n ) : null\n }\n />\n )}\n\n {!disabled ? (\n <ConditionalWrapper\n condition={inPortal}\n wrap={(children) => <Portal>{children}</Portal>}\n >\n <Popper\n anchorEl={comboBoxRef.current}\n open={open}\n placement=\"bottom\"\n style={{\n zIndex: 10,\n width: comboBoxRef.current?.clientWidth,\n }}\n ref={wrapperRef}\n strategy=\"fixed\"\n >\n <RemoveScroll noIsolation allowPinchZoom>\n <StyledComboBoxList $width={comboBoxRef.current?.clientWidth}>\n <Autocomplete\n {...prop}\n inputEl={childNode}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n type={type}\n handleEmptyAction={emptyAction}\n />\n </StyledComboBoxList>\n </RemoveScroll>\n </Popper>\n </ConditionalWrapper>\n ) : null}\n </div>\n );\n};\n\nComboBox.displayName = \"ComboBox\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"ComboBox.js","names":["React","useCallback","useState","useEffect","useRef","useMemo","Fragment","RadioButton","Autocomplete","IconButton","isOptionGroup","useForkRef","Popper","RemoveScroll","SpinnerLoader","OptionContent","StyledComboBoxCloseSmallIcon","StyledComboBoxCollapseExpandSingleIcon","StyledComboBoxInput","StyledComboBoxList","StyledChipWrapper","InputAdornment","Checkbox","Chip","StyledInput","StyledInputWrapper","useOnClickOutside","Avatar","Trigger","Typography","Portal","ConditionalWrapper","classNames","useIsFirstRender","MultiAvatar","ComboBox","options","selected","loading","loadingText","onChange","placeholder","handleEmptyAction","disabled","size","invalid","type","renderChip","forceCloseMenu","renderOption","limitChips","hiddenNumberText","inPortal","inputWrapperClassName","scrollWrapper","onClose","onClear","prop","selectedName","value","map","v","find","q","id","name","setValue","focused","setFocused","handleOnChange","e","target","childNode","elementRef","handleRef","wrapperRef","chipWrapper","comboBoxRef","open","setOpen","isFirstRender","current","contains","handleOnKeyDown","key","stopPropagation","focus","blur","emptyAction","handleChange","selectedValue","onOpen","handleRenderOption","option","props","image","color","textColor","handleDeselect","handleMouseDown","preventDefault","handleBlur","renderChipAdornment","index","avatarProps","leftAdornment","undefined","Array","isArray","includes","newSelected","filter","item","showOnClose","chipColor","autoSize","length","startAdornment","elements","total","forEach","isGrouped","push","groupedOptions","o","_index","hidden","splice","optionItem","child","avatarSize","showXIcon","hasSelected","click","display","flex","alignSelf","width","children","zIndex","clientWidth","displayName"],"sources":["../../../../src/components/ComboBox/ComboBox.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n Fragment,\n} from \"react\";\nimport { RadioButton } from \"../RadioButton\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { IconButton } from \"../IconButton\";\nimport {\n IAutocompleteProps,\n isOptionGroup,\n} from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Popper } from \"../Popper\";\nimport { IOptionGroupProps, IOptionItemProps } from \"../Select\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { SpinnerLoader } from \"../Loaders/Spinner/SpinnerLoader\";\nimport { OptionContent } from \"../Select/OptionContent/OptionContent\";\nimport {\n StyledComboBoxCloseSmallIcon,\n StyledComboBoxCollapseExpandSingleIcon,\n StyledComboBoxInput,\n StyledComboBoxList,\n StyledChipWrapper,\n} from \"./Styles\";\nimport { InputSize } from \"../Input/types\";\nimport { InputAdornment } from \"../Input/InputAdornment\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Chip } from \"../Chip\";\nimport { StyledInput, StyledInputWrapper } from \"../Input/Styles\";\nimport { useOnClickOutside } from \"../../hooks/useOnClickOutside\";\nimport { Avatar, AvatarProps } from \"../Avatar\";\nimport { Trigger } from \"../Trigger\";\nimport { Typography } from \"../Typography/Typography\";\nimport tw from \"twin.macro\";\nimport { Portal } from \"../../helpers\";\nimport { ConditionalWrapper } from \"../../helpers/ConditionWrapper/ConditionWrapper\";\nimport classNames from \"classnames\";\nimport { useIsFirstRender } from \"../../hooks/useIsFirstRender\";\nimport { MultiAvatar } from \"../MultiAvatar\";\n\nexport interface IComboBoxProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"clearInputOnSelect\"\n > {\n /** Set combobox in to loading state */\n loading?: boolean;\n /** Text to display while in loading state */\n loadingText?: string;\n /** onChange callback */\n onChange?: (\n e: (string | number)[] | string | number | null | undefined\n ) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** disable Input element */\n disabled?: boolean;\n /** Combobox size */\n size?: InputSize;\n /** Invalid state */\n invalid?: boolean;\n /** Render Chip */\n renderChip?: <T extends IOptionItemProps>(\n item: T,\n key?: string | number\n ) => JSX.Element;\n /** Close menu on change */\n forceCloseMenu?: boolean;\n /** Limit chips */\n limitChips?: number;\n /** Hidden number text */\n hiddenNumberText?: (hidden: number) => string;\n /** Render Autocomplete in <Portal> */\n inPortal?: boolean;\n /** inputWrapperClassName */\n inputWrapperClassName?: string;\n /** scrollWrapper */\n scrollWrapper?: boolean;\n /** onClose (f) will be called when Popper close */\n onClose?: () => void;\n /** onClear (f) will be called when user clear input on X icon*/\n onClear?: () => void;\n}\n\nexport const ComboBox: FC<IComboBoxProps> = ({\n options = [],\n selected,\n loading = false,\n loadingText,\n onChange,\n placeholder,\n handleEmptyAction,\n disabled = false,\n size = \"regular\",\n invalid = false,\n type = \"single\",\n renderChip,\n forceCloseMenu = type === \"single\",\n renderOption,\n limitChips = 2,\n hiddenNumberText,\n inPortal = false,\n inputWrapperClassName,\n scrollWrapper,\n onClose,\n onClear,\n ...prop\n}) => {\n const selectedName = useMemo(() => {\n let value = \"\";\n if (!selected) {\n return value;\n }\n options.map((v) => {\n if ((v as IOptionGroupProps)?.options) {\n return (v as IOptionGroupProps).options.find((q) => {\n if (q.id === selected) {\n value = q.name;\n return;\n }\n });\n } else {\n if (v.id === selected) {\n value = v.name;\n return;\n }\n }\n });\n return value;\n }, [options, selected]);\n const [value, setValue] = useState(selectedName);\n const [focused, setFocused] = useState<boolean>(false);\n const handleOnChange = useCallback((e) => setValue(e.target.value), []);\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(childNode, elementRef);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const chipWrapper = useRef<HTMLDivElement>(null);\n const comboBoxRef = useRef<HTMLDivElement | null>(null);\n\n const [open, setOpen] = useState(false);\n const isFirstRender = useIsFirstRender();\n\n useOnClickOutside(wrapperRef, (e) => {\n if (e.target && comboBoxRef.current?.contains(e.target as Node)) {\n return;\n }\n setOpen(false);\n });\n\n const handleOnKeyDown = useCallback(\n (e) => {\n if (e.key === \"Escape\" && open) {\n setOpen(false);\n setValue(selectedName);\n e.stopPropagation();\n }\n\n if (e.key === \"Enter\" && type === \"multiple\") {\n setValue(\"\");\n }\n\n if (e.key === \"Enter\" && !open && focused) {\n setOpen(true);\n }\n },\n [focused, open, selectedName, type]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n !open && childNode?.current?.blur();\n }, [childNode, open]);\n\n useEffect(() => {\n setValue(selectedName);\n }, [selectedName]);\n\n useEffect(() => {\n if (!open && !isFirstRender && !focused) {\n if (typeof onClose === \"function\") {\n onClose();\n }\n }\n }, [focused, isFirstRender, onClose, open]);\n\n const emptyAction = useCallback(\n (v) => {\n handleEmptyAction?.(v);\n setOpen(false);\n },\n [handleEmptyAction]\n );\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (selectedValue !== selected && typeof onChange === \"function\") {\n onChange(selectedValue);\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n },\n [forceCloseMenu, onChange, selected]\n );\n\n const onOpen = useCallback(() => {\n if (!disabled) {\n setOpen(true);\n }\n }, [disabled]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n if (type === \"multiple\") {\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <Checkbox {...props} />\n </>\n );\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n />\n <RadioButton {...props} />\n </>\n );\n },\n [type, renderOption]\n );\n\n const handleDeselect = useCallback(\n (e) => {\n e.stopPropagation();\n if (type === \"multiple\") {\n onChange?.([]);\n onClear?.();\n } else {\n onChange?.(\"\");\n onClear?.();\n }\n\n setOpen(false);\n },\n [type, onChange, onClear]\n );\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n }, []);\n\n const handleBlur = useCallback(() => {\n setValue(selectedName);\n setFocused(!focused);\n }, [focused, selectedName]);\n\n const renderChipAdornment = useCallback(\n (option, index) => {\n if (typeof renderChip === \"function\") {\n return renderChip(option, index);\n }\n const avatarProps: Partial<AvatarProps> = {\n size: 18,\n };\n switch (size) {\n case \"big\":\n avatarProps.size = 22;\n break;\n case \"small\":\n avatarProps.size = 14;\n break;\n }\n const leftAdornment = option.image ? (\n <Avatar\n css={`\n ${tw`tw-my-0.5`}\n ${tw`tw-mr-0.5`}\n `}\n url={option.image}\n {...avatarProps}\n />\n ) : undefined;\n\n const onClose = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (Array.isArray(selected) && selected.includes(option.id)) {\n if (typeof onChange === \"function\") {\n const newSelected = selected.filter((item) => item !== option.id);\n onChange(newSelected);\n }\n }\n };\n\n let showOnClose = true;\n if (disabled) {\n showOnClose = false;\n }\n if (option.color) {\n showOnClose = false;\n }\n\n return (\n <Chip\n className=\"c-combo-box-chip\"\n leftAdornment={leftAdornment}\n label={option.name}\n key={index}\n backgroundColor={option.color}\n color={option.chipColor}\n onClose={showOnClose ? onClose : undefined}\n size={size}\n variant=\"Caption 1\"\n />\n );\n },\n [disabled, onChange, renderChip, selected, size]\n );\n\n const autoSize = useMemo(() => {\n if (\n type === \"multiple\" &&\n open &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n return \"auto\";\n }\n return size;\n }, [open, selected, size, type]);\n\n const startAdornment = useMemo(() => {\n if (type === \"multiple\" && Array.isArray(selected) && selected.length > 0) {\n const elements: JSX.Element[] = [];\n let total = 0;\n options.forEach((option, index) => {\n const isGrouped = isOptionGroup(option);\n if (selected.includes(option.id) && !isGrouped) {\n total = total + 1;\n elements.push(renderChipAdornment(option, index));\n } else if (isGrouped) {\n const groupedOptions = option.options.filter((o) =>\n selected.includes(o.id)\n );\n total = total + groupedOptions.length;\n if (groupedOptions.length > 0) {\n groupedOptions.forEach((o, _index) => {\n elements.push(renderChipAdornment(o, `${index}_${_index}`));\n });\n }\n }\n });\n let hidden = 0;\n if (!open && limitChips > 0 && elements.length > limitChips) {\n hidden = elements.splice(\n limitChips,\n elements.length - limitChips\n ).length;\n }\n\n return (\n <Fragment>\n {elements}\n {hidden > 0 && (\n <Typography\n variant={\n size === \"small\"\n ? \"Caption 1\"\n : size === \"regular\"\n ? \"Body 2\"\n : \"Body 1\"\n }\n css={`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n `}\n >\n {typeof hiddenNumberText === \"function\"\n ? hiddenNumberText(hidden)\n : `+${hidden}`}\n </Typography>\n )}\n </Fragment>\n );\n }\n if (type === \"single\" && selected) {\n let optionItem;\n options.forEach((option) => {\n if (isOptionGroup(option)) {\n optionItem = option.options.find((child) => child.id === selected);\n } else if (!optionItem && option.id === selected) {\n optionItem = option;\n }\n });\n if (optionItem && optionItem.image) {\n const avatarSize = size === \"big\" ? 22 : size === \"regular\" ? 18 : 14;\n if (Array.isArray(optionItem.image)) {\n return <MultiAvatar url={optionItem.image} size={avatarSize} />;\n }\n return <Avatar url={optionItem.image} size={avatarSize} />;\n }\n }\n\n return undefined;\n }, [\n type,\n selected,\n options,\n open,\n limitChips,\n hiddenNumberText,\n renderChipAdornment,\n size,\n ]);\n\n const showXIcon =\n Array.isArray(selected) && type === \"multiple\" && selected.length > 0;\n\n const hasSelected =\n type === \"multiple\" && Array.isArray(selected) && selected.length > 0;\n\n return (\n <div className=\"c-combo-box\">\n {type === \"multiple\" ? (\n <>\n <StyledInputWrapper\n $disabled={disabled}\n $size={size}\n $invalid={invalid}\n ref={comboBoxRef}\n css={`\n display: flex;\n justify-content: space-between;\n flex: 1;\n height: ${autoSize === \"auto\" ? \"auto\" : undefined};\n overflow-y: ${autoSize === \"auto\" && scrollWrapper\n ? \"scroll\"\n : undefined};\n max-height: ${autoSize === \"auto\" && scrollWrapper\n ? \"80px\"\n : undefined};\n `}\n className={classNames(\n \"c-combo-box-input-wrapper\",\n inputWrapperClassName\n )}\n onClick={() => {\n elementRef.current?.click();\n }}\n >\n <StyledChipWrapper\n $autoSize={autoSize}\n $open={open}\n ref={chipWrapper}\n >\n {startAdornment}\n <StyledInput\n className=\"c-combo-box-input\"\n onBlur={handleBlur}\n onFocus={() => {\n setFocused(!focused);\n }}\n onClick={onOpen}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={!hasSelected ? placeholder : undefined}\n disabled={disabled}\n $size={size}\n $loading={loading}\n style={{\n display: \"flex\",\n flex: 1,\n alignSelf: \"center\",\n width: autoSize === \"auto\" ? \"auto\" : \"100%\",\n }}\n />\n </StyledChipWrapper>\n {!disabled && (\n <>\n {loading ? (\n <SpinnerLoader />\n ) : (\n <>\n {showXIcon && (\n <Trigger\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n data-testid=\"deselect-all\"\n css={`\n display: flex;\n justify-content: center;\n `}\n >\n <StyledComboBoxCloseSmallIcon />\n </Trigger>\n )}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </>\n )}\n </>\n )}\n </StyledInputWrapper>\n </>\n ) : (\n <StyledComboBoxInput\n className={classNames(\"c-combo-box-input\", inputWrapperClassName)}\n onBlur={handleBlur}\n wrapperClick={onOpen}\n onFocus={() => {\n setFocused(!focused);\n }}\n onClick={onOpen}\n wrapRef={comboBoxRef}\n ref={handleRef}\n value={loading && loadingText ? loadingText : value}\n onKeyDown={handleOnKeyDown}\n onChange={handleOnChange}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n invalid={invalid}\n $loading={loading}\n startAdornment={startAdornment}\n endAdornment={\n !disabled ? (\n <InputAdornment disablePointerEvents={disabled}>\n {loading ? (\n <SpinnerLoader />\n ) : selected ? (\n <IconButton\n onMouseDown={handleMouseDown}\n onClick={handleDeselect}\n variant=\"text gray\"\n size=\"small\"\n >\n <StyledComboBoxCloseSmallIcon />\n </IconButton>\n ) : null}\n <StyledComboBoxCollapseExpandSingleIcon $open={open} />\n </InputAdornment>\n ) : null\n }\n />\n )}\n\n {!disabled ? (\n <ConditionalWrapper\n condition={inPortal}\n wrap={(children) => <Portal>{children}</Portal>}\n >\n <Popper\n anchorEl={comboBoxRef.current}\n open={open}\n placement=\"bottom\"\n style={{\n zIndex: 10,\n width: comboBoxRef.current?.clientWidth,\n }}\n ref={wrapperRef}\n strategy=\"fixed\"\n >\n <RemoveScroll noIsolation allowPinchZoom>\n <StyledComboBoxList $width={comboBoxRef.current?.clientWidth}>\n <Autocomplete\n {...prop}\n inputEl={childNode}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n type={type}\n handleEmptyAction={emptyAction}\n />\n </StyledComboBoxList>\n </RemoveScroll>\n </Popper>\n </ConditionalWrapper>\n ) : null}\n </div>\n );\n};\n\nComboBox.displayName = \"ComboBox\";\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableContent/Styles.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,SAAS,oEAKrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;SAwBtB,CAAC;AAIF,eAAO,MAAM,WAAW;;kBA8BvB,CAAC"}
1
+ {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableContent/Styles.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,SAAS,oEAKrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;SAyBtB,CAAC;AAIF,eAAO,MAAM,WAAW;;kBA+BvB,CAAC"}
@@ -13,7 +13,7 @@ export var StyledDiv = styled.div.withConfig({
13
13
  export var StyledSpan = styled(Typography).withConfig({
14
14
  displayName: "Styles__StyledSpan",
15
15
  componentId: "sc-1wapx2a-1"
16
- })(["visibility:hidden;display:block;padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;position:relative;border:1px solid transparent;border-radius:6px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:pre;", " &:empty:before{content:\"i\";}"], function (_ref) {
16
+ })(["visibility:hidden;display:block;padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;position:relative;border:1px solid transparent;border-radius:6px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:pre;font-variant-numeric:tabular-nums;", " &:empty:before{content:\"i\";}"], function (_ref) {
17
17
  var $disabled = _ref.$disabled;
18
18
  return $disabled && css(["visibility:visible;"]);
19
19
  });
@@ -21,7 +21,7 @@ StyledSpan.displayName = "StyledSpan";
21
21
  export var StyledInput = styled(Typography).withConfig({
22
22
  displayName: "Styles__StyledInput",
23
23
  componentId: "sc-1wapx2a-2"
24
- })(["", " background-color:inherit;padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;text-overflow:ellipsis;&:focus-whitin{text-overflow:clip;}outline-width:0px;outline:none;&:disabled{display:none;}"], {
24
+ })(["", " background-color:inherit;padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;text-overflow:ellipsis;font-variant-numeric:tabular-nums;&:focus-whitin{text-overflow:clip;}outline-width:0px;outline:none;&:disabled{display:none;}"], {
25
25
  "position": "absolute",
26
26
  "inset": "0px",
27
27
  "boxSizing": "border-box",
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.js","names":["styled","css","BoxSizingStyle","FontStyle","Typography","StyledDiv","div","StyledSpan","$disabled","displayName","StyledInput"],"sources":["../../../../src/components/EditableContent/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\nimport { Typography } from \"../Typography/Typography\";\n\nexport const StyledDiv = styled.div`\n ${FontStyle}\n ${BoxSizingStyle}\n\n ${tw`tw-relative tw-inline-block tw-max-w-full`}\n`;\n\nexport const StyledSpan = styled(Typography)<{ $disabled?: boolean }>`\n visibility: hidden;\n display: block;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 1px;\n padding-bottom: 1px;\n position: relative;\n border: 1px solid transparent;\n border-radius: 6px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: pre;\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n visibility: visible;\n `}\n\n &:empty:before {\n content: \"i\";\n }\n`;\n\nStyledSpan.displayName = \"StyledSpan\";\n\nexport const StyledInput = styled(Typography)`\n ${tw`\n tw-absolute\n tw-inset-0\n tw-border\n tw-border-transparent\n tw-border-solid\n hover:tw-border-theme-700\n focus-within:tw-border-theme-700\n tw-rounded-md\n tw-box-border\n tw-overflow-hidden\n tw-whitespace-nowrap\n focus-within:tw-overflow-scroll\n tw-w-full`}\n\n background-color: inherit;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 1px;\n padding-bottom: 1px;\n text-overflow: ellipsis;\n &:focus-whitin {\n text-overflow: clip;\n }\n outline-width: 0px;\n outline: none;\n &:disabled {\n display: none;\n }\n`;\n\nStyledInput.displayName = \"StyledInput\";\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAE/C,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,UAAU,QAAQ,0BAA0B;AAErD,OAAO,IAAMC,SAAS,GAAGL,MAAM,CAACM,GAAG;EAAA;EAAA;AAAA,uBAC/BH,SAAS,EACTD,cAAc,EAEZ;EAAA;EAAA;EAAA;AAA0C,CAAC,CAChD;AAED,OAAO,IAAMK,UAAU,GAAGP,MAAM,CAACI,UAAU,CAAC;EAAA;EAAA;AAAA,yRAexC;EAAA,IAAGI,SAAS,QAATA,SAAS;EAAA,OACZA,SAAS,IACTP,GAAG,yBAEF;AAAA,EAKJ;AAEDM,UAAU,CAACE,WAAW,GAAG,YAAY;AAErC,OAAO,IAAMC,WAAW,GAAGV,MAAM,CAACI,UAAU,CAAC;EAAA;EAAA;AAAA,+NACvC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;AAaO,CAAC,CAgBb;AAEDM,WAAW,CAACD,WAAW,GAAG,aAAa"}
1
+ {"version":3,"file":"Styles.js","names":["styled","css","BoxSizingStyle","FontStyle","Typography","StyledDiv","div","StyledSpan","$disabled","displayName","StyledInput"],"sources":["../../../../src/components/EditableContent/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\nimport { Typography } from \"../Typography/Typography\";\n\nexport const StyledDiv = styled.div`\n ${FontStyle}\n ${BoxSizingStyle}\n\n ${tw`tw-relative tw-inline-block tw-max-w-full`}\n`;\n\nexport const StyledSpan = styled(Typography)<{ $disabled?: boolean }>`\n visibility: hidden;\n display: block;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 1px;\n padding-bottom: 1px;\n position: relative;\n border: 1px solid transparent;\n border-radius: 6px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: pre;\n font-variant-numeric: tabular-nums;\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n visibility: visible;\n `}\n\n &:empty:before {\n content: \"i\";\n }\n`;\n\nStyledSpan.displayName = \"StyledSpan\";\n\nexport const StyledInput = styled(Typography)`\n ${tw`\n tw-absolute\n tw-inset-0\n tw-border\n tw-border-transparent\n tw-border-solid\n hover:tw-border-theme-700\n focus-within:tw-border-theme-700\n tw-rounded-md\n tw-box-border\n tw-overflow-hidden\n tw-whitespace-nowrap\n focus-within:tw-overflow-scroll\n tw-w-full`}\n\n background-color: inherit;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 1px;\n padding-bottom: 1px;\n text-overflow: ellipsis;\n font-variant-numeric: tabular-nums;\n &:focus-whitin {\n text-overflow: clip;\n }\n outline-width: 0px;\n outline: none;\n &:disabled {\n display: none;\n }\n`;\n\nStyledInput.displayName = \"StyledInput\";\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAE/C,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,UAAU,QAAQ,0BAA0B;AAErD,OAAO,IAAMC,SAAS,GAAGL,MAAM,CAACM,GAAG;EAAA;EAAA;AAAA,uBAC/BH,SAAS,EACTD,cAAc,EAEZ;EAAA;EAAA;EAAA;AAA0C,CAAC,CAChD;AAED,OAAO,IAAMK,UAAU,GAAGP,MAAM,CAACI,UAAU,CAAC;EAAA;EAAA;AAAA,2TAgBxC;EAAA,IAAGI,SAAS,QAATA,SAAS;EAAA,OACZA,SAAS,IACTP,GAAG,yBAEF;AAAA,EAKJ;AAEDM,UAAU,CAACE,WAAW,GAAG,YAAY;AAErC,OAAO,IAAMC,WAAW,GAAGV,MAAM,CAACI,UAAU,CAAC;EAAA;EAAA;AAAA,iQACvC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;EAAA;AAaO,CAAC,CAiBb;AAEDM,WAAW,CAACD,WAAW,GAAG,aAAa"}
@@ -0,0 +1,12 @@
1
+ import { EditableContentInterface } from "../EditableContent";
2
+ import React from "react";
3
+ export interface EditableHoursProps extends EditableContentInterface {
4
+ value?: number | string;
5
+ onSave?: (e: Event) => void;
6
+ onCancel?: () => void;
7
+ withLeadingZero?: boolean;
8
+ validation?: (value: string) => boolean;
9
+ allowEmptyValue?: boolean;
10
+ }
11
+ export declare const EditableHours: React.ForwardRefExoticComponent<EditableHoursProps & React.RefAttributes<HTMLDivElement>>;
12
+ //# sourceMappingURL=EditableHours.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableHours.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AACD,eAAO,MAAM,aAAa,2FAgPzB,CAAC"}
@@ -0,0 +1,198 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ var _excluded = ["value", "onCancel", "onSave", "inputProps", "allowEmptyValue", "withLeadingZero", "validation"];
4
+ import { EditableContent } from "../EditableContent";
5
+ import React, { useCallback, useEffect, useRef, useState } from "react";
6
+ import { decimalToHours } from "../../utils/timeUtils";
7
+ import useForkRef from "../../utils/useForkRef";
8
+ import classNames from "classnames";
9
+ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
10
+ var _ref$value = _ref.value,
11
+ value = _ref$value === void 0 ? 0 : _ref$value,
12
+ onCancel = _ref.onCancel,
13
+ onSave = _ref.onSave,
14
+ inputProps = _ref.inputProps,
15
+ allowEmptyValue = _ref.allowEmptyValue,
16
+ _ref$withLeadingZero = _ref.withLeadingZero,
17
+ withLeadingZero = _ref$withLeadingZero === void 0 ? true : _ref$withLeadingZero,
18
+ _ref$validation = _ref.validation,
19
+ validation = _ref$validation === void 0 ? function () {
20
+ return true;
21
+ } : _ref$validation,
22
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
23
+ var inputRef = useRef(null);
24
+ var handleRef = useForkRef(ref, inputRef);
25
+ var _useState = useState(function () {
26
+ if (value !== undefined) {
27
+ return decimalToHours(value, withLeadingZero);
28
+ }
29
+ return "";
30
+ }),
31
+ currentValue = _useState[0],
32
+ setCurrentValue = _useState[1];
33
+ var _useState2 = useState(function () {
34
+ if (value !== undefined) {
35
+ return decimalToHours(value, withLeadingZero);
36
+ }
37
+ return "";
38
+ }),
39
+ prevValue = _useState2[0],
40
+ setPrevValue = _useState2[1];
41
+ var escapeRef = useRef(false);
42
+ useEffect(function () {
43
+ var _value;
44
+ if (value !== undefined) {
45
+ _value = decimalToHours(value, withLeadingZero);
46
+ }
47
+ if (currentValue !== _value) {
48
+ setCurrentValue(_value);
49
+ setPrevValue(_value);
50
+ }
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, [value]);
53
+ var handleBlur = useCallback(function (e) {
54
+ if (escapeRef.current) {
55
+ setCurrentValue(prevValue);
56
+ escapeRef.current = false;
57
+ } else {
58
+ if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
59
+ var _value = decimalToHours(e.target.value, withLeadingZero);
60
+ setPrevValue(_value);
61
+ setCurrentValue(_value);
62
+ typeof onSave === "function" && onSave(e);
63
+ } else {
64
+ !allowEmptyValue ? setCurrentValue(prevValue) : typeof onSave === "function" && onSave(e);
65
+ }
66
+ }
67
+ }, [allowEmptyValue, onSave, prevValue, withLeadingZero]);
68
+ var handleIncrementDecrement = useCallback(function (increment) {
69
+ if (inputRef.current) {
70
+ var selectionStart = inputRef.current.selectionStart;
71
+ if (selectionStart !== null) {
72
+ var dotsIndex = currentValue.indexOf(":");
73
+ var newValue = "";
74
+ if (selectionStart < dotsIndex) {
75
+ var hours = parseInt(currentValue.substring(0, dotsIndex), 10);
76
+ var newHours = increment ? hours + 1 : hours - 1;
77
+ if (newHours >= 0) {
78
+ newValue = "" + (newHours < 10 ? "0" : "") + newHours + ":" + currentValue.substring(dotsIndex + 1);
79
+ }
80
+ } else if (selectionStart > dotsIndex) {
81
+ var minutes = parseInt(currentValue.substring(dotsIndex + 1), 10);
82
+ var newMinutes = increment ? minutes + 1 : minutes - 1;
83
+ if (newMinutes >= 0 && newMinutes < 60) {
84
+ newValue = "" + currentValue.substring(0, dotsIndex + 1) + (newMinutes < 10 ? "0" : "") + newMinutes;
85
+ }
86
+ }
87
+ if (newValue && validation(newValue)) {
88
+ setCurrentValue(newValue);
89
+ if (onSave) {
90
+ onSave(new Event("input", {
91
+ bubbles: true,
92
+ cancelable: true
93
+ }));
94
+ }
95
+ requestAnimationFrame(function () {
96
+ var _inputRef$current;
97
+ var newDotsIndex = newValue.indexOf(":");
98
+ var isHoursSelected = selectionStart < newDotsIndex;
99
+ var newSelectionStart = isHoursSelected ? 0 : newDotsIndex + 1;
100
+ var selectionEnd = isHoursSelected ? newDotsIndex : newValue.length;
101
+ (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.setSelectionRange(newSelectionStart, selectionEnd);
102
+ });
103
+ }
104
+ }
105
+ }
106
+ }, [currentValue, inputRef, onSave, validation]);
107
+ var handleKeyDown = useCallback(function (e) {
108
+ if (e.key === "Enter") {
109
+ e.target.blur();
110
+ }
111
+ if (e.key === "Escape") {
112
+ escapeRef.current = true;
113
+ e.target.blur();
114
+ typeof onCancel === "function" && onCancel();
115
+ }
116
+ if (e.key === "Backspace") {
117
+ return;
118
+ }
119
+ var input = e.target;
120
+ var start = input.selectionStart;
121
+ var end = input.selectionEnd;
122
+ var currentValue = input.value;
123
+ if (e.key === "Tab") {
124
+ if (start !== end) {
125
+ if (e.shiftKey) {
126
+ var newDotsIndex = currentValue.indexOf(":");
127
+ var isMinutesSelected = start > newDotsIndex;
128
+ if (isMinutesSelected) {
129
+ var _inputRef$current2;
130
+ e.preventDefault();
131
+ (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.setSelectionRange(0, newDotsIndex);
132
+ }
133
+ } else {
134
+ var _newDotsIndex = currentValue.indexOf(":");
135
+ var isHoursSelected = start < _newDotsIndex;
136
+ if (isHoursSelected) {
137
+ var _inputRef$current3;
138
+ e.preventDefault();
139
+ (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.setSelectionRange(_newDotsIndex + 1, currentValue.length);
140
+ }
141
+ }
142
+ }
143
+ return;
144
+ }
145
+ if (start !== end) {
146
+ if (e.key === "ArrowUp") {
147
+ handleIncrementDecrement(true);
148
+ return;
149
+ }
150
+ if (e.key === "ArrowDown") {
151
+ handleIncrementDecrement(false);
152
+ return;
153
+ }
154
+ var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
155
+ if (!validation(newValue)) {
156
+ e.preventDefault();
157
+ return;
158
+ }
159
+ } else {
160
+ var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
161
+ if (!validation(_newValue)) {
162
+ e.preventDefault();
163
+ return;
164
+ }
165
+ }
166
+ }, [handleIncrementDecrement, onCancel, validation]);
167
+ var handleChange = useCallback(function (e) {
168
+ setCurrentValue(e.target.value);
169
+ }, []);
170
+ var handleClick = function handleClick() {
171
+ var _inputRef$current4;
172
+ var selectionStart = (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.selectionStart;
173
+ if (inputRef.current && currentValue && currentValue.length > 0 && typeof selectionStart === "number") {
174
+ var dotsIndex = currentValue.indexOf(":");
175
+ if (selectionStart < dotsIndex) {
176
+ var _inputRef$current5;
177
+ (_inputRef$current5 = inputRef.current) == null ? void 0 : _inputRef$current5.setSelectionRange(0, dotsIndex);
178
+ } else if (selectionStart >= dotsIndex) {
179
+ var _inputRef$current6;
180
+ (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.setSelectionRange(dotsIndex + 1, currentValue.length);
181
+ }
182
+ }
183
+ };
184
+ return /*#__PURE__*/React.createElement(EditableContent, _extends({
185
+ ref: handleRef,
186
+ inputProps: _extends({}, inputProps, {
187
+ value: currentValue,
188
+ onBlur: handleBlur,
189
+ onKeyDown: handleKeyDown,
190
+ onChange: handleChange,
191
+ type: "text",
192
+ onClick: handleClick,
193
+ className: classNames("c-input", inputProps == null ? void 0 : inputProps.className)
194
+ })
195
+ }, rest));
196
+ });
197
+ EditableHours.displayName = "EditableHours";
198
+ //# sourceMappingURL=EditableHours.js.map