@activecollab/components 2.0.167 → 2.0.168

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 (34) hide show
  1. package/dist/cjs/components/ComboBox/ComboBox.js +39 -13
  2. package/dist/cjs/components/ComboBox/ComboBox.js.map +1 -1
  3. package/dist/cjs/components/ComboBox/Styles.js +1 -1
  4. package/dist/cjs/components/ComboBox/Styles.js.map +1 -1
  5. package/dist/cjs/components/Input/InputTime.js +130 -0
  6. package/dist/cjs/components/Input/InputTime.js.map +1 -0
  7. package/dist/cjs/components/Input/index.js +11 -0
  8. package/dist/cjs/components/Input/index.js.map +1 -1
  9. package/dist/cjs/components/SelectTime/SelectTime.js +25 -9
  10. package/dist/cjs/components/SelectTime/SelectTime.js.map +1 -1
  11. package/dist/esm/components/ComboBox/ComboBox.d.ts +8 -2
  12. package/dist/esm/components/ComboBox/ComboBox.d.ts.map +1 -1
  13. package/dist/esm/components/ComboBox/ComboBox.js +35 -10
  14. package/dist/esm/components/ComboBox/ComboBox.js.map +1 -1
  15. package/dist/esm/components/ComboBox/Styles.d.ts +1 -1
  16. package/dist/esm/components/ComboBox/Styles.js +1 -1
  17. package/dist/esm/components/ComboBox/Styles.js.map +1 -1
  18. package/dist/esm/components/Input/InputTime.d.ts +20 -0
  19. package/dist/esm/components/Input/InputTime.d.ts.map +1 -0
  20. package/dist/esm/components/Input/InputTime.js +105 -0
  21. package/dist/esm/components/Input/InputTime.js.map +1 -0
  22. package/dist/esm/components/Input/index.d.ts +1 -0
  23. package/dist/esm/components/Input/index.d.ts.map +1 -1
  24. package/dist/esm/components/Input/index.js +1 -0
  25. package/dist/esm/components/Input/index.js.map +1 -1
  26. package/dist/esm/components/SelectTime/SelectTime.d.ts +1 -1
  27. package/dist/esm/components/SelectTime/SelectTime.d.ts.map +1 -1
  28. package/dist/esm/components/SelectTime/SelectTime.js +23 -10
  29. package/dist/esm/components/SelectTime/SelectTime.js.map +1 -1
  30. package/dist/index.js +2645 -2492
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.min.js +1 -1
  33. package/dist/index.min.js.map +1 -1
  34. package/package.json +3 -1
@@ -0,0 +1,105 @@
1
+ import React, { useCallback, useEffect, useState } from "react";
2
+ import classNames from "classnames";
3
+ import nlp from "compromise";
4
+ import plg from "compromise-dates";
5
+ import moment from "moment";
6
+ import styled from "styled-components";
7
+ import { isValidTime } from "../../utils/timeUtils";
8
+ import { ComboBox } from "../ComboBox/ComboBox";
9
+ nlp.plugin(plg);
10
+ export const StyledInputTimeWrapper = styled.div.withConfig({
11
+ displayName: "InputTime__StyledInputTimeWrapper",
12
+ componentId: "sc-71akdh-0"
13
+ })(["max-width:176px;flex:1;& .c-combo-box--list{min-width:176px;}"]);
14
+ const renderOption = option => {
15
+ return /*#__PURE__*/React.createElement("div", {
16
+ id: option.id
17
+ }, option.name);
18
+ };
19
+ export const InputTime = _ref => {
20
+ let {
21
+ mode = "24",
22
+ selected: defaultSelected,
23
+ min = "00:00",
24
+ max = "23:45",
25
+ onChange,
26
+ step = 15,
27
+ size,
28
+ className,
29
+ placeholder,
30
+ triggerMode,
31
+ disabled,
32
+ invalid
33
+ } = _ref;
34
+ const [selected, setSelected] = useState(defaultSelected || "");
35
+ const [isOpen, setIsOpen] = useState(false);
36
+ const generateTimeOptions = () => {
37
+ const minTime = moment(isValidTime(min) ? min : "00:00", "HH:mm");
38
+ const maxTime = moment(isValidTime(max) ? max : "23:45", "HH:mm");
39
+ const options = [];
40
+ const currentTime = minTime.clone();
41
+ while (currentTime.isSameOrBefore(maxTime)) {
42
+ options.push({
43
+ id: currentTime.format("HH:mm"),
44
+ name: currentTime.format(mode === "12" ? "hh:mm A" : "HH:mm")
45
+ });
46
+ currentTime.add(step, "minutes");
47
+ }
48
+ return options;
49
+ };
50
+ const timeOptions = generateTimeOptions();
51
+ const handleInputChange = useCallback(text => {
52
+ const doc = nlp(text);
53
+ const parsed = doc.times().get()[0];
54
+ if (parsed && parsed["24h"] && parsed["24h"] !== selected) {
55
+ const value = moment(parsed).format("HH:mm");
56
+ if (timeOptions.some(option => option.id === value)) {
57
+ setSelected(value);
58
+ onChange == null || onChange(value);
59
+ setIsOpen(false);
60
+ }
61
+ }
62
+ }, [onChange, selected, timeOptions]);
63
+ const handleChange = e => {
64
+ setSelected(e);
65
+ onChange == null || onChange(e);
66
+ };
67
+ const handleOpen = () => {
68
+ setIsOpen(true);
69
+ };
70
+ const handleClose = () => {
71
+ setIsOpen(false);
72
+ };
73
+ useEffect(() => {
74
+ if (isOpen && selected) {
75
+ var _document$getElementB;
76
+ const selectedItem = (_document$getElementB = document.getElementById(selected)) == null ? void 0 : _document$getElementB.parentElement;
77
+ selectedItem == null || selectedItem.scrollIntoView({
78
+ behavior: "smooth",
79
+ block: "center"
80
+ });
81
+ }
82
+ }, [isOpen, selected]);
83
+ return /*#__PURE__*/React.createElement(StyledInputTimeWrapper, {
84
+ className: classNames("c-input-time", className)
85
+ }, /*#__PURE__*/React.createElement(ComboBox, {
86
+ options: timeOptions,
87
+ open: isOpen,
88
+ disabledInternalSort: true,
89
+ selected: selected,
90
+ keepSameOptionsOrder: true,
91
+ onInputChange: handleInputChange,
92
+ onChange: handleChange,
93
+ forceCloseMenu: true,
94
+ placeholder: placeholder,
95
+ renderOption: renderOption,
96
+ autoHeightMax: 226,
97
+ size: size,
98
+ onClose: handleClose,
99
+ onOpen: handleOpen,
100
+ triggerMode: triggerMode,
101
+ disabled: disabled,
102
+ invalid: invalid
103
+ }));
104
+ };
105
+ //# sourceMappingURL=InputTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputTime.js","names":["React","useCallback","useEffect","useState","classNames","nlp","plg","moment","styled","isValidTime","ComboBox","plugin","StyledInputTimeWrapper","div","withConfig","displayName","componentId","renderOption","option","createElement","id","name","InputTime","_ref","mode","selected","defaultSelected","min","max","onChange","step","size","className","placeholder","triggerMode","disabled","invalid","setSelected","isOpen","setIsOpen","generateTimeOptions","minTime","maxTime","options","currentTime","clone","isSameOrBefore","push","format","add","timeOptions","handleInputChange","text","doc","parsed","times","get","value","some","handleChange","e","handleOpen","handleClose","_document$getElementB","selectedItem","document","getElementById","parentElement","scrollIntoView","behavior","block","open","disabledInternalSort","keepSameOptionsOrder","onInputChange","forceCloseMenu","autoHeightMax","onClose","onOpen"],"sources":["../../../../src/components/Input/InputTime.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport nlp from \"compromise\";\nimport plg, { DatesMethods } from \"compromise-dates\";\nimport moment from \"moment\";\nimport styled from \"styled-components\";\n\nimport { InputMode, InputSize } from \"./types\";\nimport { isValidTime } from \"../../utils/timeUtils\";\nimport { ComboBox } from \"../ComboBox/ComboBox\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { Time24HourFormat } from \"../SelectTime\";\n\nnlp.plugin(plg);\n\nexport const StyledInputTimeWrapper = styled.div`\n max-width: 176px;\n flex: 1;\n\n & .c-combo-box--list {\n min-width: 176px;\n }\n`;\n\nexport interface InputTimeProps {\n mode?: \"12\" | \"24\";\n selected?: Time24HourFormat;\n min?: Time24HourFormat;\n max?: Time24HourFormat;\n onChange?: (val: string) => void;\n className?: string;\n placeholder?: string;\n size?: InputSize;\n step?: 1 | 5 | 15 | 30 | 60;\n triggerMode?: InputMode;\n disabled?: boolean;\n invalid?: boolean;\n}\n\nconst renderOption = (option) => {\n return <div id={option.id}>{option.name}</div>;\n};\n\nexport const InputTime: React.FC<InputTimeProps> = ({\n mode = \"24\",\n selected: defaultSelected,\n min = \"00:00\",\n max = \"23:45\",\n onChange,\n step = 15,\n size,\n className,\n placeholder,\n triggerMode,\n disabled,\n invalid,\n}) => {\n const [selected, setSelected] = useState<string>(defaultSelected || \"\");\n const [isOpen, setIsOpen] = useState(false);\n\n const generateTimeOptions = (): IOptionItemProps[] => {\n const minTime = moment(isValidTime(min) ? min : \"00:00\", \"HH:mm\");\n const maxTime = moment(isValidTime(max) ? max : \"23:45\", \"HH:mm\");\n const options: IOptionItemProps[] = [];\n\n const currentTime = minTime.clone();\n while (currentTime.isSameOrBefore(maxTime)) {\n options.push({\n id: currentTime.format(\"HH:mm\"),\n name: currentTime.format(mode === \"12\" ? \"hh:mm A\" : \"HH:mm\"),\n });\n currentTime.add(step, \"minutes\");\n }\n\n return options;\n };\n\n const timeOptions = generateTimeOptions();\n\n const handleInputChange = useCallback(\n (text: string) => {\n const doc = nlp<DatesMethods>(text);\n const parsed = doc.times().get()[0];\n if (parsed && parsed[\"24h\"] && parsed[\"24h\"] !== selected) {\n const value = moment(parsed).format(\"HH:mm\");\n if (timeOptions.some((option) => option.id === value)) {\n setSelected(value);\n onChange?.(value);\n setIsOpen(false);\n }\n }\n },\n [onChange, selected, timeOptions]\n );\n\n const handleChange = (e) => {\n setSelected(e);\n onChange?.(e);\n };\n\n const handleOpen = () => {\n setIsOpen(true);\n };\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n useEffect(() => {\n if (isOpen && selected) {\n const selectedItem = document.getElementById(selected)?.parentElement;\n selectedItem?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }\n }, [isOpen, selected]);\n\n return (\n <StyledInputTimeWrapper className={classNames(\"c-input-time\", className)}>\n <ComboBox\n options={timeOptions}\n open={isOpen}\n disabledInternalSort\n selected={selected}\n keepSameOptionsOrder\n onInputChange={handleInputChange}\n onChange={handleChange}\n forceCloseMenu\n placeholder={placeholder}\n renderOption={renderOption}\n autoHeightMax={226}\n size={size}\n onClose={handleClose}\n onOpen={handleOpen}\n triggerMode={triggerMode}\n disabled={disabled}\n invalid={invalid}\n />\n </StyledInputTimeWrapper>\n );\n};\n"],"mappings":"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"}
@@ -6,4 +6,5 @@ export * from "./InputNumber";
6
6
  export * from "./InputPassword";
7
7
  export * from "./InputUrl";
8
8
  export * from "./InputPhone";
9
+ export * from "./InputTime";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -6,4 +6,5 @@ export * from "./InputNumber";
6
6
  export * from "./InputPassword";
7
7
  export * from "./InputUrl";
8
8
  export * from "./InputPhone";
9
+ export * from "./InputTime";
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/Input/index.ts"],"sourcesContent":["export * from \"./Input\";\nexport * from \"./InputAdornment\";\nexport * from \"./InputHours\";\nexport * from \"./InputCurrency\";\nexport * from \"./InputNumber\";\nexport * from \"./InputPassword\";\nexport * from \"./InputUrl\";\nexport * from \"./InputPhone\";\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,kBAAkB;AAChC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAC1B,cAAc,cAAc"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/Input/index.ts"],"sourcesContent":["export * from \"./Input\";\nexport * from \"./InputAdornment\";\nexport * from \"./InputHours\";\nexport * from \"./InputCurrency\";\nexport * from \"./InputNumber\";\nexport * from \"./InputPassword\";\nexport * from \"./InputUrl\";\nexport * from \"./InputPhone\";\nexport * from \"./InputTime\";\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,kBAAkB;AAChC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAC1B,cAAc,cAAc;AAC5B,cAAc,aAAa"}
@@ -14,7 +14,7 @@ export interface SelectTimeProps extends Omit<SelectTriggerProps, "mode"> {
14
14
  triggerMode?: InputMode;
15
15
  locale?: string;
16
16
  trigger?: string;
17
- step?: number;
17
+ step?: 1 | 5 | 15 | 30 | 60;
18
18
  }
19
19
  export declare const SelectTime: React.FC<SelectTimeProps>;
20
20
  //# sourceMappingURL=SelectTime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTime.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectTime/SelectTime.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAU,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACvE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwDhD,CAAC"}
1
+ {"version":3,"file":"SelectTime.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectTime/SelectTime.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAU,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACvE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;CAC7B;AAMD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAkEhD,CAAC"}
@@ -4,12 +4,17 @@ import moment from "moment";
4
4
  import { isValidTime } from "../../utils/timeUtils";
5
5
  import { Select } from "../Select/Select";
6
6
  import { SelectTrigger } from "../SelectTrigger";
7
+ const renderOption = option => {
8
+ return /*#__PURE__*/React.createElement("div", {
9
+ id: option.id
10
+ }, option.name);
11
+ };
7
12
  export const SelectTime = _ref => {
8
13
  let {
9
14
  mode = "24",
10
- selected = "12:00",
11
- min,
12
- max,
15
+ selected,
16
+ min = "00:00",
17
+ max = "23:45",
13
18
  onChange,
14
19
  target,
15
20
  triggerMode,
@@ -32,6 +37,18 @@ export const SelectTime = _ref => {
32
37
  };
33
38
  const timeOptions = generateTimeOptions();
34
39
  const displaySelectedTime = moment(selected, "HH:mm").format(mode === "12" ? "hh:mm A" : "HH:mm");
40
+ const handleScrollToSelected = () => {
41
+ if (selected) {
42
+ setTimeout(() => {
43
+ var _document$getElementB;
44
+ const selectedItem = (_document$getElementB = document.getElementById(selected)) == null ? void 0 : _document$getElementB.parentElement;
45
+ selectedItem == null || selectedItem.scrollIntoView({
46
+ behavior: "smooth",
47
+ block: "center"
48
+ });
49
+ }, 50);
50
+ }
51
+ };
35
52
  return /*#__PURE__*/React.createElement(Select, {
36
53
  options: timeOptions,
37
54
  disabledInternalSort: true,
@@ -42,14 +59,10 @@ export const SelectTime = _ref => {
42
59
  mode: triggerMode
43
60
  }, rest), displaySelectedTime),
44
61
  mode: "tiny",
45
- renderOption: _ref2 => {
46
- let {
47
- name
48
- } = _ref2;
49
- return /*#__PURE__*/React.createElement("div", null, name);
50
- },
62
+ renderOption: renderOption,
51
63
  onChange: onChange,
52
- forceCloseMenu: true
64
+ forceCloseMenu: true,
65
+ onSelectOpen: handleScrollToSelected
53
66
  });
54
67
  };
55
68
  //# sourceMappingURL=SelectTime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTime.js","names":["React","moment","isValidTime","Select","SelectTrigger","SelectTime","_ref","mode","selected","min","max","onChange","target","triggerMode","step","rest","generateTimeOptions","minTime","maxTime","options","currentTime","clone","isSameOrBefore","push","id","format","name","add","timeOptions","displaySelectedTime","createElement","disabledInternalSort","disableSearch","keepSameOptionsOrder","_extends","renderOption","_ref2","forceCloseMenu"],"sources":["../../../../src/components/SelectTime/SelectTime.tsx"],"sourcesContent":["import React from \"react\";\n\nimport moment from \"moment\";\n\nimport { isValidTime } from \"../../utils/timeUtils\";\nimport { InputMode } from \"../Input/types\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { ElementWithRef, Select } from \"../Select/Select\";\nimport { SelectTrigger, SelectTriggerProps } from \"../SelectTrigger\";\n\nexport type Time24HourFormat = `${string}:${string}` | undefined;\n\nexport interface SelectTimeProps extends Omit<SelectTriggerProps, \"mode\"> {\n mode?: \"12\" | \"24\";\n selected?: Time24HourFormat;\n min?: Time24HourFormat;\n max?: Time24HourFormat;\n onChange?: () => void;\n target?: ElementWithRef<Element>;\n className?: string;\n triggerMode?: InputMode;\n locale?: string;\n trigger?: string;\n step?: number;\n}\n\nexport const SelectTime: React.FC<SelectTimeProps> = ({\n mode = \"24\",\n selected = \"12:00\",\n min,\n max,\n onChange,\n target,\n triggerMode,\n step = 15,\n ...rest\n}) => {\n const generateTimeOptions = (): IOptionItemProps[] => {\n const minTime = moment(isValidTime(min) ? min : \"00:00\", \"HH:mm\");\n const maxTime = moment(isValidTime(max) ? max : \"23:45\", \"HH:mm\");\n const options: IOptionItemProps[] = [];\n\n const currentTime = minTime.clone();\n while (currentTime.isSameOrBefore(maxTime)) {\n options.push({\n id: currentTime.format(\"HH:mm\"),\n name: currentTime.format(mode === \"12\" ? \"hh:mm A\" : \"HH:mm\"),\n });\n currentTime.add(step, \"minutes\");\n }\n\n return options;\n };\n\n const timeOptions = generateTimeOptions();\n\n const displaySelectedTime = moment(selected, \"HH:mm\").format(\n mode === \"12\" ? \"hh:mm A\" : \"HH:mm\"\n );\n\n return (\n <Select\n options={timeOptions}\n disabledInternalSort\n selected={selected}\n disableSearch\n keepSameOptionsOrder\n target={\n target ? (\n target\n ) : (\n <SelectTrigger mode={triggerMode} {...rest}>\n {displaySelectedTime}\n </SelectTrigger>\n )\n }\n mode=\"tiny\"\n renderOption={({ name }) => <div>{name}</div>}\n onChange={onChange}\n forceCloseMenu\n />\n );\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,QAAQ;AAE3B,SAASC,WAAW,QAAQ,uBAAuB;AAGnD,SAAyBC,MAAM,QAAQ,kBAAkB;AACzD,SAASC,aAAa,QAA4B,kBAAkB;AAkBpE,OAAO,MAAMC,UAAqC,GAAGC,IAAA,IAU/C;EAAA,IAVgD;IACpDC,IAAI,GAAG,IAAI;IACXC,QAAQ,GAAG,OAAO;IAClBC,GAAG;IACHC,GAAG;IACHC,QAAQ;IACRC,MAAM;IACNC,WAAW;IACXC,IAAI,GAAG,EAAE;IACT,GAAGC;EACL,CAAC,GAAAT,IAAA;EACC,MAAMU,mBAAmB,GAAGA,CAAA,KAA0B;IACpD,MAAMC,OAAO,GAAGhB,MAAM,CAACC,WAAW,CAACO,GAAG,CAAC,GAAGA,GAAG,GAAG,OAAO,EAAE,OAAO,CAAC;IACjE,MAAMS,OAAO,GAAGjB,MAAM,CAACC,WAAW,CAACQ,GAAG,CAAC,GAAGA,GAAG,GAAG,OAAO,EAAE,OAAO,CAAC;IACjE,MAAMS,OAA2B,GAAG,EAAE;IAEtC,MAAMC,WAAW,GAAGH,OAAO,CAACI,KAAK,CAAC,CAAC;IACnC,OAAOD,WAAW,CAACE,cAAc,CAACJ,OAAO,CAAC,EAAE;MAC1CC,OAAO,CAACI,IAAI,CAAC;QACXC,EAAE,EAAEJ,WAAW,CAACK,MAAM,CAAC,OAAO,CAAC;QAC/BC,IAAI,EAAEN,WAAW,CAACK,MAAM,CAAClB,IAAI,KAAK,IAAI,GAAG,SAAS,GAAG,OAAO;MAC9D,CAAC,CAAC;MACFa,WAAW,CAACO,GAAG,CAACb,IAAI,EAAE,SAAS,CAAC;IAClC;IAEA,OAAOK,OAAO;EAChB,CAAC;EAED,MAAMS,WAAW,GAAGZ,mBAAmB,CAAC,CAAC;EAEzC,MAAMa,mBAAmB,GAAG5B,MAAM,CAACO,QAAQ,EAAE,OAAO,CAAC,CAACiB,MAAM,CAC1DlB,IAAI,KAAK,IAAI,GAAG,SAAS,GAAG,OAC9B,CAAC;EAED,oBACEP,KAAA,CAAA8B,aAAA,CAAC3B,MAAM;IACLgB,OAAO,EAAES,WAAY;IACrBG,oBAAoB;IACpBvB,QAAQ,EAAEA,QAAS;IACnBwB,aAAa;IACbC,oBAAoB;IACpBrB,MAAM,EACJA,MAAM,GACJA,MAAM,gBAENZ,KAAA,CAAA8B,aAAA,CAAC1B,aAAa,EAAA8B,QAAA;MAAC3B,IAAI,EAAEM;IAAY,GAAKE,IAAI,GACvCc,mBACY,CAElB;IACDtB,IAAI,EAAC,MAAM;IACX4B,YAAY,EAAEC,KAAA;MAAA,IAAC;QAAEV;MAAK,CAAC,GAAAU,KAAA;MAAA,oBAAKpC,KAAA,CAAA8B,aAAA,cAAMJ,IAAU,CAAC;IAAA,CAAC;IAC9Cf,QAAQ,EAAEA,QAAS;IACnB0B,cAAc;EAAA,CACf,CAAC;AAEN,CAAC"}
1
+ {"version":3,"file":"SelectTime.js","names":["React","moment","isValidTime","Select","SelectTrigger","renderOption","option","createElement","id","name","SelectTime","_ref","mode","selected","min","max","onChange","target","triggerMode","step","rest","generateTimeOptions","minTime","maxTime","options","currentTime","clone","isSameOrBefore","push","format","add","timeOptions","displaySelectedTime","handleScrollToSelected","setTimeout","_document$getElementB","selectedItem","document","getElementById","parentElement","scrollIntoView","behavior","block","disabledInternalSort","disableSearch","keepSameOptionsOrder","_extends","forceCloseMenu","onSelectOpen"],"sources":["../../../../src/components/SelectTime/SelectTime.tsx"],"sourcesContent":["import React from \"react\";\n\nimport moment from \"moment\";\n\nimport { isValidTime } from \"../../utils/timeUtils\";\nimport { InputMode } from \"../Input/types\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { ElementWithRef, Select } from \"../Select/Select\";\nimport { SelectTrigger, SelectTriggerProps } from \"../SelectTrigger\";\n\nexport type Time24HourFormat = `${string}:${string}` | undefined;\n\nexport interface SelectTimeProps extends Omit<SelectTriggerProps, \"mode\"> {\n mode?: \"12\" | \"24\";\n selected?: Time24HourFormat;\n min?: Time24HourFormat;\n max?: Time24HourFormat;\n onChange?: () => void;\n target?: ElementWithRef<Element>;\n className?: string;\n triggerMode?: InputMode;\n locale?: string;\n trigger?: string;\n step?: 1 | 5 | 15 | 30 | 60;\n}\n\nconst renderOption = (option) => {\n return <div id={option.id}>{option.name}</div>;\n};\n\nexport const SelectTime: React.FC<SelectTimeProps> = ({\n mode = \"24\",\n selected,\n min = \"00:00\",\n max = \"23:45\",\n onChange,\n target,\n triggerMode,\n step = 15,\n ...rest\n}) => {\n const generateTimeOptions = (): IOptionItemProps[] => {\n const minTime = moment(isValidTime(min) ? min : \"00:00\", \"HH:mm\");\n const maxTime = moment(isValidTime(max) ? max : \"23:45\", \"HH:mm\");\n const options: IOptionItemProps[] = [];\n\n const currentTime = minTime.clone();\n while (currentTime.isSameOrBefore(maxTime)) {\n options.push({\n id: currentTime.format(\"HH:mm\"),\n name: currentTime.format(mode === \"12\" ? \"hh:mm A\" : \"HH:mm\"),\n });\n currentTime.add(step, \"minutes\");\n }\n\n return options;\n };\n\n const timeOptions = generateTimeOptions();\n\n const displaySelectedTime = moment(selected, \"HH:mm\").format(\n mode === \"12\" ? \"hh:mm A\" : \"HH:mm\"\n );\n\n const handleScrollToSelected = () => {\n if (selected) {\n setTimeout(() => {\n const selectedItem = document.getElementById(selected)?.parentElement;\n selectedItem?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }, 50);\n }\n };\n\n return (\n <Select\n options={timeOptions}\n disabledInternalSort\n selected={selected}\n disableSearch\n keepSameOptionsOrder\n target={\n target ? (\n target\n ) : (\n <SelectTrigger mode={triggerMode} {...rest}>\n {displaySelectedTime}\n </SelectTrigger>\n )\n }\n mode=\"tiny\"\n renderOption={renderOption}\n onChange={onChange}\n forceCloseMenu\n onSelectOpen={handleScrollToSelected}\n />\n );\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,QAAQ;AAE3B,SAASC,WAAW,QAAQ,uBAAuB;AAGnD,SAAyBC,MAAM,QAAQ,kBAAkB;AACzD,SAASC,aAAa,QAA4B,kBAAkB;AAkBpE,MAAMC,YAAY,GAAIC,MAAM,IAAK;EAC/B,oBAAON,KAAA,CAAAO,aAAA;IAAKC,EAAE,EAAEF,MAAM,CAACE;EAAG,GAAEF,MAAM,CAACG,IAAU,CAAC;AAChD,CAAC;AAED,OAAO,MAAMC,UAAqC,GAAGC,IAAA,IAU/C;EAAA,IAVgD;IACpDC,IAAI,GAAG,IAAI;IACXC,QAAQ;IACRC,GAAG,GAAG,OAAO;IACbC,GAAG,GAAG,OAAO;IACbC,QAAQ;IACRC,MAAM;IACNC,WAAW;IACXC,IAAI,GAAG,EAAE;IACT,GAAGC;EACL,CAAC,GAAAT,IAAA;EACC,MAAMU,mBAAmB,GAAGA,CAAA,KAA0B;IACpD,MAAMC,OAAO,GAAGrB,MAAM,CAACC,WAAW,CAACY,GAAG,CAAC,GAAGA,GAAG,GAAG,OAAO,EAAE,OAAO,CAAC;IACjE,MAAMS,OAAO,GAAGtB,MAAM,CAACC,WAAW,CAACa,GAAG,CAAC,GAAGA,GAAG,GAAG,OAAO,EAAE,OAAO,CAAC;IACjE,MAAMS,OAA2B,GAAG,EAAE;IAEtC,MAAMC,WAAW,GAAGH,OAAO,CAACI,KAAK,CAAC,CAAC;IACnC,OAAOD,WAAW,CAACE,cAAc,CAACJ,OAAO,CAAC,EAAE;MAC1CC,OAAO,CAACI,IAAI,CAAC;QACXpB,EAAE,EAAEiB,WAAW,CAACI,MAAM,CAAC,OAAO,CAAC;QAC/BpB,IAAI,EAAEgB,WAAW,CAACI,MAAM,CAACjB,IAAI,KAAK,IAAI,GAAG,SAAS,GAAG,OAAO;MAC9D,CAAC,CAAC;MACFa,WAAW,CAACK,GAAG,CAACX,IAAI,EAAE,SAAS,CAAC;IAClC;IAEA,OAAOK,OAAO;EAChB,CAAC;EAED,MAAMO,WAAW,GAAGV,mBAAmB,CAAC,CAAC;EAEzC,MAAMW,mBAAmB,GAAG/B,MAAM,CAACY,QAAQ,EAAE,OAAO,CAAC,CAACgB,MAAM,CAC1DjB,IAAI,KAAK,IAAI,GAAG,SAAS,GAAG,OAC9B,CAAC;EAED,MAAMqB,sBAAsB,GAAGA,CAAA,KAAM;IACnC,IAAIpB,QAAQ,EAAE;MACZqB,UAAU,CAAC,MAAM;QAAA,IAAAC,qBAAA;QACf,MAAMC,YAAY,IAAAD,qBAAA,GAAGE,QAAQ,CAACC,cAAc,CAACzB,QAAQ,CAAC,qBAAjCsB,qBAAA,CAAmCI,aAAa;QACrEH,YAAY,YAAZA,YAAY,CAAEI,cAAc,CAAC;UAAEC,QAAQ,EAAE,QAAQ;UAAEC,KAAK,EAAE;QAAS,CAAC,CAAC;MACvE,CAAC,EAAE,EAAE,CAAC;IACR;EACF,CAAC;EAED,oBACE1C,KAAA,CAAAO,aAAA,CAACJ,MAAM;IACLqB,OAAO,EAAEO,WAAY;IACrBY,oBAAoB;IACpB9B,QAAQ,EAAEA,QAAS;IACnB+B,aAAa;IACbC,oBAAoB;IACpB5B,MAAM,EACJA,MAAM,GACJA,MAAM,gBAENjB,KAAA,CAAAO,aAAA,CAACH,aAAa,EAAA0C,QAAA;MAAClC,IAAI,EAAEM;IAAY,GAAKE,IAAI,GACvCY,mBACY,CAElB;IACDpB,IAAI,EAAC,MAAM;IACXP,YAAY,EAAEA,YAAa;IAC3BW,QAAQ,EAAEA,QAAS;IACnB+B,cAAc;IACdC,YAAY,EAAEf;EAAuB,CACtC,CAAC;AAEN,CAAC"}