@consta/uikit 5.0.0-beta.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.d.ts +1 -1
  2. package/__internal__/src/components/ContextMenu/helpers.d.ts +2 -2
  3. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts +1 -1
  4. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js +1 -1
  5. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js.map +1 -1
  6. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.d.ts +1 -1
  7. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js +1 -1
  8. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js.map +1 -1
  9. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.d.ts +1 -1
  10. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js +1 -1
  11. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js.map +1 -1
  12. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts +1 -1
  13. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js +1 -1
  14. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js.map +1 -1
  15. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts +1 -1
  16. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js +1 -1
  17. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js.map +1 -1
  18. package/__internal__/src/components/Popover/Popover.d.ts +1 -1
  19. package/__internal__/src/components/ProgressStepBar/helpers.d.ts +1 -1
  20. package/__internal__/src/components/Skeleton/SkeletonBrick/SkeletonBrick.d.ts +5 -5
  21. package/__internal__/src/components/Skeleton/SkeletonBrick/SkeletonBrick.js +1 -1
  22. package/__internal__/src/components/Skeleton/SkeletonBrick/SkeletonBrick.js.map +1 -1
  23. package/__internal__/src/components/Skeleton/SkeletonCircle/SkeletonCircle.d.ts +5 -5
  24. package/__internal__/src/components/Skeleton/SkeletonCircle/SkeletonCircle.js +1 -1
  25. package/__internal__/src/components/Skeleton/SkeletonCircle/SkeletonCircle.js.map +1 -1
  26. package/__internal__/src/components/Skeleton/SkeletonText/SkeletonText.d.ts +3 -3
  27. package/__internal__/src/components/Skeleton/SkeletonText/SkeletonText.js +1 -1
  28. package/__internal__/src/components/Skeleton/SkeletonText/SkeletonText.js.map +1 -1
  29. package/__internal__/src/components/Tooltip/Tooltip.d.ts +1 -1
  30. package/__internal__/src/components/TooltipDeprecated/TooltipDeprecated.d.ts +1 -1
  31. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
1
  import './ContextMenuLevelWrapper.css';
2
2
  import React from 'react';
3
3
  import { ContextMenuLevelWrapperProps } from '../types';
4
- export declare const ContextMenuLevelWrapper: React.ForwardRefExoticComponent<Pick<ContextMenuLevelWrapperProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "size" | "direction" | "offset" | "position" | "possibleDirections" | "spareDirection" | "onClickOutside" | "onSetDirection" | "anchorRef" | "isMobile"> & React.RefAttributes<HTMLDivElement>>;
4
+ export declare const ContextMenuLevelWrapper: React.ForwardRefExoticComponent<Pick<ContextMenuLevelWrapperProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "size" | "position" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "onClickOutside" | "onSetDirection" | "anchorRef" | "isMobile"> & React.RefAttributes<HTMLDivElement>>;
@@ -20,7 +20,7 @@ export declare function withDefaultGetters<ITEM, GROUP>(props: ContextMenuLevels
20
20
  } & import("./types").MappersItem<ITEM> & import("./types").MappersGroup<GROUP> & {
21
21
  anchorRef: import("react").RefObject<HTMLElement>;
22
22
  position?: undefined;
23
- } & Omit<import("react").HTMLAttributes<HTMLDivElement>, "form" | "size" | "css" | "items" | "groups" | "direction" | "offset" | "position" | "onItemClick" | "sortGroup" | "possibleDirections" | "spareDirection" | "onClickOutside" | "onSetDirection" | "anchorRef" | "isOpen" | "subMenuDirection" | "isMobile" | "onEsc" | keyof import("./types").MappersItem<ITEM_1> | keyof import("./types").MappersGroup<GROUP_1>> & import("react").RefAttributes<HTMLDivElement> & (GROUP extends {
23
+ } & Omit<import("react").HTMLAttributes<HTMLDivElement>, "form" | "size" | "css" | "items" | "groups" | "position" | "onItemClick" | "sortGroup" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "onClickOutside" | "onSetDirection" | "anchorRef" | "isOpen" | "subMenuDirection" | "isMobile" | "onEsc" | keyof import("./types").MappersItem<ITEM_1> | keyof import("./types").MappersGroup<GROUP_1>> & import("react").RefAttributes<HTMLDivElement> & (GROUP extends {
24
24
  id: unknown;
25
25
  } ? {} : {
26
26
  getGroupId: ContextMenuPropGetGroupId<GROUP>;
@@ -67,7 +67,7 @@ export declare function withDefaultGetters<ITEM, GROUP>(props: ContextMenuLevels
67
67
  } & import("./types").MappersItem<ITEM> & import("./types").MappersGroup<GROUP> & {
68
68
  anchorRef?: undefined;
69
69
  position: import("../Popover").Position;
70
- } & Omit<import("react").HTMLAttributes<HTMLDivElement>, "form" | "size" | "css" | "items" | "groups" | "direction" | "offset" | "position" | "onItemClick" | "sortGroup" | "possibleDirections" | "spareDirection" | "onClickOutside" | "onSetDirection" | "anchorRef" | "isOpen" | "subMenuDirection" | "isMobile" | "onEsc" | keyof import("./types").MappersItem<ITEM_1> | keyof import("./types").MappersGroup<GROUP_1>> & import("react").RefAttributes<HTMLDivElement> & (GROUP extends {
70
+ } & Omit<import("react").HTMLAttributes<HTMLDivElement>, "form" | "size" | "css" | "items" | "groups" | "position" | "onItemClick" | "sortGroup" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "onClickOutside" | "onSetDirection" | "anchorRef" | "isOpen" | "subMenuDirection" | "isMobile" | "onEsc" | keyof import("./types").MappersItem<ITEM_1> | keyof import("./types").MappersGroup<GROUP_1>> & import("react").RefAttributes<HTMLDivElement> & (GROUP extends {
71
71
  id: unknown;
72
72
  } ? {} : {
73
73
  getGroupId: ContextMenuPropGetGroupId<GROUP>;
@@ -36,4 +36,4 @@ export declare const DatePickerFieldTypeDate: React.ForwardRefExoticComponent<{
36
36
  caption?: string | undefined;
37
37
  labelPosition?: "left" | "top" | undefined;
38
38
  withClearButton?: boolean | undefined;
39
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "format" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate"> & React.RefAttributes<HTMLDivElement>>;
39
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "format"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)&&d){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var v=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(v,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["dd","MM","yyyy"]),r=_slicedToArray(q,3),s=r[0],t=r[1],u=r[2];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,dd:s,MM:t,yyyy:u,date:v}),void(e&&d(null,{e:c}))}d(v,{e:c})}else e&&d(null,{e:c})}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useCallback(function(a,b,c){if((null===a||void 0===a?void 0:a.length)!==f.length&&k.current){var d;null===(d=j.current)||void 0===d?void 0:d.call(j,null,{e:c})}},[f]),o=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["dd","MM","yyyy"]),i=_slicedToArray(h,3),j=i[0],k=i[1],m=i[2];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,dd:j,MM:k,yyyy:m}),!1}return!0}},{onAccept:n,onComplete:m}),p=o.ref,q=o.setValue;return useEffect(function(){b&&isValid(b)&&q(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),p};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var v=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(v,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["dd","MM","yyyy"]),r=_slicedToArray(q,3),s=r[0],t=r[1],u=r[2];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,dd:s,MM:t,yyyy:u,date:v}),void(e&&d(null,{e:c}))}d(v,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},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=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["dd","MM","yyyy"]),i=_slicedToArray(h,3),j=i[0],k=i[1],m=i[2];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,dd:j,MM:k,yyyy:m}),!1}return!0}},{onAccept:m}),o=n.ref,p=n.setValue;return useEffect(function(){b&&isValid(b)&&p(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),o};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","useEffect","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onComplete","stringValue","maskRef","e","current","formatArray","valueArray","validArray","map","marker","filter","item","length","date","join","Date","start","end","dd","MM","yyyy","type","getTime","onAccept","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDate/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDatePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 onComplete = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [dd, MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange(null, { e });\n }\n\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n if (stringValue?.length !== formatProp.length && valueRef.current) {\n onChangeRef.current?.(null, { e });\n }\n },\n [formatProp],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date,\n pattern: formatProp,\n blocks: {\n // @ts-ignore\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n // @ts-ignore\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n // @ts-ignore\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [dd, MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept, onComplete },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","useEffect","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","dd","MM","yyyy","type","getTime","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDate/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDatePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\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 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 onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [dd, MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange(null, { e });\n }\n\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n // @ts-ignore\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n // @ts-ignore\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n // @ts-ignore\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 formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [dd, MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['dd', 'MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
@@ -39,4 +39,4 @@ export declare const DatePickerFieldTypeDateTime: React.ForwardRefExoticComponen
39
39
  caption?: string | undefined;
40
40
  labelPosition?: "left" | "top" | undefined;
41
41
  withClearButton?: boolean | undefined;
42
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "format" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "multiplicitySeconds" | "multiplicityMinutes" | "multiplicityHours"> & React.RefAttributes<HTMLDivElement>>;
42
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "multiplicitySeconds" | "multiplicityMinutes" | "multiplicityHours" | "format"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,isWithinInterval,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=a.multiplicityHours,k=a.multiplicityMinutes,l=a.multiplicitySeconds,m=useMutableRef(c),n=useMutableRef(b),o=useMutableRef(d),p=useCallback(function(a,b,c){var d=m.current,e=n.current;if(!(e&&isValid(e)&&_format(e,f)===a)&&d){if(!a)return void(e&&d(null,{e:c}));var j=getParts(f,g,!1),k=getParts(a,g,!1),l=j.map(function(a){return getPartDate(j,k,a)}).filter(function(a){return!!a});if(j.length===l.length){var y=_parse(k.join(datePickerPropSeparatorDefault),j.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(y,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),r=_slicedToArray(q,6),s=r[0],t=r[1],u=r[2],v=r[3],w=r[4],x=r[5];return null===(p=o.current)||void 0===p?void 0:p.call(o,{type:datePickerErrorTypes[0],stringValue:a,dd:s,MM:t,yyyy:u,date:y,HH:v,mm:w,ss:x}),void(e&&d(null,{e:c}))}d(y,{e:c})}else e&&d(null,{e:c})}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),q=useCallback(function(a,b,c){if((null===a||void 0===a?void 0:a.length)!==f.length&&n.current){var d;null===(d=m.current)||void 0===d?void 0:d.call(m,null,{e:c})}},[f]),r=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31},HH:j&&1<j?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,j,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:k&&1<k?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,k,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:l&&1<l?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,l,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),i=_slicedToArray(h,6),j=i[0],k=i[1],l=i[2],m=i[3],n=i[4],p=i[5];return null===(e=o.current)||void 0===e?void 0:e.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:j,MM:k,yyyy:l,HH:m,mm:n,ss:p}),!1}return!0}},{onAccept:q,onComplete:p}),s=r.ref,t=r.setValue;return useEffect(function(){b&&isValid(b)&&t(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),s};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,isWithinInterval,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,f=a.format,g=a.separator,h=a.maxDate,i=a.minDate,j=a.multiplicityHours,k=a.multiplicityMinutes,l=a.multiplicitySeconds,m=useMutableRef(c),n=useMutableRef(b),o=useMutableRef(d),p=useCallback(function(a,b,c){var d=m.current,e=n.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var j=getParts(f,g,!1),k=getParts(a,g,!1),l=j.map(function(a){return getPartDate(j,k,a)}).filter(function(a){return!!a});if(j.length===l.length){var y=_parse(k.join(datePickerPropSeparatorDefault),j.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(y,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),r=_slicedToArray(q,6),s=r[0],t=r[1],u=r[2],v=r[3],w=r[4],x=r[5];return null===(p=o.current)||void 0===p?void 0:p.call(o,{type:datePickerErrorTypes[0],stringValue:a,dd:s,MM:t,yyyy:u,date:y,HH:v,mm:w,ss:x}),void(e&&d(null,{e:c}))}d(y,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),q=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12},dd:{mask:IMask.MaskedRange,from:1,to:31},HH:j&&1<j?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,j,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:k&&1<k?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,k,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:l&&1<l?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,l,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!0,["dd","MM","yyyy","HH","mm","ss"]),i=_slicedToArray(h,6),j=i[0],k=i[1],l=i[2],m=i[3],n=i[4],p=i[5];return null===(e=o.current)||void 0===e?void 0:e.call(o,{type:datePickerErrorTypes[1],stringValue:a,dd:j,MM:k,yyyy:l,HH:m,mm:n,ss:p}),!1}return!0}},{onAccept:p}),r=q.ref,s=q.setValue;return useEffect(function(){b&&isValid(b)&&s(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),r};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","useEffect","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","getTimeEnum","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","multiplicityHours","multiplicityMinutes","multiplicitySeconds","onChangeRef","valueRef","onErrorRef","onComplete","stringValue","maskRef","e","current","formatArray","valueArray","validArray","map","marker","filter","item","length","date","join","Date","start","end","dd","MM","yyyy","HH","mm","ss","type","getTime","onAccept","mask","pattern","blocks","MaskedRange","from","to","MaskedEnum","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n isWithinInterval,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport React, { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n getTimeEnum,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDateTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeDateTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeDateTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeDateTimePropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n multiplicityHours: number | undefined;\n multiplicitySeconds: number | undefined;\n multiplicityMinutes: number | undefined;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onComplete = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n if (stringValue?.length !== formatProp.length && valueRef.current) {\n onChangeRef.current?.(null, { e });\n }\n },\n [formatProp],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date,\n pattern: formatProp,\n blocks: {\n // @ts-ignore\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n // @ts-ignore\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n // @ts-ignore\n dd: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n // @ts-ignore\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n // @ts-ignore\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n // @ts-ignore\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n string,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n HH,\n mm,\n ss,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept, onComplete },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","useEffect","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","getTimeEnum","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","multiplicityHours","multiplicityMinutes","multiplicitySeconds","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","dd","MM","yyyy","HH","mm","ss","type","getTime","mask","pattern","blocks","MaskedRange","from","to","MaskedEnum","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n isWithinInterval,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport React, { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n getTimeEnum,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeDateTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeDateTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeDateTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeDateTimePropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n multiplicityHours: number | undefined;\n multiplicitySeconds: number | undefined;\n multiplicityMinutes: number | undefined;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n dd,\n MM,\n yyyy,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n\n dd: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [dd, MM, yyyy, HH, mm, ss] = getPartsDate(\n string,\n formatProp,\n separator,\n true,\n ['dd', 'MM', 'yyyy', 'HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n dd,\n MM,\n yyyy,\n HH,\n mm,\n ss,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
@@ -36,4 +36,4 @@ export declare const DatePickerFieldTypeMonth: React.ForwardRefExoticComponent<{
36
36
  caption?: string | undefined;
37
37
  labelPosition?: "left" | "top" | undefined;
38
38
  withClearButton?: boolean | undefined;
39
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "format" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate"> & React.RefAttributes<HTMLDivElement>>;
39
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "format"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)&&d){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var u=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(u,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["MM","yyyy"]),r=_slicedToArray(q,2),s=r[0],t=r[1];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,MM:s,yyyy:t,date:u}),void(e&&d(null,{e:c}))}d(u,{e:c})}else e&&d(null,{e:c})}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useCallback(function(a,b,c){if((null===a||void 0===a?void 0:a.length)!==f.length&&k.current){var d;null===(d=j.current)||void 0===d?void 0:d.call(j,null,{e:c})}},[f]),o=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["MM","yyyy"]),i=_slicedToArray(h,2),j=i[0],k=i[1];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,MM:j,yyyy:k}),!1}return!0}},{onAccept:n,onComplete:m}),p=o.ref,q=o.setValue;return useEffect(function(){b&&isValid(b)&&q(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),p};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var u=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(u,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["MM","yyyy"]),r=_slicedToArray(q,2),s=r[0],t=r[1];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,MM:s,yyyy:t,date:u}),void(e&&d(null,{e:c}))}d(u,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999},MM:{mask:IMask.MaskedRange,from:1,to:12}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["MM","yyyy"]),i=_slicedToArray(h,2),j=i[0],k=i[1];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,MM:j,yyyy:k}),!1}return!0}},{onAccept:m}),o=n.ref,p=n.setValue;return useEffect(function(){b&&isValid(b)&&p(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),o};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","useEffect","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onComplete","stringValue","maskRef","e","current","formatArray","valueArray","validArray","map","marker","filter","item","length","date","join","Date","start","end","MM","yyyy","type","getTime","onAccept","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeMonthPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeMonthProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeMonthPropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeMonthPropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onComplete = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n if (stringValue?.length !== formatProp.length && valueRef.current) {\n onChangeRef.current?.(null, { e });\n }\n },\n [formatProp],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date,\n pattern: formatProp,\n blocks: {\n // @ts-ignore\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n // @ts-ignore\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n MM,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept, onComplete },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","useEffect","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","MM","yyyy","type","getTime","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeMonth/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeMonthPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeMonthProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeMonthPropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeMonthPropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [MM, yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n MM,\n yyyy,\n date,\n });\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [MM, yyyy] = getPartsDate(\n string,\n formatProp,\n separator,\n false,\n ['MM', 'yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n MM,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
@@ -39,4 +39,4 @@ export declare const DatePickerFieldTypeTime: React.ForwardRefExoticComponent<{
39
39
  caption?: string | undefined;
40
40
  labelPosition?: "left" | "top" | undefined;
41
41
  withClearButton?: boolean | undefined;
42
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "format" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "multiplicitySeconds" | "multiplicityMinutes" | "multiplicityHours"> & React.RefAttributes<HTMLDivElement>>;
42
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "multiplicitySeconds" | "multiplicityMinutes" | "multiplicityHours" | "format"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,isWithinInterval,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef";import{getPartDate,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,e=a.multiplicityHours,f=a.multiplicityMinutes,g=a.multiplicitySeconds,h=a.format,i=a.separator,j=a.maxDate,k=a.minDate,l=useMutableRef(c),m=useMutableRef(b),n=useMutableRef(d),o=useCallback(function(a,b,c){var d=l.current,e=m.current;if(!(e&&isValid(e)&&_format(e,h)===a)&&d){if(!a)return void(e&&d(null,{e:c}));var f=getParts(h,i,!1),g=getParts(a,i,!1),o=f.map(function(a){return getPartDate(f,g,a)}).filter(function(a){return!!a});if(f.length===o.length){var v=_parse(g.join(":"),f.join(":"),e||new Date);if(!isWithinInterval(v,{start:k,end:j})){var p,q=getPartsDate(a,h,":",!1,["HH","mm","ss"]),r=_slicedToArray(q,3),s=r[0],t=r[1],u=r[2];return null===(p=n.current)||void 0===p?void 0:p.call(n,{type:datePickerErrorTypes[0],stringValue:a,date:v,HH:s,mm:t,ss:u}),void(e&&d(null,{e:c}))}d(v,{e:c})}else e&&d(null,{e:c})}},[null===k||void 0===k?void 0:k.getTime(),null===j||void 0===j?void 0:j.getTime(),h,i]),p=useCallback(function(a,b,c){if((null===a||void 0===a?void 0:a.length)!==h.length&&m.current){var d;null===(d=l.current)||void 0===d?void 0:d.call(l,null,{e:c})}},[h]),q=useIMask({mask:Date,pattern:h,blocks:{HH:e&&1<e?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,e,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:f&&1<f?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,f,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:g&&1<g?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,g,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,h)},parse:function parse(a){return _parse(a,h,new Date)},validate:function validate(a){var b=getParts(h,i,!1),c=getParts(a,i,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(":"),b.join(":"),new Date))){var e,f=getPartsDate(a,h,":",!1,["HH","mm","ss"]),g=_slicedToArray(f,3),j=g[0],k=g[1],l=g[2];return null===(e=n.current)||void 0===e?void 0:e.call(n,{type:datePickerErrorTypes[1],stringValue:a,HH:j,mm:k,ss:l}),!1}return!0}},{onAccept:p,onComplete:o}),r=q.ref,s=q.setValue;return useEffect(function(){b&&isValid(b)&&s(_format(b,h))},[null===b||void 0===b?void 0:b.getTime()]),r};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{addHours,addMinutes,addSeconds,format as _format,isValid,isWithinInterval,parse as _parse,startOfDay,startOfHour,startOfMinute}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{getLabelHours,getLabelMinutes,getLabelSeconds}from"../../DateTime/helpers";import{useMutableRef}from"../../../hooks/useMutableRef";import{getPartDate,getParts,getPartsDate,getTimeEnum}from"../helpers";import{datePickerErrorTypes}from"../types";export var usePicker=function(a){var b=a.value,c=a.onChange,d=a.onError,e=a.multiplicityHours,f=a.multiplicityMinutes,g=a.multiplicitySeconds,h=a.format,i=a.separator,j=a.maxDate,k=a.minDate,l=useMutableRef(c),m=useMutableRef(b),n=useMutableRef(d),o=useCallback(function(a,b,c){var d=l.current,e=m.current;if(!(e&&isValid(e)&&_format(e,h)===a)){if((null===a||void 0===a?void 0:a.length)!==h.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var f=getParts(h,i,!1),g=getParts(a,i,!1),o=f.map(function(a){return getPartDate(f,g,a)}).filter(function(a){return!!a});if(f.length===o.length){var v=_parse(g.join(":"),f.join(":"),e||new Date);if(!isWithinInterval(v,{start:k,end:j})){var p,q=getPartsDate(a,h,":",!1,["HH","mm","ss"]),r=_slicedToArray(q,3),s=r[0],t=r[1],u=r[2];return null===(p=n.current)||void 0===p?void 0:p.call(n,{type:datePickerErrorTypes[0],stringValue:a,date:v,HH:s,mm:t,ss:u}),void(e&&d(null,{e:c}))}d(v,{e:c})}else e&&d(null,{e:c})}}},[null===k||void 0===k?void 0:k.getTime(),null===j||void 0===j?void 0:j.getTime(),h,i]),p=useIMask({mask:Date,pattern:h,blocks:{HH:e&&1<e?{mask:IMask.MaskedEnum,enum:getTimeEnum(24,e,startOfDay,addHours,getLabelHours)}:{mask:IMask.MaskedRange,from:0,to:23},mm:f&&1<f?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,f,startOfHour,addMinutes,getLabelMinutes)}:{mask:IMask.MaskedRange,from:0,to:59},ss:g&&1<g?{mask:IMask.MaskedEnum,enum:getTimeEnum(60,g,startOfMinute,addSeconds,getLabelSeconds)}:{mask:IMask.MaskedRange,from:0,to:59}},lazy:!0,autofix:!0,format:function format(a){return _format(a,h)},parse:function parse(a){return _parse(a,h,new Date)},validate:function validate(a){var b=getParts(h,i,!1),c=getParts(a,i,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(":"),b.join(":"),new Date))){var e,f=getPartsDate(a,h,":",!1,["HH","mm","ss"]),g=_slicedToArray(f,3),j=g[0],k=g[1],l=g[2];return null===(e=n.current)||void 0===e?void 0:e.call(n,{type:datePickerErrorTypes[1],stringValue:a,HH:j,mm:k,ss:l}),!1}return!0}},{onAccept:o}),q=p.ref,r=p.setValue;return useEffect(function(){b&&isValid(b)&&r(_format(b,h))},[null===b||void 0===b?void 0:b.getTime()]),q};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","useEffect","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","getPartDate","getParts","getPartsDate","getTimeEnum","datePickerErrorTypes","usePicker","props","value","onChange","onError","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onComplete","stringValue","maskRef","e","current","formatArray","valueArray","validArray","map","marker","filter","item","length","date","join","Date","start","end","HH","mm","ss","type","getTime","onAccept","mask","pattern","blocks","MaskedEnum","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n isWithinInterval,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport React, { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { getPartDate, getParts, getPartsDate, getTimeEnum } from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeTimePropOnChange;\n onError?: DatePickerPropOnError;\n multiplicityHours: number | undefined;\n multiplicitySeconds: number | undefined;\n multiplicityMinutes: number | undefined;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onComplete = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(':'),\n formatArray.join(':'),\n value || new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n ':',\n false,\n ['HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n if (stringValue?.length !== formatProp.length && valueRef.current) {\n onChangeRef.current?.(null, { e });\n }\n },\n [formatProp],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date,\n pattern: formatProp,\n blocks: {\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n // @ts-ignore\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n // @ts-ignore\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n // @ts-ignore\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(valueArray.join(':'), formatArray.join(':'), new Date()),\n )\n ) {\n const [HH, mm, ss] = getPartsDate(string, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n HH,\n mm,\n ss,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept, onComplete },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["addHours","addMinutes","addSeconds","format","isValid","isWithinInterval","parse","startOfDay","startOfHour","startOfMinute","useCallback","useEffect","IMask","useIMask","getLabelHours","getLabelMinutes","getLabelSeconds","useMutableRef","getPartDate","getParts","getPartsDate","getTimeEnum","datePickerErrorTypes","usePicker","props","value","onChange","onError","multiplicityHours","multiplicityMinutes","multiplicitySeconds","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","HH","mm","ss","type","getTime","mask","pattern","blocks","MaskedEnum","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeTime/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport {\n addHours,\n addMinutes,\n addSeconds,\n format,\n isValid,\n isWithinInterval,\n parse,\n startOfDay,\n startOfHour,\n startOfMinute,\n} from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport React, { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n getLabelHours,\n getLabelMinutes,\n getLabelSeconds,\n} from '##/components/DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { getPartDate, getParts, getPartsDate, getTimeEnum } from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeTimePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeTimeProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeTimePropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n multiplicitySeconds?: number;\n multiplicityMinutes?: number;\n multiplicityHours?: number;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeTimePropOnChange;\n onError?: DatePickerPropOnError;\n multiplicityHours: number | undefined;\n multiplicitySeconds: number | undefined;\n multiplicityMinutes: number | undefined;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n multiplicityHours,\n multiplicityMinutes,\n multiplicitySeconds,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(':'),\n formatArray.join(':'),\n value || new Date(),\n );\n\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [HH, mm, ss] = getPartsDate(\n stringValue,\n formatProp,\n ':',\n false,\n ['HH', 'mm', 'ss'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n date,\n HH,\n mm,\n ss,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n HH:\n multiplicityHours && multiplicityHours > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 24,\n multiplicityHours,\n startOfDay,\n addHours,\n getLabelHours,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 23,\n },\n mm:\n multiplicityMinutes && multiplicityMinutes > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicityMinutes,\n startOfHour,\n addMinutes,\n getLabelMinutes,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n ss:\n multiplicitySeconds && multiplicitySeconds > 1\n ? {\n mask: IMask.MaskedEnum,\n enum: getTimeEnum(\n 60,\n multiplicitySeconds,\n startOfMinute,\n addSeconds,\n getLabelSeconds,\n ),\n }\n : {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(valueArray.join(':'), formatArray.join(':'), new Date()),\n )\n ) {\n const [HH, mm, ss] = getPartsDate(string, formatProp, ':', false, [\n 'HH',\n 'mm',\n 'ss',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n HH,\n mm,\n ss,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
@@ -36,4 +36,4 @@ export declare const DatePickerFieldTypeYear: React.ForwardRefExoticComponent<{
36
36
  caption?: string | undefined;
37
37
  labelPosition?: "left" | "top" | undefined;
38
38
  withClearButton?: boolean | undefined;
39
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "format" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate"> & React.RefAttributes<HTMLDivElement>>;
39
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "caption" | "form" | "label" | "view" | "name" | "className" | "id" | "placeholder" | "tabIndex" | "children" | "onFocus" | "onBlur" | "onChange" | "onError" | "autoFocus" | "disabled" | "value" | "readOnly" | "required" | "size" | "separator" | "status" | "css" | "inputRef" | "focused" | "ariaLabel" | "labelIcon" | "labelPosition" | "leftSide" | "rightSide" | "withClearButton" | "iconSize" | "minDate" | "maxDate" | "format"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)&&d){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var t=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(t,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["yyyy"]),r=_slicedToArray(q,1),s=r[0];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,yyyy:s,date:t}),void(e&&d(null,{e:c}))}d(t,{e:c})}else e&&d(null,{e:c})}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useCallback(function(a,b,c){if((null===a||void 0===a?void 0:a.length)!==f.length&&k.current){var d;null===(d=j.current)||void 0===d?void 0:d.call(j,null,{e:c})}},[f]),o=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["yyyy"]),i=_slicedToArray(h,1),j=i[0];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,yyyy:j}),!1}return!0}},{onAccept:n,onComplete:m}),p=o.ref,q=o.setValue;return useEffect(function(){b&&isValid(b)&&q(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),p};
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format as _format,isValid,isWithinInterval,parse as _parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask,useIMask}from"react-imask";import{useMutableRef}from"../../../hooks/useMutableRef";import{datePickerPropSeparatorDefault,getPartDate,getParts,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=useCallback(function(a,b,c){var d=j.current,e=k.current;if(!(e&&isValid(e)&&_format(e,f)===a)){if((null===a||void 0===a?void 0:a.length)!==f.length&&e&&c&&d)return void d(null,{e:c});if(d&&c){if(!a)return void(e&&d(null,{e:c}));var m=getParts(f,g,!1),n=getParts(a,g,!1),o=m.map(function(a){return getPartDate(m,n,a)}).filter(function(a){return!!a});if(m.length===o.length){var t=_parse(n.join(datePickerPropSeparatorDefault),m.join(datePickerPropSeparatorDefault),new Date);if(!isWithinInterval(t,{start:i,end:h})){var p,q=getPartsDate(a,f,g,!1,["yyyy"]),r=_slicedToArray(q,1),s=r[0];return null===(p=l.current)||void 0===p?void 0:p.call(l,{type:datePickerErrorTypes[0],stringValue:a,yyyy:s,date:t}),void(e&&d(null,{e:c}))}d(t,{e:c})}else e&&d(null,{e:c})}}},[null===i||void 0===i?void 0:i.getTime(),null===h||void 0===h?void 0:h.getTime(),f,g]),n=useIMask({mask:Date,pattern:f,blocks:{yyyy:{mask:IMask.MaskedRange,from:1,to:9999}},lazy:!0,autofix:!0,format:function format(a){return _format(a,f)},parse:function parse(a){return _parse(a,f,new Date)},validate:function validate(a){var b=getParts(f,g,!1),c=getParts(a,g,!1),d=b.map(function(a){return getPartDate(b,c,a)}).filter(function(a){return!!a});if(b.length===d.length&&!isValid(_parse(c.join(datePickerPropSeparatorDefault),b.join(datePickerPropSeparatorDefault),new Date))){var e,h=getPartsDate(a,f,g,!1,["yyyy"]),i=_slicedToArray(h,1),j=i[0];return null===(e=l.current)||void 0===e?void 0:e.call(l,{type:datePickerErrorTypes[1],stringValue:a,yyyy:j}),!1}return!0}},{onAccept:m}),o=n.ref,p=n.setValue;return useEffect(function(){b&&isValid(b)&&p(_format(b,f))},[null===b||void 0===b?void 0:b.getTime()]),o};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","useEffect","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onComplete","stringValue","maskRef","e","current","formatArray","valueArray","validArray","map","marker","filter","item","length","date","join","Date","start","end","yyyy","type","getTime","onAccept","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeYearPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeYearProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onComplete = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (onChange) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n yyyy,\n date,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: Event) => {\n if (stringValue?.length !== formatProp.length && valueRef.current) {\n onChangeRef.current?.(null, { e });\n }\n },\n [formatProp],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date,\n pattern: formatProp,\n blocks: {\n // @ts-ignore\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [yyyy] = getPartsDate(string, formatProp, separator, false, [\n 'yyyy',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept, onComplete },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["format","isValid","isWithinInterval","parse","useCallback","useEffect","IMask","useIMask","useMutableRef","datePickerPropSeparatorDefault","getPartDate","getParts","getPartsDate","datePickerErrorTypes","usePicker","props","value","onChange","onError","formatProp","separator","maxDate","minDate","onChangeRef","valueRef","onErrorRef","onAccept","stringValue","maskRef","e","current","length","formatArray","valueArray","validArray","map","marker","filter","item","date","join","Date","start","end","yyyy","type","getTime","mask","pattern","blocks","MaskedRange","from","to","lazy","autofix","string","validate","ref","setStringValue","setValue"],"sources":["../../../../../../src/components/DatePicker/DatePickerFieldTypeYear/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { format, isValid, isWithinInterval, parse } from 'date-fns';\nimport { MaskedDate } from 'imask';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, ReactMaskOpts, useIMask } from 'react-imask';\n\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport {\n datePickerPropSeparatorDefault,\n getPartDate,\n getParts,\n getPartsDate,\n} from '../helpers';\nimport { datePickerErrorTypes, DatePickerPropOnError } from '../types';\n\ntype DatePickerFieldTypeYearPropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport type DatePickerFieldTypeYearProps = PropsWithHTMLAttributes<\n {\n className?: string;\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: string;\n disabled?: boolean;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n autoFocus?: boolean;\n placeholder?: string;\n leftSide?: string | IconComponent;\n rightSide?: string | IconComponent;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n children?: never;\n format?: string;\n separator?: string;\n minDate?: Date;\n maxDate?: Date;\n focused?: boolean;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n withClearButton?: boolean;\n },\n HTMLDivElement\n>;\n\ntype UsePickerProps = {\n value?: Date | null;\n onChange?: DatePickerFieldTypeYearPropOnChange;\n onError?: DatePickerPropOnError;\n format: string;\n separator: string;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const usePicker = (props: UsePickerProps) => {\n const {\n value,\n onChange,\n onError,\n format: formatProp,\n separator,\n maxDate,\n minDate,\n } = props;\n const onChangeRef = useMutableRef(onChange);\n const valueRef = useMutableRef(value);\n const onErrorRef = useMutableRef(onError);\n\n const onAccept = useCallback(\n (stringValue: string, maskRef: unknown, e: InputEvent | undefined) => {\n const onChange = onChangeRef.current;\n const value = valueRef.current;\n\n if (\n value &&\n isValid(value) &&\n format(value, formatProp) === stringValue\n ) {\n return;\n }\n\n if (stringValue?.length !== formatProp.length && value && e && onChange) {\n onChange(null, { e });\n return;\n }\n\n if (onChange && e) {\n if (!stringValue) {\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (formatArray.length === validArray.length) {\n const date = parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n );\n if (!isWithinInterval(date, { start: minDate, end: maxDate })) {\n const [yyyy] = getPartsDate(\n stringValue,\n formatProp,\n separator,\n false,\n ['yyyy'],\n );\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[0],\n stringValue,\n yyyy,\n date,\n });\n\n if (value) {\n onChange(null, { e });\n }\n return;\n }\n onChange(date, { e });\n } else if (value) {\n onChange(null, { e });\n }\n }\n },\n [minDate?.getTime(), maxDate?.getTime(), formatProp, separator],\n );\n\n const { ref, setValue: setStringValue } = useIMask<\n HTMLInputElement,\n ReactMaskOpts\n >(\n {\n mask: Date as unknown as MaskedDate,\n pattern: formatProp,\n blocks: {\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 9999,\n },\n },\n lazy: true,\n autofix: true,\n format: (date: Date) => format(date, formatProp),\n parse: (string: string) => parse(string, formatProp, new Date()),\n validate: (string: string) => {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(string, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n if (\n formatArray.length === validArray.length &&\n !isValid(\n parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n ),\n )\n ) {\n const [yyyy] = getPartsDate(string, formatProp, separator, false, [\n 'yyyy',\n ]);\n\n onErrorRef.current?.({\n type: datePickerErrorTypes[1],\n stringValue: string,\n yyyy,\n });\n return false;\n }\n\n return true;\n },\n },\n { onAccept },\n );\n\n // при изменении value, нужно обновить stringValue\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n }, [value?.getTime()]);\n\n return ref;\n};\n"],"mappings":"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"}
@@ -37,5 +37,5 @@ export declare type Props = PropsWithJsxAttributes<{
37
37
  onClickOutside?: ClickOutsideHandler;
38
38
  onSetDirection?: (direction: Direction) => void;
39
39
  } & PositioningProps>;
40
- export declare const Popover: React.ForwardRefExoticComponent<Pick<Props, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "direction" | "offset" | "position" | "arrowOffset" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "anchorRef" | "equalAnchorWidth"> & React.RefAttributes<HTMLDivElement>>;
40
+ export declare const Popover: React.ForwardRefExoticComponent<Pick<Props, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "position" | "arrowOffset" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "anchorRef" | "equalAnchorWidth"> & React.RefAttributes<HTMLDivElement>>;
41
41
  export {};
@@ -101,7 +101,7 @@ export declare function withDefaultGetters<ITEM>(props: ProgressStepBarProps<ITE
101
101
  getItemContent?: ProgressStepBarPropGetItemContent<ITEM> | undefined;
102
102
  getItemStatus?: ProgressStepBarPropGetItemStatus<ITEM> | undefined;
103
103
  getItemOnClick?: ProgressStepBarPropGetItemOnClick<ITEM> | undefined;
104
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "size" | "css" | "getItemLabel" | "getItemStatus" | "direction" | "onItemClick" | "getItemOnClick" | "getItemContent" | "steps" | "activeStepIndex" | "getItemLineStatus" | "getItemTooltipContent" | "getItemPoint" | "getItemProgress"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
104
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "size" | "css" | "getItemLabel" | "getItemStatus" | "onItemClick" | "getItemOnClick" | "direction" | "getItemContent" | "steps" | "activeStepIndex" | "getItemLineStatus" | "getItemTooltipContent" | "getItemPoint" | "getItemProgress"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
105
105
  label: string | undefined;
106
106
  } ? {} : {
107
107
  getItemLabel: ProgressStepBarPropGetItemLabel<ITEM>;
@@ -1,8 +1,8 @@
1
- import React, { CSSProperties } from 'react';
2
- declare type SkeletonBrickProps = {
3
- className?: string;
1
+ import { CSSProperties } from 'react';
2
+ import { PropsWithHTMLAttributes } from "../../../utils/types/PropsWithHTMLAttributes";
3
+ declare type SkeletonBrickProps = PropsWithHTMLAttributes<{
4
4
  width?: CSSProperties['width'];
5
5
  height: CSSProperties['height'];
6
- };
7
- export declare const SkeletonBrick: React.FC<SkeletonBrickProps>;
6
+ }, HTMLDivElement>;
7
+ export declare const SkeletonBrick: ({ className, width, height, style, ...otherProps }: SkeletonBrickProps) => JSX.Element;
8
8
  export {};
@@ -1,2 +1,2 @@
1
- import React from"react";import{cnSkeleton}from"../Skeleton";export var SkeletonBrick=function(a){var b=a.className,c=a.width,d=void 0===c?"100%":c,e=a.height;return React.createElement("div",{className:cnSkeleton(null,[b]),style:{width:d,height:e}})};
1
+ import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","width","height","style"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React from"react";import{cnSkeleton}from"../Skeleton";export var SkeletonBrick=function(a){var b=a.className,c=a.width,d=void 0===c?"100%":c,e=a.height,f=a.style,g=_objectWithoutProperties(a,_excluded);return React.createElement("div",Object.assign({className:cnSkeleton(null,[b]),style:_objectSpread({width:d,height:e},f)},g))};
2
2
  //# sourceMappingURL=SkeletonBrick.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonBrick.js","names":["React","cnSkeleton","SkeletonBrick","className","width","height"],"sources":["../../../../../../src/components/Skeleton/SkeletonBrick/SkeletonBrick.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { cnSkeleton } from '../Skeleton';\n\ntype SkeletonBrickProps = {\n className?: string;\n width?: CSSProperties['width'];\n height: CSSProperties['height'];\n};\n\nexport const SkeletonBrick: React.FC<SkeletonBrickProps> = ({\n className,\n width = '100%',\n height,\n}) => (\n <div className={cnSkeleton(null, [className])} style={{ width, height }} />\n);\n"],"mappings":"AAAA,MAAOA,MAAP,KAAqC,OAArC,CAEA,OAASC,UAAT,mBAQA,MAAO,IAAMC,cAA2C,CAAG,eACzDC,EADyD,GACzDA,SADyD,KAEzDC,KAFyD,CAEzDA,CAFyD,YAEjD,MAFiD,GAGzDC,CAHyD,GAGzDA,MAHyD,OAKzD,4BAAK,SAAS,CAAEJ,UAAU,CAAC,IAAD,CAAO,CAACE,CAAD,CAAP,CAA1B,CAA+C,KAAK,CAAE,CAAEC,KAAK,CAALA,CAAF,CAASC,MAAM,CAANA,CAAT,CAAtD,EALyD,CAApD"}
1
+ {"version":3,"file":"SkeletonBrick.js","names":["React","cnSkeleton","SkeletonBrick","className","width","height","style","otherProps"],"sources":["../../../../../../src/components/Skeleton/SkeletonBrick/SkeletonBrick.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { cnSkeleton } from '../Skeleton';\n\ntype SkeletonBrickProps = PropsWithHTMLAttributes<\n {\n width?: CSSProperties['width'];\n height: CSSProperties['height'];\n },\n HTMLDivElement\n>;\n\nexport const SkeletonBrick = ({\n className,\n width = '100%',\n height,\n style,\n ...otherProps\n}: SkeletonBrickProps) => (\n <div\n className={cnSkeleton(null, [className])}\n style={{ width, height, ...style }}\n {...otherProps}\n />\n);\n"],"mappings":"+yBAAA,MAAOA,MAAP,KAAqC,OAArC,CAIA,OAASC,UAAT,mBAUA,MAAO,IAAMC,cAAa,CAAG,eAC3BC,EAD2B,GAC3BA,SAD2B,KAE3BC,KAF2B,CAE3BA,CAF2B,YAEnB,MAFmB,GAG3BC,CAH2B,GAG3BA,MAH2B,CAI3BC,CAJ2B,GAI3BA,KAJ2B,CAKxBC,CALwB,6CAO3B,0CACE,SAAS,CAAEN,UAAU,CAAC,IAAD,CAAO,CAACE,CAAD,CAAP,CADvB,CAEE,KAAK,gBAAIC,KAAK,CAALA,CAAJ,CAAWC,MAAM,CAANA,CAAX,EAAsBC,CAAtB,CAFP,EAGMC,CAHN,EAP2B,CAAtB"}
@@ -1,8 +1,8 @@
1
1
  import './SkeletonCircle.css';
2
- import React, { CSSProperties } from 'react';
3
- declare type SkeletonCircleProps = {
4
- className?: string;
2
+ import { CSSProperties } from 'react';
3
+ import { PropsWithHTMLAttributes } from "../../../utils/types/PropsWithHTMLAttributes";
4
+ declare type SkeletonCircleProps = PropsWithHTMLAttributes<{
5
5
  size: CSSProperties['width'] & CSSProperties['height'];
6
- };
7
- export declare const SkeletonCircle: React.FC<SkeletonCircleProps>;
6
+ }, HTMLDivElement>;
7
+ export declare const SkeletonCircle: ({ className, size, style, ...otherProps }: SkeletonCircleProps) => JSX.Element;
8
8
  export {};
@@ -1,2 +1,2 @@
1
- import"./SkeletonCircle.css";import React from"react";import{cn}from"../../../utils/bem";import{cnSkeleton}from"../Skeleton";var cnSkeletonCircle=cn("SkeletonCircle");export var SkeletonCircle=function(a){var b=a.className,c=a.size;return React.createElement("div",{className:cnSkeletonCircle(null,[cnSkeleton(),b]),style:{width:c,height:c}})};
1
+ import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","size","style"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./SkeletonCircle.css";import React from"react";import{cn}from"../../../utils/bem";import{cnSkeleton}from"../Skeleton";var cnSkeletonCircle=cn("SkeletonCircle");export var SkeletonCircle=function(a){var b=a.className,c=a.size,d=a.style,e=_objectWithoutProperties(a,_excluded);return React.createElement("div",Object.assign({className:cnSkeletonCircle(null,[cnSkeleton(),b]),style:_objectSpread({width:c,height:c},d)},e))};
2
2
  //# sourceMappingURL=SkeletonCircle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonCircle.js","names":["React","cn","cnSkeleton","cnSkeletonCircle","SkeletonCircle","className","size","width","height"],"sources":["../../../../../../src/components/Skeleton/SkeletonCircle/SkeletonCircle.tsx"],"sourcesContent":["import './SkeletonCircle.css';\n\nimport React, { CSSProperties } from 'react';\n\nimport { cn } from '##/utils/bem';\n\nimport { cnSkeleton } from '../Skeleton';\n\ntype SkeletonCircleProps = {\n className?: string;\n size: CSSProperties['width'] & CSSProperties['height'];\n};\n\nconst cnSkeletonCircle = cn('SkeletonCircle');\n\nexport const SkeletonCircle: React.FC<SkeletonCircleProps> = ({\n className,\n size,\n}) => (\n <div\n className={cnSkeletonCircle(null, [cnSkeleton(), className])}\n style={{ width: size, height: size }}\n />\n);\n"],"mappings":"AAAA,6BAEA,MAAOA,MAAP,KAAqC,OAArC,CAEA,OAASC,EAAT,0BAEA,OAASC,UAAT,mBAOA,GAAMC,iBAAgB,CAAGF,EAAE,CAAC,gBAAD,CAA3B,CAEA,MAAO,IAAMG,eAA6C,CAAG,eAC3DC,EAD2D,GAC3DA,SAD2D,CAE3DC,CAF2D,GAE3DA,IAF2D,OAI3D,4BACE,SAAS,CAAEH,gBAAgB,CAAC,IAAD,CAAO,CAACD,UAAU,EAAX,CAAeG,CAAf,CAAP,CAD7B,CAEE,KAAK,CAAE,CAAEE,KAAK,CAAED,CAAT,CAAeE,MAAM,CAAEF,CAAvB,CAFT,EAJ2D,CAAtD"}
1
+ {"version":3,"file":"SkeletonCircle.js","names":["React","cn","cnSkeleton","cnSkeletonCircle","SkeletonCircle","className","size","style","otherProps","width","height"],"sources":["../../../../../../src/components/Skeleton/SkeletonCircle/SkeletonCircle.tsx"],"sourcesContent":["import './SkeletonCircle.css';\n\nimport React, { CSSProperties } from 'react';\n\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { cnSkeleton } from '../Skeleton';\n\ntype SkeletonCircleProps = PropsWithHTMLAttributes<\n {\n size: CSSProperties['width'] & CSSProperties['height'];\n },\n HTMLDivElement\n>;\n\nconst cnSkeletonCircle = cn('SkeletonCircle');\n\nexport const SkeletonCircle = ({\n className,\n size,\n style,\n ...otherProps\n}: SkeletonCircleProps) => (\n <div\n className={cnSkeletonCircle(null, [cnSkeleton(), className])}\n style={{ width: size, height: size, ...style }}\n {...otherProps}\n />\n);\n"],"mappings":"qyBAAA,6BAEA,MAAOA,MAAP,KAAqC,OAArC,CAEA,OAASC,EAAT,0BAGA,OAASC,UAAT,mBASA,GAAMC,iBAAgB,CAAGF,EAAE,CAAC,gBAAD,CAA3B,CAEA,MAAO,IAAMG,eAAc,CAAG,eAC5BC,EAD4B,GAC5BA,SAD4B,CAE5BC,CAF4B,GAE5BA,IAF4B,CAG5BC,CAH4B,GAG5BA,KAH4B,CAIzBC,CAJyB,6CAM5B,0CACE,SAAS,CAAEL,gBAAgB,CAAC,IAAD,CAAO,CAACD,UAAU,EAAX,CAAeG,CAAf,CAAP,CAD7B,CAEE,KAAK,gBAAII,KAAK,CAAEH,CAAX,CAAiBI,MAAM,CAAEJ,CAAzB,EAAkCC,CAAlC,CAFP,EAGMC,CAHN,EAN4B,CAAvB"}
@@ -1,13 +1,13 @@
1
1
  import './SkeletonText.css';
2
2
  import React from 'react';
3
3
  import { TextPropLineHeight, TextPropSize } from "../../Text";
4
+ import { PropsWithHTMLAttributes } from "../../../utils/types/PropsWithHTMLAttributes";
4
5
  import { SkeletonBrick } from '../Skeleton';
5
- declare type SkeletonTextProps = {
6
- className?: string;
6
+ declare type SkeletonTextProps = PropsWithHTMLAttributes<{
7
7
  rows: number;
8
8
  fontSize?: TextPropSize;
9
9
  lineHeight?: TextPropLineHeight;
10
- };
10
+ }, HTMLDivElement>;
11
11
  export declare const getRowWidth: (idx: number, total: number) => React.ComponentProps<typeof SkeletonBrick>['height'];
12
12
  export declare const SkeletonText: React.FC<SkeletonTextProps>;
13
13
  export {};
@@ -1,2 +1,2 @@
1
- import"./SkeletonText.css";import React from"react";import{textPropLineHeightDefault,textPropSizeDefault}from"../../Text";import{cn}from"../../../utils/bem";import{SkeletonBrick}from"../Skeleton";var cnSkeletonText=cn("SkeletonText");export var getRowWidth=function(a,b){if(a===b-1)return"50%";switch(a%3){case 0:return"100%";case 1:return"85%";case 2:return"93%";}return"100%"};export var SkeletonText=function(a){var b=a.className,c=a.rows,d=a.fontSize,e=void 0===d?textPropSizeDefault:d,f=a.lineHeight,g=void 0===f?textPropLineHeightDefault:f,h="var(--size-text-".concat(e,")"),i="var(--line-height-text-".concat(g,")");return React.createElement("div",{className:cnSkeletonText(null,[b]),key:c},Array(c).fill(null).map(function(a,b){return React.createElement("div",{key:b,className:cnSkeletonText("Row"),style:{fontSize:h,height:i}},React.createElement(SkeletonBrick,{width:getRowWidth(b,c),height:h}))}))};
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","rows","fontSize","lineHeight"];import"./SkeletonText.css";import React from"react";import{textPropLineHeightDefault,textPropSizeDefault}from"../../Text";import{cn}from"../../../utils/bem";import{SkeletonBrick}from"../Skeleton";var cnSkeletonText=cn("SkeletonText");export var getRowWidth=function(a,b){if(a===b-1)return"50%";switch(a%3){case 0:return"100%";case 1:return"85%";case 2:return"93%";}return"100%"};export var SkeletonText=function(a){var b=a.className,c=a.rows,d=a.fontSize,e=void 0===d?textPropSizeDefault:d,f=a.lineHeight,g=void 0===f?textPropLineHeightDefault:f,h=_objectWithoutProperties(a,_excluded),i="var(--size-text-".concat(e,")"),j="var(--line-height-text-".concat(g,")");return React.createElement("div",Object.assign({className:cnSkeletonText(null,[b]),key:c},h),Array(c).fill(null).map(function(a,b){return React.createElement("div",{key:b,className:cnSkeletonText("Row"),style:{fontSize:i,height:j}},React.createElement(SkeletonBrick,{width:getRowWidth(b,c),height:i}))}))};
2
2
  //# sourceMappingURL=SkeletonText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonText.js","names":["React","textPropLineHeightDefault","textPropSizeDefault","cn","SkeletonBrick","cnSkeletonText","getRowWidth","idx","total","SkeletonText","className","rows","fontSize","lineHeight","varFontSize","varLineHeight","Array","fill","map","_v","height"],"sources":["../../../../../../src/components/Skeleton/SkeletonText/SkeletonText.tsx"],"sourcesContent":["import './SkeletonText.css';\n\nimport React from 'react';\n\nimport {\n TextPropLineHeight,\n textPropLineHeightDefault,\n TextPropSize,\n textPropSizeDefault,\n} from '##/components/Text';\nimport { cn } from '##/utils/bem';\n\nimport { SkeletonBrick } from '../Skeleton';\n\ntype SkeletonTextProps = {\n className?: string;\n rows: number;\n fontSize?: TextPropSize;\n lineHeight?: TextPropLineHeight;\n};\n\nconst cnSkeletonText = cn('SkeletonText');\n\nexport const getRowWidth = (\n idx: number,\n total: number,\n): React.ComponentProps<typeof SkeletonBrick>['height'] => {\n if (idx === total - 1) {\n return '50%';\n }\n\n switch (idx % 3) {\n case 0:\n return '100%';\n case 1:\n return '85%';\n case 2:\n return '93%';\n }\n\n return '100%';\n};\n\nexport const SkeletonText: React.FC<SkeletonTextProps> = ({\n className,\n rows,\n fontSize = textPropSizeDefault,\n lineHeight = textPropLineHeightDefault,\n}) => {\n const varFontSize = `var(--size-text-${fontSize})`;\n const varLineHeight = `var(--line-height-text-${lineHeight})`;\n return (\n <div\n className={cnSkeletonText(null, [className])}\n key={\n /* форсируем полный ререндер компонента при смене количества строк,\n чтобы анимация у всех строк запустилась заново */\n rows\n }\n >\n {new Array(rows).fill(null).map((_v, idx) => (\n <div\n key={idx}\n className={cnSkeletonText('Row')}\n style={{ fontSize: varFontSize, height: varLineHeight }}\n >\n <SkeletonBrick width={getRowWidth(idx, rows)} height={varFontSize} />\n </div>\n ))}\n </div>\n );\n};\n"],"mappings":"AAAA,2BAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAEEC,yBAFF,CAIEC,mBAJF,kBAMA,OAASC,EAAT,0BAEA,OAASC,aAAT,mBASA,GAAMC,eAAc,CAAGF,EAAE,CAAC,cAAD,CAAzB,CAEA,MAAO,IAAMG,YAAW,CAAG,SACzBC,CADyB,CAEzBC,CAFyB,CAGgC,CACzD,GAAID,CAAG,GAAKC,CAAK,CAAG,CAApB,CACE,MAAO,KAAP,CAGF,OAAQD,CAAG,CAAG,CAAd,EACE,IAAK,EAAL,CACE,MAAO,MAAP,CACF,IAAK,EAAL,CACE,MAAO,KAAP,CACF,IAAK,EAAL,CACE,MAAO,KAAP,CANJ,CASA,MAAO,MACR,CAlBM,CAoBP,MAAO,IAAME,aAAyC,CAAG,WAKnD,IAJJC,EAII,GAJJA,SAII,CAHJC,CAGI,GAHJA,IAGI,KAFJC,QAEI,CAFJA,CAEI,YAFOV,mBAEP,OADJW,UACI,CADJA,CACI,YADSZ,yBACT,GACEa,CAAW,2BAAsBF,CAAtB,KADb,CAEEG,CAAa,kCAA6BF,CAA7B,KAFf,CAGJ,MACE,4BACE,SAAS,CAAER,cAAc,CAAC,IAAD,CAAO,CAACK,CAAD,CAAP,CAD3B,CAEE,GAAG,CAGDC,CALJ,EAQOK,KAAJ,CAAUL,CAAV,EAAgBM,IAAhB,CAAqB,IAArB,EAA2BC,GAA3B,CAA+B,SAACC,CAAD,CAAKZ,CAAL,QAC9B,4BACE,GAAG,CAAEA,CADP,CAEE,SAAS,CAAEF,cAAc,CAAC,KAAD,CAF3B,CAGE,KAAK,CAAE,CAAEO,QAAQ,CAAEE,CAAZ,CAAyBM,MAAM,CAAEL,CAAjC,CAHT,EAKE,oBAAC,aAAD,EAAe,KAAK,CAAET,WAAW,CAACC,CAAD,CAAMI,CAAN,CAAjC,CAA8C,MAAM,CAAEG,CAAtD,EALF,CAD8B,CAA/B,CARH,CAmBH,CA5BM"}
1
+ {"version":3,"file":"SkeletonText.js","names":["React","textPropLineHeightDefault","textPropSizeDefault","cn","SkeletonBrick","cnSkeletonText","getRowWidth","idx","total","SkeletonText","props","className","rows","fontSize","lineHeight","otherProps","varFontSize","varLineHeight","Array","fill","map","_v","height"],"sources":["../../../../../../src/components/Skeleton/SkeletonText/SkeletonText.tsx"],"sourcesContent":["import './SkeletonText.css';\n\nimport React from 'react';\n\nimport {\n TextPropLineHeight,\n textPropLineHeightDefault,\n TextPropSize,\n textPropSizeDefault,\n} from '##/components/Text';\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { SkeletonBrick } from '../Skeleton';\n\ntype SkeletonTextProps = PropsWithHTMLAttributes<\n {\n rows: number;\n fontSize?: TextPropSize;\n lineHeight?: TextPropLineHeight;\n },\n HTMLDivElement\n>;\n\nconst cnSkeletonText = cn('SkeletonText');\n\nexport const getRowWidth = (\n idx: number,\n total: number,\n): React.ComponentProps<typeof SkeletonBrick>['height'] => {\n if (idx === total - 1) {\n return '50%';\n }\n\n switch (idx % 3) {\n case 0:\n return '100%';\n case 1:\n return '85%';\n case 2:\n return '93%';\n }\n\n return '100%';\n};\n\nexport const SkeletonText: React.FC<SkeletonTextProps> = (\n props: SkeletonTextProps,\n) => {\n const {\n className,\n rows,\n fontSize = textPropSizeDefault,\n lineHeight = textPropLineHeightDefault,\n ...otherProps\n } = props;\n\n const varFontSize = `var(--size-text-${fontSize})`;\n const varLineHeight = `var(--line-height-text-${lineHeight})`;\n\n return (\n <div\n className={cnSkeletonText(null, [className])}\n key={\n /* форсируем полный ререндер компонента при смене количества строк,\n чтобы анимация у всех строк запустилась заново */\n rows\n }\n {...otherProps}\n >\n {new Array(rows).fill(null).map((_v, idx) => (\n <div\n key={idx}\n className={cnSkeletonText('Row')}\n style={{ fontSize: varFontSize, height: varLineHeight }}\n >\n <SkeletonBrick width={getRowWidth(idx, rows)} height={varFontSize} />\n </div>\n ))}\n </div>\n );\n};\n"],"mappings":"gJAAA,2BAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAEEC,yBAFF,CAIEC,mBAJF,kBAMA,OAASC,EAAT,0BAGA,OAASC,aAAT,mBAWA,GAAMC,eAAc,CAAGF,EAAE,CAAC,cAAD,CAAzB,CAEA,MAAO,IAAMG,YAAW,CAAG,SACzBC,CADyB,CAEzBC,CAFyB,CAGgC,CACzD,GAAID,CAAG,GAAKC,CAAK,CAAG,CAApB,CACE,MAAO,KAAP,CAGF,OAAQD,CAAG,CAAG,CAAd,EACE,IAAK,EAAL,CACE,MAAO,MAAP,CACF,IAAK,EAAL,CACE,MAAO,KAAP,CACF,IAAK,EAAL,CACE,MAAO,KAAP,CANJ,CASA,MAAO,MACR,CAlBM,CAoBP,MAAO,IAAME,aAAyC,CAAG,SACvDC,CADuD,CAEpD,IAEDC,EAFC,CAOCD,CAPD,CAEDC,SAFC,CAGDC,CAHC,CAOCF,CAPD,CAGDE,IAHC,GAOCF,CAPD,CAIDG,QAJC,CAIDA,CAJC,YAIUX,mBAJV,KAOCQ,CAPD,CAKDI,UALC,CAKDA,CALC,YAKYb,yBALZ,GAMEc,CANF,0BAOCL,CAPD,YASGM,CAAW,2BAAsBH,CAAtB,KATd,CAUGI,CAAa,kCAA6BH,CAA7B,KAVhB,CAYH,MACE,0CACE,SAAS,CAAET,cAAc,CAAC,IAAD,CAAO,CAACM,CAAD,CAAP,CAD3B,CAEE,GAAG,CAGDC,CALJ,EAOMG,CAPN,EASOG,KAAJ,CAAUN,CAAV,EAAgBO,IAAhB,CAAqB,IAArB,EAA2BC,GAA3B,CAA+B,SAACC,CAAD,CAAKd,CAAL,QAC9B,4BACE,GAAG,CAAEA,CADP,CAEE,SAAS,CAAEF,cAAc,CAAC,KAAD,CAF3B,CAGE,KAAK,CAAE,CAAEQ,QAAQ,CAAEG,CAAZ,CAAyBM,MAAM,CAAEL,CAAjC,CAHT,EAKE,oBAAC,aAAD,EAAe,KAAK,CAAEX,WAAW,CAACC,CAAD,CAAMK,CAAN,CAAjC,CAA8C,MAAM,CAAEI,CAAtD,EALF,CAD8B,CAA/B,CATH,CAoBH,CAnCM"}
@@ -1,4 +1,4 @@
1
1
  import './Tooltip.css';
2
2
  import React from 'react';
3
3
  import { TooltipProps } from './types';
4
- export declare const Tooltip: React.ForwardRefExoticComponent<Pick<TooltipProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "size" | "status" | "direction" | "offset" | "position" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "anchorRef" | "equalAnchorWidth" | "isOpen"> & React.RefAttributes<HTMLDivElement>>;
4
+ export declare const Tooltip: React.ForwardRefExoticComponent<Pick<TooltipProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "size" | "status" | "position" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "anchorRef" | "equalAnchorWidth" | "isOpen"> & React.RefAttributes<HTMLDivElement>>;
@@ -21,4 +21,4 @@ export declare type TooltipProps = PropsWithJsxAttributes<{
21
21
  offset?: number;
22
22
  onSetDirection?: (direction: Direction) => void;
23
23
  } & PositioningProps>;
24
- export declare const Tooltip: React.ForwardRefExoticComponent<Pick<TooltipProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "size" | "status" | "direction" | "offset" | "position" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "anchorRef" | "equalAnchorWidth"> & React.RefAttributes<HTMLDivElement>>;
24
+ export declare const Tooltip: React.ForwardRefExoticComponent<Pick<TooltipProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "size" | "status" | "position" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "anchorRef" | "equalAnchorWidth"> & React.RefAttributes<HTMLDivElement>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@consta/uikit",
3
- "version": "5.0.0-beta.2",
3
+ "version": "5.0.0",
4
4
  "keywords": [
5
5
  "ui-kit",
6
6
  "design-system",
@@ -16,14 +16,14 @@
16
16
  "peerDependencies": {
17
17
  "@bem-react/classname": "^1.6.0",
18
18
  "@bem-react/classnames": "^1.3.10",
19
- "@consta/icons": "^0.11.0",
19
+ "@consta/icons": "^1.0.0",
20
20
  "compute-scroll-into-view": "^1.0.17",
21
21
  "date-fns": "^2.30.0",
22
22
  "react": ">= 16.8.0",
23
23
  "react-dom": ">= 16.8.0",
24
24
  "react-dropzone": "11.3.4",
25
- "react-imask": "^7.1.3",
26
25
  "react-textarea-autosize": "^8.5.3",
26
+ "react-imask": "^7.2.1",
27
27
  "react-transition-group": "^4.4.5"
28
28
  },
29
29
  "files": [