@activecollab/components 1.0.376 → 1.0.377
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.
- package/dist/cjs/components/EditableHours/EditableHours.js +4 -4
- package/dist/cjs/components/EditableHours/EditableHours.js.map +1 -1
- package/dist/cjs/utils/validation.js +6 -2
- package/dist/cjs/utils/validation.js.map +1 -1
- package/dist/cjs/utils/validation.test.js +61 -0
- package/dist/cjs/utils/validation.test.js.map +1 -0
- package/dist/esm/components/EditableHours/EditableHours.js +4 -4
- package/dist/esm/components/EditableHours/EditableHours.js.map +1 -1
- package/dist/esm/utils/validation.d.ts +1 -1
- package/dist/esm/utils/validation.d.ts.map +1 -1
- package/dist/esm/utils/validation.js +6 -2
- package/dist/esm/utils/validation.js.map +1 -1
- package/dist/esm/utils/validation.test.d.ts +2 -0
- package/dist/esm/utils/validation.test.d.ts.map +1 -0
- package/dist/esm/utils/validation.test.js +59 -0
- package/dist/esm/utils/validation.test.js.map +1 -0
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -133,7 +133,7 @@ var EditableHours = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
|
133
133
|
var newMinutesString = newMinutes < 10 ? "0".concat(newMinutes) : newMinutes;
|
|
134
134
|
var newHoursString = withLeadingZero && newHours < 10 ? "0".concat(newHours) : newHours;
|
|
135
135
|
var newValue = "".concat(newHoursString, ":").concat(newMinutesString);
|
|
136
|
-
if (validation(newValue)) {
|
|
136
|
+
if (validation(newValue, withLeadingZero)) {
|
|
137
137
|
setCurrentValue(newValue);
|
|
138
138
|
requestAnimationFrame(function () {
|
|
139
139
|
var _inputRef$current;
|
|
@@ -201,18 +201,18 @@ var EditableHours = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
203
203
|
var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
204
|
-
if (!validation(newValue)) {
|
|
204
|
+
if (!validation(newValue, withLeadingZero)) {
|
|
205
205
|
e.preventDefault();
|
|
206
206
|
return;
|
|
207
207
|
}
|
|
208
208
|
} else {
|
|
209
209
|
var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
210
|
-
if (!validation(_newValue)) {
|
|
210
|
+
if (!validation(_newValue, withLeadingZero)) {
|
|
211
211
|
e.preventDefault();
|
|
212
212
|
return;
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
|
-
}, [handleIncrementDecrement, onCancel, validation]);
|
|
215
|
+
}, [handleIncrementDecrement, onCancel, validation, withLeadingZero]);
|
|
216
216
|
var handleChange = (0, _react.useCallback)(function (e) {
|
|
217
217
|
setCurrentValue(e.target.value);
|
|
218
218
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableHours.js","names":["EditableHours","React","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","validateTimeInput","incrementOnlySelected","minuteIncrement","rest","inputRef","useRef","handleRef","useForkRef","useState","undefined","decimalToHours","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","useEffect","_value","handleBlur","useCallback","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","classNames","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditableHours.js","names":["EditableHours","React","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","validateTimeInput","incrementOnlySelected","minuteIncrement","rest","inputRef","useRef","handleRef","useForkRef","useState","undefined","decimalToHours","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","useEffect","_value","handleBlur","useCallback","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","classNames","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation, withLeadingZero]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAAgD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYzC,IAAMA,aAAa,gBAAGC,cAAK,CAACC,UAAU,CAI3C,gBAaEC,GAAG,EACA;EAAA,sBAZDC,KAAK;IAALA,KAAK,2BAAG,CAAC;IACTC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACNC,UAAU,QAAVA,UAAU;IACVC,eAAe,QAAfA,eAAe;IAAA,4BACfC,eAAe;IAAfA,eAAe,qCAAG,IAAI;IAAA,uBACtBC,UAAU;IAAVA,UAAU,gCAAGC,wBAAiB;IAAA,6BAC9BC,qBAAqB;IAArBA,qBAAqB,sCAAG,KAAK;IAAA,4BAC7BC,eAAe;IAAfA,eAAe,qCAAG,CAAC;IAChBC,IAAI;EAIT,IAAMC,QAAQ,GAAG,IAAAC,aAAM,EAAmB,IAAI,CAAC;EAC/C,IAAMC,SAAS,GAAG,IAAAC,mBAAU,EAACf,GAAG,EAAEY,QAAQ,CAAC;EAC3C,gBAAwC,IAAAI,eAAQ,EAAC,YAAM;MACrD,IAAIf,KAAK,KAAKgB,SAAS,EAAE;QACvB,OAAO,IAAAC,yBAAc,EAACjB,KAAK,EAAEK,eAAe,CAAC;MAC/C;MACA,OAAO,EAAE;IACX,CAAC,CAAC;IAAA;IALKa,YAAY;IAAEC,eAAe;EAMpC,iBAAkC,IAAAJ,eAAQ,EAAC,YAAM;MAC/C,IAAIf,KAAK,KAAKgB,SAAS,EAAE;QACvB,OAAO,IAAAC,yBAAc,EAACjB,KAAK,EAAEK,eAAe,CAAC;MAC/C;MACA,OAAO,EAAE;IACX,CAAC,CAAC;IAAA;IALKe,SAAS;IAAEC,YAAY;EAM9B,IAAMC,SAAS,GAAG,IAAAV,aAAM,EAAC,KAAK,CAAC;EAE/B,IAAAW,gBAAS,EAAC,YAAM;IACd,IAAIC,MAAM;IACV,IAAIxB,KAAK,KAAKgB,SAAS,EAAE;MACvBQ,MAAM,GAAG,IAAAP,yBAAc,EAACjB,KAAK,EAAEK,eAAe,CAAC;IACjD;IACA,IAAIa,YAAY,KAAKM,MAAM,EAAE;MAC3BL,eAAe,CAACK,MAAM,CAAC;MACvBH,YAAY,CAACG,MAAM,CAAC;IACtB;IACA;EACF,CAAC,EAAE,CAACxB,KAAK,CAAC,CAAC;EAEX,IAAMyB,UAAU,GAAG,IAAAC,kBAAW,EAC5B,UAACC,CAAC,EAAK;IACL,IAAIL,SAAS,CAACM,OAAO,EAAE;MACrBT,eAAe,CAACC,SAAS,CAAC;MAC1BE,SAAS,CAACM,OAAO,GAAG,KAAK;IAC3B,CAAC,MAAM;MACL,IACED,CAAC,CAACE,MAAM,CAAC7B,KAAK,CAAC8B,IAAI,EAAE,CAACC,MAAM,GAAG,CAAC,IAChCX,SAAS,KAAKO,CAAC,CAACE,MAAM,CAAC7B,KAAK,EAC5B;QACA,IAAMwB,MAAM,GAAG,IAAAP,yBAAc,EAACU,CAAC,CAACE,MAAM,CAAC7B,KAAK,EAAEK,eAAe,CAAC;QAC9DgB,YAAY,CAACG,MAAM,CAAC;QACpBL,eAAe,CAACK,MAAM,CAAC;QACvB,OAAOtB,MAAM,KAAK,UAAU,IAAIA,MAAM,CAACyB,CAAC,CAAC;MAC3C,CAAC,MAAM;QACL,CAACvB,eAAe,GACZe,eAAe,CAACC,SAAS,CAAC,GAC1B,OAAOlB,MAAM,KAAK,UAAU,IAC5BkB,SAAS,KAAKO,CAAC,CAACE,MAAM,CAAC7B,KAAK,IAC5BE,MAAM,CAACyB,CAAC,CAAC;MACf;IACF;EACF,CAAC,EACD,CAACvB,eAAe,EAAEF,MAAM,EAAEkB,SAAS,EAAEf,eAAe,CAAC,CACtD;EAED,IAAM2B,wBAAwB,GAAG,IAAAN,kBAAW,EAC1C,UAACO,SAAkB,EAAK;IACtB,IAAItB,QAAQ,CAACiB,OAAO,EAAE;MACpB,IAAMM,cAAc,GAAGvB,QAAQ,CAACiB,OAAO,CAACM,cAAc;MACtD,IAAIA,cAAc,KAAK,IAAI,EAAE;QAC3B,IAAMC,SAAS,GAAGjB,YAAY,CAACkB,OAAO,CAAC,GAAG,CAAC;QAC3C,4BAAyBlB,YAAY,CAACmB,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,MAAM,CAAC;UAAA;UAArDC,KAAK;UAAEC,OAAO;QACrB,IAAIC,QAAQ,GAAGF,KAAK;QACpB,IAAIG,UAAU,GAAGF,OAAO;QAExB,IAAIP,cAAc,GAAGC,SAAS,EAAE;UAC9B,IAAIF,SAAS,EAAE;YACbS,QAAQ,IAAI,CAAC;UACf,CAAC,MAAM;YACLA,QAAQ,IAAI,CAAC;YACb,IAAIA,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG,CAAC;UAChC;QACF,CAAC,MAAM,IAAIR,cAAc,GAAGC,SAAS,EAAE;UACrC,IAAIF,SAAS,EAAE;YACbU,UAAU,IAAIlC,eAAe;YAC7B,IAAIkC,UAAU,GAAG,EAAE,EAAE;cACnBA,UAAU,GAAG,CAAC;cACd,IAAI,CAACnC,qBAAqB,EAAEkC,QAAQ,IAAI,CAAC;YAC3C;UACF,CAAC,MAAM;YACL,IAAIC,UAAU,IAAIlC,eAAe,IAAIkC,UAAU,KAAK,CAAC,EAAE;cACrDA,UAAU,IAAIlC,eAAe;cAC7B,IAAIkC,UAAU,GAAG,CAAC,IAAID,QAAQ,GAAG,CAAC,EAAE;gBAClCC,UAAU,GAAG,EAAE,GAAGlC,eAAe;gBACjC,IAAI,CAACD,qBAAqB,EAAEkC,QAAQ,IAAI,CAAC;cAC3C;cACA,IAAIA,QAAQ,GAAG,CAAC,EAAE;gBAChBA,QAAQ,GAAG,CAAC;cACd;YACF,CAAC,MAAM;cACLC,UAAU,GAAG,CAAC;YAChB;UACF;QACF;QAEA,IAAMC,gBAAgB,GACpBD,UAAU,GAAG,EAAE,cAAOA,UAAU,IAAKA,UAAU;QACjD,IAAME,cAAc,GAClBxC,eAAe,IAAIqC,QAAQ,GAAG,EAAE,cAAOA,QAAQ,IAAKA,QAAQ;QAC9D,IAAMI,QAAQ,aAAMD,cAAc,cAAID,gBAAgB,CAAE;QAExD,IAAItC,UAAU,CAACwC,QAAQ,EAAEzC,eAAe,CAAC,EAAE;UACzCc,eAAe,CAAC2B,QAAQ,CAAC;UAEzBC,qBAAqB,CAAC,YAAM;YAAA;YAC1B,IAAMC,YAAY,GAAGF,QAAQ,CAACV,OAAO,CAAC,GAAG,CAAC;YAC1C,IAAMa,eAAe,GAAGf,cAAc,GAAGc,YAAY;YACrD,IAAME,iBAAiB,GAAGD,eAAe,GACrC,CAAC,GACDD,YAAY,GAAG,CAAC;YACpB,IAAMG,YAAY,GAAGF,eAAe,GAChCD,YAAY,GACZF,QAAQ,CAACf,MAAM;YACnB,qBAAApB,QAAQ,CAACiB,OAAO,sDAAhB,kBAAkBwB,iBAAiB,CACjCF,iBAAiB,EACjBC,YAAY,CACb;UACH,CAAC,CAAC;QACJ;MACF;IACF;EACF,CAAC,EACD,CACEjC,YAAY,EACZV,qBAAqB,EACrBC,eAAe,EACfH,UAAU,EACVD,eAAe,CAChB,CACF;EAED,IAAMgD,aAAa,GAAG,IAAA3B,kBAAW,EAC/B,UAACC,CAAC,EAAK;IACL,IAAIA,CAAC,CAAC2B,GAAG,KAAK,OAAO,EAAE;MACrB3B,CAAC,CAACE,MAAM,CAAC0B,IAAI,EAAE;IACjB;IACA,IAAI5B,CAAC,CAAC2B,GAAG,KAAK,WAAW,EAAE;MACzB;IACF;IACA,IAAI3B,CAAC,CAAC2B,GAAG,KAAK,YAAY,EAAE;MAC1B;IACF;IACA,IAAI3B,CAAC,CAAC2B,GAAG,KAAK,QAAQ,EAAE;MACtBhC,SAAS,CAACM,OAAO,GAAG,IAAI;MACxBD,CAAC,CAACE,MAAM,CAAC0B,IAAI,EAAE;MACf,OAAOtD,QAAQ,KAAK,UAAU,IAAIA,QAAQ,EAAE;IAC9C;IACA,IAAI0B,CAAC,CAAC2B,GAAG,KAAK,WAAW,EAAE;MACzB;IACF;IACA,IAAME,KAAK,GAAG7B,CAAC,CAACE,MAAM;IACtB,IAAM4B,KAAK,GAAGD,KAAK,CAACtB,cAAc;IAClC,IAAMwB,GAAG,GAAGF,KAAK,CAACL,YAAY;IAC9B,IAAMjC,YAAY,GAAGsC,KAAK,CAACxD,KAAK;IAChC,IAAI2B,CAAC,CAAC2B,GAAG,KAAK,KAAK,EAAE;MACnB,IAAIG,KAAK,KAAKC,GAAG,EAAE;QACjB,IAAI/B,CAAC,CAACgC,QAAQ,EAAE;UACd,IAAMX,YAAY,GAAG9B,YAAY,CAACkB,OAAO,CAAC,GAAG,CAAC;UAC9C,IAAMwB,iBAAiB,GAAGH,KAAK,GAAGT,YAAY;UAC9C,IAAIY,iBAAiB,EAAE;YAAA;YACrBjC,CAAC,CAACkC,cAAc,EAAE;YAClB,sBAAAlD,QAAQ,CAACiB,OAAO,uDAAhB,mBAAkBwB,iBAAiB,CAAC,CAAC,EAAEJ,YAAY,CAAC;UACtD;QACF,CAAC,MAAM;UACL,IAAMA,aAAY,GAAG9B,YAAY,CAACkB,OAAO,CAAC,GAAG,CAAC;UAC9C,IAAMa,eAAe,GAAGQ,KAAK,GAAGT,aAAY;UAC5C,IAAIC,eAAe,EAAE;YAAA;YACnBtB,CAAC,CAACkC,cAAc,EAAE;YAClB,sBAAAlD,QAAQ,CAACiB,OAAO,uDAAhB,mBAAkBwB,iBAAiB,CACjCJ,aAAY,GAAG,CAAC,EAChB9B,YAAY,CAACa,MAAM,CACpB;UACH;QACF;MACF;MACA;IACF;IAEA,IAAI0B,KAAK,KAAKC,GAAG,EAAE;MACjB,IAAI/B,CAAC,CAAC2B,GAAG,KAAK,SAAS,EAAE;QACvBtB,wBAAwB,CAAC,IAAI,CAAC;QAC9B;MACF;MACA,IAAIL,CAAC,CAAC2B,GAAG,KAAK,WAAW,EAAE;QACzBtB,wBAAwB,CAAC,KAAK,CAAC;QAC/B;MACF;MACA,IAAMc,QAAQ,GACZ5B,YAAY,CAAC4C,SAAS,CAAC,CAAC,EAAEL,KAAK,CAAC,GAChC9B,CAAC,CAAC2B,GAAG,GACLpC,YAAY,CAAC4C,SAAS,CAACJ,GAAG,CAAC;MAC7B,IAAI,CAACpD,UAAU,CAACwC,QAAQ,EAAEzC,eAAe,CAAC,EAAE;QAC1CsB,CAAC,CAACkC,cAAc,EAAE;QAClB;MACF;IACF,CAAC,MAAM;MACL,IAAMf,SAAQ,GACZ5B,YAAY,CAAC4C,SAAS,CAAC,CAAC,EAAEL,KAAK,CAAC,GAChC9B,CAAC,CAAC2B,GAAG,GACLpC,YAAY,CAAC4C,SAAS,CAACJ,GAAG,CAAC;MAE7B,IAAI,CAACpD,UAAU,CAACwC,SAAQ,EAAEzC,eAAe,CAAC,EAAE;QAC1CsB,CAAC,CAACkC,cAAc,EAAE;QAClB;MACF;IACF;EACF,CAAC,EACD,CAAC7B,wBAAwB,EAAE/B,QAAQ,EAAEK,UAAU,EAAED,eAAe,CAAC,CAClE;EAED,IAAM0D,YAAY,GAAG,IAAArC,kBAAW,EAAC,UAACC,CAAC,EAAK;IACtCR,eAAe,CAACQ,CAAC,CAACE,MAAM,CAAC7B,KAAK,CAAC;EACjC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMgE,WAAW,GAAG,SAAdA,WAAW,GAAS;IAAA;IACxB,IAAM9B,cAAc,yBAAGvB,QAAQ,CAACiB,OAAO,uDAAhB,mBAAkBM,cAAc;IACvD,IACEvB,QAAQ,CAACiB,OAAO,IAChBV,YAAY,IACZA,YAAY,CAACa,MAAM,GAAG,CAAC,IACvB,OAAOG,cAAc,KAAK,QAAQ,EAClC;MACA,IAAMC,SAAS,GAAGjB,YAAY,CAACkB,OAAO,CAAC,GAAG,CAAC;MAC3C,IAAIF,cAAc,GAAGC,SAAS,EAAE;QAAA;QAC9B,sBAAAxB,QAAQ,CAACiB,OAAO,uDAAhB,mBAAkBwB,iBAAiB,CAAC,CAAC,EAAEjB,SAAS,CAAC;MACnD,CAAC,MAAM,IAAID,cAAc,IAAIC,SAAS,EAAE;QAAA;QACtC,sBAAAxB,QAAQ,CAACiB,OAAO,uDAAhB,mBAAkBwB,iBAAiB,CACjCjB,SAAS,GAAG,CAAC,EACbjB,YAAY,CAACa,MAAM,CACpB;MACH;IACF;EACF,CAAC;EAED,IAAMkC,iBAAiB,GAAG,SAApBA,iBAAiB,GAAS;IAC9B,IAAItD,QAAQ,CAACiB,OAAO,EAAE;MAAA;MACpB,sBAAAjB,QAAQ,CAACiB,OAAO,uDAAhB,mBAAkBwB,iBAAiB,CAAC,CAAC,EAAElC,YAAY,CAACa,MAAM,CAAC;IAC7D;EACF,CAAC;EAED,oBACE,6BAAC,gCAAe;IACd,GAAG,EAAElB,SAAU;IACf,UAAU,kCACLV,UAAU;MACbH,KAAK,EAAEkB,YAAY;MACnBgD,MAAM,EAAEzC,UAAU;MAClB0C,SAAS,EAAEd,aAAa;MACxBe,QAAQ,EAAEL,YAAY;MACtBM,IAAI,EAAE,MAAM;MACZC,OAAO,EAAEN,WAAW;MACpBO,aAAa,EAAEN,iBAAiB;MAChCO,SAAS,EAAE,IAAAC,mBAAU,EAAC,SAAS,EAAEtE,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEqE,SAAS;IAAC;EACvD,GACE9D,IAAI,EACR;AAEN,CAAC,CACF;AAAC;AAEFd,aAAa,CAAC8E,WAAW,GAAG,eAAe"}
|
|
@@ -8,8 +8,12 @@ var validateStopwatchTime = function validateStopwatchTime(value) {
|
|
|
8
8
|
return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
|
|
9
9
|
};
|
|
10
10
|
exports.validateStopwatchTime = validateStopwatchTime;
|
|
11
|
-
var validateTimeInput = function validateTimeInput(value) {
|
|
12
|
-
|
|
11
|
+
var validateTimeInput = function validateTimeInput(value, withLeadingZero) {
|
|
12
|
+
if (withLeadingZero) {
|
|
13
|
+
return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
14
|
+
} else {
|
|
15
|
+
return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
16
|
+
}
|
|
13
17
|
};
|
|
14
18
|
exports.validateTimeInput = validateTimeInput;
|
|
15
19
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +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]+)?(((
|
|
1
|
+
{"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput","withLeadingZero"],"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, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\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,EAAEG,eAAwB,EAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,4FAA4F,CAACF,IAAI,CACtGD,KAAK,CACN;EACH,CAAC,MAAM;IACL,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;EACH;AACF,CAAC;AAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _validation = require("./validation");
|
|
4
|
+
describe("validateTimeInput", function () {
|
|
5
|
+
it("should work", function () {
|
|
6
|
+
expect((0, _validation.validateTimeInput)("0000:45", true)).toBeFalsy();
|
|
7
|
+
expect((0, _validation.validateTimeInput)("0000.45", true)).toBeFalsy();
|
|
8
|
+
expect((0, _validation.validateTimeInput)("0000,45", true)).toBeFalsy();
|
|
9
|
+
expect((0, _validation.validateTimeInput)("10000,45", true)).toBeTruthy();
|
|
10
|
+
expect((0, _validation.validateTimeInput)("1000", true)).toBeTruthy();
|
|
11
|
+
expect((0, _validation.validateTimeInput)("00:45", true)).toBeTruthy();
|
|
12
|
+
expect((0, _validation.validateTimeInput)("00,45", true)).toBeTruthy();
|
|
13
|
+
expect((0, _validation.validateTimeInput)("00.45", true)).toBeTruthy();
|
|
14
|
+
expect((0, _validation.validateTimeInput)("00.", true)).toBeTruthy();
|
|
15
|
+
expect((0, _validation.validateTimeInput)("0", true)).toBeTruthy();
|
|
16
|
+
expect((0, _validation.validateTimeInput)(".5", true)).toBeTruthy();
|
|
17
|
+
expect((0, _validation.validateTimeInput)(",55", true)).toBeTruthy();
|
|
18
|
+
expect((0, _validation.validateTimeInput)(",55", false)).toBeTruthy();
|
|
19
|
+
expect((0, _validation.validateTimeInput)(".55", false)).toBeTruthy();
|
|
20
|
+
expect((0, _validation.validateTimeInput)("00:45", false)).toBeFalsy();
|
|
21
|
+
expect((0, _validation.validateTimeInput)("00.45", false)).toBeFalsy();
|
|
22
|
+
expect((0, _validation.validateTimeInput)("00,45", false)).toBeFalsy();
|
|
23
|
+
expect((0, _validation.validateTimeInput)("0:45", false)).toBeTruthy();
|
|
24
|
+
expect((0, _validation.validateTimeInput)("0,45", false)).toBeTruthy();
|
|
25
|
+
expect((0, _validation.validateTimeInput)("0.45", false)).toBeTruthy();
|
|
26
|
+
expect((0, _validation.validateTimeInput)("00.", false)).toBeFalsy();
|
|
27
|
+
expect((0, _validation.validateTimeInput)("00", false)).toBeFalsy();
|
|
28
|
+
expect((0, _validation.validateTimeInput)("0", false)).toBeTruthy();
|
|
29
|
+
expect((0, _validation.validateTimeInput)("1:45", false)).toBeTruthy();
|
|
30
|
+
expect((0, _validation.validateTimeInput)("1:6", false)).toBeFalsy();
|
|
31
|
+
expect((0, _validation.validateTimeInput)("11:6", true)).toBeFalsy();
|
|
32
|
+
expect((0, _validation.validateTimeInput)("11:555", false)).toBeFalsy();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("validateStopwatchTime", function () {
|
|
36
|
+
it("should work", function () {
|
|
37
|
+
expect((0, _validation.validateStopwatchTime)("0000:45")).toBeFalsy();
|
|
38
|
+
expect((0, _validation.validateStopwatchTime)("0000.45")).toBeFalsy();
|
|
39
|
+
expect((0, _validation.validateStopwatchTime)("0000,45")).toBeFalsy();
|
|
40
|
+
expect((0, _validation.validateStopwatchTime)("10000,45")).toBeFalsy();
|
|
41
|
+
expect((0, _validation.validateStopwatchTime)("1000")).toBeFalsy();
|
|
42
|
+
expect((0, _validation.validateStopwatchTime)("00:45")).toBeTruthy();
|
|
43
|
+
expect((0, _validation.validateStopwatchTime)("00,45")).toBeTruthy();
|
|
44
|
+
expect((0, _validation.validateStopwatchTime)("00.45")).toBeTruthy();
|
|
45
|
+
expect((0, _validation.validateStopwatchTime)("00.")).toBeTruthy();
|
|
46
|
+
expect((0, _validation.validateStopwatchTime)("0")).toBeTruthy();
|
|
47
|
+
expect((0, _validation.validateStopwatchTime)(".5")).toBeTruthy();
|
|
48
|
+
expect((0, _validation.validateStopwatchTime)(",55")).toBeTruthy();
|
|
49
|
+
expect((0, _validation.validateStopwatchTime)(",55")).toBeTruthy();
|
|
50
|
+
expect((0, _validation.validateStopwatchTime)(".55")).toBeTruthy();
|
|
51
|
+
expect((0, _validation.validateStopwatchTime)("0:45")).toBeTruthy();
|
|
52
|
+
expect((0, _validation.validateStopwatchTime)("0,45")).toBeTruthy();
|
|
53
|
+
expect((0, _validation.validateStopwatchTime)("0.45")).toBeTruthy();
|
|
54
|
+
expect((0, _validation.validateStopwatchTime)("0")).toBeTruthy();
|
|
55
|
+
expect((0, _validation.validateStopwatchTime)("1:45")).toBeTruthy();
|
|
56
|
+
expect((0, _validation.validateStopwatchTime)("1:6")).toBeFalsy();
|
|
57
|
+
expect((0, _validation.validateStopwatchTime)("11:6")).toBeFalsy();
|
|
58
|
+
expect((0, _validation.validateStopwatchTime)("11:555")).toBeFalsy();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.js","names":["describe","it","expect","validateTimeInput","toBeFalsy","toBeTruthy","validateStopwatchTime"],"sources":["../../../src/utils/validation.test.ts"],"sourcesContent":["import { validateStopwatchTime, validateTimeInput } from \"./validation\";\n\ndescribe(\"validateTimeInput\", () => {\n it(\"should work\", () => {\n expect(validateTimeInput(\"0000:45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000.45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000,45\", true)).toBeFalsy();\n expect(validateTimeInput(\"10000,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"1000\", true)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.\", true)).toBeTruthy();\n expect(validateTimeInput(\"0\", true)).toBeTruthy();\n expect(validateTimeInput(\".5\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", false)).toBeTruthy();\n expect(validateTimeInput(\".55\", false)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00.45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00,45\", false)).toBeFalsy();\n expect(validateTimeInput(\"0:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0,45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0.45\", false)).toBeTruthy();\n expect(validateTimeInput(\"00.\", false)).toBeFalsy();\n expect(validateTimeInput(\"00\", false)).toBeFalsy();\n expect(validateTimeInput(\"0\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:6\", false)).toBeFalsy();\n expect(validateTimeInput(\"11:6\", true)).toBeFalsy();\n expect(validateTimeInput(\"11:555\", false)).toBeFalsy();\n });\n});\n\ndescribe(\"validateStopwatchTime\", () => {\n it(\"should work\", () => {\n expect(validateStopwatchTime(\"0000:45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000.45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"10000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"1000\")).toBeFalsy();\n expect(validateStopwatchTime(\"00:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\".5\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\".55\")).toBeTruthy();\n expect(validateStopwatchTime(\"0:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:555\")).toBeFalsy();\n });\n});\n"],"mappings":"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"}
|
|
@@ -110,7 +110,7 @@ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
110
110
|
var newMinutesString = newMinutes < 10 ? "0" + newMinutes : newMinutes;
|
|
111
111
|
var newHoursString = withLeadingZero && newHours < 10 ? "0" + newHours : newHours;
|
|
112
112
|
var newValue = newHoursString + ":" + newMinutesString;
|
|
113
|
-
if (validation(newValue)) {
|
|
113
|
+
if (validation(newValue, withLeadingZero)) {
|
|
114
114
|
setCurrentValue(newValue);
|
|
115
115
|
requestAnimationFrame(function () {
|
|
116
116
|
var _inputRef$current;
|
|
@@ -178,18 +178,18 @@ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
180
|
var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
181
|
-
if (!validation(newValue)) {
|
|
181
|
+
if (!validation(newValue, withLeadingZero)) {
|
|
182
182
|
e.preventDefault();
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
185
|
} else {
|
|
186
186
|
var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
187
|
-
if (!validation(_newValue)) {
|
|
187
|
+
if (!validation(_newValue, withLeadingZero)) {
|
|
188
188
|
e.preventDefault();
|
|
189
189
|
return;
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
|
-
}, [handleIncrementDecrement, onCancel, validation]);
|
|
192
|
+
}, [handleIncrementDecrement, onCancel, validation, withLeadingZero]);
|
|
193
193
|
var handleChange = useCallback(function (e) {
|
|
194
194
|
setCurrentValue(e.target.value);
|
|
195
195
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableHours.js","names":["EditableContent","React","useCallback","useEffect","useRef","useState","decimalToHours","useForkRef","classNames","validateTimeInput","EditableHours","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","rest","inputRef","handleRef","undefined","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","_value","handleBlur","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditableHours.js","names":["EditableContent","React","useCallback","useEffect","useRef","useState","decimalToHours","useForkRef","classNames","validateTimeInput","EditableHours","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","rest","inputRef","handleRef","undefined","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","_value","handleBlur","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation, withLeadingZero]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":";;;AAAA,SAASA,eAAe,QAAkC,oBAAoB;AAC9E,OAAOC,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACvE,SAASC,cAAc,QAAQ,uBAAuB;AACtD,OAAOC,UAAU,MAAM,wBAAwB;AAC/C,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,iBAAiB,QAAQ,aAAa;AAY/C,OAAO,IAAMC,aAAa,gBAAGT,KAAK,CAACU,UAAU,CAI3C,gBAaEC,GAAG,EACA;EAAA,sBAZDC,KAAK;IAALA,KAAK,2BAAG,CAAC;IACTC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACNC,UAAU,QAAVA,UAAU;IACVC,eAAe,QAAfA,eAAe;IAAA,4BACfC,eAAe;IAAfA,eAAe,qCAAG,IAAI;IAAA,uBACtBC,UAAU;IAAVA,UAAU,gCAAGV,iBAAiB;IAAA,6BAC9BW,qBAAqB;IAArBA,qBAAqB,sCAAG,KAAK;IAAA,4BAC7BC,eAAe;IAAfA,eAAe,qCAAG,CAAC;IAChBC,IAAI;EAIT,IAAMC,QAAQ,GAAGnB,MAAM,CAAmB,IAAI,CAAC;EAC/C,IAAMoB,SAAS,GAAGjB,UAAU,CAACK,GAAG,EAAEW,QAAQ,CAAC;EAC3C,gBAAwClB,QAAQ,CAAC,YAAM;MACrD,IAAIQ,KAAK,KAAKY,SAAS,EAAE;QACvB,OAAOnB,cAAc,CAACO,KAAK,EAAEK,eAAe,CAAC;MAC/C;MACA,OAAO,EAAE;IACX,CAAC,CAAC;IALKQ,YAAY;IAAEC,eAAe;EAMpC,iBAAkCtB,QAAQ,CAAC,YAAM;MAC/C,IAAIQ,KAAK,KAAKY,SAAS,EAAE;QACvB,OAAOnB,cAAc,CAACO,KAAK,EAAEK,eAAe,CAAC;MAC/C;MACA,OAAO,EAAE;IACX,CAAC,CAAC;IALKU,SAAS;IAAEC,YAAY;EAM9B,IAAMC,SAAS,GAAG1B,MAAM,CAAC,KAAK,CAAC;EAE/BD,SAAS,CAAC,YAAM;IACd,IAAI4B,MAAM;IACV,IAAIlB,KAAK,KAAKY,SAAS,EAAE;MACvBM,MAAM,GAAGzB,cAAc,CAACO,KAAK,EAAEK,eAAe,CAAC;IACjD;IACA,IAAIQ,YAAY,KAAKK,MAAM,EAAE;MAC3BJ,eAAe,CAACI,MAAM,CAAC;MACvBF,YAAY,CAACE,MAAM,CAAC;IACtB;IACA;EACF,CAAC,EAAE,CAAClB,KAAK,CAAC,CAAC;EAEX,IAAMmB,UAAU,GAAG9B,WAAW,CAC5B,UAAC+B,CAAC,EAAK;IACL,IAAIH,SAAS,CAACI,OAAO,EAAE;MACrBP,eAAe,CAACC,SAAS,CAAC;MAC1BE,SAAS,CAACI,OAAO,GAAG,KAAK;IAC3B,CAAC,MAAM;MACL,IACED,CAAC,CAACE,MAAM,CAACtB,KAAK,CAACuB,IAAI,EAAE,CAACC,MAAM,GAAG,CAAC,IAChCT,SAAS,KAAKK,CAAC,CAACE,MAAM,CAACtB,KAAK,EAC5B;QACA,IAAMkB,MAAM,GAAGzB,cAAc,CAAC2B,CAAC,CAACE,MAAM,CAACtB,KAAK,EAAEK,eAAe,CAAC;QAC9DW,YAAY,CAACE,MAAM,CAAC;QACpBJ,eAAe,CAACI,MAAM,CAAC;QACvB,OAAOhB,MAAM,KAAK,UAAU,IAAIA,MAAM,CAACkB,CAAC,CAAC;MAC3C,CAAC,MAAM;QACL,CAAChB,eAAe,GACZU,eAAe,CAACC,SAAS,CAAC,GAC1B,OAAOb,MAAM,KAAK,UAAU,IAC5Ba,SAAS,KAAKK,CAAC,CAACE,MAAM,CAACtB,KAAK,IAC5BE,MAAM,CAACkB,CAAC,CAAC;MACf;IACF;EACF,CAAC,EACD,CAAChB,eAAe,EAAEF,MAAM,EAAEa,SAAS,EAAEV,eAAe,CAAC,CACtD;EAED,IAAMoB,wBAAwB,GAAGpC,WAAW,CAC1C,UAACqC,SAAkB,EAAK;IACtB,IAAIhB,QAAQ,CAACW,OAAO,EAAE;MACpB,IAAMM,cAAc,GAAGjB,QAAQ,CAACW,OAAO,CAACM,cAAc;MACtD,IAAIA,cAAc,KAAK,IAAI,EAAE;QAC3B,IAAMC,SAAS,GAAGf,YAAY,CAACgB,OAAO,CAAC,GAAG,CAAC;QAC3C,4BAAyBhB,YAAY,CAACiB,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,MAAM,CAAC;UAArDC,KAAK;UAAEC,OAAO;QACrB,IAAIC,QAAQ,GAAGF,KAAK;QACpB,IAAIG,UAAU,GAAGF,OAAO;QAExB,IAAIP,cAAc,GAAGC,SAAS,EAAE;UAC9B,IAAIF,SAAS,EAAE;YACbS,QAAQ,IAAI,CAAC;UACf,CAAC,MAAM;YACLA,QAAQ,IAAI,CAAC;YACb,IAAIA,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG,CAAC;UAChC;QACF,CAAC,MAAM,IAAIR,cAAc,GAAGC,SAAS,EAAE;UACrC,IAAIF,SAAS,EAAE;YACbU,UAAU,IAAI5B,eAAe;YAC7B,IAAI4B,UAAU,GAAG,EAAE,EAAE;cACnBA,UAAU,GAAG,CAAC;cACd,IAAI,CAAC7B,qBAAqB,EAAE4B,QAAQ,IAAI,CAAC;YAC3C;UACF,CAAC,MAAM;YACL,IAAIC,UAAU,IAAI5B,eAAe,IAAI4B,UAAU,KAAK,CAAC,EAAE;cACrDA,UAAU,IAAI5B,eAAe;cAC7B,IAAI4B,UAAU,GAAG,CAAC,IAAID,QAAQ,GAAG,CAAC,EAAE;gBAClCC,UAAU,GAAG,EAAE,GAAG5B,eAAe;gBACjC,IAAI,CAACD,qBAAqB,EAAE4B,QAAQ,IAAI,CAAC;cAC3C;cACA,IAAIA,QAAQ,GAAG,CAAC,EAAE;gBAChBA,QAAQ,GAAG,CAAC;cACd;YACF,CAAC,MAAM;cACLC,UAAU,GAAG,CAAC;YAChB;UACF;QACF;QAEA,IAAMC,gBAAgB,GACpBD,UAAU,GAAG,EAAE,SAAOA,UAAU,GAAKA,UAAU;QACjD,IAAME,cAAc,GAClBjC,eAAe,IAAI8B,QAAQ,GAAG,EAAE,SAAOA,QAAQ,GAAKA,QAAQ;QAC9D,IAAMI,QAAQ,GAAMD,cAAc,SAAID,gBAAkB;QAExD,IAAI/B,UAAU,CAACiC,QAAQ,EAAElC,eAAe,CAAC,EAAE;UACzCS,eAAe,CAACyB,QAAQ,CAAC;UAEzBC,qBAAqB,CAAC,YAAM;YAAA;YAC1B,IAAMC,YAAY,GAAGF,QAAQ,CAACV,OAAO,CAAC,GAAG,CAAC;YAC1C,IAAMa,eAAe,GAAGf,cAAc,GAAGc,YAAY;YACrD,IAAME,iBAAiB,GAAGD,eAAe,GACrC,CAAC,GACDD,YAAY,GAAG,CAAC;YACpB,IAAMG,YAAY,GAAGF,eAAe,GAChCD,YAAY,GACZF,QAAQ,CAACf,MAAM;YACnB,qBAAAd,QAAQ,CAACW,OAAO,qBAAhB,kBAAkBwB,iBAAiB,CACjCF,iBAAiB,EACjBC,YAAY,CACb;UACH,CAAC,CAAC;QACJ;MACF;IACF;EACF,CAAC,EACD,CACE/B,YAAY,EACZN,qBAAqB,EACrBC,eAAe,EACfF,UAAU,EACVD,eAAe,CAChB,CACF;EAED,IAAMyC,aAAa,GAAGzD,WAAW,CAC/B,UAAC+B,CAAC,EAAK;IACL,IAAIA,CAAC,CAAC2B,GAAG,KAAK,OAAO,EAAE;MACrB3B,CAAC,CAACE,MAAM,CAAC0B,IAAI,EAAE;IACjB;IACA,IAAI5B,CAAC,CAAC2B,GAAG,KAAK,WAAW,EAAE;MACzB;IACF;IACA,IAAI3B,CAAC,CAAC2B,GAAG,KAAK,YAAY,EAAE;MAC1B;IACF;IACA,IAAI3B,CAAC,CAAC2B,GAAG,KAAK,QAAQ,EAAE;MACtB9B,SAAS,CAACI,OAAO,GAAG,IAAI;MACxBD,CAAC,CAACE,MAAM,CAAC0B,IAAI,EAAE;MACf,OAAO/C,QAAQ,KAAK,UAAU,IAAIA,QAAQ,EAAE;IAC9C;IACA,IAAImB,CAAC,CAAC2B,GAAG,KAAK,WAAW,EAAE;MACzB;IACF;IACA,IAAME,KAAK,GAAG7B,CAAC,CAACE,MAAM;IACtB,IAAM4B,KAAK,GAAGD,KAAK,CAACtB,cAAc;IAClC,IAAMwB,GAAG,GAAGF,KAAK,CAACL,YAAY;IAC9B,IAAM/B,YAAY,GAAGoC,KAAK,CAACjD,KAAK;IAChC,IAAIoB,CAAC,CAAC2B,GAAG,KAAK,KAAK,EAAE;MACnB,IAAIG,KAAK,KAAKC,GAAG,EAAE;QACjB,IAAI/B,CAAC,CAACgC,QAAQ,EAAE;UACd,IAAMX,YAAY,GAAG5B,YAAY,CAACgB,OAAO,CAAC,GAAG,CAAC;UAC9C,IAAMwB,iBAAiB,GAAGH,KAAK,GAAGT,YAAY;UAC9C,IAAIY,iBAAiB,EAAE;YAAA;YACrBjC,CAAC,CAACkC,cAAc,EAAE;YAClB,sBAAA5C,QAAQ,CAACW,OAAO,qBAAhB,mBAAkBwB,iBAAiB,CAAC,CAAC,EAAEJ,YAAY,CAAC;UACtD;QACF,CAAC,MAAM;UACL,IAAMA,aAAY,GAAG5B,YAAY,CAACgB,OAAO,CAAC,GAAG,CAAC;UAC9C,IAAMa,eAAe,GAAGQ,KAAK,GAAGT,aAAY;UAC5C,IAAIC,eAAe,EAAE;YAAA;YACnBtB,CAAC,CAACkC,cAAc,EAAE;YAClB,sBAAA5C,QAAQ,CAACW,OAAO,qBAAhB,mBAAkBwB,iBAAiB,CACjCJ,aAAY,GAAG,CAAC,EAChB5B,YAAY,CAACW,MAAM,CACpB;UACH;QACF;MACF;MACA;IACF;IAEA,IAAI0B,KAAK,KAAKC,GAAG,EAAE;MACjB,IAAI/B,CAAC,CAAC2B,GAAG,KAAK,SAAS,EAAE;QACvBtB,wBAAwB,CAAC,IAAI,CAAC;QAC9B;MACF;MACA,IAAIL,CAAC,CAAC2B,GAAG,KAAK,WAAW,EAAE;QACzBtB,wBAAwB,CAAC,KAAK,CAAC;QAC/B;MACF;MACA,IAAMc,QAAQ,GACZ1B,YAAY,CAAC0C,SAAS,CAAC,CAAC,EAAEL,KAAK,CAAC,GAChC9B,CAAC,CAAC2B,GAAG,GACLlC,YAAY,CAAC0C,SAAS,CAACJ,GAAG,CAAC;MAC7B,IAAI,CAAC7C,UAAU,CAACiC,QAAQ,EAAElC,eAAe,CAAC,EAAE;QAC1Ce,CAAC,CAACkC,cAAc,EAAE;QAClB;MACF;IACF,CAAC,MAAM;MACL,IAAMf,SAAQ,GACZ1B,YAAY,CAAC0C,SAAS,CAAC,CAAC,EAAEL,KAAK,CAAC,GAChC9B,CAAC,CAAC2B,GAAG,GACLlC,YAAY,CAAC0C,SAAS,CAACJ,GAAG,CAAC;MAE7B,IAAI,CAAC7C,UAAU,CAACiC,SAAQ,EAAElC,eAAe,CAAC,EAAE;QAC1Ce,CAAC,CAACkC,cAAc,EAAE;QAClB;MACF;IACF;EACF,CAAC,EACD,CAAC7B,wBAAwB,EAAExB,QAAQ,EAAEK,UAAU,EAAED,eAAe,CAAC,CAClE;EAED,IAAMmD,YAAY,GAAGnE,WAAW,CAAC,UAAC+B,CAAC,EAAK;IACtCN,eAAe,CAACM,CAAC,CAACE,MAAM,CAACtB,KAAK,CAAC;EACjC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMyD,WAAW,GAAG,SAAdA,WAAW,GAAS;IAAA;IACxB,IAAM9B,cAAc,yBAAGjB,QAAQ,CAACW,OAAO,qBAAhB,mBAAkBM,cAAc;IACvD,IACEjB,QAAQ,CAACW,OAAO,IAChBR,YAAY,IACZA,YAAY,CAACW,MAAM,GAAG,CAAC,IACvB,OAAOG,cAAc,KAAK,QAAQ,EAClC;MACA,IAAMC,SAAS,GAAGf,YAAY,CAACgB,OAAO,CAAC,GAAG,CAAC;MAC3C,IAAIF,cAAc,GAAGC,SAAS,EAAE;QAAA;QAC9B,sBAAAlB,QAAQ,CAACW,OAAO,qBAAhB,mBAAkBwB,iBAAiB,CAAC,CAAC,EAAEjB,SAAS,CAAC;MACnD,CAAC,MAAM,IAAID,cAAc,IAAIC,SAAS,EAAE;QAAA;QACtC,sBAAAlB,QAAQ,CAACW,OAAO,qBAAhB,mBAAkBwB,iBAAiB,CACjCjB,SAAS,GAAG,CAAC,EACbf,YAAY,CAACW,MAAM,CACpB;MACH;IACF;EACF,CAAC;EAED,IAAMkC,iBAAiB,GAAG,SAApBA,iBAAiB,GAAS;IAC9B,IAAIhD,QAAQ,CAACW,OAAO,EAAE;MAAA;MACpB,sBAAAX,QAAQ,CAACW,OAAO,qBAAhB,mBAAkBwB,iBAAiB,CAAC,CAAC,EAAEhC,YAAY,CAACW,MAAM,CAAC;IAC7D;EACF,CAAC;EAED,oBACE,oBAAC,eAAe;IACd,GAAG,EAAEb,SAAU;IACf,UAAU,eACLR,UAAU;MACbH,KAAK,EAAEa,YAAY;MACnB8C,MAAM,EAAExC,UAAU;MAClByC,SAAS,EAAEd,aAAa;MACxBe,QAAQ,EAAEL,YAAY;MACtBM,IAAI,EAAE,MAAM;MACZC,OAAO,EAAEN,WAAW;MACpBO,aAAa,EAAEN,iBAAiB;MAChCO,SAAS,EAAEtE,UAAU,CAAC,SAAS,EAAEQ,UAAU,oBAAVA,UAAU,CAAE8D,SAAS;IAAC;EACvD,GACExD,IAAI,EACR;AAEN,CAAC,CACF;AAEDZ,aAAa,CAACqE,WAAW,GAAG,eAAe"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const validateStopwatchTime: (value: string) => boolean;
|
|
2
|
-
export declare const validateTimeInput: (value: string) => boolean;
|
|
2
|
+
export declare const validateTimeInput: (value: string, withLeadingZero: boolean) => boolean;
|
|
3
3
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAAW,MAAM,YAIlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAAW,MAAM,YAIlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,mBAAmB,OAAO,YAUxE,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
export var validateStopwatchTime = function validateStopwatchTime(value) {
|
|
2
2
|
return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
|
|
3
3
|
};
|
|
4
|
-
export var validateTimeInput = function validateTimeInput(value) {
|
|
5
|
-
|
|
4
|
+
export var validateTimeInput = function validateTimeInput(value, withLeadingZero) {
|
|
5
|
+
if (withLeadingZero) {
|
|
6
|
+
return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
7
|
+
} else {
|
|
8
|
+
return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
9
|
+
}
|
|
6
10
|
};
|
|
7
11
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +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]+)?(((
|
|
1
|
+
{"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput","withLeadingZero"],"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, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n }\n};\n"],"mappings":"AAAA,OAAO,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;AACH,CAAC;AAED,OAAO,IAAME,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIF,KAAa,EAAEG,eAAwB,EAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,4FAA4F,CAACF,IAAI,CACtGD,KAAK,CACN;EACH,CAAC,MAAM;IACL,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;EACH;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { validateStopwatchTime, validateTimeInput } from "./validation";
|
|
2
|
+
describe("validateTimeInput", function () {
|
|
3
|
+
it("should work", function () {
|
|
4
|
+
expect(validateTimeInput("0000:45", true)).toBeFalsy();
|
|
5
|
+
expect(validateTimeInput("0000.45", true)).toBeFalsy();
|
|
6
|
+
expect(validateTimeInput("0000,45", true)).toBeFalsy();
|
|
7
|
+
expect(validateTimeInput("10000,45", true)).toBeTruthy();
|
|
8
|
+
expect(validateTimeInput("1000", true)).toBeTruthy();
|
|
9
|
+
expect(validateTimeInput("00:45", true)).toBeTruthy();
|
|
10
|
+
expect(validateTimeInput("00,45", true)).toBeTruthy();
|
|
11
|
+
expect(validateTimeInput("00.45", true)).toBeTruthy();
|
|
12
|
+
expect(validateTimeInput("00.", true)).toBeTruthy();
|
|
13
|
+
expect(validateTimeInput("0", true)).toBeTruthy();
|
|
14
|
+
expect(validateTimeInput(".5", true)).toBeTruthy();
|
|
15
|
+
expect(validateTimeInput(",55", true)).toBeTruthy();
|
|
16
|
+
expect(validateTimeInput(",55", false)).toBeTruthy();
|
|
17
|
+
expect(validateTimeInput(".55", false)).toBeTruthy();
|
|
18
|
+
expect(validateTimeInput("00:45", false)).toBeFalsy();
|
|
19
|
+
expect(validateTimeInput("00.45", false)).toBeFalsy();
|
|
20
|
+
expect(validateTimeInput("00,45", false)).toBeFalsy();
|
|
21
|
+
expect(validateTimeInput("0:45", false)).toBeTruthy();
|
|
22
|
+
expect(validateTimeInput("0,45", false)).toBeTruthy();
|
|
23
|
+
expect(validateTimeInput("0.45", false)).toBeTruthy();
|
|
24
|
+
expect(validateTimeInput("00.", false)).toBeFalsy();
|
|
25
|
+
expect(validateTimeInput("00", false)).toBeFalsy();
|
|
26
|
+
expect(validateTimeInput("0", false)).toBeTruthy();
|
|
27
|
+
expect(validateTimeInput("1:45", false)).toBeTruthy();
|
|
28
|
+
expect(validateTimeInput("1:6", false)).toBeFalsy();
|
|
29
|
+
expect(validateTimeInput("11:6", true)).toBeFalsy();
|
|
30
|
+
expect(validateTimeInput("11:555", false)).toBeFalsy();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("validateStopwatchTime", function () {
|
|
34
|
+
it("should work", function () {
|
|
35
|
+
expect(validateStopwatchTime("0000:45")).toBeFalsy();
|
|
36
|
+
expect(validateStopwatchTime("0000.45")).toBeFalsy();
|
|
37
|
+
expect(validateStopwatchTime("0000,45")).toBeFalsy();
|
|
38
|
+
expect(validateStopwatchTime("10000,45")).toBeFalsy();
|
|
39
|
+
expect(validateStopwatchTime("1000")).toBeFalsy();
|
|
40
|
+
expect(validateStopwatchTime("00:45")).toBeTruthy();
|
|
41
|
+
expect(validateStopwatchTime("00,45")).toBeTruthy();
|
|
42
|
+
expect(validateStopwatchTime("00.45")).toBeTruthy();
|
|
43
|
+
expect(validateStopwatchTime("00.")).toBeTruthy();
|
|
44
|
+
expect(validateStopwatchTime("0")).toBeTruthy();
|
|
45
|
+
expect(validateStopwatchTime(".5")).toBeTruthy();
|
|
46
|
+
expect(validateStopwatchTime(",55")).toBeTruthy();
|
|
47
|
+
expect(validateStopwatchTime(",55")).toBeTruthy();
|
|
48
|
+
expect(validateStopwatchTime(".55")).toBeTruthy();
|
|
49
|
+
expect(validateStopwatchTime("0:45")).toBeTruthy();
|
|
50
|
+
expect(validateStopwatchTime("0,45")).toBeTruthy();
|
|
51
|
+
expect(validateStopwatchTime("0.45")).toBeTruthy();
|
|
52
|
+
expect(validateStopwatchTime("0")).toBeTruthy();
|
|
53
|
+
expect(validateStopwatchTime("1:45")).toBeTruthy();
|
|
54
|
+
expect(validateStopwatchTime("1:6")).toBeFalsy();
|
|
55
|
+
expect(validateStopwatchTime("11:6")).toBeFalsy();
|
|
56
|
+
expect(validateStopwatchTime("11:555")).toBeFalsy();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.js","names":["validateStopwatchTime","validateTimeInput","describe","it","expect","toBeFalsy","toBeTruthy"],"sources":["../../../src/utils/validation.test.ts"],"sourcesContent":["import { validateStopwatchTime, validateTimeInput } from \"./validation\";\n\ndescribe(\"validateTimeInput\", () => {\n it(\"should work\", () => {\n expect(validateTimeInput(\"0000:45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000.45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000,45\", true)).toBeFalsy();\n expect(validateTimeInput(\"10000,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"1000\", true)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.\", true)).toBeTruthy();\n expect(validateTimeInput(\"0\", true)).toBeTruthy();\n expect(validateTimeInput(\".5\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", false)).toBeTruthy();\n expect(validateTimeInput(\".55\", false)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00.45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00,45\", false)).toBeFalsy();\n expect(validateTimeInput(\"0:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0,45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0.45\", false)).toBeTruthy();\n expect(validateTimeInput(\"00.\", false)).toBeFalsy();\n expect(validateTimeInput(\"00\", false)).toBeFalsy();\n expect(validateTimeInput(\"0\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:6\", false)).toBeFalsy();\n expect(validateTimeInput(\"11:6\", true)).toBeFalsy();\n expect(validateTimeInput(\"11:555\", false)).toBeFalsy();\n });\n});\n\ndescribe(\"validateStopwatchTime\", () => {\n it(\"should work\", () => {\n expect(validateStopwatchTime(\"0000:45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000.45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"10000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"1000\")).toBeFalsy();\n expect(validateStopwatchTime(\"00:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\".5\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\".55\")).toBeTruthy();\n expect(validateStopwatchTime(\"0:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:555\")).toBeFalsy();\n });\n});\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -432,8 +432,12 @@
|
|
|
432
432
|
var validateStopwatchTime = function validateStopwatchTime(value) {
|
|
433
433
|
return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
|
|
434
434
|
};
|
|
435
|
-
var validateTimeInput = function validateTimeInput(value) {
|
|
436
|
-
|
|
435
|
+
var validateTimeInput = function validateTimeInput(value, withLeadingZero) {
|
|
436
|
+
if (withLeadingZero) {
|
|
437
|
+
return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
438
|
+
} else {
|
|
439
|
+
return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
440
|
+
}
|
|
437
441
|
};
|
|
438
442
|
|
|
439
443
|
function setRef(ref, value) {
|
|
@@ -16074,7 +16078,7 @@
|
|
|
16074
16078
|
var newMinutesString = newMinutes < 10 ? "0".concat(newMinutes) : newMinutes;
|
|
16075
16079
|
var newHoursString = withLeadingZero && newHours < 10 ? "0".concat(newHours) : newHours;
|
|
16076
16080
|
var newValue = "".concat(newHoursString, ":").concat(newMinutesString);
|
|
16077
|
-
if (validation(newValue)) {
|
|
16081
|
+
if (validation(newValue, withLeadingZero)) {
|
|
16078
16082
|
setCurrentValue(newValue);
|
|
16079
16083
|
requestAnimationFrame(function () {
|
|
16080
16084
|
var _inputRef$current;
|
|
@@ -16142,18 +16146,18 @@
|
|
|
16142
16146
|
return;
|
|
16143
16147
|
}
|
|
16144
16148
|
var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
16145
|
-
if (!validation(newValue)) {
|
|
16149
|
+
if (!validation(newValue, withLeadingZero)) {
|
|
16146
16150
|
e.preventDefault();
|
|
16147
16151
|
return;
|
|
16148
16152
|
}
|
|
16149
16153
|
} else {
|
|
16150
16154
|
var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
16151
|
-
if (!validation(_newValue)) {
|
|
16155
|
+
if (!validation(_newValue, withLeadingZero)) {
|
|
16152
16156
|
e.preventDefault();
|
|
16153
16157
|
return;
|
|
16154
16158
|
}
|
|
16155
16159
|
}
|
|
16156
|
-
}, [handleIncrementDecrement, onCancel, validation]);
|
|
16160
|
+
}, [handleIncrementDecrement, onCancel, validation, withLeadingZero]);
|
|
16157
16161
|
var handleChange = React.useCallback(function (e) {
|
|
16158
16162
|
setCurrentValue(e.target.value);
|
|
16159
16163
|
}, []);
|