@activecollab/components 1.0.373 → 1.0.375
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 +2 -3
- package/dist/cjs/components/EditableHours/EditableHours.js.map +1 -1
- package/dist/esm/components/EditableHours/EditableHours.d.ts.map +1 -1
- package/dist/esm/components/EditableHours/EditableHours.js +2 -3
- package/dist/esm/components/EditableHours/EditableHours.js.map +1 -1
- package/dist/index.js +1 -3
- 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
|
@@ -10,6 +10,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
10
10
|
var _timeUtils = require("../../utils/timeUtils");
|
|
11
11
|
var _useForkRef = _interopRequireDefault(require("../../utils/useForkRef"));
|
|
12
12
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
+
var _utils = require("../../utils");
|
|
13
14
|
var _excluded = ["value", "onCancel", "onSave", "inputProps", "allowEmptyValue", "withLeadingZero", "validation", "incrementOnlySelected", "minuteIncrement"];
|
|
14
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -36,9 +37,7 @@ var EditableHours = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
|
36
37
|
_ref$withLeadingZero = _ref.withLeadingZero,
|
|
37
38
|
withLeadingZero = _ref$withLeadingZero === void 0 ? true : _ref$withLeadingZero,
|
|
38
39
|
_ref$validation = _ref.validation,
|
|
39
|
-
validation = _ref$validation === void 0 ?
|
|
40
|
-
return true;
|
|
41
|
-
} : _ref$validation,
|
|
40
|
+
validation = _ref$validation === void 0 ? _utils.validateTimeInput : _ref$validation,
|
|
42
41
|
_ref$incrementOnlySel = _ref.incrementOnlySelected,
|
|
43
42
|
incrementOnlySelected = _ref$incrementOnlySel === void 0 ? false : _ref$incrementOnlySel,
|
|
44
43
|
_ref$minuteIncrement = _ref.minuteIncrement,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableHours.js","names":["EditableHours","React","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","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\";\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 = () => true,\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":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY7B,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,gCAAG;MAAA,OAAM,IAAI;IAAA;IAAA,6BACvBC,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,EAACd,GAAG,EAAEW,QAAQ,CAAC;EAC3C,gBAAwC,IAAAI,eAAQ,EAAC,YAAM;MACrD,IAAId,KAAK,KAAKe,SAAS,EAAE;QACvB,OAAO,IAAAC,yBAAc,EAAChB,KAAK,EAAEK,eAAe,CAAC;MAC/C;MACA,OAAO,EAAE;IACX,CAAC,CAAC;IAAA;IALKY,YAAY;IAAEC,eAAe;EAMpC,iBAAkC,IAAAJ,eAAQ,EAAC,YAAM;MAC/C,IAAId,KAAK,KAAKe,SAAS,EAAE;QACvB,OAAO,IAAAC,yBAAc,EAAChB,KAAK,EAAEK,eAAe,CAAC;MAC/C;MACA,OAAO,EAAE;IACX,CAAC,CAAC;IAAA;IALKc,SAAS;IAAEC,YAAY;EAM9B,IAAMC,SAAS,GAAG,IAAAV,aAAM,EAAC,KAAK,CAAC;EAE/B,IAAAW,gBAAS,EAAC,YAAM;IACd,IAAIC,MAAM;IACV,IAAIvB,KAAK,KAAKe,SAAS,EAAE;MACvBQ,MAAM,GAAG,IAAAP,yBAAc,EAAChB,KAAK,EAAEK,eAAe,CAAC;IACjD;IACA,IAAIY,YAAY,KAAKM,MAAM,EAAE;MAC3BL,eAAe,CAACK,MAAM,CAAC;MACvBH,YAAY,CAACG,MAAM,CAAC;IACtB;IACA;EACF,CAAC,EAAE,CAACvB,KAAK,CAAC,CAAC;EAEX,IAAMwB,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,CAAC5B,KAAK,CAAC6B,IAAI,EAAE,CAACC,MAAM,GAAG,CAAC,IAChCX,SAAS,KAAKO,CAAC,CAACE,MAAM,CAAC5B,KAAK,EAC5B;QACA,IAAMuB,MAAM,GAAG,IAAAP,yBAAc,EAACU,CAAC,CAACE,MAAM,CAAC5B,KAAK,EAAEK,eAAe,CAAC;QAC9De,YAAY,CAACG,MAAM,CAAC;QACpBL,eAAe,CAACK,MAAM,CAAC;QACvB,OAAOrB,MAAM,KAAK,UAAU,IAAIA,MAAM,CAACwB,CAAC,CAAC;MAC3C,CAAC,MAAM;QACL,CAACtB,eAAe,GACZc,eAAe,CAACC,SAAS,CAAC,GAC1B,OAAOjB,MAAM,KAAK,UAAU,IAC5BiB,SAAS,KAAKO,CAAC,CAACE,MAAM,CAAC5B,KAAK,IAC5BE,MAAM,CAACwB,CAAC,CAAC;MACf;IACF;EACF,CAAC,EACD,CAACtB,eAAe,EAAEF,MAAM,EAAEiB,SAAS,EAAEd,eAAe,CAAC,CACtD;EAED,IAAM0B,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,GAClBvC,eAAe,IAAIoC,QAAQ,GAAG,EAAE,cAAOA,QAAQ,IAAKA,QAAQ;QAC9D,IAAMI,QAAQ,aAAMD,cAAc,cAAID,gBAAgB,CAAE;QAExD,IAAIrC,UAAU,CAACuC,QAAQ,CAAC,EAAE;UACxB3B,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,EACfF,UAAU,EACVD,eAAe,CAChB,CACF;EAED,IAAM+C,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,OAAOrD,QAAQ,KAAK,UAAU,IAAIA,QAAQ,EAAE;IAC9C;IACA,IAAIyB,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,CAACvD,KAAK;IAChC,IAAI0B,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,CAACnD,UAAU,CAACuC,QAAQ,CAAC,EAAE;QACzBnB,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,CAACnD,UAAU,CAACuC,SAAQ,CAAC,EAAE;QACzBnB,CAAC,CAACkC,cAAc,EAAE;QAClB;MACF;IACF;EACF,CAAC,EACD,CAAC7B,wBAAwB,EAAE9B,QAAQ,EAAEK,UAAU,CAAC,CACjD;EAED,IAAMwD,YAAY,GAAG,IAAArC,kBAAW,EAAC,UAACC,CAAC,EAAK;IACtCR,eAAe,CAACQ,CAAC,CAACE,MAAM,CAAC5B,KAAK,CAAC;EACjC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAM+D,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,kCACLT,UAAU;MACbH,KAAK,EAAEiB,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,EAAErE,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEoE,SAAS;IAAC;EACvD,GACE9D,IAAI,EACR;AAEN,CAAC,CACF;AAAC;AAEFb,aAAa,CAAC6E,WAAW,GAAG,eAAe"}
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableHours.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAmD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"EditableHours.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AACD,eAAO,MAAM,aAAa,2FAoRzB,CAAC"}
|
|
@@ -6,6 +6,7 @@ import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
|
6
6
|
import { decimalToHours } from "../../utils/timeUtils";
|
|
7
7
|
import useForkRef from "../../utils/useForkRef";
|
|
8
8
|
import classNames from "classnames";
|
|
9
|
+
import { validateTimeInput } from "../../utils";
|
|
9
10
|
export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
10
11
|
var _ref$value = _ref.value,
|
|
11
12
|
value = _ref$value === void 0 ? 0 : _ref$value,
|
|
@@ -16,9 +17,7 @@ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
16
17
|
_ref$withLeadingZero = _ref.withLeadingZero,
|
|
17
18
|
withLeadingZero = _ref$withLeadingZero === void 0 ? true : _ref$withLeadingZero,
|
|
18
19
|
_ref$validation = _ref.validation,
|
|
19
|
-
validation = _ref$validation === void 0 ?
|
|
20
|
-
return true;
|
|
21
|
-
} : _ref$validation,
|
|
20
|
+
validation = _ref$validation === void 0 ? validateTimeInput : _ref$validation,
|
|
22
21
|
_ref$incrementOnlySel = _ref.incrementOnlySelected,
|
|
23
22
|
incrementOnlySelected = _ref$incrementOnlySel === void 0 ? false : _ref$incrementOnlySel,
|
|
24
23
|
_ref$minuteIncrement = _ref.minuteIncrement,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableHours.js","names":["EditableContent","React","useCallback","useEffect","useRef","useState","decimalToHours","useForkRef","classNames","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\";\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 = () => true,\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)) {\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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"}
|
package/dist/index.js
CHANGED
|
@@ -15940,9 +15940,7 @@
|
|
|
15940
15940
|
_ref$withLeadingZero = _ref.withLeadingZero,
|
|
15941
15941
|
withLeadingZero = _ref$withLeadingZero === void 0 ? true : _ref$withLeadingZero,
|
|
15942
15942
|
_ref$validation = _ref.validation,
|
|
15943
|
-
validation = _ref$validation === void 0 ?
|
|
15944
|
-
return true;
|
|
15945
|
-
} : _ref$validation,
|
|
15943
|
+
validation = _ref$validation === void 0 ? validateTimeInput : _ref$validation,
|
|
15946
15944
|
_ref$incrementOnlySel = _ref.incrementOnlySelected,
|
|
15947
15945
|
incrementOnlySelected = _ref$incrementOnlySel === void 0 ? false : _ref$incrementOnlySel,
|
|
15948
15946
|
_ref$minuteIncrement = _ref.minuteIncrement,
|