@consta/uikit 4.14.1 → 4.15.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/AutoCompleteCanary/useAutoComplete.js +1 -1
- package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.js.map +1 -1
- package/__internal__/src/components/Combobox/helpers.d.ts +5 -2
- package/__internal__/src/components/Combobox/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts +3 -2
- 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 +2 -0
- 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/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.d.ts +3 -2
- 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 +2 -0
- 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/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.d.ts +3 -2
- 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 +2 -0
- 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/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts +3 -2
- 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 +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts +3 -2
- 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 +2 -0
- 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/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/types.d.ts +1 -0
- package/__internal__/src/components/DatePicker/types.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDate/DateTimeTypeDate.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDate/DateTimeTypeDate.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDateTime/DateTimeTypeDateTime.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDateTime/DateTimeTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeMonth/DateTimeTypeMonth.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeMonth/DateTimeTypeMonth.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/helpers.d.ts +2 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/helpers.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/helpers.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeYear/DateTimeTypeYear.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeYear/DateTimeTypeYear.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/getDaysOfMonth.d.ts +2 -1
- package/__internal__/src/components/DateTime/helpers/getDaysOfMonth.js +1 -1
- package/__internal__/src/components/DateTime/helpers/getDaysOfMonth.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/getMonthsOfYear.d.ts +2 -1
- package/__internal__/src/components/DateTime/helpers/getMonthsOfYear.js +1 -1
- package/__internal__/src/components/DateTime/helpers/getMonthsOfYear.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/getYearsOfDecade.d.ts +2 -1
- package/__internal__/src/components/DateTime/helpers/getYearsOfDecade.js +1 -1
- package/__internal__/src/components/DateTime/helpers/getYearsOfDecade.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/types.d.ts +2 -0
- package/__internal__/src/components/DateTime/helpers/types.js.map +1 -1
- package/__internal__/src/components/EventInterceptor/propsHandlers/useTextFieldEventsHandler.d.ts +3 -2
- package/__internal__/src/components/FieldLabel/FieldLabel.css +1 -1
- package/__internal__/src/components/FieldLabel/FieldLabel.d.ts +2 -0
- package/__internal__/src/components/FieldLabel/FieldLabel.js +1 -1
- package/__internal__/src/components/FieldLabel/FieldLabel.js.map +1 -1
- package/__internal__/src/components/Select/helpers.d.ts +5 -2
- package/__internal__/src/components/Select/helpers.js.map +1 -1
- package/__internal__/src/components/SelectComponents/Select.css +1 -1
- package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.d.ts +3 -1
- package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.d.ts +2 -0
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.css +1 -1
- package/__internal__/src/components/SelectComponents/types.d.ts +1 -1
- package/__internal__/src/components/SelectComponents/types.js +1 -1
- package/__internal__/src/components/SelectComponents/types.js.map +1 -1
- package/__internal__/src/components/Slider/Slider.js +1 -1
- package/__internal__/src/components/Slider/Slider.js.map +1 -1
- package/__internal__/src/components/Slider/helper.d.ts +1 -0
- package/__internal__/src/components/Slider/helper.js.map +1 -1
- package/__internal__/src/components/TagBase/TagBase.d.ts +1 -1
- package/__internal__/src/components/TextField/TextField.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/__internal__/src/components/TextField/useIMask.js +1 -1
- package/__internal__/src/components/TextField/useIMask.js.map +1 -1
- package/__internal__/src/components/User/User.js +1 -1
- package/__internal__/src/components/User/User.js.map +1 -1
- package/__internal__/src/components/UserSelect/helpers.d.ts +5 -2
- package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
- package/__internal__/src/utils/date/index.d.ts +1 -0
- package/__internal__/src/utils/date/index.js +1 -1
- package/__internal__/src/utils/date/index.js.map +1 -1
- package/__internal__/src/utils/date/isDisableDate.d.ts +8 -0
- package/__internal__/src/utils/date/isDisableDate.js +2 -0
- package/__internal__/src/utils/date/isDisableDate.js.map +1 -0
- package/__internal__/src/utils/date/isInMinMaxDade.d.ts +1 -1
- package/__internal__/src/utils/date/isInMinMaxDade.js +1 -1
- package/__internal__/src/utils/date/isInMinMaxDade.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../hooks/useClickOutside";import{useFlag}from"../../hooks/useFlag";import{useKeys}from"../../hooks/useKeys";import{getGroups}from"../../utils/getGroups";export function useAutoComplete(a){var b=a.items,c=a.dropdownRef,d=a.controlRef,e=a.disabled,f=void 0!==e&&e,g=a.getItemLabel,h=a.getItemKey,i=a.searchFunction,j=a.getItemGroupKey,k=a.groups,l=a.getGroupKey,m=a.onFocus,n=a.onBlur,o=a.searchValue,p=useRef(null),q=useFlag(),r=_slicedToArray(q,2),s=r[0],t=r[1],u=useState(0),v=_slicedToArray(u,2),w=v[0],x=v[1],y=function(a,b){return-1!==g(a).toLocaleLowerCase().indexOf(b.toLocaleLowerCase())},z=useMemo(function(){if(o&&""!==o.trim()){var a=b.filter(function(a){return i?i(a,o):y(a,o)});return a}return b},[b,o]),A=useMemo(function(){var a=getGroups(z,null!==k&&void 0!==k&&k.length?j:void 0,k,l,void 0);return a},[z,k,j,l]),B=useMemo(function(){return!!A.find(function(a){return 0<a.items.length})},[A]),C=useCallback(function(a){x(Math.min(Math.max(0,"function"==typeof a?a(w):a),z.length-1))},[z,w]),D=function(b,c){f||a.onChange({value:c,e:b})},E=function(a,b){b.preventDefault(),C(function(a){return a-1})},F=function(a,b){b.preventDefault(),C(function(a){return a+1})},G=useKeys({ArrowUp:E,ArrowDown:F,PageUp:E,PageDown:F,Home:E,End:F,Enter:function Enter(a,b){if(s){(o||z[w])&&b.preventDefault();var c=function(a){var b,c=0,d=_createForOfIteratorHelper(A);try{for(d.s();!(b=d.n()).done;){var e=b.value;if(e.items.length+c>a)return e.items[a-c];c+=e.items.length}}catch(a){d.e(a)}finally{d.f()}},d=c(w);d&&D(b,d)}},Escape:function Escape(){t.off()},Tab:function Tab(){t.off()}});useClickOutside({isActive:s,ignoreClicksInsideRefs:[c,d],handler:function handler(){t.off()}}),useEffect(function(){if(f){var a;t.off(),null===(a=p.current)||void 0===a?void 0:a.blur()}},[f]);return{isOpen
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../hooks/useClickOutside";import{useFlag}from"../../hooks/useFlag";import{useKeys}from"../../hooks/useKeys";import{getGroups}from"../../utils/getGroups";export function useAutoComplete(a){var b=a.items,c=a.dropdownRef,d=a.controlRef,e=a.disabled,f=void 0!==e&&e,g=a.getItemLabel,h=a.getItemKey,i=a.searchFunction,j=a.getItemGroupKey,k=a.groups,l=a.getGroupKey,m=a.onFocus,n=a.onBlur,o=a.searchValue,p=useRef(null),q=useFlag(),r=_slicedToArray(q,2),s=r[0],t=r[1],u=useState(0),v=_slicedToArray(u,2),w=v[0],x=v[1],y=function(a,b){return-1!==g(a).toLocaleLowerCase().indexOf(b.toLocaleLowerCase())},z=useMemo(function(){if(o&&""!==o.trim()){var a=b.filter(function(a){return i?i(a,o):y(a,o)});return a}return b},[b,o]),A=useMemo(function(){var a=getGroups(z,null!==k&&void 0!==k&&k.length?j:void 0,k,l,void 0);return a},[z,k,j,l]),B=useMemo(function(){return!!A.find(function(a){return 0<a.items.length})},[A]),C=useCallback(function(a){x(Math.min(Math.max(0,"function"==typeof a?a(w):a),z.length-1))},[z,w]),D=function(b,c){f||a.onChange({value:c,e:b})},E=function(a,b){b.preventDefault(),C(function(a){return a-1})},F=function(a,b){b.preventDefault(),C(function(a){return a+1})},G=useKeys({ArrowUp:E,ArrowDown:F,PageUp:E,PageDown:F,Home:E,End:F,Enter:function Enter(a,b){if(s){(o||z[w])&&b.preventDefault();var c=function(a){var b,c=0,d=_createForOfIteratorHelper(A);try{for(d.s();!(b=d.n()).done;){var e=b.value;if(e.items.length+c>a)return e.items[a-c];c+=e.items.length}}catch(a){d.e(a)}finally{d.f()}},d=c(w);d&&D(b,d)}},Escape:function Escape(){t.off()},Tab:function Tab(){t.off()}});useClickOutside({isActive:s,ignoreClicksInsideRefs:[c,d],handler:function handler(){t.off()}}),useEffect(function(){if(f){var a;t.off(),null===(a=p.current)||void 0===a?void 0:a.blur()}},[f]);return{isOpen:!!(s&&B&&o&&""!==(null===o||void 0===o?void 0:o.trim())),visibleItems:A,getOptionProps:function getOptionProps(a){var b=a.index,c=a.item,d=h(c);return{onClick:function onClick(a){D(a,c)},onMouseEnter:function onMouseEnter(){C(b)},active:!1,hovered:b===w,key:d}},handleInputFocus:function handleInputFocus(a){f||(!s&&t.on(),"function"==typeof m&&m(a))},handleInputBlur:function handleInputBlur(a){if(s){var b;return void(null===(b=p.current)||void 0===b?void 0:b.focus())}"function"==typeof n&&n(a)},inputRef:p,getKeyProps:G,hasItems:B}}
|
|
2
2
|
//# sourceMappingURL=useAutoComplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoComplete.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useFlag","useKeys","getGroups","useAutoComplete","params","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","getGroupKey","onFocus","onBlur","searchValue","inputRef","isOpen","setIsOpen","highlightedIndex","setHighlightedIndex","searchFunctionDefault","item","toLocaleLowerCase","indexOf","filteredOptions","trim","fiteredOptions","filter","visibleItems","resultGroups","length","hasItems","find","group","highlightIndex","indexForHighlight","Math","min","max","onChange","e","value","ArrowUp","_","preventDefault","old","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getItem","index","couter","Escape","off","Tab","isActive","ignoreClicksInsideRefs","handler","current","blur","getOptionProps","key","onClick","onMouseEnter","active","hovered","handleInputFocus","on","handleInputBlur","focus"],"sources":["../../../../../src/components/AutoCompleteCanary/useAutoComplete.ts"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useFlag } from '##/hooks/useFlag';\nimport { KeyHandler, useKeys } from '##/hooks/useKeys';\nimport { getGroups } from '##/utils/getGroups';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\n\ntype OnChangeProp<ITEM> = (props: {\n value: ITEM | null;\n e: React.SyntheticEvent;\n}) => void;\n\ntype UseAutoCompleteProps<ITEM, GROUP> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n searchValue?: string;\n onChange: OnChangeProp<ITEM>;\n};\n\ntype OptionProps<ITEM> = {\n index: number;\n item: ITEM;\n};\n\ntype GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nexport function useAutoComplete<ITEM, GROUP>(\n params: UseAutoCompleteProps<ITEM, GROUP>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n getGroupKey,\n onFocus,\n onBlur,\n searchValue,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [isOpen, setIsOpen] = useFlag();\n const [highlightedIndex, setHighlightedIndex] = useState<number>(0);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) =>\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1;\n\n const filteredOptions = useMemo(() => {\n if (searchValue && searchValue.trim() !== '') {\n const fiteredOptions = items.filter((item) =>\n searchFunction\n ? searchFunction(item, searchValue)\n : searchFunctionDefault(item, searchValue),\n );\n\n return fiteredOptions;\n }\n return items;\n }, [items, searchValue]);\n\n const visibleItems = useMemo(() => {\n const resultGroups = getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n undefined,\n );\n\n return resultGroups;\n }, [filteredOptions, groups, getItemGroupKey, getGroupKey]);\n\n const hasItems = useMemo(() => {\n return !!visibleItems.find((group) => group.items.length > 0);\n }, [visibleItems]);\n\n const highlightIndex = useCallback(\n (indexForHighlight: IndexForHighlight) => {\n setHighlightedIndex(\n Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(highlightedIndex)\n : indexForHighlight,\n ),\n filteredOptions.length - 1,\n ),\n );\n },\n [filteredOptions, highlightedIndex],\n );\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (!disabled) {\n params.onChange({ value: item, e });\n }\n };\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old - 1);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old + 1);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getItem = (index: number) => {\n let couter = 0;\n for (const group of visibleItems) {\n if (group.items.length + couter > index) {\n return group.items[index - couter];\n }\n couter += group.items.length;\n }\n return undefined;\n };\n\n const item = getItem(highlightedIndex);\n\n if (item) {\n onChange(e, item);\n }\n }\n };\n\n const Escape = (): void => {\n setIsOpen.off();\n };\n\n const Tab = (): void => {\n setIsOpen.off();\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n });\n\n const getOptionProps = ({\n index,\n item,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index);\n },\n active: false,\n hovered: index === highlightedIndex,\n key,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [dropdownRef, controlRef],\n handler: () => {\n setIsOpen.off();\n },\n });\n\n useEffect(() => {\n if (disabled) {\n setIsOpen.off();\n inputRef.current?.blur();\n }\n }, [disabled]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isOpen) {\n setIsOpen.on();\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n return {\n isOpen: isOpen && hasItems,\n visibleItems,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n inputRef,\n getKeyProps,\n hasItems,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAutoComplete.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useFlag","useKeys","getGroups","useAutoComplete","params","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","getGroupKey","onFocus","onBlur","searchValue","inputRef","isOpen","setIsOpen","highlightedIndex","setHighlightedIndex","searchFunctionDefault","item","toLocaleLowerCase","indexOf","filteredOptions","trim","fiteredOptions","filter","visibleItems","resultGroups","length","hasItems","find","group","highlightIndex","indexForHighlight","Math","min","max","onChange","e","value","ArrowUp","_","preventDefault","old","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getItem","index","couter","Escape","off","Tab","isActive","ignoreClicksInsideRefs","handler","current","blur","getOptionProps","key","onClick","onMouseEnter","active","hovered","handleInputFocus","on","handleInputBlur","focus"],"sources":["../../../../../src/components/AutoCompleteCanary/useAutoComplete.ts"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useFlag } from '##/hooks/useFlag';\nimport { KeyHandler, useKeys } from '##/hooks/useKeys';\nimport { getGroups } from '##/utils/getGroups';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\n\ntype OnChangeProp<ITEM> = (props: {\n value: ITEM | null;\n e: React.SyntheticEvent;\n}) => void;\n\ntype UseAutoCompleteProps<ITEM, GROUP> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n searchValue?: string;\n onChange: OnChangeProp<ITEM>;\n};\n\ntype OptionProps<ITEM> = {\n index: number;\n item: ITEM;\n};\n\ntype GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nexport function useAutoComplete<ITEM, GROUP>(\n params: UseAutoCompleteProps<ITEM, GROUP>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n getGroupKey,\n onFocus,\n onBlur,\n searchValue,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [isOpen, setIsOpen] = useFlag();\n const [highlightedIndex, setHighlightedIndex] = useState<number>(0);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) =>\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1;\n\n const filteredOptions = useMemo(() => {\n if (searchValue && searchValue.trim() !== '') {\n const fiteredOptions = items.filter((item) =>\n searchFunction\n ? searchFunction(item, searchValue)\n : searchFunctionDefault(item, searchValue),\n );\n\n return fiteredOptions;\n }\n return items;\n }, [items, searchValue]);\n\n const visibleItems = useMemo(() => {\n const resultGroups = getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n undefined,\n );\n\n return resultGroups;\n }, [filteredOptions, groups, getItemGroupKey, getGroupKey]);\n\n const hasItems = useMemo(() => {\n return !!visibleItems.find((group) => group.items.length > 0);\n }, [visibleItems]);\n\n const highlightIndex = useCallback(\n (indexForHighlight: IndexForHighlight) => {\n setHighlightedIndex(\n Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(highlightedIndex)\n : indexForHighlight,\n ),\n filteredOptions.length - 1,\n ),\n );\n },\n [filteredOptions, highlightedIndex],\n );\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (!disabled) {\n params.onChange({ value: item, e });\n }\n };\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old - 1);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old + 1);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getItem = (index: number) => {\n let couter = 0;\n for (const group of visibleItems) {\n if (group.items.length + couter > index) {\n return group.items[index - couter];\n }\n couter += group.items.length;\n }\n return undefined;\n };\n\n const item = getItem(highlightedIndex);\n\n if (item) {\n onChange(e, item);\n }\n }\n };\n\n const Escape = (): void => {\n setIsOpen.off();\n };\n\n const Tab = (): void => {\n setIsOpen.off();\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n });\n\n const getOptionProps = ({\n index,\n item,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index);\n },\n active: false,\n hovered: index === highlightedIndex,\n key,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [dropdownRef, controlRef],\n handler: () => {\n setIsOpen.off();\n },\n });\n\n useEffect(() => {\n if (disabled) {\n setIsOpen.off();\n inputRef.current?.blur();\n }\n }, [disabled]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isOpen) {\n setIsOpen.on();\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n return {\n isOpen: !!(isOpen && hasItems && searchValue && searchValue?.trim() !== ''),\n visibleItems,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n inputRef,\n getKeyProps,\n hasItems,\n };\n}\n"],"mappings":"86CAAA,OACEA,WADF,CAEEC,SAFF,CAGEC,OAHF,CAIEC,MAJF,CAKEC,QALF,KAMO,OANP,CAQA,OAASC,eAAT,mCACA,OAASC,OAAT,2BACA,OAAqBC,OAArB,2BACA,OAASC,SAAT,6BA0CA,MAAO,SAASC,gBAAT,CACLC,CADK,CAEL,IAEEC,EAFF,CAeID,CAfJ,CAEEC,KAFF,CAGEC,CAHF,CAeIF,CAfJ,CAGEE,WAHF,CAIEC,CAJF,CAeIH,CAfJ,CAIEG,UAJF,GAeIH,CAfJ,CAKEI,QALF,CAKEA,CALF,eAMEC,CANF,CAeIL,CAfJ,CAMEK,YANF,CAOEC,CAPF,CAeIN,CAfJ,CAOEM,UAPF,CAQEC,CARF,CAeIP,CAfJ,CAQEO,cARF,CASEC,CATF,CAeIR,CAfJ,CASEQ,eATF,CAUEC,CAVF,CAeIT,CAfJ,CAUES,MAVF,CAWEC,CAXF,CAeIV,CAfJ,CAWEU,WAXF,CAYEC,CAZF,CAeIX,CAfJ,CAYEW,OAZF,CAaEC,CAbF,CAeIZ,CAfJ,CAaEY,MAbF,CAcEC,CAdF,CAeIb,CAfJ,CAcEa,WAdF,CAiBMC,CAAQ,CAAGrB,MAAM,CAAmB,IAAnB,CAjBvB,GAkB4BG,OAAO,EAlBnC,uBAkBOmB,CAlBP,MAkBeC,CAlBf,QAmBgDtB,QAAQ,CAAS,CAAT,CAnBxD,uBAmBOuB,CAnBP,MAmByBC,CAnBzB,MAqBMC,CAAqB,CAAG,SAACC,CAAD,CAAaP,CAAb,QAGoB,CAAC,CAFjD,GAAAR,CAAY,CAACe,CAAD,CAAZ,CACGC,iBADH,GAEGC,OAFH,CAEWT,CAAW,CAACQ,iBAAZ,EAFX,CAD4B,CArB9B,CA0BME,CAAe,CAAG/B,OAAO,CAAC,UAAM,CACpC,GAAIqB,CAAW,EAA2B,EAAvB,GAAAA,CAAW,CAACW,IAAZ,EAAnB,CAA8C,CAC5C,GAAMC,EAAc,CAAGxB,CAAK,CAACyB,MAAN,CAAa,SAACN,CAAD,QAClCb,EAAc,CACVA,CAAc,CAACa,CAAD,CAAOP,CAAP,CADJ,CAEVM,CAAqB,CAACC,CAAD,CAAOP,CAAP,CAHS,CAAb,CAAvB,CAMA,MAAOY,EACR,CACD,MAAOxB,EACR,CAX8B,CAW5B,CAACA,CAAD,CAAQY,CAAR,CAX4B,CA1B/B,CAuCMc,CAAY,CAAGnC,OAAO,CAAC,UAAM,CACjC,GAAMoC,EAAY,CAAG9B,SAAS,CAC5ByB,CAD4B,CAE5B,OAAAd,CAAM,WAANA,CAAA,EAAAA,CAAM,CAAEoB,MAAR,CAAiBrB,CAAjB,OAF4B,CAG5BC,CAH4B,CAI5BC,CAJ4B,QAA9B,CAQA,MAAOkB,EACR,CAV2B,CAUzB,CAACL,CAAD,CAAkBd,CAAlB,CAA0BD,CAA1B,CAA2CE,CAA3C,CAVyB,CAvC5B,CAmDMoB,CAAQ,CAAGtC,OAAO,CAAC,UAAM,CAC7B,MAAO,CAAC,CAACmC,CAAY,CAACI,IAAb,CAAkB,SAACC,CAAD,QAAgC,EAArB,CAAAA,CAAK,CAAC/B,KAAN,CAAY4B,MAAvB,CAAlB,CACV,CAFuB,CAErB,CAACF,CAAD,CAFqB,CAnDxB,CAuDMM,CAAc,CAAG3C,WAAW,CAChC,SAAC4C,CAAD,CAA0C,CACxChB,CAAmB,CACjBiB,IAAI,CAACC,GAAL,CACED,IAAI,CAACE,GAAL,CACE,CADF,CAE+B,UAA7B,QAAOH,EAAP,CACIA,CAAiB,CAACjB,CAAD,CADrB,CAEIiB,CAJN,CADF,CAOEX,CAAe,CAACM,MAAhB,CAAyB,CAP3B,CADiB,CAWpB,CAb+B,CAchC,CAACN,CAAD,CAAkBN,CAAlB,CAdgC,CAvDlC,CAwEMqB,CAAQ,CAAG,SAACC,CAAD,CAA0BnB,CAA1B,CAAyC,CACnDhB,CADmD,EAEtDJ,CAAM,CAACsC,QAAP,CAAgB,CAAEE,KAAK,CAAEpB,CAAT,CAAemB,CAAC,CAADA,CAAf,CAAhB,CAEH,CA5ED,CAgFME,CAAmB,CAAG,SAACC,CAAD,CAAIH,CAAJ,CAAgB,CAC1CA,CAAC,CAACI,cAAF,EAD0C,CAE1CV,CAAc,CAAC,SAACW,CAAD,QAASA,EAAG,CAAG,CAAf,CAAD,CACf,CAnFD,CAqFMC,CAAqB,CAAG,SAACH,CAAD,CAAIH,CAAJ,CAAgB,CAC5CA,CAAC,CAACI,cAAF,EAD4C,CAE5CV,CAAc,CAAC,SAACW,CAAD,QAASA,EAAG,CAAG,CAAf,CAAD,CACf,CAxFD,CA2HME,CAAW,CAAGjD,OAAO,CAAC,CAC1B4C,OAAO,CAAPA,CAD0B,CAE1BI,SAAS,CAATA,CAF0B,CAG1BE,MAAM,CAAEN,CAHkB,CAI1BO,QAAQ,CAAEH,CAJgB,CAK1BI,IAAI,CAAER,CALoB,CAM1BS,GAAG,CAAEL,CANqB,CAO1BM,KAAK,CAxCmB,QAApBA,MAAoB,CAACT,CAAD,CAAIH,CAAJ,CAAgB,CACxC,GAAIxB,CAAJ,CAAY,EACNF,CAAW,EAAIU,CAAe,CAACN,CAAD,CADxB,GAERsB,CAAC,CAACI,cAAF,EAFQ,IAKJS,EAAO,CAAG,SAACC,CAAD,CAAmB,OAC7BC,CAAM,CAAG,CADoB,8BAEb3B,CAFa,MAEjC,2BAAkC,IAAvBK,EAAuB,SAChC,GAAIA,CAAK,CAAC/B,KAAN,CAAY4B,MAAZ,CAAqByB,CAArB,CAA8BD,CAAlC,CACE,MAAOrB,EAAK,CAAC/B,KAAN,CAAYoD,CAAK,CAAGC,CAApB,CAAP,CAEFA,CAAM,EAAItB,CAAK,CAAC/B,KAAN,CAAY4B,MACvB,CAPgC,+BASlC,CAdS,CAgBJT,CAAI,CAAGgC,CAAO,CAACnC,CAAD,CAhBV,CAkBNG,CAlBM,EAmBRkB,CAAQ,CAACC,CAAD,CAAInB,CAAJ,CAEX,CACF,CAU2B,CAQ1BmC,MAAM,CAhBO,QAATA,OAAS,EAAY,CACzBvC,CAAS,CAACwC,GAAV,EACD,CAM2B,CAS1BC,GAAG,CAbO,QAANA,IAAM,EAAY,CACtBzC,CAAS,CAACwC,GAAV,EACD,CAE2B,CAAD,CA3H3B,CAyJA7D,eAAe,CAAC,CACd+D,QAAQ,CAAE3C,CADI,CAEd4C,sBAAsB,CAAE,CAACzD,CAAD,CAAcC,CAAd,CAFV,CAGdyD,OAAO,CAAE,kBAAM,CACb5C,CAAS,CAACwC,GAAV,EACD,CALa,CAAD,CAzJf,CAiKAjE,SAAS,CAAC,UAAM,CACd,GAAIa,CAAJ,CAAc,OACZY,CAAS,CAACwC,GAAV,EADY,WAEZ1C,CAAQ,CAAC+C,OAFG,qBAEZ,EAAkBC,IAAlB,EACD,CACF,CALQ,CAKN,CAAC1D,CAAD,CALM,CAjKT,CA8LA,MAAO,CACLW,MAAM,CAAE,CAAC,EAAEA,CAAM,EAAIe,CAAV,EAAsBjB,CAAtB,EAA6D,EAAxB,WAAAA,CAAW,WAAXA,CAAA,QAAAA,CAAW,CAAEW,IAAb,GAAvC,CADJ,CAELG,YAAY,CAAZA,CAFK,CAGLoC,cAAc,CA1DO,QAAjBA,eAAiB,GAGwB,IAF7CV,EAE6C,GAF7CA,KAE6C,CAD7CjC,CAC6C,GAD7CA,IAC6C,CACvC4C,CAAG,CAAG1D,CAAU,CAACc,CAAD,CADuB,CAE7C,MAAO,CACL6C,OAAO,CAAE,iBAAC1B,CAAD,CAA6B,CACpCD,CAAQ,CAACC,CAAD,CAAInB,CAAJ,CACT,CAHI,CAIL8C,YAAY,CAAE,uBAAM,CAClBjC,CAAc,CAACoB,CAAD,CACf,CANI,CAOLc,MAAM,GAPD,CAQLC,OAAO,CAAEf,CAAK,GAAKpC,CARd,CASL+C,GAAG,CAAHA,CATK,CAWR,CAuCM,CAILK,gBAAgB,CA1BO,QAAnBA,iBAAmB,CAAC9B,CAAD,CAAiD,CACnEnC,CADmE,GAElE,CAACW,CAFiE,EAGpEC,CAAS,CAACsD,EAAV,EAHoE,CAK/C,UAAnB,QAAO3D,EAL2D,EAMpEA,CAAO,CAAC4B,CAAD,CAN6D,CASzE,CAaM,CAKLgC,eAAe,CAhBO,QAAlBA,gBAAkB,CAAChC,CAAD,CAAiD,CACvE,GAAIxB,CAAJ,CAAY,OAEV,sBADAD,CAAQ,CAAC+C,OACT,qBADA,EAAkBW,KAAlB,EACA,CACD,CAEqB,UAAlB,QAAO5D,EAN4D,EAOrEA,CAAM,CAAC2B,CAAD,CAET,CAEM,CAMLzB,QAAQ,CAARA,CANK,CAOLgC,WAAW,CAAXA,CAPK,CAQLhB,QAAQ,CAARA,CARK,CAUR"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IconComponent } from '@consta/icons/Icon';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
|
|
3
4
|
import { PropForm, PropSize, PropStatus, PropView, RenderItemProps } from '../SelectComponents/types';
|
|
@@ -71,6 +72,7 @@ export declare type ComboboxProps<ITEM = DefaultItem, GROUP = DefaultGroup, MULT
|
|
|
71
72
|
getGroupLabel?: PropGetGroupLabel<GROUP>;
|
|
72
73
|
getGroupKey?: PropGetGroupKey<GROUP>;
|
|
73
74
|
label?: string;
|
|
75
|
+
labelIcon?: IconComponent;
|
|
74
76
|
caption?: string;
|
|
75
77
|
labelPosition?: 'top' | 'left';
|
|
76
78
|
}, HTMLDivElement> & (ITEM extends {
|
|
@@ -103,7 +105,7 @@ export declare function withDefaultGetters<ITEM = DefaultItem, GROUP = DefaultGr
|
|
|
103
105
|
items: ITEM[];
|
|
104
106
|
onChange: PropOnChange<ITEM, MULTIPLE>;
|
|
105
107
|
disabled?: boolean | undefined;
|
|
106
|
-
form?: "default" | "round" | "brick" | "
|
|
108
|
+
form?: "default" | "round" | "defaultClear" | "defaultBrick" | "brick" | "brickDefault" | "brickClear" | "brickRound" | "roundClear" | "roundBrick" | "clearRound" | "clearDefault" | "clearBrick" | "clearClear" | undefined;
|
|
107
109
|
dropdownForm?: "default" | "round" | "brick" | undefined;
|
|
108
110
|
size?: "m" | "s" | "xs" | "l" | undefined;
|
|
109
111
|
view?: "default" | "clear" | undefined;
|
|
@@ -140,9 +142,10 @@ export declare function withDefaultGetters<ITEM = DefaultItem, GROUP = DefaultGr
|
|
|
140
142
|
getGroupLabel?: PropGetGroupLabel<GROUP> | undefined;
|
|
141
143
|
getGroupKey?: PropGetGroupKey<GROUP> | undefined;
|
|
142
144
|
label?: string | undefined;
|
|
145
|
+
labelIcon?: IconComponent | undefined;
|
|
143
146
|
caption?: string | undefined;
|
|
144
147
|
labelPosition?: "left" | "top" | undefined;
|
|
145
|
-
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "size" | "caption" | "form" | "label" | "view" | "status" | "name" | "disabled" | "value" | "multiple" | "required" | "inputRef" | "items" | "dropdownForm" | "ariaLabel" | "dropdownClassName" | "dropdownRef" | "isLoading" | "labelForEmptyItems" | "renderItem" | "renderValue" | "groups" | "getItemLabel" | "getItemKey" | "getItemGroupKey" | "getItemDisabled" | "getGroupLabel" | "getGroupKey" | "labelPosition" | "searchFunction" | "searchValue" | "labelForCreate" | "labelForNotFound" | "onCreate" | "onInputChange"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
|
|
148
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "size" | "caption" | "form" | "label" | "view" | "status" | "name" | "disabled" | "value" | "multiple" | "required" | "inputRef" | "items" | "dropdownForm" | "ariaLabel" | "dropdownClassName" | "dropdownRef" | "isLoading" | "labelForEmptyItems" | "renderItem" | "renderValue" | "groups" | "getItemLabel" | "getItemKey" | "getItemGroupKey" | "getItemDisabled" | "getGroupLabel" | "getGroupKey" | "labelIcon" | "labelPosition" | "searchFunction" | "searchValue" | "labelForCreate" | "labelForNotFound" | "onCreate" | "onInputChange"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
|
|
146
149
|
label: string;
|
|
147
150
|
} ? {} : {
|
|
148
151
|
getItemLabel: PropGetItemLabel<ITEM>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","isMultipleParams","params","multiple","isNotMultipleParams","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey"],"sources":["../../../../../src/components/Combobox/helpers.ts"],"sourcesContent":["import React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n PropForm,\n PropSize,\n PropStatus,\n PropView,\n RenderItemProps,\n} from '../SelectComponents/types';\nimport { TextFieldPropOnChange } from '../TextField/TextField';\n\nexport type DefaultItem = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type DefaultGroup = {\n label: string;\n id: string | number;\n};\n\ntype RenderValueProps<ITEM> = {\n item: ITEM;\n handleRemove?: (e: React.SyntheticEvent) => void;\n};\n\nexport type PropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type PropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type PropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type PropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;\nexport type PropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type PropGetGroupLabel<GROUP> = (group: GROUP) => string;\ntype PropSearchFunction<ITEM> = (item: ITEM, searchValue: string) => boolean;\ntype PropOnChange<ITEM, MULTIPLE extends boolean> = (props: {\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null;\n e: React.SyntheticEvent;\n}) => void;\ntype PropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactElement | null;\nexport type PropRenderValue<ITEM> = (\n props: RenderValueProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type ComboboxProps<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: PropOnChange<ITEM, MULTIPLE>;\n disabled?: boolean;\n form?: PropForm;\n dropdownForm?: 'default' | 'brick' | 'round';\n size?: PropSize;\n view?: PropView;\n placeholder?: string;\n ariaLabel?: string;\n status?: PropStatus;\n isLoading?: boolean;\n dropdownClassName?: string;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n name?: string;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: (props: { e: React.SyntheticEvent; label: string }) => void;\n inputRef?: React.RefObject<HTMLInputElement>;\n labelForNotFound?: string;\n required?: boolean;\n labelForCreate?: string;\n labelForEmptyItems?: string;\n searchFunction?: PropSearchFunction<ITEM>;\n searchValue?: string;\n multiple?: MULTIPLE;\n value?: PropValue<ITEM, MULTIPLE>;\n groups?: GROUP[];\n onInputChange?: TextFieldPropOnChange;\n getItemLabel?: PropGetItemLabel<ITEM>;\n getItemKey?: PropGetItemKey<ITEM>;\n getItemGroupKey?: PropGetItemGroupKey<ITEM>;\n getItemDisabled?: PropGetItemDisabled<ITEM>;\n getGroupLabel?: PropGetGroupLabel<GROUP>;\n getGroupKey?: PropGetGroupKey<GROUP>;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n },\n HTMLDivElement\n> &\n (ITEM extends { label: DefaultItem['label'] }\n ? {}\n : { getItemLabel: PropGetItemLabel<ITEM> }) &\n (ITEM extends { id: DefaultItem['id'] }\n ? {}\n : { getItemKey: PropGetItemKey<ITEM> }) &\n (GROUP extends { label: DefaultGroup['label'] }\n ? {}\n : { getGroupLabel: PropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: DefaultGroup['id'] }\n ? {}\n : { getGroupKey: PropGetGroupKey<GROUP> });\n\nexport type ComboboxComponent = <\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(\n props: ComboboxProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactElement | null;\n\nexport const defaultGetItemKey: PropGetItemKey<DefaultItem> = (item) => item.id;\nexport const defaultGetItemLabel: PropGetItemLabel<DefaultItem> = (item) =>\n item.label;\nexport const defaultGetItemGroupKey: PropGetItemGroupKey<DefaultItem> = (\n item,\n) => item.groupId;\nexport const defaultGetItemDisabled: PropGetItemDisabled<DefaultItem> = (\n item,\n) => item.disabled;\n\nexport const defaultGetGroupKey: PropGetGroupKey<DefaultGroup> = (group) =>\n group.id;\nexport const defaultGetGroupLabel: PropGetGroupLabel<DefaultGroup> = (group) =>\n group.label;\n\nexport const isMultipleParams = <ITEM, GROUP>(\n params: ComboboxProps<ITEM, GROUP, boolean>,\n): params is ComboboxProps<ITEM, GROUP, true> => {\n return !!params.multiple;\n};\n\nexport const isNotMultipleParams = <ITEM, GROUP>(\n params: ComboboxProps<ITEM, GROUP, boolean>,\n): params is ComboboxProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nexport function withDefaultGetters<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(props: ComboboxProps<ITEM, GROUP, MULTIPLE>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","isMultipleParams","params","multiple","isNotMultipleParams","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey"],"sources":["../../../../../src/components/Combobox/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n PropForm,\n PropSize,\n PropStatus,\n PropView,\n RenderItemProps,\n} from '../SelectComponents/types';\nimport { TextFieldPropOnChange } from '../TextField/TextField';\n\nexport type DefaultItem = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type DefaultGroup = {\n label: string;\n id: string | number;\n};\n\ntype RenderValueProps<ITEM> = {\n item: ITEM;\n handleRemove?: (e: React.SyntheticEvent) => void;\n};\n\nexport type PropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type PropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type PropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type PropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;\nexport type PropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type PropGetGroupLabel<GROUP> = (group: GROUP) => string;\ntype PropSearchFunction<ITEM> = (item: ITEM, searchValue: string) => boolean;\ntype PropOnChange<ITEM, MULTIPLE extends boolean> = (props: {\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null;\n e: React.SyntheticEvent;\n}) => void;\ntype PropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactElement | null;\nexport type PropRenderValue<ITEM> = (\n props: RenderValueProps<ITEM>,\n) => React.ReactElement | null;\n\nexport type ComboboxProps<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: PropOnChange<ITEM, MULTIPLE>;\n disabled?: boolean;\n form?: PropForm;\n dropdownForm?: 'default' | 'brick' | 'round';\n size?: PropSize;\n view?: PropView;\n placeholder?: string;\n ariaLabel?: string;\n status?: PropStatus;\n isLoading?: boolean;\n dropdownClassName?: string;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n name?: string;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: (props: { e: React.SyntheticEvent; label: string }) => void;\n inputRef?: React.RefObject<HTMLInputElement>;\n labelForNotFound?: string;\n required?: boolean;\n labelForCreate?: string;\n labelForEmptyItems?: string;\n searchFunction?: PropSearchFunction<ITEM>;\n searchValue?: string;\n multiple?: MULTIPLE;\n value?: PropValue<ITEM, MULTIPLE>;\n groups?: GROUP[];\n onInputChange?: TextFieldPropOnChange;\n getItemLabel?: PropGetItemLabel<ITEM>;\n getItemKey?: PropGetItemKey<ITEM>;\n getItemGroupKey?: PropGetItemGroupKey<ITEM>;\n getItemDisabled?: PropGetItemDisabled<ITEM>;\n getGroupLabel?: PropGetGroupLabel<GROUP>;\n getGroupKey?: PropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n },\n HTMLDivElement\n> &\n (ITEM extends { label: DefaultItem['label'] }\n ? {}\n : { getItemLabel: PropGetItemLabel<ITEM> }) &\n (ITEM extends { id: DefaultItem['id'] }\n ? {}\n : { getItemKey: PropGetItemKey<ITEM> }) &\n (GROUP extends { label: DefaultGroup['label'] }\n ? {}\n : { getGroupLabel: PropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: DefaultGroup['id'] }\n ? {}\n : { getGroupKey: PropGetGroupKey<GROUP> });\n\nexport type ComboboxComponent = <\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(\n props: ComboboxProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactElement | null;\n\nexport const defaultGetItemKey: PropGetItemKey<DefaultItem> = (item) => item.id;\nexport const defaultGetItemLabel: PropGetItemLabel<DefaultItem> = (item) =>\n item.label;\nexport const defaultGetItemGroupKey: PropGetItemGroupKey<DefaultItem> = (\n item,\n) => item.groupId;\nexport const defaultGetItemDisabled: PropGetItemDisabled<DefaultItem> = (\n item,\n) => item.disabled;\n\nexport const defaultGetGroupKey: PropGetGroupKey<DefaultGroup> = (group) =>\n group.id;\nexport const defaultGetGroupLabel: PropGetGroupLabel<DefaultGroup> = (group) =>\n group.label;\n\nexport const isMultipleParams = <ITEM, GROUP>(\n params: ComboboxProps<ITEM, GROUP, boolean>,\n): params is ComboboxProps<ITEM, GROUP, true> => {\n return !!params.multiple;\n};\n\nexport const isNotMultipleParams = <ITEM, GROUP>(\n params: ComboboxProps<ITEM, GROUP, boolean>,\n): params is ComboboxProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nexport function withDefaultGetters<\n ITEM = DefaultItem,\n GROUP = DefaultGroup,\n MULTIPLE extends boolean = false,\n>(props: ComboboxProps<ITEM, GROUP, MULTIPLE>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n };\n}\n"],"mappings":"qqBA6HA,MAAO,IAAMA,kBAA8C,CAAG,SAACC,CAAD,QAAUA,EAAI,CAACC,EAAf,CAAvD,CACP,MAAO,IAAMC,oBAAkD,CAAG,SAACF,CAAD,QAChEA,EAAI,CAACG,KAD2D,CAA3D,CAEP,MAAO,IAAMC,uBAAwD,CAAG,SACtEJ,CADsE,QAEnEA,EAAI,CAACK,OAF8D,CAAjE,CAGP,MAAO,IAAMC,uBAAwD,CAAG,SACtEN,CADsE,QAEnEA,EAAI,CAACO,QAF8D,CAAjE,CAIP,MAAO,IAAMC,mBAAiD,CAAG,SAACC,CAAD,QAC/DA,EAAK,CAACR,EADyD,CAA1D,CAEP,MAAO,IAAMS,qBAAqD,CAAG,SAACD,CAAD,QACnEA,EAAK,CAACN,KAD6D,CAA9D,CAGP,MAAO,IAAMQ,iBAAgB,CAAG,SAC9BC,CAD8B,CAEiB,CAC/C,MAAO,CAAC,CAACA,CAAM,CAACC,QACjB,CAJM,CAMP,MAAO,IAAMC,oBAAmB,CAAG,SACjCF,CADiC,CAEe,CAChD,MAAO,CAACA,CAAM,CAACC,QAChB,CAJM,CAMP,MAAO,SAASE,mBAAT,CAILC,CAJK,CAIwC,CAC7C,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBf,mBAFtC,CAGEgB,UAAU,CAAEF,CAAK,CAACE,UAAN,EAAoBnB,iBAHlC,CAIEoB,eAAe,CAAEH,CAAK,CAACG,eAAN,EAAyBf,sBAJ5C,CAKEgB,eAAe,CAAEJ,CAAK,CAACI,eAAN,EAAyBd,sBAL5C,CAMEe,aAAa,CAAEL,CAAK,CAACK,aAAN,EAAuBX,oBANxC,CAOEY,WAAW,CAAEN,CAAK,CAACM,WAAN,EAAqBd,kBAPpC,EASD"}
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare const DatePickerFieldTypeDate: React.ForwardRefExoticComponent<{
|
|
|
12
12
|
disabled?: boolean | undefined;
|
|
13
13
|
size?: "m" | "s" | "xs" | "l" | undefined;
|
|
14
14
|
view?: "default" | "clear" | undefined;
|
|
15
|
-
form?: "default" | "round" | "
|
|
15
|
+
form?: "default" | "round" | "defaultClear" | "defaultBrick" | "brick" | "brickDefault" | "brickClear" | "brickRound" | "roundClear" | "roundBrick" | "clearRound" | "clearDefault" | "clearBrick" | "clearClear" | undefined;
|
|
16
16
|
status?: "alert" | "warning" | "success" | undefined;
|
|
17
17
|
width?: "default" | "full" | undefined;
|
|
18
18
|
onFocus?: React.FocusEventHandler<HTMLElement> | undefined;
|
|
@@ -34,7 +34,8 @@ export declare const DatePickerFieldTypeDate: React.ForwardRefExoticComponent<{
|
|
|
34
34
|
maxDate?: Date | undefined;
|
|
35
35
|
focused?: boolean | undefined;
|
|
36
36
|
label?: string | undefined;
|
|
37
|
+
labelIcon?: import("@consta/icons/Icon").IconComponent | undefined;
|
|
37
38
|
caption?: string | undefined;
|
|
38
39
|
labelPosition?: "left" | "top" | undefined;
|
|
39
40
|
withClearButton?: boolean | undefined;
|
|
40
|
-
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "size" | "caption" | "form" | "label" | "view" | "separator" | "status" | "name" | "width" | "format" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "inputRef" | "focused" | "ariaLabel" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate"> & React.RefAttributes<HTMLDivElement>>;
|
|
41
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "size" | "caption" | "form" | "label" | "view" | "separator" | "status" | "name" | "width" | "format" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate"> & React.RefAttributes<HTMLDivElement>>;
|
package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.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"];import React from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeDate,datePickerPropPlaceholderTypeDate,datePickerPropSeparatorDefault}from"../helpers";import{usePicker}from"./helpers";export var DatePickerFieldTypeDate=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeDate:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeDate:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=_objectWithoutProperties(a,_excluded),r=usePicker({format:d,separator:f,onChange:i,onError:j,value:o,minDate:l,maxDate:n}),s=r.stringValue,t=r.inputRef;return React.createElement(TextField,Object.assign({},q,{type:"text",inputContainerRef:b,inputRef:useForkRef([t,p]),value:s,placeholder:h}))});
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef"];import React from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeDate,datePickerPropPlaceholderTypeDate,datePickerPropSeparatorDefault}from"../helpers";import{usePicker}from"./helpers";export var DatePickerFieldTypeDate=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeDate:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeDate:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=_objectWithoutProperties(a,_excluded),r=usePicker({format:d,separator:f,onChange:i,onError:j,value:o,minDate:l,maxDate:n}),s=r.stringValue,t=r.inputRef,u=r.clearValue;return React.createElement(TextField,Object.assign({},q,{type:"text",onChange:function(a){var b=a.e,c=a.value;return null===c&&u(b.nativeEvent)},inputContainerRef:b,inputRef:useForkRef([t,p]),value:s,placeholder:h}))});
|
|
2
2
|
//# sourceMappingURL=DatePickerFieldTypeDate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerFieldTypeDate.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeDate","datePickerPropPlaceholderTypeDate","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeDate","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","otherProps","stringValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDate,\n datePickerPropPlaceholderTypeDate,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeDateProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeDate = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeDate,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeDate,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef } = usePicker({\n format,\n separator,\n onChange,\n onError,\n value,\n minDate,\n maxDate,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oMAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,4BADF,CAEEC,iCAFF,CAGEC,8BAHF,kBAKA,OAAuCC,SAAvC,iBAEA,MAAO,IAAMC,wBAAuB,CAAGT,KAAK,CAACU,UAAN,CAGrC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAYZD,CAZY,CAEdE,MAFc,CAEdA,CAFc,YAELR,4BAFK,KAYZM,CAZY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAYZI,CAZY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,iCAJA,GAKdU,CALc,CAYZL,CAZY,CAKdK,QALc,CAMdC,CANc,CAYZN,CAZY,CAMdM,OANc,GAYZN,CAZY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAYZQ,CAZY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAYZT,CAZY,CASdS,KATc,CAUJC,CAVI,CAYZV,CAZY,CAUdW,QAVc,CAWXC,CAXW,0BAYZZ,CAZY,
|
|
1
|
+
{"version":3,"file":"DatePickerFieldTypeDate.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeDate","datePickerPropPlaceholderTypeDate","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeDate","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","otherProps","stringValue","clearValue","e","nativeEvent"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDate,\n datePickerPropPlaceholderTypeDate,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeDateProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeDate = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeDate,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeDate,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef, clearValue } = usePicker({\n format,\n separator,\n onChange,\n onError,\n value,\n minDate,\n maxDate,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n onChange={({ e, value }) => value === null && clearValue(e.nativeEvent)}\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oMAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,4BADF,CAEEC,iCAFF,CAGEC,8BAHF,kBAKA,OAAuCC,SAAvC,iBAEA,MAAO,IAAMC,wBAAuB,CAAGT,KAAK,CAACU,UAAN,CAGrC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAYZD,CAZY,CAEdE,MAFc,CAEdA,CAFc,YAELR,4BAFK,KAYZM,CAZY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAYZI,CAZY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,iCAJA,GAKdU,CALc,CAYZL,CAZY,CAKdK,QALc,CAMdC,CANc,CAYZN,CAZY,CAMdM,OANc,GAYZN,CAZY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAYZQ,CAZY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAYZT,CAZY,CASdS,KATc,CAUJC,CAVI,CAYZV,CAZY,CAUdW,QAVc,CAWXC,CAXW,0BAYZZ,CAZY,cAc8BH,SAAS,CAAC,CACtDK,MAAM,CAANA,CADsD,CAEtDC,SAAS,CAATA,CAFsD,CAGtDE,QAAQ,CAARA,CAHsD,CAItDC,OAAO,CAAPA,CAJsD,CAKtDG,KAAK,CAALA,CALsD,CAMtDF,OAAO,CAAPA,CANsD,CAOtDC,OAAO,CAAPA,CAPsD,CAAD,CAdvC,CAcRK,CAdQ,GAcRA,WAdQ,CAcKF,CAdL,GAcKA,QAdL,CAceG,CAdf,GAceA,UAdf,CAwBhB,MACE,qBAAC,SAAD,kBACMF,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,QAAQ,CAAE,eAAGG,EAAH,GAAGA,CAAH,CAAMN,CAAN,GAAMA,KAAN,OAA4B,KAAV,GAAAA,CAAK,EAAaK,CAAU,CAACC,CAAC,CAACC,WAAH,CAA9C,CAHZ,CAIE,iBAAiB,CAAEf,CAJrB,CAKE,QAAQ,CAAEX,UAAU,CAAC,CAACqB,CAAD,CAAWD,CAAX,CAAD,CALtB,CAME,KAAK,CAAEG,CANT,CAOE,WAAW,CAAET,CAPf,GAUH,CAtCsC,CAAhC"}
|
|
@@ -39,6 +39,7 @@ export declare type DatePickerFieldTypeDateProps = PropsWithHTMLAttributes<{
|
|
|
39
39
|
maxDate?: Date;
|
|
40
40
|
focused?: boolean;
|
|
41
41
|
label?: string;
|
|
42
|
+
labelIcon?: IconComponent;
|
|
42
43
|
caption?: string;
|
|
43
44
|
labelPosition?: 'top' | 'left';
|
|
44
45
|
withClearButton?: boolean;
|
|
@@ -55,5 +56,6 @@ declare type UsePickerProps = {
|
|
|
55
56
|
export declare const usePicker: (props: UsePickerProps) => {
|
|
56
57
|
stringValue: string | null;
|
|
57
58
|
inputRef: import("react").RefObject<HTMLInputElement>;
|
|
59
|
+
clearValue: (e: Event) => void;
|
|
58
60
|
};
|
|
59
61
|
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 IMask from"imask";import{useCallback,useEffect,useMemo,useState}from"react";import{useIMask}from"../../TextField";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{leapYear}from"../../../utils/date";import{datePickerPropFormatTypeDate,datePickerPropSeparatorDefault,getPartsDate}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=useMutableRef(c),k=useMutableRef(b),l=useMutableRef(d),m=useState(b&&isValid(b)?_format(b,f):null),n=_slicedToArray(m,2),o=n[0],p=n[1],q=useMutableRef(o),r=useCallback(function(a){var b=a.e,c=a.value;if(q.current!==c){p(c);var d=j.current,e=k.current;if(d){if(!c)return void(e&&d({e:b,value:null}));var m=getPartsDate(c,f,g,!1,["dd","MM","yyyy"]),n=_slicedToArray(m,3),o=n[0],r=n[1],s=n[2];if(o&&r&&s){var u=_parse("".concat(o).concat(datePickerPropSeparatorDefault).concat(r).concat(datePickerPropSeparatorDefault).concat(s),datePickerPropFormatTypeDate,new Date);if(!isWithinInterval(u,{start:i,end:h})){var t;return null===(t=l.current)||void 0===t?void 0:t.call(l,{type:datePickerErrorTypes[0],stringValue:c,dd:o,MM:r,yyyy:s,date:u}),void(e&&d({e:b,value:null}))}d({e:b,value:u})}else e&&d({e:b,value:null})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),s=useMemo(function(){return{mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getPartsDate(a,f,g,!1,["dd","MM","yyyy"]),c=_slicedToArray(b,3),d=c[0],e=c[1],h=c[2];if(d&&e&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(leapYear),datePickerPropFormatTypeDate,new Date))){var i;return null===(i=l.current)||void 0===i?void 0:i.call(l,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h}),!1}if(d&&e&&h&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(h),datePickerPropFormatTypeDate,new Date))){var j;return null===(j=l.current)||void 0===j?void 0:j.call(l,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h}),!1}return!0}}},[f,g]),t=useIMask({value:o,onChange:function(a,b){return null===r||void 0===r?void 0:r(b)},maskOptions:s}),u=t.inputRef;return useEffect(function(){b&&isValid(b)?p(_format(b,f)):(null===o||void 0===o?void 0:o.length)===f.length&&p("")},[null===b||void 0===b?void 0:b.getTime()]),{stringValue:o,inputRef:u}};
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useMemo,useState}from"react";import{useIMask}from"../../TextField";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{leapYear}from"../../../utils/date";import{datePickerPropFormatTypeDate,datePickerPropSeparatorDefault,getPartsDate}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=useMutableRef(c),k=useMutableRef(b),l=useMutableRef(d),m=useState(b&&isValid(b)?_format(b,f):null),n=_slicedToArray(m,2),o=n[0],p=n[1],q=useMutableRef(o),r=useCallback(function(a){var b=a.e,c=a.value;if(q.current!==c){p(c);var d=j.current,e=k.current;if(d){if(!c)return void(e&&d({e:b,value:null}));var m=getPartsDate(c,f,g,!1,["dd","MM","yyyy"]),n=_slicedToArray(m,3),o=n[0],r=n[1],s=n[2];if(o&&r&&s){var u=_parse("".concat(o).concat(datePickerPropSeparatorDefault).concat(r).concat(datePickerPropSeparatorDefault).concat(s),datePickerPropFormatTypeDate,new Date);if(!isWithinInterval(u,{start:i,end:h})){var t;return null===(t=l.current)||void 0===t?void 0:t.call(l,{type:datePickerErrorTypes[0],stringValue:c,dd:o,MM:r,yyyy:s,date:u}),void(e&&d({e:b,value:null}))}d({e:b,value:u})}else e&&d({e:b,value:null})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),s=useMemo(function(){return{mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getPartsDate(a,f,g,!1,["dd","MM","yyyy"]),c=_slicedToArray(b,3),d=c[0],e=c[1],h=c[2];if(d&&e&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(leapYear),datePickerPropFormatTypeDate,new Date))){var i;return null===(i=l.current)||void 0===i?void 0:i.call(l,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h}),!1}if(d&&e&&h&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(h),datePickerPropFormatTypeDate,new Date))){var j;return null===(j=l.current)||void 0===j?void 0:j.call(l,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h}),!1}return!0}}},[f,g]),t=useIMask({value:o,onChange:function(a,b){return null===r||void 0===r?void 0:r(b)},maskOptions:s}),u=t.inputRef;return useEffect(function(){b&&isValid(b)?p(_format(b,f)):(null===o||void 0===o?void 0:o.length)===f.length&&p("")},[null===b||void 0===b?void 0:b.getTime()]),{stringValue:o,inputRef:u,clearValue:function clearValue(a){p(null),null===c||void 0===c?void 0:c({e:a,value:null})}}};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","IMask","useCallback","useEffect","useMemo","useState","useIMask","useMutableRef","leapYear","datePickerPropFormatTypeDate","datePickerPropSeparatorDefault","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","stringValue","setStringValue","stringValueRef","handleChange","e","current","dd","MM","yyyy","date","Date","start","end","type","getTime","options","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","_val","params","maskOptions","inputRef","length"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDate/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport IMask from 'imask';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useIMask } from '##/components/TextField';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { leapYear } from '../../../utils/date';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDate,\n datePickerPropSeparatorDefault,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDatePropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeDateProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeDatePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeDatePropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n const stringValueRef = useMutableRef(stringValue);\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n const [dd, MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n if (dd && MM && yyyy) {\n const date = parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeDate,\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange({ e, value: null });\n }\n\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const options: IMask.InputMask<IMask.MaskedDateOptions> = useMemo(\n () =>\n ({\n mask: Date,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n dd: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [dd, MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n if (\n dd &&\n MM &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${leapYear}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n });\n return false;\n }\n if (\n dd &&\n MM &&\n yyyy &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n });\n return false;\n }\n return true;\n },\n // проблема в типах IMask\n } as unknown as IMask.InputMask<IMask.MaskedDateOptions>),\n [formatProp, separator],\n );\n\n const { inputRef } = useIMask({\n value: stringValue,\n onChange: (_val, params) => handleChange?.(params),\n maskOptions: options,\n });\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return {\n stringValue,\n inputRef,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","IMask","useCallback","useEffect","useMemo","useState","useIMask","useMutableRef","leapYear","datePickerPropFormatTypeDate","datePickerPropSeparatorDefault","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","stringValue","setStringValue","stringValueRef","handleChange","e","current","dd","MM","yyyy","date","Date","start","end","type","getTime","options","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","_val","params","maskOptions","inputRef","length","clearValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDate/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport IMask from 'imask';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useIMask } from '##/components/TextField';\n\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { leapYear } from '../../../utils/date';\nimport { PropsWithHTMLAttributes } from '../../../utils/types/PropsWithHTMLAttributes';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n TextFieldPropWidth,\n} from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDate,\n datePickerPropSeparatorDefault,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDatePropOnChange = (props: {\n e: Event;\n value: Date | null;\n}) => void;\n\nexport type DatePickerFieldTypeDateProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeDatePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n width?: TextFieldPropWidth;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n 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?: DatePickerFieldTypeDatePropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const [stringValue, setStringValue] = useState<string | null>(\n value && isValid(value) ? format(value, formatProp) : null,\n );\n const stringValueRef = useMutableRef(stringValue);\n\n const handleChange = useCallback(\n ({ e, value: stringValue }: { e: Event; value: string | null }) => {\n if (stringValueRef.current === stringValue) {\n return;\n }\n setStringValue(stringValue);\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange({ e, value: null });\n }\n return;\n }\n const [dd, MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n if (dd && MM && yyyy) {\n const date = parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeDate,\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange({ e, value: null });\n }\n\n return;\n }\n onChange({ e, value: date });\n } else if (value) {\n onChange({ e, value: null });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const options: IMask.InputMask<IMask.MaskedDateOptions> = useMemo(\n () =>\n ({\n mask: Date,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n dd: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const [dd, MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n if (\n dd &&\n MM &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${leapYear}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n });\n return false;\n }\n if (\n dd &&\n MM &&\n yyyy &&\n !isValid(\n parse(\n `${dd}${datePickerPropSeparatorDefault}${MM}${datePickerPropSeparatorDefault}${yyyy}`,\n datePickerPropFormatTypeDate,\n new Date(),\n ),\n )\n ) {\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n });\n return false;\n }\n return true;\n },\n // проблема в типах IMask\n } as unknown as IMask.InputMask<IMask.MaskedDateOptions>),\n [formatProp, separator],\n );\n\n const { inputRef } = useIMask({\n value: stringValue,\n onChange: (_val, params) => handleChange?.(params),\n maskOptions: options,\n });\n\n const clearValue = (e: Event) => {\n setStringValue(null);\n onChange?.({ e, value: null });\n };\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n } else if (stringValue?.length === formatProp.length) {\n // если количество введенных символов меньше чем в формате маски\n // то не нужно мешать вводу с клавиатуры\n // если дата была введена полностью и value пришел null,\n // то можно считать что поле нуждается в очистке\n setStringValue('');\n }\n }, [value?.getTime()]);\n\n return {\n stringValue,\n inputRef,\n clearValue,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","form","startFieldInputRef","startFieldLeftSide","startFieldRightSide","endFieldInputRef","endFieldLeftSide","endFieldRightSide","value","onChange","onError","startFieldName","endFieldName","disabled","size","view","status","autoFocus","placeholder","readOnly","required","tabIndex","ariaLabel","iconSize","format","separator","minDate","maxDate","startFieldOnBlur","startFieldOnFocus","endFieldOnBlur","endFieldOnFocus","startFieldRef","endFieldRef","startFocused","endFocused","label","labelPosition","caption","width","withClearButton"];import React,{forwardRef}from"react";import{FieldCaption}from"../../FieldCaption/FieldCaption";import{FieldLabel}from"../../FieldLabel/FieldLabel";import{DatePickerFieldTypeDate}from"../DatePickerFieldTypeDate/DatePickerFieldTypeDate";import{cnDatePickerMixRangeField}from"../DatePickerMixRangeField/DatePickerMixRangeField";import{getChangeFnRange}from"../getChangeFnRange";import{getFormForEnd,getFormForStart}from"../helpers";export var DatePickerFieldTypeDateRange=forwardRef(function(a,b){var c=a.className,d=a.form,e=void 0===d?"default":d,f=a.startFieldInputRef,g=a.startFieldLeftSide,h=a.startFieldRightSide,i=a.endFieldInputRef,j=a.endFieldLeftSide,k=a.endFieldRightSide,l=a.value,m=void 0===l?[]:l,n=a.onChange,o=a.onError,p=a.startFieldName,q=a.endFieldName,r=a.disabled,s=a.size,t=a.view,u=a.status,v=a.autoFocus,w=a.placeholder,x=a.readOnly,y=a.required,z=a.tabIndex,A=a.ariaLabel,B=a.iconSize,C=a.format,D=a.separator,E=a.minDate,F=a.maxDate,G=a.startFieldOnBlur,H=a.startFieldOnFocus,I=a.endFieldOnBlur,J=a.endFieldOnFocus,K=a.startFieldRef,L=a.endFieldRef,M=a.startFocused,N=a.endFocused,O=a.label,P=a.
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","form","startFieldInputRef","startFieldLeftSide","startFieldRightSide","endFieldInputRef","endFieldLeftSide","endFieldRightSide","value","onChange","onError","startFieldName","endFieldName","disabled","size","view","status","autoFocus","placeholder","readOnly","required","tabIndex","ariaLabel","iconSize","format","separator","minDate","maxDate","startFieldOnBlur","startFieldOnFocus","endFieldOnBlur","endFieldOnFocus","startFieldRef","endFieldRef","startFocused","endFocused","label","labelIcon","labelPosition","caption","width","withClearButton"];import React,{forwardRef}from"react";import{FieldCaption}from"../../FieldCaption/FieldCaption";import{FieldLabel}from"../../FieldLabel/FieldLabel";import{DatePickerFieldTypeDate}from"../DatePickerFieldTypeDate/DatePickerFieldTypeDate";import{cnDatePickerMixRangeField}from"../DatePickerMixRangeField/DatePickerMixRangeField";import{getChangeFnRange}from"../getChangeFnRange";import{getFormForEnd,getFormForStart}from"../helpers";export var DatePickerFieldTypeDateRange=forwardRef(function(a,b){var c=a.className,d=a.form,e=void 0===d?"default":d,f=a.startFieldInputRef,g=a.startFieldLeftSide,h=a.startFieldRightSide,i=a.endFieldInputRef,j=a.endFieldLeftSide,k=a.endFieldRightSide,l=a.value,m=void 0===l?[]:l,n=a.onChange,o=a.onError,p=a.startFieldName,q=a.endFieldName,r=a.disabled,s=a.size,t=a.view,u=a.status,v=a.autoFocus,w=a.placeholder,x=a.readOnly,y=a.required,z=a.tabIndex,A=a.ariaLabel,B=a.iconSize,C=a.format,D=a.separator,E=a.minDate,F=a.maxDate,G=a.startFieldOnBlur,H=a.startFieldOnFocus,I=a.endFieldOnBlur,J=a.endFieldOnFocus,K=a.startFieldRef,L=a.endFieldRef,M=a.startFocused,N=a.endFocused,O=a.label,P=a.labelIcon,Q=a.labelPosition,R=a.caption,S=a.width,T=a.withClearButton,U=_objectWithoutProperties(a,_excluded),V={className:cnDatePickerMixRangeField("Field"),disabled:r,onError:o,size:s,view:t,status:u,autoFocus:v,placeholder:w,readOnly:x,required:y,tabIndex:z,ariaLabel:A,iconSize:B,format:C,separator:D,minDate:E,maxDate:F,withClearButton:T},W=getChangeFnRange(n,o,m),X=_slicedToArray(W,2),Y=X[0],Z=X[1];return React.createElement("div",Object.assign({},U,{className:cnDatePickerMixRangeField({view:t,labelPosition:Q,width:S,size:s},[c]),ref:b}),O&&React.createElement(FieldLabel,{required:y,className:cnDatePickerMixRangeField("Label",{labelPosition:Q}),size:s,icon:P},O),React.createElement("div",{className:cnDatePickerMixRangeField("Body")},React.createElement("div",{className:cnDatePickerMixRangeField("Fields")},React.createElement(DatePickerFieldTypeDate,Object.assign({},V,{inputRef:f,ref:K,leftSide:g,rightSide:h,form:getFormForStart(e),value:null===m||void 0===m?void 0:m[0],onChange:Y,onFocus:H,onBlur:G,focused:M,name:p})),React.createElement(DatePickerFieldTypeDate,Object.assign({},V,{name:q,inputRef:i,ref:L,leftSide:j,rightSide:k,form:getFormForEnd(e),value:null===m||void 0===m?void 0:m[1],onChange:Z,onFocus:J,onBlur:I,focused:N}))),R&&React.createElement(FieldCaption,{className:cnDatePickerMixRangeField("Caption"),status:u},R)))});
|
|
2
2
|
//# sourceMappingURL=DatePickerFieldTypeDateRange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerFieldTypeDateRange.js","names":["React","forwardRef","FieldCaption","FieldLabel","DatePickerFieldTypeDate","cnDatePickerMixRangeField","getChangeFnRange","getFormForEnd","getFormForStart","DatePickerFieldTypeDateRange","props","ref","className","form","startFieldInputRef","startFieldLeftSide","startFieldRightSide","endFieldInputRef","endFieldLeftSide","endFieldRightSide","value","onChange","onError","startFieldName","endFieldName","disabled","size","view","status","autoFocus","placeholder","readOnly","required","tabIndex","ariaLabel","iconSize","format","separator","minDate","maxDate","startFieldOnBlur","startFieldOnFocus","endFieldOnBlur","endFieldOnFocus","startFieldRef","endFieldRef","startFocused","endFocused","label","labelPosition","caption","width","withClearButton","otherProps","commonProps","handleStartDateChange","handleEndDateChange"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { FieldCaption } from '../../FieldCaption/FieldCaption';\nimport { FieldLabel } from '../../FieldLabel/FieldLabel';\nimport { DatePickerFieldTypeDate } from '../DatePickerFieldTypeDate/DatePickerFieldTypeDate';\nimport { cnDatePickerMixRangeField } from '../DatePickerMixRangeField/DatePickerMixRangeField';\nimport { getChangeFnRange } from '../getChangeFnRange';\nimport { getFormForEnd, getFormForStart } from '../helpers';\nimport { DatePickerFieldTypeDateRangeProps } from './helpers';\n\nexport const DatePickerFieldTypeDateRange = forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateRangeProps\n>((props, ref) => {\n const {\n className,\n form = 'default',\n startFieldInputRef,\n startFieldLeftSide,\n startFieldRightSide,\n endFieldInputRef,\n endFieldLeftSide,\n endFieldRightSide,\n value = [],\n onChange,\n onError,\n startFieldName,\n endFieldName,\n disabled,\n size,\n view,\n status,\n autoFocus,\n placeholder,\n readOnly,\n required,\n tabIndex,\n ariaLabel,\n iconSize,\n format,\n separator,\n minDate,\n maxDate,\n startFieldOnBlur,\n startFieldOnFocus,\n endFieldOnBlur,\n endFieldOnFocus,\n startFieldRef,\n endFieldRef,\n startFocused,\n endFocused,\n label,\n labelPosition,\n caption,\n width,\n withClearButton,\n ...otherProps\n } = props;\n\n const commonProps = {\n className: cnDatePickerMixRangeField('Field'),\n disabled,\n onError,\n size,\n view,\n status,\n autoFocus,\n placeholder,\n readOnly,\n required,\n tabIndex,\n ariaLabel,\n iconSize,\n format,\n separator,\n minDate,\n maxDate,\n withClearButton,\n };\n\n const [handleStartDateChange, handleEndDateChange] = getChangeFnRange(\n onChange,\n onError,\n value,\n );\n\n return (\n <div\n {...otherProps}\n className={cnDatePickerMixRangeField(\n { view, labelPosition, width, size },\n [className],\n )}\n ref={ref}\n >\n {label && (\n <FieldLabel\n required={required}\n className={cnDatePickerMixRangeField('Label', { labelPosition })}\n size={size}\n >\n {label}\n </FieldLabel>\n )}\n <div className={cnDatePickerMixRangeField('Body')}>\n <div className={cnDatePickerMixRangeField('Fields')}>\n <DatePickerFieldTypeDate\n {...commonProps}\n inputRef={startFieldInputRef}\n ref={startFieldRef}\n leftSide={startFieldLeftSide}\n rightSide={startFieldRightSide}\n form={getFormForStart(form)}\n value={value?.[0]}\n onChange={handleStartDateChange}\n onFocus={startFieldOnFocus}\n onBlur={startFieldOnBlur}\n focused={startFocused}\n name={startFieldName}\n />\n <DatePickerFieldTypeDate\n {...commonProps}\n name={endFieldName}\n inputRef={endFieldInputRef}\n ref={endFieldRef}\n leftSide={endFieldLeftSide}\n rightSide={endFieldRightSide}\n form={getFormForEnd(form)}\n value={value?.[1]}\n onChange={handleEndDateChange}\n onFocus={endFieldOnFocus}\n onBlur={endFieldOnBlur}\n focused={endFocused}\n />\n </div>\n {caption && (\n <FieldCaption\n className={cnDatePickerMixRangeField('Caption')}\n status={status}\n >\n {caption}\n </FieldCaption>\n )}\n </div>\n </div>\n );\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePickerFieldTypeDateRange.js","names":["React","forwardRef","FieldCaption","FieldLabel","DatePickerFieldTypeDate","cnDatePickerMixRangeField","getChangeFnRange","getFormForEnd","getFormForStart","DatePickerFieldTypeDateRange","props","ref","className","form","startFieldInputRef","startFieldLeftSide","startFieldRightSide","endFieldInputRef","endFieldLeftSide","endFieldRightSide","value","onChange","onError","startFieldName","endFieldName","disabled","size","view","status","autoFocus","placeholder","readOnly","required","tabIndex","ariaLabel","iconSize","format","separator","minDate","maxDate","startFieldOnBlur","startFieldOnFocus","endFieldOnBlur","endFieldOnFocus","startFieldRef","endFieldRef","startFocused","endFocused","label","labelIcon","labelPosition","caption","width","withClearButton","otherProps","commonProps","handleStartDateChange","handleEndDateChange"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { FieldCaption } from '../../FieldCaption/FieldCaption';\nimport { FieldLabel } from '../../FieldLabel/FieldLabel';\nimport { DatePickerFieldTypeDate } from '../DatePickerFieldTypeDate/DatePickerFieldTypeDate';\nimport { cnDatePickerMixRangeField } from '../DatePickerMixRangeField/DatePickerMixRangeField';\nimport { getChangeFnRange } from '../getChangeFnRange';\nimport { getFormForEnd, getFormForStart } from '../helpers';\nimport { DatePickerFieldTypeDateRangeProps } from './helpers';\n\nexport const DatePickerFieldTypeDateRange = forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateRangeProps\n>((props, ref) => {\n const {\n className,\n form = 'default',\n startFieldInputRef,\n startFieldLeftSide,\n startFieldRightSide,\n endFieldInputRef,\n endFieldLeftSide,\n endFieldRightSide,\n value = [],\n onChange,\n onError,\n startFieldName,\n endFieldName,\n disabled,\n size,\n view,\n status,\n autoFocus,\n placeholder,\n readOnly,\n required,\n tabIndex,\n ariaLabel,\n iconSize,\n format,\n separator,\n minDate,\n maxDate,\n startFieldOnBlur,\n startFieldOnFocus,\n endFieldOnBlur,\n endFieldOnFocus,\n startFieldRef,\n endFieldRef,\n startFocused,\n endFocused,\n label,\n labelIcon,\n labelPosition,\n caption,\n width,\n withClearButton,\n ...otherProps\n } = props;\n\n const commonProps = {\n className: cnDatePickerMixRangeField('Field'),\n disabled,\n onError,\n size,\n view,\n status,\n autoFocus,\n placeholder,\n readOnly,\n required,\n tabIndex,\n ariaLabel,\n iconSize,\n format,\n separator,\n minDate,\n maxDate,\n withClearButton,\n };\n\n const [handleStartDateChange, handleEndDateChange] = getChangeFnRange(\n onChange,\n onError,\n value,\n );\n\n return (\n <div\n {...otherProps}\n className={cnDatePickerMixRangeField(\n { view, labelPosition, width, size },\n [className],\n )}\n ref={ref}\n >\n {label && (\n <FieldLabel\n required={required}\n className={cnDatePickerMixRangeField('Label', { labelPosition })}\n size={size}\n icon={labelIcon}\n >\n {label}\n </FieldLabel>\n )}\n <div className={cnDatePickerMixRangeField('Body')}>\n <div className={cnDatePickerMixRangeField('Fields')}>\n <DatePickerFieldTypeDate\n {...commonProps}\n inputRef={startFieldInputRef}\n ref={startFieldRef}\n leftSide={startFieldLeftSide}\n rightSide={startFieldRightSide}\n form={getFormForStart(form)}\n value={value?.[0]}\n onChange={handleStartDateChange}\n onFocus={startFieldOnFocus}\n onBlur={startFieldOnBlur}\n focused={startFocused}\n name={startFieldName}\n />\n <DatePickerFieldTypeDate\n {...commonProps}\n name={endFieldName}\n inputRef={endFieldInputRef}\n ref={endFieldRef}\n leftSide={endFieldLeftSide}\n rightSide={endFieldRightSide}\n form={getFormForEnd(form)}\n value={value?.[1]}\n onChange={handleEndDateChange}\n onFocus={endFieldOnFocus}\n onBlur={endFieldOnBlur}\n focused={endFocused}\n />\n </div>\n {caption && (\n <FieldCaption\n className={cnDatePickerMixRangeField('Caption')}\n status={status}\n >\n {caption}\n </FieldCaption>\n )}\n </div>\n </div>\n );\n});\n"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export declare const DatePickerFieldTypeDateTime: React.ForwardRefExoticComponen
|
|
|
12
12
|
disabled?: boolean | undefined;
|
|
13
13
|
size?: "m" | "s" | "xs" | "l" | undefined;
|
|
14
14
|
view?: "default" | "clear" | undefined;
|
|
15
|
-
form?: "default" | "round" | "
|
|
15
|
+
form?: "default" | "round" | "defaultClear" | "defaultBrick" | "brick" | "brickDefault" | "brickClear" | "brickRound" | "roundClear" | "roundBrick" | "clearRound" | "clearDefault" | "clearBrick" | "clearClear" | undefined;
|
|
16
16
|
status?: "alert" | "warning" | "success" | undefined;
|
|
17
17
|
width?: "default" | "full" | undefined;
|
|
18
18
|
onFocus?: React.FocusEventHandler<HTMLElement> | undefined;
|
|
@@ -37,7 +37,8 @@ export declare const DatePickerFieldTypeDateTime: React.ForwardRefExoticComponen
|
|
|
37
37
|
multiplicityMinutes?: number | undefined;
|
|
38
38
|
multiplicityHours?: number | undefined;
|
|
39
39
|
label?: string | undefined;
|
|
40
|
+
labelIcon?: import("@consta/icons/Icon").IconComponent | undefined;
|
|
40
41
|
caption?: string | undefined;
|
|
41
42
|
labelPosition?: "left" | "top" | undefined;
|
|
42
43
|
withClearButton?: boolean | undefined;
|
|
43
|
-
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "size" | "caption" | "form" | "label" | "view" | "separator" | "status" | "name" | "width" | "format" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "inputRef" | "focused" | "ariaLabel" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "multiplicitySeconds" | "multiplicityMinutes" | "multiplicityHours"> & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "size" | "caption" | "form" | "label" | "view" | "separator" | "status" | "name" | "width" | "format" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "multiplicitySeconds" | "multiplicityMinutes" | "multiplicityHours"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -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"];import React from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeDateTime,datePickerPropPlaceholderTypeDateTime,datePickerPropSeparatorDefault}from"../helpers";import{usePicker}from"./helpers";export var DatePickerFieldTypeDateTime=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeDateTime:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeDateTime:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=a.multiplicityHours,r=a.multiplicitySeconds,s=a.multiplicityMinutes,t=_objectWithoutProperties(a,_excluded),u=usePicker({onChange:i,value:o,onError:j,maxDate:n,minDate:l,multiplicityHours:q,multiplicityMinutes:s,multiplicitySeconds:r,separator:f,format:d}),v=u.stringValue,w=u.inputRef;return React.createElement(TextField,Object.assign({},t,{type:"text",inputContainerRef:b,inputRef:useForkRef([w,p]),value:v,placeholder:h}))});
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes"];import React from"react";import{useForkRef}from"../../../hooks/useForkRef/useForkRef";import{maxDateDefault,minDateDefault}from"../../../utils/date";import{TextField}from"../../TextField/TextField";import{datePickerPropFormatTypeDateTime,datePickerPropPlaceholderTypeDateTime,datePickerPropSeparatorDefault}from"../helpers";import{usePicker}from"./helpers";export var DatePickerFieldTypeDateTime=React.forwardRef(function(a,b){var c=a.format,d=void 0===c?datePickerPropFormatTypeDateTime:c,e=a.separator,f=void 0===e?datePickerPropSeparatorDefault:e,g=a.placeholder,h=void 0===g?datePickerPropPlaceholderTypeDateTime:g,i=a.onChange,j=a.onError,k=a.minDate,l=void 0===k?minDateDefault:k,m=a.maxDate,n=void 0===m?maxDateDefault:m,o=a.value,p=a.inputRef,q=a.multiplicityHours,r=a.multiplicitySeconds,s=a.multiplicityMinutes,t=_objectWithoutProperties(a,_excluded),u=usePicker({onChange:i,value:o,onError:j,maxDate:n,minDate:l,multiplicityHours:q,multiplicityMinutes:s,multiplicitySeconds:r,separator:f,format:d}),v=u.stringValue,w=u.inputRef,x=u.clearValue;return React.createElement(TextField,Object.assign({},t,{type:"text",onChange:function(a){var b=a.e,c=a.value;return null===c&&x(b.nativeEvent)},inputContainerRef:b,inputRef:useForkRef([w,p]),value:v,placeholder:h}))});
|
|
2
2
|
//# sourceMappingURL=DatePickerFieldTypeDateTime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerFieldTypeDateTime.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeDateTime","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","otherProps","stringValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDateTime,\n datePickerPropPlaceholderTypeDateTime,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeDateTimeProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeDateTime = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateTimeProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeDateTime,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeDateTime,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef } = usePicker({\n onChange,\n value,\n onError,\n maxDate,\n minDate,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n separator,\n format,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oQAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,gCADF,CAEEC,qCAFF,CAGEC,8BAHF,kBAKA,OAA2CC,SAA3C,iBAEA,MAAO,IAAMC,4BAA2B,CAAGT,KAAK,CAACU,UAAN,CAGzC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAeZD,CAfY,CAEdE,MAFc,CAEdA,CAFc,YAELR,gCAFK,KAeZM,CAfY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAeZI,CAfY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,qCAJA,GAKdU,CALc,CAeZL,CAfY,CAKdK,QALc,CAMdC,CANc,CAeZN,CAfY,CAMdM,OANc,GAeZN,CAfY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAeZQ,CAfY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAeZT,CAfY,CASdS,KATc,CAUJC,CAVI,CAeZV,CAfY,CAUdW,QAVc,CAWdC,CAXc,CAeZZ,CAfY,CAWdY,iBAXc,CAYdC,CAZc,CAeZb,CAfY,CAYda,mBAZc,CAadC,CAbc,CAeZd,CAfY,CAadc,mBAbc,CAcXC,CAdW,0BAeZf,CAfY,
|
|
1
|
+
{"version":3,"file":"DatePickerFieldTypeDateTime.js","names":["React","useForkRef","maxDateDefault","minDateDefault","TextField","datePickerPropFormatTypeDateTime","datePickerPropPlaceholderTypeDateTime","datePickerPropSeparatorDefault","usePicker","DatePickerFieldTypeDateTime","forwardRef","props","ref","format","separator","placeholder","onChange","onError","minDate","maxDate","value","inputRefProp","inputRef","multiplicityHours","multiplicitySeconds","multiplicityMinutes","otherProps","stringValue","clearValue","e","nativeEvent"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useForkRef } from '../../../hooks/useForkRef/useForkRef';\nimport { maxDateDefault, minDateDefault } from '../../../utils/date';\nimport { TextField } from '../../TextField/TextField';\nimport {\n datePickerPropFormatTypeDateTime,\n datePickerPropPlaceholderTypeDateTime,\n datePickerPropSeparatorDefault,\n} from '../helpers';\nimport { DatePickerFieldTypeDateTimeProps, usePicker } from './helpers';\n\nexport const DatePickerFieldTypeDateTime = React.forwardRef<\n HTMLDivElement,\n DatePickerFieldTypeDateTimeProps\n>((props, ref) => {\n const {\n format = datePickerPropFormatTypeDateTime,\n separator = datePickerPropSeparatorDefault,\n placeholder = datePickerPropPlaceholderTypeDateTime,\n onChange,\n onError,\n minDate = minDateDefault,\n maxDate = maxDateDefault,\n value,\n inputRef: inputRefProp,\n multiplicityHours,\n multiplicitySeconds,\n multiplicityMinutes,\n ...otherProps\n } = props;\n\n const { stringValue, inputRef, clearValue } = usePicker({\n onChange,\n value,\n onError,\n maxDate,\n minDate,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n separator,\n format,\n });\n\n return (\n <TextField\n {...otherProps}\n type=\"text\"\n onChange={({ e, value }) => value === null && clearValue(e.nativeEvent)}\n inputContainerRef={ref}\n inputRef={useForkRef([inputRef, inputRefProp])}\n value={stringValue}\n placeholder={placeholder}\n />\n );\n});\n"],"mappings":"oQAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,UAAT,4CACA,OAASC,cAAT,CAAyBC,cAAzB,2BACA,OAASC,SAAT,iCACA,OACEC,gCADF,CAEEC,qCAFF,CAGEC,8BAHF,kBAKA,OAA2CC,SAA3C,iBAEA,MAAO,IAAMC,4BAA2B,CAAGT,KAAK,CAACU,UAAN,CAGzC,SAACC,CAAD,CAAQC,CAAR,CAAgB,OAeZD,CAfY,CAEdE,MAFc,CAEdA,CAFc,YAELR,gCAFK,KAeZM,CAfY,CAGdG,SAHc,CAGdA,CAHc,YAGFP,8BAHE,KAeZI,CAfY,CAIdI,WAJc,CAIdA,CAJc,YAIAT,qCAJA,GAKdU,CALc,CAeZL,CAfY,CAKdK,QALc,CAMdC,CANc,CAeZN,CAfY,CAMdM,OANc,GAeZN,CAfY,CAOdO,OAPc,CAOdA,CAPc,YAOJf,cAPI,KAeZQ,CAfY,CAQdQ,OARc,CAQdA,CARc,YAQJjB,cARI,GASdkB,CATc,CAeZT,CAfY,CASdS,KATc,CAUJC,CAVI,CAeZV,CAfY,CAUdW,QAVc,CAWdC,CAXc,CAeZZ,CAfY,CAWdY,iBAXc,CAYdC,CAZc,CAeZb,CAfY,CAYda,mBAZc,CAadC,CAbc,CAeZd,CAfY,CAadc,mBAbc,CAcXC,CAdW,0BAeZf,CAfY,cAiB8BH,SAAS,CAAC,CACtDQ,QAAQ,CAARA,CADsD,CAEtDI,KAAK,CAALA,CAFsD,CAGtDH,OAAO,CAAPA,CAHsD,CAItDE,OAAO,CAAPA,CAJsD,CAKtDD,OAAO,CAAPA,CALsD,CAMtDK,iBAAiB,CAAjBA,CANsD,CAOtDE,mBAAmB,CAAnBA,CAPsD,CAQtDD,mBAAmB,CAAnBA,CARsD,CAStDV,SAAS,CAATA,CATsD,CAUtDD,MAAM,CAANA,CAVsD,CAAD,CAjBvC,CAiBRc,CAjBQ,GAiBRA,WAjBQ,CAiBKL,CAjBL,GAiBKA,QAjBL,CAiBeM,CAjBf,GAiBeA,UAjBf,CA8BhB,MACE,qBAAC,SAAD,kBACMF,CADN,EAEE,IAAI,CAAC,MAFP,CAGE,QAAQ,CAAE,eAAGG,EAAH,GAAGA,CAAH,CAAMT,CAAN,GAAMA,KAAN,OAA4B,KAAV,GAAAA,CAAK,EAAaQ,CAAU,CAACC,CAAC,CAACC,WAAH,CAA9C,CAHZ,CAIE,iBAAiB,CAAElB,CAJrB,CAKE,QAAQ,CAAEX,UAAU,CAAC,CAACqB,CAAD,CAAWD,CAAX,CAAD,CALtB,CAME,KAAK,CAAEM,CANT,CAOE,WAAW,CAAEZ,CAPf,GAUH,CA5C0C,CAApC"}
|
|
@@ -42,6 +42,7 @@ export declare type DatePickerFieldTypeDateTimeProps = PropsWithHTMLAttributes<{
|
|
|
42
42
|
multiplicityMinutes?: number;
|
|
43
43
|
multiplicityHours?: number;
|
|
44
44
|
label?: string;
|
|
45
|
+
labelIcon?: IconComponent;
|
|
45
46
|
caption?: string;
|
|
46
47
|
labelPosition?: 'top' | 'left';
|
|
47
48
|
withClearButton?: boolean;
|
|
@@ -61,5 +62,6 @@ declare type UsePickerProps = {
|
|
|
61
62
|
export declare const usePicker: (props: UsePickerProps) => {
|
|
62
63
|
stringValue: string | null;
|
|
63
64
|
inputRef: React.RefObject<HTMLInputElement>;
|
|
65
|
+
clearValue: (e: Event) => void;
|
|
64
66
|
};
|
|
65
67
|
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 IMask from"imask";import{useCallback,useEffect,useMemo,useState}from"react";import{useIMask}from"../../TextField";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{leapYear}from"../../../utils/date";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{datePickerPropFormatTypeDate,datePickerPropFormatTypeDateTime,datePickerPropSeparatorDefault,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=a.multiplicityHours,k=a.multiplicityMinutes,l=a.multiplicitySeconds,m=useMutableRef(c),n=useMutableRef(b),o=useMutableRef(d),p=useState(b&&isValid(b)?_format(b,f):null),q=_slicedToArray(p,2),r=q[0],s=q[1],t=useMutableRef(r),u=useMemo(function(){return getParts(f,g,!0)},[f,g]),v=useCallback(function(a){var b=a.e,c=a.value;if(t.current!==c){s(c);var d=m.current,e=n.current;if(d){if(!c)return void(e&&d({e:b,value:null}));var j=getPartsDate(c,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),k=_slicedToArray(j,6),l=k[0],p=k[1],q=k[2],r=k[3],v=k[4],w=k[5];if(j.filter(function(a){return!!a}).length===u.length){var y=_parse("".concat(l).concat(datePickerPropSeparatorDefault).concat(p).concat(datePickerPropSeparatorDefault).concat(q," ").concat(r||"00",":").concat(v||"00",":").concat(w||"00"),datePickerPropFormatTypeDateTime,new Date);if(!isWithinInterval(y,{start:i,end:h})){var x;return null===(x=o.current)||void 0===x?void 0:x.call(o,{type:datePickerErrorTypes[0],stringValue:c,dd:l,MM:p,yyyy:q,date:y,HH:r,mm:v,ss:w}),void(e&&d({e:b,value:null}))}d({e:b,value:y})}else e&&d({e:b,value:null})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),w=useMemo(function(){return{mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31},HH:j&&1<j?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,j,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:k&&1<k?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,k,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:l&&1<l?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,l,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),c=_slicedToArray(b,6),d=c[0],e=c[1],h=c[2],i=c[3],j=c[4],k=c[5];if(d&&e&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(leapYear),datePickerPropFormatTypeDate,new Date))){var l;return null===(l=o.current)||void 0===l?void 0:l.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h,HH:i,mm:j,ss:k}),!1}if(d&&e&&h&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(h),datePickerPropFormatTypeDate,new Date))){var m;return null===(m=o.current)||void 0===m?void 0:m.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h,HH:i,mm:j,ss:k}),!1}return!0}}},[f,g,j,l,k]),x=useIMask({value:r,onChange:function(a,b){return null===v||void 0===v?void 0:v(b)},maskOptions:w}),y=x.inputRef;return useEffect(function(){b&&isValid(b)?s(_format(b,f)):(null===r||void 0===r?void 0:r.length)===f.length&&s("")},[null===b||void 0===b?void 0:b.getTime()]),{stringValue:r,inputRef:y}};
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,isWithinInterval,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import IMask from"imask";import{useCallback,useEffect,useMemo,useState}from"react";import{useIMask}from"../../TextField";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{leapYear}from"../../../utils/date";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{datePickerPropFormatTypeDate,datePickerPropFormatTypeDateTime,datePickerPropSeparatorDefault,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=a.multiplicityHours,k=a.multiplicityMinutes,l=a.multiplicitySeconds,m=useMutableRef(c),n=useMutableRef(b),o=useMutableRef(d),p=useState(b&&isValid(b)?_format(b,f):null),q=_slicedToArray(p,2),r=q[0],s=q[1],t=useMutableRef(r),u=useMemo(function(){return getParts(f,g,!0)},[f,g]),v=useCallback(function(a){var b=a.e,c=a.value;if(t.current!==c){s(c);var d=m.current,e=n.current;if(d){if(!c)return void(e&&d({e:b,value:null}));var j=getPartsDate(c,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),k=_slicedToArray(j,6),l=k[0],p=k[1],q=k[2],r=k[3],v=k[4],w=k[5];if(j.filter(function(a){return!!a}).length===u.length){var y=_parse("".concat(l).concat(datePickerPropSeparatorDefault).concat(p).concat(datePickerPropSeparatorDefault).concat(q," ").concat(r||"00",":").concat(v||"00",":").concat(w||"00"),datePickerPropFormatTypeDateTime,new Date);if(!isWithinInterval(y,{start:i,end:h})){var x;return null===(x=o.current)||void 0===x?void 0:x.call(o,{type:datePickerErrorTypes[0],stringValue:c,dd:l,MM:p,yyyy:q,date:y,HH:r,mm:v,ss:w}),void(e&&d({e:b,value:null}))}d({e:b,value:y})}else e&&d({e:b,value:null})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),w=useMemo(function(){return{mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31},HH:j&&1<j?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,j,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:k&&1<k?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,k,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:l&&1<l?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,l,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),c=_slicedToArray(b,6),d=c[0],e=c[1],h=c[2],i=c[3],j=c[4],k=c[5];if(d&&e&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(leapYear),datePickerPropFormatTypeDate,new Date))){var l;return null===(l=o.current)||void 0===l?void 0:l.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h,HH:i,mm:j,ss:k}),!1}if(d&&e&&h&&!isValid(_parse("".concat(d).concat(datePickerPropSeparatorDefault).concat(e).concat(datePickerPropSeparatorDefault).concat(h),datePickerPropFormatTypeDate,new Date))){var m;return null===(m=o.current)||void 0===m?void 0:m.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:d,MM:e,yyyy:h,HH:i,mm:j,ss:k}),!1}return!0}}},[f,g,j,l,k]),x=useIMask({value:r,onChange:function(a,b){return null===v||void 0===v?void 0:v(b)},maskOptions:w}),y=x.inputRef;return useEffect(function(){b&&isValid(b)?s(_format(b,f)):(null===r||void 0===r?void 0:r.length)===f.length&&s("")},[null===b||void 0===b?void 0:b.getTime()]),{stringValue:r,inputRef:y,clearValue:function clearValue(a){s(null),null===c||void 0===c?void 0:c({e:a,value:null})}}};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|