@consta/uikit 5.29.0 → 5.29.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__internal__/src/components/DatePicker/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/helpers.js.map +1 -1
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js +1 -1
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js.map +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldCanary.js +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldCanary.js.map +1 -1
- package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.css +1 -1
- package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.d.ts +2 -1
- package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.js +1 -1
- package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.js.map +1 -1
- package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.css +1 -1
- package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.d.ts +2 -1
- package/__internal__/src/components/UserSelect/UserSelectValue/UserSelectValue.js.map +1 -1
- package/__internal__/src/components/UserSelect/helpers.d.ts +5 -4
- package/__internal__/src/components/UserSelect/helpers.js +1 -1
- package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
- package/__internal__/src/utils/object/clearUndefined.d.ts +1 -0
- package/__internal__/src/utils/object/clearUndefined.js +2 -0
- package/__internal__/src/utils/object/clearUndefined.js.map +1 -0
- package/__internal__/src/utils/object/index.d.ts +1 -0
- package/__internal__/src/utils/object/index.js +1 -1
- package/__internal__/src/utils/object/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format,isValid,parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask}from"react-imask";import{getForm}from"../FieldGroup";import{useMutableRef}from"../../hooks/useMutableRef";import{getTimeNumbers}from"../DateTime/helpers";export var datePickerPropSeparatorDefault=".";export var datePickerPropFormatTypeDate="dd".concat(".","MM").concat(".","yyyy");export var datePickerPropFormatTypeTime="HH:mm:ss";export var datePickerPropFormatTypeDateTime="".concat(datePickerPropFormatTypeDate," ").concat("HH:mm:ss");export var datePickerPropFormatTypeYear="yyyy";export var datePickerPropFormatTypeMonth="MM".concat(".","yyyy");export var normalizeRangeValue=function(a){var b,c;return a[0]&&a[1]&&(null===(b=a[0])||void 0===b?void 0:b.getTime())>(null===(c=a[1])||void 0===c?void 0:c.getTime())?[a[1],a[0]]:a};export var getTimeOptionsByFormat=function(a,b){var c
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{format,isValid,parse}from"date-fns";import{useCallback,useEffect}from"react";import{IMask}from"react-imask";import{getForm}from"../FieldGroup";import{useMutableRef}from"../../hooks/useMutableRef";import{getTimeNumbers}from"../DateTime/helpers";export var datePickerPropSeparatorDefault=".";export var datePickerPropFormatTypeDate="dd".concat(".","MM").concat(".","yyyy");export var datePickerPropFormatTypeTime="HH:mm:ss";export var datePickerPropFormatTypeDateTime="".concat(datePickerPropFormatTypeDate," ").concat("HH:mm:ss");export var datePickerPropFormatTypeYear="yyyy";export var datePickerPropFormatTypeMonth="MM".concat(".","yyyy");export var normalizeRangeValue=function(a){var b,c;return a[0]&&a[1]&&(null===(b=a[0])||void 0===b?void 0:b.getTime())>(null===(c=a[1])||void 0===c?void 0:c.getTime())?[a[1],a[0]]:a};export var getTimeOptionsByFormat=function(a,b){var c=a.includes(" ")?a.split(" ")[1]:a,d=null===c||void 0===c?void 0:c.split(":"),e={HH:null===b||void 0===b?void 0:b.hours,mm:null===b||void 0===b?void 0:b.minutes,ss:null===b||void 0===b?void 0:b.seconds},f=["HH","mm","ss"].map(function(a){return null!==d&&void 0!==d&&d.includes(a)?e[a]:[]}),g=_slicedToArray(f,3),h=g[0],i=g[1],j=g[2];return{hours:h,minutes:i,seconds:j}};export var adaptFormat=function(a,b){for(var c,d=a.split(" "),e=null!==(c=d[1])&&void 0!==c?c:a,f=function shouldRemoveTimePart(a){return!!(a&&Array.isArray(a)&&0===a.length)||a&&!Array.isArray(a)&&0===a.step},g=[{marker:"HH",timeOption:null===b||void 0===b?void 0:b.hours},{marker:"mm",timeOption:null===b||void 0===b?void 0:b.minutes},{marker:"ss",timeOption:null===b||void 0===b?void 0:b.seconds}],h=0,i=g;h<i.length;h++){var j=i[h],k=j.marker,l=j.timeOption;f(l)&&(e=e.replace(new RegExp(":?".concat(k),"g"),""))}return e=e.replace(/:+$/,"").replace(/^:+/,"").replace(/:+/g,":").replace(/\s+/g," ").trim(),1<d.length?(d[1]=e,d.filter(function(a){return 0<a.length}).join(" ")):e};export var placeholderByFormat=function placeholderByFormat(a){return a.replace(/yyyy/g,"\u0413\u0413\u0413\u0413").replace(/MM/g,"\u041C\u041C").replace(/dd/g,"\u0414\u0414").replace(/HH/g,"\u0427\u0427").replace(/mm/g,"\u041C\u041C").replace(/ss/g,"\u0421\u0421")};export var getMaskBlocks=function getMaskBlocks(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},b=a.includeDate,c=void 0===b||b,d=a.includeTime,e=void 0===d||d,f={};return c&&(f.dd={mask:IMask.MaskedRange,from:1,to:31},f.MM={mask:IMask.MaskedRange,from:1,to:12},f.yyyy={mask:IMask.MaskedRange,from:1,to:9999}),e&&(f.HH={mask:IMask.MaskedRange,from:0,to:23},f.mm={mask:IMask.MaskedRange,from:0,to:59},f.ss={mask:IMask.MaskedRange,from:0,to:59}),f};export var getFormForStart=function getFormForStart(a){return getForm(a,0,2)};export var getFormForEnd=function getFormForEnd(a){return getForm(a,1,2)};export var getPartDate=function getPartDate(a,b,c){var d=a.indexOf(c);return 0<=d&&b[d]&&b[d].length===c.length?b[d]:void 0};export var getParts=function getParts(a,b,c){if(c){var d=a.split(" "),e=_slicedToArray(d,2),f=e[0],g=e[1];return[].concat(_toConsumableArray(f?f.split(b):[]),_toConsumableArray(g?g.split(":"):[]))}return a.split(b)};export var getPartsDate=function getPartsDate(a,b,c,d,e){var f=getParts(b,c,d),g=getParts(a,c,d);return e.map(function(a){return getPartDate(f,g,a)})};export var isTypeWithTime=function isTypeWithTime(a){return-1!==a.indexOf("time")};var fieldPrefixs=["start","end"];export var getFieldName=function getFieldName(a,b){return a?Array.isArray(a)?a[b]:"".concat(a,"_").concat(fieldPrefixs[b]):void 0};export var getDropdownZIndex=function getDropdownZIndex(a){return"number"==typeof(null===a||void 0===a?void 0:a.zIndex)?a.zIndex+1:void 0};export var useStringValue=function useStringValue(a,b,c,d,e){var f=e.value,g=useMutableRef([e.setValue,a]),h=useCallback(function(a){var b;g.current[0](a),null!==(b=e.ref)&&void 0!==b&&b.current&&(e.ref.current.value=a),e.maskRef.current&&e.maskRef.current.updateValue()},[]),i=useCallback(function(a){if(h(""),g.current[1]){var b;null===(b=d.current)||void 0===b?void 0:b.call(d,null,{e:a})}},[]);return useEffect(function(){if(a&&isValid(a)&&h(format(a,b)),!a&&f){var d=getParts(b,c,!1),e=getParts(f,c,!1),g=d.map(function(a){return getPartDate(d,e,a)}).filter(function(a){return!!a}),i=d.length===g.length?parse(e.join(datePickerPropSeparatorDefault),d.join(datePickerPropSeparatorDefault),new Date):void 0;isValid(i)&&h("")}},[null===a||void 0===a?void 0:a.getTime()]),i};export var isValidTimeByTimeOptions=function isValidTimeByTimeOptions(a,b){var c=function isUnitValid(a,b,c){if(!c)return!0;var d=getTimeNumbers(a,c);return!(0!==d.length)||d.includes(b)};if(!b)return!0;var d=c("hours",a.getHours(),b.hours),e=c("minutes",a.getMinutes(),b.minutes),f=c("seconds",a.getSeconds(),b.seconds);return d&&e&&f};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["format","isValid","parse","useCallback","useEffect","IMask","getForm","useMutableRef","getTimeNumbers","datePickerPropSeparatorDefault","datePickerPropFormatTypeDate","datePickerPropFormatTypeTime","datePickerPropFormatTypeDateTime","datePickerPropFormatTypeYear","datePickerPropFormatTypeMonth","normalizeRangeValue","dateRange","getTime","getTimeOptionsByFormat","timeOptions","formatArray","split","mapTimeOptions","HH","hours","mm","minutes","ss","seconds","map","marker","includes","hoursOptions","minutesOptions","secondsOptions","adaptFormat","adaptedFormat","shouldRemoveTimePart","timeOption","Array","isArray","length","step","timeMarkers","replace","RegExp","trim","filter","part","join","placeholderByFormat","getMaskBlocks","includeDate","includeTime","blocks","dd","mask","MaskedRange","from","to","MM","yyyy","getFormForStart","form","getFormForEnd","getPartDate","stringArray","index","indexOf","getParts","separator","withTime","date","time","getPartsDate","value","markers","isTypeWithTime","type","fieldPrefixs","getFieldName","name","rangeIndex","getDropdownZIndex","style","zIndex","useStringValue","formatProp","onChangeRef","imaskProps","stringValue","refs","setValue","setStringValue","current","ref","maskRef","updateValue","handleClear","e","valueArray","validArray","item","Date","isValidTimeByTimeOptions","isUnitValid","unit","options","allowed","isHoursValid","getHours","isMinutesValid","getMinutes","isSecondsValid","getSeconds"],"sources":["../../../../../src/components/DatePicker/helpers.ts"],"sourcesContent":["import { format, isValid, parse } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, useIMask } from 'react-imask';\n\nimport { getForm } from '##/components/FieldGroup';\nimport { TextFieldPropForm } from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { DateRange } from '##/utils/types/Date';\n\nimport { TimeOptions, TimeUnitOptions } from '../DateTime';\nimport { getTimeNumbers } from '../DateTime/helpers';\nimport { DatePickerPropType } from './types';\n\nexport const datePickerPropSeparatorDefault = '.';\nexport const datePickerPropFormatTypeDate = `dd${datePickerPropSeparatorDefault}MM${datePickerPropSeparatorDefault}yyyy`;\n\nexport const datePickerPropFormatTypeTime = `HH:mm:ss`;\n\nexport const datePickerPropFormatTypeDateTime = `${datePickerPropFormatTypeDate} ${datePickerPropFormatTypeTime}`;\n\nexport const datePickerPropFormatTypeYear = `yyyy`;\n\nexport const datePickerPropFormatTypeMonth = `MM${datePickerPropSeparatorDefault}yyyy`;\n\nexport const normalizeRangeValue = (dateRange: DateRange): DateRange => {\n if (\n dateRange[0] &&\n dateRange[1] &&\n dateRange[0]?.getTime() > dateRange[1]?.getTime()\n ) {\n return [dateRange[1], dateRange[0]];\n }\n return dateRange;\n};\n\nexport const getTimeOptionsByFormat = (\n format: string,\n timeOptions?: TimeOptions,\n) => {\n const markers = ['HH', 'mm', 'ss'] as const;\n const formatArray = format.split(' ')[1]?.split(':');\n const mapTimeOptions = {\n HH: timeOptions?.hours,\n mm: timeOptions?.minutes,\n ss: timeOptions?.seconds,\n } as const;\n\n const [hoursOptions, minutesOptions, secondsOptions] = markers.map((marker) =>\n formatArray?.includes(marker) ? mapTimeOptions[marker] : [],\n ) as [\n TimeUnitOptions | undefined,\n TimeUnitOptions | undefined,\n TimeUnitOptions | undefined,\n ];\n\n const effectiveTimeOptions = {\n hours: hoursOptions,\n minutes: minutesOptions,\n seconds: secondsOptions,\n };\n\n return effectiveTimeOptions;\n};\n\nexport const adaptFormat = (\n format: string,\n timeOptions?: TimeOptions,\n): string => {\n const formatArray = format.split(' ');\n let adaptedFormat = formatArray[1] ?? format;\n\n const shouldRemoveTimePart = (\n timeOption: TimeUnitOptions | undefined,\n ): boolean => {\n if (timeOption && Array.isArray(timeOption) && timeOption.length === 0)\n return true;\n if (timeOption && !Array.isArray(timeOption) && timeOption.step === 0)\n return true;\n\n return false;\n };\n\n const timeMarkers = [\n { marker: 'HH', timeOption: timeOptions?.hours },\n { marker: 'mm', timeOption: timeOptions?.minutes },\n { marker: 'ss', timeOption: timeOptions?.seconds },\n ];\n\n for (const { marker, timeOption } of timeMarkers) {\n if (shouldRemoveTimePart(timeOption)) {\n adaptedFormat = adaptedFormat.replace(new RegExp(`:?${marker}`, 'g'), '');\n }\n }\n\n adaptedFormat = adaptedFormat\n .replace(/:+$/, '')\n .replace(/^:+/, '')\n .replace(/:+/g, ':')\n .replace(/\\s+/g, ' ')\n .trim();\n\n if (formatArray.length > 1) {\n formatArray[1] = adaptedFormat;\n return formatArray.filter((part) => part.length > 0).join(' ');\n }\n return adaptedFormat;\n};\n\nexport const placeholderByFormat = (format: string): string => {\n return format\n .replace(/yyyy/g, 'ГГГГ')\n .replace(/MM/g, 'ММ')\n .replace(/dd/g, 'ДД')\n .replace(/HH/g, 'ЧЧ')\n .replace(/mm/g, 'ММ')\n .replace(/ss/g, 'СС');\n};\n\ntype MaskBlock = {\n mask: typeof IMask.MaskedRange;\n from: number;\n to: number;\n};\n\ntype MaskBlocks = Partial<{\n dd: MaskBlock;\n MM: MaskBlock;\n yyyy: MaskBlock;\n HH: MaskBlock;\n mm: MaskBlock;\n ss: MaskBlock;\n}>;\n\nexport const getMaskBlocks = ({\n includeDate = true,\n includeTime = true,\n} = {}): MaskBlocks => {\n const blocks: MaskBlocks = {};\n\n if (includeDate) {\n blocks.dd = { mask: IMask.MaskedRange, from: 1, to: 31 };\n blocks.MM = { mask: IMask.MaskedRange, from: 1, to: 12 };\n blocks.yyyy = { mask: IMask.MaskedRange, from: 1, to: 9999 };\n }\n\n if (includeTime) {\n blocks.HH = { mask: IMask.MaskedRange, from: 0, to: 23 };\n blocks.mm = { mask: IMask.MaskedRange, from: 0, to: 59 };\n blocks.ss = { mask: IMask.MaskedRange, from: 0, to: 59 };\n }\n\n return blocks;\n};\n\nexport const getFormForStart = (form: TextFieldPropForm) => getForm(form, 0, 2);\nexport const getFormForEnd = (form: TextFieldPropForm) => getForm(form, 1, 2);\n\nexport const getPartDate = (\n formatArray: string[],\n stringArray: string[],\n marker: string,\n) => {\n const index = formatArray.indexOf(marker);\n\n if (\n index >= 0 &&\n stringArray[index] &&\n stringArray[index].length === marker.length\n ) {\n return stringArray[index];\n }\n\n return undefined;\n};\n\nexport const getParts = (\n format: string,\n separator: string,\n withTime?: boolean,\n) => {\n if (withTime) {\n const [date, time] = format.split(' ');\n\n return [\n ...(date ? date.split(separator) : []),\n ...(time ? time.split(':') : []),\n ];\n }\n\n return format.split(separator);\n};\n\nexport const getPartsDate = (\n value: string,\n format: string,\n separator: string,\n withTime: boolean,\n markers: string[],\n) => {\n const formatArray = getParts(format, separator, withTime);\n const stringArray = getParts(value, separator, withTime);\n\n return markers.map((marker) => getPartDate(formatArray, stringArray, marker));\n};\n\nexport const isTypeWithTime = (type: DatePickerPropType) =>\n type.indexOf('time') !== -1;\n\nconst fieldPrefixs = ['start', 'end'] as const;\n\nexport const getFieldName = (\n name: [string?, string?] | string | undefined,\n rangeIndex: 0 | 1,\n) => {\n if (!name) {\n return undefined;\n }\n\n if (Array.isArray(name)) {\n return name[rangeIndex];\n }\n\n return `${name}_${fieldPrefixs[rangeIndex]}`;\n};\n\nexport const getDropdownZIndex = (style?: React.CSSProperties) =>\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined;\n\ntype DatePickerFieldTypeDatePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport const useStringValue = (\n value: Date | undefined | null,\n formatProp: string,\n separator: string,\n onChangeRef: React.MutableRefObject<\n DatePickerFieldTypeDatePropOnChange | undefined\n >,\n imaskProps: ReturnType<typeof useIMask<HTMLInputElement>>,\n) => {\n const stringValue = imaskProps.value;\n\n const refs = useMutableRef([imaskProps.setValue, value] as const);\n\n const setStringValue = useCallback((value: string) => {\n refs.current[0](value);\n if (imaskProps.ref?.current) {\n imaskProps.ref.current.value = value;\n }\n if (imaskProps.maskRef.current) {\n imaskProps.maskRef.current.updateValue();\n }\n }, []);\n\n const handleClear: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n setStringValue('');\n\n if (refs.current[1]) {\n onChangeRef.current?.(null, { e: e as unknown as Event });\n }\n },\n [],\n );\n\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n\n if (!value && stringValue) {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n const date =\n formatArray.length === validArray.length\n ? parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n )\n : undefined;\n\n if (isValid(date)) {\n setStringValue('');\n }\n }\n }, [value?.getTime()]);\n\n return handleClear;\n};\n\nexport const isValidTimeByTimeOptions = (\n date: Date,\n timeOptions?: TimeOptions,\n): boolean => {\n const isUnitValid = (\n unit: 'hours' | 'minutes' | 'seconds',\n value: number,\n options?: TimeUnitOptions,\n ): boolean => {\n if (!options) return true;\n\n const allowed = getTimeNumbers(unit, options);\n if (allowed.length === 0) return true;\n\n return allowed.includes(value);\n };\n\n if (!timeOptions) return true;\n const isHoursValid = isUnitValid('hours', date.getHours(), timeOptions.hours);\n const isMinutesValid = isUnitValid(\n 'minutes',\n date.getMinutes(),\n timeOptions.minutes,\n );\n const isSecondsValid = isUnitValid(\n 'seconds',\n date.getSeconds(),\n timeOptions.seconds,\n );\n\n return isHoursValid && isMinutesValid && isSecondsValid;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["format","isValid","parse","useCallback","useEffect","IMask","getForm","useMutableRef","getTimeNumbers","datePickerPropSeparatorDefault","datePickerPropFormatTypeDate","datePickerPropFormatTypeTime","datePickerPropFormatTypeDateTime","datePickerPropFormatTypeYear","datePickerPropFormatTypeMonth","normalizeRangeValue","dateRange","getTime","getTimeOptionsByFormat","timeOptions","timePart","includes","split","formatArray","mapTimeOptions","HH","hours","mm","minutes","ss","seconds","map","marker","hoursOptions","minutesOptions","secondsOptions","adaptFormat","adaptedFormat","shouldRemoveTimePart","timeOption","Array","isArray","length","step","timeMarkers","replace","RegExp","trim","filter","part","join","placeholderByFormat","getMaskBlocks","includeDate","includeTime","blocks","dd","mask","MaskedRange","from","to","MM","yyyy","getFormForStart","form","getFormForEnd","getPartDate","stringArray","index","indexOf","getParts","separator","withTime","date","time","getPartsDate","value","markers","isTypeWithTime","type","fieldPrefixs","getFieldName","name","rangeIndex","getDropdownZIndex","style","zIndex","useStringValue","formatProp","onChangeRef","imaskProps","stringValue","refs","setValue","setStringValue","current","ref","maskRef","updateValue","handleClear","e","valueArray","validArray","item","Date","isValidTimeByTimeOptions","isUnitValid","unit","options","allowed","isHoursValid","getHours","isMinutesValid","getMinutes","isSecondsValid","getSeconds"],"sources":["../../../../../src/components/DatePicker/helpers.ts"],"sourcesContent":["import { format, isValid, parse } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport { IMask, useIMask } from 'react-imask';\n\nimport { getForm } from '##/components/FieldGroup';\nimport { TextFieldPropForm } from '##/components/TextField';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { DateRange } from '##/utils/types/Date';\n\nimport { TimeOptions, TimeUnitOptions } from '../DateTime';\nimport { getTimeNumbers } from '../DateTime/helpers';\nimport { DatePickerPropType } from './types';\n\nexport const datePickerPropSeparatorDefault = '.';\nexport const datePickerPropFormatTypeDate = `dd${datePickerPropSeparatorDefault}MM${datePickerPropSeparatorDefault}yyyy`;\n\nexport const datePickerPropFormatTypeTime = `HH:mm:ss`;\n\nexport const datePickerPropFormatTypeDateTime = `${datePickerPropFormatTypeDate} ${datePickerPropFormatTypeTime}`;\n\nexport const datePickerPropFormatTypeYear = `yyyy`;\n\nexport const datePickerPropFormatTypeMonth = `MM${datePickerPropSeparatorDefault}yyyy`;\n\nexport const normalizeRangeValue = (dateRange: DateRange): DateRange => {\n if (\n dateRange[0] &&\n dateRange[1] &&\n dateRange[0]?.getTime() > dateRange[1]?.getTime()\n ) {\n return [dateRange[1], dateRange[0]];\n }\n return dateRange;\n};\n\nexport const getTimeOptionsByFormat = (\n format: string,\n timeOptions?: TimeOptions,\n) => {\n const markers = ['HH', 'mm', 'ss'] as const;\n const timePart = format.includes(' ') ? format.split(' ')[1] : format;\n const formatArray = timePart?.split(':');\n const mapTimeOptions = {\n HH: timeOptions?.hours,\n mm: timeOptions?.minutes,\n ss: timeOptions?.seconds,\n } as const;\n\n const [hoursOptions, minutesOptions, secondsOptions] = markers.map((marker) =>\n formatArray?.includes(marker) ? mapTimeOptions[marker] : [],\n ) as [\n TimeUnitOptions | undefined,\n TimeUnitOptions | undefined,\n TimeUnitOptions | undefined,\n ];\n\n const effectiveTimeOptions = {\n hours: hoursOptions,\n minutes: minutesOptions,\n seconds: secondsOptions,\n };\n\n return effectiveTimeOptions;\n};\n\nexport const adaptFormat = (\n format: string,\n timeOptions?: TimeOptions,\n): string => {\n const formatArray = format.split(' ');\n let adaptedFormat = formatArray[1] ?? format;\n\n const shouldRemoveTimePart = (\n timeOption: TimeUnitOptions | undefined,\n ): boolean => {\n if (timeOption && Array.isArray(timeOption) && timeOption.length === 0)\n return true;\n if (timeOption && !Array.isArray(timeOption) && timeOption.step === 0)\n return true;\n\n return false;\n };\n\n const timeMarkers = [\n { marker: 'HH', timeOption: timeOptions?.hours },\n { marker: 'mm', timeOption: timeOptions?.minutes },\n { marker: 'ss', timeOption: timeOptions?.seconds },\n ];\n\n for (const { marker, timeOption } of timeMarkers) {\n if (shouldRemoveTimePart(timeOption)) {\n adaptedFormat = adaptedFormat.replace(new RegExp(`:?${marker}`, 'g'), '');\n }\n }\n\n adaptedFormat = adaptedFormat\n .replace(/:+$/, '')\n .replace(/^:+/, '')\n .replace(/:+/g, ':')\n .replace(/\\s+/g, ' ')\n .trim();\n\n if (formatArray.length > 1) {\n formatArray[1] = adaptedFormat;\n return formatArray.filter((part) => part.length > 0).join(' ');\n }\n return adaptedFormat;\n};\n\nexport const placeholderByFormat = (format: string): string => {\n return format\n .replace(/yyyy/g, 'ГГГГ')\n .replace(/MM/g, 'ММ')\n .replace(/dd/g, 'ДД')\n .replace(/HH/g, 'ЧЧ')\n .replace(/mm/g, 'ММ')\n .replace(/ss/g, 'СС');\n};\n\ntype MaskBlock = {\n mask: typeof IMask.MaskedRange;\n from: number;\n to: number;\n};\n\ntype MaskBlocks = Partial<{\n dd: MaskBlock;\n MM: MaskBlock;\n yyyy: MaskBlock;\n HH: MaskBlock;\n mm: MaskBlock;\n ss: MaskBlock;\n}>;\n\nexport const getMaskBlocks = ({\n includeDate = true,\n includeTime = true,\n} = {}): MaskBlocks => {\n const blocks: MaskBlocks = {};\n\n if (includeDate) {\n blocks.dd = { mask: IMask.MaskedRange, from: 1, to: 31 };\n blocks.MM = { mask: IMask.MaskedRange, from: 1, to: 12 };\n blocks.yyyy = { mask: IMask.MaskedRange, from: 1, to: 9999 };\n }\n\n if (includeTime) {\n blocks.HH = { mask: IMask.MaskedRange, from: 0, to: 23 };\n blocks.mm = { mask: IMask.MaskedRange, from: 0, to: 59 };\n blocks.ss = { mask: IMask.MaskedRange, from: 0, to: 59 };\n }\n\n return blocks;\n};\n\nexport const getFormForStart = (form: TextFieldPropForm) => getForm(form, 0, 2);\nexport const getFormForEnd = (form: TextFieldPropForm) => getForm(form, 1, 2);\n\nexport const getPartDate = (\n formatArray: string[],\n stringArray: string[],\n marker: string,\n) => {\n const index = formatArray.indexOf(marker);\n\n if (\n index >= 0 &&\n stringArray[index] &&\n stringArray[index].length === marker.length\n ) {\n return stringArray[index];\n }\n\n return undefined;\n};\n\nexport const getParts = (\n format: string,\n separator: string,\n withTime?: boolean,\n) => {\n if (withTime) {\n const [date, time] = format.split(' ');\n\n return [\n ...(date ? date.split(separator) : []),\n ...(time ? time.split(':') : []),\n ];\n }\n\n return format.split(separator);\n};\n\nexport const getPartsDate = (\n value: string,\n format: string,\n separator: string,\n withTime: boolean,\n markers: string[],\n) => {\n const formatArray = getParts(format, separator, withTime);\n const stringArray = getParts(value, separator, withTime);\n\n return markers.map((marker) => getPartDate(formatArray, stringArray, marker));\n};\n\nexport const isTypeWithTime = (type: DatePickerPropType) =>\n type.indexOf('time') !== -1;\n\nconst fieldPrefixs = ['start', 'end'] as const;\n\nexport const getFieldName = (\n name: [string?, string?] | string | undefined,\n rangeIndex: 0 | 1,\n) => {\n if (!name) {\n return undefined;\n }\n\n if (Array.isArray(name)) {\n return name[rangeIndex];\n }\n\n return `${name}_${fieldPrefixs[rangeIndex]}`;\n};\n\nexport const getDropdownZIndex = (style?: React.CSSProperties) =>\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined;\n\ntype DatePickerFieldTypeDatePropOnChange = (\n value: Date | null,\n props: {\n e: Event;\n },\n) => void;\n\nexport const useStringValue = (\n value: Date | undefined | null,\n formatProp: string,\n separator: string,\n onChangeRef: React.MutableRefObject<\n DatePickerFieldTypeDatePropOnChange | undefined\n >,\n imaskProps: ReturnType<typeof useIMask<HTMLInputElement>>,\n) => {\n const stringValue = imaskProps.value;\n\n const refs = useMutableRef([imaskProps.setValue, value] as const);\n\n const setStringValue = useCallback((value: string) => {\n refs.current[0](value);\n if (imaskProps.ref?.current) {\n imaskProps.ref.current.value = value;\n }\n if (imaskProps.maskRef.current) {\n imaskProps.maskRef.current.updateValue();\n }\n }, []);\n\n const handleClear: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n setStringValue('');\n\n if (refs.current[1]) {\n onChangeRef.current?.(null, { e: e as unknown as Event });\n }\n },\n [],\n );\n\n useEffect(() => {\n if (value && isValid(value)) {\n setStringValue(format(value, formatProp));\n }\n\n if (!value && stringValue) {\n const formatArray = getParts(formatProp, separator, false);\n const valueArray = getParts(stringValue, separator, false);\n const validArray = formatArray\n .map((marker) => getPartDate(formatArray, valueArray, marker))\n .filter((item) => Boolean(item));\n\n const date =\n formatArray.length === validArray.length\n ? parse(\n valueArray.join(datePickerPropSeparatorDefault),\n formatArray.join(datePickerPropSeparatorDefault),\n new Date(),\n )\n : undefined;\n\n if (isValid(date)) {\n setStringValue('');\n }\n }\n }, [value?.getTime()]);\n\n return handleClear;\n};\n\nexport const isValidTimeByTimeOptions = (\n date: Date,\n timeOptions?: TimeOptions,\n): boolean => {\n const isUnitValid = (\n unit: 'hours' | 'minutes' | 'seconds',\n value: number,\n options?: TimeUnitOptions,\n ): boolean => {\n if (!options) return true;\n\n const allowed = getTimeNumbers(unit, options);\n if (allowed.length === 0) return true;\n\n return allowed.includes(value);\n };\n\n if (!timeOptions) return true;\n const isHoursValid = isUnitValid('hours', date.getHours(), timeOptions.hours);\n const isMinutesValid = isUnitValid(\n 'minutes',\n date.getMinutes(),\n timeOptions.minutes,\n );\n const isSecondsValid = isUnitValid(\n 'seconds',\n date.getSeconds(),\n timeOptions.seconds,\n );\n\n return isHoursValid && isMinutesValid && isSecondsValid;\n};\n"],"mappings":"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"}
|
|
@@ -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=["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,
|
|
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,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
2
|
//# sourceMappingURL=TextAreaAutoSize.js.map
|
|
@@ -1 +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":"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"}
|
|
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","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 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,aAAa,CAAEN,CAAc,CAACM,aAJV,CAKpBC,UAAU,CAAEP,CAAc,CAACO,UALP,CAMpBC,WAAW,CAAER,CAAc,CAACQ,WANR,CAOpBC,YAAY,CAAET,CAAc,CAACS,YAPT,CAQpBC,MAAM,CAAEV,CAAc,CAACU,MARH,CASpBC,MAAM,CAAEX,CAAc,CAACW,MATH,CAUpBC,SAAS,CAAEZ,CAAc,CAACY,SAVN,CAWpBC,YAAY,CAAEb,CAAc,CAACa,YAXT,CAYpBC,UAAU,CAAEd,CAAc,CAACc,UAZP,CAapBC,WAAW,CAAEf,CAAc,CAACe,WAbR,CAcpBC,UAAU,CAAEhB,CAAc,CAACgB,UAdP,CAepBC,QAAQ,CAAEjB,CAAc,CAACiB,QAfL,CAgBpBC,UAAU,CAAElB,CAAc,CAACkB,UAhBP,CAiBpBC,OAAO,CAAEnB,CAAc,CAACmB,OAjBJ,CAkBpBC,UAAU,CAAEpB,CAAc,CAACoB,UAlBP,CAmBpBC,aAAa,CAAErB,CAAc,CAACqB,aAnBV,CAoBpBC,aAAa,CAAEtB,CAAc,CAACsB,aApBV,CAqBpBC,OAAO,CAAEvB,CAAc,CAACuB,OArBJ,CAsBpBC,UAAU,CAAExB,CAAc,CAACwB,UAtBP,CAuBpBC,SAAS,CAAEzB,CAAc,CAACyB,SAvBN,CAHtB,CA6BKvD,SAAS,CAACgC,CAAD,CAAgBN,CAAG,CAACE,GAAJ,CAAQL,CAAR,CAAhB,CA7Bd,EA8BEA,CAAc,CAACG,CAAD,CAAMM,CAAN,CA9BhB,IAiCMwB,EAAa,CAAGzB,gBAAgB,CAACF,CAAD,CAjCtC,CAkCMmB,CAAU,CAAGS,UAAU,CAACD,CAAa,CAACR,UAAf,CAlC7B,CAoCMX,CAAU,CAAGoB,UAAU,CAACD,CAAa,CAACnB,UAAf,CApC7B,CAqCMD,CAAa,CAAGqB,UAAU,CAACD,CAAa,CAACpB,aAAf,CArChC,CAsCMM,CAAS,CAAGe,UAAU,CAACD,CAAa,CAACE,cAAf,CAtC5B,CAuCMf,CAAY,CAAGc,UAAU,CAACD,CAAa,CAACG,iBAAf,CAvC/B,CAyCMC,CAAG,CAAGvB,CAAU,CAAGD,CAAb,CAA6BM,CAA7B,CAAyCC,CAzCrD,CA2CMkB,CAAS,CAAGhC,CAAW,CAACiC,YA3C9B,CA8CM5B,CAAS,CAAGvB,CAAO,CAAGA,CAAO,CAAGqC,CAAV,CAAuBY,CAA1B,IA9CzB,CAgDMG,CAAW,CAAGC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASL,CAAT,CAHXnD,CAAO,CAAGsC,CAAV,CAAuBY,CAGZ,CAAT,CAAyC1B,CAAzC,CAhDpB,CAkDA,IAAIiC,KAAK,CAACJ,CAAD,CAAT,EAIA,GAAMK,EAAsC,CAAG,CAC7CC,MAAM,WAAKN,CAAL,MADuC,CAE7CO,SAAS,CAAE3D,CAAO,EAAIkD,CAAS,CAAG3B,CAAvB,CAAmC,QAAnC,CAA8C,QAFZ,CAA/C,CAKKlC,SAAS,CAACoE,CAAD,CAAoB1C,CAAG,CAACE,GAAJ,CAAQP,CAAR,CAApB,CATd,EAUEA,CAAkB,CAACK,CAAD,CAAM0C,CAAN,CAVpB,CAlDA,CA8DD,CAlEgC,CArBoC,CAyF/DG,CAA2D,CAC/D/E,SAAS,CAAC,SAACkC,CAAD,CAAM8C,CAAN,CAAY,mBACpB,GAAA9C,CAAG,CAACE,GAAJ,CAAQJ,CAAR,GAAmBZ,QADC,qBACpB,SAA8B4D,CAA9B,CADoB,CAEpB,GAAM3C,EAAW,CAAGH,CAAG,CAACE,GAAJ,CAAQV,CAAR,CAApB,CACIW,CAHgB,GAIlBA,CAAW,CAAC4C,KAAZ,CAAoBD,CAAC,CAACE,MAAF,CAASD,KAJX,EAMpBhD,CAAe,EAChB,CAPQ,CA1F0D,CA2HrE,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,CAACiD,GAAJ,CAAQ3D,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,CAACiD,GAAJ,CAAQzD,CAAR,CADC,CAEfS,CAAe,CAAGD,CAAG,CAACiD,GAAJ,CAAQ3D,CAAR,CAFH,CAGjBa,CAAW,EAAIF,CAHE,GAInBE,CAAW,CAAC4C,KAAZ,CAAoB9C,CAAe,CAAC8C,KAJjB,CAKnBhD,CAAe,EALI,CAOtB,CAPY,CASb,CACE,wCACE,gDACMV,CADN,EAEE,GAAG,CAAEjB,UAAU,CAAC,CAACmB,CAAD,CAAcR,CAAd,CAAD,CAFjB,CAGE,QAAQ,CAAE8D,CAHZ,CAIE,KAAK,gCAAO1D,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,CAC7BsE,EAAE,CAAE7D,CAAS,CAAC6D,EADe,CAE7BC,IAAI,CAAE9D,CAAS,CAAC8D,IAFa,CAAT,CAJxB,EADW,CAUXC,QAAQ,CAACC,IAVE,CARf,CAsBH,CAlJS,CAD2B,CAAhC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React,{forwardRef}from"react";import{TextFieldTypeNumber}from"./TextFieldTypeNumber";import{TextFieldTypePassword}from"./TextFieldTypePassword";import{TextFieldTypeText}from"./TextFieldTypeText";import{TextFieldTypeTextArea}from"./TextFieldTypeTextArea";import{TextFieldTypeTextArray}from"./TextFieldTypeTextArray";var typeMap={text:TextFieldTypeText,textarea:TextFieldTypeTextArea,password:TextFieldTypePassword,number:TextFieldTypeNumber,textarray:TextFieldTypeTextArray},TextFieldRender=function(a,b){var c=typeMap[a.type||"text"]||typeMap.text;return React.createElement(c,Object.assign({ref:b},a))};export var TextField=forwardRef(TextFieldRender);
|
|
1
|
+
import React,{forwardRef}from"react";import{clearUndefined}from"../../utils/object";import{TextFieldTypeNumber}from"./TextFieldTypeNumber";import{TextFieldTypePassword}from"./TextFieldTypePassword";import{TextFieldTypeText}from"./TextFieldTypeText";import{TextFieldTypeTextArea}from"./TextFieldTypeTextArea";import{TextFieldTypeTextArray}from"./TextFieldTypeTextArray";var typeMap={text:TextFieldTypeText,textarea:TextFieldTypeTextArea,password:TextFieldTypePassword,number:TextFieldTypeNumber,textarray:TextFieldTypeTextArray},TextFieldRender=function(a,b){var c=typeMap[a.type||"text"]||typeMap.text;return React.createElement(c,Object.assign({ref:b},clearUndefined(a)))};export var TextField=forwardRef(TextFieldRender);
|
|
2
2
|
//# sourceMappingURL=TextFieldCanary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextFieldCanary.js","names":["React","forwardRef","TextFieldTypeNumber","TextFieldTypePassword","TextFieldTypeText","TextFieldTypeTextArea","TextFieldTypeTextArray","typeMap","text","textarea","password","number","textarray","TextFieldRender","props","ref","Component","type","TextField"],"sources":["../../../../../src/components/TextFieldCanary/TextFieldCanary.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { TextFieldTypeNumber } from './TextFieldTypeNumber';\nimport { TextFieldTypePassword } from './TextFieldTypePassword';\nimport { TextFieldTypeText } from './TextFieldTypeText';\nimport { TextFieldTypeTextArea } from './TextFieldTypeTextArea';\nimport { TextFieldTypeTextArray } from './TextFieldTypeTextArray';\nimport {\n TextFieldComponent,\n TextFieldProps,\n TextFieldTypeComponent,\n} from './types';\n\nconst typeMap: Record<\n string,\n | TextFieldTypeComponent<'text'>\n | TextFieldTypeComponent<'textarea'>\n | TextFieldTypeComponent<'password'>\n | TextFieldTypeComponent<'number'>\n | TextFieldTypeComponent<'textarray'>\n> = {\n text: TextFieldTypeText,\n textarea: TextFieldTypeTextArea,\n password: TextFieldTypePassword,\n number: TextFieldTypeNumber,\n textarray: TextFieldTypeTextArray,\n};\n\nconst TextFieldRender = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const Component = (typeMap[props.type || 'text'] ||\n typeMap.text) as TextFieldTypeComponent<TYPE>;\n\n return <Component ref={ref} {...props} />;\n};\n\nexport const TextField = forwardRef(TextFieldRender) as TextFieldComponent;\n"],"mappings":"AAAA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CAEA,OAASC,mBAAT,6BACA,OAASC,qBAAT,+BACA,OAASC,iBAAT,2BACA,OAASC,qBAAT,+BACA,OAASC,sBAAT,gC,GAOMC,QAOL,CAAG,CACFC,IAAI,CAAEJ,iBADJ,CAEFK,QAAQ,CAAEJ,qBAFR,CAGFK,QAAQ,CAAEP,qBAHR,CAIFQ,MAAM,CAAET,mBAJN,CAKFU,SAAS,CAAEN,sBALT,C,CAQEO,eAAe,CAAG,SACtBC,CADsB,CAEtBC,CAFsB,CAGnB,CACH,GAAMC,EAAS,CAAIT,OAAO,CAACO,CAAK,CAACG,IAAN,EAAc,MAAf,CAAP,EACjBV,OAAO,CAACC,IADV,CAGA,MAAO,qBAAC,CAAD,gBAAW,GAAG,CAAEO,CAAhB,
|
|
1
|
+
{"version":3,"file":"TextFieldCanary.js","names":["React","forwardRef","clearUndefined","TextFieldTypeNumber","TextFieldTypePassword","TextFieldTypeText","TextFieldTypeTextArea","TextFieldTypeTextArray","typeMap","text","textarea","password","number","textarray","TextFieldRender","props","ref","Component","type","TextField"],"sources":["../../../../../src/components/TextFieldCanary/TextFieldCanary.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { clearUndefined } from '##/utils/object';\n\nimport { TextFieldTypeNumber } from './TextFieldTypeNumber';\nimport { TextFieldTypePassword } from './TextFieldTypePassword';\nimport { TextFieldTypeText } from './TextFieldTypeText';\nimport { TextFieldTypeTextArea } from './TextFieldTypeTextArea';\nimport { TextFieldTypeTextArray } from './TextFieldTypeTextArray';\nimport {\n TextFieldComponent,\n TextFieldProps,\n TextFieldTypeComponent,\n} from './types';\n\nconst typeMap: Record<\n string,\n | TextFieldTypeComponent<'text'>\n | TextFieldTypeComponent<'textarea'>\n | TextFieldTypeComponent<'password'>\n | TextFieldTypeComponent<'number'>\n | TextFieldTypeComponent<'textarray'>\n> = {\n text: TextFieldTypeText,\n textarea: TextFieldTypeTextArea,\n password: TextFieldTypePassword,\n number: TextFieldTypeNumber,\n textarray: TextFieldTypeTextArray,\n};\n\nconst TextFieldRender = <TYPE extends string>(\n props: TextFieldProps<TYPE>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const Component = (typeMap[props.type || 'text'] ||\n typeMap.text) as TextFieldTypeComponent<TYPE>;\n\n return <Component ref={ref} {...clearUndefined(props)} />;\n};\n\nexport const TextField = forwardRef(TextFieldRender) as TextFieldComponent;\n"],"mappings":"AAAA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CAEA,OAASC,cAAT,0BAEA,OAASC,mBAAT,6BACA,OAASC,qBAAT,+BACA,OAASC,iBAAT,2BACA,OAASC,qBAAT,+BACA,OAASC,sBAAT,gC,GAOMC,QAOL,CAAG,CACFC,IAAI,CAAEJ,iBADJ,CAEFK,QAAQ,CAAEJ,qBAFR,CAGFK,QAAQ,CAAEP,qBAHR,CAIFQ,MAAM,CAAET,mBAJN,CAKFU,SAAS,CAAEN,sBALT,C,CAQEO,eAAe,CAAG,SACtBC,CADsB,CAEtBC,CAFsB,CAGnB,CACH,GAAMC,EAAS,CAAIT,OAAO,CAACO,CAAK,CAACG,IAAN,EAAc,MAAf,CAAP,EACjBV,OAAO,CAACC,IADV,CAGA,MAAO,qBAAC,CAAD,gBAAW,GAAG,CAAEO,CAAhB,EAAyBd,cAAc,CAACa,CAAD,CAAvC,EACR,C,CAED,MAAO,IAAMI,UAAS,CAAGlB,UAAU,CAACa,eAAD,CAA5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.UserSelectItem{align-items:center;background-color:var(--color-control-bg-clear);color:var(--color-control-typo-default);cursor:pointer;display:flex;font-size:var(--font-size);position:relative}.UserSelectItem_size_s{--font-size:var(--control-text-size-s);--sub-info-space:var(--space-xs);--sub-label-font-size:var(--size-text-2xs)}.UserSelectItem_size_m{--font-size:var(--control-text-size-m);--sub-info-space:var(--space-s);--sub-label-font-size:var(--size-text-xs)}.UserSelectItem_size_l{--font-size:var(--control-text-size-l);--sub-info-space:var(--space-s);--sub-label-font-size:var(--size-text-s)}.UserSelectItem_hovered{background-color:var(--color-control-bg-clear-hover)}.UserSelectItem_disable{color:var(--color-control-typo-disable);cursor:auto}.UserSelectItem_active{color:var(--color-control-typo-secondary)}.UserSelectItem_indent_increased{padding-left:calc(var(--horizontal-space)*2.6)}.UserSelectItem-AvatarContainer{position:relative}.UserSelectItem-CheckIcon{background-color:var(--color-control-bg-primary);border:1px solid var(--color-control-bg-default);border-radius:50%;bottom:calc(var(--space-2xs)*-1);color:var(--color-control-bg-default);height:var(--graphics-size-xs);padding:0;position:absolute;right:calc(var(--space-2xs)*-1);width:var(--graphics-size-xs)}.UserSelectItem-CheckIcon_animate_entered,.UserSelectItem-CheckIcon_animate_entering,.UserSelectItem-CheckIcon_animate_exited,.UserSelectItem-CheckIcon_animate_exiting{transition:.2s ease;transition-property:opacity,transform}.UserSelectItem-CheckIcon_animate_entered,.UserSelectItem-CheckIcon_animate_entering{opacity:1;transform:scale(1)}.UserSelectItem-CheckIcon_animate_exiting{opacity:0;transform:scale(.25)}.UserSelectItem-CheckIcon_animate_exited{opacity:0;transform:scale(0)}.UserSelectItem-Info{padding-left:var(--sub-info-space)}.UserSelectItem-SubLabel{font-size:var(--sub-label-font-size);opacity:.7}.UserSelectItem-SubLabel_disable{opacity:1}
|
|
1
|
+
.UserSelectItem{align-items:center;background-color:var(--color-control-bg-clear);color:var(--color-control-typo-default);cursor:pointer;display:flex;font-size:var(--font-size);position:relative}.UserSelectItem_size_s{--font-size:var(--control-text-size-s);--sub-info-space:var(--space-xs);--sub-label-font-size:var(--size-text-2xs)}.UserSelectItem_size_m{--font-size:var(--control-text-size-m);--sub-info-space:var(--space-s);--sub-label-font-size:var(--size-text-xs)}.UserSelectItem_size_l{--font-size:var(--control-text-size-l);--sub-info-space:var(--space-s);--sub-label-font-size:var(--size-text-s)}.UserSelectItem_hovered{background-color:var(--color-control-bg-clear-hover)}.UserSelectItem_disable{color:var(--color-control-typo-disable);cursor:auto}.UserSelectItem_active,.UserSelectItem_active .UserSelectItem-Label,.UserSelectItem_active .UserSelectItem-SubLabel{color:var(--color-control-typo-secondary)}.UserSelectItem_indent_increased{padding-left:calc(var(--horizontal-space)*2.6)}.UserSelectItem-AvatarContainer{position:relative}.UserSelectItem-CheckIcon{background-color:var(--color-control-bg-primary);border:1px solid var(--color-control-bg-default);border-radius:50%;bottom:calc(var(--space-2xs)*-1);color:var(--color-control-bg-default);height:var(--graphics-size-xs);padding:0;position:absolute;right:calc(var(--space-2xs)*-1);width:var(--graphics-size-xs)}.UserSelectItem-CheckIcon_animate_entered,.UserSelectItem-CheckIcon_animate_entering,.UserSelectItem-CheckIcon_animate_exited,.UserSelectItem-CheckIcon_animate_exiting{transition:.2s ease;transition-property:opacity,transform}.UserSelectItem-CheckIcon_animate_entered,.UserSelectItem-CheckIcon_animate_entering{opacity:1;transform:scale(1)}.UserSelectItem-CheckIcon_animate_exiting{opacity:0;transform:scale(.25)}.UserSelectItem-CheckIcon_animate_exited{opacity:0;transform:scale(0)}.UserSelectItem-Info{flex:1;padding-left:var(--sub-info-space)}.UserSelectItem-Label,.UserSelectItem-SubLabel{word-wrap:break-word;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;line-height:var(--line-height-text-m);overflow:hidden}.UserSelectItem-Label{max-width:20ch}.UserSelectItem-SubLabel{font-size:var(--sub-label-font-size);max-width:28ch;opacity:.7}.UserSelectItem-SubLabel_disable{opacity:1}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import './UserSelectItem.css';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { UserSelectPropSize } from '../helpers';
|
|
3
4
|
export declare const cnUserSelectItem: import("@bem-react/classname").ClassNameFormatter;
|
|
4
5
|
export declare const UserSelectItem: React.ForwardRefExoticComponent<{
|
|
5
6
|
label: string;
|
|
6
7
|
active: boolean;
|
|
7
8
|
hovered: boolean;
|
|
8
|
-
size:
|
|
9
|
+
size: UserSelectPropSize;
|
|
9
10
|
indent: "normal" | "increased";
|
|
10
11
|
subLabel?: string;
|
|
11
12
|
avatarUrl?: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","label","subLabel","avatarUrl","active","hovered","size","indent","disable","multiple"];import"./UserSelectItem.css";import{IconCheck}from"@consta/icons/IconCheck";import React,{forwardRef,useRef}from"react";import{Transition}from"react-transition-group";import{Avatar}from"../../Avatar";import{mapHorizontalSpace,mapHorizontalSpaceIncreased,mapItemVerticalPadding}from"../../ListCanary";import{cnMixSpace}from"../../../mixs/MixSpace";import{cn}from"../../../utils/bem";export var cnUserSelectItem=cn("UserSelectItem");export var UserSelectItem=forwardRef(function(a,b){var c=a.className,d=a.label,e=a.subLabel,f=a.avatarUrl,g=a.active,h=a.hovered,i=a.size,j=a.indent,k=a.disable,l=a.multiple,m=_objectWithoutProperties(a,_excluded),n=useRef(null);return React.createElement("div",Object.assign({},m,{className:cnUserSelectItem({active:g,hovered:h,size:i,indent:j,disable:k},[cnMixSpace({pH:"increased"===j?mapHorizontalSpaceIncreased[i]:mapHorizontalSpace[i],pV:mapItemVerticalPadding[i]}),c]),"aria-selected":g,ref:b}),React.createElement("div",{className:cnUserSelectItem("AvatarContainer")},React.createElement(Avatar,{className:cnUserSelectItem("Avatar"),url:f,name:d,monochrome:k}),l&&React.createElement(Transition,{in:g,unmountOnExit:!0,timeout:200,nodeRef:n},function(a){return React.createElement(IconCheck,{className:cnUserSelectItem("CheckIcon",{animate:a}),ref:n})}),!l&&g&&React.createElement(IconCheck,{className:cnUserSelectItem("CheckIcon")})),
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","label","subLabel","avatarUrl","active","hovered","size","indent","disable","multiple"];import"./UserSelectItem.css";import{IconCheck}from"@consta/icons/IconCheck";import React,{forwardRef,useRef}from"react";import{Transition}from"react-transition-group";import{Avatar}from"../../Avatar";import{mapHorizontalSpace,mapHorizontalSpaceIncreased,mapItemVerticalPadding}from"../../ListCanary";import{cnMixSpace}from"../../../mixs/MixSpace";import{cn}from"../../../utils/bem";import{Text}from"../../Text/Text";export var cnUserSelectItem=cn("UserSelectItem");var avatarSizeMap={s:"s",m:"m",l:"m"};export var UserSelectItem=forwardRef(function(a,b){var c=a.className,d=a.label,e=a.subLabel,f=a.avatarUrl,g=a.active,h=a.hovered,i=a.size,j=a.indent,k=a.disable,l=a.multiple,m=_objectWithoutProperties(a,_excluded),n=useRef(null);return React.createElement("div",Object.assign({},m,{className:cnUserSelectItem({active:g,hovered:h,size:i,indent:j,disable:k},[cnMixSpace({pH:"increased"===j?mapHorizontalSpaceIncreased[i]:mapHorizontalSpace[i],pV:mapItemVerticalPadding[i]}),c]),"aria-selected":g,ref:b}),React.createElement("div",{className:cnUserSelectItem("AvatarContainer")},React.createElement(Avatar,{className:cnUserSelectItem("Avatar"),size:avatarSizeMap[i],url:f,name:d,monochrome:k}),l&&React.createElement(Transition,{in:g,unmountOnExit:!0,timeout:200,nodeRef:n},function(a){return React.createElement(IconCheck,{className:cnUserSelectItem("CheckIcon",{animate:a}),ref:n})}),!l&&g&&React.createElement(IconCheck,{className:cnUserSelectItem("CheckIcon")})),React.createElement("div",{className:cnUserSelectItem("Info")},d&&React.createElement(Text,{className:cnUserSelectItem("Label")},d),e&&React.createElement(Text,{className:cnUserSelectItem("SubLabel",{disable:k})},e)))});
|
|
2
2
|
//# sourceMappingURL=UserSelectItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSelectItem.js","names":["IconCheck","React","forwardRef","useRef","Transition","Avatar","mapHorizontalSpace","mapHorizontalSpaceIncreased","mapItemVerticalPadding","cnMixSpace","cn","cnUserSelectItem","UserSelectItem","props","ref","className","label","subLabel","avatarUrl","active","hovered","size","indent","disable","multiple","otherProps","iconRef","pH","pV","animate"],"sources":["../../../../../../src/components/UserSelect/UserSelectItem/UserSelectItem.tsx"],"sourcesContent":["import './UserSelectItem.css';\n\nimport { IconCheck } from '@consta/icons/IconCheck';\nimport React, { forwardRef, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Avatar } from '##/components/Avatar';\nimport {\n mapHorizontalSpace,\n mapHorizontalSpaceIncreased,\n mapItemVerticalPadding,\n} from '##/components/ListCanary';\nimport { cnMixSpace } from '##/mixs/MixSpace';\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\ntype UserSelectItemProps = PropsWithHTMLAttributes<\n {\n label: string;\n active: boolean;\n hovered: boolean;\n size:
|
|
1
|
+
{"version":3,"file":"UserSelectItem.js","names":["IconCheck","React","forwardRef","useRef","Transition","Avatar","mapHorizontalSpace","mapHorizontalSpaceIncreased","mapItemVerticalPadding","cnMixSpace","cn","Text","cnUserSelectItem","avatarSizeMap","s","m","l","UserSelectItem","props","ref","className","label","subLabel","avatarUrl","active","hovered","size","indent","disable","multiple","otherProps","iconRef","pH","pV","animate"],"sources":["../../../../../../src/components/UserSelect/UserSelectItem/UserSelectItem.tsx"],"sourcesContent":["import './UserSelectItem.css';\n\nimport { IconPropSize } from '@consta/icons/Icon';\nimport { IconCheck } from '@consta/icons/IconCheck';\nimport React, { forwardRef, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Avatar } from '##/components/Avatar';\nimport {\n mapHorizontalSpace,\n mapHorizontalSpaceIncreased,\n mapItemVerticalPadding,\n} from '##/components/ListCanary';\nimport { cnMixSpace } from '##/mixs/MixSpace';\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nimport { Text } from '../../Text/Text';\nimport { UserSelectPropSize } from '../helpers';\n\ntype UserSelectItemProps = PropsWithHTMLAttributes<\n {\n label: string;\n active: boolean;\n hovered: boolean;\n size: UserSelectPropSize;\n indent: 'normal' | 'increased';\n subLabel?: string;\n avatarUrl?: string;\n disable?: boolean;\n multiple?: boolean;\n },\n HTMLDivElement\n>;\n\nexport const cnUserSelectItem = cn('UserSelectItem');\n\nconst avatarSizeMap: Record<UserSelectPropSize, IconPropSize> = {\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nexport const UserSelectItem = forwardRef<HTMLDivElement, UserSelectItemProps>(\n (props, ref) => {\n const {\n className,\n label,\n subLabel,\n avatarUrl,\n active,\n hovered,\n size,\n indent,\n disable,\n multiple,\n ...otherProps\n } = props;\n\n const iconRef = useRef<HTMLSpanElement>(null);\n\n return (\n <div\n {...otherProps}\n className={cnUserSelectItem(\n { active, hovered, size, indent, disable },\n [\n cnMixSpace({\n pH:\n indent === 'increased'\n ? mapHorizontalSpaceIncreased[size]\n : mapHorizontalSpace[size],\n pV: mapItemVerticalPadding[size],\n }),\n className,\n ],\n )}\n aria-selected={active}\n ref={ref}\n >\n <div className={cnUserSelectItem('AvatarContainer')}>\n <Avatar\n className={cnUserSelectItem('Avatar')}\n size={avatarSizeMap[size]}\n url={avatarUrl}\n name={label}\n monochrome={disable}\n />\n {multiple && (\n <Transition\n in={active}\n unmountOnExit\n timeout={200}\n nodeRef={iconRef}\n >\n {(animate) => (\n <IconCheck\n className={cnUserSelectItem('CheckIcon', { animate })}\n ref={iconRef}\n />\n )}\n </Transition>\n )}\n {!multiple && active && (\n <IconCheck className={cnUserSelectItem('CheckIcon')} />\n )}\n </div>\n <div className={cnUserSelectItem('Info')}>\n {label && <Text className={cnUserSelectItem('Label')}>{label}</Text>}\n {subLabel && (\n <Text className={cnUserSelectItem('SubLabel', { disable })}>\n {subLabel}\n </Text>\n )}\n </div>\n </div>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.UserSelectValue_multiple{margin-bottom:calc(var(--space-s)/4);margin-right:var(--space-xs)}.UserSelectValue_disabled{opacity:.6}.UserSelectValue:not(.UserSelectValue_multiple).User:hover{background-color:var(--color-control-bg-clear)}
|
|
1
|
+
.UserSelectValue_multiple{margin-bottom:calc(var(--space-s)/4);margin-right:var(--space-xs)}.UserSelectValue_disabled{opacity:.6}.UserSelectValue:not(.UserSelectValue_multiple).User:hover{background-color:var(--color-control-bg-clear)}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import './UserSelectValue.css';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { UserSelectPropSize } from '../helpers';
|
|
3
4
|
type UserValueProps = {
|
|
4
5
|
label: string;
|
|
5
|
-
size:
|
|
6
|
+
size: UserSelectPropSize;
|
|
6
7
|
subLabel?: string;
|
|
7
8
|
avatarUrl?: string;
|
|
8
9
|
handleRemove?: (e: React.SyntheticEvent) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSelectValue.js","names":["IconClose","React","cn","User","cnUserSelectValue","UserSelectValue","props","size","label","subLabel","disabled","handleRemove","avatarUrl","multiple"],"sources":["../../../../../../src/components/UserSelect/UserSelectValue/UserSelectValue.tsx"],"sourcesContent":["import './UserSelectValue.css';\n\nimport { IconClose } from '@consta/icons/IconClose';\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { User } from '../../User/User';\n\ntype UserValueProps = {\n label: string;\n size:
|
|
1
|
+
{"version":3,"file":"UserSelectValue.js","names":["IconClose","React","cn","User","cnUserSelectValue","UserSelectValue","props","size","label","subLabel","disabled","handleRemove","avatarUrl","multiple"],"sources":["../../../../../../src/components/UserSelect/UserSelectValue/UserSelectValue.tsx"],"sourcesContent":["import './UserSelectValue.css';\n\nimport { IconClose } from '@consta/icons/IconClose';\nimport React from 'react';\n\nimport { cn } from '../../../utils/bem';\nimport { User } from '../../User/User';\nimport { UserSelectPropSize } from '../helpers';\n\ntype UserValueProps = {\n label: string;\n size: UserSelectPropSize;\n subLabel?: string;\n avatarUrl?: string;\n handleRemove?: (e: React.SyntheticEvent) => void;\n multiple?: boolean;\n disabled?: boolean;\n children?: never;\n};\n\nexport const cnUserSelectValue = cn('UserSelectValue');\n\nexport const UserSelectValue: React.FC<UserValueProps> = (props) => {\n const { size, label, subLabel, disabled, handleRemove, avatarUrl, multiple } =\n props;\n\n return (\n <User\n className={cnUserSelectValue({ multiple, size, disabled })}\n avatarUrl={avatarUrl}\n name={label}\n info={subLabel}\n size={size}\n view={multiple ? 'ghost' : 'clear'}\n iconRight={!disabled && multiple ? IconClose : undefined}\n onIconRightClick={!disabled && multiple ? handleRemove : undefined}\n />\n );\n};\n"],"mappings":"AAAA,8BAEA,OAASA,SAAT,KAA0B,yBAA1B,CACA,MAAOC,MAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,0BACA,OAASC,IAAT,uBAcA,MAAO,IAAMC,kBAAiB,CAAGF,EAAE,CAAC,iBAAD,CAA5B,CAEP,MAAO,IAAMG,gBAAyC,CAAG,SAACC,CAAD,CAAW,CAClE,GAAQC,EAAR,CACED,CADF,CAAQC,IAAR,CAAcC,CAAd,CACEF,CADF,CAAcE,KAAd,CAAqBC,CAArB,CACEH,CADF,CAAqBG,QAArB,CAA+BC,CAA/B,CACEJ,CADF,CAA+BI,QAA/B,CAAyCC,CAAzC,CACEL,CADF,CAAyCK,YAAzC,CAAuDC,CAAvD,CACEN,CADF,CAAuDM,SAAvD,CAAkEC,CAAlE,CACEP,CADF,CAAkEO,QAAlE,CAGA,MACE,qBAAC,IAAD,EACE,SAAS,CAAET,iBAAiB,CAAC,CAAES,QAAQ,CAARA,CAAF,CAAYN,IAAI,CAAJA,CAAZ,CAAkBG,QAAQ,CAARA,CAAlB,CAAD,CAD9B,CAEE,SAAS,CAAEE,CAFb,CAGE,IAAI,CAAEJ,CAHR,CAIE,IAAI,CAAEC,CAJR,CAKE,IAAI,CAAEF,CALR,CAME,IAAI,CAAEM,CAAQ,CAAG,OAAH,CAAa,OAN7B,CAOE,SAAS,CAAE,CAACH,CAAD,EAAaG,CAAb,CAAwBb,SAAxB,OAPb,CAQE,gBAAgB,CAAE,CAACU,CAAD,EAAaG,CAAb,CAAwBF,CAAxB,OARpB,EAWH,CAhBM"}
|
|
@@ -33,10 +33,11 @@ type UserSelectPropOnChange<ITEM, MULTIPLE extends boolean> = (value: (MULTIPLE
|
|
|
33
33
|
type UserSelectPropValue<ITEM, MULTIPLE extends boolean> = (MULTIPLE extends true ? ITEM[] : ITEM) | null | undefined;
|
|
34
34
|
export type UserSelectPropRenderItem<ITEM> = (props: RenderItemProps<ITEM>) => React.ReactNode | null;
|
|
35
35
|
export type UserSelectPropRenderValue<ITEM> = (props: UserSelectRenderValueProps<ITEM>) => React.ReactNode | null;
|
|
36
|
+
export type UserSelectPropSize = Exclude<PropSize, 'xs'>;
|
|
36
37
|
export type UserSelectProps<ITEM = UserSelectItemDefault, GROUP = UserSelectGroupDefault, MULTIPLE extends boolean = false> = PropsWithHTMLAttributesAndRef<{
|
|
37
38
|
disabled?: boolean;
|
|
38
39
|
form?: PropForm;
|
|
39
|
-
size?:
|
|
40
|
+
size?: UserSelectPropSize;
|
|
40
41
|
view?: PropView;
|
|
41
42
|
dropdownForm?: 'default' | 'brick' | 'round';
|
|
42
43
|
placeholder?: string;
|
|
@@ -115,7 +116,7 @@ export declare const isNotMultipleParams: <ITEM, GROUP>(params: UserSelectProps<
|
|
|
115
116
|
export declare function withDefaultGetters<ITEM = UserSelectItemDefault, GROUP = UserSelectGroupDefault, MULTIPLE extends boolean = false>(props: UserSelectProps<ITEM, GROUP, MULTIPLE>): {
|
|
116
117
|
disabled?: boolean;
|
|
117
118
|
form?: PropForm;
|
|
118
|
-
size?:
|
|
119
|
+
size?: UserSelectPropSize;
|
|
119
120
|
view?: PropView;
|
|
120
121
|
dropdownForm?: "default" | "brick" | "round";
|
|
121
122
|
placeholder?: string;
|
|
@@ -190,6 +191,6 @@ export declare function withDefaultGetters<ITEM = UserSelectItemDefault, GROUP =
|
|
|
190
191
|
getItemAvatarUrl: UserSelectPropGetItemAvatarUrl<UserSelectItemDefault> | UserSelectPropGetItemAvatarUrl<ITEM>;
|
|
191
192
|
};
|
|
192
193
|
export declare const searchCompare: (searchValue: string, compare?: string) => boolean;
|
|
193
|
-
export declare const clearSizeMap: Record<
|
|
194
|
-
export declare const iconSizeMap: Record<
|
|
194
|
+
export declare const clearSizeMap: Record<UserSelectPropSize, IconPropSize>;
|
|
195
|
+
export declare const iconSizeMap: Record<UserSelectPropSize, IconPropSize>;
|
|
195
196
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";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}export var defaultGetItemKey=function(a){return a.id};export var defaultGetItemLabel=function(a){return a.label};export var defaultGetItemSubLabel=function(a){return a.subLabel};export var defaultGetItemAvatarUrl=function(a){return a.avatarUrl};export var defaultGetItemGroupKey=function(a){return a.groupId};export var defaultGetItemDisabled=function(a){return a.disabled};export var defaultGetGroupKey=function(a){return a.id};export var defaultGetGroupLabel=function(a){return a.label};export var isMultipleParams=function(a){return!!a.multiple};export var isNotMultipleParams=function(a){return!a.multiple};export function withDefaultGetters(a){return _objectSpread(_objectSpread({},a),{},{getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemKey:a.getItemKey||defaultGetItemKey,getItemGroupKey:a.getItemGroupKey||defaultGetItemGroupKey,getItemDisabled:a.getItemDisabled||defaultGetItemDisabled,getGroupLabel:a.getGroupLabel||defaultGetGroupLabel,getGroupKey:a.getGroupKey||defaultGetGroupKey,getItemSubLabel:a.getItemSubLabel||defaultGetItemSubLabel,getItemAvatarUrl:a.getItemAvatarUrl||defaultGetItemAvatarUrl})}export var searchCompare=function(a,b){return!!b&&-1!==b.toLocaleLowerCase().indexOf(a.toLocaleLowerCase())};export var clearSizeMap={
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";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}export var defaultGetItemKey=function(a){return a.id};export var defaultGetItemLabel=function(a){return a.label};export var defaultGetItemSubLabel=function(a){return a.subLabel};export var defaultGetItemAvatarUrl=function(a){return a.avatarUrl};export var defaultGetItemGroupKey=function(a){return a.groupId};export var defaultGetItemDisabled=function(a){return a.disabled};export var defaultGetGroupKey=function(a){return a.id};export var defaultGetGroupLabel=function(a){return a.label};export var isMultipleParams=function(a){return!!a.multiple};export var isNotMultipleParams=function(a){return!a.multiple};export function withDefaultGetters(a){return _objectSpread(_objectSpread({},a),{},{getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemKey:a.getItemKey||defaultGetItemKey,getItemGroupKey:a.getItemGroupKey||defaultGetItemGroupKey,getItemDisabled:a.getItemDisabled||defaultGetItemDisabled,getGroupLabel:a.getGroupLabel||defaultGetGroupLabel,getGroupKey:a.getGroupKey||defaultGetGroupKey,getItemSubLabel:a.getItemSubLabel||defaultGetItemSubLabel,getItemAvatarUrl:a.getItemAvatarUrl||defaultGetItemAvatarUrl})}export var searchCompare=function(a,b){return!!b&&-1!==b.toLocaleLowerCase().indexOf(a.toLocaleLowerCase())};export var clearSizeMap={s:"s",m:"s",l:"m"};export var iconSizeMap={s:"s",m:"m",l:"m"};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemSubLabel","subLabel","defaultGetItemAvatarUrl","avatarUrl","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","isMultipleParams","params","multiple","isNotMultipleParams","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","getItemSubLabel","getItemAvatarUrl","searchCompare","searchValue","compare","toLocaleLowerCase","indexOf","clearSizeMap","
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemSubLabel","subLabel","defaultGetItemAvatarUrl","avatarUrl","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","isMultipleParams","params","multiple","isNotMultipleParams","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","getItemSubLabel","getItemAvatarUrl","searchCompare","searchValue","compare","toLocaleLowerCase","indexOf","clearSizeMap","s","m","l","iconSizeMap"],"sources":["../../../../../src/components/UserSelect/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n PropForm,\n PropSize,\n PropStatus,\n PropView,\n RenderItemProps,\n} from '../SelectComponents/types';\n\nexport type UserSelectItemDefault = {\n label: string;\n id: string | number;\n subLabel?: string;\n avatarUrl?: string;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type UserSelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\ntype UserSelectRenderValueProps<ITEM> = {\n item: ITEM;\n handleRemove?: (e: React.SyntheticEvent) => void;\n};\n\nexport type UserSelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type UserSelectPropGetItemSubLabel<ITEM> = (\n item: ITEM,\n) => string | undefined;\nexport type UserSelectPropGetItemAvatarUrl<ITEM> = (\n item: ITEM,\n) => string | undefined;\nexport type UserSelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type UserSelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type UserSelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type UserSelectPropGetGroupKey<GROUP> = (\n group: GROUP,\n) => string | number;\nexport type UserSelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\nexport type UserSelectPropSearchFunction<ITEM> = (\n item: ITEM,\n searchValue: string,\n) => boolean;\ntype UserSelectPropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\ntype UserSelectPropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type UserSelectPropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\nexport type UserSelectPropRenderValue<ITEM> = (\n props: UserSelectRenderValueProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type UserSelectPropSize = Exclude<PropSize, 'xs'>;\n\nexport type UserSelectProps<\n ITEM = UserSelectItemDefault,\n GROUP = UserSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n disabled?: boolean;\n form?: PropForm;\n size?: UserSelectPropSize;\n view?: PropView;\n dropdownForm?: 'default' | 'brick' | 'round';\n placeholder?: string;\n ariaLabel?: string;\n dropdownClassName?: string;\n status?: PropStatus;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n name?: string;\n items: ITEM[];\n required?: boolean;\n isLoading?: boolean;\n renderItem?: UserSelectPropRenderItem<ITEM>;\n renderValue?: UserSelectPropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: (label: string, props: { e: React.SyntheticEvent }) => void;\n inputRef?: React.RefObject<HTMLInputElement>;\n labelForNotFound?: string;\n labelForCreate?: string;\n labelForEmptyItems?: string;\n searchFunction?: UserSelectPropSearchFunction<ITEM>;\n searchValue?: string;\n multiple?: MULTIPLE;\n value?: UserSelectPropValue<ITEM, MULTIPLE>;\n onChange: UserSelectPropOnChange<ITEM, MULTIPLE>;\n groups?: GROUP[];\n getItemLabel?: UserSelectPropGetItemLabel<ITEM>;\n getItemSubLabel?: UserSelectPropGetItemSubLabel<ITEM>;\n getItemAvatarUrl?: UserSelectPropGetItemAvatarUrl<ITEM>;\n getItemKey?: UserSelectPropGetItemKey<ITEM>;\n getItemGroupKey?: UserSelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: UserSelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: UserSelectPropGetGroupLabel<GROUP>;\n getGroupKey?: UserSelectPropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n onSearchValueChange?: (value: string) => void;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n dropdownViewportRef?: React.RefObject<HTMLElement>;\n },\n HTMLDivElement\n> &\n (ITEM extends { label: UserSelectItemDefault['label'] }\n ? {}\n : { getItemLabel: UserSelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: UserSelectItemDefault['id'] }\n ? {}\n : { getItemKey: UserSelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: UserSelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: UserSelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: UserSelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: UserSelectPropGetGroupKey<GROUP> });\n\nexport type UserSelectComponent = <\n ITEM = UserSelectItemDefault,\n GROUP = UserSelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(\n props: UserSelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactNode | null;\n\nexport const defaultGetItemKey: UserSelectPropGetItemKey<\n UserSelectItemDefault\n> = (item) => item.id;\nexport const defaultGetItemLabel: UserSelectPropGetItemLabel<\n UserSelectItemDefault\n> = (item) => item.label;\nexport const defaultGetItemSubLabel: UserSelectPropGetItemSubLabel<\n UserSelectItemDefault\n> = (item) => item.subLabel;\nexport const defaultGetItemAvatarUrl: UserSelectPropGetItemAvatarUrl<\n UserSelectItemDefault\n> = (item) => item.avatarUrl;\nexport const defaultGetItemGroupKey: UserSelectPropGetItemGroupKey<\n UserSelectItemDefault\n> = (item) => item.groupId;\nexport const defaultGetItemDisabled: UserSelectPropGetItemDisabled<\n UserSelectItemDefault\n> = (item) => item.disabled;\n\nexport const defaultGetGroupKey: UserSelectPropGetGroupKey<\n UserSelectGroupDefault\n> = (group) => group.id;\nexport const defaultGetGroupLabel: UserSelectPropGetGroupLabel<\n UserSelectGroupDefault\n> = (group) => group.label;\n\nexport const isMultipleParams = <ITEM, GROUP>(\n params: UserSelectProps<ITEM, GROUP, boolean>,\n): params is UserSelectProps<ITEM, GROUP, true> => {\n return !!params.multiple;\n};\n\nexport const isNotMultipleParams = <ITEM, GROUP>(\n params: UserSelectProps<ITEM, GROUP, boolean>,\n): params is UserSelectProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nexport function withDefaultGetters<\n ITEM = UserSelectItemDefault,\n GROUP = UserSelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(props: UserSelectProps<ITEM, GROUP, MULTIPLE>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n getItemSubLabel: props.getItemSubLabel || defaultGetItemSubLabel,\n getItemAvatarUrl: props.getItemAvatarUrl || defaultGetItemAvatarUrl,\n };\n}\n\nexport const searchCompare = (\n searchValue: string,\n compare?: string,\n): boolean => {\n if (!compare) {\n return false;\n }\n\n return (\n compare.toLocaleLowerCase().indexOf(searchValue.toLocaleLowerCase()) !== -1\n );\n};\n\nexport const clearSizeMap: Record<UserSelectPropSize, IconPropSize> = {\n s: 's',\n m: 's',\n l: 'm',\n};\n\nexport const iconSizeMap: Record<UserSelectPropSize, IconPropSize> = {\n s: 's',\n m: 'm',\n l: 'm',\n};\n"],"mappings":"qqBAwJA,MAAO,IAAMA,kBAEZ,CAAG,SAACC,CAAD,QAAUA,EAAI,CAACC,EAAf,CAFG,CAGP,MAAO,IAAMC,oBAEZ,CAAG,SAACF,CAAD,QAAUA,EAAI,CAACG,KAAf,CAFG,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACJ,CAAD,QAAUA,EAAI,CAACK,QAAf,CAFG,CAGP,MAAO,IAAMC,wBAEZ,CAAG,SAACN,CAAD,QAAUA,EAAI,CAACO,SAAf,CAFG,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACR,CAAD,QAAUA,EAAI,CAACS,OAAf,CAFG,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACV,CAAD,QAAUA,EAAI,CAACW,QAAf,CAFG,CAIP,MAAO,IAAMC,mBAEZ,CAAG,SAACC,CAAD,QAAWA,EAAK,CAACZ,EAAjB,CAFG,CAGP,MAAO,IAAMa,qBAEZ,CAAG,SAACD,CAAD,QAAWA,EAAK,CAACV,KAAjB,CAFG,CAIP,MAAO,IAAMY,iBAAgB,CAAG,SAC9BC,CAD8B,CAEmB,CACjD,MAAO,CAAC,CAACA,CAAM,CAACC,QACjB,CAJM,CAMP,MAAO,IAAMC,oBAAmB,CAAG,SACjCF,CADiC,CAEiB,CAClD,MAAO,CAACA,CAAM,CAACC,QAChB,CAJM,CAMP,MAAO,SAASE,mBAAT,CAILC,CAJK,CAI0C,CAC/C,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBnB,mBAFtC,CAGEoB,UAAU,CAAEF,CAAK,CAACE,UAAN,EAAoBvB,iBAHlC,CAIEwB,eAAe,CAAEH,CAAK,CAACG,eAAN,EAAyBf,sBAJ5C,CAKEgB,eAAe,CAAEJ,CAAK,CAACI,eAAN,EAAyBd,sBAL5C,CAMEe,aAAa,CAAEL,CAAK,CAACK,aAAN,EAAuBX,oBANxC,CAOEY,WAAW,CAAEN,CAAK,CAACM,WAAN,EAAqBd,kBAPpC,CAQEe,eAAe,CAAEP,CAAK,CAACO,eAAN,EAAyBvB,sBAR5C,CASEwB,gBAAgB,CAAER,CAAK,CAACQ,gBAAN,EAA0BtB,uBAT9C,EAWD,CAED,MAAO,IAAMuB,cAAa,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAGf,SACPA,CADO,EAM+D,CAAC,CAA1E,GAAAA,CAAO,CAACC,iBAAR,GAA4BC,OAA5B,CAAoCH,CAAW,CAACE,iBAAZ,EAApC,CAEH,CAXM,CAaP,MAAO,IAAME,aAAsD,CAAG,CACpEC,CAAC,CAAE,GADiE,CAEpEC,CAAC,CAAE,GAFiE,CAGpEC,CAAC,CAAE,GAHiE,CAA/D,CAMP,MAAO,IAAMC,YAAqD,CAAG,CACnEH,CAAC,CAAE,GADgE,CAEnEC,CAAC,CAAE,GAFgE,CAGnEC,CAAC,CAAE,GAHgE,CAA9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const clearUndefined: <T extends Record<string, unknown>>(obj: T) => T;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";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}export var clearUndefined=function(a){var b=_objectSpread({},a);for(var c in b)void 0===b[c]&&delete b[c];return b};
|
|
2
|
+
//# sourceMappingURL=clearUndefined.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearUndefined.js","names":["clearUndefined","obj","result","key"],"sources":["../../../../../src/utils/object/clearUndefined.ts"],"sourcesContent":["export const clearUndefined = <T extends Record<string, unknown>>(\n obj: T,\n): T => {\n const result = { ...obj };\n for (const key in result) {\n if (result[key] === undefined) {\n delete result[key];\n }\n }\n return result as T;\n};\n"],"mappings":"qqBAAA,MAAO,IAAMA,eAAc,CAAG,SAC5BC,CAD4B,CAEtB,CACN,GAAMC,EAAM,kBAAQD,CAAR,CAAZ,CACA,IAAK,GAAME,EAAX,GAAkBD,EAAlB,CACM,SAAAA,CAAM,CAACC,CAAD,CADZ,EAEI,MAAOD,EAAM,CAACC,CAAD,CAFjB,CAKA,MAAOD,EACR,CAVM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export*from"./isEmpty";export*from"./isEq";export*from"./objectWithDefault";export*from"./pick";
|
|
1
|
+
export*from"./isEmpty";export*from"./isEq";export*from"./objectWithDefault";export*from"./pick";export*from"./clearUndefined";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/utils/object/index.ts"],"sourcesContent":["export * from './isEmpty';\nexport * from './isEq';\nexport * from './objectWithDefault';\nexport * from './pick';\n"],"mappings":"AAAA,uBACA,oBACA,iCACA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/utils/object/index.ts"],"sourcesContent":["export * from './isEmpty';\nexport * from './isEq';\nexport * from './objectWithDefault';\nexport * from './pick';\nexport * from './clearUndefined';\n"],"mappings":"AAAA,uBACA,oBACA,iCACA,oBACA"}
|