@consta/uikit 5.1.0 → 5.2.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/Chips/Chips.js +1 -1
- package/__internal__/src/components/Chips/Chips.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/ChipsChoice.js +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/ChipsChoice.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/types.d.ts +1 -0
- package/__internal__/src/components/Chips/ChipsChoice/types.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.css +2 -2
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.js +1 -1
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.js.map +1 -1
- package/__internal__/src/components/Chips/helpers.d.ts +6 -2
- package/__internal__/src/components/Chips/helpers.js +1 -1
- package/__internal__/src/components/Chips/helpers.js.map +1 -1
- package/__internal__/src/components/Chips/types.d.ts +4 -0
- package/__internal__/src/components/Chips/types.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js +1 -1
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js.map +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 +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.d.ts +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.d.ts +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.d.ts +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.d.ts +1 -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/DatePicker/helpers.d.ts +7 -1
- package/__internal__/src/components/DatePicker/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/helpers.js.map +1 -1
- package/__internal__/src/components/Slider/useSlider/helper.d.ts +1 -0
- package/__internal__/src/components/Slider/useSlider/helper.js +1 -1
- package/__internal__/src/components/Slider/useSlider/helper.js.map +1 -1
- package/__internal__/src/components/Slider/useSlider/useSlider.js +1 -1
- package/__internal__/src/components/Slider/useSlider/useSlider.js.map +1 -1
- package/__internal__/src/components/Spoiler/Spoiler.js +1 -1
- package/__internal__/src/components/Spoiler/Spoiler.js.map +1 -1
- package/__internal__/src/components/Spoiler/types.d.ts +2 -0
- package/__internal__/src/components/Spoiler/types.js.map +1 -1
- package/__internal__/src/components/Switch/Switch.css +1 -1
- package/__internal__/src/components/TextField/TextField.js +1 -1
- package/__internal__/src/components/TextField/TextField.js.map +1 -1
- package/__internal__/src/components/TextField/types.d.ts +1 -0
- package/__internal__/src/components/TextField/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
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{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,getTimeEnum,useStringValue}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=useCallback(function(a,b,c){var d=m.current,e=n.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var j=getParts(f,g,!1),k=getParts(a,g,!1),l=j.map(function(a){return getPartDate(j,k,a)}).filter(function(a){return!!a});if(j.length===l.length){var y=_parse(k.join(datePickerPropSeparatorDefault),j.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(y,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),r=_slicedToArray(q,6),s=r[0],t=r[1],u=r[2],v=r[3],w=r[4],x=r[5];return null===(p=o.current)||void 0===p?void 0:p.call(o,{type:datePickerErrorTypes[0],stringValue:a,dd:s,MM:t,yyyy:u,date:y,HH:v,mm:w,ss:x}),void(e&&d(null,{e:c}))}d(y,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),q=useIMask({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=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),i=_slicedToArray(h,6),j=i[0],k=i[1],l=i[2],m=i[3],n=i[4],p=i[5];return null===(e=o.current)||void 0===e?void 0:e.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:j,MM:k,yyyy:l,HH:m,mm:n,ss:p}),!1}return!0}},{onAccept:p}),r=
|
|
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{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,getTimeEnum,useStringValue}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=useCallback(function(a,b,c){var d=m.current,e=n.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var j=getParts(f,g,!1),k=getParts(a,g,!1),l=j.map(function(a){return getPartDate(j,k,a)}).filter(function(a){return!!a});if(j.length===l.length){var y=_parse(k.join(datePickerPropSeparatorDefault),j.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(y,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),r=_slicedToArray(q,6),s=r[0],t=r[1],u=r[2],v=r[3],w=r[4],x=r[5];return null===(p=o.current)||void 0===p?void 0:p.call(o,{type:datePickerErrorTypes[0],stringValue:a,dd:s,MM:t,yyyy:u,date:y,HH:v,mm:w,ss:x}),void(e&&d(null,{e:c}))}d(y,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),q=useIMask({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=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),i=_slicedToArray(h,6),j=i[0],k=i[1],l=i[2],m=i[3],n=i[4],p=i[5];return null===(e=o.current)||void 0===e?void 0:e.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:j,MM:k,yyyy:l,HH:m,mm:n,ss:p}),!1}return!0}},{onAccept:p}),r=useStringValue(b,f,g,m,q);return[q.ref,r]};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","getTimeEnum","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","multiplicityHours","multiplicityMinutes","multiplicitySeconds","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","dd","MM","yyyy","HH","mm","ss","type","getTime","mask","pattern","blocks","MaskedRange","from","to","MaskedEnum","lazy","autofix","string","validate","ref","setStringValue","setValue"],"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 { MaskedDate } from 'imask';\nimport React, { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n getTimeEnum,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDateTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 labelIcon?: IconComponent;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\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(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const {\n ref,\n setValue: setStringValue,\n value: stringValue,\n } = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\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 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\n return true;\n },\n },\n { onAccept },\n );\n\n useStringValue(value, stringValue, formatProp, separator, setStringValue);\n\n return ref;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","getTimeEnum","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","multiplicityHours","multiplicityMinutes","multiplicitySeconds","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","dd","MM","yyyy","HH","mm","ss","type","getTime","imaskProps","mask","pattern","blocks","MaskedRange","from","to","MaskedEnum","lazy","autofix","string","validate","handleClear","ref"],"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 { MaskedDate } from 'imask';\nimport React, { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n getTimeEnum,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDateTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 labelIcon?: IconComponent;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\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(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const imaskProps = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\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 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\n return true;\n },\n },\n { onAccept },\n );\n\n const handleClear = useStringValue(\n value,\n formatProp,\n separator,\n onChangeRef,\n imaskProps,\n );\n\n return [imaskProps.ref, handleClear] as const;\n};\n"],"mappings":"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"}
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef","defaultValue"];import React from"react";import{TextField}from"../../TextField";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";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=a.defaultValue,r=_objectWithoutProperties(a,_excluded),s=usePicker({value:o,format:d,separator:f,minDate:l,maxDate:n,onChange:i,onError:j});return React.createElement(TextField,Object.assign({},r,{type:"text",inputContainerRef:b,inputRef:useForkRef([
|
|
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","defaultValue"];import React from"react";import{TextField}from"../../TextField";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";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=a.defaultValue,r=_objectWithoutProperties(a,_excluded),s=usePicker({value:o,format:d,separator:f,minDate:l,maxDate:n,onChange:i,onError:j}),t=_slicedToArray(s,2),u=t[0],v=t[1];return React.createElement(TextField,Object.assign({},r,{type:"text",inputContainerRef:b,inputRef:useForkRef([u,p]),placeholder:h,onClear:v}))});
|
|
2
2
|
//# sourceMappingURL=DatePickerFieldTypeMonth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerFieldTypeMonth.js","names":["React","TextField","useForkRef","maxDateDefault","minDateDefault","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeMonth","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","defaultValue","otherProps"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TextField } from '##/components/TextField';\nimport { useForkRef } from '##/hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '##/utils/date';\n\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 defaultValue,\n ...otherProps\n } = props;\n\n const 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 placeholder={placeholder}\n />\n );\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePickerFieldTypeMonth.js","names":["React","TextField","useForkRef","maxDateDefault","minDateDefault","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeMonth","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","defaultValue","otherProps","onClear"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TextField } from '##/components/TextField';\nimport { useForkRef } from '##/hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '##/utils/date';\n\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 defaultValue,\n ...otherProps\n } = props;\n\n const [inputRef, onClear] = 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 placeholder={placeholder}\n onClear={onClear}\n />\n );\n});\n"],"mappings":"oRAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,SAAT,uBACA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BAEA,OACEC,6BADF,CAEEC,kCAFF,CAGEC,8BAHF,kBAKA,OAAwCC,SAAxC,iBAEA,MAAO,IAAMC,yBAAwB,CAAGT,KAAK,CAACU,UAAN,CAGtC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAaZD,CAbY,CAEdE,MAFc,CAEdA,CAFc,YAELR,6BAFK,KAaZM,CAbY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAaZI,CAbY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,kCAJA,GAKdU,CALc,CAaZL,CAbY,CAKdK,QALc,CAMdC,CANc,CAaZN,CAbY,CAMdM,OANc,GAaZN,CAbY,CAOdO,OAPc,CAOdA,CAPc,YAOJd,cAPI,KAaZO,CAbY,CAQdQ,OARc,CAQdA,CARc,YAQJhB,cARI,GASdiB,CATc,CAaZT,CAbY,CASdS,KATc,CAUJC,CAVI,CAaZV,CAbY,CAUdW,QAVc,CAWdC,CAXc,CAaZZ,CAbY,CAWdY,YAXc,CAYXC,CAZW,0BAaZb,CAbY,cAeYH,SAAS,CAAC,CACpCY,KAAK,CAALA,CADoC,CAEpCP,MAAM,CAANA,CAFoC,CAGpCC,SAAS,CAATA,CAHoC,CAIpCI,OAAO,CAAPA,CAJoC,CAKpCC,OAAO,CAAPA,CALoC,CAMpCH,QAAQ,CAARA,CANoC,CAOpCC,OAAO,CAAPA,CAPoC,CAAD,CAfrB,uBAeTK,CAfS,MAeCG,CAfD,MAyBhB,MACE,qBAAC,SAAD,kBACMD,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,iBAAiB,CAAEZ,CAHrB,CAIE,QAAQ,CAAEV,UAAU,CAAC,CAACoB,CAAD,CAAWD,CAAX,CAAD,CAJtB,CAKE,WAAW,CAAEN,CALf,CAME,OAAO,CAAEU,CANX,GASH,CAtCuC,CAAjC"}
|
|
@@ -51,5 +51,5 @@ declare type UsePickerProps = {
|
|
|
51
51
|
minDate: Date;
|
|
52
52
|
maxDate: Date;
|
|
53
53
|
};
|
|
54
|
-
export declare const usePicker: (props: UsePickerProps) => import("react").MutableRefObject<HTMLInputElement | null
|
|
54
|
+
export declare const usePicker: (props: UsePickerProps) => readonly [import("react").MutableRefObject<HTMLInputElement | null>, import("react").MouseEventHandler<HTMLButtonElement>];
|
|
55
55
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,useStringValue}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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var u=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(u,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["MM","yyyy"]),r=_slicedToArray(q,2),s=r[0],t=r[1];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,MM:s,yyyy:t,date:u}),void(e&&d(null,{e:c}))}d(u,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useIMask({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=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["MM","yyyy"]),i=_slicedToArray(h,2),j=i[0],k=i[1];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,MM:j,yyyy:k}),!1}return!0}},{onAccept:m}),o=
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,useStringValue}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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var u=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(u,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["MM","yyyy"]),r=_slicedToArray(q,2),s=r[0],t=r[1];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,MM:s,yyyy:t,date:u}),void(e&&d(null,{e:c}))}d(u,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useIMask({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=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["MM","yyyy"]),i=_slicedToArray(h,2),j=i[0],k=i[1];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,MM:j,yyyy:k}),!1}return!0}},{onAccept:m}),o=useStringValue(b,f,g,j,n);return[n.ref,o]};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","MM","yyyy","type","getTime","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeMonthPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 labelIcon?: IconComponent;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const {\n ref,\n setValue: setStringValue,\n value: stringValue,\n } = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n MM,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n useStringValue(value, stringValue, formatProp, separator, setStringValue);\n\n return ref;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","MM","yyyy","type","getTime","imaskProps","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","handleClear","ref"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeMonthPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 labelIcon?: IconComponent;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const imaskProps = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n MM,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n const handleClear = useStringValue(\n value,\n formatProp,\n separator,\n onChangeRef,\n imaskProps,\n );\n\n return [imaskProps.ref, handleClear] as const;\n};\n"],"mappings":"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"}
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","defaultValue"];import React from"react";import{TextField}from"../../TextField";import{useForkRef}from"../../../hooks/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";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=a.defaultValue,u=_objectWithoutProperties(a,_excluded),v=usePicker({value:o,onChange:i,onError:j,separator:f,format:d,minDate:l,maxDate:n,multiplicityHours:q,multiplicityMinutes:s,multiplicitySeconds:r});return React.createElement(TextField,Object.assign({},u,{type:"text",inputContainerRef:b,inputRef:useForkRef([
|
|
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","defaultValue"];import React from"react";import{TextField}from"../../TextField";import{useForkRef}from"../../../hooks/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";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=a.defaultValue,u=_objectWithoutProperties(a,_excluded),v=usePicker({value:o,onChange:i,onError:j,separator:f,format:d,minDate:l,maxDate:n,multiplicityHours:q,multiplicityMinutes:s,multiplicitySeconds:r}),w=_slicedToArray(v,2),x=w[0],y=w[1];return React.createElement(TextField,Object.assign({},u,{type:"text",inputContainerRef:b,inputRef:useForkRef([x,p]),placeholder:h,onClear:y}))});
|
|
2
2
|
//# sourceMappingURL=DatePickerFieldTypeTime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerFieldTypeTime.js","names":["React","TextField","useForkRef","maxDateDefault","minDateDefault","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeTime","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","defaultValue","otherProps"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TextField } from '##/components/TextField';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { maxDateDefault, minDateDefault } from '##/utils/date';\n\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 defaultValue,\n ...otherProps\n } = props;\n\n const 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 placeholder={placeholder}\n />\n );\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePickerFieldTypeTime.js","names":["React","TextField","useForkRef","maxDateDefault","minDateDefault","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeTime","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","defaultValue","otherProps","onClear"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TextField } from '##/components/TextField';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { maxDateDefault, minDateDefault } from '##/utils/date';\n\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 defaultValue,\n ...otherProps\n } = props;\n\n const [inputRef, onClear] = 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 placeholder={placeholder}\n onClear={onClear}\n />\n );\n});\n"],"mappings":"oVAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,SAAT,uBACA,OAASC,UAAT,iCACA,OAASC,cAAT,CAAyBC,cAAzB,2BAEA,OACEC,4BADF,CAEEC,iCAFF,CAGEC,8BAHF,kBAKA,OAAuCC,SAAvC,iBAEA,MAAO,IAAMC,wBAAuB,CAAGT,KAAK,CAACU,UAAN,CAGrC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAgBZD,CAhBY,CAEdE,MAFc,CAEdA,CAFc,YAELR,4BAFK,KAgBZM,CAhBY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAgBZI,CAhBY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,iCAJA,GAKdU,CALc,CAgBZL,CAhBY,CAKdK,QALc,CAMdC,CANc,CAgBZN,CAhBY,CAMdM,OANc,GAgBZN,CAhBY,CAOdO,OAPc,CAOdA,CAPc,YAOJd,cAPI,KAgBZO,CAhBY,CAQdQ,OARc,CAQdA,CARc,YAQJhB,cARI,GASdiB,CATc,CAgBZT,CAhBY,CASdS,KATc,CAUJC,CAVI,CAgBZV,CAhBY,CAUdW,QAVc,CAWdC,CAXc,CAgBZZ,CAhBY,CAWdY,iBAXc,CAYdC,CAZc,CAgBZb,CAhBY,CAYda,mBAZc,CAadC,CAbc,CAgBZd,CAhBY,CAadc,mBAbc,CAcdC,CAdc,CAgBZf,CAhBY,CAcde,YAdc,CAeXC,CAfW,0BAgBZhB,CAhBY,cAkBYH,SAAS,CAAC,CACpCY,KAAK,CAALA,CADoC,CAEpCJ,QAAQ,CAARA,CAFoC,CAGpCC,OAAO,CAAPA,CAHoC,CAIpCH,SAAS,CAATA,CAJoC,CAKpCD,MAAM,CAANA,CALoC,CAMpCK,OAAO,CAAPA,CANoC,CAOpCC,OAAO,CAAPA,CAPoC,CAQpCI,iBAAiB,CAAjBA,CARoC,CASpCE,mBAAmB,CAAnBA,CAToC,CAUpCD,mBAAmB,CAAnBA,CAVoC,CAAD,CAlBrB,uBAkBTF,CAlBS,MAkBCM,CAlBD,MA+BhB,MACE,qBAAC,SAAD,kBACMD,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,iBAAiB,CAAEf,CAHrB,CAIE,QAAQ,CAAEV,UAAU,CAAC,CAACoB,CAAD,CAAWD,CAAX,CAAD,CAJtB,CAKE,WAAW,CAAEN,CALf,CAME,OAAO,CAAEa,CANX,GASH,CA5CsC,CAAhC"}
|
|
@@ -57,5 +57,5 @@ declare type UsePickerProps = {
|
|
|
57
57
|
minDate: Date;
|
|
58
58
|
maxDate: Date;
|
|
59
59
|
};
|
|
60
|
-
export declare const usePicker: (props: UsePickerProps) => React.MutableRefObject<HTMLInputElement | null
|
|
60
|
+
export declare const usePicker: (props: UsePickerProps) => readonly [React.MutableRefObject<HTMLInputElement | null>, React.MouseEventHandler<HTMLButtonElement>];
|
|
61
61
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
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{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef";import{getPartDate,getParts,getPartsDate,getTimeEnum,useStringValue}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=useCallback(function(a,b,c){var d=l.current,e=m.current;if(!(e&&isValid(e)&&_format(e,h)===a)){if((null===a||void 0===a?void 0:a.length)!==h.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var f=getParts(h,i,!1),g=getParts(a,i,!1),o=f.map(function(a){return getPartDate(f,g,a)}).filter(function(a){return!!a});if(f.length===o.length){var v=_parse(g.join(":"),f.join(":"),e||new Date);if(!isWithinInterval(v,{start:k,end:j})){var p,q=getPartsDate(a,h,":",!1,["HH","mm","ss"]),r=_slicedToArray(q,3),s=r[0],t=r[1],u=r[2];return null===(p=n.current)||void 0===p?void 0:p.call(n,{type:datePickerErrorTypes[0],stringValue:a,date:v,HH:s,mm:t,ss:u}),void(e&&d(null,{e:c}))}d(v,{e:c})}else e&&d(null,{e:c})}}},[null===k||void 0===k?void 0:k.getTime(),null===j||void 0===j?void 0:j.getTime(),h,i]),p=useIMask({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=getParts(h,i,!1),c=getParts(a,i,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(":"),b.join(":"),new Date))){var e,f=getPartsDate(a,h,":",!1,["HH","mm","ss"]),g=_slicedToArray(f,3),j=g[0],k=g[1],l=g[2];return null===(e=n.current)||void 0===e?void 0:e.call(n,{type:datePickerErrorTypes[1],stringValue:a,HH:j,mm:k,ss:l}),!1}return!0}},{onAccept:o}),q=
|
|
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{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef";import{getPartDate,getParts,getPartsDate,getTimeEnum,useStringValue}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=useCallback(function(a,b,c){var d=l.current,e=m.current;if(!(e&&isValid(e)&&_format(e,h)===a)){if((null===a||void 0===a?void 0:a.length)!==h.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var f=getParts(h,i,!1),g=getParts(a,i,!1),o=f.map(function(a){return getPartDate(f,g,a)}).filter(function(a){return!!a});if(f.length===o.length){var v=_parse(g.join(":"),f.join(":"),e||new Date);if(!isWithinInterval(v,{start:k,end:j})){var p,q=getPartsDate(a,h,":",!1,["HH","mm","ss"]),r=_slicedToArray(q,3),s=r[0],t=r[1],u=r[2];return null===(p=n.current)||void 0===p?void 0:p.call(n,{type:datePickerErrorTypes[0],stringValue:a,date:v,HH:s,mm:t,ss:u}),void(e&&d(null,{e:c}))}d(v,{e:c})}else e&&d(null,{e:c})}}},[null===k||void 0===k?void 0:k.getTime(),null===j||void 0===j?void 0:j.getTime(),h,i]),p=useIMask({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=getParts(h,i,!1),c=getParts(a,i,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(":"),b.join(":"),new Date))){var e,f=getPartsDate(a,h,":",!1,["HH","mm","ss"]),g=_slicedToArray(f,3),j=g[0],k=g[1],l=g[2];return null===(e=n.current)||void 0===e?void 0:e.call(n,{type:datePickerErrorTypes[1],stringValue:a,HH:j,mm:k,ss:l}),!1}return!0}},{onAccept:o}),q=useStringValue(b,h,i,l,p);return[p.ref,q]};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","getPartDate","getParts","getPartsDate","getTimeEnum","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","HH","mm","ss","type","getTime","mask","pattern","blocks","MaskedEnum","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"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 { MaskedDate } from 'imask';\nimport React, { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n getPartDate,\n getParts,\n getPartsDate,\n getTimeEnum,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 labelIcon?: IconComponent;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(':'),\n formatArray.join(':'),\n value || new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n ':',\n false,\n ['HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const {\n ref,\n setValue: setStringValue,\n value: stringValue,\n } = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(valueArray.join(':'), formatArray.join(':'), new Date()),\n )\n ) {\n const [HH, mm, ss] = getPartsDate(string, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n HH,\n mm,\n ss,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n useStringValue(value, stringValue, formatProp, separator, setStringValue);\n\n return ref;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","getPartDate","getParts","getPartsDate","getTimeEnum","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","HH","mm","ss","type","getTime","imaskProps","mask","pattern","blocks","MaskedEnum","MaskedRange","from","to","lazy","autofix","string","validate","handleClear","ref"],"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 { MaskedDate } from 'imask';\nimport React, { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n getPartDate,\n getParts,\n getPartsDate,\n getTimeEnum,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 labelIcon?: IconComponent;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(':'),\n formatArray.join(':'),\n value || new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n ':',\n false,\n ['HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const imaskProps = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(valueArray.join(':'), formatArray.join(':'), new Date()),\n )\n ) {\n const [HH, mm, ss] = getPartsDate(string, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n HH,\n mm,\n ss,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n const handleClear = useStringValue(\n value,\n formatProp,\n separator,\n onChangeRef,\n imaskProps,\n );\n\n return [imaskProps.ref, handleClear] as const;\n};\n"],"mappings":"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"}
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef","defaultValue"];import React from"react";import{TextField}from"../../TextField";import{useForkRef}from"../../../hooks/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";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=a.defaultValue,r=_objectWithoutProperties(a,_excluded),s=usePicker({value:o,minDate:l,maxDate:n,onChange:i,onError:j,separator:f,format:d});return React.createElement(TextField,Object.assign({},r,{type:"text",inputContainerRef:b,inputRef:useForkRef([
|
|
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","defaultValue"];import React from"react";import{TextField}from"../../TextField";import{useForkRef}from"../../../hooks/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";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=a.defaultValue,r=_objectWithoutProperties(a,_excluded),s=usePicker({value:o,minDate:l,maxDate:n,onChange:i,onError:j,separator:f,format:d}),t=_slicedToArray(s,2),u=t[0],v=t[1];return React.createElement(TextField,Object.assign({},r,{type:"text",inputContainerRef:b,inputRef:useForkRef([u,p]),placeholder:h,onClear:v}))});
|
|
2
2
|
//# sourceMappingURL=DatePickerFieldTypeYear.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerFieldTypeYear.js","names":["React","TextField","useForkRef","maxDateDefault","minDateDefault","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeYear","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","defaultValue","otherProps"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TextField } from '##/components/TextField';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { maxDateDefault, minDateDefault } from '##/utils/date';\n\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 defaultValue,\n ...otherProps\n } = props;\n\n const 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 placeholder={placeholder}\n />\n );\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePickerFieldTypeYear.js","names":["React","TextField","useForkRef","maxDateDefault","minDateDefault","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeYear","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","defaultValue","otherProps","onClear"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TextField } from '##/components/TextField';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { maxDateDefault, minDateDefault } from '##/utils/date';\n\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 defaultValue,\n ...otherProps\n } = props;\n\n const [inputRef, onClear] = 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 placeholder={placeholder}\n onClear={onClear}\n />\n );\n});\n"],"mappings":"oRAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,SAAT,uBACA,OAASC,UAAT,iCACA,OAASC,cAAT,CAAyBC,cAAzB,2BAEA,OACEC,4BADF,CAEEC,iCAFF,CAGEC,8BAHF,kBAKA,OAAuCC,SAAvC,iBAEA,MAAO,IAAMC,wBAAuB,CAAGT,KAAK,CAACU,UAAN,CAGrC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAaZD,CAbY,CAEdE,MAFc,CAEdA,CAFc,YAELR,4BAFK,KAaZM,CAbY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAaZI,CAbY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,iCAJA,GAKdU,CALc,CAaZL,CAbY,CAKdK,QALc,CAMdC,CANc,CAaZN,CAbY,CAMdM,OANc,GAaZN,CAbY,CAOdO,OAPc,CAOdA,CAPc,YAOJd,cAPI,KAaZO,CAbY,CAQdQ,OARc,CAQdA,CARc,YAQJhB,cARI,GASdiB,CATc,CAaZT,CAbY,CASdS,KATc,CAUJC,CAVI,CAaZV,CAbY,CAUdW,QAVc,CAWdC,CAXc,CAaZZ,CAbY,CAWdY,YAXc,CAYXC,CAZW,0BAaZb,CAbY,cAeYH,SAAS,CAAC,CACpCY,KAAK,CAALA,CADoC,CAEpCF,OAAO,CAAPA,CAFoC,CAGpCC,OAAO,CAAPA,CAHoC,CAIpCH,QAAQ,CAARA,CAJoC,CAKpCC,OAAO,CAAPA,CALoC,CAMpCH,SAAS,CAATA,CANoC,CAOpCD,MAAM,CAANA,CAPoC,CAAD,CAfrB,uBAeTS,CAfS,MAeCG,CAfD,MAyBhB,MACE,qBAAC,SAAD,kBACMD,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,iBAAiB,CAAEZ,CAHrB,CAIE,QAAQ,CAAEV,UAAU,CAAC,CAACoB,CAAD,CAAWD,CAAX,CAAD,CAJtB,CAKE,WAAW,CAAEN,CALf,CAME,OAAO,CAAEU,CANX,GASH,CAtCsC,CAAhC"}
|
|
@@ -51,5 +51,5 @@ declare type UsePickerProps = {
|
|
|
51
51
|
minDate: Date;
|
|
52
52
|
maxDate: Date;
|
|
53
53
|
};
|
|
54
|
-
export declare const usePicker: (props: UsePickerProps) => import("react").MutableRefObject<HTMLInputElement | null
|
|
54
|
+
export declare const usePicker: (props: UsePickerProps) => readonly [import("react").MutableRefObject<HTMLInputElement | null>, import("react").MouseEventHandler<HTMLButtonElement>];
|
|
55
55
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,useStringValue}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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var t=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(t,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["yyyy"]),r=_slicedToArray(q,1),s=r[0];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,yyyy:s,date:t}),void(e&&d(null,{e:c}))}d(t,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999}},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=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["yyyy"]),i=_slicedToArray(h,1),j=i[0];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,yyyy:j}),!1}return!0}},{onAccept:m}),o=
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,useStringValue}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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var t=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(t,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["yyyy"]),r=_slicedToArray(q,1),s=r[0];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,yyyy:s,date:t}),void(e&&d(null,{e:c}))}d(t,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999}},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=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["yyyy"]),i=_slicedToArray(h,1),j=i[0];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,yyyy:j}),!1}return!0}},{onAccept:m}),o=useStringValue(b,f,g,j,n);return[n.ref,o]};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","yyyy","type","getTime","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeYearPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeYearProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\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 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 labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n yyyy,\n date,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const {\n ref,\n setValue: setStringValue,\n value: stringValue,\n } = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [yyyy] = getPartsDate(string, formatProp, separator, false, [\n 'yyyy',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n useStringValue(value, stringValue, formatProp, separator, setStringValue);\n\n return ref;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","useStringValue","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","yyyy","type","getTime","imaskProps","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","handleClear","ref"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport { useCallback } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n useStringValue,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeYearPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeYearProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\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 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 labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n yyyy,\n date,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const imaskProps = useIMask<HTMLInputElement, ReactMaskOpts>(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [yyyy] = getPartsDate(string, formatProp, separator, false, [\n 'yyyy',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n const handleClear = useStringValue(\n value,\n formatProp,\n separator,\n onChangeRef,\n imaskProps,\n );\n\n return [imaskProps.ref, handleClear] as const;\n};\n"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { useIMask } from 'react-imask';
|
|
1
3
|
import { DateRange } from '../../utils/types/Date';
|
|
2
4
|
import { TextFieldPropForm } from '../TextField/TextField';
|
|
3
5
|
import { DatePickerPropType } from './types';
|
|
@@ -23,4 +25,8 @@ export declare const getPartsDate: (value: string, format: string, separator: st
|
|
|
23
25
|
export declare const isTypeWithTime: (type: DatePickerPropType) => boolean;
|
|
24
26
|
export declare const getFieldName: (name: [string?, string?] | string | undefined, rangeIndex: 0 | 1) => string | undefined;
|
|
25
27
|
export declare const getDropdownZIndex: (style?: React.CSSProperties) => number | undefined;
|
|
26
|
-
|
|
28
|
+
declare type DatePickerFieldTypeDatePropOnChange = (value: Date | null, props: {
|
|
29
|
+
e: Event;
|
|
30
|
+
}) => void;
|
|
31
|
+
export declare const useStringValue: (value: Date | undefined | null, formatProp: string, separator: string, onChangeRef: React.MutableRefObject<DatePickerFieldTypeDatePropOnChange | undefined>, imaskProps: ReturnType<typeof useIMask>) => import("react").MouseEventHandler<HTMLButtonElement>;
|
|
32
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format,isValid,parse,startOfToday}from"date-fns";import{useEffect}from"react";import{range}from"../../utils/array";import{getForm}from"../FieldGroup/FieldGroup";export var datePickerPropSeparatorDefault=".";export var datePickerPropFormatTypeDate="dd".concat(".","MM").concat(".","yyyy");export var datePickerPropPlaceholderTypeDate="\u0414\u0414".concat(".","\u041C\u041C").concat(".","\u0413\u0413\u0413\u0413");export var datePickerPropFormatTypeTime="HH:mm:ss";export var datePickerPropPlaceholderTypeTime="\u0427\u0427:\u041C\u041C:\u0421\u0421";export var datePickerPropFormatTypeDateTime="".concat(datePickerPropFormatTypeDate," ").concat("HH:mm:ss");export var datePickerPropPlaceholderTypeDateTime="".concat(datePickerPropPlaceholderTypeDate," ").concat("\u0427\u0427:\u041C\u041C:\u0421\u0421");export var datePickerPropFormatTypeYear="yyyy";export var datePickerPropPlaceholderTypeYear="\u0413\u0413\u0413\u0413";export var datePickerPropFormatTypeMonth="MM".concat(".","yyyy");export var datePickerPropPlaceholderTypeMonth="MM".concat(".","\u0413\u0413\u0413\u0413");export var normalizeRangeValue=function(a){var b,c;return a[0]&&a[1]&&(null===(b=a[0])||void 0===b?void 0:b.getTime())>(null===(c=a[1])||void 0===c?void 0:c.getTime())?[a[1],a[0]]:a};export var getMultiplicityTime=function(a,b,c,d){var e,f=null===(e=a.split(" ")[1])||void 0===e?void 0:e.split(":"),g={HH:b,mm:c,ss:d};return["HH","mm","ss"].map(function(a){return 0>(null===f||void 0===f?void 0:f.indexOf(a))?0:g[a]})};export var getTimeEnum=function(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1,c=2<arguments.length?arguments[2]:void 0,d=3<arguments.length?arguments[3]:void 0,e=4<arguments.length?arguments[4]:void 0,f=range(b?Math.floor(a/b):0);if(0===f.length)return[];var g=c(startOfToday());return f.map(function(a){return e(d(g,a*b))})};export var getFormForStart=function(a){return getForm(a,0,2)};export var getFormForEnd=function(a){return getForm(a,1,2)};export var getPartDate=function(a,b,c){var d=a.indexOf(c);return 0<=d&&b[d]&&b[d].length===c.length?b[d]:void 0};export var getParts=function(a,b,c){if(c){var d=a.split(" "),e=_slicedToArray(d,2),f=e[0],g=e[1];return[].concat(_toConsumableArray(f?f.split(b):[]),_toConsumableArray(g?g.split(":"):[]))}return a.split(b)};export var getPartsDate=function(a,b,c,d,e){var f=getParts(b,c,d),g=getParts(a,c,d);return e.map(function(a){return getPartDate(f,g,a)})};export var isTypeWithTime=function(a){return-1!==a.indexOf("time")};var fieldPrefixs=["start","end"];export var getFieldName=function(a,b){return a?Array.isArray(a)?a[b]:"".concat(a,"_").concat(fieldPrefixs[b]):void 0};export var getDropdownZIndex=function(a){return"number"==typeof(null===a||void 0===a?void 0:a.zIndex)?a.zIndex+1:void 0};export var useStringValue=function(a,b,c,d,e){useEffect(function(){if(a&&isValid(a)&&
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format,isValid,parse,startOfToday}from"date-fns";import{useCallback,useEffect}from"react";import{useMutableRef}from"../../hooks/useMutableRef";import{range}from"../../utils/array";import{getForm}from"../FieldGroup/FieldGroup";export var datePickerPropSeparatorDefault=".";export var datePickerPropFormatTypeDate="dd".concat(".","MM").concat(".","yyyy");export var datePickerPropPlaceholderTypeDate="\u0414\u0414".concat(".","\u041C\u041C").concat(".","\u0413\u0413\u0413\u0413");export var datePickerPropFormatTypeTime="HH:mm:ss";export var datePickerPropPlaceholderTypeTime="\u0427\u0427:\u041C\u041C:\u0421\u0421";export var datePickerPropFormatTypeDateTime="".concat(datePickerPropFormatTypeDate," ").concat("HH:mm:ss");export var datePickerPropPlaceholderTypeDateTime="".concat(datePickerPropPlaceholderTypeDate," ").concat("\u0427\u0427:\u041C\u041C:\u0421\u0421");export var datePickerPropFormatTypeYear="yyyy";export var datePickerPropPlaceholderTypeYear="\u0413\u0413\u0413\u0413";export var datePickerPropFormatTypeMonth="MM".concat(".","yyyy");export var datePickerPropPlaceholderTypeMonth="MM".concat(".","\u0413\u0413\u0413\u0413");export var normalizeRangeValue=function(a){var b,c;return a[0]&&a[1]&&(null===(b=a[0])||void 0===b?void 0:b.getTime())>(null===(c=a[1])||void 0===c?void 0:c.getTime())?[a[1],a[0]]:a};export var getMultiplicityTime=function(a,b,c,d){var e,f=null===(e=a.split(" ")[1])||void 0===e?void 0:e.split(":"),g={HH:b,mm:c,ss:d};return["HH","mm","ss"].map(function(a){return 0>(null===f||void 0===f?void 0:f.indexOf(a))?0:g[a]})};export var getTimeEnum=function(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:1,c=2<arguments.length?arguments[2]:void 0,d=3<arguments.length?arguments[3]:void 0,e=4<arguments.length?arguments[4]:void 0,f=range(b?Math.floor(a/b):0);if(0===f.length)return[];var g=c(startOfToday());return f.map(function(a){return e(d(g,a*b))})};export var getFormForStart=function(a){return getForm(a,0,2)};export var getFormForEnd=function(a){return getForm(a,1,2)};export var getPartDate=function(a,b,c){var d=a.indexOf(c);return 0<=d&&b[d]&&b[d].length===c.length?b[d]:void 0};export var getParts=function(a,b,c){if(c){var d=a.split(" "),e=_slicedToArray(d,2),f=e[0],g=e[1];return[].concat(_toConsumableArray(f?f.split(b):[]),_toConsumableArray(g?g.split(":"):[]))}return a.split(b)};export var getPartsDate=function(a,b,c,d,e){var f=getParts(b,c,d),g=getParts(a,c,d);return e.map(function(a){return getPartDate(f,g,a)})};export var isTypeWithTime=function(a){return-1!==a.indexOf("time")};var fieldPrefixs=["start","end"];export var getFieldName=function(a,b){return a?Array.isArray(a)?a[b]:"".concat(a,"_").concat(fieldPrefixs[b]):void 0};export var getDropdownZIndex=function(a){return"number"==typeof(null===a||void 0===a?void 0:a.zIndex)?a.zIndex+1:void 0};export var useStringValue=function(a,b,c,d,e){var f=e.value,g=useMutableRef([e.setValue,a]),h=useCallback(function(a){if(g.current[0](""),g.current[1]){var b;null===(b=d.current)||void 0===b?void 0:b.call(d,null,{e:a})}},[]);return useEffect(function(){if(a&&isValid(a)&&g.current[0](format(a,b)),!a&&f){var d=getParts(b,c,!1),e=getParts(f,c,!1),h=d.map(function(a){return getPartDate(d,e,a)}).filter(function(a){return!!a}),i=d.length===h.length?parse(e.join(datePickerPropSeparatorDefault),d.join(datePickerPropSeparatorDefault),new Date):void 0;isValid(i)&&g.current[0]("")}},[null===a||void 0===a?void 0:a.getTime()]),h};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["format","isValid","parse","startOfToday","useEffect","range","getForm","datePickerPropSeparatorDefault","datePickerPropFormatTypeDate","datePickerPropPlaceholderTypeDate","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","normalizeRangeValue","dateRange","getTime","getMultiplicityTime","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatArray","split","map","HH","mm","ss","marker","indexOf","getTimeEnum","length","multiplicity","startOfUnits","addUnits","getItemLabel","numbers","Math","floor","startDate","number","getFormForStart","form","getFormForEnd","getPartDate","stringArray","index","getParts","separator","withTime","date","time","getPartsDate","value","markers","isTypeWithTime","type","fieldPrefixs","getFieldName","name","rangeIndex","Array","isArray","getDropdownZIndex","style","zIndex","useStringValue","stringValue","formatProp","setStringValue","valueArray","validArray","filter","item","join","Date"],"sources":["../../../../../src/components/DatePicker/helpers.ts"],"sourcesContent":["import { format, isValid, parse, startOfToday } from 'date-fns';\nimport { useEffect } from 'react';\n\nimport { range } from '../../utils/array';\nimport { DateRange } from '../../utils/types/Date';\nimport { getForm } from '../FieldGroup/FieldGroup';\nimport { TextFieldPropForm } from '../TextField/TextField';\nimport { DatePickerPropType } from './types';\n\nexport const datePickerPropSeparatorDefault = '.';\nexport const datePickerPropFormatTypeDate = `dd${datePickerPropSeparatorDefault}MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeDate = `ДД${datePickerPropSeparatorDefault}ММ${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const datePickerPropFormatTypeTime = `HH:mm:ss`;\nexport const datePickerPropPlaceholderTypeTime = `ЧЧ:ММ:СС`;\n\nexport const datePickerPropFormatTypeDateTime = `${datePickerPropFormatTypeDate} ${datePickerPropFormatTypeTime}`;\nexport const datePickerPropPlaceholderTypeDateTime = `${datePickerPropPlaceholderTypeDate} ${datePickerPropPlaceholderTypeTime}`;\n\nexport const datePickerPropFormatTypeYear = `yyyy`;\nexport const datePickerPropPlaceholderTypeYear = `ГГГГ`;\n\nexport const datePickerPropFormatTypeMonth = `MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeMonth = `MM${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const normalizeRangeValue = (dateRange: DateRange): DateRange => {\n if (\n dateRange[0] &&\n dateRange[1] &&\n dateRange[0]?.getTime() > dateRange[1]?.getTime()\n ) {\n return [dateRange[1], dateRange[0]];\n }\n return dateRange;\n};\n\nexport const getMultiplicityTime = (\n format: string,\n multiplicityHours: number | undefined,\n multiplicityMinutes: number | undefined,\n multiplicitySeconds: number | undefined,\n) => {\n const markers = ['HH', 'mm', 'ss'] as const;\n const formatArray = format.split(' ')[1]?.split(':');\n const map = {\n HH: multiplicityHours,\n mm: multiplicityMinutes,\n ss: multiplicitySeconds,\n } as const;\n\n return markers.map((marker) =>\n formatArray?.indexOf(marker) < 0 ? 0 : map[marker],\n );\n};\n\nexport const getTimeEnum = (\n length: number,\n multiplicity = 1,\n startOfUnits: (date: Date) => Date,\n addUnits: (date: Date, amount: number) => Date,\n getItemLabel: (date: Date) => string,\n) => {\n const numbers = range(multiplicity ? Math.floor(length / multiplicity) : 0);\n\n if (numbers.length === 0) {\n return [];\n }\n\n const startDate = startOfUnits(startOfToday());\n\n return numbers.map((number) => {\n return getItemLabel(addUnits(startDate, number * multiplicity));\n });\n};\n\nexport const getFormForStart = (form: TextFieldPropForm) => getForm(form, 0, 2);\nexport const getFormForEnd = (form: TextFieldPropForm) => getForm(form, 1, 2);\n\nexport const getPartDate = (\n formatArray: string[],\n stringArray: string[],\n marker: string,\n) => {\n const index = formatArray.indexOf(marker);\n\n if (\n index >= 0 &&\n stringArray[index] &&\n stringArray[index].length === marker.length\n ) {\n return stringArray[index];\n }\n\n return undefined;\n};\n\nexport const getParts = (\n format: string,\n separator: string,\n withTime?: boolean,\n) => {\n if (withTime) {\n const [date, time] = format.split(' ');\n\n return [\n ...(date ? date.split(separator) : []),\n ...(time ? time.split(':') : []),\n ];\n }\n\n return format.split(separator);\n};\n\nexport const getPartsDate = (\n value: string,\n format: string,\n separator: string,\n withTime: boolean,\n markers: string[],\n) => {\n const formatArray = getParts(format, separator, withTime);\n const stringArray = getParts(value, separator, withTime);\n\n return markers.map((marker) => getPartDate(formatArray, stringArray, marker));\n};\n\nexport const isTypeWithTime = (type: DatePickerPropType) =>\n type.indexOf('time') !== -1;\n\nconst fieldPrefixs = ['start', 'end'] as const;\n\nexport const getFieldName = (\n name: [string?, string?] | string | undefined,\n rangeIndex: 0 | 1,\n) => {\n if (!name) {\n return undefined;\n }\n\n if (Array.isArray(name)) {\n return name[rangeIndex];\n }\n\n return `${name}_${fieldPrefixs[rangeIndex]}`;\n};\n\nexport const getDropdownZIndex = (style?: React.CSSProperties) =>\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined;\n\nexport const useStringValue = (\n value: Date | undefined | null,\n stringValue: string,\n formatProp: string,\n separator: string,\n setStringValue: React.Dispatch<string>,\n) => {\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n\n if (!value && stringValue) {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n const date =\n formatArray.length === validArray.length\n ? parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n )\n : undefined;\n\n if (isValid(date)) {\n setStringValue('');\n }\n }\n }, [value?.getTime()]);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["format","isValid","parse","startOfToday","useCallback","useEffect","useMutableRef","range","getForm","datePickerPropSeparatorDefault","datePickerPropFormatTypeDate","datePickerPropPlaceholderTypeDate","datePickerPropFormatTypeTime","datePickerPropPlaceholderTypeTime","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropFormatTypeYear","datePickerPropPlaceholderTypeYear","datePickerPropFormatTypeMonth","datePickerPropPlaceholderTypeMonth","normalizeRangeValue","dateRange","getTime","getMultiplicityTime","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatArray","split","map","HH","mm","ss","marker","indexOf","getTimeEnum","length","multiplicity","startOfUnits","addUnits","getItemLabel","numbers","Math","floor","startDate","number","getFormForStart","form","getFormForEnd","getPartDate","stringArray","index","getParts","separator","withTime","date","time","getPartsDate","value","markers","isTypeWithTime","type","fieldPrefixs","getFieldName","name","rangeIndex","Array","isArray","getDropdownZIndex","style","zIndex","useStringValue","formatProp","onChangeRef","imaskProps","stringValue","refs","setValue","handleClear","e","current","valueArray","validArray","filter","item","join","Date"],"sources":["../../../../../src/components/DatePicker/helpers.ts"],"sourcesContent":["import { format, isValid, parse, startOfToday } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { useIMask } from 'react-imask';\n\nimport { useMutableRef } from '##/hooks/useMutableRef';\n\nimport { range } from '../../utils/array';\nimport { DateRange } from '../../utils/types/Date';\nimport { getForm } from '../FieldGroup/FieldGroup';\nimport { TextFieldPropForm } from '../TextField/TextField';\nimport { DatePickerPropType } from './types';\n\nexport const datePickerPropSeparatorDefault = '.';\nexport const datePickerPropFormatTypeDate = `dd${datePickerPropSeparatorDefault}MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeDate = `ДД${datePickerPropSeparatorDefault}ММ${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const datePickerPropFormatTypeTime = `HH:mm:ss`;\nexport const datePickerPropPlaceholderTypeTime = `ЧЧ:ММ:СС`;\n\nexport const datePickerPropFormatTypeDateTime = `${datePickerPropFormatTypeDate} ${datePickerPropFormatTypeTime}`;\nexport const datePickerPropPlaceholderTypeDateTime = `${datePickerPropPlaceholderTypeDate} ${datePickerPropPlaceholderTypeTime}`;\n\nexport const datePickerPropFormatTypeYear = `yyyy`;\nexport const datePickerPropPlaceholderTypeYear = `ГГГГ`;\n\nexport const datePickerPropFormatTypeMonth = `MM${datePickerPropSeparatorDefault}yyyy`;\nexport const datePickerPropPlaceholderTypeMonth = `MM${datePickerPropSeparatorDefault}ГГГГ`;\n\nexport const normalizeRangeValue = (dateRange: DateRange): DateRange => {\n if (\n dateRange[0] &&\n dateRange[1] &&\n dateRange[0]?.getTime() > dateRange[1]?.getTime()\n ) {\n return [dateRange[1], dateRange[0]];\n }\n return dateRange;\n};\n\nexport const getMultiplicityTime = (\n format: string,\n multiplicityHours: number | undefined,\n multiplicityMinutes: number | undefined,\n multiplicitySeconds: number | undefined,\n) => {\n const markers = ['HH', 'mm', 'ss'] as const;\n const formatArray = format.split(' ')[1]?.split(':');\n const map = {\n HH: multiplicityHours,\n mm: multiplicityMinutes,\n ss: multiplicitySeconds,\n } as const;\n\n return markers.map((marker) =>\n formatArray?.indexOf(marker) < 0 ? 0 : map[marker],\n );\n};\n\nexport const getTimeEnum = (\n length: number,\n multiplicity = 1,\n startOfUnits: (date: Date) => Date,\n addUnits: (date: Date, amount: number) => Date,\n getItemLabel: (date: Date) => string,\n) => {\n const numbers = range(multiplicity ? Math.floor(length / multiplicity) : 0);\n\n if (numbers.length === 0) {\n return [];\n }\n\n const startDate = startOfUnits(startOfToday());\n\n return numbers.map((number) => {\n return getItemLabel(addUnits(startDate, number * multiplicity));\n });\n};\n\nexport const getFormForStart = (form: TextFieldPropForm) => getForm(form, 0, 2);\nexport const getFormForEnd = (form: TextFieldPropForm) => getForm(form, 1, 2);\n\nexport const getPartDate = (\n formatArray: string[],\n stringArray: string[],\n marker: string,\n) => {\n const index = formatArray.indexOf(marker);\n\n if (\n index >= 0 &&\n stringArray[index] &&\n stringArray[index].length === marker.length\n ) {\n return stringArray[index];\n }\n\n return undefined;\n};\n\nexport const getParts = (\n format: string,\n separator: string,\n withTime?: boolean,\n) => {\n if (withTime) {\n const [date, time] = format.split(' ');\n\n return [\n ...(date ? date.split(separator) : []),\n ...(time ? time.split(':') : []),\n ];\n }\n\n return format.split(separator);\n};\n\nexport const getPartsDate = (\n value: string,\n format: string,\n separator: string,\n withTime: boolean,\n markers: string[],\n) => {\n const formatArray = getParts(format, separator, withTime);\n const stringArray = getParts(value, separator, withTime);\n\n return markers.map((marker) => getPartDate(formatArray, stringArray, marker));\n};\n\nexport const isTypeWithTime = (type: DatePickerPropType) =>\n type.indexOf('time') !== -1;\n\nconst fieldPrefixs = ['start', 'end'] as const;\n\nexport const getFieldName = (\n name: [string?, string?] | string | undefined,\n rangeIndex: 0 | 1,\n) => {\n if (!name) {\n return undefined;\n }\n\n if (Array.isArray(name)) {\n return name[rangeIndex];\n }\n\n return `${name}_${fieldPrefixs[rangeIndex]}`;\n};\n\nexport const getDropdownZIndex = (style?: React.CSSProperties) =>\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined;\n\ntype DatePickerFieldTypeDatePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport const useStringValue = (\n value: Date | undefined | null,\n formatProp: string,\n separator: string,\n onChangeRef: React.MutableRefObject<\n DatePickerFieldTypeDatePropOnChange | undefined\n >,\n imaskProps: ReturnType<typeof useIMask>,\n) => {\n const stringValue = imaskProps.value;\n\n const refs = useMutableRef([imaskProps.setValue, value] as const);\n\n const handleClear: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n refs.current[0]('');\n if (refs.current[1]) {\n onChangeRef.current?.(null, { e: e as unknown as Event });\n }\n },\n [],\n );\n\n useEffect(() => {\n if (value && isValid(value)) {\n refs.current[0](format(value, formatProp));\n }\n\n if (!value && stringValue) {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n const date =\n formatArray.length === validArray.length\n ? parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n )\n : undefined;\n\n if (isValid(date)) {\n refs.current[0]('');\n }\n }\n }, [value?.getTime()]);\n\n return handleClear;\n};\n"],"mappings":"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"}
|
|
@@ -39,3 +39,4 @@ export declare const isValidValue: (value: number, min: number, max: number, ste
|
|
|
39
39
|
export declare const getValueByPosition: (position: TrackPosition, sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>, min: number, max: number, step?: number | number[]) => number;
|
|
40
40
|
export declare const getNewValue: (changedValue: number, currentValue: number | [number, number], step: number | number[], min: number, max: number, activeButton: ActiveButton) => number | [number, number];
|
|
41
41
|
export declare const analyzeDivisionValue: (value: number, step: number | number[], min: number, max: number) => number;
|
|
42
|
+
export declare const valueToSring: (value: number | number[] | undefined | null) => string;
|