@consta/uikit 4.9.0 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/__internal__/src/components/Avatar/Avatar.css +1 -1
  2. package/__internal__/src/components/Avatar/Avatar.d.ts +2 -1
  3. package/__internal__/src/components/Avatar/Avatar.js +1 -1
  4. package/__internal__/src/components/Avatar/Avatar.js.map +1 -1
  5. package/__internal__/src/components/AvatarGroup/AvatarGroup.css +1 -1
  6. package/__internal__/src/components/AvatarGroup/AvatarGroup.js +1 -1
  7. package/__internal__/src/components/AvatarGroup/AvatarGroup.js.map +1 -1
  8. package/__internal__/src/components/AvatarGroup/helpers.d.ts +1 -0
  9. package/__internal__/src/components/AvatarGroup/types.d.ts +1 -0
  10. package/__internal__/src/components/AvatarGroup/types.js.map +1 -1
  11. package/__internal__/src/components/Combobox/Combobox.js +1 -1
  12. package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
  13. package/__internal__/src/components/Combobox/helpers.d.ts +3 -1
  14. package/__internal__/src/components/Combobox/helpers.js.map +1 -1
  15. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts +1 -1
  16. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js +1 -1
  17. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js.map +1 -1
  18. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.d.ts +13 -4
  19. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js +1 -1
  20. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js.map +1 -1
  21. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.d.ts +1 -1
  22. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js +1 -1
  23. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js.map +1 -1
  24. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.d.ts +16 -4
  25. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js +1 -1
  26. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js.map +1 -1
  27. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.d.ts +1 -1
  28. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js +1 -1
  29. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js.map +1 -1
  30. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.d.ts +13 -4
  31. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js +1 -1
  32. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js.map +1 -1
  33. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts +1 -1
  34. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js +1 -1
  35. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js.map +1 -1
  36. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.d.ts +16 -4
  37. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js +1 -1
  38. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js.map +1 -1
  39. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts +1 -1
  40. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js +1 -1
  41. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js.map +1 -1
  42. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.d.ts +13 -1
  43. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js +1 -1
  44. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js.map +1 -1
  45. package/__internal__/src/components/ProgressStepBar/ProgressStepBar.css +1 -1
  46. package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js +1 -1
  47. package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js.map +1 -1
  48. package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.css +1 -1
  49. package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.js +1 -1
  50. package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.js.map +1 -1
  51. package/__internal__/src/components/ProgressStepBar/ProgressStepBarLine/ProgressStepBarLine.css +1 -1
  52. package/__internal__/src/components/ProgressStepBar/ProgressStepBarLine/ProgressStepBarLine.js +1 -1
  53. package/__internal__/src/components/ProgressStepBar/ProgressStepBarLine/ProgressStepBarLine.js.map +1 -1
  54. package/__internal__/src/components/ProgressStepBar/helpers.d.ts +2 -0
  55. package/__internal__/src/components/ProgressStepBar/helpers.js +1 -1
  56. package/__internal__/src/components/ProgressStepBar/helpers.js.map +1 -1
  57. package/__internal__/src/components/SelectComponents/SelectItem/SelectItem.js +1 -1
  58. package/__internal__/src/components/SelectComponents/SelectItem/SelectItem.js.map +1 -1
  59. package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.css +1 -1
  60. package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.d.ts +1 -0
  61. package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.js +1 -1
  62. package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.js.map +1 -1
  63. package/__internal__/src/components/Switch/Switch.css +1 -1
  64. package/__internal__/src/components/Switch/Switch.d.ts +20 -37
  65. package/__internal__/src/components/Switch/Switch.js +1 -1
  66. package/__internal__/src/components/Switch/Switch.js.map +1 -1
  67. package/__internal__/src/components/Switch/index.d.ts +1 -0
  68. package/__internal__/src/components/Switch/index.js +1 -1
  69. package/__internal__/src/components/Switch/index.js.map +1 -1
  70. package/__internal__/src/components/Switch/types.d.ts +35 -0
  71. package/__internal__/src/components/Switch/types.js +2 -0
  72. package/__internal__/src/components/Switch/types.js.map +1 -0
  73. package/__internal__/src/components/SwitchGroup/SwitchGroup.css +1 -1
  74. package/__internal__/src/components/SwitchGroup/SwitchGroup.js +1 -1
  75. package/__internal__/src/components/SwitchGroup/SwitchGroup.js.map +1 -1
  76. package/__internal__/src/components/SwitchGroup/helpers.d.ts +1 -1
  77. package/__internal__/src/components/SwitchGroup/types.d.ts +3 -8
  78. package/__internal__/src/components/SwitchGroup/types.js +1 -1
  79. package/__internal__/src/components/SwitchGroup/types.js.map +1 -1
  80. package/__internal__/src/components/TextField/TextField.css +1 -1
  81. package/__internal__/src/components/TextField/index.d.ts +1 -0
  82. package/__internal__/src/components/TextField/index.js +1 -1
  83. package/__internal__/src/components/TextField/index.js.map +1 -1
  84. package/__internal__/src/components/TextField/useIMask.d.ts +15 -0
  85. package/__internal__/src/components/TextField/useIMask.js +2 -0
  86. package/__internal__/src/components/TextField/useIMask.js.map +1 -0
  87. package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
  88. package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
  89. package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.css +1 -1
  90. package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.css +1 -1
  91. package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.js +1 -1
  92. package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.js.map +1 -1
  93. package/__internal__/src/components/UserSelect/helpers.d.ts +3 -1
  94. package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
  95. package/__internal__/src/hooks/useSelect/useSelect.js +1 -1
  96. package/__internal__/src/hooks/useSelect/useSelect.js.map +1 -1
  97. package/__internal__/src/mixs/MixFocus/MixFocus.css +1 -1
  98. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerFieldTypeDateTime.js","names":["format","isValid","isWithinInterval","parse","React","useCallback","useEffect","useMemo","useRef","useState","useForkRef","useMutableRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropSeparatorDefault","getParts","getPartsDate","datePickerErrorTypes","useImask","DatePickerFieldTypeDateTime","forwardRef","props","ref","formatProp","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","otherProps","onChangeRef","stringValue","setStringValue","stringValueRef","valueRef","onErrorRef","formatParts","handleChange","e","current","partsDate","dd","MM","yyyy","HH","mm","ss","filter","item","length","date","Date","start","end","type","getTime"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.tsx"],"sourcesContent":["import { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField, TextFieldPropOnChange } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDateTime,\n datePickerPropPlaceholderTypeDateTime,\n datePickerPropSeparatorDefault,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes } from '../types';\nimport { DatePickerFieldTypeDateTimeProps, useImask } from './helpers';\n\nexport const DatePickerFieldTypeDateTime = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateTimeProps\n>((props, ref) => {\n const {\n format: formatProp = datePickerPropFormatTypeDateTime,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeDateTime,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ...otherProps\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const onChangeRef = useMutableRef(onChange);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n\n const stringValueRef = useMutableRef(stringValue);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const formatParts = useMemo(\n () => getParts(formatProp, separator, true),\n [formatProp, separator],\n );\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n\n const partsDate = getPartsDate(\n stringValue,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\n const [dd, MM, yyyy, HH, mm, ss] = partsDate;\n\n if (partsDate.filter((item) => !!item).length === formatParts.length) {\n const date = parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy} ${\n HH || '00'\n }:${mm || '00'}:${ss || '00'}`,\n datePickerPropFormatTypeDateTime,\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n useImask(\n formatProp,\n separator,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n inputRef,\n stringValue,\n onError,\n handleChange,\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n onChange={handleChange as unknown as TextFieldPropOnChange}\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerFieldTypeDateTime.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeDateTime","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","otherProps","stringValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDateTime,\n datePickerPropPlaceholderTypeDateTime,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeDateTimeProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeDateTime = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateTimeProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeDateTime,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeDateTime,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef } = usePicker({\n onChange,\n value,\n onError,\n maxDate,\n minDate,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n separator,\n format,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oQAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,gCADF,CAEEC,qCAFF,CAGEC,8BAHF,kBAKA,OAA2CC,SAA3C,iBAEA,MAAO,IAAMC,4BAA2B,CAAGT,KAAK,CAACU,UAAN,CAGzC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAeZD,CAfY,CAEdE,MAFc,CAEdA,CAFc,YAELR,gCAFK,KAeZM,CAfY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAeZI,CAfY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,qCAJA,GAKdU,CALc,CAeZL,CAfY,CAKdK,QALc,CAMdC,CANc,CAeZN,CAfY,CAMdM,OANc,GAeZN,CAfY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAeZQ,CAfY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAeZT,CAfY,CASdS,KATc,CAUJC,CAVI,CAeZV,CAfY,CAUdW,QAVc,CAWdC,CAXc,CAeZZ,CAfY,CAWdY,iBAXc,CAYdC,CAZc,CAeZb,CAfY,CAYda,mBAZc,CAadC,CAbc,CAeZd,CAfY,CAadc,mBAbc,CAcXC,CAdW,0BAeZf,CAfY,cAiBkBH,SAAS,CAAC,CAC1CQ,QAAQ,CAARA,CAD0C,CAE1CI,KAAK,CAALA,CAF0C,CAG1CH,OAAO,CAAPA,CAH0C,CAI1CE,OAAO,CAAPA,CAJ0C,CAK1CD,OAAO,CAAPA,CAL0C,CAM1CK,iBAAiB,CAAjBA,CAN0C,CAO1CE,mBAAmB,CAAnBA,CAP0C,CAQ1CD,mBAAmB,CAAnBA,CAR0C,CAS1CV,SAAS,CAATA,CAT0C,CAU1CD,MAAM,CAANA,CAV0C,CAAD,CAjB3B,CAiBRc,CAjBQ,GAiBRA,WAjBQ,CAiBKL,CAjBL,GAiBKA,QAjBL,CA8BhB,MACE,qBAAC,SAAD,kBACMI,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,iBAAiB,CAAEd,CAHrB,CAIE,QAAQ,CAAEX,UAAU,CAAC,CAACqB,CAAD,CAAWD,CAAX,CAAD,CAJtB,CAKE,KAAK,CAAEM,CALT,CAME,WAAW,CAAEZ,CANf,GASH,CA3C0C,CAApC"}
@@ -46,8 +46,20 @@ export declare type DatePickerFieldTypeDateTimeProps = PropsWithHTMLAttributes<{
46
46
  labelPosition?: 'top' | 'left';
47
47
  withClearButton?: boolean;
48
48
  }, HTMLDivElement>;
49
- export declare const useImask: (formatProp: string, separator: string, multiplicityHours: number | undefined, multiplicitySeconds: number | undefined, multiplicityMinutes: number | undefined, inputRef: React.RefObject<HTMLInputElement>, stringValue: string | null, onError: DatePickerPropOnError | undefined, handleChanhe: (props: {
50
- e: Event;
51
- value: string | null;
52
- }) => void) => void;
49
+ declare type UsePickerProps = {
50
+ value?: Date | null;
51
+ onChange?: DatePickerFieldTypeDateTimePropOnChange;
52
+ onError?: DatePickerPropOnError;
53
+ format: string;
54
+ separator: string;
55
+ minDate: Date;
56
+ maxDate: Date;
57
+ multiplicityHours: number | undefined;
58
+ multiplicitySeconds: number | undefined;
59
+ multiplicityMinutes: number | undefined;
60
+ };
61
+ export declare const usePicker: (props: UsePickerProps) => {
62
+ stringValue: string | null;
63
+ inputRef: React.RefObject<HTMLInputElement>;
64
+ };
53
65
  export {};
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useRef}from"react";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{leapYear}from"../../../utils/date";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{datePickerPropFormatTypeDate,datePickerPropSeparatorDefault,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var useImask=function(a,b,c,d,e,f,g,h,i){var j=useRef(null),k=useMutableRef(h),l=useMutableRef(i);useEffect(function(){f.current&&(j.current=IMask(f.current,{mask:Date,pattern:a,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31},HH:c&&1<c?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,c,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:e&&1<e?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,e,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:d&&1<d?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,d,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(b){return _format(b,a)},parse:function parse(b){return _parse(b,a,new Date)},validate:function validate(c){var d=getPartsDate(c,a,b,!0,["dd","MM","yyyy","HH","mm","ss"]),e=_slicedToArray(d,6),f=e[0],g=e[1],h=e[2],i=e[3],j=e[4],l=e[5];if(f&&g&&!isValid(_parse("".concat(f).concat(datePickerPropSeparatorDefault).concat(g).concat(datePickerPropSeparatorDefault).concat(leapYear),datePickerPropFormatTypeDate,new Date))){var m;return null===(m=k.current)||void 0===m?void 0:m.call(k,{type:datePickerErrorTypes[1],stringValue:c,dd:f,MM:g,yyyy:h,HH:i,mm:j,ss:l}),!1}if(f&&g&&h&&!isValid(_parse("".concat(f).concat(datePickerPropSeparatorDefault).concat(g).concat(datePickerPropSeparatorDefault).concat(h),datePickerPropFormatTypeDate,new Date))){var n;return null===(n=k.current)||void 0===n?void 0:n.call(k,{type:datePickerErrorTypes[1],stringValue:c,dd:f,MM:g,yyyy:h,HH:i,mm:j,ss:l}),!1}return!0}}))},[a,b,c,d,e]);var m=useCallback(function(a){var b;l.current({e:a,value:(null===(b=j.current)||void 0===b?void 0:b.value)||null})},[]);useEffect(function(){var a;return null===(a=j.current)||void 0===a?void 0:a.on("accept",m),function(){var a;null===(a=j.current)||void 0===a?void 0:a.off("accept",m)}},[]),useEffect(function(){var a;null===(a=j.current)||void 0===a?void 0:a.updateValue()},[g])};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,isWithinInterval,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useMemo,useState}from"react";import{useIMask}from"../../TextField";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{leapYear}from"../../../utils/date";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{datePickerPropFormatTypeDate,datePickerPropFormatTypeDateTime,datePickerPropSeparatorDefault,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=a.multiplicityHours,k=a.multiplicityMinutes,l=a.multiplicitySeconds,m=useMutableRef(c),n=useMutableRef(b),o=useMutableRef(d),p=useState(b&&isValid(b)?_format(b,f):null),q=_slicedToArray(p,2),r=q[0],s=q[1],t=useMutableRef(r),u=useMemo(function(){return getParts(f,g,!0)},[f,g]),v=useCallback(function(a){var b=a.e,c=a.value;if(t.current!==c){s(c);var d=m.current,e=n.current;if(d){if(!c)return void(e&&d({e:b,value:null}));var j=getPartsDate(c,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),k=_slicedToArray(j,6),l=k[0],p=k[1],q=k[2],r=k[3],v=k[4],w=k[5];if(j.filter(function(a){return!!a}).length===u.length){var y=_parse("".concat(l).concat(datePickerPropSeparatorDefault).concat(p).concat(datePickerPropSeparatorDefault).concat(q," ").concat(r||"00",":").concat(v||"00",":").concat(w||"00"),datePickerPropFormatTypeDateTime,new Date);if(!isWithinInterval(y,{start:i,end:h})){var x;return null===(x=o.current)||void 0===x?void 0:x.call(o,{type:datePickerErrorTypes[0],stringValue:c,dd:l,MM:p,yyyy:q,date:y,HH:r,mm:v,ss:w}),void(e&&d({e:b,value:null}))}d({e:b,value:y})}else e&&d({e:b,value:null})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),w=useMemo(function(){return{mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31},HH:j&&1<j?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,j,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:k&&1<k?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,k,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:l&&1<l?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,l,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),c=_slicedToArray(b,6),d=c[0],e=c[1],h=c[2],i=c[3],j=c[4],k=c[5];if(d&&e&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(leapYear),datePickerPropFormatTypeDate,new Date))){var l;return null===(l=o.current)||void 0===l?void 0:l.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h,HH:i,mm:j,ss:k}),!1}if(d&&e&&h&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(h),datePickerPropFormatTypeDate,new Date))){var m;return null===(m=o.current)||void 0===m?void 0:m.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h,HH:i,mm:j,ss:k}),!1}return!0}}},[f,g,j,l,k]),x=useIMask({value:r,onChange:function(a,b){return null===v||void 0===v?void 0:v(b)},maskOptions:w}),y=x.inputRef;return useEffect(function(){b&&isValid(b)?s(_format(b,f)):(null===r||void 0===r?void 0:r.length)===f.length&&s("")},[null===b||void 0===b?void 0:b.getTime()]),{stringValue:r,inputRef:y}};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","parse","startOfDay","startOfHour","startOfMinute","IMask","useCallback","useEffect","useRef","useMutableRef","leapYear","getLabelHours","getLabelMinutes","getLabelSeconds","datePickerPropFormatTypeDate","datePickerPropSeparatorDefault","getPartsDate","getTimeEnum","datePickerErrorTypes","useImask","formatProp","separator","multiplicityHours","multiplicitySeconds","multiplicityMinutes","inputRef","stringValue","onError","handleChanhe","imaskRef","onErrorRef","handleChanheRef","current","mask","Date","pattern","blocks","yyyy","MaskedRange","from","to","MM","dd","HH","MaskedEnum","mm","ss","lazy","autofix","date","string","validate","type","onAcept","e","value","on","off","updateValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport IMask from 'imask';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { leapYear } from '../../../utils/date';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '../../DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDate,\n datePickerPropSeparatorDefault,\n getPartsDate,\n getTimeEnum,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDateTimePropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeDateTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeDateTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\nexport const useImask = (\n formatProp: string,\n separator: string,\n multiplicityHours: number | undefined,\n multiplicitySeconds: number | undefined,\n multiplicityMinutes: number | undefined,\n inputRef: React.RefObject<HTMLInputElement>,\n stringValue: string | null,\n onError: DatePickerPropOnError | undefined,\n handleChanhe: (props: { e: Event; value: string | null }) => void,\n) => {\n const imaskRef = useRef<IMask.InputMask<IMask.MaskedDateOptions> | null>(\n null,\n );\n const onErrorRef = useMutableRef(onError);\n const handleChanheRef = useMutableRef(handleChanhe);\n\n // задаем маску и сохраняем обьект маски в ref\n // обнавляем при смене формата\n useEffect(() => {\n if (!inputRef.current) {\n return;\n }\n\n imaskRef.current = IMask(inputRef.current, {\n mask: Date,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n dd: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date) => format(date, formatProp),\n parse: (string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n string,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\n if (\n dd &&\n MM &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${leapYear}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n HH,\n mm,\n ss,\n });\n\n return false;\n }\n\n if (\n dd &&\n MM &&\n yyyy &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n HH,\n mm,\n ss,\n });\n\n return false;\n }\n\n return true;\n },\n // проблема в типах IMask\n }) as unknown as IMask.InputMask<IMask.MaskedDateOptions>;\n }, [\n formatProp,\n separator,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ]);\n\n // Нужно для синхранизации value c Imask,\n // так как value мы можем задать через пропс без самого ввода,\n // и Imask требует ручной синхронихации в этом случае\n const onAcept = useCallback((e: Event) => {\n handleChanheRef.current({ e, value: imaskRef.current?.value || null });\n }, []);\n\n useEffect(() => {\n imaskRef.current?.on('accept', onAcept);\n return () => {\n imaskRef.current?.off('accept', onAcept);\n };\n }, []);\n\n useEffect(() => {\n imaskRef.current?.updateValue();\n }, [stringValue]);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","IMask","useCallback","useEffect","useMemo","useState","useIMask","useMutableRef","leapYear","getLabelHours","getLabelMinutes","getLabelSeconds","datePickerPropFormatTypeDate","datePickerPropFormatTypeDateTime","datePickerPropSeparatorDefault","getParts","getPartsDate","getTimeEnum","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","multiplicityHours","multiplicityMinutes","multiplicitySeconds","onChangeRef","valueRef","onErrorRef","stringValue","setStringValue","stringValueRef","formatParts","handleChange","e","current","partsDate","dd","MM","yyyy","HH","mm","ss","filter","item","length","date","Date","start","end","type","getTime","options","mask","pattern","blocks","MaskedRange","from","to","MaskedEnum","lazy","autofix","string","validate","_val","params","maskOptions","inputRef"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n isWithinInterval,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport IMask from 'imask';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useIMask } from '##/components/TextField';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { leapYear } from '../../../utils/date';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '../../DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDate,\n datePickerPropFormatTypeDateTime,\n datePickerPropSeparatorDefault,\n getParts,\n getPartsDate,\n getTimeEnum,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDateTimePropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeDateTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeDateTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeDateTimePropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n multiplicityHours: number | undefined;\n multiplicitySeconds: number | undefined;\n multiplicityMinutes: number | undefined;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n const stringValueRef = useMutableRef(stringValue);\n\n const formatParts = useMemo(\n () => getParts(formatProp, separator, true),\n [formatProp, separator],\n );\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n\n const partsDate = getPartsDate(\n stringValue,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\n const [dd, MM, yyyy, HH, mm, ss] = partsDate;\n\n if (partsDate.filter((item) => !!item).length === formatParts.length) {\n const date = parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy} ${\n HH || '00'\n }:${mm || '00'}:${ss || '00'}`,\n datePickerPropFormatTypeDateTime,\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const options: IMask.InputMask<IMask.MaskedDateOptions> = useMemo(\n () =>\n ({\n mask: Date,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n dd: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n string,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n if (\n dd &&\n MM &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${leapYear}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n HH,\n mm,\n ss,\n });\n return false;\n }\n if (\n dd &&\n MM &&\n yyyy &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n HH,\n mm,\n ss,\n });\n return false;\n }\n return true;\n },\n // проблема в типах IMask\n } as unknown as IMask.InputMask<IMask.MaskedDateOptions>),\n [\n formatProp,\n separator,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ],\n );\n\n const { inputRef } = useIMask({\n value: stringValue,\n onChange: (_val, params) => handleChange?.(params),\n maskOptions: options,\n });\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return {\n stringValue,\n inputRef,\n };\n};\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare const DatePickerFieldTypeMonth: React.ForwardRefExoticComponent<{
6
6
  e: Event;
7
7
  value: Date | null;
8
8
  }) => void) | undefined;
9
- onError?: import("../types").DatePickerPropOnError | undefined;
9
+ onError?: import("..").DatePickerPropOnError | undefined;
10
10
  id?: string | undefined;
11
11
  name?: string | undefined;
12
12
  disabled?: boolean | undefined;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef"];import{format,isValid,isWithinInterval,parse}from"date-fns";import React,{useCallback,useEffect,useRef,useState}from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeMonth,datePickerPropPlaceholderTypeMonth,datePickerPropSeparatorDefault,getPartsDate}from"../helpers";import{datePickerErrorTypes}from"../types";import{useImask}from"./helpers";export var DatePickerFieldTypeMonth=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeMonth:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeMonth:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=_objectWithoutProperties(a,_excluded),r=useRef(null),s=useMutableRef(i),t=useMutableRef(j),u=useState(o&&isValid(o)?format(o,d):null),v=_slicedToArray(u,2),w=v[0],x=v[1],y=useMutableRef(w),z=useMutableRef(o),A=useCallback(function(a){var b=a.e,c=a.value;if(y.current!==c){x(c);var e=s.current,g=z.current;if(e){if(!c)return void(g&&e({e:b,value:null}));var h=getPartsDate(c,d,f,!1,["MM","yyyy"]),i=_slicedToArray(h,2),j=i[0],k=i[1];if(j&&k){var o=parse("".concat(j).concat(datePickerPropSeparatorDefault).concat(k),datePickerPropFormatTypeMonth,new Date);if(!isWithinInterval(o,{start:l,end:n})){var m;return null===(m=t.current)||void 0===m?void 0:m.call(t,{type:datePickerErrorTypes[0],stringValue:c,MM:j,yyyy:k,date:o}),void(g&&e({e:b,value:null}))}e({e:b,value:o})}else g&&e({e:b,value:null})}}},[null===l||void 0===l?void 0:l.getTime(),null===n||void 0===n?void 0:n.getTime(),d,f]);return useImask(d,f,r,w,j,A),useEffect(function(){o&&isValid(o)?x(format(o,d)):(null===w||void 0===w?void 0:w.length)===d.length&&x("")},[null===o||void 0===o?void 0:o.getTime()]),React.createElement(TextField,Object.assign({},q,{onChange:A,type:"text",inputContainerRef:b,inputRef:useForkRef([r,p]),value:w,placeholder:h}))});
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef"];import React from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeMonth,datePickerPropPlaceholderTypeMonth,datePickerPropSeparatorDefault}from"../helpers";import{usePicker}from"./helpers";export var DatePickerFieldTypeMonth=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeMonth:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeMonth:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=_objectWithoutProperties(a,_excluded),r=usePicker({value:o,format:d,separator:f,minDate:l,maxDate:n,onChange:i,onError:j}),s=r.stringValue,t=r.inputRef;return React.createElement(TextField,Object.assign({},q,{type:"text",inputContainerRef:b,inputRef:useForkRef([t,p]),value:s,placeholder:h}))});
2
2
  //# sourceMappingURL=DatePickerFieldTypeMonth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerFieldTypeMonth.js","names":["format","isValid","isWithinInterval","parse","React","useCallback","useEffect","useRef","useState","useForkRef","useMutableRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","datePickerPropSeparatorDefault","getPartsDate","datePickerErrorTypes","useImask","DatePickerFieldTypeMonth","forwardRef","props","ref","formatProp","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","otherProps","onChangeRef","onErrorRef","stringValue","setStringValue","stringValueRef","valueRef","handleChange","e","current","MM","yyyy","date","Date","start","end","type","getTime","length"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.tsx"],"sourcesContent":["import { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField, TextFieldPropOnChange } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeMonth,\n datePickerPropPlaceholderTypeMonth,\n datePickerPropSeparatorDefault,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes } from '../types';\nimport { DatePickerFieldTypeMonthProps, useImask } from './helpers';\n\nexport const DatePickerFieldTypeMonth = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeMonthProps\n>((props, ref) => {\n const {\n format: formatProp = datePickerPropFormatTypeMonth,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeMonth,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n ...otherProps\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const onChangeRef = useMutableRef(onChange);\n const onErrorRef = useMutableRef(onError);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n\n const stringValueRef = useMutableRef(stringValue);\n const valueRef = useMutableRef(value);\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n\n const [MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n\n if (MM && yyyy) {\n const date = parse(\n `${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeMonth,\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n MM,\n yyyy,\n date,\n });\n\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n useImask(formatProp, separator, inputRef, stringValue, onError, handleChange);\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return (\n <TextField\n {...otherProps}\n onChange={handleChange as unknown as TextFieldPropOnChange}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerFieldTypeMonth.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeMonth","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","otherProps","stringValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeMonth,\n datePickerPropPlaceholderTypeMonth,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeMonthProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeMonth = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeMonthProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeMonth,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeMonth,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef } = usePicker({\n value,\n format,\n separator,\n minDate,\n maxDate,\n onChange,\n onError,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oMAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,6BADF,CAEEC,kCAFF,CAGEC,8BAHF,kBAKA,OAAwCC,SAAxC,iBAEA,MAAO,IAAMC,yBAAwB,CAAGT,KAAK,CAACU,UAAN,CAGtC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAYZD,CAZY,CAEdE,MAFc,CAEdA,CAFc,YAELR,6BAFK,KAYZM,CAZY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAYZI,CAZY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,kCAJA,GAKdU,CALc,CAYZL,CAZY,CAKdK,QALc,CAMdC,CANc,CAYZN,CAZY,CAMdM,OANc,GAYZN,CAZY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAYZQ,CAZY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAYZT,CAZY,CASdS,KATc,CAUJC,CAVI,CAYZV,CAZY,CAUdW,QAVc,CAWXC,CAXW,0BAYZZ,CAZY,cAckBH,SAAS,CAAC,CAC1CY,KAAK,CAALA,CAD0C,CAE1CP,MAAM,CAANA,CAF0C,CAG1CC,SAAS,CAATA,CAH0C,CAI1CI,OAAO,CAAPA,CAJ0C,CAK1CC,OAAO,CAAPA,CAL0C,CAM1CH,QAAQ,CAARA,CAN0C,CAO1CC,OAAO,CAAPA,CAP0C,CAAD,CAd3B,CAcRO,CAdQ,GAcRA,WAdQ,CAcKF,CAdL,GAcKA,QAdL,CAwBhB,MACE,qBAAC,SAAD,kBACMC,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,iBAAiB,CAAEX,CAHrB,CAIE,QAAQ,CAAEX,UAAU,CAAC,CAACqB,CAAD,CAAWD,CAAX,CAAD,CAJtB,CAKE,KAAK,CAAEG,CALT,CAME,WAAW,CAAET,CANf,GASH,CArCuC,CAAjC"}
@@ -43,8 +43,17 @@ export declare type DatePickerFieldTypeMonthProps = PropsWithHTMLAttributes<{
43
43
  labelPosition?: 'top' | 'left';
44
44
  withClearButton?: boolean;
45
45
  }, HTMLDivElement>;
46
- export declare const useImask: (formatProp: string, separator: string, inputRef: React.RefObject<HTMLInputElement>, stringValue: string | null, onError: DatePickerPropOnError | undefined, handleChanhe: (props: {
47
- e: Event;
48
- value: string | null;
49
- }) => void) => void;
46
+ declare type UsePickerProps = {
47
+ value?: Date | null;
48
+ onChange?: DatePickerFieldTypeMonthPropOnChange;
49
+ onError?: DatePickerPropOnError;
50
+ format: string;
51
+ separator: string;
52
+ minDate: Date;
53
+ maxDate: Date;
54
+ };
55
+ export declare const usePicker: (props: UsePickerProps) => {
56
+ stringValue: string | null;
57
+ inputRef: import("react").RefObject<HTMLInputElement>;
58
+ };
50
59
  export {};
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,parse as _parse}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useRef}from"react";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropFormatTypeMonth,datePickerPropSeparatorDefault,getPartsDate}from"../helpers";import{datePickerErrorTypes}from"../types";export var useImask=function(a,b,c,d,e,f){var g=useRef(null),h=useMutableRef(e),i=useMutableRef(f);useEffect(function(){c.current&&(g.current=IMask(c.current,{mask:Date,pattern:a,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12}},lazy:!0,autofix:!0,format:function format(b){return _format(b,a)},parse:function parse(b){return _parse(b,a,new Date)},validate:function validate(c){var d=getPartsDate(c,a,b,!1,["MM","yyyy"]),f=_slicedToArray(d,2),g=f[0],i=f[1];if(g&&i&&!isValid(_parse("".concat(g).concat(datePickerPropSeparatorDefault).concat(i),datePickerPropFormatTypeMonth,new Date))){var j;return e&&(null===(j=h.current)||void 0===j?void 0:j.call(h,{type:datePickerErrorTypes[1],stringValue:c,MM:g,yyyy:i})),!1}return!0}}))},[a,b]);var j=useCallback(function(a){var b;i.current({e:a,value:(null===(b=g.current)||void 0===b?void 0:b.value)||null})},[]);useEffect(function(){var a;return null===(a=g.current)||void 0===a?void 0:a.on("accept",j),function(){var a;null===(a=g.current)||void 0===a?void 0:a.off("accept",j)}},[]),useEffect(function(){var a;null===(a=g.current)||void 0===a?void 0:a.updateValue()},[d])};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useMemo,useState}from"react";import{useIMask}from"../../TextField";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropFormatTypeMonth,datePickerPropSeparatorDefault,getPartsDate}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=useMutableRef(c),k=useMutableRef(b),l=useMutableRef(d),m=useState(b&&isValid(b)?_format(b,f):null),n=_slicedToArray(m,2),o=n[0],p=n[1],q=useMutableRef(o),r=useCallback(function(a){var b=a.e,c=a.value;if(q.current!==c){p(c);var d=j.current,e=k.current;if(d){if(!c)return void(e&&d({e:b,value:null}));var m=getPartsDate(c,f,g,!1,["MM","yyyy"]),n=_slicedToArray(m,2),o=n[0],r=n[1];if(o&&r){var t=_parse("".concat(o).concat(datePickerPropSeparatorDefault).concat(r),datePickerPropFormatTypeMonth,new Date);if(!isWithinInterval(t,{start:i,end:h})){var s;return null===(s=l.current)||void 0===s?void 0:s.call(l,{type:datePickerErrorTypes[0],stringValue:c,MM:o,yyyy:r,date:t}),void(e&&d({e:b,value:null}))}d({e:b,value:t})}else e&&d({e:b,value:null})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),s=useMemo(function(){return{mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getPartsDate(a,f,g,!1,["MM","yyyy"]),c=_slicedToArray(b,2),e=c[0],h=c[1];if(e&&h&&!isValid(_parse("".concat(e).concat(datePickerPropSeparatorDefault).concat(h),datePickerPropFormatTypeMonth,new Date))){var i;return d&&(null===(i=l.current)||void 0===i?void 0:i.call(l,{type:datePickerErrorTypes[1],stringValue:a,MM:e,yyyy:h})),!1}return!0}}},[f,g]),t=useIMask({value:o,onChange:function(a,b){return null===r||void 0===r?void 0:r(b)},maskOptions:s}),u=t.inputRef;return useEffect(function(){b&&isValid(b)?p(_format(b,f)):(null===o||void 0===o?void 0:o.length)===f.length&&p("")},[null===b||void 0===b?void 0:b.getTime()]),{stringValue:o,inputRef:u}};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["format","isValid","parse","IMask","useCallback","useEffect","useRef","useMutableRef","datePickerPropFormatTypeMonth","datePickerPropSeparatorDefault","getPartsDate","datePickerErrorTypes","useImask","formatProp","separator","inputRef","stringValue","onError","handleChanhe","imaskRef","onErrorRef","handleChanheRef","current","mask","Date","pattern","blocks","yyyy","MaskedRange","from","to","MM","lazy","autofix","date","string","validate","type","onAcept","e","value","on","off","updateValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, parse } from 'date-fns';\nimport IMask from 'imask';\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeMonth,\n datePickerPropSeparatorDefault,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeMonthPropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeMonthProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeMonthPropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\nexport const useImask = (\n formatProp: string,\n separator: string,\n inputRef: React.RefObject<HTMLInputElement>,\n stringValue: string | null,\n onError: DatePickerPropOnError | undefined,\n handleChanhe: (props: { e: Event; value: string | null }) => void,\n) => {\n const imaskRef = useRef<IMask.InputMask<IMask.MaskedDateOptions> | null>(\n null,\n );\n const onErrorRef = useMutableRef(onError);\n const handleChanheRef = useMutableRef(handleChanhe);\n\n // задаем маску и сохраняем обьект маски в ref\n // обнавляем при смене формата\n useEffect(() => {\n if (inputRef.current) {\n imaskRef.current = IMask(inputRef.current, {\n mask: Date,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n },\n lazy: true,\n autofix: true,\n format: (date) => format(date, formatProp),\n parse: (string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n\n if (\n MM &&\n yyyy &&\n !isValid(\n parse(\n `${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeMonth,\n new Date(),\n ),\n )\n ) {\n onError &&\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n MM,\n yyyy,\n });\n\n return false;\n }\n\n return true;\n },\n // проблема в типах IMask\n }) as unknown as IMask.InputMask<IMask.MaskedDateOptions>;\n }\n }, [formatProp, separator]);\n\n // Нужно для синхранизации value c Imask,\n // так как value мы можем задать через пропс без самого ввода,\n // и Imask требует ручной синхронихации в этом случае\n const onAcept = useCallback((e: Event) => {\n handleChanheRef.current({ e, value: imaskRef.current?.value || null });\n }, []);\n\n useEffect(() => {\n imaskRef.current?.on('accept', onAcept);\n return () => {\n imaskRef.current?.off('accept', onAcept);\n };\n }, []);\n\n useEffect(() => {\n imaskRef.current?.updateValue();\n }, [stringValue]);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","IMask","useCallback","useEffect","useMemo","useState","useIMask","useMutableRef","datePickerPropFormatTypeMonth","datePickerPropSeparatorDefault","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","stringValue","setStringValue","stringValueRef","handleChange","e","current","MM","yyyy","date","Date","start","end","type","getTime","options","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","_val","params","maskOptions","inputRef","length"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport IMask from 'imask';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useIMask } from '##/components/TextField';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeMonth,\n datePickerPropSeparatorDefault,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeMonthPropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeMonthProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeMonthPropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeMonthPropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n const stringValueRef = useMutableRef(stringValue);\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n const [MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n if (MM && yyyy) {\n const date = parse(\n `${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeMonth,\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const options: IMask.InputMask<IMask.MaskedDateOptions> = useMemo(\n () =>\n ({\n mask: Date,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n if (\n MM &&\n yyyy &&\n !isValid(\n parse(\n `${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeMonth,\n new Date(),\n ),\n )\n ) {\n onError &&\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n MM,\n yyyy,\n });\n\n return false;\n }\n return true;\n },\n // проблема в типах IMask\n } as unknown as IMask.InputMask<IMask.MaskedDateOptions>),\n [formatProp, separator],\n );\n\n const { inputRef } = useIMask({\n value: stringValue,\n onChange: (_val, params) => handleChange?.(params),\n maskOptions: options,\n });\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return {\n stringValue,\n inputRef,\n };\n};\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare const DatePickerFieldTypeTime: React.ForwardRefExoticComponent<{
6
6
  e: Event;
7
7
  value: Date | null;
8
8
  }) => void) | undefined;
9
- onError?: import("../types").DatePickerPropOnError | undefined;
9
+ onError?: import("..").DatePickerPropOnError | undefined;
10
10
  id?: string | undefined;
11
11
  name?: string | undefined;
12
12
  disabled?: boolean | undefined;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes"];import{format,isValid,isWithinInterval,parse}from"date-fns";import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeTime,datePickerPropPlaceholderTypeTime,datePickerPropSeparatorDefault,getParts,getPartsDate}from"../helpers";import{datePickerErrorTypes}from"../types";import{useImask}from"./helpers";export var DatePickerFieldTypeTime=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeTime:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeTime:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=a.multiplicityHours,r=a.multiplicitySeconds,s=a.multiplicityMinutes,t=_objectWithoutProperties(a,_excluded),u=useRef(null),v=useMutableRef(i),w=useState(o&&isValid(o)?format(o,d):null),x=_slicedToArray(w,2),y=x[0],z=x[1],A=useMemo(function(){return getParts(d,":")},[d,f]),B=useMutableRef(y),C=useMutableRef(o),D=useMutableRef(j),E=useCallback(function(a){var b=a.e,c=a.value;if(B.current!==c){z(c);var e=v.current,f=C.current;if(e){if(!c)return void(f&&e({e:b,value:null}));var g=getPartsDate(c,d,":",!1,["HH","mm","ss"]),h=_slicedToArray(g,3),i=h[0],j=h[1],k=h[2];if(g.filter(function(a){return!!a}).length===A.length){var o=parse("".concat(i,":").concat(j,":").concat(k),datePickerPropFormatTypeTime,f||new Date);if(!isWithinInterval(o,{start:l,end:n})){var m;return null===(m=D.current)||void 0===m?void 0:m.call(D,{type:datePickerErrorTypes[0],stringValue:c,date:o,HH:i,mm:j,ss:k}),void(f&&e({e:b,value:null}))}e({e:b,value:o})}else f&&e({e:b,value:null})}}},[null===l||void 0===l?void 0:l.getTime(),null===n||void 0===n?void 0:n.getTime(),d,f]);return useImask(d,f,q,r,s,u,y,j,E),useEffect(function(){o&&isValid(o)?z(format(o,d)):(null===y||void 0===y?void 0:y.length)===d.length&&z("")},[null===o||void 0===o?void 0:o.getTime()]),React.createElement(TextField,Object.assign({},t,{onChange:E,type:"text",inputContainerRef:b,inputRef:useForkRef([u,p]),value:y,placeholder:h}))});
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes"];import React from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeTime,datePickerPropPlaceholderTypeTime,datePickerPropSeparatorDefault}from"../helpers";import{usePicker}from"./helpers";export var DatePickerFieldTypeTime=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeTime:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeTime:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=a.multiplicityHours,r=a.multiplicitySeconds,s=a.multiplicityMinutes,t=_objectWithoutProperties(a,_excluded),u=usePicker({value:o,onChange:i,onError:j,separator:f,format:d,minDate:l,maxDate:n,multiplicityHours:q,multiplicityMinutes:s,multiplicitySeconds:r}),v=u.stringValue,w=u.inputRef;return React.createElement(TextField,Object.assign({},t,{type:"text",inputContainerRef:b,inputRef:useForkRef([w,p]),value:v,placeholder:h}))});
2
2
  //# sourceMappingURL=DatePickerFieldTypeTime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerFieldTypeTime.js","names":["format","isValid","isWithinInterval","parse","React","useCallback","useEffect","useMemo","useRef","useState","useForkRef","useMutableRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropSeparatorDefault","getParts","getPartsDate","datePickerErrorTypes","useImask","DatePickerFieldTypeTime","forwardRef","props","ref","formatProp","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","otherProps","onChangeRef","stringValue","setStringValue","formatParts","stringValueRef","valueRef","onErrorRef","handleChange","e","current","partsTime","HH","mm","ss","filter","item","length","date","Date","start","end","type","getTime"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.tsx"],"sourcesContent":["import { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField, TextFieldPropOnChange } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeTime,\n datePickerPropPlaceholderTypeTime,\n datePickerPropSeparatorDefault,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes } from '../types';\nimport { DatePickerFieldTypeTimeProps, useImask } from './helpers';\n\nexport const DatePickerFieldTypeTime = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeTimeProps\n>((props, ref) => {\n const {\n format: formatProp = datePickerPropFormatTypeTime,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeTime,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ...otherProps\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const onChangeRef = useMutableRef(onChange);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n\n const formatParts = useMemo(\n () => getParts(formatProp, ':'),\n [formatProp, separator],\n );\n\n const stringValueRef = useMutableRef(stringValue);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n\n const partsTime = getPartsDate(stringValue, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n\n const [HH, mm, ss] = partsTime;\n\n if (partsTime.filter((item) => !!item).length === formatParts.length) {\n const date = parse(\n `${HH}:${mm}:${ss}`,\n datePickerPropFormatTypeTime,\n value || new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n useImask(\n formatProp,\n separator,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n inputRef,\n stringValue,\n onError,\n handleChange,\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return (\n <TextField\n {...otherProps}\n onChange={handleChange as unknown as TextFieldPropOnChange}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerFieldTypeTime.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeTime","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","otherProps","stringValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeTime,\n datePickerPropPlaceholderTypeTime,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeTimeProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeTime = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeTimeProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeTime,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeTime,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef } = usePicker({\n value,\n onChange,\n onError,\n separator,\n format,\n minDate,\n maxDate,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oQAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,4BADF,CAEEC,iCAFF,CAGEC,8BAHF,kBAKA,OAAuCC,SAAvC,iBAEA,MAAO,IAAMC,wBAAuB,CAAGT,KAAK,CAACU,UAAN,CAGrC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAeZD,CAfY,CAEdE,MAFc,CAEdA,CAFc,YAELR,4BAFK,KAeZM,CAfY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAeZI,CAfY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,iCAJA,GAKdU,CALc,CAeZL,CAfY,CAKdK,QALc,CAMdC,CANc,CAeZN,CAfY,CAMdM,OANc,GAeZN,CAfY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAeZQ,CAfY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAeZT,CAfY,CASdS,KATc,CAUJC,CAVI,CAeZV,CAfY,CAUdW,QAVc,CAWdC,CAXc,CAeZZ,CAfY,CAWdY,iBAXc,CAYdC,CAZc,CAeZb,CAfY,CAYda,mBAZc,CAadC,CAbc,CAeZd,CAfY,CAadc,mBAbc,CAcXC,CAdW,0BAeZf,CAfY,cAiBkBH,SAAS,CAAC,CAC1CY,KAAK,CAALA,CAD0C,CAE1CJ,QAAQ,CAARA,CAF0C,CAG1CC,OAAO,CAAPA,CAH0C,CAI1CH,SAAS,CAATA,CAJ0C,CAK1CD,MAAM,CAANA,CAL0C,CAM1CK,OAAO,CAAPA,CAN0C,CAO1CC,OAAO,CAAPA,CAP0C,CAQ1CI,iBAAiB,CAAjBA,CAR0C,CAS1CE,mBAAmB,CAAnBA,CAT0C,CAU1CD,mBAAmB,CAAnBA,CAV0C,CAAD,CAjB3B,CAiBRG,CAjBQ,GAiBRA,WAjBQ,CAiBKL,CAjBL,GAiBKA,QAjBL,CA8BhB,MACE,qBAAC,SAAD,kBACMI,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,iBAAiB,CAAEd,CAHrB,CAIE,QAAQ,CAAEX,UAAU,CAAC,CAACqB,CAAD,CAAWD,CAAX,CAAD,CAJtB,CAKE,KAAK,CAAEM,CALT,CAME,WAAW,CAAEZ,CANf,GASH,CA3CsC,CAAhC"}
@@ -46,8 +46,20 @@ export declare type DatePickerFieldTypeTimeProps = PropsWithHTMLAttributes<{
46
46
  labelPosition?: 'top' | 'left';
47
47
  withClearButton?: boolean;
48
48
  }, HTMLDivElement>;
49
- export declare const useImask: (formatProp: string, separator: string, multiplicityHours: number | undefined, multiplicitySeconds: number | undefined, multiplicityMinutes: number | undefined, inputRef: React.RefObject<HTMLInputElement>, stringValue: string | null, onError: DatePickerPropOnError | undefined, handleChanhe: (props: {
50
- e: Event;
51
- value: string | null;
52
- }) => void) => void;
49
+ declare type UsePickerProps = {
50
+ value?: Date | null;
51
+ onChange?: DatePickerFieldTypeTimePropOnChange;
52
+ onError?: DatePickerPropOnError;
53
+ multiplicityHours: number | undefined;
54
+ multiplicitySeconds: number | undefined;
55
+ multiplicityMinutes: number | undefined;
56
+ format: string;
57
+ separator: string;
58
+ minDate: Date;
59
+ maxDate: Date;
60
+ };
61
+ export declare const usePicker: (props: UsePickerProps) => {
62
+ stringValue: string | null;
63
+ inputRef: React.RefObject<HTMLInputElement>;
64
+ };
53
65
  export {};
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useRef}from"react";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{datePickerPropFormatTypeTime,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var useImask=function(a,b,c,d,e,f,g,h,i){var j=useRef(null),k=useMutableRef(h),l=useMutableRef(i);useEffect(function(){f.current&&(j.current=IMask(f.current,{mask:Date,pattern:a,blocks:{HH:c&&1<c?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,c,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:e&&1<e?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,e,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:d&&1<d?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,d,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(b){return _format(b,a)},parse:function parse(b){return _parse(b,a,new Date)},validate:function validate(b){var c=getPartsDate(b,a,":",!1,["HH","mm","ss"]),d=_slicedToArray(c,3),e=d[0],f=d[1],g=d[2];if(e&&f&&g&&!isValid(_parse("".concat(e,":").concat(f,":").concat(g),datePickerPropFormatTypeTime,new Date))){var h;return null===(h=k.current)||void 0===h?void 0:h.call(k,{type:datePickerErrorTypes[1],stringValue:b,HH:e,mm:f,ss:g}),!1}return!0}}))},[a,b,c,d,e]);var m=useCallback(function(a){var b;l.current({e:a,value:(null===(b=j.current)||void 0===b?void 0:b.value)||null})},[]);useEffect(function(){var a;return null===(a=j.current)||void 0===a?void 0:a.on("accept",m),function(){var a;null===(a=j.current)||void 0===a?void 0:a.off("accept",m)}},[]),useEffect(function(){var a;null===(a=j.current)||void 0===a?void 0:a.updateValue()},[g])};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,isWithinInterval,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useMemo,useState}from"react";import{useIMask}from"../../TextField";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{datePickerPropFormatTypeTime,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,e=a.multiplicityHours,f=a.multiplicityMinutes,g=a.multiplicitySeconds,h=a.format,i=a.separator,j=a.maxDate,k=a.minDate,l=useMutableRef(c),m=useMutableRef(b),n=useMutableRef(d),o=useState(b&&isValid(b)?_format(b,h):null),p=_slicedToArray(o,2),q=p[0],r=p[1],s=useMutableRef(q),t=useMemo(function(){return getParts(h,":")},[h,i]),u=useCallback(function(a){var b=a.e,c=a.value;if(s.current!==c){r(c);var d=l.current,e=m.current;if(d){if(!c)return void(e&&d({e:b,value:null}));var f=getPartsDate(c,h,":",!1,["HH","mm","ss"]),g=_slicedToArray(f,3),i=g[0],o=g[1],p=g[2];if(f.filter(function(a){return!!a}).length===t.length){var u=_parse("".concat(i,":").concat(o,":").concat(p),datePickerPropFormatTypeTime,e||new Date);if(!isWithinInterval(u,{start:k,end:j})){var q;return null===(q=n.current)||void 0===q?void 0:q.call(n,{type:datePickerErrorTypes[0],stringValue:c,date:u,HH:i,mm:o,ss:p}),void(e&&d({e:b,value:null}))}d({e:b,value:u})}else e&&d({e:b,value:null})}}},[null===k||void 0===k?void 0:k.getTime(),null===j||void 0===j?void 0:j.getTime(),h,i]),v=useMemo(function(){return{mask:Date,pattern:h,blocks:{HH:e&&1<e?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,e,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:f&&1<f?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,f,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:g&&1<g?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,g,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,h)},parse:function parse(a){return _parse(a,h,new Date)},validate:function validate(a){var b=getPartsDate(a,h,":",!1,["HH","mm","ss"]),c=_slicedToArray(b,3),d=c[0],e=c[1],f=c[2];if(d&&e&&f&&!isValid(_parse("".concat(d,":").concat(e,":").concat(f),datePickerPropFormatTypeTime,new Date))){var g;return null===(g=n.current)||void 0===g?void 0:g.call(n,{type:datePickerErrorTypes[1],stringValue:a,HH:d,mm:e,ss:f}),!1}return!0}}},[h,i,e,f,g]),w=useIMask({value:q,onChange:function(a,b){return null===u||void 0===u?void 0:u(b)},maskOptions:v}),x=w.inputRef;return useEffect(function(){b&&isValid(b)?r(_format(b,h)):(null===q||void 0===q?void 0:q.length)===h.length&&r("")},[null===b||void 0===b?void 0:b.getTime()]),{stringValue:q,inputRef:x}};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","parse","startOfDay","startOfHour","startOfMinute","IMask","useCallback","useEffect","useRef","useMutableRef","getLabelHours","getLabelMinutes","getLabelSeconds","datePickerPropFormatTypeTime","getPartsDate","getTimeEnum","datePickerErrorTypes","useImask","formatProp","separator","multiplicityHours","multiplicitySeconds","multiplicityMinutes","inputRef","stringValue","onError","handleChanhe","imaskRef","onErrorRef","handleChanheRef","current","mask","Date","pattern","blocks","HH","MaskedEnum","MaskedRange","from","to","mm","ss","lazy","autofix","date","string","validate","type","onAcept","e","value","on","off","updateValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport IMask from 'imask';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '../../DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeTime,\n getPartsDate,\n getTimeEnum,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeTimePropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\nexport const useImask = (\n formatProp: string,\n separator: string,\n multiplicityHours: number | undefined,\n multiplicitySeconds: number | undefined,\n multiplicityMinutes: number | undefined,\n inputRef: React.RefObject<HTMLInputElement>,\n stringValue: string | null,\n onError: DatePickerPropOnError | undefined,\n handleChanhe: (props: { e: Event; value: string | null }) => void,\n) => {\n const imaskRef = useRef<IMask.InputMask<IMask.MaskedDateOptions> | null>(\n null,\n );\n const onErrorRef = useMutableRef(onError);\n const handleChanheRef = useMutableRef(handleChanhe);\n\n // задаем маску и сохраняем обьект маски в ref\n // обнавляем при смене формата\n useEffect(() => {\n if (!inputRef.current) {\n return;\n }\n\n imaskRef.current = IMask(inputRef.current, {\n mask: Date,\n pattern: formatProp,\n blocks: {\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date) => format(date, formatProp),\n parse: (string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [HH, mm, ss] = getPartsDate(string, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n\n if (\n HH &&\n mm &&\n ss &&\n !isValid(\n parse(\n `${HH}:${mm}:${ss}`,\n datePickerPropFormatTypeTime,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n HH,\n mm,\n ss,\n });\n\n return false;\n }\n\n return true;\n },\n // проблема в типах IMask\n }) as unknown as IMask.InputMask<IMask.MaskedDateOptions>;\n }, [\n formatProp,\n separator,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ]);\n\n // Нужно для синхранизации value c Imask,\n // так как value мы можем задать через пропс без самого ввода,\n // и Imask требует ручной синхронихации в этом случае\n const onAcept = useCallback((e: Event) => {\n handleChanheRef.current({ e, value: imaskRef.current?.value || null });\n }, []);\n\n useEffect(() => {\n imaskRef.current?.on('accept', onAcept);\n return () => {\n imaskRef.current?.off('accept', onAcept);\n };\n }, []);\n\n useEffect(() => {\n imaskRef.current?.updateValue();\n }, [stringValue]);\n};\n"],"mappings":"iEACA,OACEA,QADF,CAEEC,UAFF,CAGEC,UAHF,CAIEC,MAAM,GAANA,QAJF,CAKEC,OALF,CAMEC,KAAK,GAALA,OANF,CAOEC,UAPF,CAQEC,WARF,CASEC,aATF,KAUO,UAVP,CAWA,MAAOC,MAAP,KAAkB,OAAlB,CACA,OAAgBC,WAAhB,CAA6BC,SAA7B,CAAwCC,MAAxC,KAAsD,OAAtD,CAEA,OAASC,aAAT,kDAEA,OACEC,aADF,CAEEC,eAFF,CAGEC,eAHF,8BAYA,OACEC,4BADF,CAEEC,YAFF,CAGEC,WAHF,kBAKA,OAASC,oBAAT,gBAkDA,MAAO,IAAMC,SAAQ,CAAG,SACtBC,CADsB,CAEtBC,CAFsB,CAGtBC,CAHsB,CAItBC,CAJsB,CAKtBC,CALsB,CAMtBC,CANsB,CAOtBC,CAPsB,CAQtBC,CARsB,CAStBC,CATsB,CAUnB,IACGC,EAAQ,CAAGnB,MAAM,CACrB,IADqB,CADpB,CAIGoB,CAAU,CAAGnB,aAAa,CAACgB,CAAD,CAJ7B,CAKGI,CAAe,CAAGpB,aAAa,CAACiB,CAAD,CALlC,CASHnB,SAAS,CAAC,UAAM,CACTgB,CAAQ,CAACO,OADA,GAKdH,CAAQ,CAACG,OAAT,CAAmBzB,KAAK,CAACkB,CAAQ,CAACO,OAAV,CAAmB,CACzCC,IAAI,CAAEC,IADmC,CAEzCC,OAAO,CAAEf,CAFgC,CAGzCgB,MAAM,CAAE,CACNC,EAAE,CACAf,CAAiB,EAAwB,CAApB,CAAAA,CAArB,CACI,CACEW,IAAI,CAAE1B,KAAK,CAAC+B,UADd,CAEE,KAAMrB,WAAW,CACf,EADe,CAEfK,CAFe,CAGflB,UAHe,CAIfN,QAJe,CAKfc,aALe,CAFnB,CADJ,CAWI,CACEqB,IAAI,CAAE1B,KAAK,CAACgC,WADd,CAEEC,IAAI,CAAE,CAFR,CAGEC,EAAE,CAAE,EAHN,CAbA,CAkBNC,EAAE,CACAlB,CAAmB,EAA0B,CAAtB,CAAAA,CAAvB,CACI,CACES,IAAI,CAAE1B,KAAK,CAAC+B,UADd,CAEE,KAAMrB,WAAW,CACf,EADe,CAEfO,CAFe,CAGfnB,WAHe,CAIfN,UAJe,CAKfc,eALe,CAFnB,CADJ,CAWI,CACEoB,IAAI,CAAE1B,KAAK,CAACgC,WADd,CAEEC,IAAI,CAAE,CAFR,CAGEC,EAAE,CAAE,EAHN,CA9BA,CAmCNE,EAAE,CACApB,CAAmB,EAA0B,CAAtB,CAAAA,CAAvB,CACI,CACEU,IAAI,CAAE1B,KAAK,CAAC+B,UADd,CAEE,KAAMrB,WAAW,CACf,EADe,CAEfM,CAFe,CAGfjB,aAHe,CAIfN,UAJe,CAKfc,eALe,CAFnB,CADJ,CAWI,CACEmB,IAAI,CAAE1B,KAAK,CAACgC,WADd,CAEEC,IAAI,CAAE,CAFR,CAGEC,EAAE,CAAE,EAHN,CA/CA,CAHiC,CAwDzCG,IAAI,GAxDqC,CAyDzCC,OAAO,GAzDkC,CA0DzC5C,MAAM,CAAE,gBAAC6C,CAAD,QAAU7C,QAAM,CAAC6C,CAAD,CAAO1B,CAAP,CAAhB,CA1DiC,CA2DzCjB,KAAK,CAAE,eAAC4C,CAAD,QAAY5C,OAAK,CAAC4C,CAAD,CAAS3B,CAAT,CAAqB,GAAIc,KAAzB,CAAjB,CA3DkC,CA4DzCc,QAAQ,CAAE,kBAACD,CAAD,CAAoB,CAC5B,MAAqB/B,YAAY,CAAC+B,CAAD,CAAS3B,CAAT,CAAqB,GAArB,IAAiC,CAChE,IADgE,CAEhE,IAFgE,CAGhE,IAHgE,CAAjC,CAAjC,uBAAOiB,CAAP,MAAWK,CAAX,MAAeC,CAAf,MAMA,GACEN,CAAE,EACFK,CADA,EAEAC,CAFA,EAGA,CAACzC,OAAO,CACNC,MAAK,WACAkC,CADA,aACMK,CADN,aACYC,CADZ,EAEH5B,4BAFG,CAGH,GAAImB,KAHD,CADC,CAJV,CAWE,OASA,iBARAJ,CAAU,CAACE,OAQX,qBARA,OAAAF,CAAU,CAAW,CACnBmB,IAAI,CAAE/B,oBAAoB,CAAC,CAAD,CADP,CAEnBQ,WAAW,CAAEqB,CAFM,CAGnBV,EAAE,CAAFA,CAHmB,CAInBK,EAAE,CAAFA,CAJmB,CAKnBC,EAAE,CAAFA,CALmB,CAAX,CAQV,GACD,CAED,QACD,CA3FwC,CAAnB,CALV,CAmGf,CAnGQ,CAmGN,CACDvB,CADC,CAEDC,CAFC,CAGDC,CAHC,CAIDC,CAJC,CAKDC,CALC,CAnGM,CATN,CAuHH,GAAM0B,EAAO,CAAG1C,WAAW,CAAC,SAAC2C,CAAD,CAAc,OACxCpB,CAAe,CAACC,OAAhB,CAAwB,CAAEmB,CAAC,CAADA,CAAF,CAAKC,KAAK,CAAE,WAAAvB,CAAQ,CAACG,OAAT,uBAAkBoB,KAAlB,GAA2B,IAAvC,CAAxB,CACD,CAF0B,CAExB,EAFwB,CAA3B,CAIA3C,SAAS,CAAC,UAAM,OAEd,iBADAoB,CAAQ,CAACG,OACT,qBADA,EAAkBqB,EAAlB,CAAqB,QAArB,CAA+BH,CAA/B,CACA,CAAO,UAAM,iBACXrB,CAAQ,CAACG,OADE,qBACX,EAAkBsB,GAAlB,CAAsB,QAAtB,CAAgCJ,CAAhC,CACD,CACF,CALQ,CAKN,EALM,CA3HN,CAkIHzC,SAAS,CAAC,UAAM,iBACdoB,CAAQ,CAACG,OADK,qBACd,EAAkBuB,WAAlB,EACD,CAFQ,CAEN,CAAC7B,CAAD,CAFM,CAGV,CA/IM"}
1
+ {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","IMask","useCallback","useEffect","useMemo","useState","useIMask","useMutableRef","getLabelHours","getLabelMinutes","getLabelSeconds","datePickerPropFormatTypeTime","getParts","getPartsDate","getTimeEnum","datePickerErrorTypes","usePicker","props","value","onChange","onError","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","stringValue","setStringValue","stringValueRef","formatParts","handleChange","e","current","partsTime","HH","mm","ss","filter","item","length","date","Date","start","end","type","getTime","options","mask","pattern","blocks","MaskedEnum","MaskedRange","from","to","lazy","autofix","string","validate","_val","params","maskOptions","inputRef"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n isWithinInterval,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport IMask from 'imask';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useIMask } from '##/components/TextField';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '../../DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeTime,\n getParts,\n getPartsDate,\n getTimeEnum,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeTimePropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeTimePropOnChange;\n onError?: DatePickerPropOnError;\n multiplicityHours: number | undefined;\n multiplicitySeconds: number | undefined;\n multiplicityMinutes: number | undefined;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n const stringValueRef = useMutableRef(stringValue);\n\n const formatParts = useMemo(\n () => getParts(formatProp, ':'),\n [formatProp, separator],\n );\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n const partsTime = getPartsDate(stringValue, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n\n const [HH, mm, ss] = partsTime;\n if (partsTime.filter((item) => !!item).length === formatParts.length) {\n const date = parse(\n `${HH}:${mm}:${ss}`,\n datePickerPropFormatTypeTime,\n value || new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const options: IMask.InputMask<IMask.MaskedDateOptions> = useMemo(\n () =>\n ({\n mask: Date,\n pattern: formatProp,\n blocks: {\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [HH, mm, ss] = getPartsDate(string, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n if (\n HH &&\n mm &&\n ss &&\n !isValid(\n parse(\n `${HH}:${mm}:${ss}`,\n datePickerPropFormatTypeTime,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n HH,\n mm,\n ss,\n });\n return false;\n }\n return true;\n },\n // проблема в типах IMask\n } as unknown as IMask.InputMask<IMask.MaskedDateOptions>),\n [\n formatProp,\n separator,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n ],\n );\n\n const { inputRef } = useIMask({\n value: stringValue,\n onChange: (_val, params) => handleChange?.(params),\n maskOptions: options,\n });\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return {\n stringValue,\n inputRef,\n };\n};\n"],"mappings":"iEACA,OACEA,QADF,CAEEC,UAFF,CAGEC,UAHF,CAIEC,MAAM,GAANA,QAJF,CAKEC,OALF,CAMEC,gBANF,CAOEC,KAAK,GAALA,OAPF,CAQEC,UARF,CASEC,WATF,CAUEC,aAVF,KAWO,UAXP,CAYA,MAAOC,MAAP,KAAkB,OAAlB,CACA,OAAgBC,WAAhB,CAA6BC,SAA7B,CAAwCC,OAAxC,CAAiDC,QAAjD,KAAiE,OAAjE,CAEA,OAASC,QAAT,uBAEA,OAASC,aAAT,kDAEA,OACEC,aADF,CAEEC,eAFF,CAGEC,eAHF,8BAYA,OACEC,4BADF,CAEEC,QAFF,CAGEC,YAHF,CAIEC,WAJF,kBAMA,OAASC,oBAAT,gBA+DA,MAAO,IAAMC,UAAS,CAAG,SAACC,CAAD,CAA2B,IAEhDC,EAFgD,CAY9CD,CAZ8C,CAEhDC,KAFgD,CAGhDC,CAHgD,CAY9CF,CAZ8C,CAGhDE,QAHgD,CAIhDC,CAJgD,CAY9CH,CAZ8C,CAIhDG,OAJgD,CAKhDC,CALgD,CAY9CJ,CAZ8C,CAKhDI,iBALgD,CAMhDC,CANgD,CAY9CL,CAZ8C,CAMhDK,mBANgD,CAOhDC,CAPgD,CAY9CN,CAZ8C,CAOhDM,mBAPgD,CAQxCC,CARwC,CAY9CP,CAZ8C,CAQhDvB,MARgD,CAShD+B,CATgD,CAY9CR,CAZ8C,CAShDQ,SATgD,CAUhDC,CAVgD,CAY9CT,CAZ8C,CAUhDS,OAVgD,CAWhDC,CAXgD,CAY9CV,CAZ8C,CAWhDU,OAXgD,CAa5CC,CAAW,CAAGrB,aAAa,CAACY,CAAD,CAbiB,CAc5CU,CAAQ,CAAGtB,aAAa,CAACW,CAAD,CAdoB,CAe5CY,CAAU,CAAGvB,aAAa,CAACa,CAAD,CAfkB,GAiBZf,QAAQ,CAC5Ca,CAAK,EAAIvB,OAAO,CAACuB,CAAD,CAAhB,CAA0BxB,OAAM,CAACwB,CAAD,CAAQM,CAAR,CAAhC,CAAsD,IADV,CAjBI,uBAiB3CO,CAjB2C,MAiB9BC,CAjB8B,MAoB5CC,CAAc,CAAG1B,aAAa,CAACwB,CAAD,CApBc,CAsB5CG,CAAW,CAAG9B,OAAO,CACzB,iBAAMQ,SAAQ,CAACY,CAAD,CAAa,GAAb,CAAd,CADyB,CAEzB,CAACA,CAAD,CAAaC,CAAb,CAFyB,CAtBuB,CA2B5CU,CAAY,CAAGjC,WAAW,CAC9B,WAAmE,IAAhEkC,EAAgE,GAAhEA,CAAgE,CAAtDL,CAAsD,GAA7Db,KAA6D,CACjE,GAAIe,CAAc,CAACI,OAAf,GAA2BN,CAA/B,EAGAC,CAAc,CAACD,CAAD,CAHd,IAIMZ,EAAQ,CAAGS,CAAW,CAACS,OAJ7B,CAKMnB,CAAK,CAAGW,CAAQ,CAACQ,OALvB,CAMA,GAAIlB,CAAJ,CAAc,CACZ,GAAI,CAACY,CAAL,CAIE,YAHIb,CAGJ,EAFEC,CAAQ,CAAC,CAAEiB,CAAC,CAADA,CAAF,CAAKlB,KAAK,CAAE,IAAZ,CAAD,CAEV,EALU,GAONoB,EAAS,CAAGzB,YAAY,CAACkB,CAAD,CAAcP,CAAd,CAA0B,GAA1B,IAAsC,CAClE,IADkE,CAElE,IAFkE,CAGlE,IAHkE,CAAtC,CAPlB,kBAaSc,CAbT,IAaLC,CAbK,MAaDC,CAbC,MAaGC,CAbH,MAcZ,GAAIH,CAAS,CAACI,MAAV,CAAiB,SAACC,CAAD,QAAU,CAAC,CAACA,CAAZ,CAAjB,EAAmCC,MAAnC,GAA8CV,CAAW,CAACU,MAA9D,CAAsE,CACpE,GAAMC,EAAI,CAAGhD,MAAK,WACb0C,CADa,aACPC,CADO,aACDC,CADC,EAEhB9B,4BAFgB,CAGhBO,CAAK,EAAI,GAAI4B,KAHG,CAAlB,CAKA,GAAI,CAAClD,gBAAgB,CAACiD,CAAD,CAAO,CAAEE,KAAK,CAAEpB,CAAT,CAAkBqB,GAAG,CAAEtB,CAAvB,CAAP,CAArB,CAA+D,OAa7D,iBAZAI,CAAU,CAACO,OAYX,qBAZA,OAAAP,CAAU,CAAW,CACnBmB,IAAI,CAAElC,oBAAoB,CAAC,CAAD,CADP,CAEnBgB,WAAW,CAAXA,CAFmB,CAGnBc,IAAI,CAAJA,CAHmB,CAInBN,EAAE,CAAFA,CAJmB,CAKnBC,EAAE,CAAFA,CALmB,CAMnBC,EAAE,CAAFA,CANmB,CAAX,CAYV,MAHIvB,CAGJ,EAFEC,CAAQ,CAAC,CAAEiB,CAAC,CAADA,CAAF,CAAKlB,KAAK,CAAE,IAAZ,CAAD,CAEV,CACD,CACDC,CAAQ,CAAC,CAAEiB,CAAC,CAADA,CAAF,CAAKlB,KAAK,CAAE2B,CAAZ,CAAD,CACT,CAtBD,IAsBW3B,EAtBX,EAuBEC,CAAQ,CAAC,CAAEiB,CAAC,CAADA,CAAF,CAAKlB,KAAK,CAAE,IAAZ,CAAD,CAEX,CA7CD,CA8CD,CAhD6B,CAiD9B,QAACS,CAAD,WAACA,CAAD,QAACA,CAAO,CAAEuB,OAAT,EAAD,QAAqBxB,CAArB,WAAqBA,CAArB,QAAqBA,CAAO,CAAEwB,OAAT,EAArB,CAAyC1B,CAAzC,CAAqDC,CAArD,CAjD8B,CA3BkB,CA+E5C0B,CAAiD,CAAG/C,OAAO,CAC/D,iBACG,CACCgD,IAAI,CAAEN,IADP,CAECO,OAAO,CAAE7B,CAFV,CAGC8B,MAAM,CAAE,CACNf,EAAE,CACAlB,CAAiB,EAAwB,CAApB,CAAAA,CAArB,CACI,CACE+B,IAAI,CAAEnD,KAAK,CAACsD,UADd,CAEE,KAAMzC,WAAW,CACf,EADe,CAEfO,CAFe,CAGfvB,UAHe,CAIfP,QAJe,CAKfiB,aALe,CAFnB,CADJ,CAWI,CACE4C,IAAI,CAAEnD,KAAK,CAACuD,WADd,CAEEC,IAAI,CAAE,CAFR,CAGEC,EAAE,CAAE,EAHN,CAbA,CAkBNlB,EAAE,CACAlB,CAAmB,EAA0B,CAAtB,CAAAA,CAAvB,CACI,CACE8B,IAAI,CAAEnD,KAAK,CAACsD,UADd,CAEE,KAAMzC,WAAW,CACf,EADe,CAEfQ,CAFe,CAGfvB,WAHe,CAIfP,UAJe,CAKfiB,eALe,CAFnB,CADJ,CAWI,CACE2C,IAAI,CAAEnD,KAAK,CAACuD,WADd,CAEEC,IAAI,CAAE,CAFR,CAGEC,EAAE,CAAE,EAHN,CA9BA,CAmCNjB,EAAE,CACAlB,CAAmB,EAA0B,CAAtB,CAAAA,CAAvB,CACI,CACE6B,IAAI,CAAEnD,KAAK,CAACsD,UADd,CAEE,KAAMzC,WAAW,CACf,EADe,CAEfS,CAFe,CAGfvB,aAHe,CAIfP,UAJe,CAKfiB,eALe,CAFnB,CADJ,CAWI,CACE0C,IAAI,CAAEnD,KAAK,CAACuD,WADd,CAEEC,IAAI,CAAE,CAFR,CAGEC,EAAE,CAAE,EAHN,CA/CA,CAHT,CAwDCC,IAAI,GAxDL,CAyDCC,OAAO,GAzDR,CA0DClE,MAAM,CAAE,gBAACmD,CAAD,QAAgBnD,QAAM,CAACmD,CAAD,CAAOrB,CAAP,CAAtB,CA1DT,CA2DC3B,KAAK,CAAE,eAACgE,CAAD,QAAoBhE,OAAK,CAACgE,CAAD,CAASrC,CAAT,CAAqB,GAAIsB,KAAzB,CAAzB,CA3DR,CA4DCgB,QAAQ,CAAE,kBAACD,CAAD,CAAoB,CAC5B,MAAqBhD,YAAY,CAACgD,CAAD,CAASrC,CAAT,CAAqB,GAArB,IAAiC,CAChE,IADgE,CAEhE,IAFgE,CAGhE,IAHgE,CAAjC,CAAjC,uBAAOe,CAAP,MAAWC,CAAX,MAAeC,CAAf,MAKA,GACEF,CAAE,EACFC,CADA,EAEAC,CAFA,EAGA,CAAC9C,OAAO,CACNE,MAAK,WACA0C,CADA,aACMC,CADN,aACYC,CADZ,EAEH9B,4BAFG,CAGH,GAAImC,KAHD,CADC,CAJV,CAWE,OAQA,iBAPAhB,CAAU,CAACO,OAOX,qBAPA,OAAAP,CAAU,CAAW,CACnBmB,IAAI,CAAElC,oBAAoB,CAAC,CAAD,CADP,CAEnBgB,WAAW,CAAE8B,CAFM,CAGnBtB,EAAE,CAAFA,CAHmB,CAInBC,EAAE,CAAFA,CAJmB,CAKnBC,EAAE,CAAFA,CALmB,CAAX,CAOV,GACD,CACD,QACD,CAxFF,CADH,CAD+D,CA6F/D,CACEjB,CADF,CAEEC,CAFF,CAGEJ,CAHF,CAIEC,CAJF,CAKEC,CALF,CA7F+D,CA/Ef,GAqL7BjB,QAAQ,CAAC,CAC5BY,KAAK,CAAEa,CADqB,CAE5BZ,QAAQ,CAAE,SAAC4C,CAAD,CAAOC,CAAP,gBAAkB7B,CAAlB,WAAkBA,CAAlB,QAAkBA,CAAY,CAAG6B,CAAH,CAA9B,CAFkB,CAG5BC,WAAW,CAAEd,CAHe,CAAD,CArLqB,CAqL1Ce,CArL0C,GAqL1CA,QArL0C,CAwMlD,MAZA/D,UAAS,CAAC,UAAM,CACVe,CAAK,EAAIvB,OAAO,CAACuB,CAAD,CADN,CAEZc,CAAc,CAACtC,OAAM,CAACwB,CAAD,CAAQM,CAAR,CAAP,CAFF,CAGH,QAAAO,CAAW,WAAXA,CAAA,QAAAA,CAAW,CAAEa,MAAb,IAAwBpB,CAAU,CAACoB,MAHhC,EAQZZ,CAAc,CAAC,EAAD,CAEjB,CAVQ,CAUN,QAACd,CAAD,WAACA,CAAD,QAACA,CAAK,CAAEgC,OAAP,EAAD,CAVM,CAYT,CAAO,CACLnB,WAAW,CAAXA,CADK,CAELmC,QAAQ,CAARA,CAFK,CAIR,CA5MM"}
@@ -6,7 +6,7 @@ export declare const DatePickerFieldTypeYear: React.ForwardRefExoticComponent<{
6
6
  e: Event;
7
7
  value: Date | null;
8
8
  }) => void) | undefined;
9
- onError?: import("../types").DatePickerPropOnError | undefined;
9
+ onError?: import("..").DatePickerPropOnError | undefined;
10
10
  id?: string | undefined;
11
11
  name?: string | undefined;
12
12
  disabled?: boolean | undefined;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef"];import{format,isValid,isWithinInterval,parse}from"date-fns";import React,{useCallback,useEffect,useRef,useState}from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeYear,datePickerPropPlaceholderTypeYear,datePickerPropSeparatorDefault,getPartsDate}from"../helpers";import{datePickerErrorTypes}from"../types";import{useImask}from"./helpers";export var DatePickerFieldTypeYear=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeYear:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeYear:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=_objectWithoutProperties(a,_excluded),r=useRef(null),s=useMutableRef(i),t=useState(o&&isValid(o)?format(o,d):null),u=_slicedToArray(t,2),v=u[0],w=u[1],x=useMutableRef(v),y=useMutableRef(o),z=useMutableRef(j),A=useCallback(function(a){var b=a.e,c=a.value;if(x.current!==c){w(c);var e=s.current,g=y.current;if(e){if(!c)return void(g&&e({e:b,value:null}));var h=getPartsDate(c,d,f,!1,["yyyy"]),i=_slicedToArray(h,1),j=i[0];if(j){var m=parse("".concat(j),datePickerPropFormatTypeYear,new Date);if(!isWithinInterval(m,{start:l,end:n})){var k;return null===(k=z.current)||void 0===k?void 0:k.call(z,{type:datePickerErrorTypes[0],stringValue:c,yyyy:j,date:m}),void(g&&e({e:b,value:null}))}e({e:b,value:m})}else g&&e({e:b,value:null})}}},[null===l||void 0===l?void 0:l.getTime(),null===n||void 0===n?void 0:n.getTime(),d,f]);return useImask(d,f,r,v,j),useEffect(function(){o&&isValid(o)?w(format(o,d)):(null===v||void 0===v?void 0:v.length)===d.length&&w("")},[null===o||void 0===o?void 0:o.getTime()]),React.createElement(TextField,Object.assign({},q,{type:"text",onChange:A,inputContainerRef:b,inputRef:useForkRef([r,p]),value:v,placeholder:h}))});
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef"];import React from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeYear,datePickerPropPlaceholderTypeYear,datePickerPropSeparatorDefault}from"../helpers";import{usePicker}from"./helpers";export var DatePickerFieldTypeYear=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeYear:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeYear:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=_objectWithoutProperties(a,_excluded),r=usePicker({value:o,minDate:l,maxDate:n,onChange:i,onError:j,separator:f,format:d}),s=r.stringValue,t=r.inputRef;return React.createElement(TextField,Object.assign({},q,{type:"text",inputContainerRef:b,inputRef:useForkRef([t,p]),value:s,placeholder:h}))});
2
2
  //# sourceMappingURL=DatePickerFieldTypeYear.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerFieldTypeYear.js","names":["format","isValid","isWithinInterval","parse","React","useCallback","useEffect","useRef","useState","useForkRef","useMutableRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropSeparatorDefault","getPartsDate","datePickerErrorTypes","useImask","DatePickerFieldTypeYear","forwardRef","props","ref","formatProp","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","otherProps","onChangeRef","stringValue","setStringValue","stringValueRef","valueRef","onErrorRef","handleChange","e","current","yyyy","date","Date","start","end","type","getTime","length"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.tsx"],"sourcesContent":["import { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField, TextFieldPropOnChange } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeYear,\n datePickerPropPlaceholderTypeYear,\n datePickerPropSeparatorDefault,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes } from '../types';\nimport { DatePickerFieldTypeYearProps, useImask } from './helpers';\n\nexport const DatePickerFieldTypeYear = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeYearProps\n>((props, ref) => {\n const {\n format: formatProp = datePickerPropFormatTypeYear,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeYear,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n ...otherProps\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const onChangeRef = useMutableRef(onChange);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n\n const stringValueRef = useMutableRef(stringValue);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n\n setStringValue(stringValue);\n\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n\n const [yyyy] = getPartsDate(stringValue, formatProp, separator, false, [\n 'yyyy',\n ]);\n\n if (yyyy) {\n const date = parse(\n `${yyyy}`,\n datePickerPropFormatTypeYear,\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n yyyy,\n date,\n });\n\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n useImask(formatProp, separator, inputRef, stringValue, onError);\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n onChange={handleChange as unknown as TextFieldPropOnChange}\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerFieldTypeYear.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeYear","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","otherProps","stringValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeYear,\n datePickerPropPlaceholderTypeYear,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeYearProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeYear = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeYearProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeYear,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeYear,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef } = usePicker({\n value,\n minDate,\n maxDate,\n onChange,\n onError,\n separator,\n format,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oMAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,4BADF,CAEEC,iCAFF,CAGEC,8BAHF,kBAKA,OAAuCC,SAAvC,iBAEA,MAAO,IAAMC,wBAAuB,CAAGT,KAAK,CAACU,UAAN,CAGrC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAYZD,CAZY,CAEdE,MAFc,CAEdA,CAFc,YAELR,4BAFK,KAYZM,CAZY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAYZI,CAZY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,iCAJA,GAKdU,CALc,CAYZL,CAZY,CAKdK,QALc,CAMdC,CANc,CAYZN,CAZY,CAMdM,OANc,GAYZN,CAZY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAYZQ,CAZY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAYZT,CAZY,CASdS,KATc,CAUJC,CAVI,CAYZV,CAZY,CAUdW,QAVc,CAWXC,CAXW,0BAYZZ,CAZY,cAckBH,SAAS,CAAC,CAC1CY,KAAK,CAALA,CAD0C,CAE1CF,OAAO,CAAPA,CAF0C,CAG1CC,OAAO,CAAPA,CAH0C,CAI1CH,QAAQ,CAARA,CAJ0C,CAK1CC,OAAO,CAAPA,CAL0C,CAM1CH,SAAS,CAATA,CAN0C,CAO1CD,MAAM,CAANA,CAP0C,CAAD,CAd3B,CAcRW,CAdQ,GAcRA,WAdQ,CAcKF,CAdL,GAcKA,QAdL,CAwBhB,MACE,qBAAC,SAAD,kBACMC,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,iBAAiB,CAAEX,CAHrB,CAIE,QAAQ,CAAEX,UAAU,CAAC,CAACqB,CAAD,CAAWD,CAAX,CAAD,CAJtB,CAKE,KAAK,CAAEG,CALT,CAME,WAAW,CAAET,CANf,GASH,CArCsC,CAAhC"}