@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.
- package/__internal__/src/components/Avatar/Avatar.css +1 -1
- package/__internal__/src/components/Avatar/Avatar.d.ts +2 -1
- package/__internal__/src/components/Avatar/Avatar.js +1 -1
- package/__internal__/src/components/Avatar/Avatar.js.map +1 -1
- package/__internal__/src/components/AvatarGroup/AvatarGroup.css +1 -1
- package/__internal__/src/components/AvatarGroup/AvatarGroup.js +1 -1
- package/__internal__/src/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/__internal__/src/components/AvatarGroup/helpers.d.ts +1 -0
- package/__internal__/src/components/AvatarGroup/types.d.ts +1 -0
- package/__internal__/src/components/AvatarGroup/types.js.map +1 -1
- package/__internal__/src/components/Combobox/Combobox.js +1 -1
- package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
- package/__internal__/src/components/Combobox/helpers.d.ts +3 -1
- package/__internal__/src/components/Combobox/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.d.ts +13 -4
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.d.ts +16 -4
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.d.ts +13 -4
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.d.ts +16 -4
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.d.ts +13 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js.map +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBar.css +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js.map +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.css +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.js +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBarItem/ProgressStepBarItem.js.map +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBarLine/ProgressStepBarLine.css +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBarLine/ProgressStepBarLine.js +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBarLine/ProgressStepBarLine.js.map +1 -1
- package/__internal__/src/components/ProgressStepBar/helpers.d.ts +2 -0
- package/__internal__/src/components/ProgressStepBar/helpers.js +1 -1
- package/__internal__/src/components/ProgressStepBar/helpers.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectItem/SelectItem.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectItem/SelectItem.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.css +1 -1
- package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.d.ts +1 -0
- package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.js.map +1 -1
- package/__internal__/src/components/Switch/Switch.css +1 -1
- package/__internal__/src/components/Switch/Switch.d.ts +20 -37
- package/__internal__/src/components/Switch/Switch.js +1 -1
- package/__internal__/src/components/Switch/Switch.js.map +1 -1
- package/__internal__/src/components/Switch/index.d.ts +1 -0
- package/__internal__/src/components/Switch/index.js +1 -1
- package/__internal__/src/components/Switch/index.js.map +1 -1
- package/__internal__/src/components/Switch/types.d.ts +35 -0
- package/__internal__/src/components/Switch/types.js +2 -0
- package/__internal__/src/components/Switch/types.js.map +1 -0
- package/__internal__/src/components/SwitchGroup/SwitchGroup.css +1 -1
- package/__internal__/src/components/SwitchGroup/SwitchGroup.js +1 -1
- package/__internal__/src/components/SwitchGroup/SwitchGroup.js.map +1 -1
- package/__internal__/src/components/SwitchGroup/helpers.d.ts +1 -1
- package/__internal__/src/components/SwitchGroup/types.d.ts +3 -8
- package/__internal__/src/components/SwitchGroup/types.js +1 -1
- package/__internal__/src/components/SwitchGroup/types.js.map +1 -1
- package/__internal__/src/components/TextField/TextField.css +1 -1
- package/__internal__/src/components/TextField/index.d.ts +1 -0
- package/__internal__/src/components/TextField/index.js +1 -1
- package/__internal__/src/components/TextField/index.js.map +1 -1
- package/__internal__/src/components/TextField/useIMask.d.ts +15 -0
- package/__internal__/src/components/TextField/useIMask.js +2 -0
- package/__internal__/src/components/TextField/useIMask.js.map +1 -0
- package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
- package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
- package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.css +1 -1
- package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.css +1 -1
- package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.js +1 -1
- package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.js.map +1 -1
- package/__internal__/src/components/UserSelect/helpers.d.ts +3 -1
- package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
- package/__internal__/src/hooks/useSelect/useSelect.js +1 -1
- package/__internal__/src/hooks/useSelect/useSelect.js.map +1 -1
- package/__internal__/src/mixs/MixFocus/MixFocus.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerFieldTypeDateTime.js","names":["
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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,
|
|
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("
|
|
9
|
+
onError?: import("..").DatePickerPropOnError | undefined;
|
|
10
10
|
id?: string | undefined;
|
|
11
11
|
name?: string | undefined;
|
|
12
12
|
disabled?: boolean | undefined;
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
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":["
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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,
|
|
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":"iEACA,OAASA,MAAM,GAANA,QAAT,CAAiBC,OAAjB,CAA0BC,KAAK,GAALA,OAA1B,KAAuC,UAAvC,CACA,MAAOC,MAAP,KAAkB,OAAlB,CACA,OAASC,WAAT,CAAsBC,SAAtB,CAAiCC,MAAjC,KAA+C,OAA/C,CAEA,OAASC,aAAT,kDASA,OACEC,6BADF,CAEEC,8BAFF,CAGEC,YAHF,kBAKA,OAASC,oBAAT,gBA+CA,MAAO,IAAMC,SAAQ,CAAG,SACtBC,CADsB,CAEtBC,CAFsB,CAGtBC,CAHsB,CAItBC,CAJsB,CAKtBC,CALsB,CAMtBC,CANsB,CAOnB,IACGC,EAAQ,CAAGb,MAAM,CACrB,IADqB,CADpB,CAIGc,CAAU,CAAGb,aAAa,CAACU,CAAD,CAJ7B,CAKGI,CAAe,CAAGd,aAAa,CAACW,CAAD,CALlC,CASHb,SAAS,CAAC,UAAM,CACVU,CAAQ,CAACO,OADC,GAEZH,CAAQ,CAACG,OAAT,CAAmBnB,KAAK,CAACY,CAAQ,CAACO,OAAV,CAAmB,CACzCC,IAAI,CAAEC,IADmC,CAEzCC,OAAO,CAAEZ,CAFgC,CAGzCa,MAAM,CAAE,CACNC,IAAI,CAAE,CACJJ,IAAI,CAAEpB,KAAK,CAACyB,WADR,CAEJC,IAAI,CAAE,CAFF,CAGJC,EAAE,CAAE,IAHA,CADA,CAMNC,EAAE,CAAE,CACFR,IAAI,CAAEpB,KAAK,CAACyB,WADV,CAEFC,IAAI,CAAE,CAFJ,CAGFC,EAAE,CAAE,EAHF,CANE,CAHiC,CAezCE,IAAI,GAfqC,CAgBzCC,OAAO,GAhBkC,CAiBzCjC,MAAM,CAAE,gBAACkC,CAAD,QAAUlC,QAAM,CAACkC,CAAD,CAAOrB,CAAP,CAAhB,CAjBiC,CAkBzCX,KAAK,CAAE,eAACiC,CAAD,QAAYjC,OAAK,CAACiC,CAAD,CAAStB,CAAT,CAAqB,GAAIW,KAAzB,CAAjB,CAlBkC,CAmBzCY,QAAQ,CAAE,kBAACD,CAAD,CAAoB,CAC5B,MAAmBzB,YAAY,CAC7ByB,CAD6B,CAE7BtB,CAF6B,CAG7BC,CAH6B,IAK7B,CAAC,IAAD,CAAO,MAAP,CAL6B,CAA/B,uBAAOiB,CAAP,MAAWJ,CAAX,MAQA,GACEI,CAAE,EACFJ,CADA,EAEA,CAAC1B,OAAO,CACNC,MAAK,WACA6B,CADA,SACKtB,8BADL,SACsCkB,CADtC,EAEHnB,6BAFG,CAGH,GAAIgB,KAHD,CADC,CAHV,CAUE,OASA,MARAP,EAAO,aACLG,CAAU,CAACE,OADN,qBACL,OAAAF,CAAU,CAAW,CACnBiB,IAAI,CAAE1B,oBAAoB,CAAC,CAAD,CADP,CAEnBK,WAAW,CAAEmB,CAFM,CAGnBJ,EAAE,CAAFA,CAHmB,CAInBJ,IAAI,CAAJA,CAJmB,CAAX,CADL,CAQP,GACD,CAED,QACD,CAnDwC,CAAnB,CAFZ,CAyDf,CAzDQ,CAyDN,CAACd,CAAD,CAAaC,CAAb,CAzDM,CATN,CAuEH,GAAMwB,EAAO,CAAGlC,WAAW,CAAC,SAACmC,CAAD,CAAc,OACxClB,CAAe,CAACC,OAAhB,CAAwB,CAAEiB,CAAC,CAADA,CAAF,CAAKC,KAAK,CAAE,WAAArB,CAAQ,CAACG,OAAT,uBAAkBkB,KAAlB,GAA2B,IAAvC,CAAxB,CACD,CAF0B,CAExB,EAFwB,CAA3B,CAIAnC,SAAS,CAAC,UAAM,OAEd,iBADAc,CAAQ,CAACG,OACT,qBADA,EAAkBmB,EAAlB,CAAqB,QAArB,CAA+BH,CAA/B,CACA,CAAO,UAAM,iBACXnB,CAAQ,CAACG,OADE,qBACX,EAAkBoB,GAAlB,CAAsB,QAAtB,CAAgCJ,CAAhC,CACD,CACF,CALQ,CAKN,EALM,CA3EN,CAkFHjC,SAAS,CAAC,UAAM,iBACdc,CAAQ,CAACG,OADK,qBACd,EAAkBqB,WAAlB,EACD,CAFQ,CAEN,CAAC3B,CAAD,CAFM,CAGV,CA5FM"}
|
|
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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"}
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts
CHANGED
|
@@ -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("
|
|
9
|
+
onError?: import("..").DatePickerPropOnError | undefined;
|
|
10
10
|
id?: string | undefined;
|
|
11
11
|
name?: string | undefined;
|
|
12
12
|
disabled?: boolean | undefined;
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
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":["
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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,
|
|
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":"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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","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":"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"}
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts
CHANGED
|
@@ -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("
|
|
9
|
+
onError?: import("..").DatePickerPropOnError | undefined;
|
|
10
10
|
id?: string | undefined;
|
|
11
11
|
name?: string | undefined;
|
|
12
12
|
disabled?: boolean | undefined;
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
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":["
|
|
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"}
|