@activecollab/components 2.0.228 → 2.0.229

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.
@@ -12,7 +12,7 @@ var _moment = _interopRequireDefault(require("moment"));
12
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
  var _timeUtils = require("../../utils/timeUtils");
14
14
  var _ComboBox = require("../ComboBox/ComboBox");
15
- var _excluded = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid", "disableVirtualization"];
15
+ var _excluded = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid", "enableVirtualization", "addCustomTimeLabel"];
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -32,7 +32,8 @@ var StyledInputTimeWrapper = exports.StyledInputTimeWrapper = _styledComponents.
32
32
  })(["max-width:176px;flex:1;& .c-combo-box--list{min-width:176px;}"]);
33
33
  var renderOption = function renderOption(option) {
34
34
  return /*#__PURE__*/_react.default.createElement("div", {
35
- id: option.id
35
+ id: option.id,
36
+ "data-testid": "time-option-".concat(option.id)
36
37
  }, option.name);
37
38
  };
38
39
  var InputTime = exports.InputTime = function InputTime(_ref) {
@@ -52,12 +53,19 @@ var InputTime = exports.InputTime = function InputTime(_ref) {
52
53
  triggerMode = _ref.triggerMode,
53
54
  disabled = _ref.disabled,
54
55
  invalid = _ref.invalid,
55
- disableVirtualization = _ref.disableVirtualization,
56
+ _ref$enableVirtualiza = _ref.enableVirtualization,
57
+ enableVirtualization = _ref$enableVirtualiza === void 0 ? false : _ref$enableVirtualiza,
58
+ _ref$addCustomTimeLab = _ref.addCustomTimeLabel,
59
+ addCustomTimeLabel = _ref$addCustomTimeLab === void 0 ? "Add" : _ref$addCustomTimeLab,
56
60
  rest = _objectWithoutProperties(_ref, _excluded);
57
61
  var _useState = (0, _react.useState)(false),
58
62
  _useState2 = _slicedToArray(_useState, 2),
59
63
  isOpen = _useState2[0],
60
64
  setIsOpen = _useState2[1];
65
+ var _useState3 = (0, _react.useState)(undefined),
66
+ _useState4 = _slicedToArray(_useState3, 2),
67
+ search = _useState4[0],
68
+ setSearch = _useState4[1];
61
69
  var generateTimeOptions = function generateTimeOptions() {
62
70
  var minTime = (0, _moment.default)((0, _timeUtils.isValidTime)(min) ? min : "00:00", "HH:mm");
63
71
  var maxTime = (0, _moment.default)((0, _timeUtils.isValidTime)(max) ? max : "23:45", "HH:mm");
@@ -74,15 +82,22 @@ var InputTime = exports.InputTime = function InputTime(_ref) {
74
82
  return (0, _moment.default)(option.id, "HH:mm").isSameOrAfter(minTime) && (0, _moment.default)(option.id, "HH:mm").isSameOrBefore(maxTime);
75
83
  });
76
84
  };
77
- var timeOptions = generateTimeOptions();
78
- var isValidDefaultSelected = defaultSelected ? timeOptions.some(function (opt) {
79
- return opt.id === defaultSelected;
80
- }) : false;
81
- var _useState3 = (0, _react.useState)(isValidDefaultSelected ? defaultSelected : undefined),
82
- _useState4 = _slicedToArray(_useState3, 2),
83
- selected = _useState4[0],
84
- setSelected = _useState4[1];
85
+ var _useState5 = (0, _react.useState)(generateTimeOptions()),
86
+ _useState6 = _slicedToArray(_useState5, 2),
87
+ timeOptions = _useState6[0],
88
+ setTimeOptions = _useState6[1];
89
+ var isInOptions = (0, _react.useCallback)(function (option) {
90
+ return timeOptions.some(function (opt) {
91
+ return opt.id === option;
92
+ });
93
+ }, [timeOptions]);
94
+ var isValidDefaultSelected = defaultSelected ? isInOptions(defaultSelected) : false;
95
+ var _useState7 = (0, _react.useState)(isValidDefaultSelected ? defaultSelected : undefined),
96
+ _useState8 = _slicedToArray(_useState7, 2),
97
+ selected = _useState8[0],
98
+ setSelected = _useState8[1];
85
99
  var handleInputChange = (0, _react.useCallback)(function (text) {
100
+ setSearch(text);
86
101
  if (/\d{1,2}:\d{2}/.test(text.trim())) {
87
102
  return;
88
103
  }
@@ -99,6 +114,27 @@ var InputTime = exports.InputTime = function InputTime(_ref) {
99
114
  }
100
115
  }
101
116
  }, [onChange, selected, timeOptions]);
117
+ var handleEmptyAction = function handleEmptyAction(newTime) {
118
+ var time = String(newTime);
119
+ if ((0, _timeUtils.isValidTime)(time)) {
120
+ var newOption = {
121
+ id: time,
122
+ name: mode === "12" ? (0, _moment.default)(time, "HH:mm").format("hh:mm A") : time
123
+ };
124
+ var newOptions = [...timeOptions];
125
+ var index = newOptions.findIndex(function (option) {
126
+ return (0, _moment.default)(option.id, "HH:mm") > (0, _moment.default)(time, "HH:mm");
127
+ });
128
+ if (index === -1) {
129
+ newOptions.push(newOption);
130
+ } else {
131
+ newOptions.splice(index, 0, newOption);
132
+ }
133
+ setTimeOptions(newOptions);
134
+ onChange === null || onChange === void 0 || onChange(time);
135
+ setSelected(time);
136
+ }
137
+ };
102
138
  var handleChange = function handleChange(e) {
103
139
  setSelected(e);
104
140
  onChange === null || onChange === void 0 || onChange(e);
@@ -125,6 +161,9 @@ var InputTime = exports.InputTime = function InputTime(_ref) {
125
161
  })) setSelected(defaultSelected);
126
162
  // eslint-disable-next-line react-hooks/exhaustive-deps
127
163
  }, [defaultSelected, timeOptions]);
164
+ var isValid = function isValid(time) {
165
+ return !isInOptions(time) && (0, _timeUtils.isValidTime)(time);
166
+ };
128
167
  return /*#__PURE__*/_react.default.createElement(StyledInputTimeWrapper, {
129
168
  className: (0, _classnames.default)("c-input-time", className)
130
169
  }, /*#__PURE__*/_react.default.createElement(_ComboBox.ComboBox, _extends({}, rest, {
@@ -135,6 +174,8 @@ var InputTime = exports.InputTime = function InputTime(_ref) {
135
174
  keepSameOptionsOrder: true,
136
175
  onInputChange: handleInputChange,
137
176
  onChange: handleChange,
177
+ handleEmptyAction: handleEmptyAction,
178
+ emptyValue: isValid(search) ? "".concat(addCustomTimeLabel, " ").concat(search) : undefined,
138
179
  forceCloseMenu: true,
139
180
  placeholder: placeholder,
140
181
  renderOption: renderOption,
@@ -145,7 +186,7 @@ var InputTime = exports.InputTime = function InputTime(_ref) {
145
186
  triggerMode: triggerMode,
146
187
  disabled: disabled,
147
188
  invalid: invalid,
148
- disableVirtualization: disableVirtualization
189
+ disableVirtualization: !enableVirtualization
149
190
  })));
150
191
  };
151
192
  //# sourceMappingURL=InputTime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputTime.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_compromise","_compromiseDates","_moment","_styledComponents","_timeUtils","_ComboBox","_excluded","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","len","arr2","l","Symbol","iterator","f","next","done","push","value","return","isArray","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","nlp","plugin","plg","StyledInputTimeWrapper","exports","styled","div","withConfig","displayName","componentId","renderOption","option","createElement","id","InputTime","_ref","_ref$mode","mode","defaultSelected","selected","_ref$min","min","_ref$max","max","onChange","_ref$step","step","size","className","placeholder","triggerMode","disabled","invalid","disableVirtualization","rest","_useState","useState","_useState2","isOpen","setIsOpen","generateTimeOptions","minTime","moment","isValidTime","maxTime","allOptions","currentTime","isBefore","format","add","filter","isSameOrAfter","isSameOrBefore","timeOptions","isValidDefaultSelected","some","opt","_useState3","undefined","_useState4","setSelected","handleInputChange","useCallback","text","trim","doc","parsed","times","handleChange","handleOpen","handleClose","useEffect","_document$getElementB","selectedItem","document","getElementById","parentElement","scrollIntoView","behavior","block","classNames","ComboBox","options","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: Time24HourFormat) => 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 disableVirtualization?: 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 disableVirtualization,\n ...rest\n}) => {\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 allOptions: IOptionItemProps[] = [];\n\n const currentTime = moment(\"00:00\", \"HH:mm\");\n\n while (currentTime.isBefore(moment(\"24:00\", \"HH:mm\"))) {\n allOptions.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 allOptions.filter(\n (option) =>\n moment(option.id, \"HH:mm\").isSameOrAfter(minTime) &&\n moment(option.id, \"HH:mm\").isSameOrBefore(maxTime)\n );\n };\n\n const timeOptions = generateTimeOptions();\n\n const isValidDefaultSelected = defaultSelected\n ? timeOptions.some((opt) => opt.id === defaultSelected)\n : false;\n\n const [selected, setSelected] = useState<Time24HourFormat | undefined>(\n isValidDefaultSelected ? defaultSelected : undefined\n );\n\n const handleInputChange = useCallback(\n (text: string) => {\n if (/\\d{1,2}:\\d{2}/.test(text.trim())) {\n return;\n }\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\") as Time24HourFormat;\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 useEffect(() => {\n if (\n defaultSelected !== selected &&\n timeOptions.some((opt) => opt.id === defaultSelected)\n )\n setSelected(defaultSelected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultSelected, timeOptions]);\n\n return (\n <StyledInputTimeWrapper className={classNames(\"c-input-time\", className)}>\n <ComboBox\n {...rest}\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 disableVirtualization={disableVirtualization}\n />\n </StyledInputTimeWrapper>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputTime.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_compromise","_compromiseDates","_moment","_styledComponents","_timeUtils","_ComboBox","_excluded","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","len","arr2","l","Symbol","iterator","f","next","done","push","value","return","isArray","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","nlp","plugin","plg","StyledInputTimeWrapper","exports","styled","div","withConfig","displayName","componentId","renderOption","option","createElement","id","concat","InputTime","_ref","_ref$mode","mode","defaultSelected","selected","_ref$min","min","_ref$max","max","onChange","_ref$step","step","size","className","placeholder","triggerMode","disabled","invalid","_ref$enableVirtualiza","enableVirtualization","_ref$addCustomTimeLab","addCustomTimeLabel","rest","_useState","useState","_useState2","isOpen","setIsOpen","_useState3","undefined","_useState4","search","setSearch","generateTimeOptions","minTime","moment","isValidTime","maxTime","allOptions","currentTime","isBefore","format","add","filter","isSameOrAfter","isSameOrBefore","_useState5","_useState6","timeOptions","setTimeOptions","isInOptions","useCallback","some","opt","isValidDefaultSelected","_useState7","_useState8","setSelected","handleInputChange","text","trim","doc","parsed","times","handleEmptyAction","newTime","time","String","newOption","newOptions","index","findIndex","splice","handleChange","handleOpen","handleClose","useEffect","_document$getElementB","selectedItem","document","getElementById","parentElement","scrollIntoView","behavior","block","isValid","classNames","ComboBox","options","open","disabledInternalSort","keepSameOptionsOrder","onInputChange","emptyValue","forceCloseMenu","autoHeightMax","onClose","onOpen","disableVirtualization"],"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: Time24HourFormat) => 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 enableVirtualization?: boolean;\n addCustomTimeLabel?: string;\n}\n\nconst renderOption = (option) => {\n return (\n <div id={option.id} data-testid={`time-option-${option.id}`}>\n {option.name}\n </div>\n );\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 enableVirtualization = false,\n addCustomTimeLabel = \"Add\",\n ...rest\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [search, setSearch] = useState<string | undefined>(undefined);\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 allOptions: IOptionItemProps[] = [];\n\n const currentTime = moment(\"00:00\", \"HH:mm\");\n\n while (currentTime.isBefore(moment(\"24:00\", \"HH:mm\"))) {\n allOptions.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 allOptions.filter(\n (option) =>\n moment(option.id, \"HH:mm\").isSameOrAfter(minTime) &&\n moment(option.id, \"HH:mm\").isSameOrBefore(maxTime)\n );\n };\n\n const [timeOptions, setTimeOptions] = useState(generateTimeOptions());\n\n const isInOptions = useCallback(\n (option) => timeOptions.some((opt) => opt.id === option),\n [timeOptions]\n );\n\n const isValidDefaultSelected = defaultSelected\n ? isInOptions(defaultSelected)\n : false;\n\n const [selected, setSelected] = useState<Time24HourFormat | undefined>(\n isValidDefaultSelected ? defaultSelected : undefined\n );\n\n const handleInputChange = useCallback(\n (text: string) => {\n setSearch(text);\n if (/\\d{1,2}:\\d{2}/.test(text.trim())) {\n return;\n }\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\") as Time24HourFormat;\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 handleEmptyAction = (newTime: string | number) => {\n const time = String(newTime);\n if (isValidTime(time)) {\n const newOption = {\n id: time,\n name: mode === \"12\" ? moment(time, \"HH:mm\").format(\"hh:mm A\") : time,\n };\n\n const newOptions = [...timeOptions];\n const index = newOptions.findIndex(\n (option) => moment(option.id, \"HH:mm\") > moment(time, \"HH:mm\")\n );\n\n if (index === -1) {\n newOptions.push(newOption);\n } else {\n newOptions.splice(index, 0, newOption);\n }\n\n setTimeOptions(newOptions);\n onChange?.(time as Time24HourFormat);\n setSelected(time as Time24HourFormat);\n }\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 useEffect(() => {\n if (\n defaultSelected !== selected &&\n timeOptions.some((opt) => opt.id === defaultSelected)\n )\n setSelected(defaultSelected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultSelected, timeOptions]);\n\n const isValid = (time?: string) => !isInOptions(time) && isValidTime(time);\n\n return (\n <StyledInputTimeWrapper className={classNames(\"c-input-time\", className)}>\n <ComboBox\n {...rest}\n options={timeOptions}\n open={isOpen}\n disabledInternalSort\n selected={selected}\n keepSameOptionsOrder\n onInputChange={handleInputChange}\n onChange={handleChange}\n handleEmptyAction={handleEmptyAction}\n emptyValue={\n isValid(search) ? `${addCustomTimeLabel} ${search}` : undefined\n }\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 disableVirtualization={!enableVirtualization}\n />\n </StyledInputTimeWrapper>\n );\n};\n"],"mappings":"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"}
@@ -15,7 +15,8 @@ export interface InputTimeProps {
15
15
  triggerMode?: InputMode;
16
16
  disabled?: boolean;
17
17
  invalid?: boolean;
18
- disableVirtualization?: boolean;
18
+ enableVirtualization?: boolean;
19
+ addCustomTimeLabel?: string;
19
20
  }
20
21
  export declare const InputTime: React.FC<InputTimeProps>;
21
22
  //# sourceMappingURL=InputTime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputTime.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputTime.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAQhE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,eAAO,MAAM,sBAAsB,oEAOlC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,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,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAMD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2H9C,CAAC"}
1
+ {"version":3,"file":"InputTime.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputTime.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAQhE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,eAAO,MAAM,sBAAsB,oEAOlC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,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,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAUD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAkK9C,CAAC"}
@@ -14,7 +14,8 @@ export const StyledInputTimeWrapper = styled.div.withConfig({
14
14
  })(["max-width:176px;flex:1;& .c-combo-box--list{min-width:176px;}"]);
15
15
  const renderOption = option => {
16
16
  return /*#__PURE__*/React.createElement("div", {
17
- id: option.id
17
+ id: option.id,
18
+ "data-testid": "time-option-" + option.id
18
19
  }, option.name);
19
20
  };
20
21
  export const InputTime = _ref => {
@@ -31,10 +32,12 @@ export const InputTime = _ref => {
31
32
  triggerMode,
32
33
  disabled,
33
34
  invalid,
34
- disableVirtualization,
35
+ enableVirtualization = false,
36
+ addCustomTimeLabel = "Add",
35
37
  ...rest
36
38
  } = _ref;
37
39
  const [isOpen, setIsOpen] = useState(false);
40
+ const [search, setSearch] = useState(undefined);
38
41
  const generateTimeOptions = () => {
39
42
  const minTime = moment(isValidTime(min) ? min : "00:00", "HH:mm");
40
43
  const maxTime = moment(isValidTime(max) ? max : "23:45", "HH:mm");
@@ -49,10 +52,12 @@ export const InputTime = _ref => {
49
52
  }
50
53
  return allOptions.filter(option => moment(option.id, "HH:mm").isSameOrAfter(minTime) && moment(option.id, "HH:mm").isSameOrBefore(maxTime));
51
54
  };
52
- const timeOptions = generateTimeOptions();
53
- const isValidDefaultSelected = defaultSelected ? timeOptions.some(opt => opt.id === defaultSelected) : false;
55
+ const [timeOptions, setTimeOptions] = useState(generateTimeOptions());
56
+ const isInOptions = useCallback(option => timeOptions.some(opt => opt.id === option), [timeOptions]);
57
+ const isValidDefaultSelected = defaultSelected ? isInOptions(defaultSelected) : false;
54
58
  const [selected, setSelected] = useState(isValidDefaultSelected ? defaultSelected : undefined);
55
59
  const handleInputChange = useCallback(text => {
60
+ setSearch(text);
56
61
  if (/\d{1,2}:\d{2}/.test(text.trim())) {
57
62
  return;
58
63
  }
@@ -67,6 +72,25 @@ export const InputTime = _ref => {
67
72
  }
68
73
  }
69
74
  }, [onChange, selected, timeOptions]);
75
+ const handleEmptyAction = newTime => {
76
+ const time = String(newTime);
77
+ if (isValidTime(time)) {
78
+ const newOption = {
79
+ id: time,
80
+ name: mode === "12" ? moment(time, "HH:mm").format("hh:mm A") : time
81
+ };
82
+ const newOptions = [...timeOptions];
83
+ const index = newOptions.findIndex(option => moment(option.id, "HH:mm") > moment(time, "HH:mm"));
84
+ if (index === -1) {
85
+ newOptions.push(newOption);
86
+ } else {
87
+ newOptions.splice(index, 0, newOption);
88
+ }
89
+ setTimeOptions(newOptions);
90
+ onChange == null || onChange(time);
91
+ setSelected(time);
92
+ }
93
+ };
70
94
  const handleChange = e => {
71
95
  setSelected(e);
72
96
  onChange == null || onChange(e);
@@ -91,6 +115,7 @@ export const InputTime = _ref => {
91
115
  if (defaultSelected !== selected && timeOptions.some(opt => opt.id === defaultSelected)) setSelected(defaultSelected);
92
116
  // eslint-disable-next-line react-hooks/exhaustive-deps
93
117
  }, [defaultSelected, timeOptions]);
118
+ const isValid = time => !isInOptions(time) && isValidTime(time);
94
119
  return /*#__PURE__*/React.createElement(StyledInputTimeWrapper, {
95
120
  className: classNames("c-input-time", className)
96
121
  }, /*#__PURE__*/React.createElement(ComboBox, _extends({}, rest, {
@@ -101,6 +126,8 @@ export const InputTime = _ref => {
101
126
  keepSameOptionsOrder: true,
102
127
  onInputChange: handleInputChange,
103
128
  onChange: handleChange,
129
+ handleEmptyAction: handleEmptyAction,
130
+ emptyValue: isValid(search) ? addCustomTimeLabel + " " + search : undefined,
104
131
  forceCloseMenu: true,
105
132
  placeholder: placeholder,
106
133
  renderOption: renderOption,
@@ -111,7 +138,7 @@ export const InputTime = _ref => {
111
138
  triggerMode: triggerMode,
112
139
  disabled: disabled,
113
140
  invalid: invalid,
114
- disableVirtualization: disableVirtualization
141
+ disableVirtualization: !enableVirtualization
115
142
  })));
116
143
  };
117
144
  //# sourceMappingURL=InputTime.js.map
@@ -1 +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","disableVirtualization","rest","isOpen","setIsOpen","generateTimeOptions","minTime","maxTime","allOptions","currentTime","isBefore","push","format","add","filter","isSameOrAfter","isSameOrBefore","timeOptions","isValidDefaultSelected","some","opt","setSelected","undefined","handleInputChange","text","test","trim","doc","parsed","times","get","value","handleChange","e","handleOpen","handleClose","_document$getElementB","selectedItem","document","getElementById","parentElement","scrollIntoView","behavior","block","_extends","options","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: Time24HourFormat) => 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 disableVirtualization?: 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 disableVirtualization,\n ...rest\n}) => {\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 allOptions: IOptionItemProps[] = [];\n\n const currentTime = moment(\"00:00\", \"HH:mm\");\n\n while (currentTime.isBefore(moment(\"24:00\", \"HH:mm\"))) {\n allOptions.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 allOptions.filter(\n (option) =>\n moment(option.id, \"HH:mm\").isSameOrAfter(minTime) &&\n moment(option.id, \"HH:mm\").isSameOrBefore(maxTime)\n );\n };\n\n const timeOptions = generateTimeOptions();\n\n const isValidDefaultSelected = defaultSelected\n ? timeOptions.some((opt) => opt.id === defaultSelected)\n : false;\n\n const [selected, setSelected] = useState<Time24HourFormat | undefined>(\n isValidDefaultSelected ? defaultSelected : undefined\n );\n\n const handleInputChange = useCallback(\n (text: string) => {\n if (/\\d{1,2}:\\d{2}/.test(text.trim())) {\n return;\n }\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\") as Time24HourFormat;\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 useEffect(() => {\n if (\n defaultSelected !== selected &&\n timeOptions.some((opt) => opt.id === defaultSelected)\n )\n setSelected(defaultSelected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultSelected, timeOptions]);\n\n return (\n <StyledInputTimeWrapper className={classNames(\"c-input-time\", className)}>\n <ComboBox\n {...rest}\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 disableVirtualization={disableVirtualization}\n />\n </StyledInputTimeWrapper>\n );\n};\n"],"mappings":"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"}
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","enableVirtualization","addCustomTimeLabel","rest","isOpen","setIsOpen","search","setSearch","undefined","generateTimeOptions","minTime","maxTime","allOptions","currentTime","isBefore","push","format","add","filter","isSameOrAfter","isSameOrBefore","timeOptions","setTimeOptions","isInOptions","some","opt","isValidDefaultSelected","setSelected","handleInputChange","text","test","trim","doc","parsed","times","get","value","handleEmptyAction","newTime","time","String","newOption","newOptions","index","findIndex","splice","handleChange","e","handleOpen","handleClose","_document$getElementB","selectedItem","document","getElementById","parentElement","scrollIntoView","behavior","block","isValid","_extends","options","open","disabledInternalSort","keepSameOptionsOrder","onInputChange","emptyValue","forceCloseMenu","autoHeightMax","onClose","onOpen","disableVirtualization"],"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: Time24HourFormat) => 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 enableVirtualization?: boolean;\n addCustomTimeLabel?: string;\n}\n\nconst renderOption = (option) => {\n return (\n <div id={option.id} data-testid={`time-option-${option.id}`}>\n {option.name}\n </div>\n );\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 enableVirtualization = false,\n addCustomTimeLabel = \"Add\",\n ...rest\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [search, setSearch] = useState<string | undefined>(undefined);\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 allOptions: IOptionItemProps[] = [];\n\n const currentTime = moment(\"00:00\", \"HH:mm\");\n\n while (currentTime.isBefore(moment(\"24:00\", \"HH:mm\"))) {\n allOptions.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 allOptions.filter(\n (option) =>\n moment(option.id, \"HH:mm\").isSameOrAfter(minTime) &&\n moment(option.id, \"HH:mm\").isSameOrBefore(maxTime)\n );\n };\n\n const [timeOptions, setTimeOptions] = useState(generateTimeOptions());\n\n const isInOptions = useCallback(\n (option) => timeOptions.some((opt) => opt.id === option),\n [timeOptions]\n );\n\n const isValidDefaultSelected = defaultSelected\n ? isInOptions(defaultSelected)\n : false;\n\n const [selected, setSelected] = useState<Time24HourFormat | undefined>(\n isValidDefaultSelected ? defaultSelected : undefined\n );\n\n const handleInputChange = useCallback(\n (text: string) => {\n setSearch(text);\n if (/\\d{1,2}:\\d{2}/.test(text.trim())) {\n return;\n }\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\") as Time24HourFormat;\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 handleEmptyAction = (newTime: string | number) => {\n const time = String(newTime);\n if (isValidTime(time)) {\n const newOption = {\n id: time,\n name: mode === \"12\" ? moment(time, \"HH:mm\").format(\"hh:mm A\") : time,\n };\n\n const newOptions = [...timeOptions];\n const index = newOptions.findIndex(\n (option) => moment(option.id, \"HH:mm\") > moment(time, \"HH:mm\")\n );\n\n if (index === -1) {\n newOptions.push(newOption);\n } else {\n newOptions.splice(index, 0, newOption);\n }\n\n setTimeOptions(newOptions);\n onChange?.(time as Time24HourFormat);\n setSelected(time as Time24HourFormat);\n }\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 useEffect(() => {\n if (\n defaultSelected !== selected &&\n timeOptions.some((opt) => opt.id === defaultSelected)\n )\n setSelected(defaultSelected);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultSelected, timeOptions]);\n\n const isValid = (time?: string) => !isInOptions(time) && isValidTime(time);\n\n return (\n <StyledInputTimeWrapper className={classNames(\"c-input-time\", className)}>\n <ComboBox\n {...rest}\n options={timeOptions}\n open={isOpen}\n disabledInternalSort\n selected={selected}\n keepSameOptionsOrder\n onInputChange={handleInputChange}\n onChange={handleChange}\n handleEmptyAction={handleEmptyAction}\n emptyValue={\n isValid(search) ? `${addCustomTimeLabel} ${search}` : undefined\n }\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 disableVirtualization={!enableVirtualization}\n />\n </StyledInputTimeWrapper>\n );\n};\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19571,7 +19571,7 @@
19571
19571
  componentId: "sc-uvsz9l-4"
19572
19572
  })(["display:flex;justify-content:center;"]);
19573
19573
 
19574
- var _excluded$B = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid", "disableVirtualization"];
19574
+ var _excluded$B = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid", "enableVirtualization", "addCustomTimeLabel"];
19575
19575
  nlp__default["default"].plugin(plg__default["default"]);
19576
19576
  var StyledInputTimeWrapper = styled__default["default"].div.withConfig({
19577
19577
  displayName: "InputTime__StyledInputTimeWrapper",
@@ -19579,7 +19579,8 @@
19579
19579
  })(["max-width:176px;flex:1;& .c-combo-box--list{min-width:176px;}"]);
19580
19580
  var renderOption$1 = function renderOption(option) {
19581
19581
  return /*#__PURE__*/React__default["default"].createElement("div", {
19582
- id: option.id
19582
+ id: option.id,
19583
+ "data-testid": "time-option-".concat(option.id)
19583
19584
  }, option.name);
19584
19585
  };
19585
19586
  var InputTime = function InputTime(_ref) {
@@ -19599,12 +19600,19 @@
19599
19600
  triggerMode = _ref.triggerMode,
19600
19601
  disabled = _ref.disabled,
19601
19602
  invalid = _ref.invalid,
19602
- disableVirtualization = _ref.disableVirtualization,
19603
+ _ref$enableVirtualiza = _ref.enableVirtualization,
19604
+ enableVirtualization = _ref$enableVirtualiza === void 0 ? false : _ref$enableVirtualiza,
19605
+ _ref$addCustomTimeLab = _ref.addCustomTimeLabel,
19606
+ addCustomTimeLabel = _ref$addCustomTimeLab === void 0 ? "Add" : _ref$addCustomTimeLab,
19603
19607
  rest = _objectWithoutProperties(_ref, _excluded$B);
19604
19608
  var _useState = React.useState(false),
19605
19609
  _useState2 = _slicedToArray(_useState, 2),
19606
19610
  isOpen = _useState2[0],
19607
19611
  setIsOpen = _useState2[1];
19612
+ var _useState3 = React.useState(undefined),
19613
+ _useState4 = _slicedToArray(_useState3, 2),
19614
+ search = _useState4[0],
19615
+ setSearch = _useState4[1];
19608
19616
  var generateTimeOptions = function generateTimeOptions() {
19609
19617
  var minTime = moment__default$1["default"](isValidTime(min) ? min : "00:00", "HH:mm");
19610
19618
  var maxTime = moment__default$1["default"](isValidTime(max) ? max : "23:45", "HH:mm");
@@ -19621,15 +19629,22 @@
19621
19629
  return moment__default$1["default"](option.id, "HH:mm").isSameOrAfter(minTime) && moment__default$1["default"](option.id, "HH:mm").isSameOrBefore(maxTime);
19622
19630
  });
19623
19631
  };
19624
- var timeOptions = generateTimeOptions();
19625
- var isValidDefaultSelected = defaultSelected ? timeOptions.some(function (opt) {
19626
- return opt.id === defaultSelected;
19627
- }) : false;
19628
- var _useState3 = React.useState(isValidDefaultSelected ? defaultSelected : undefined),
19629
- _useState4 = _slicedToArray(_useState3, 2),
19630
- selected = _useState4[0],
19631
- setSelected = _useState4[1];
19632
+ var _useState5 = React.useState(generateTimeOptions()),
19633
+ _useState6 = _slicedToArray(_useState5, 2),
19634
+ timeOptions = _useState6[0],
19635
+ setTimeOptions = _useState6[1];
19636
+ var isInOptions = React.useCallback(function (option) {
19637
+ return timeOptions.some(function (opt) {
19638
+ return opt.id === option;
19639
+ });
19640
+ }, [timeOptions]);
19641
+ var isValidDefaultSelected = defaultSelected ? isInOptions(defaultSelected) : false;
19642
+ var _useState7 = React.useState(isValidDefaultSelected ? defaultSelected : undefined),
19643
+ _useState8 = _slicedToArray(_useState7, 2),
19644
+ selected = _useState8[0],
19645
+ setSelected = _useState8[1];
19632
19646
  var handleInputChange = React.useCallback(function (text) {
19647
+ setSearch(text);
19633
19648
  if (/\d{1,2}:\d{2}/.test(text.trim())) {
19634
19649
  return;
19635
19650
  }
@@ -19646,6 +19661,27 @@
19646
19661
  }
19647
19662
  }
19648
19663
  }, [onChange, selected, timeOptions]);
19664
+ var handleEmptyAction = function handleEmptyAction(newTime) {
19665
+ var time = String(newTime);
19666
+ if (isValidTime(time)) {
19667
+ var newOption = {
19668
+ id: time,
19669
+ name: mode === "12" ? moment__default$1["default"](time, "HH:mm").format("hh:mm A") : time
19670
+ };
19671
+ var newOptions = [...timeOptions];
19672
+ var index = newOptions.findIndex(function (option) {
19673
+ return moment__default$1["default"](option.id, "HH:mm") > moment__default$1["default"](time, "HH:mm");
19674
+ });
19675
+ if (index === -1) {
19676
+ newOptions.push(newOption);
19677
+ } else {
19678
+ newOptions.splice(index, 0, newOption);
19679
+ }
19680
+ setTimeOptions(newOptions);
19681
+ onChange === null || onChange === void 0 || onChange(time);
19682
+ setSelected(time);
19683
+ }
19684
+ };
19649
19685
  var handleChange = function handleChange(e) {
19650
19686
  setSelected(e);
19651
19687
  onChange === null || onChange === void 0 || onChange(e);
@@ -19672,6 +19708,9 @@
19672
19708
  })) setSelected(defaultSelected);
19673
19709
  // eslint-disable-next-line react-hooks/exhaustive-deps
19674
19710
  }, [defaultSelected, timeOptions]);
19711
+ var isValid = function isValid(time) {
19712
+ return !isInOptions(time) && isValidTime(time);
19713
+ };
19675
19714
  return /*#__PURE__*/React__default["default"].createElement(StyledInputTimeWrapper, {
19676
19715
  className: classNames__default["default"]("c-input-time", className)
19677
19716
  }, /*#__PURE__*/React__default["default"].createElement(ComboBox, _extends({}, rest, {
@@ -19682,6 +19721,8 @@
19682
19721
  keepSameOptionsOrder: true,
19683
19722
  onInputChange: handleInputChange,
19684
19723
  onChange: handleChange,
19724
+ handleEmptyAction: handleEmptyAction,
19725
+ emptyValue: isValid(search) ? "".concat(addCustomTimeLabel, " ").concat(search) : undefined,
19685
19726
  forceCloseMenu: true,
19686
19727
  placeholder: placeholder,
19687
19728
  renderOption: renderOption$1,
@@ -19692,7 +19733,7 @@
19692
19733
  triggerMode: triggerMode,
19693
19734
  disabled: disabled,
19694
19735
  invalid: invalid,
19695
- disableVirtualization: disableVirtualization
19736
+ disableVirtualization: !enableVirtualization
19696
19737
  })));
19697
19738
  };
19698
19739