@consta/uikit 5.28.5 → 5.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TextAreaAutoSize/index.d.ts +1 -0
- package/TextAreaAutoSize/index.js +1 -0
- package/__internal__/src/components/AutoComplete/AutoComplete.js +1 -1
- package/__internal__/src/components/AutoComplete/AutoComplete.js.map +1 -1
- package/__internal__/src/components/AutoComplete/helpers.d.ts +1 -0
- package/__internal__/src/components/AutoComplete/types.d.ts +1 -0
- package/__internal__/src/components/AutoComplete/types.js.map +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeText/AutoCompleteTypeText.js +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeText/AutoCompleteTypeText.js.map +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeTextArray/AutoCompleteTypeTextArray.js +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeTextArray/AutoCompleteTypeTextArray.js.map +1 -1
- package/__internal__/src/components/AutoCompleteCanary/helpers.d.ts +1 -0
- package/__internal__/src/components/AutoCompleteCanary/types.d.ts +1 -0
- package/__internal__/src/components/AutoCompleteCanary/types.js.map +1 -1
- package/__internal__/src/components/Combobox/Combobox.js +1 -1
- package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
- package/__internal__/src/components/Combobox/helpers.d.ts +3 -1
- package/__internal__/src/components/Combobox/helpers.js.map +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js.map +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js.map +1 -1
- package/__internal__/src/components/ContextMenu/helpers.d.ts +4 -2
- package/__internal__/src/components/ContextMenu/types.d.ts +2 -0
- package/__internal__/src/components/ContextMenu/types.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.d.ts +1 -0
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/types.d.ts +1 -0
- package/__internal__/src/components/DatePicker/types.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js.map +1 -1
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js +1 -1
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js.map +1 -1
- package/__internal__/src/components/FlatSelect/types.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/types.js.map +1 -1
- package/__internal__/src/components/Select/Select.js +1 -1
- package/__internal__/src/components/Select/Select.js.map +1 -1
- package/__internal__/src/components/Select/helpers.d.ts +3 -1
- package/__internal__/src/components/Select/helpers.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.d.ts +1 -0
- package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectMultiple/SelectMultiple.js +1 -1
- package/__internal__/src/components/SelectCanary/SelectMultiple/SelectMultiple.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectPopover/SelectPopover.d.ts +1 -0
- package/__internal__/src/components/SelectCanary/SelectPopover/SelectPopover.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectSingle/SelectSingle.js +1 -1
- package/__internal__/src/components/SelectCanary/SelectSingle/SelectSingle.js.map +1 -1
- package/__internal__/src/components/SelectCanary/helpers.d.ts +2 -1
- package/__internal__/src/components/SelectCanary/types.d.ts +1 -0
- package/__internal__/src/components/SelectCanary/types.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.d.ts +1 -0
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js.map +1 -1
- package/__internal__/src/components/TagBase/TagBase.d.ts +1 -1
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.css +1 -0
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.d.ts +11 -0
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js +2 -0
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js.map +1 -0
- package/__internal__/src/components/TextAreaAutoSize/index.d.ts +1 -0
- package/__internal__/src/components/TextAreaAutoSize/index.js +2 -0
- package/__internal__/src/components/TextAreaAutoSize/index.js.map +1 -0
- package/__internal__/src/components/TextField/TextField.js +1 -1
- package/__internal__/src/components/TextField/TextField.js.map +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.css +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js.map +1 -1
- package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
- package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
- package/__internal__/src/components/UserSelect/helpers.d.ts +3 -1
- package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
- package/__internal__/src/utils/objectCompare.d.ts +7 -0
- package/__internal__/src/utils/objectCompare.js +2 -0
- package/__internal__/src/utils/objectCompare.js.map +1 -0
- package/__internal__/src/utils/state/index.d.ts +3 -0
- package/__internal__/src/utils/state/index.js +1 -1
- package/__internal__/src/utils/state/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["controlRef","size","getOptionProps","dropdownRef","labelForCreate","className","labelForNotFound","labelForEmptyItems","hasItems","form","isOpen","offset","renderItem","visibleItems","isLoading","getGroupLabel","notFound","itemsRefs","virtualScroll","onScrollToBottom"];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"./SelectDropdown.css";import React,{Fragment,useEffect,useMemo,useRef}from"react";import{Transition}from"react-transition-group";import{cnListBox,ListItem,ListLoader,mapVerticalSpace}from"../../ListCanary";import{Popover}from"../../Popover";import{useDebounce}from"../../../hooks/useDebounce";import{useFlag}from"../../../hooks/useFlag";import{forkRef,useForkRef}from"../../../hooks/useForkRef";import{useVirtualScroll}from"../../../hooks/useVirtualScroll";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate/MixPopoverAnimate";import{cnMixScrollBar}from"../../../mixs/MixScrollBar";import{cnMixSpace}from"../../../mixs/MixSpace";import{cn}from"../../../utils/bem";import{fabricIndex}from"../../../utils/fabricIndex";import{SelectCreateButton}from"../SelectCreateButton/SelectCreateButton";import{SelectGroupLabel}from"../SelectGroupLabel/SelectGroupLabel";import{SelectItemAll}from"../SelectItemAll/SelectItemAll";import{SelectLoader}from"../SelectLoader/SelectLoader";import{isNotOptionForCreate,isOptionForCreate,isOptionForSelectAll}from"../useSelect";export var selectDropdownForm=["default","brick","round"];export var defaultSelectDropdownPropForm=selectDropdownForm[0];var cnSelectDropdown=cn("SelectDropdown"),getLengthElements=function(a){for(var b,c=1>=a.length?0:a.length,d=0;d<a.length;d++)b=a[d],isNotOptionForCreate(b)&&b.items.length&&(c+=b.items.length);return c},isVisible=function(a,b){return b>=a[0]&&b<a[1]};export var SelectDropdown=function(a){var b=a.controlRef,c=a.size,d=a.getOptionProps,e=a.dropdownRef,f=a.labelForCreate,g=a.className,h=a.labelForNotFound,i=a.labelForEmptyItems,j=a.hasItems,k=void 0===j||j,l=a.form,m=a.isOpen,n=a.offset,o=void 0===n?"none":n,p=a.renderItem,q=a.visibleItems,r=a.isLoading,s=a.getGroupLabel,t=a.notFound,u=a.itemsRefs,v=a.virtualScroll,w=a.onScrollToBottom,x=_objectWithoutProperties(a,_excluded),
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["controlRef","size","getOptionProps","dropdownRef","labelForCreate","className","labelForNotFound","labelForEmptyItems","hasItems","form","isOpen","offset","renderItem","visibleItems","isLoading","getGroupLabel","notFound","itemsRefs","virtualScroll","onScrollToBottom","viewportRef"];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"./SelectDropdown.css";import React,{Fragment,useEffect,useMemo,useRef}from"react";import{Transition}from"react-transition-group";import{cnListBox,ListItem,ListLoader,mapVerticalSpace}from"../../ListCanary";import{Popover}from"../../Popover";import{useDebounce}from"../../../hooks/useDebounce";import{useFlag}from"../../../hooks/useFlag";import{forkRef,useForkRef}from"../../../hooks/useForkRef";import{useVirtualScroll}from"../../../hooks/useVirtualScroll";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate/MixPopoverAnimate";import{cnMixScrollBar}from"../../../mixs/MixScrollBar";import{cnMixSpace}from"../../../mixs/MixSpace";import{cn}from"../../../utils/bem";import{fabricIndex}from"../../../utils/fabricIndex";import{SelectCreateButton}from"../SelectCreateButton/SelectCreateButton";import{SelectGroupLabel}from"../SelectGroupLabel/SelectGroupLabel";import{SelectItemAll}from"../SelectItemAll/SelectItemAll";import{SelectLoader}from"../SelectLoader/SelectLoader";import{isNotOptionForCreate,isOptionForCreate,isOptionForSelectAll}from"../useSelect";export var selectDropdownForm=["default","brick","round"];export var defaultSelectDropdownPropForm=selectDropdownForm[0];var cnSelectDropdown=cn("SelectDropdown"),getLengthElements=function(a){for(var b,c=1>=a.length?0:a.length,d=0;d<a.length;d++)b=a[d],isNotOptionForCreate(b)&&b.items.length&&(c+=b.items.length);return c},isVisible=function(a,b){return b>=a[0]&&b<a[1]};export var SelectDropdown=function(a){var b=a.controlRef,c=a.size,d=a.getOptionProps,e=a.dropdownRef,f=a.labelForCreate,g=a.className,h=a.labelForNotFound,i=a.labelForEmptyItems,j=a.hasItems,k=void 0===j||j,l=a.form,m=a.isOpen,n=a.offset,o=void 0===n?"none":n,p=a.renderItem,q=a.visibleItems,r=a.isLoading,s=a.getGroupLabel,t=a.notFound,u=a.itemsRefs,v=a.virtualScroll,w=a.onScrollToBottom,x=a.viewportRef,y=_objectWithoutProperties(a,_excluded),z="round"===l?"increased":"normal",A=useMemo(function(){return 0<q.filter(function(a){return isOptionForCreate(a)||Array.isArray(a.items)&&0<a.items.length}).length},[q]),B="none"===o?void 0:o,C=useMemo(function(){return getLengthElements(q)},[q]),D=useVirtualScroll({length:C,isActive:v&&m,onScrollToBottom:w}),E=D.spaceTop,F=D.slice,G=D.listRefs,H=D.scrollElementRef,I=0===F[0]&&v?[0,50]:F,J=useRef(null),K=useForkRef([H,e]),L=useFlag(),M=_slicedToArray(L,2),N=M[0],O=M[1],P=useDebounce(O.off,100);return useEffect(function(){var a,b=function(){O.on(),P()};return null===(a=H.current)||void 0===a?void 0:a.addEventListener("scroll",b),function(){var a;null===(a=H.current)||void 0===a?void 0:a.removeEventListener("scroll",b)}},[H.current]),React.createElement(Transition,{in:m,unmountOnExit:!0,nodeRef:J,timeout:animateTimeout},function(a){var e=fabricIndex(),j=fabricIndex();return React.createElement(Popover,Object.assign({},y,{anchorRef:b,direction:"downStartLeft",possibleDirections:["downStartLeft","upStartLeft","downStartRight","upStartRight"],offset:B,ref:J,role:"listbox",className:cnSelectDropdown(null,[cnListBox({size:c,form:l,border:!0,shadow:!0}),cnMixPopoverAnimate({animate:a}),g]),equalAnchorWidth:!0,viewportRef:x}),React.createElement("div",{className:cnSelectDropdown("ScrollContainer",[cnMixSpace({pV:mapVerticalSpace[c]}),cnMixScrollBar()]),ref:K},r&&!A&&React.createElement(SelectLoader,null),React.createElement("div",{className:cnSelectDropdown("List",{scrolled:N}),style:{marginTop:E}},q.map(function(a,b){if(isOptionForCreate(a)){var h=e();return React.createElement(SelectCreateButton,Object.assign({size:c,labelForCreate:f,inputValue:a.label,indent:z,ref:u[h]},d({index:h,item:a,keyPrefix:b})))}var g=1<q.length?j():0;return React.createElement(Fragment,{key:a.key},a.group&&s&&isVisible(I,g)&&React.createElement(SelectGroupLabel,{label:s(a.group),size:c,indent:z,ref:G[g],key:"group-".concat(a.key)}),a.items.map(function(b,f){if(isOptionForSelectAll(b)){var g=j(),h=e();if(isVisible(I,g))return React.createElement(SelectItemAll,Object.assign({ref:forkRef([G[g],u[h]]),indent:z,size:c},d({index:h,item:b,keyPrefix:f}),{intermediate:!!(b.checkedCount&&b.totalCount)&&b.checkedCount!==b.totalCount,checked:b.checkedCount===b.totalCount,countItems:b.checkedCount,total:b.totalCount}))}else{var i=j(),k=e();if(isVisible(I,i))return React.createElement(Fragment,{key:"".concat(a.key,"-").concat(f)},p(_objectSpread({ref:forkRef([G[i],u[k]]),item:b},d({index:k,item:b,keyPrefix:f}))))}}))}),r&&A&&React.createElement(ListLoader,{size:c,innerOffset:z})),!r&&k&&t&&h&&React.createElement(ListItem,{size:c,label:h,innerOffset:z},h),!r&&!k&&i&&React.createElement(ListItem,{size:c,label:i,innerOffset:z},i)))})};
|
|
2
2
|
//# sourceMappingURL=SelectDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDropdown.js","names":["React","Fragment","useEffect","useMemo","useRef","Transition","cnListBox","ListItem","ListLoader","mapVerticalSpace","Popover","useDebounce","useFlag","forkRef","useForkRef","useVirtualScroll","animateTimeout","cnMixPopoverAnimate","cnMixScrollBar","cnMixSpace","cn","fabricIndex","SelectCreateButton","SelectGroupLabel","SelectItemAll","SelectLoader","isNotOptionForCreate","isOptionForCreate","isOptionForSelectAll","selectDropdownForm","defaultSelectDropdownPropForm","cnSelectDropdown","getLengthElements","elements","element","length","index","items","isVisible","slice","SelectDropdown","props","controlRef","size","getOptionProps","dropdownRefProp","dropdownRef","labelForCreate","className","labelForNotFound","labelForEmptyItems","hasItems","form","isOpen","offset","offsetProp","renderItem","visibleItems","isLoading","getGroupLabel","notFound","itemsRefs","virtualScroll","onScrollToBottom","otherProps","indent","isListShowed","filter","group","Array","isArray","lengthForVirtualScroll","isActive","spaceTop","sliceHookProp","listRefs","scrollElementRef","popoverRef","scrolled","setScrolled","setScrolledOffDebounce","off","fn","on","current","addEventListener","removeEventListener","animate","getIndex","getVirtualIndex","border","shadow","pV","marginTop","map","groupIndex","label","item","keyPrefix","virtualIndex","key","i","checkedCount","totalCount","ref"],"sources":["../../../../../../src/components/SelectComponents/SelectDropdown/SelectDropdown.tsx"],"sourcesContent":["import './SelectDropdown.css';\n\nimport React, { Fragment, useEffect, useMemo, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport {\n cnListBox,\n ListItem,\n ListLoader,\n mapVerticalSpace,\n} from '##/components/ListCanary';\nimport { Popover, PopoverPropOffset } from '##/components/Popover';\nimport { useDebounce } from '##/hooks/useDebounce';\nimport { useFlag } from '##/hooks/useFlag';\nimport { forkRef, useForkRef } from '##/hooks/useForkRef';\nimport { useVirtualScroll } from '##/hooks/useVirtualScroll';\nimport {\n animateTimeout,\n cnMixPopoverAnimate,\n} from '##/mixs/MixPopoverAnimate/MixPopoverAnimate';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\nimport { cnMixSpace } from '##/mixs/MixSpace';\nimport { cn } from '##/utils/bem';\nimport { fabricIndex } from '##/utils/fabricIndex';\nimport { SelectAllItem } from '##/utils/getGroups';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport { SelectCreateButton } from '../SelectCreateButton/SelectCreateButton';\nimport { SelectGroupLabel } from '../SelectGroupLabel/SelectGroupLabel';\nimport { SelectItemAll } from '../SelectItemAll/SelectItemAll';\nimport { SelectLoader } from '../SelectLoader/SelectLoader';\nimport { PropSize, RenderItemProps } from '../types';\nimport {\n GetOptionPropsResult,\n isNotOptionForCreate,\n isOptionForCreate,\n isOptionForSelectAll,\n OptionForCreate,\n OptionProps,\n} from '../useSelect';\n\nexport const selectDropdownForm = ['default', 'brick', 'round'] as const;\nexport type SelectDropdownPropForm = typeof selectDropdownForm[number];\nexport const defaultSelectDropdownPropForm = selectDropdownForm[0];\n\ntype Props<ITEM, GROUP> = PropsWithJsxAttributes<{\n size: PropSize;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n dropdownRef: React.Ref<HTMLDivElement>;\n getOptionProps(props: OptionProps<ITEM>): GetOptionPropsResult;\n form: SelectDropdownPropForm;\n isOpen: boolean;\n offset?: PopoverPropOffset | 'none';\n isLoading?: boolean;\n renderItem: (props: RenderItemProps<ITEM>) => React.ReactNode | null;\n visibleItems: (\n | OptionForCreate\n | {\n items: Array<SelectAllItem | ITEM>;\n key: string | number;\n group?: GROUP;\n groupIndex: number;\n checkedCount?: number;\n totalCount?: number;\n }\n )[];\n getGroupLabel?: (group: GROUP) => string;\n labelForCreate?: string;\n labelForNotFound?: string;\n labelForEmptyItems?: string;\n notFound?: boolean;\n hasItems?: boolean;\n itemsRefs: React.RefObject<HTMLDivElement>[];\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n}>;\n\ntype SelectDropdownComponent = <ITEM, GROUP>(\n props: Props<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nconst cnSelectDropdown = cn('SelectDropdown');\n\nconst getLengthElements = <ITEM, GROUP>(\n elements: (\n | OptionForCreate\n | {\n items: Array<SelectAllItem | ITEM>;\n key: string | number;\n group?: GROUP;\n groupIndex: number;\n checkedCount?: number;\n totalCount?: number;\n }\n )[],\n) => {\n let length = elements.length <= 1 ? 0 : elements.length;\n\n for (let index = 0; index < elements.length; index++) {\n const element = elements[index];\n\n if (isNotOptionForCreate(element) && element.items.length) {\n length += element.items.length;\n }\n }\n\n return length;\n};\n\nconst isVisible = (slice: [number, number], index: number) => {\n return index >= slice[0] && index < slice[1];\n};\n\nexport const SelectDropdown: SelectDropdownComponent = (props) => {\n const {\n controlRef,\n size,\n getOptionProps,\n dropdownRef: dropdownRefProp,\n labelForCreate,\n className,\n labelForNotFound,\n labelForEmptyItems,\n hasItems = true,\n form,\n isOpen,\n offset: offsetProp = 'none',\n renderItem,\n visibleItems,\n isLoading,\n getGroupLabel,\n notFound,\n itemsRefs,\n virtualScroll,\n onScrollToBottom,\n ...otherProps\n } = props;\n\n const indent = form === 'round' ? 'increased' : 'normal';\n\n const isListShowed = useMemo(() => {\n return (\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) ||\n (Array.isArray(group.items) && group.items.length > 0),\n ).length > 0\n );\n }, [visibleItems]);\n\n const offset = offsetProp === 'none' ? undefined : offsetProp;\n\n const lengthForVirtualScroll = useMemo(\n () => getLengthElements(visibleItems),\n [visibleItems],\n );\n\n const {\n spaceTop,\n slice: sliceHookProp,\n listRefs,\n scrollElementRef,\n } = useVirtualScroll({\n length: lengthForVirtualScroll,\n isActive: virtualScroll && isOpen,\n onScrollToBottom,\n });\n\n const slice: [number, number] =\n sliceHookProp[0] === 0 && virtualScroll ? [0, 50] : sliceHookProp;\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useForkRef([scrollElementRef, dropdownRefProp]);\n const [scrolled, setScrolled] = useFlag();\n const setScrolledOffDebounce = useDebounce(setScrolled.off, 100);\n\n useEffect(() => {\n const fn = () => {\n setScrolled.on();\n setScrolledOffDebounce();\n };\n\n scrollElementRef.current?.addEventListener('scroll', fn);\n\n return () => {\n scrollElementRef.current?.removeEventListener('scroll', fn);\n };\n }, [scrollElementRef.current]);\n\n return (\n <Transition\n in={isOpen}\n unmountOnExit\n nodeRef={popoverRef}\n timeout={animateTimeout}\n >\n {(animate) => {\n const getIndex = fabricIndex();\n const getVirtualIndex = fabricIndex();\n\n return (\n <Popover\n {...otherProps}\n anchorRef={controlRef}\n direction=\"downStartLeft\"\n possibleDirections={[\n 'downStartLeft',\n 'upStartLeft',\n 'downStartRight',\n 'upStartRight',\n ]}\n offset={offset}\n ref={popoverRef}\n role=\"listbox\"\n className={cnSelectDropdown(null, [\n cnListBox({ size, form, border: true, shadow: true }),\n cnMixPopoverAnimate({ animate }),\n className,\n ])}\n equalAnchorWidth\n >\n <div\n className={cnSelectDropdown('ScrollContainer', [\n cnMixSpace({\n pV: mapVerticalSpace[size],\n }),\n cnMixScrollBar(),\n ])}\n ref={dropdownRef}\n >\n {isLoading && !isListShowed && <SelectLoader />}\n <div\n className={cnSelectDropdown('List', { scrolled })}\n style={{ marginTop: spaceTop }}\n >\n {visibleItems.map((group, groupIndex) => {\n if (isOptionForCreate(group)) {\n const index = getIndex();\n return (\n <SelectCreateButton\n size={size}\n labelForCreate={labelForCreate}\n inputValue={group.label}\n indent={indent}\n ref={itemsRefs[index]}\n {...getOptionProps({\n index,\n item: group,\n keyPrefix: groupIndex,\n })}\n />\n );\n }\n\n const virtualIndex =\n visibleItems.length > 1 ? getVirtualIndex() : 0;\n\n return (\n <Fragment key={group.key}>\n {group.group &&\n getGroupLabel &&\n isVisible(slice, virtualIndex) && (\n <SelectGroupLabel\n label={getGroupLabel(group.group)}\n size={size}\n indent={indent}\n ref={listRefs[virtualIndex]}\n key={`group-${group.key}`}\n />\n )}\n {group.items.map((item, i) => {\n if (isOptionForSelectAll(item)) {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n\n if (isVisible(slice, virtualIndex)) {\n return (\n <SelectItemAll\n ref={forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ])}\n indent={indent}\n size={size}\n {...getOptionProps({\n index,\n item,\n keyPrefix: i,\n })}\n intermediate={\n item.checkedCount && item.totalCount\n ? item.checkedCount !== item.totalCount\n : false\n }\n checked={item.checkedCount === item.totalCount}\n countItems={item.checkedCount}\n total={item.totalCount}\n />\n );\n }\n } else {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n if (isVisible(slice, virtualIndex)) {\n return (\n <Fragment key={`${group.key}-${i}`}>\n {renderItem({\n ref: forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ]),\n item,\n ...getOptionProps({\n index,\n item,\n keyPrefix: i,\n }),\n })}\n </Fragment>\n );\n }\n }\n })}\n </Fragment>\n );\n })}\n {isLoading && isListShowed && (\n <ListLoader size={size} innerOffset={indent} />\n )}\n </div>\n {!isLoading && hasItems && notFound && labelForNotFound && (\n <ListItem\n size={size}\n label={labelForNotFound}\n innerOffset={indent}\n >\n {labelForNotFound}\n </ListItem>\n )}\n {!isLoading && !hasItems && labelForEmptyItems && (\n <ListItem\n size={size}\n label={labelForEmptyItems}\n innerOffset={indent}\n >\n {labelForEmptyItems}\n </ListItem>\n )}\n </div>\n </Popover>\n );\n }}\n </Transition>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectDropdown.js","names":["React","Fragment","useEffect","useMemo","useRef","Transition","cnListBox","ListItem","ListLoader","mapVerticalSpace","Popover","useDebounce","useFlag","forkRef","useForkRef","useVirtualScroll","animateTimeout","cnMixPopoverAnimate","cnMixScrollBar","cnMixSpace","cn","fabricIndex","SelectCreateButton","SelectGroupLabel","SelectItemAll","SelectLoader","isNotOptionForCreate","isOptionForCreate","isOptionForSelectAll","selectDropdownForm","defaultSelectDropdownPropForm","cnSelectDropdown","getLengthElements","elements","element","length","index","items","isVisible","slice","SelectDropdown","props","controlRef","size","getOptionProps","dropdownRefProp","dropdownRef","labelForCreate","className","labelForNotFound","labelForEmptyItems","hasItems","form","isOpen","offset","offsetProp","renderItem","visibleItems","isLoading","getGroupLabel","notFound","itemsRefs","virtualScroll","onScrollToBottom","viewportRef","otherProps","indent","isListShowed","filter","group","Array","isArray","lengthForVirtualScroll","isActive","spaceTop","sliceHookProp","listRefs","scrollElementRef","popoverRef","scrolled","setScrolled","setScrolledOffDebounce","off","fn","on","current","addEventListener","removeEventListener","animate","getIndex","getVirtualIndex","border","shadow","pV","marginTop","map","groupIndex","label","item","keyPrefix","virtualIndex","key","i","checkedCount","totalCount","ref"],"sources":["../../../../../../src/components/SelectComponents/SelectDropdown/SelectDropdown.tsx"],"sourcesContent":["import './SelectDropdown.css';\n\nimport React, { Fragment, useEffect, useMemo, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport {\n cnListBox,\n ListItem,\n ListLoader,\n mapVerticalSpace,\n} from '##/components/ListCanary';\nimport { Popover, PopoverPropOffset } from '##/components/Popover';\nimport { useDebounce } from '##/hooks/useDebounce';\nimport { useFlag } from '##/hooks/useFlag';\nimport { forkRef, useForkRef } from '##/hooks/useForkRef';\nimport { useVirtualScroll } from '##/hooks/useVirtualScroll';\nimport {\n animateTimeout,\n cnMixPopoverAnimate,\n} from '##/mixs/MixPopoverAnimate/MixPopoverAnimate';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\nimport { cnMixSpace } from '##/mixs/MixSpace';\nimport { cn } from '##/utils/bem';\nimport { fabricIndex } from '##/utils/fabricIndex';\nimport { SelectAllItem } from '##/utils/getGroups';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport { SelectCreateButton } from '../SelectCreateButton/SelectCreateButton';\nimport { SelectGroupLabel } from '../SelectGroupLabel/SelectGroupLabel';\nimport { SelectItemAll } from '../SelectItemAll/SelectItemAll';\nimport { SelectLoader } from '../SelectLoader/SelectLoader';\nimport { PropSize, RenderItemProps } from '../types';\nimport {\n GetOptionPropsResult,\n isNotOptionForCreate,\n isOptionForCreate,\n isOptionForSelectAll,\n OptionForCreate,\n OptionProps,\n} from '../useSelect';\n\nexport const selectDropdownForm = ['default', 'brick', 'round'] as const;\nexport type SelectDropdownPropForm = typeof selectDropdownForm[number];\nexport const defaultSelectDropdownPropForm = selectDropdownForm[0];\n\ntype Props<ITEM, GROUP> = PropsWithJsxAttributes<{\n size: PropSize;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n dropdownRef: React.Ref<HTMLDivElement>;\n getOptionProps(props: OptionProps<ITEM>): GetOptionPropsResult;\n form: SelectDropdownPropForm;\n isOpen: boolean;\n offset?: PopoverPropOffset | 'none';\n isLoading?: boolean;\n renderItem: (props: RenderItemProps<ITEM>) => React.ReactNode | null;\n visibleItems: (\n | OptionForCreate\n | {\n items: Array<SelectAllItem | ITEM>;\n key: string | number;\n group?: GROUP;\n groupIndex: number;\n checkedCount?: number;\n totalCount?: number;\n }\n )[];\n getGroupLabel?: (group: GROUP) => string;\n labelForCreate?: string;\n labelForNotFound?: string;\n labelForEmptyItems?: string;\n notFound?: boolean;\n hasItems?: boolean;\n itemsRefs: React.RefObject<HTMLDivElement>[];\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n viewportRef?: React.RefObject<HTMLElement>;\n}>;\n\ntype SelectDropdownComponent = <ITEM, GROUP>(\n props: Props<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nconst cnSelectDropdown = cn('SelectDropdown');\n\nconst getLengthElements = <ITEM, GROUP>(\n elements: (\n | OptionForCreate\n | {\n items: Array<SelectAllItem | ITEM>;\n key: string | number;\n group?: GROUP;\n groupIndex: number;\n checkedCount?: number;\n totalCount?: number;\n }\n )[],\n) => {\n let length = elements.length <= 1 ? 0 : elements.length;\n\n for (let index = 0; index < elements.length; index++) {\n const element = elements[index];\n\n if (isNotOptionForCreate(element) && element.items.length) {\n length += element.items.length;\n }\n }\n\n return length;\n};\n\nconst isVisible = (slice: [number, number], index: number) => {\n return index >= slice[0] && index < slice[1];\n};\n\nexport const SelectDropdown: SelectDropdownComponent = (props) => {\n const {\n controlRef,\n size,\n getOptionProps,\n dropdownRef: dropdownRefProp,\n labelForCreate,\n className,\n labelForNotFound,\n labelForEmptyItems,\n hasItems = true,\n form,\n isOpen,\n offset: offsetProp = 'none',\n renderItem,\n visibleItems,\n isLoading,\n getGroupLabel,\n notFound,\n itemsRefs,\n virtualScroll,\n onScrollToBottom,\n viewportRef,\n ...otherProps\n } = props;\n\n const indent = form === 'round' ? 'increased' : 'normal';\n\n const isListShowed = useMemo(() => {\n return (\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) ||\n (Array.isArray(group.items) && group.items.length > 0),\n ).length > 0\n );\n }, [visibleItems]);\n\n const offset = offsetProp === 'none' ? undefined : offsetProp;\n\n const lengthForVirtualScroll = useMemo(\n () => getLengthElements(visibleItems),\n [visibleItems],\n );\n\n const {\n spaceTop,\n slice: sliceHookProp,\n listRefs,\n scrollElementRef,\n } = useVirtualScroll({\n length: lengthForVirtualScroll,\n isActive: virtualScroll && isOpen,\n onScrollToBottom,\n });\n\n const slice: [number, number] =\n sliceHookProp[0] === 0 && virtualScroll ? [0, 50] : sliceHookProp;\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useForkRef([scrollElementRef, dropdownRefProp]);\n const [scrolled, setScrolled] = useFlag();\n const setScrolledOffDebounce = useDebounce(setScrolled.off, 100);\n\n useEffect(() => {\n const fn = () => {\n setScrolled.on();\n setScrolledOffDebounce();\n };\n\n scrollElementRef.current?.addEventListener('scroll', fn);\n\n return () => {\n scrollElementRef.current?.removeEventListener('scroll', fn);\n };\n }, [scrollElementRef.current]);\n\n return (\n <Transition\n in={isOpen}\n unmountOnExit\n nodeRef={popoverRef}\n timeout={animateTimeout}\n >\n {(animate) => {\n const getIndex = fabricIndex();\n const getVirtualIndex = fabricIndex();\n\n return (\n <Popover\n {...otherProps}\n anchorRef={controlRef}\n direction=\"downStartLeft\"\n possibleDirections={[\n 'downStartLeft',\n 'upStartLeft',\n 'downStartRight',\n 'upStartRight',\n ]}\n offset={offset}\n ref={popoverRef}\n role=\"listbox\"\n className={cnSelectDropdown(null, [\n cnListBox({ size, form, border: true, shadow: true }),\n cnMixPopoverAnimate({ animate }),\n className,\n ])}\n equalAnchorWidth\n viewportRef={viewportRef}\n >\n <div\n className={cnSelectDropdown('ScrollContainer', [\n cnMixSpace({\n pV: mapVerticalSpace[size],\n }),\n cnMixScrollBar(),\n ])}\n ref={dropdownRef}\n >\n {isLoading && !isListShowed && <SelectLoader />}\n <div\n className={cnSelectDropdown('List', { scrolled })}\n style={{ marginTop: spaceTop }}\n >\n {visibleItems.map((group, groupIndex) => {\n if (isOptionForCreate(group)) {\n const index = getIndex();\n return (\n <SelectCreateButton\n size={size}\n labelForCreate={labelForCreate}\n inputValue={group.label}\n indent={indent}\n ref={itemsRefs[index]}\n {...getOptionProps({\n index,\n item: group,\n keyPrefix: groupIndex,\n })}\n />\n );\n }\n\n const virtualIndex =\n visibleItems.length > 1 ? getVirtualIndex() : 0;\n\n return (\n <Fragment key={group.key}>\n {group.group &&\n getGroupLabel &&\n isVisible(slice, virtualIndex) && (\n <SelectGroupLabel\n label={getGroupLabel(group.group)}\n size={size}\n indent={indent}\n ref={listRefs[virtualIndex]}\n key={`group-${group.key}`}\n />\n )}\n {group.items.map((item, i) => {\n if (isOptionForSelectAll(item)) {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n\n if (isVisible(slice, virtualIndex)) {\n return (\n <SelectItemAll\n ref={forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ])}\n indent={indent}\n size={size}\n {...getOptionProps({\n index,\n item,\n keyPrefix: i,\n })}\n intermediate={\n item.checkedCount && item.totalCount\n ? item.checkedCount !== item.totalCount\n : false\n }\n checked={item.checkedCount === item.totalCount}\n countItems={item.checkedCount}\n total={item.totalCount}\n />\n );\n }\n } else {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n if (isVisible(slice, virtualIndex)) {\n return (\n <Fragment key={`${group.key}-${i}`}>\n {renderItem({\n ref: forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ]),\n item,\n ...getOptionProps({\n index,\n item,\n keyPrefix: i,\n }),\n })}\n </Fragment>\n );\n }\n }\n })}\n </Fragment>\n );\n })}\n {isLoading && isListShowed && (\n <ListLoader size={size} innerOffset={indent} />\n )}\n </div>\n {!isLoading && hasItems && notFound && labelForNotFound && (\n <ListItem\n size={size}\n label={labelForNotFound}\n innerOffset={indent}\n >\n {labelForNotFound}\n </ListItem>\n )}\n {!isLoading && !hasItems && labelForEmptyItems && (\n <ListItem\n size={size}\n label={labelForEmptyItems}\n innerOffset={indent}\n >\n {labelForEmptyItems}\n </ListItem>\n )}\n </div>\n </Popover>\n );\n }}\n </Transition>\n );\n};\n"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare const tagBasePropSizeDefault: "m";
|
|
|
6
6
|
export type TagBasePropSize = typeof tagBasePropSize[number];
|
|
7
7
|
export declare const tagBasePropGroupNumberValue: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
8
8
|
export declare const tagBasePropGroupStringValue: readonly ["1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
9
|
-
export declare const tagBasePropGroup: (1 | 4 | 2 | "1" | 3 | 5 | 9 | "2" |
|
|
9
|
+
export declare const tagBasePropGroup: (1 | 4 | 2 | "1" | 3 | 5 | 9 | "2" | "3" | 7 | 6 | 8 | "4" | "5" | "6" | "7" | "8" | "9")[];
|
|
10
10
|
export type TagBasePropGroup = typeof tagBasePropGroup[number];
|
|
11
11
|
export declare const tagBasePropView: readonly ["stroked", "filled"];
|
|
12
12
|
export declare const tagBasePropViewDefault: "stroked";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.TextAreaAutoSize{line-height:1.5;resize:none}.TextAreaAutoSize-Fake{word-wrap:break-word;height:0;left:-9999px;position:absolute;top:-9999px;visibility:hidden;white-space:pre-wrap}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import './TextAreaAutoSize.css';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare const cnTextAreaAutoSize: import("@bem-react/classname").ClassNameFormatter;
|
|
4
|
+
export type TextAreaAutoSizeProps = {
|
|
5
|
+
minRows?: number;
|
|
6
|
+
maxRows?: number;
|
|
7
|
+
} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;
|
|
8
|
+
export declare const TextAreaAutoSize: React.ForwardRefExoticComponent<{
|
|
9
|
+
minRows?: number;
|
|
10
|
+
maxRows?: number;
|
|
11
|
+
} & React.TextareaHTMLAttributes<HTMLTextAreaElement> & React.RefAttributes<HTMLTextAreaElement>>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["minRows","maxRows","onChange","style","className"];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"./TextAreaAutoSize.css";import{useAction,useAtom,useUpdate}from"@reatom/npm-react";import React,{forwardRef}from"react";import{createPortal}from"react-dom";import{useForkRef}from"../../hooks/useForkRef";import{cn}from"../../utils/bem";import{deepEqual}from"../../utils/objectCompare";import{useCreateAtom,useRefAtom,useResizeObservedAtom,useSendToAtom,withCtx}from"../../utils/state";export var cnTextAreaAutoSize=cn("TextAreaAutoSize");export var TextAreaAutoSize=withCtx(forwardRef(function(a,b){var c=a.minRows,d=void 0===c?1:c,e=a.maxRows,f=a.onChange,g=a.style,h=a.className,i=_objectWithoutProperties(a,_excluded),j=useRefAtom(),k=_slicedToArray(j,2),l=k[0],m=k[1],n=useRefAtom(),o=_slicedToArray(n,2),p=o[0],q=o[1],r=useAtom({}),s=_slicedToArray(r,3),t=s[0],u=s[2],v=useAtom({}),w=_slicedToArray(v,3),x=w[0],y=w[2],z=useSendToAtom(a),A=useAction(function(a){var b=a.get(l),c=a.get(p);if(b&&c){var f=getComputedStyle(b),g={minHeight:f.minHeight,maxHeight:f.maxHeight,width:f.width,padding:f.padding,paddingBottom:f.paddingBottom,paddingTop:f.paddingTop,paddingLeft:f.paddingLeft,paddingRight:f.paddingRight,margin:f.margin,border:f.border,borderTop:f.borderTop,borderBottom:f.borderBottom,borderLeft:f.borderLeft,borderRight:f.borderRight,fontFamily:f.fontFamily,fontSize:f.fontSize,lineHeight:f.lineHeight,tabSize:f.tabSize,textIndent:f.textIndent,textRendering:f.textRendering,textTransform:f.textTransform,display:f.display,whiteSpace:f.whiteSpace,wordBreak:f.wordBreak};deepEqual(g,a.get(y))||y(a,g);var h=getComputedStyle(c),i=parseFloat(h.lineHeight),j=parseFloat(h.paddingTop),k=parseFloat(h.paddingBottom),m=parseFloat(h.borderTopWidth),n=parseFloat(h.borderBottomWidth),o=j+k+m+n,q=c.scrollHeight,r=e?e*i+o:1/0,s=Math.min(Math.max(q,d*i+o),r);if(!isNaN(s)){var t={height:"".concat(s,"px"),overflowY:e&&q>r?"scroll":"hidden"};deepEqual(t,a.get(u))||u(a,t)}}}),B=useAction(function(a,b){var c,d;null===(c=(d=a.get(z)).onChange)||void 0===c?void 0:c.call(d,b);var e=a.get(p);e&&(e.value=b.target.value),A()});return useUpdate(A,[d,e,p,l]),useResizeObservedAtom(useCreateAtom(function(a){return[a.spy(l),a.get(p)]}),A),useCreateAtom(function(a){var b=a.spy(p),c=a.spy(l);b&&c&&(b.value=c.value,A())}),React.createElement(React.Fragment,null,React.createElement("textarea",Object.assign({},i,{ref:useForkRef([m,b]),onChange:B,style:_objectSpread(_objectSpread({},g),t),className:cnTextAreaAutoSize(null,[h])})),createPortal(React.createElement("textarea",{ref:q,style:x,className:cnTextAreaAutoSize("Fake"),id:cnTextAreaAutoSize("Fake",{id:i.id,name:i.name})}),document.body))}));
|
|
2
|
+
//# sourceMappingURL=TextAreaAutoSize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextAreaAutoSize.js","names":["useAction","useAtom","useUpdate","React","forwardRef","createPortal","useForkRef","cn","deepEqual","useCreateAtom","useRefAtom","useResizeObservedAtom","useSendToAtom","withCtx","cnTextAreaAutoSize","TextAreaAutoSize","props","ref","minRows","maxRows","onChange","style","className","restProps","textAreaElementAtom","textAreaRef","fakeElementAtom","fakeRef","textareaStyles","textareaStylesAtom","fakeStyles","fakeStylesAtom","propsAtom","calculateHeight","ctx","textAreaElement","get","fakeElement","textAreaStyles","getComputedStyle","newFakeStyles","minHeight","maxHeight","width","padding","paddingBottom","paddingTop","paddingLeft","paddingRight","margin","border","borderTop","borderBottom","borderLeft","borderRight","fontFamily","fontSize","lineHeight","tabSize","textIndent","textRendering","textTransform","display","whiteSpace","wordBreak","computedStyle","parseFloat","borderTopWidth","borderBottomWidth","gap","newHeight","scrollHeight","finalHeight","Math","min","max","isNaN","newTextareaStyles","height","overflowY","handleChange","e","value","target","spy","id","name","document","body"],"sources":["../../../../../src/components/TextAreaAutoSize/TextAreaAutoSize.tsx"],"sourcesContent":["import './TextAreaAutoSize.css';\n\nimport { useAction, useAtom, useUpdate } from '@reatom/npm-react';\nimport React, { forwardRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cn } from '##/utils/bem';\nimport { deepEqual } from '##/utils/objectCompare';\nimport {\n useCreateAtom,\n useRefAtom,\n useResizeObservedAtom,\n useSendToAtom,\n withCtx,\n} from '##/utils/state';\n\nexport const cnTextAreaAutoSize = cn('TextAreaAutoSize');\n\nexport type TextAreaAutoSizeProps = {\n minRows?: number;\n maxRows?: number;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextAreaAutoSize = withCtx(\n forwardRef<HTMLTextAreaElement, TextAreaAutoSizeProps>((props, ref) => {\n const {\n minRows = 1,\n maxRows,\n onChange,\n style,\n className,\n ...restProps\n } = props;\n\n const [textAreaElementAtom, textAreaRef] =\n useRefAtom<HTMLTextAreaElement>();\n const [fakeElementAtom, fakeRef] = useRefAtom<HTMLTextAreaElement>();\n\n const [textareaStyles, , textareaStylesAtom] = useAtom<React.CSSProperties>(\n {},\n );\n const [fakeStyles, , fakeStylesAtom] = useAtom<React.CSSProperties>({});\n\n const propsAtom = useSendToAtom(props);\n\n const calculateHeight = useAction((ctx) => {\n const textAreaElement = ctx.get(textAreaElementAtom);\n const fakeElement = ctx.get(fakeElementAtom);\n\n if (!textAreaElement || !fakeElement) return;\n const textAreaStyles = getComputedStyle(textAreaElement);\n\n const newFakeStyles = {\n minHeight: textAreaStyles.minHeight,\n maxHeight: textAreaStyles.maxHeight,\n width: textAreaStyles.width,\n padding: textAreaStyles.padding,\n paddingBottom: textAreaStyles.paddingBottom,\n paddingTop: textAreaStyles.paddingTop,\n paddingLeft: textAreaStyles.paddingLeft,\n paddingRight: textAreaStyles.paddingRight,\n margin: textAreaStyles.margin,\n border: textAreaStyles.border,\n borderTop: textAreaStyles.borderTop,\n borderBottom: textAreaStyles.borderBottom,\n borderLeft: textAreaStyles.borderLeft,\n borderRight: textAreaStyles.borderRight,\n fontFamily: textAreaStyles.fontFamily,\n fontSize: textAreaStyles.fontSize,\n lineHeight: textAreaStyles.lineHeight,\n tabSize: textAreaStyles.tabSize,\n textIndent: textAreaStyles.textIndent,\n textRendering: textAreaStyles.textRendering,\n textTransform: textAreaStyles.textTransform,\n display: textAreaStyles.display,\n whiteSpace: textAreaStyles.whiteSpace,\n wordBreak: textAreaStyles.wordBreak,\n } as React.CSSProperties;\n\n if (!deepEqual(newFakeStyles, ctx.get(fakeStylesAtom))) {\n fakeStylesAtom(ctx, newFakeStyles);\n }\n\n const computedStyle = getComputedStyle(fakeElement);\n const lineHeight = parseFloat(computedStyle.lineHeight);\n\n const paddingTop = parseFloat(computedStyle.paddingTop);\n const paddingBottom = parseFloat(computedStyle.paddingBottom);\n const borderTop = parseFloat(computedStyle.borderTopWidth);\n const borderBottom = parseFloat(computedStyle.borderBottomWidth);\n\n const gap = paddingTop + paddingBottom + borderTop + borderBottom;\n\n const newHeight = fakeElement.scrollHeight;\n\n const minHeight = minRows * lineHeight + gap;\n const maxHeight = maxRows ? maxRows * lineHeight + gap : Infinity;\n\n const finalHeight = Math.min(Math.max(newHeight, minHeight), maxHeight);\n\n if (isNaN(finalHeight)) {\n return;\n }\n\n const newTextareaStyles: React.CSSProperties = {\n height: `${finalHeight}px`,\n overflowY: maxRows && newHeight > maxHeight ? 'scroll' : 'hidden',\n };\n\n if (!deepEqual(newTextareaStyles, ctx.get(textareaStylesAtom))) {\n textareaStylesAtom(ctx, newTextareaStyles);\n }\n });\n\n const handleChange: React.ChangeEventHandler<HTMLTextAreaElement> =\n useAction((ctx, e) => {\n ctx.get(propsAtom).onChange?.(e);\n const fakeElement = ctx.get(fakeElementAtom);\n if (fakeElement) {\n fakeElement.value = e.target.value;\n }\n calculateHeight();\n });\n\n useUpdate(calculateHeight, [\n minRows,\n maxRows,\n fakeElementAtom,\n textAreaElementAtom,\n ]);\n\n useResizeObservedAtom(\n useCreateAtom((ctx) => [\n ctx.spy(textAreaElementAtom),\n ctx.get(fakeElementAtom),\n ]),\n calculateHeight,\n );\n\n useCreateAtom((ctx) => {\n const fakeElement = ctx.spy(fakeElementAtom);\n const textAreaElement = ctx.spy(textAreaElementAtom);\n if (fakeElement && textAreaElement) {\n fakeElement.value = textAreaElement.value;\n calculateHeight();\n }\n });\n\n return (\n <>\n <textarea\n {...restProps}\n ref={useForkRef([textAreaRef, ref])}\n onChange={handleChange}\n style={{ ...style, ...textareaStyles }}\n className={cnTextAreaAutoSize(null, [className])}\n />\n {createPortal(\n <textarea\n ref={fakeRef}\n style={fakeStyles}\n className={cnTextAreaAutoSize('Fake')}\n id={cnTextAreaAutoSize('Fake', {\n id: restProps.id,\n name: restProps.name,\n })}\n />,\n document.body,\n )}\n </>\n );\n }),\n);\n"],"mappings":"83BAAA,+BAEA,OAASA,SAAT,CAAoBC,OAApB,CAA6BC,SAA7B,KAA8C,mBAA9C,CACA,MAAOC,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CACA,OAASC,YAAT,KAA6B,WAA7B,CAEA,OAASC,UAAT,8BACA,OAASC,EAAT,uBACA,OAASC,SAAT,iCACA,OACEC,aADF,CAEEC,UAFF,CAGEC,qBAHF,CAIEC,aAJF,CAKEC,OALF,yBAQA,MAAO,IAAMC,mBAAkB,CAAGP,EAAE,CAAC,kBAAD,CAA7B,CAOP,MAAO,IAAMQ,iBAAgB,CAAGF,OAAO,CACrCT,UAAU,CAA6C,SAACY,CAAD,CAAQC,CAAR,CAAgB,OAQjED,CARiE,CAEnEE,OAFmE,CAEnEA,CAFmE,YAEzD,CAFyD,GAGnEC,CAHmE,CAQjEH,CARiE,CAGnEG,OAHmE,CAInEC,CAJmE,CAQjEJ,CARiE,CAInEI,QAJmE,CAKnEC,CALmE,CAQjEL,CARiE,CAKnEK,KALmE,CAMnEC,CANmE,CAQjEN,CARiE,CAMnEM,SANmE,CAOhEC,CAPgE,0BAQjEP,CARiE,cAWnEN,UAAU,EAXyD,uBAU9Dc,CAV8D,MAUzCC,CAVyC,QAYlCf,UAAU,EAZwB,uBAY9DgB,CAZ8D,MAY7CC,CAZ6C,QActB1B,OAAO,CACpD,EADoD,CAde,uBAc9D2B,CAd8D,MAc5CC,CAd4C,QAiB9B5B,OAAO,CAAsB,EAAtB,CAjBuB,uBAiB9D6B,CAjB8D,MAiBhDC,CAjBgD,MAmB/DC,CAAS,CAAGpB,aAAa,CAACI,CAAD,CAnBsC,CAqB/DiB,CAAe,CAAGjC,SAAS,CAAC,SAACkC,CAAD,CAAS,IACnCC,EAAe,CAAGD,CAAG,CAACE,GAAJ,CAAQZ,CAAR,CADiB,CAEnCa,CAAW,CAAGH,CAAG,CAACE,GAAJ,CAAQV,CAAR,CAFqB,CAIzC,GAAKS,CAAD,EAAqBE,CAAzB,KACMC,EAAc,CAAGC,gBAAgB,CAACJ,CAAD,CADvC,CAGMK,CAAa,CAAG,CACpBC,SAAS,CAAEH,CAAc,CAACG,SADN,CAEpBC,SAAS,CAAEJ,CAAc,CAACI,SAFN,CAGpBC,KAAK,CAAEL,CAAc,CAACK,KAHF,CAIpBC,OAAO,CAAEN,CAAc,CAACM,OAJJ,CAKpBC,aAAa,CAAEP,CAAc,CAACO,aALV,CAMpBC,UAAU,CAAER,CAAc,CAACQ,UANP,CAOpBC,WAAW,CAAET,CAAc,CAACS,WAPR,CAQpBC,YAAY,CAAEV,CAAc,CAACU,YART,CASpBC,MAAM,CAAEX,CAAc,CAACW,MATH,CAUpBC,MAAM,CAAEZ,CAAc,CAACY,MAVH,CAWpBC,SAAS,CAAEb,CAAc,CAACa,SAXN,CAYpBC,YAAY,CAAEd,CAAc,CAACc,YAZT,CAapBC,UAAU,CAAEf,CAAc,CAACe,UAbP,CAcpBC,WAAW,CAAEhB,CAAc,CAACgB,WAdR,CAepBC,UAAU,CAAEjB,CAAc,CAACiB,UAfP,CAgBpBC,QAAQ,CAAElB,CAAc,CAACkB,QAhBL,CAiBpBC,UAAU,CAAEnB,CAAc,CAACmB,UAjBP,CAkBpBC,OAAO,CAAEpB,CAAc,CAACoB,OAlBJ,CAmBpBC,UAAU,CAAErB,CAAc,CAACqB,UAnBP,CAoBpBC,aAAa,CAAEtB,CAAc,CAACsB,aApBV,CAqBpBC,aAAa,CAAEvB,CAAc,CAACuB,aArBV,CAsBpBC,OAAO,CAAExB,CAAc,CAACwB,OAtBJ,CAuBpBC,UAAU,CAAEzB,CAAc,CAACyB,UAvBP,CAwBpBC,SAAS,CAAE1B,CAAc,CAAC0B,SAxBN,CAHtB,CA8BKxD,SAAS,CAACgC,CAAD,CAAgBN,CAAG,CAACE,GAAJ,CAAQL,CAAR,CAAhB,CA9Bd,EA+BEA,CAAc,CAACG,CAAD,CAAMM,CAAN,CA/BhB,IAkCMyB,EAAa,CAAG1B,gBAAgB,CAACF,CAAD,CAlCtC,CAmCMoB,CAAU,CAAGS,UAAU,CAACD,CAAa,CAACR,UAAf,CAnC7B,CAqCMX,CAAU,CAAGoB,UAAU,CAACD,CAAa,CAACnB,UAAf,CArC7B,CAsCMD,CAAa,CAAGqB,UAAU,CAACD,CAAa,CAACpB,aAAf,CAtChC,CAuCMM,CAAS,CAAGe,UAAU,CAACD,CAAa,CAACE,cAAf,CAvC5B,CAwCMf,CAAY,CAAGc,UAAU,CAACD,CAAa,CAACG,iBAAf,CAxC/B,CA0CMC,CAAG,CAAGvB,CAAU,CAAGD,CAAb,CAA6BM,CAA7B,CAAyCC,CA1CrD,CA4CMkB,CAAS,CAAGjC,CAAW,CAACkC,YA5C9B,CA+CM7B,CAAS,CAAGvB,CAAO,CAAGA,CAAO,CAAGsC,CAAV,CAAuBY,CAA1B,IA/CzB,CAiDMG,CAAW,CAAGC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASL,CAAT,CAHXpD,CAAO,CAAGuC,CAAV,CAAuBY,CAGZ,CAAT,CAAyC3B,CAAzC,CAjDpB,CAmDA,IAAIkC,KAAK,CAACJ,CAAD,CAAT,EAIA,GAAMK,EAAsC,CAAG,CAC7CC,MAAM,WAAKN,CAAL,MADuC,CAE7CO,SAAS,CAAE5D,CAAO,EAAImD,CAAS,CAAG5B,CAAvB,CAAmC,QAAnC,CAA8C,QAFZ,CAA/C,CAKKlC,SAAS,CAACqE,CAAD,CAAoB3C,CAAG,CAACE,GAAJ,CAAQP,CAAR,CAApB,CATd,EAUEA,CAAkB,CAACK,CAAD,CAAM2C,CAAN,CAVpB,CAnDA,CA+DD,CAnEgC,CArBoC,CA0F/DG,CAA2D,CAC/DhF,SAAS,CAAC,SAACkC,CAAD,CAAM+C,CAAN,CAAY,mBACpB,GAAA/C,CAAG,CAACE,GAAJ,CAAQJ,CAAR,GAAmBZ,QADC,qBACpB,SAA8B6D,CAA9B,CADoB,CAEpB,GAAM5C,EAAW,CAAGH,CAAG,CAACE,GAAJ,CAAQV,CAAR,CAApB,CACIW,CAHgB,GAIlBA,CAAW,CAAC6C,KAAZ,CAAoBD,CAAC,CAACE,MAAF,CAASD,KAJX,EAMpBjD,CAAe,EAChB,CAPQ,CA3F0D,CA4HrE,MAxBA/B,UAAS,CAAC+B,CAAD,CAAkB,CACzBf,CADyB,CAEzBC,CAFyB,CAGzBO,CAHyB,CAIzBF,CAJyB,CAAlB,CAwBT,CAjBAb,qBAAqB,CACnBF,aAAa,CAAC,SAACyB,CAAD,QAAS,CACrBA,CAAG,CAACkD,GAAJ,CAAQ5D,CAAR,CADqB,CAErBU,CAAG,CAACE,GAAJ,CAAQV,CAAR,CAFqB,CAAT,CAAD,CADM,CAKnBO,CALmB,CAiBrB,CATAxB,aAAa,CAAC,SAACyB,CAAD,CAAS,IACfG,EAAW,CAAGH,CAAG,CAACkD,GAAJ,CAAQ1D,CAAR,CADC,CAEfS,CAAe,CAAGD,CAAG,CAACkD,GAAJ,CAAQ5D,CAAR,CAFH,CAGjBa,CAAW,EAAIF,CAHE,GAInBE,CAAW,CAAC6C,KAAZ,CAAoB/C,CAAe,CAAC+C,KAJjB,CAKnBjD,CAAe,EALI,CAOtB,CAPY,CASb,CACE,wCACE,gDACMV,CADN,EAEE,GAAG,CAAEjB,UAAU,CAAC,CAACmB,CAAD,CAAcR,CAAd,CAAD,CAFjB,CAGE,QAAQ,CAAE+D,CAHZ,CAIE,KAAK,gCAAO3D,CAAP,EAAiBO,CAAjB,CAJP,CAKE,SAAS,CAAEd,kBAAkB,CAAC,IAAD,CAAO,CAACQ,CAAD,CAAP,CAL/B,GADF,CAQGjB,YAAY,CACX,gCACE,GAAG,CAAEsB,CADP,CAEE,KAAK,CAAEG,CAFT,CAGE,SAAS,CAAEhB,kBAAkB,CAAC,MAAD,CAH/B,CAIE,EAAE,CAAEA,kBAAkB,CAAC,MAAD,CAAS,CAC7BuE,EAAE,CAAE9D,CAAS,CAAC8D,EADe,CAE7BC,IAAI,CAAE/D,CAAS,CAAC+D,IAFa,CAAT,CAJxB,EADW,CAUXC,QAAQ,CAACC,IAVE,CARf,CAsBH,CAnJS,CAD2B,CAAhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TextAreaAutoSize';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/TextAreaAutoSize/index.ts"],"sourcesContent":["export * from './TextAreaAutoSize';\n"],"mappings":"AAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRef","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSize","focused","onClick","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onClear","onWheel"];import"./TextField.css";import{IconClear}from"@consta/icons/IconClear";import{IconEye}from"@consta/icons/IconEye";import{IconEyeClose}from"@consta/icons/IconEyeClose";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useCallback,useEffect}from"react";import
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRef","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSize","focused","onClick","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onClear","onWheel"];import"./TextField.css";import{IconClear}from"@consta/icons/IconClear";import{IconEye}from"@consta/icons/IconEye";import{IconEyeClose}from"@consta/icons/IconEyeClose";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useCallback,useEffect}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{FieldCaption}from"../FieldCaption/FieldCaption";import{FieldLabel}from"../FieldLabel/FieldLabel";import{TextAreaAutoSize}from"../TextAreaAutoSize";import{useFlag}from"../../hooks/useFlag/useFlag";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{useKeys}from"../../hooks/useKeys";import{useMutableRef}from"../../hooks/useMutableRef/useMutableRef";import{useSortSteps}from"../../hooks/useSortSteps/useSortSteps";import{cn}from"../../utils/bem";import{getByMap}from"../../utils/getByMap";import{isString}from"../../utils/type-guards";import{getTypeForRender,getValueByStep,inputValue,sizeMap,stepIsActive}from"./helpers";import{textFieldPropFormDefault,textFieldPropSizeDefault,textFieldPropViewDefault}from"./types";export var COMPONENT_NAME="TextField";export var cnTextField=cn("TextField");export var TextFieldRender=function(a,b){var c,d,e=React.useRef(null),f=React.useRef(null),g=usePropsHandler(COMPONENT_NAME,a,e),h=g.className,i=g.type,j=void 0===i?"text":i,k=g.value,l=g.defaultValue,m=g.onChange,n=g.id,o=g.name,p=g.rows,q=g.cols,r=g.minRows,s=g.maxRows,t=g.inputRef,u=g.maxLength,v=g.disabled,w=g.size,x=void 0===w?textFieldPropSizeDefault:w,y=g.view,z=void 0===y?textFieldPropViewDefault:y,A=g.form,B=void 0===A?textFieldPropFormDefault:A,C=g.state,D=g.status,E=g.onBlur,F=g.onFocus,G=g.autoFocus,H=void 0!==G&&G,I=g.placeholder,J=g.leftSide,K=g.rightSide,L=g.autoComplete,M=g.withClearButton,N=g.incrementButtons,O=g.max,P=g.min,Q=g.readOnly,R=g.required,S=g.step,T=void 0===S?1:S,U=g.tabIndex,V=g.ariaLabel,W=g.label,X=g.labelIcon,Y=g.inputContainerRef,Z=g.labelPosition,$=void 0===Z?"top":Z,_=g.caption,aa=g.iconSize,ba=g.focused,ca=g.onClick,da=g.onKeyDown,ea=g.onKeyDownCapture,fa=g.onKeyPress,ga=g.onKeyPressCapture,ha=g.onKeyUp,ia=g.onKeyUpCapture,ja=g.onClear,ka=g.onWheel,la=_objectWithoutProperties(g,_excluded),ma="number"===j&&(void 0===N||N),na=useFlag(H),oa=_slicedToArray(na,2),pa=oa[0],qa=oa[1],ra=useFlag(),sa=_slicedToArray(ra,2),ta=sa[0],ua=sa[1],va=useFlag(),wa=_slicedToArray(va,2),xa=wa[0],ya=wa[1],za=useMutableRef(ca),Aa=useMutableRef(m),Ba=useCallback(function(a){var b;a.stopPropagation(),ua.toggle(),null===(b=f.current)||void 0===b?void 0:b.focus()},[]),Ca=J,Da=K,Ea=isString(J),Fa=isString(K),Ga=getByMap(sizeMap,x,aa),Ha=useSortSteps({step:T,min:+P,max:+O}),Ia=useCallback(function(a){var b;v||(null===(b=Aa.current)||void 0===b?void 0:b.call(Aa,a.target.value||null,{e:a,id:n,name:o})),a.target.value?ya.on():ya.off()},[n,o,v]),Ja=function(a){qa.on(),null===F||void 0===F?void 0:F(a)},Ka={className:cnTextField("Input"),value:inputValue(k),defaultValue:inputValue(l),onChange:Ia,maxLength:u,disabled:v,onBlur:function handleBlur(a){qa.off(),null===E||void 0===E?void 0:E(a)},onFocus:Ja,autoFocus:H,placeholder:I,autoComplete:L,readOnly:Q,tabIndex:U,name:o,onKeyDownCapture:ea,onKeyPress:fa,onKeyPressCapture:ga,onKeyUp:ha,onKeyUpCapture:ia,id:n?n.toString():void 0,"aria-label":V},La=ta?IconEyeClose:IconEye,Ma=useKeys({isActive:!0,keys:{ArrowUp:function ArrowUp(a){if(a.preventDefault(),stepIsActive(T,j,v)){var b,c,d=getValueByStep(Ha,null===(b=f.current)||void 0===b?void 0:b.value,!0,P,O);null===(c=Aa.current)||void 0===c?void 0:c.call(Aa,d,{e:a,id:n,name:o}),f.current&&(f.current.value=d,ya.on())}},ArrowDown:function ArrowDown(a){if(a.preventDefault(),stepIsActive(T,j,v)){var b,c,d=getValueByStep(Ha,null===(b=f.current)||void 0===b?void 0:b.value,!1,P,O);null===(c=Aa.current)||void 0===c?void 0:c.call(Aa,d,{e:a,id:n,name:o}),f.current&&(f.current.value=d,ya.on())}}},onEvent:da}),Na={rows:p,cols:q,minRows:r||p,maxRows:s||p,ref:useForkRef([f,t])},Oa={type:getTypeForRender(j,ta),max:O,min:P,step:Array.isArray(Ha)?0:Ha,onKeyDown:Ma,onWheel:function onWheel(a){if(ka)ka(a);else if("number"===j){var b;null===(b=f.current)||void 0===b?void 0:b.blur()}},ref:useForkRef([f,t])},Pa=useCallback(function(a){var b;null===(b=Aa.current)||void 0===b?void 0:b.call(Aa,null,{e:a,id:n,name:o}),f.current&&(f.current.value="",ya.off())},[]),Qa=function(a){var b,c,d=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],e=getValueByStep(Ha,null===(b=f.current)||void 0===b?void 0:b.value,d,P,O);null===(c=Aa.current)||void 0===c?void 0:c.call(Aa,e,{e:a,id:n,name:o}),f.current&&(f.current.value=e,ya.on())},Ra={onClick:useCallback(function(a){var b,c;null===(b=f.current)||void 0===b?void 0:b.focus(),null===(c=za.current)||void 0===c?void 0:c.call(za,a)},[])};return useEffect(function(){var a;ya[null!==(a=f.current)&&void 0!==a&&a.value?"on":"off"]()},[null===(c=f.current)||void 0===c?void 0:c.value]),React.createElement("div",Object.assign({className:cnTextField({labelPosition:$,size:x,view:z},[h]),ref:useForkRef([b,e])},Ra,la),W&&React.createElement(FieldLabel,{as:"label",htmlFor:null===n||void 0===n?void 0:n.toString(),icon:X,required:R,className:cnTextField("Label",{labelPosition:$}),size:x},W),React.createElement("div",{className:cnTextField("Body")},React.createElement("div",{ref:Y,className:cnTextField("InputContainer",{view:z,form:B,status:D||C,disabled:v,type:j,focus:pa||ba,withValue:xa,incrementButtons:"number"===j&&ma})},Ca&&React.createElement("div",{className:cnTextField("Side",{position:"left",type:Ea?"string":"icon"}),title:"string"==typeof J?J:void 0},Ea?J:React.createElement(Ca,{className:cnTextField("Icon"),size:Ga})),"textarea"===j?React.createElement(TextAreaAutoSize,Object.assign({},Ka,Na)):React.createElement("input",Object.assign({},Ka,Oa)),ma&&stepIsActive(T,j,v)&&React.createElement("div",{className:cnTextField("Counter")},React.createElement("button",{className:cnTextField("CounterButton",{fn:"increment"}),onFocus:Ja,onClick:function(a){return Qa(a,!0)},type:"button"},React.createElement(IconSelect,{size:"xs"})),React.createElement("button",{className:cnTextField("CounterButton"),onFocus:Ja,onClick:function(a){return Qa(a,!1)},type:"button"},React.createElement(IconSelect,{size:"xs"}))),!ma&&xa&&M&&!v&&React.createElement("button",{type:"button",disabled:v,tabIndex:-1,onClick:ja||Pa,className:cnTextField("ClearButton")},React.createElement(IconClear,{size:sizeMap[x],className:cnTextField("ClearButtonIcon")})),"password"===j&&(null===(d=f.current)||void 0===d?void 0:d.value)&&React.createElement("button",{className:cnTextField("ClearButton"),type:"button",onClick:Ba},React.createElement(La,{className:cnTextField("Icon"),size:Ga})),Da&&!ma&&"password"!==j&&React.createElement("div",{className:cnTextField("Side",{position:"right",type:Fa?"string":"icon"}),title:"string"==typeof K?K:void 0},Fa?K:React.createElement(Da,{className:cnTextField("Icon"),size:Ga}))),_&&React.createElement(FieldCaption,{className:cnTextField("Caption"),status:D||C},_)))};export var TextField=forwardRef(TextFieldRender);export*from"./types";
|
|
2
2
|
//# sourceMappingURL=TextField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","names":["IconClear","IconEye","IconEyeClose","IconSelect","React","forwardRef","useCallback","useEffect","TextAreaAutoSize","usePropsHandler","FieldCaption","FieldLabel","useFlag","useForkRef","useKeys","useMutableRef","useSortSteps","cn","getByMap","isString","getTypeForRender","getValueByStep","inputValue","sizeMap","stepIsActive","textFieldPropFormDefault","textFieldPropSizeDefault","textFieldPropViewDefault","COMPONENT_NAME","cnTextField","TextFieldRender","props","ref","textFieldRef","useRef","inputRef","className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRefProp","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSizeProp","iconSize","focused","onClick","onKeyDownProp","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onClear","onWheelProp","onWheel","otherProps","focus","setFocus","passwordVisible","setPasswordVisible","withValue","setWithValue","onClickRef","onChangeRef","handleEyeClick","e","stopPropagation","toggle","current","LeftIcon","RightIcon","leftSideIsString","rightSideIsString","sortedSteps","handleChange","target","on","off","handleFocus","commonProps","handleBlur","toString","Eye","isActive","keys","ArrowUp","preventDefault","newValue","ArrowDown","onEvent","textareaProps","inputProps","Array","isArray","blur","handleClear","changeNumberValue","isIncrement","rootProps","position","fn","TextField"],"sources":["../../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import './TextField.css';\n\nimport { IconClear } from '@consta/icons/IconClear';\nimport { IconEye } from '@consta/icons/IconEye';\nimport { IconEyeClose } from '@consta/icons/IconEyeClose';\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useCallback, useEffect } from 'react';\nimport TextAreaAutoSize from 'react-textarea-autosize';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { FieldCaption } from '##/components/FieldCaption/FieldCaption';\nimport { FieldLabel } from '##/components/FieldLabel/FieldLabel';\nimport { useFlag } from '##/hooks/useFlag/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef/useForkRef';\nimport { useKeys } from '##/hooks/useKeys';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { useSortSteps } from '##/hooks/useSortSteps/useSortSteps';\nimport { cn } from '##/utils/bem';\nimport { getByMap } from '##/utils/getByMap';\nimport { isString } from '##/utils/type-guards';\n\nimport {\n getTypeForRender,\n getValueByStep,\n inputValue,\n sizeMap,\n stepIsActive,\n} from './helpers';\nimport {\n TextFieldComponent,\n textFieldPropFormDefault,\n TextFieldProps,\n textFieldPropSizeDefault,\n textFieldPropViewDefault,\n} from './types';\n\nexport const COMPONENT_NAME = 'TextField' as const;\nexport const cnTextField = cn(COMPONENT_NAME);\n\nexport const TextFieldRender = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const textFieldRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n\n const {\n className,\n type = 'text',\n value,\n defaultValue,\n onChange,\n id,\n name,\n rows,\n cols,\n minRows,\n maxRows,\n inputRef: inputRefProp,\n maxLength,\n disabled,\n size = textFieldPropSizeDefault,\n view = textFieldPropViewDefault,\n form = textFieldPropFormDefault,\n state,\n status,\n onBlur,\n onFocus,\n autoFocus = false,\n placeholder,\n leftSide,\n rightSide,\n autoComplete,\n withClearButton,\n incrementButtons: incrementButtonsProp = true,\n max,\n min,\n readOnly,\n required,\n step = 1,\n tabIndex,\n ariaLabel,\n label,\n labelIcon,\n inputContainerRef,\n labelPosition = 'top',\n caption,\n iconSize: iconSizeProp,\n focused,\n onClick,\n // onKey props\n onKeyDown: onKeyDownProp,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n onClear,\n onWheel: onWheelProp,\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, props, textFieldRef);\n\n const incrementButtons = type === 'number' ? incrementButtonsProp : false;\n\n const [focus, setFocus] = useFlag(autoFocus);\n const [passwordVisible, setPasswordVisible] = useFlag();\n const [withValue, setWithValue] = useFlag();\n\n const onClickRef = useMutableRef(onClick);\n const onChangeRef = useMutableRef(onChange);\n\n const handleEyeClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n e.stopPropagation();\n setPasswordVisible.toggle();\n inputRef.current?.focus();\n },\n [],\n );\n\n const textarea = type === 'textarea';\n const LeftIcon = leftSide;\n const RightIcon = rightSide;\n const leftSideIsString = isString(leftSide);\n const rightSideIsString = isString(rightSide);\n const iconSize = getByMap(sizeMap, size, iconSizeProp);\n\n const sortedSteps = useSortSteps({\n step,\n min: Number(min),\n max: Number(max),\n });\n\n const handleChange: React.ChangeEventHandler<\n HTMLInputElement | HTMLTextAreaElement\n > = useCallback(\n (e) => {\n !disabled &&\n onChangeRef.current?.(e.target.value || null, {\n e,\n id,\n name,\n });\n\n if (e.target.value) {\n setWithValue.on();\n } else {\n setWithValue.off();\n }\n },\n [id, name, disabled],\n );\n\n const handleBlur: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.off();\n onBlur?.(e);\n };\n\n const handleFocus: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.on();\n onFocus?.(e);\n };\n\n const commonProps = {\n 'className': cnTextField('Input'),\n 'value': inputValue(value),\n 'defaultValue': inputValue(defaultValue),\n 'onChange': handleChange,\n maxLength,\n disabled,\n 'onBlur': handleBlur,\n 'onFocus': handleFocus,\n autoFocus,\n placeholder,\n autoComplete,\n readOnly,\n tabIndex,\n name,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n 'id': id ? id.toString() : undefined,\n 'aria-label': ariaLabel,\n };\n\n const Eye = passwordVisible ? IconEyeClose : IconEye;\n\n const onKeyDown = useKeys({\n isActive: true,\n keys: {\n ArrowUp: (e) => {\n e.preventDefault();\n if (stepIsActive(step, type, disabled)) {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n true,\n min,\n max,\n );\n\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n }\n },\n ArrowDown: (e) => {\n e.preventDefault();\n if (stepIsActive(step, type, disabled)) {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n false,\n min,\n max,\n );\n\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n }\n },\n },\n onEvent: onKeyDownProp,\n });\n\n const onWheel = (e: React.WheelEvent<HTMLInputElement>) => {\n if (onWheelProp) {\n onWheelProp(e);\n } else if (type === 'number') {\n inputRef.current?.blur();\n }\n };\n\n const textareaProps = {\n rows,\n cols,\n minRows: minRows || rows,\n maxRows: maxRows || rows,\n ref: useForkRef([inputRef, inputRefProp]) as (\n node: HTMLTextAreaElement,\n ) => void,\n };\n\n const inputProps = {\n type: getTypeForRender(type, passwordVisible),\n max,\n min,\n step: !Array.isArray(sortedSteps) ? sortedSteps : 0,\n onKeyDown,\n onWheel,\n ref: useForkRef([\n inputRef,\n inputRefProp,\n ]) as React.RefCallback<HTMLInputElement>,\n };\n\n const handleClear = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n onChangeRef.current?.(null, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = '';\n setWithValue.off();\n }\n }, []);\n\n const changeNumberValue = (\n e: React.MouseEvent<HTMLButtonElement>,\n isIncrement = true,\n ) => {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n isIncrement,\n min,\n max,\n );\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n };\n\n const rootProps = {\n onClick: useCallback((e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n inputRef.current?.focus();\n onClickRef.current?.(e);\n }, []),\n };\n\n useEffect(() => {\n setWithValue[inputRef.current?.value ? 'on' : 'off']();\n }, [inputRef.current?.value]);\n\n return (\n <div\n className={cnTextField({ labelPosition, size, view }, [className])}\n ref={useForkRef([ref, textFieldRef])}\n {...rootProps}\n {...otherProps}\n >\n {label && (\n <FieldLabel\n as=\"label\"\n htmlFor={id?.toString()}\n icon={labelIcon}\n required={required}\n className={cnTextField('Label', { labelPosition })}\n size={size}\n >\n {label}\n </FieldLabel>\n )}\n <div className={cnTextField('Body')}>\n <div\n ref={inputContainerRef}\n className={cnTextField('InputContainer', {\n view,\n form,\n status: status || state,\n disabled,\n type,\n focus: focus || focused,\n withValue,\n incrementButtons: type === 'number' && incrementButtons,\n })}\n >\n {LeftIcon && (\n <div\n className={cnTextField('Side', {\n position: 'left',\n type: leftSideIsString ? 'string' : 'icon',\n })}\n title={typeof leftSide === 'string' ? leftSide : undefined}\n >\n {leftSideIsString ? (\n leftSide\n ) : (\n <LeftIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n {textarea ? (\n <TextAreaAutoSize {...commonProps} {...textareaProps} />\n ) : (\n <input {...commonProps} {...inputProps} />\n )}\n\n {incrementButtons && stepIsActive(step, type, disabled) && (\n <div className={cnTextField('Counter')}>\n <button\n className={cnTextField('CounterButton', { fn: 'increment' })}\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, true)}\n type=\"button\"\n >\n <IconSelect size=\"xs\" />\n </button>\n <button\n className={cnTextField('CounterButton')}\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, false)}\n type=\"button\"\n >\n <IconSelect size=\"xs\" />\n </button>\n </div>\n )}\n\n {!incrementButtons && withValue && withClearButton && !disabled && (\n <button\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n onClick={onClear || handleClear}\n className={cnTextField('ClearButton')}\n >\n <IconClear\n size={sizeMap[size]}\n className={cnTextField('ClearButtonIcon')}\n />\n </button>\n )}\n\n {type === 'password' && inputRef.current?.value && (\n <button\n className={cnTextField('ClearButton')}\n type=\"button\"\n onClick={handleEyeClick}\n >\n <Eye className={cnTextField('Icon')} size={iconSize} />\n </button>\n )}\n\n {RightIcon && !incrementButtons && type !== 'password' && (\n <div\n className={cnTextField('Side', {\n position: 'right',\n type: rightSideIsString ? 'string' : 'icon',\n })}\n title={typeof rightSide === 'string' ? rightSide : undefined}\n >\n {rightSideIsString ? (\n rightSide\n ) : (\n <RightIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n </div>\n {caption && (\n <FieldCaption\n className={cnTextField('Caption')}\n status={status || state}\n >\n {caption}\n </FieldCaption>\n )}\n </div>\n </div>\n );\n};\n\nexport const TextField = forwardRef(TextFieldRender) as TextFieldComponent;\nexport * from './types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextField.js","names":["IconClear","IconEye","IconEyeClose","IconSelect","React","forwardRef","useCallback","useEffect","usePropsHandler","FieldCaption","FieldLabel","TextAreaAutoSize","useFlag","useForkRef","useKeys","useMutableRef","useSortSteps","cn","getByMap","isString","getTypeForRender","getValueByStep","inputValue","sizeMap","stepIsActive","textFieldPropFormDefault","textFieldPropSizeDefault","textFieldPropViewDefault","COMPONENT_NAME","cnTextField","TextFieldRender","props","ref","textFieldRef","useRef","inputRef","className","type","value","defaultValue","onChange","id","name","rows","cols","minRows","maxRows","inputRefProp","maxLength","disabled","size","view","form","state","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","withClearButton","incrementButtons","max","min","readOnly","required","step","tabIndex","ariaLabel","label","labelIcon","inputContainerRef","labelPosition","caption","iconSizeProp","iconSize","focused","onClick","onKeyDownProp","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onClear","onWheelProp","onWheel","otherProps","focus","setFocus","passwordVisible","setPasswordVisible","withValue","setWithValue","onClickRef","onChangeRef","handleEyeClick","e","stopPropagation","toggle","current","LeftIcon","RightIcon","leftSideIsString","rightSideIsString","sortedSteps","handleChange","target","on","off","handleFocus","commonProps","handleBlur","toString","Eye","isActive","keys","ArrowUp","preventDefault","newValue","ArrowDown","onEvent","textareaProps","inputProps","Array","isArray","blur","handleClear","changeNumberValue","isIncrement","rootProps","position","fn","TextField"],"sources":["../../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import './TextField.css';\n\nimport { IconClear } from '@consta/icons/IconClear';\nimport { IconEye } from '@consta/icons/IconEye';\nimport { IconEyeClose } from '@consta/icons/IconEyeClose';\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useCallback, useEffect } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport { FieldCaption } from '##/components/FieldCaption/FieldCaption';\nimport { FieldLabel } from '##/components/FieldLabel/FieldLabel';\nimport { TextAreaAutoSize } from '##/components/TextAreaAutoSize';\nimport { useFlag } from '##/hooks/useFlag/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef/useForkRef';\nimport { useKeys } from '##/hooks/useKeys';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\nimport { useSortSteps } from '##/hooks/useSortSteps/useSortSteps';\nimport { cn } from '##/utils/bem';\nimport { getByMap } from '##/utils/getByMap';\nimport { isString } from '##/utils/type-guards';\n\nimport {\n getTypeForRender,\n getValueByStep,\n inputValue,\n sizeMap,\n stepIsActive,\n} from './helpers';\nimport {\n TextFieldComponent,\n textFieldPropFormDefault,\n TextFieldProps,\n textFieldPropSizeDefault,\n textFieldPropViewDefault,\n} from './types';\n\nexport const COMPONENT_NAME = 'TextField' as const;\nexport const cnTextField = cn(COMPONENT_NAME);\n\nexport const TextFieldRender = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const textFieldRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n\n const {\n className,\n type = 'text',\n value,\n defaultValue,\n onChange,\n id,\n name,\n rows,\n cols,\n minRows,\n maxRows,\n inputRef: inputRefProp,\n maxLength,\n disabled,\n size = textFieldPropSizeDefault,\n view = textFieldPropViewDefault,\n form = textFieldPropFormDefault,\n state,\n status,\n onBlur,\n onFocus,\n autoFocus = false,\n placeholder,\n leftSide,\n rightSide,\n autoComplete,\n withClearButton,\n incrementButtons: incrementButtonsProp = true,\n max,\n min,\n readOnly,\n required,\n step = 1,\n tabIndex,\n ariaLabel,\n label,\n labelIcon,\n inputContainerRef,\n labelPosition = 'top',\n caption,\n iconSize: iconSizeProp,\n focused,\n onClick,\n // onKey props\n onKeyDown: onKeyDownProp,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n onClear,\n onWheel: onWheelProp,\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, props, textFieldRef);\n\n const incrementButtons = type === 'number' ? incrementButtonsProp : false;\n\n const [focus, setFocus] = useFlag(autoFocus);\n const [passwordVisible, setPasswordVisible] = useFlag();\n const [withValue, setWithValue] = useFlag();\n\n const onClickRef = useMutableRef(onClick);\n const onChangeRef = useMutableRef(onChange);\n\n const handleEyeClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n e.stopPropagation();\n setPasswordVisible.toggle();\n inputRef.current?.focus();\n },\n [],\n );\n\n const textarea = type === 'textarea';\n const LeftIcon = leftSide;\n const RightIcon = rightSide;\n const leftSideIsString = isString(leftSide);\n const rightSideIsString = isString(rightSide);\n const iconSize = getByMap(sizeMap, size, iconSizeProp);\n\n const sortedSteps = useSortSteps({\n step,\n min: Number(min),\n max: Number(max),\n });\n\n const handleChange: React.ChangeEventHandler<\n HTMLInputElement | HTMLTextAreaElement\n > = useCallback(\n (e) => {\n !disabled &&\n onChangeRef.current?.(e.target.value || null, {\n e,\n id,\n name,\n });\n\n if (e.target.value) {\n setWithValue.on();\n } else {\n setWithValue.off();\n }\n },\n [id, name, disabled],\n );\n\n const handleBlur: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.off();\n onBlur?.(e);\n };\n\n const handleFocus: React.FocusEventHandler<HTMLElement> = (e) => {\n setFocus.on();\n onFocus?.(e);\n };\n\n const commonProps = {\n 'className': cnTextField('Input'),\n 'value': inputValue(value),\n 'defaultValue': inputValue(defaultValue),\n 'onChange': handleChange,\n maxLength,\n disabled,\n 'onBlur': handleBlur,\n 'onFocus': handleFocus,\n autoFocus,\n placeholder,\n autoComplete,\n readOnly,\n tabIndex,\n name,\n onKeyDownCapture,\n onKeyPress,\n onKeyPressCapture,\n onKeyUp,\n onKeyUpCapture,\n 'id': id ? id.toString() : undefined,\n 'aria-label': ariaLabel,\n };\n\n const Eye = passwordVisible ? IconEyeClose : IconEye;\n\n const onKeyDown = useKeys({\n isActive: true,\n keys: {\n ArrowUp: (e) => {\n e.preventDefault();\n if (stepIsActive(step, type, disabled)) {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n true,\n min,\n max,\n );\n\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n }\n },\n ArrowDown: (e) => {\n e.preventDefault();\n if (stepIsActive(step, type, disabled)) {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n false,\n min,\n max,\n );\n\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n }\n },\n },\n onEvent: onKeyDownProp,\n });\n\n const onWheel = (e: React.WheelEvent<HTMLInputElement>) => {\n if (onWheelProp) {\n onWheelProp(e);\n } else if (type === 'number') {\n inputRef.current?.blur();\n }\n };\n\n const textareaProps = {\n rows,\n cols,\n minRows: minRows || rows,\n maxRows: maxRows || rows,\n ref: useForkRef([inputRef, inputRefProp]) as (\n node: HTMLTextAreaElement,\n ) => void,\n };\n\n const inputProps = {\n type: getTypeForRender(type, passwordVisible),\n max,\n min,\n step: !Array.isArray(sortedSteps) ? sortedSteps : 0,\n onKeyDown,\n onWheel,\n ref: useForkRef([\n inputRef,\n inputRefProp,\n ]) as React.RefCallback<HTMLInputElement>,\n };\n\n const handleClear = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n onChangeRef.current?.(null, {\n e,\n id,\n name,\n });\n\n if (inputRef.current) {\n inputRef.current.value = '';\n setWithValue.off();\n }\n }, []);\n\n const changeNumberValue = (\n e: React.MouseEvent<HTMLButtonElement>,\n isIncrement = true,\n ) => {\n const newValue = getValueByStep(\n sortedSteps,\n inputRef.current?.value,\n isIncrement,\n min,\n max,\n );\n onChangeRef.current?.(newValue, {\n e,\n id,\n name,\n });\n if (inputRef.current) {\n inputRef.current.value = newValue;\n setWithValue.on();\n }\n };\n\n const rootProps = {\n onClick: useCallback((e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n inputRef.current?.focus();\n onClickRef.current?.(e);\n }, []),\n };\n\n useEffect(() => {\n setWithValue[inputRef.current?.value ? 'on' : 'off']();\n }, [inputRef.current?.value]);\n\n return (\n <div\n className={cnTextField({ labelPosition, size, view }, [className])}\n ref={useForkRef([ref, textFieldRef])}\n {...rootProps}\n {...otherProps}\n >\n {label && (\n <FieldLabel\n as=\"label\"\n htmlFor={id?.toString()}\n icon={labelIcon}\n required={required}\n className={cnTextField('Label', { labelPosition })}\n size={size}\n >\n {label}\n </FieldLabel>\n )}\n <div className={cnTextField('Body')}>\n <div\n ref={inputContainerRef}\n className={cnTextField('InputContainer', {\n view,\n form,\n status: status || state,\n disabled,\n type,\n focus: focus || focused,\n withValue,\n incrementButtons: type === 'number' && incrementButtons,\n })}\n >\n {LeftIcon && (\n <div\n className={cnTextField('Side', {\n position: 'left',\n type: leftSideIsString ? 'string' : 'icon',\n })}\n title={typeof leftSide === 'string' ? leftSide : undefined}\n >\n {leftSideIsString ? (\n leftSide\n ) : (\n <LeftIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n {textarea ? (\n <TextAreaAutoSize {...commonProps} {...textareaProps} />\n ) : (\n <input {...commonProps} {...inputProps} />\n )}\n\n {incrementButtons && stepIsActive(step, type, disabled) && (\n <div className={cnTextField('Counter')}>\n <button\n className={cnTextField('CounterButton', { fn: 'increment' })}\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, true)}\n type=\"button\"\n >\n <IconSelect size=\"xs\" />\n </button>\n <button\n className={cnTextField('CounterButton')}\n onFocus={handleFocus}\n onClick={(e) => changeNumberValue(e, false)}\n type=\"button\"\n >\n <IconSelect size=\"xs\" />\n </button>\n </div>\n )}\n\n {!incrementButtons && withValue && withClearButton && !disabled && (\n <button\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n onClick={onClear || handleClear}\n className={cnTextField('ClearButton')}\n >\n <IconClear\n size={sizeMap[size]}\n className={cnTextField('ClearButtonIcon')}\n />\n </button>\n )}\n\n {type === 'password' && inputRef.current?.value && (\n <button\n className={cnTextField('ClearButton')}\n type=\"button\"\n onClick={handleEyeClick}\n >\n <Eye className={cnTextField('Icon')} size={iconSize} />\n </button>\n )}\n\n {RightIcon && !incrementButtons && type !== 'password' && (\n <div\n className={cnTextField('Side', {\n position: 'right',\n type: rightSideIsString ? 'string' : 'icon',\n })}\n title={typeof rightSide === 'string' ? rightSide : undefined}\n >\n {rightSideIsString ? (\n rightSide\n ) : (\n <RightIcon className={cnTextField('Icon')} size={iconSize} />\n )}\n </div>\n )}\n </div>\n {caption && (\n <FieldCaption\n className={cnTextField('Caption')}\n status={status || state}\n >\n {caption}\n </FieldCaption>\n )}\n </div>\n </div>\n );\n};\n\nexport const TextField = forwardRef(TextFieldRender) as TextFieldComponent;\nexport * from './types';\n"],"mappings":"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"}
|
package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
.TextFieldTypeTextArea{--text-field-textarea-padding-right:calc((var(--field-control-layout-right-slots-length))*var(--field-control-layout-space) + var(--field-control-layout-right-slot-contents-width) + var(--field-control-layout-padding-right));--text-field-textarea-vertical-padding:calc((var(--field-control-layout-slot-height) - var(--field-control-layout-text-line-height))/2);--text-field-textarea-control-height:var(
|
|
2
2
|
--text-field-height,var(--field-control-layout-height)
|
|
3
|
-
);--text-field-textarea-height-calc:calc(var(--text-field-textarea-control-height) - var(--field-control-layout-border-width)*2);--text-field-textarea-min-height:var(--text-field-textarea-height-calc)
|
|
3
|
+
);--text-field-textarea-height-calc:calc(var(--text-field-textarea-control-height) - var(--field-control-layout-border-width)*2);--text-field-textarea-min-height:var(--text-field-textarea-height-calc);overflow:hidden}.TextFieldTypeTextArea_resize{--text-field-textarea-resize:vertical}.TextFieldTypeTextArea-TextArea{height:auto;min-height:var(--text-field-textarea-min-height);padding-bottom:var(--text-field-textarea-vertical-padding);padding-right:var(--text-field-textarea-padding-right,0);padding-top:var(--text-field-textarea-vertical-padding);resize:var(--text-field-textarea-resize,none);width:calc(100% + var(--text-field-textarea-padding-right))}.TextFieldTypeTextArea-TextArea,.TextFieldTypeTextArea-TextArea.TextAreaAutoSize{line-height:var(--field-control-layout-text-line-height)}
|
package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","value","defaultValue","onChange","id","name","inputRef","maxLength","minLength","disabled","size","view","form","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","clearButton","readOnly","type","tabIndex","ariaLabel","iconSize","onClick","resize","rows","minRows","maxRows","onKeyDown","onKeyDownCapture","onKeyUp","onKeyUpCapture","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onClear","onWheel","iconClear"];import"./TextFieldTypeTextArea.css";import React,{forwardRef}from"react";import
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","value","defaultValue","onChange","id","name","inputRef","maxLength","minLength","disabled","size","view","form","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","clearButton","readOnly","type","tabIndex","ariaLabel","iconSize","onClick","resize","rows","minRows","maxRows","onKeyDown","onKeyDownCapture","onKeyUp","onKeyUpCapture","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onClear","onWheel","iconClear"];import"./TextFieldTypeTextArea.css";import React,{forwardRef}from"react";import{cnFieldInput,FieldClearButton,FieldControlLayout,renderSide}from"../../FieldComponents";import{TextAreaAutoSize}from"../../TextAreaAutoSize";import{useForkRef}from"../../../hooks/useForkRef";import{cnMixScrollBar}from"../../../mixs/MixScrollBar";import{cn}from"../../../utils/bem";import{useTextField}from"../useTextField";export var cnTextFieldTypeTextArea=cn("TextFieldTypeTextArea");export var TextFieldTypeTextArea=forwardRef(function(a,b){var c=a.className,d=a.value,e=a.defaultValue,f=a.onChange,g=a.id,h=a.name,i=a.inputRef,j=a.maxLength,k=a.minLength,l=a.disabled,m=a.size,n=void 0===m?"m":m,o=a.view,p=void 0===o?"default":o,q=a.form,r=a.status,s=a.onBlur,t=a.onFocus,u=a.autoFocus,v=a.placeholder,w=a.leftSide,x=a.rightSide,y=a.autoComplete,z=a.clearButton,A=a.readOnly,B=a.type,C=a.tabIndex,D=a.ariaLabel,E=a.iconSize,F=a.onClick,G=a.resize,H=a.rows,I=a.minRows,J=a.maxRows,K=a.onKeyDown,L=a.onKeyDownCapture,M=a.onKeyUp,N=a.onKeyUpCapture,O=a.onCopy,P=a.onCopyCapture,Q=a.onCut,R=a.onCutCapture,S=a.onPaste,T=a.onPasteCapture,U=a.onClear,V=a.onWheel,W=a.iconClear,X=_objectWithoutProperties(a,_excluded),Y=useTextField({onClick:F,onChange:f,onBlur:s,onFocus:t,disabled:l,onClear:U}),Z=Y.handleBlur,$=Y.handleChange,_=Y.handleClear,aa=Y.handleFocus,ba=Y.focused,ca=Y.withValue,da=Y.ref,ea=Y.inputRef,fa=Y.handleClick,ga={className:cnTextFieldTypeTextArea("TextArea",[cnFieldInput(),cnMixScrollBar({size:"xs",trackSize:"native"})]),placeholder:v,autoComplete:y,onBlur:Z,onChange:$,onFocus:aa,defaultValue:e||void 0,value:null===d?"":d,ref:useForkRef([i,ea]),readOnly:A,tabIndex:C,"aria-label":D,onKeyDown:K,onKeyDownCapture:L,onKeyUp:M,onKeyUpCapture:N,maxLength:j,minLength:k,disabled:l,id:g,name:h,autoFocus:u,onCopy:O,onCopyCapture:P,onCut:Q,onCutCapture:R,onPaste:S,onPasteCapture:T,onWheel:V};return React.createElement(FieldControlLayout,Object.assign({},X,{className:cnTextFieldTypeTextArea({resize:G},[c]),form:q,status:r,size:n,leftSide:renderSide(w,n,E),rightSide:[z&&!l&&ca&&React.createElement(FieldClearButton,{size:n,onClick:_,icon:W}),renderSide(x,n,E)],focused:ba,view:p,ref:useForkRef([b,da]),disabled:l,onClick:fa}),"auto"===G?React.createElement(TextAreaAutoSize,Object.assign({},ga,{minRows:I||H,maxRows:J||H})):React.createElement("textarea",Object.assign({},ga,{rows:H})))});
|
|
2
2
|
//# sourceMappingURL=TextFieldTypeTextArea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextFieldTypeTextArea.js","names":["React","forwardRef","
|
|
1
|
+
{"version":3,"file":"TextFieldTypeTextArea.js","names":["React","forwardRef","cnFieldInput","FieldClearButton","FieldControlLayout","renderSide","TextAreaAutoSize","useForkRef","cnMixScrollBar","cn","useTextField","cnTextFieldTypeTextArea","TextFieldTypeTextArea","props","componentRef","className","value","defaultValue","onChange","id","name","inputRefProp","inputRef","maxLength","minLength","disabled","size","view","form","status","onBlur","onFocus","autoFocus","placeholder","leftSide","rightSide","autoComplete","clearButton","readOnly","type","tabIndex","ariaLabel","iconSize","onClick","resize","rows","minRows","maxRows","onKeyDown","onKeyDownCapture","onKeyUp","onKeyUpCapture","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onClear","onWheel","iconClear","otherProps","handleBlur","handleChange","handleClear","handleFocus","focused","withValue","ref","handleClick","textareaProps","trackSize"],"sources":["../../../../../../src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.tsx"],"sourcesContent":["import './TextFieldTypeTextArea.css';\n\nimport React, { forwardRef } from 'react';\n\nimport {\n cnFieldInput,\n FieldClearButton,\n FieldControlLayout,\n renderSide,\n} from '##/components/FieldComponents';\nimport { TextAreaAutoSize } from '##/components/TextAreaAutoSize';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\nimport { cn } from '##/utils/bem';\n\nimport { TextFieldTypeComponent } from '../types';\nimport { useTextField } from '../useTextField';\n\nexport const cnTextFieldTypeTextArea = cn('TextFieldTypeTextArea');\n\nexport const TextFieldTypeTextArea: TextFieldTypeComponent<'textarea'> =\n forwardRef((props, componentRef) => {\n const {\n className,\n value,\n defaultValue,\n onChange,\n id,\n name,\n inputRef: inputRefProp,\n maxLength,\n minLength,\n disabled,\n size = 'm',\n view = 'default',\n form,\n status,\n onBlur,\n onFocus,\n autoFocus,\n placeholder,\n leftSide,\n rightSide,\n autoComplete,\n clearButton,\n readOnly,\n type,\n tabIndex,\n ariaLabel,\n iconSize,\n onClick,\n resize,\n rows,\n minRows,\n maxRows,\n\n // onKey props\n onKeyDown,\n onKeyDownCapture,\n onKeyUp,\n onKeyUpCapture,\n onCopy,\n onCopyCapture,\n onCut,\n onCutCapture,\n onPaste,\n onPasteCapture,\n onClear,\n onWheel,\n iconClear,\n ...otherProps\n } = props;\n\n const {\n handleBlur,\n handleChange,\n handleClear,\n handleFocus,\n focused,\n withValue,\n ref,\n inputRef,\n handleClick,\n } = useTextField<HTMLTextAreaElement>({\n onClick,\n onChange,\n onBlur,\n onFocus,\n disabled,\n onClear,\n });\n\n const textareaProps = {\n 'className': cnTextFieldTypeTextArea('TextArea', [\n cnFieldInput(),\n cnMixScrollBar({ size: 'xs', trackSize: 'native' }),\n ]),\n placeholder,\n autoComplete,\n 'onBlur': handleBlur,\n 'onChange': handleChange,\n 'onFocus': handleFocus,\n 'defaultValue': defaultValue || undefined,\n 'value': value === null ? '' : value,\n 'ref': useForkRef([inputRefProp, inputRef]),\n readOnly,\n tabIndex,\n 'aria-label': ariaLabel,\n onKeyDown,\n onKeyDownCapture,\n onKeyUp,\n onKeyUpCapture,\n maxLength,\n minLength,\n disabled,\n id,\n name,\n autoFocus,\n onCopy,\n onCopyCapture,\n onCut,\n onCutCapture,\n onPaste,\n onPasteCapture,\n onWheel,\n };\n\n const textAreaNoAutoSizeProps = {\n rows,\n };\n\n const textAreaAutoSizeProps = {\n minRows: minRows || rows,\n maxRows: maxRows || rows,\n };\n\n return (\n <FieldControlLayout\n {...otherProps}\n className={cnTextFieldTypeTextArea({ resize }, [className])}\n form={form}\n status={status}\n size={size}\n leftSide={renderSide(leftSide, size, iconSize)}\n rightSide={[\n clearButton && !disabled && withValue && (\n <FieldClearButton\n size={size}\n onClick={handleClear}\n icon={iconClear}\n />\n ),\n renderSide(rightSide, size, iconSize),\n ]}\n focused={focused}\n view={view}\n ref={useForkRef([componentRef, ref])}\n disabled={disabled}\n onClick={handleClick}\n >\n {resize === 'auto' ? (\n <TextAreaAutoSize {...textareaProps} {...textAreaAutoSizeProps} />\n ) : (\n <textarea {...textareaProps} {...textAreaNoAutoSizeProps} />\n )}\n </FieldControlLayout>\n );\n });\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["placeholder","onBlur","onFocus","items","onChange","value","disabled","ariaLabel","id","isLoading","required","dropdownRef","form","view","size","dropdownClassName","searchValue","name","groups","getItemKey","getItemLabel","getItemSubLabel","getItemAvatarUrl","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","renderValue","onCreate","inputRef","labelForNotFound","labelForCreate","labelForEmptyItems","multiple","searchFunction","style","dropdownForm","onScrollToBottom","onSearchValueChange","onDropdownOpen","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs"];import"../SelectComponents/Select.css";import{IconClear}from"@consta/icons/IconClear";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useRef}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{cnSelect}from"../SelectComponents/cnSelect";import{defaultLabelForCreate,defaultLabelForEmptyItems,defaultLabelForNotFound,getInputWidth}from"../SelectComponents/helpers";import{SelectContainer}from"../SelectComponents/SelectContainer";import{SelectDropdown}from"../SelectComponents/SelectDropdown";import{defaultPropForm,defaultPropSize,defaultPropView}from"../SelectComponents/types";import{useSelect}from"../SelectComponents/useSelect";import{useForkRef}from"../../hooks/useForkRef";import{cnMixFocus}from"../../mixs/MixFocus";import{isNotNil}from"../../utils/type-guards";import{clearSizeMap,iconSizeMap,isMultipleParams,isNotMultipleParams,searchCompare,withDefaultGetters}from"./helpers";import{UserSelectItem}from"./UserSelectItem/UserSelectItem";import{UserSelectValue}from"./UserSelectValue/UserSelectValue";export var COMPONENT_NAME="UserSelect";var UserSelectRender=function(a,b){var c=useRef(null),d=useRef(null),e=useRef(null),f=useRef(null),g=usePropsHandler(COMPONENT_NAME,withDefaultGetters(a),f),h=g.placeholder,i=g.onBlur,j=g.onFocus,k=g.items,l=g.onChange,m=g.value,n=g.disabled,o=g.ariaLabel,p=g.id,q=g.isLoading,r=g.required,s=g.dropdownRef,t=void 0===s?c:s,u=g.form,v=void 0===u?defaultPropForm:u,w=g.view,x=void 0===w?defaultPropView:w,y=g.size,z=void 0===y?defaultPropSize:y,A=g.dropdownClassName,B=g.searchValue,C=g.name,D=g.groups,E=void 0===D?[]:D,F=g.getItemKey,G=g.getItemLabel,H=g.getItemSubLabel,I=g.getItemAvatarUrl,J=g.getItemGroupKey,K=g.getItemDisabled,L=g.getGroupKey,M=g.getGroupLabel,N=g.renderItem,O=g.renderValue,P=g.onCreate,Q=g.inputRef,R=g.labelForNotFound,S=void 0===R?defaultLabelForNotFound:R,T=g.labelForCreate,U=void 0===T?defaultLabelForCreate:T,V=g.labelForEmptyItems,W=void 0===V?defaultLabelForEmptyItems:V,X=g.multiple,Y=void 0!==X&&X,Z=g.searchFunction,$=g.style,_=g.dropdownForm,aa=void 0===_?"default":_,ba=g.onScrollToBottom,ca=g.onSearchValueChange,da=g.onDropdownOpen,ea=g.virtualScroll,fa=g.dropdownOpen,ga=g.ignoreOutsideClicksRefs,ha=_objectWithoutProperties(g,_excluded),
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["placeholder","onBlur","onFocus","items","onChange","value","disabled","ariaLabel","id","isLoading","required","dropdownRef","form","view","size","dropdownClassName","searchValue","name","groups","getItemKey","getItemLabel","getItemSubLabel","getItemAvatarUrl","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","renderValue","onCreate","inputRef","labelForNotFound","labelForCreate","labelForEmptyItems","multiple","searchFunction","style","dropdownForm","onScrollToBottom","onSearchValueChange","onDropdownOpen","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","dropdownViewportRef"];import"../SelectComponents/Select.css";import{IconClear}from"@consta/icons/IconClear";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useRef}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{cnSelect}from"../SelectComponents/cnSelect";import{defaultLabelForCreate,defaultLabelForEmptyItems,defaultLabelForNotFound,getInputWidth}from"../SelectComponents/helpers";import{SelectContainer}from"../SelectComponents/SelectContainer";import{SelectDropdown}from"../SelectComponents/SelectDropdown";import{defaultPropForm,defaultPropSize,defaultPropView}from"../SelectComponents/types";import{useSelect}from"../SelectComponents/useSelect";import{useForkRef}from"../../hooks/useForkRef";import{cnMixFocus}from"../../mixs/MixFocus";import{isNotNil}from"../../utils/type-guards";import{clearSizeMap,iconSizeMap,isMultipleParams,isNotMultipleParams,searchCompare,withDefaultGetters}from"./helpers";import{UserSelectItem}from"./UserSelectItem/UserSelectItem";import{UserSelectValue}from"./UserSelectValue/UserSelectValue";export var COMPONENT_NAME="UserSelect";var UserSelectRender=function(a,b){var c=useRef(null),d=useRef(null),e=useRef(null),f=useRef(null),g=usePropsHandler(COMPONENT_NAME,withDefaultGetters(a),f),h=g.placeholder,i=g.onBlur,j=g.onFocus,k=g.items,l=g.onChange,m=g.value,n=g.disabled,o=g.ariaLabel,p=g.id,q=g.isLoading,r=g.required,s=g.dropdownRef,t=void 0===s?c:s,u=g.form,v=void 0===u?defaultPropForm:u,w=g.view,x=void 0===w?defaultPropView:w,y=g.size,z=void 0===y?defaultPropSize:y,A=g.dropdownClassName,B=g.searchValue,C=g.name,D=g.groups,E=void 0===D?[]:D,F=g.getItemKey,G=g.getItemLabel,H=g.getItemSubLabel,I=g.getItemAvatarUrl,J=g.getItemGroupKey,K=g.getItemDisabled,L=g.getGroupKey,M=g.getGroupLabel,N=g.renderItem,O=g.renderValue,P=g.onCreate,Q=g.inputRef,R=g.labelForNotFound,S=void 0===R?defaultLabelForNotFound:R,T=g.labelForCreate,U=void 0===T?defaultLabelForCreate:T,V=g.labelForEmptyItems,W=void 0===V?defaultLabelForEmptyItems:V,X=g.multiple,Y=void 0!==X&&X,Z=g.searchFunction,$=g.style,_=g.dropdownForm,aa=void 0===_?"default":_,ba=g.onScrollToBottom,ca=g.onSearchValueChange,da=g.onDropdownOpen,ea=g.virtualScroll,fa=g.dropdownOpen,ga=g.ignoreOutsideClicksRefs,ha=g.dropdownViewportRef,ia=_objectWithoutProperties(g,_excluded),ja=useSelect({items:k,groups:E,value:m,onChange:l,dropdownRef:t,controlRef:f,disabled:n,getItemLabel:G,getItemKey:F,getGroupKey:L,getItemGroupKey:J,searchValue:B,getItemDisabled:K,multiple:Y,onBlur:i,onFocus:j,onCreate:P,searchFunction:Z||function searchFunctionDefault(a,b){var c=searchCompare(b,G(a));return c?c:searchCompare(b,H(a))},onSearchValueChange:ca,onDropdownOpen:da,dropdownOpen:fa,ignoreOutsideClicksRefs:ga}),ka=ja.getKeyProps,la=ja.getOptionProps,ma=ja.isOpen,na=ja.visibleItems,oa=ja.isFocused,pa=ja.handleInputFocus,qa=ja.handleInputBlur,ra=ja.handleToggleDropdown,sa=ja.inputRef,ta=ja.handleInputClick,ua=ja.handleInputChange,va=ja.searchValue,wa=ja.clearValue,xa=ja.getHandleRemoveValue,ya=ja.notFound,za=ja.hasItems,Aa=ja.optionsRefs,Ba=p?"".concat(p,"-input"):p,Ca=O||function renderValueDefault(a){var b=a.item,c=a.handleRemove;return React.createElement(UserSelectValue,{label:G(b),subLabel:H(b),avatarUrl:I(b),key:F(b),size:z,handleRemove:c,multiple:Y,disabled:n||K(b)})},Da=useForkRef([sa,Q]),Ea=function(){var b=Y?getInputWidth(d,e):void 0;return React.createElement(React.Fragment,null,isMultipleParams(a)&&Array.isArray(a.value)&&a.value.map(function(a){return Ca({item:a,handleRemove:xa(a)})}),isNotMultipleParams(a)&&isNotNil(a.value)&&Ca({item:a.value}),(!isNotNil(m)||Array.isArray(m)&&0===m.length)&&!va&&h&&React.createElement("span",{className:cnSelect("Placeholder"),title:"placeholder"},h),React.createElement("input",Object.assign({},ka(),{type:"text",name:C,id:Ba,onFocus:pa,onBlur:qa,"aria-label":o,onChange:ua,ref:Da,className:cnSelect("Input",{size:z,hide:!Y&&isNotNil(m),multiple:Y,isUserSelect:!0}),value:va,style:{width:b}})))};return React.createElement(React.Fragment,null,React.createElement(SelectContainer,Object.assign({focused:oa,disabled:n,size:z,required:r,id:Ba,view:x,type:"userselect",form:v,multiple:!0,ref:b,style:$},ia),React.createElement("div",{className:cnSelect("Control",{hasInput:!0}),ref:f,"aria-expanded":ma,"aria-haspopup":"listbox",id:p},React.createElement("div",{className:cnSelect("ControlInner"),onClick:ta,role:"button",ref:d,"aria-hidden":"true"},React.createElement("div",{className:cnSelect("ControlValueContainer")},Y?React.createElement("div",{className:cnSelect("ControlValue",{isUserSelect:!0})},Ea()):Ea())),React.createElement("span",{className:cnSelect("Indicators")},isNotNil(m)&&React.createElement("button",{type:"button",onClick:wa,tabIndex:-1,className:cnSelect("ClearIndicator",[cnMixFocus()])},React.createElement(IconClear,{size:clearSizeMap[z],className:cnSelect("ClearIndicatorIcon")})),React.createElement("span",{className:cnSelect("Delimiter")}),React.createElement("button",{type:"button",className:cnSelect("IndicatorsDropdown"),tabIndex:-1,onClick:ra},React.createElement(IconSelect,{size:iconSizeMap[z],className:cnSelect("DropdownIndicatorIcon")})))),React.createElement("div",{className:cnSelect("HelperInputFakeElement"),ref:e},va)),React.createElement(SelectDropdown,{isOpen:ma,size:z,controlRef:f,getOptionProps:la,dropdownRef:t,form:aa,isLoading:q,className:A,renderItem:N||function renderItemDefault(a){var b=a.item,c=a.active,d=a.hovered,e=a.onClick,f=a.onMouseEnter,g=a.ref;return React.createElement(UserSelectItem,{label:G(b),subLabel:H(b),avatarUrl:I(b),active:c,hovered:d,size:z,indent:"round"===aa?"increased":"normal",onClick:e,onMouseEnter:f,disable:K(b),multiple:Y,ref:g})},getGroupLabel:M,visibleItems:na,labelForNotFound:S,labelForCreate:U,notFound:ya,hasItems:za,labelForEmptyItems:W,itemsRefs:Aa,onScrollToBottom:ba,virtualScroll:ea,viewportRef:ha,style:"number"==typeof(null===$||void 0===$?void 0:$.zIndex)?{zIndex:$.zIndex+1}:void 0}))};export var UserSelect=forwardRef(UserSelectRender);export*from"./helpers";
|
|
2
2
|
//# sourceMappingURL=UserSelect.js.map
|