@consta/uikit 5.28.5 → 5.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/TextAreaAutoSize/index.d.ts +1 -0
  2. package/TextAreaAutoSize/index.js +1 -0
  3. package/__internal__/src/components/AutoComplete/AutoComplete.js +1 -1
  4. package/__internal__/src/components/AutoComplete/AutoComplete.js.map +1 -1
  5. package/__internal__/src/components/AutoComplete/helpers.d.ts +1 -0
  6. package/__internal__/src/components/AutoComplete/types.d.ts +1 -0
  7. package/__internal__/src/components/AutoComplete/types.js.map +1 -1
  8. package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeText/AutoCompleteTypeText.js +1 -1
  9. package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeText/AutoCompleteTypeText.js.map +1 -1
  10. package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeTextArray/AutoCompleteTypeTextArray.js +1 -1
  11. package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeTextArray/AutoCompleteTypeTextArray.js.map +1 -1
  12. package/__internal__/src/components/AutoCompleteCanary/helpers.d.ts +1 -0
  13. package/__internal__/src/components/AutoCompleteCanary/types.d.ts +1 -0
  14. package/__internal__/src/components/AutoCompleteCanary/types.js.map +1 -1
  15. package/__internal__/src/components/Combobox/Combobox.js +1 -1
  16. package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
  17. package/__internal__/src/components/Combobox/helpers.d.ts +3 -1
  18. package/__internal__/src/components/Combobox/helpers.js.map +1 -1
  19. package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js +1 -1
  20. package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js.map +1 -1
  21. package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js +1 -1
  22. package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js.map +1 -1
  23. package/__internal__/src/components/ContextMenu/helpers.d.ts +4 -2
  24. package/__internal__/src/components/ContextMenu/types.d.ts +2 -0
  25. package/__internal__/src/components/ContextMenu/types.js.map +1 -1
  26. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.d.ts +1 -0
  27. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js +1 -1
  28. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js.map +1 -1
  29. package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
  30. package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
  31. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
  32. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
  33. package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
  34. package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
  35. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
  36. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
  37. package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
  38. package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
  39. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
  40. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
  41. package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
  42. package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
  43. package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
  44. package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
  45. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
  46. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
  47. package/__internal__/src/components/DatePicker/types.d.ts +1 -0
  48. package/__internal__/src/components/DatePicker/types.js.map +1 -1
  49. package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js +1 -1
  50. package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js.map +1 -1
  51. package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js +1 -1
  52. package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js.map +1 -1
  53. package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.d.ts +1 -0
  54. package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js +1 -1
  55. package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js.map +1 -1
  56. package/__internal__/src/components/FlatSelect/types.d.ts +1 -0
  57. package/__internal__/src/components/FlatSelect/types.js.map +1 -1
  58. package/__internal__/src/components/Select/Select.js +1 -1
  59. package/__internal__/src/components/Select/Select.js.map +1 -1
  60. package/__internal__/src/components/Select/helpers.d.ts +3 -1
  61. package/__internal__/src/components/Select/helpers.js.map +1 -1
  62. package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.d.ts +1 -0
  63. package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.js.map +1 -1
  64. package/__internal__/src/components/SelectCanary/SelectMultiple/SelectMultiple.js +1 -1
  65. package/__internal__/src/components/SelectCanary/SelectMultiple/SelectMultiple.js.map +1 -1
  66. package/__internal__/src/components/SelectCanary/SelectPopover/SelectPopover.d.ts +1 -0
  67. package/__internal__/src/components/SelectCanary/SelectPopover/SelectPopover.js.map +1 -1
  68. package/__internal__/src/components/SelectCanary/SelectSingle/SelectSingle.js +1 -1
  69. package/__internal__/src/components/SelectCanary/SelectSingle/SelectSingle.js.map +1 -1
  70. package/__internal__/src/components/SelectCanary/helpers.d.ts +2 -1
  71. package/__internal__/src/components/SelectCanary/types.d.ts +1 -0
  72. package/__internal__/src/components/SelectCanary/types.js.map +1 -1
  73. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.d.ts +1 -0
  74. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js +1 -1
  75. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js.map +1 -1
  76. package/__internal__/src/components/TagBase/TagBase.d.ts +1 -1
  77. package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.css +1 -0
  78. package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.d.ts +11 -0
  79. package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js +2 -0
  80. package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js.map +1 -0
  81. package/__internal__/src/components/TextAreaAutoSize/index.d.ts +1 -0
  82. package/__internal__/src/components/TextAreaAutoSize/index.js +2 -0
  83. package/__internal__/src/components/TextAreaAutoSize/index.js.map +1 -0
  84. package/__internal__/src/components/TextField/TextField.js +1 -1
  85. package/__internal__/src/components/TextField/TextField.js.map +1 -1
  86. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.css +1 -1
  87. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js +1 -1
  88. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js.map +1 -1
  89. package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
  90. package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
  91. package/__internal__/src/components/UserSelect/helpers.d.ts +3 -1
  92. package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
  93. package/__internal__/src/utils/objectCompare.d.ts +7 -0
  94. package/__internal__/src/utils/objectCompare.js +2 -0
  95. package/__internal__/src/utils/objectCompare.js.map +1 -0
  96. package/__internal__/src/utils/state/index.d.ts +3 -0
  97. package/__internal__/src/utils/state/index.js +1 -1
  98. package/__internal__/src/utils/state/index.js.map +1 -1
  99. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerTypeYearRange.js","names":["addYears","startOfDecade","React","forwardRef","useEffect","useRef","useState","useClickOutside","useForkRef","DatePickerDropdown","DatePickerFieldTypeYearRange","getDropdownZIndex","normalizeRangeValue","datePickerPropDateTimeViewDefault","useCalendarVisible","useCurrentVisibleDate","DatePickerTypeYearRange","props","ref","events","dateTimeView","locale","dropdownForm","onFocus","onBlur","dropdownClassName","dropdownRef","leftSide","rightSide","currentVisibleDateProp","currentVisibleDate","onChangeCurrentVisibleDate","renderAdditionalControls","inputRef","name","placeholder","onDropdownOpen","dropdownOpen","ignoreOutsideClicksRefs","disabled","disableDates","fieldProps","startFieldRef","endFieldRef","startFieldInputRef","endFieldInputRef","calendarRef","fieldFocused","setFieldFocused","startFocused","endFocused","startRef","endRef","calendarVisible","setCalendarVisible","maxDate","minDate","value","startOfUnit","rangeIndex","setCurrentVisibleDate","newVisibleDate","getTime","isActive","ignoreClicksInsideRefs","handler","off","startFieldOnFocusHandler","e","Array","isArray","endFieldOnFocusHandler","startFieldOnBlurHandler","endFieldOnBlurHandler","on","handleChange","newValue","onChange","style"],"sources":["../../../../../../src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.tsx"],"sourcesContent":["import { addYears, startOfDecade } from 'date-fns';\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useForkRef } from '##/hooks/useForkRef';\n\nimport {\n DatePickerDropdown,\n DatePickerDropdownPropOnChange,\n} from '../DatePickerDropdown/DatePickerDropdown';\nimport { DatePickerFieldTypeYearRange } from '../DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange';\nimport { getDropdownZIndex, normalizeRangeValue } from '../helpers';\nimport {\n datePickerPropDateTimeViewDefault,\n DatePickerTypeComponent,\n} from '../types';\nimport { useCalendarVisible } from '../useCalendarVisible';\nimport { useCurrentVisibleDate } from '../useCurrentVisibleDate';\n\nexport const DatePickerTypeYearRange: DatePickerTypeComponent<'date-range'> =\n forwardRef((props, ref) => {\n const {\n events,\n dateTimeView = datePickerPropDateTimeViewDefault,\n locale,\n dropdownForm,\n onFocus,\n onBlur,\n dropdownClassName,\n dropdownRef,\n leftSide,\n rightSide,\n currentVisibleDate: currentVisibleDateProp,\n onChangeCurrentVisibleDate,\n renderAdditionalControls,\n inputRef,\n name,\n placeholder,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n disabled,\n disableDates,\n ...fieldProps\n } = props;\n\n const startFieldRef = useRef<HTMLDivElement>(null);\n const endFieldRef = useRef<HTMLDivElement>(null);\n const startFieldInputRef = useRef<HTMLInputElement>(null);\n const endFieldInputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [fieldFocused, setFieldFocused] = useState<0 | 1 | undefined>();\n\n const startFocused = fieldFocused === 0;\n const endFocused = fieldFocused === 1;\n\n const handleChange: DatePickerDropdownPropOnChange = (value, { e }) => {\n if (startFocused) {\n const newValue = normalizeRangeValue([value, props?.value?.[1]]);\n props.onChange?.(newValue, {\n e,\n });\n }\n if (endFocused) {\n const newValue = normalizeRangeValue([props?.value?.[0], value]);\n props.onChange?.(newValue, {\n e,\n });\n }\n };\n\n const [calendarVisible, setCalendarVisible] = useCalendarVisible({\n dropdownOpen,\n onDropdownOpen,\n disabled,\n startRef: startFieldInputRef,\n endRef: endFieldInputRef,\n });\n\n const [currentVisibleDate, setCurrentVisibleDate] = useCurrentVisibleDate({\n currentVisibleDate: currentVisibleDateProp,\n maxDate: props.maxDate,\n minDate: props.minDate,\n value: props.value,\n startOfUnit: startOfDecade,\n onChangeCurrentVisibleDate,\n calendarVisible,\n rangeIndex: fieldFocused,\n });\n\n const startFieldOnBlurHandler = (e: React.FocusEvent<HTMLElement>) =>\n Array.isArray(onBlur) ? onBlur[0]?.(e) : onBlur?.(e);\n\n const endFieldOnBlurHandler = (e: React.FocusEvent<HTMLElement>) =>\n Array.isArray(onBlur) ? onBlur[1]?.(e) : onBlur?.(e);\n\n const startFieldOnFocusHandler = (e: React.FocusEvent<HTMLElement>) => {\n setFieldFocused(0);\n Array.isArray(onFocus) ? onFocus[0]?.(e) : onFocus?.(e);\n };\n\n const endFieldOnFocusHandler = (e: React.FocusEvent<HTMLElement>) => {\n setFieldFocused(1);\n Array.isArray(onFocus) ? onFocus[1]?.(e) : onFocus?.(e);\n };\n\n // эффект для того чтобы календарь переключался при вводе с клавиатуры\n useEffect(() => {\n if (props.value?.[0] && dateTimeView === 'classic' && startFocused) {\n const newVisibleDate = startOfDecade(props.value[0]);\n if (newVisibleDate.getTime() !== currentVisibleDate?.getTime()) {\n setCurrentVisibleDate(newVisibleDate);\n }\n return;\n }\n if (props.value?.[0] && dateTimeView !== 'classic' && startFocused) {\n const newVisibleDate = startOfDecade(props.value[0]);\n if (\n newVisibleDate.getTime() !== currentVisibleDate?.getTime() &&\n newVisibleDate.getTime() !==\n (currentVisibleDate && addYears(currentVisibleDate, 10).getTime())\n ) {\n setCurrentVisibleDate(newVisibleDate);\n }\n }\n }, [props.value?.[0]?.getTime(), calendarVisible, startFocused]);\n\n useEffect(() => {\n if (props.value?.[1] && dateTimeView === 'classic' && endFocused) {\n const newVisibleDate = startOfDecade(props.value[1]);\n if (newVisibleDate.getTime() !== currentVisibleDate?.getTime()) {\n setCurrentVisibleDate(newVisibleDate);\n }\n return;\n }\n if (props.value?.[1] && dateTimeView !== 'classic' && endFocused) {\n const newVisibleDate = startOfDecade(props.value[1]);\n if (\n newVisibleDate.getTime() !== currentVisibleDate?.getTime() &&\n newVisibleDate.getTime() !==\n (currentVisibleDate && addYears(currentVisibleDate, 10).getTime())\n ) {\n setCurrentVisibleDate(addYears(newVisibleDate, -10));\n }\n }\n }, [props.value?.[1]?.getTime(), calendarVisible, endFocused]);\n\n useClickOutside({\n isActive: calendarVisible,\n ignoreClicksInsideRefs: [\n startFieldRef,\n endFieldRef,\n calendarRef,\n ...(ignoreOutsideClicksRefs ?? []),\n ],\n handler: () => {\n setFieldFocused(undefined);\n setCalendarVisible.off();\n },\n });\n\n return (\n <>\n <DatePickerFieldTypeYearRange\n {...fieldProps}\n ref={ref}\n startFieldRef={startFieldRef}\n endFieldRef={endFieldRef}\n startFieldInputRef={useForkRef([startFieldInputRef, inputRef?.[0]])}\n endFieldInputRef={useForkRef([endFieldInputRef, inputRef?.[1]])}\n startFieldOnFocus={startFieldOnFocusHandler}\n endFieldOnFocus={endFieldOnFocusHandler}\n startFieldLeftSide={\n Array.isArray(leftSide) ? leftSide?.[0] : leftSide\n }\n startFieldRightSide={\n Array.isArray(rightSide) ? rightSide?.[0] : undefined\n }\n endFieldLeftSide={Array.isArray(leftSide) ? leftSide?.[1] : undefined}\n endFieldRightSide={\n Array.isArray(rightSide) ? rightSide?.[1] : rightSide\n }\n startFieldOnBlur={startFieldOnBlurHandler}\n endFieldOnBlur={endFieldOnBlurHandler}\n startFocused={startFocused}\n endFocused={endFocused}\n startFieldOnClick={setCalendarVisible.on}\n endFieldOnClick={setCalendarVisible.on}\n startFieldName={Array.isArray(name) ? name[0] : `${name}_start`}\n endFieldName={Array.isArray(name) ? name[1] : `${name}_end`}\n disabled={disabled}\n startFieldPlaceholder={\n Array.isArray(placeholder) ? placeholder?.[0] : placeholder\n }\n endFieldPlaceholder={\n Array.isArray(placeholder) ? placeholder?.[1] : placeholder\n }\n />\n <DatePickerDropdown\n type=\"year\"\n ref={useForkRef([dropdownRef, calendarRef])}\n anchorRef={startFieldRef}\n isOpen={calendarVisible}\n onChangeCurrentVisibleDate={setCurrentVisibleDate}\n currentVisibleDate={currentVisibleDate}\n value={props.value || undefined}\n view={dateTimeView}\n events={events}\n locale={locale}\n className={dropdownClassName}\n minDate={props.minDate}\n maxDate={props.maxDate}\n form={dropdownForm}\n onChange={handleChange}\n renderAdditionalControls={renderAdditionalControls}\n zIndex={getDropdownZIndex(props.style)}\n disableDates={disableDates}\n />\n </>\n );\n });\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePickerTypeYearRange.js","names":["addYears","startOfDecade","React","forwardRef","useEffect","useRef","useState","useClickOutside","useForkRef","DatePickerDropdown","DatePickerFieldTypeYearRange","getDropdownZIndex","normalizeRangeValue","datePickerPropDateTimeViewDefault","useCalendarVisible","useCurrentVisibleDate","DatePickerTypeYearRange","props","ref","events","dateTimeView","locale","dropdownForm","onFocus","onBlur","dropdownClassName","dropdownRef","leftSide","rightSide","currentVisibleDateProp","currentVisibleDate","onChangeCurrentVisibleDate","renderAdditionalControls","inputRef","name","placeholder","onDropdownOpen","dropdownOpen","ignoreOutsideClicksRefs","disabled","disableDates","dropdownViewportRef","fieldProps","startFieldRef","endFieldRef","startFieldInputRef","endFieldInputRef","calendarRef","fieldFocused","setFieldFocused","startFocused","endFocused","startRef","endRef","calendarVisible","setCalendarVisible","maxDate","minDate","value","startOfUnit","rangeIndex","setCurrentVisibleDate","newVisibleDate","getTime","isActive","ignoreClicksInsideRefs","handler","off","startFieldOnFocusHandler","e","Array","isArray","endFieldOnFocusHandler","startFieldOnBlurHandler","endFieldOnBlurHandler","on","handleChange","newValue","onChange","style"],"sources":["../../../../../../src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.tsx"],"sourcesContent":["import { addYears, startOfDecade } from 'date-fns';\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useForkRef } from '##/hooks/useForkRef';\n\nimport {\n DatePickerDropdown,\n DatePickerDropdownPropOnChange,\n} from '../DatePickerDropdown/DatePickerDropdown';\nimport { DatePickerFieldTypeYearRange } from '../DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange';\nimport { getDropdownZIndex, normalizeRangeValue } from '../helpers';\nimport {\n datePickerPropDateTimeViewDefault,\n DatePickerTypeComponent,\n} from '../types';\nimport { useCalendarVisible } from '../useCalendarVisible';\nimport { useCurrentVisibleDate } from '../useCurrentVisibleDate';\n\nexport const DatePickerTypeYearRange: DatePickerTypeComponent<'date-range'> =\n forwardRef((props, ref) => {\n const {\n events,\n dateTimeView = datePickerPropDateTimeViewDefault,\n locale,\n dropdownForm,\n onFocus,\n onBlur,\n dropdownClassName,\n dropdownRef,\n leftSide,\n rightSide,\n currentVisibleDate: currentVisibleDateProp,\n onChangeCurrentVisibleDate,\n renderAdditionalControls,\n inputRef,\n name,\n placeholder,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n disabled,\n disableDates,\n dropdownViewportRef,\n ...fieldProps\n } = props;\n\n const startFieldRef = useRef<HTMLDivElement>(null);\n const endFieldRef = useRef<HTMLDivElement>(null);\n const startFieldInputRef = useRef<HTMLInputElement>(null);\n const endFieldInputRef = useRef<HTMLInputElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const [fieldFocused, setFieldFocused] = useState<0 | 1 | undefined>();\n\n const startFocused = fieldFocused === 0;\n const endFocused = fieldFocused === 1;\n\n const handleChange: DatePickerDropdownPropOnChange = (value, { e }) => {\n if (startFocused) {\n const newValue = normalizeRangeValue([value, props?.value?.[1]]);\n props.onChange?.(newValue, {\n e,\n });\n }\n if (endFocused) {\n const newValue = normalizeRangeValue([props?.value?.[0], value]);\n props.onChange?.(newValue, {\n e,\n });\n }\n };\n\n const [calendarVisible, setCalendarVisible] = useCalendarVisible({\n dropdownOpen,\n onDropdownOpen,\n disabled,\n startRef: startFieldInputRef,\n endRef: endFieldInputRef,\n });\n\n const [currentVisibleDate, setCurrentVisibleDate] = useCurrentVisibleDate({\n currentVisibleDate: currentVisibleDateProp,\n maxDate: props.maxDate,\n minDate: props.minDate,\n value: props.value,\n startOfUnit: startOfDecade,\n onChangeCurrentVisibleDate,\n calendarVisible,\n rangeIndex: fieldFocused,\n });\n\n const startFieldOnBlurHandler = (e: React.FocusEvent<HTMLElement>) =>\n Array.isArray(onBlur) ? onBlur[0]?.(e) : onBlur?.(e);\n\n const endFieldOnBlurHandler = (e: React.FocusEvent<HTMLElement>) =>\n Array.isArray(onBlur) ? onBlur[1]?.(e) : onBlur?.(e);\n\n const startFieldOnFocusHandler = (e: React.FocusEvent<HTMLElement>) => {\n setFieldFocused(0);\n Array.isArray(onFocus) ? onFocus[0]?.(e) : onFocus?.(e);\n };\n\n const endFieldOnFocusHandler = (e: React.FocusEvent<HTMLElement>) => {\n setFieldFocused(1);\n Array.isArray(onFocus) ? onFocus[1]?.(e) : onFocus?.(e);\n };\n\n // эффект для того чтобы календарь переключался при вводе с клавиатуры\n useEffect(() => {\n if (props.value?.[0] && dateTimeView === 'classic' && startFocused) {\n const newVisibleDate = startOfDecade(props.value[0]);\n if (newVisibleDate.getTime() !== currentVisibleDate?.getTime()) {\n setCurrentVisibleDate(newVisibleDate);\n }\n return;\n }\n if (props.value?.[0] && dateTimeView !== 'classic' && startFocused) {\n const newVisibleDate = startOfDecade(props.value[0]);\n if (\n newVisibleDate.getTime() !== currentVisibleDate?.getTime() &&\n newVisibleDate.getTime() !==\n (currentVisibleDate && addYears(currentVisibleDate, 10).getTime())\n ) {\n setCurrentVisibleDate(newVisibleDate);\n }\n }\n }, [props.value?.[0]?.getTime(), calendarVisible, startFocused]);\n\n useEffect(() => {\n if (props.value?.[1] && dateTimeView === 'classic' && endFocused) {\n const newVisibleDate = startOfDecade(props.value[1]);\n if (newVisibleDate.getTime() !== currentVisibleDate?.getTime()) {\n setCurrentVisibleDate(newVisibleDate);\n }\n return;\n }\n if (props.value?.[1] && dateTimeView !== 'classic' && endFocused) {\n const newVisibleDate = startOfDecade(props.value[1]);\n if (\n newVisibleDate.getTime() !== currentVisibleDate?.getTime() &&\n newVisibleDate.getTime() !==\n (currentVisibleDate && addYears(currentVisibleDate, 10).getTime())\n ) {\n setCurrentVisibleDate(addYears(newVisibleDate, -10));\n }\n }\n }, [props.value?.[1]?.getTime(), calendarVisible, endFocused]);\n\n useClickOutside({\n isActive: calendarVisible,\n ignoreClicksInsideRefs: [\n startFieldRef,\n endFieldRef,\n calendarRef,\n ...(ignoreOutsideClicksRefs ?? []),\n ],\n handler: () => {\n setFieldFocused(undefined);\n setCalendarVisible.off();\n },\n });\n\n return (\n <>\n <DatePickerFieldTypeYearRange\n {...fieldProps}\n ref={ref}\n startFieldRef={startFieldRef}\n endFieldRef={endFieldRef}\n startFieldInputRef={useForkRef([startFieldInputRef, inputRef?.[0]])}\n endFieldInputRef={useForkRef([endFieldInputRef, inputRef?.[1]])}\n startFieldOnFocus={startFieldOnFocusHandler}\n endFieldOnFocus={endFieldOnFocusHandler}\n startFieldLeftSide={\n Array.isArray(leftSide) ? leftSide?.[0] : leftSide\n }\n startFieldRightSide={\n Array.isArray(rightSide) ? rightSide?.[0] : undefined\n }\n endFieldLeftSide={Array.isArray(leftSide) ? leftSide?.[1] : undefined}\n endFieldRightSide={\n Array.isArray(rightSide) ? rightSide?.[1] : rightSide\n }\n startFieldOnBlur={startFieldOnBlurHandler}\n endFieldOnBlur={endFieldOnBlurHandler}\n startFocused={startFocused}\n endFocused={endFocused}\n startFieldOnClick={setCalendarVisible.on}\n endFieldOnClick={setCalendarVisible.on}\n startFieldName={Array.isArray(name) ? name[0] : `${name}_start`}\n endFieldName={Array.isArray(name) ? name[1] : `${name}_end`}\n disabled={disabled}\n startFieldPlaceholder={\n Array.isArray(placeholder) ? placeholder?.[0] : placeholder\n }\n endFieldPlaceholder={\n Array.isArray(placeholder) ? placeholder?.[1] : placeholder\n }\n />\n <DatePickerDropdown\n type=\"year\"\n ref={useForkRef([dropdownRef, calendarRef])}\n viewportRef={dropdownViewportRef}\n anchorRef={startFieldRef}\n isOpen={calendarVisible}\n onChangeCurrentVisibleDate={setCurrentVisibleDate}\n currentVisibleDate={currentVisibleDate}\n value={props.value || undefined}\n view={dateTimeView}\n events={events}\n locale={locale}\n className={dropdownClassName}\n minDate={props.minDate}\n maxDate={props.maxDate}\n form={dropdownForm}\n onChange={handleChange}\n renderAdditionalControls={renderAdditionalControls}\n zIndex={getDropdownZIndex(props.style)}\n disableDates={disableDates}\n />\n </>\n );\n });\n"],"mappings":"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"}
@@ -95,6 +95,7 @@ export type DatePickerProps<TYPE extends DatePickerPropType = 'date'> = PropsWit
95
95
  onDropdownOpen?: (isOpen: boolean) => void;
96
96
  dropdownOpen?: boolean;
97
97
  ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
98
+ dropdownViewportRef?: React.RefObject<HTMLElement>;
98
99
  }, HTMLDivElement>;
99
100
  export type DatePickerComponent = <TYPE extends DatePickerPropType = 'date'>(props: DatePickerProps<TYPE>) => React.ReactNode | null;
100
101
  export type DatePickerTypeComponent<TYPE extends DatePickerPropType> = (props: Omit<DatePickerProps<TYPE>, 'type'>) => React.ReactNode | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["dateTimePropViewDefault","datePickerPropType","datePickerPropTypeDefault","datePickerPropDateTimeViewDefault","datePickerErrorTypes","datePickerPropDropdownForm","datePickerPropDropdownFormDefault"],"sources":["../../../../../src/components/DatePicker/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { Locale } from 'date-fns';\n\nimport { DateRange } from '../../utils/types/Date';\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n DateTimePropDisableDates,\n DateTimePropView,\n dateTimePropViewDefault,\n TimeOptions,\n} from '../DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '../TextField/TextField';\n\nexport const datePickerPropType = [\n 'date',\n 'date-range',\n 'date-time',\n 'date-time-range',\n 'time',\n 'year',\n 'year-range',\n 'month',\n 'month-range',\n] as const;\n\nexport type DatePickerPropType = typeof datePickerPropType[number];\nexport const datePickerPropTypeDefault = datePickerPropType[0];\n\nexport type DatePickerPropDateTimeView = DateTimePropView;\nexport const datePickerPropDateTimeViewDefault = dateTimePropViewDefault;\n\ntype Range = 'date-range' | 'date-time-range' | 'year-range' | 'month-range';\ntype Time = 'time' | 'date-time' | 'date-time-range';\n\nexport const datePickerErrorTypes = [\n 'outOfRange',\n 'invalidInputAttempt',\n 'startDateIsGreaterThanEndDate',\n 'invalidTimeByTimeOptions',\n] as const;\n\nexport type DatePickerPropValue<TYPE extends DatePickerPropType> =\n | (TYPE extends Range ? DateRange : Date)\n | null;\n\nexport type DatePickerPropPlaceholder<TYPE> = TYPE extends Range\n ? [string?, string?] | string\n : string;\n\nexport type DatePickerPropOnChange<TYPE extends DatePickerPropType> = (\n value: DatePickerPropValue<TYPE>,\n props: {\n e: React.MouseEvent<HTMLButtonElement, MouseEvent> | Event;\n },\n) => void;\n\nexport const datePickerPropDropdownForm = [\n 'default',\n 'brick',\n 'round',\n] as const;\nexport type DatePickerPropDropdownForm =\n typeof datePickerPropDropdownForm[number];\nexport const datePickerPropDropdownFormDefault = datePickerPropDropdownForm[0];\n\ntype DatePickerPropInputRef<TYPE> = TYPE extends Range\n ? [React.Ref<HTMLInputElement>?, React.Ref<HTMLInputElement>?]\n : React.Ref<HTMLInputElement>;\n\ntype DatePickerPropSide<TYPE> = TYPE extends Range\n ?\n | [(string | IconComponent)?, (string | IconComponent)?]\n | string\n | IconComponent\n : string | IconComponent;\n\ntype DatePickerPropOnFocus<TYPE> = TYPE extends Range\n ?\n | [\n React.FocusEventHandler<HTMLElement>?,\n React.FocusEventHandler<HTMLElement>?,\n ]\n | React.FocusEventHandler<HTMLElement>\n : React.FocusEventHandler<HTMLElement>;\n\ntype DatePickerPropName<TYPE> = TYPE extends Range\n ? [string?, string?] | string\n : string;\n\nexport type DatePickerAdditionalControlRenderFn = (props: {\n currentVisibleDate?: Date;\n}) => React.ReactNode | React.ReactNode[];\n\nexport type DatePickerAdditionalControlRenderProp =\n | React.ReactNode\n | DatePickerAdditionalControlRenderFn;\n\nexport type DatePickerProps<TYPE extends DatePickerPropType = 'date'> =\n PropsWithHTMLAttributesAndRef<\n {\n type?: TYPE;\n value?: DatePickerPropValue<TYPE>;\n onChange?: DatePickerPropOnChange<TYPE>;\n minDate?: Date;\n maxDate?: Date;\n renderAdditionalControls?: DatePickerAdditionalControlRenderProp;\n events?: Date[];\n dateTimeView?: DatePickerPropDateTimeView;\n locale?: Locale;\n children?: never;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: DatePickerPropName<TYPE>;\n disabled?: boolean;\n disableDates?: DateTimePropDisableDates;\n dropdownClassName?: string;\n dropdownRef?: React.Ref<HTMLDivElement>;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: DatePickerPropOnFocus<TYPE>;\n onBlur?: DatePickerPropOnFocus<TYPE>;\n autoFocus?: boolean;\n placeholder?: DatePickerPropPlaceholder<TYPE>;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: DatePickerPropInputRef<TYPE>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n format?: string;\n separator?: string;\n dropdownForm?: DatePickerPropDropdownForm;\n leftSide?: DatePickerPropSide<TYPE>;\n rightSide?: DatePickerPropSide<TYPE>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n onChangeCurrentVisibleDate?: (date: Date) => void;\n currentVisibleDate?: Date;\n timeOptions?: TYPE extends Time ? TimeOptions : never;\n /**\n * @deprecated Use timeOptions instead.\n * TODO: major - удалить при мажорном релизе все свойства multiplicity*, оставив только работу с timeOptions.\n */\n multiplicitySeconds?: TYPE extends Time ? number : never;\n /**\n * @deprecated Use timeOptions instead.\n * TODO: major - удалить при мажорном релизе все свойства multiplicity*, оставив только работу с timeOptions.\n */\n multiplicityMinutes?: TYPE extends Time ? number : never;\n /**\n * @deprecated Use timeOptions instead.\n * TODO: major - удалить при мажорном релизе все свойства multiplicity*, оставив только работу с timeOptions.\n */\n multiplicityHours?: TYPE extends Time ? number : never;\n isMobile?: number;\n withClearButton?: boolean;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n },\n HTMLDivElement\n >;\n\nexport type DatePickerComponent = <TYPE extends DatePickerPropType = 'date'>(\n props: DatePickerProps<TYPE>,\n) => React.ReactNode | null;\n\nexport type DatePickerTypeComponent<TYPE extends DatePickerPropType> = (\n props: Omit<DatePickerProps<TYPE>, 'type'>,\n) => React.ReactNode | null;\n\nexport type DatePickerPropOnError = (\n props:\n | {\n type: typeof datePickerErrorTypes[0];\n stringValue: string;\n dd?: string;\n MM?: string;\n yyyy?: string;\n ss?: string;\n mm?: string;\n HH?: string;\n date: Date;\n }\n | {\n type: typeof datePickerErrorTypes[1];\n stringValue: string;\n dd?: string;\n MM?: string;\n yyyy?: string;\n ss?: string;\n mm?: string;\n HH?: string;\n }\n | {\n type: typeof datePickerErrorTypes[2];\n date: [Date, Date];\n }\n | {\n type: typeof datePickerErrorTypes[3];\n stringValue: string;\n date: Date;\n HH?: string;\n mm?: string;\n ss?: string;\n },\n) => void;\n"],"mappings":"AAKA,OAGEA,uBAHF,2BAaA,MAAO,IAAMC,mBAAkB,CAAG,CAChC,MADgC,CAEhC,YAFgC,CAGhC,WAHgC,CAIhC,iBAJgC,CAKhC,MALgC,CAMhC,MANgC,CAOhC,YAPgC,CAQhC,OARgC,CAShC,aATgC,CAA3B,CAaP,MAAO,IAAMC,0BAAyB,CAAGD,kBAAkB,CAAC,CAAD,CAApD,CAGP,MAAO,IAAME,kCAAiC,CAAGH,uBAA1C,CAKP,MAAO,IAAMI,qBAAoB,CAAG,CAClC,YADkC,CAElC,qBAFkC,CAGlC,+BAHkC,CAIlC,0BAJkC,CAA7B,CAsBP,MAAO,IAAMC,2BAA0B,CAAG,CACxC,SADwC,CAExC,OAFwC,CAGxC,OAHwC,CAAnC,CAOP,MAAO,IAAMC,kCAAiC,CAAGD,0BAA0B,CAAC,CAAD,CAApE"}
1
+ {"version":3,"file":"types.js","names":["dateTimePropViewDefault","datePickerPropType","datePickerPropTypeDefault","datePickerPropDateTimeViewDefault","datePickerErrorTypes","datePickerPropDropdownForm","datePickerPropDropdownFormDefault"],"sources":["../../../../../src/components/DatePicker/types.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport { Locale } from 'date-fns';\n\nimport { DateRange } from '../../utils/types/Date';\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n DateTimePropDisableDates,\n DateTimePropView,\n dateTimePropViewDefault,\n TimeOptions,\n} from '../DateTime/helpers';\nimport {\n TextFieldPropForm,\n TextFieldPropSize,\n TextFieldPropStatus,\n TextFieldPropView,\n} from '../TextField/TextField';\n\nexport const datePickerPropType = [\n 'date',\n 'date-range',\n 'date-time',\n 'date-time-range',\n 'time',\n 'year',\n 'year-range',\n 'month',\n 'month-range',\n] as const;\n\nexport type DatePickerPropType = typeof datePickerPropType[number];\nexport const datePickerPropTypeDefault = datePickerPropType[0];\n\nexport type DatePickerPropDateTimeView = DateTimePropView;\nexport const datePickerPropDateTimeViewDefault = dateTimePropViewDefault;\n\ntype Range = 'date-range' | 'date-time-range' | 'year-range' | 'month-range';\ntype Time = 'time' | 'date-time' | 'date-time-range';\n\nexport const datePickerErrorTypes = [\n 'outOfRange',\n 'invalidInputAttempt',\n 'startDateIsGreaterThanEndDate',\n 'invalidTimeByTimeOptions',\n] as const;\n\nexport type DatePickerPropValue<TYPE extends DatePickerPropType> =\n | (TYPE extends Range ? DateRange : Date)\n | null;\n\nexport type DatePickerPropPlaceholder<TYPE> = TYPE extends Range\n ? [string?, string?] | string\n : string;\n\nexport type DatePickerPropOnChange<TYPE extends DatePickerPropType> = (\n value: DatePickerPropValue<TYPE>,\n props: {\n e: React.MouseEvent<HTMLButtonElement, MouseEvent> | Event;\n },\n) => void;\n\nexport const datePickerPropDropdownForm = [\n 'default',\n 'brick',\n 'round',\n] as const;\nexport type DatePickerPropDropdownForm =\n typeof datePickerPropDropdownForm[number];\nexport const datePickerPropDropdownFormDefault = datePickerPropDropdownForm[0];\n\ntype DatePickerPropInputRef<TYPE> = TYPE extends Range\n ? [React.Ref<HTMLInputElement>?, React.Ref<HTMLInputElement>?]\n : React.Ref<HTMLInputElement>;\n\ntype DatePickerPropSide<TYPE> = TYPE extends Range\n ?\n | [(string | IconComponent)?, (string | IconComponent)?]\n | string\n | IconComponent\n : string | IconComponent;\n\ntype DatePickerPropOnFocus<TYPE> = TYPE extends Range\n ?\n | [\n React.FocusEventHandler<HTMLElement>?,\n React.FocusEventHandler<HTMLElement>?,\n ]\n | React.FocusEventHandler<HTMLElement>\n : React.FocusEventHandler<HTMLElement>;\n\ntype DatePickerPropName<TYPE> = TYPE extends Range\n ? [string?, string?] | string\n : string;\n\nexport type DatePickerAdditionalControlRenderFn = (props: {\n currentVisibleDate?: Date;\n}) => React.ReactNode | React.ReactNode[];\n\nexport type DatePickerAdditionalControlRenderProp =\n | React.ReactNode\n | DatePickerAdditionalControlRenderFn;\n\nexport type DatePickerProps<TYPE extends DatePickerPropType = 'date'> =\n PropsWithHTMLAttributesAndRef<\n {\n type?: TYPE;\n value?: DatePickerPropValue<TYPE>;\n onChange?: DatePickerPropOnChange<TYPE>;\n minDate?: Date;\n maxDate?: Date;\n renderAdditionalControls?: DatePickerAdditionalControlRenderProp;\n events?: Date[];\n dateTimeView?: DatePickerPropDateTimeView;\n locale?: Locale;\n children?: never;\n onError?: DatePickerPropOnError;\n id?: string;\n name?: DatePickerPropName<TYPE>;\n disabled?: boolean;\n disableDates?: DateTimePropDisableDates;\n dropdownClassName?: string;\n dropdownRef?: React.Ref<HTMLDivElement>;\n size?: TextFieldPropSize;\n view?: TextFieldPropView;\n form?: TextFieldPropForm;\n status?: TextFieldPropStatus;\n onFocus?: DatePickerPropOnFocus<TYPE>;\n onBlur?: DatePickerPropOnFocus<TYPE>;\n autoFocus?: boolean;\n placeholder?: DatePickerPropPlaceholder<TYPE>;\n readOnly?: boolean;\n required?: boolean;\n tabIndex?: number;\n inputRef?: DatePickerPropInputRef<TYPE>;\n ariaLabel?: string;\n iconSize?: IconPropSize;\n format?: string;\n separator?: string;\n dropdownForm?: DatePickerPropDropdownForm;\n leftSide?: DatePickerPropSide<TYPE>;\n rightSide?: DatePickerPropSide<TYPE>;\n label?: string;\n labelIcon?: IconComponent;\n caption?: string;\n labelPosition?: 'top' | 'left';\n onChangeCurrentVisibleDate?: (date: Date) => void;\n currentVisibleDate?: Date;\n timeOptions?: TYPE extends Time ? TimeOptions : never;\n /**\n * @deprecated Use timeOptions instead.\n * TODO: major - удалить при мажорном релизе все свойства multiplicity*, оставив только работу с timeOptions.\n */\n multiplicitySeconds?: TYPE extends Time ? number : never;\n /**\n * @deprecated Use timeOptions instead.\n * TODO: major - удалить при мажорном релизе все свойства multiplicity*, оставив только работу с timeOptions.\n */\n multiplicityMinutes?: TYPE extends Time ? number : never;\n /**\n * @deprecated Use timeOptions instead.\n * TODO: major - удалить при мажорном релизе все свойства multiplicity*, оставив только работу с timeOptions.\n */\n multiplicityHours?: TYPE extends Time ? number : never;\n isMobile?: number;\n withClearButton?: boolean;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n dropdownViewportRef?: React.RefObject<HTMLElement>;\n },\n HTMLDivElement\n >;\n\nexport type DatePickerComponent = <TYPE extends DatePickerPropType = 'date'>(\n props: DatePickerProps<TYPE>,\n) => React.ReactNode | null;\n\nexport type DatePickerTypeComponent<TYPE extends DatePickerPropType> = (\n props: Omit<DatePickerProps<TYPE>, 'type'>,\n) => React.ReactNode | null;\n\nexport type DatePickerPropOnError = (\n props:\n | {\n type: typeof datePickerErrorTypes[0];\n stringValue: string;\n dd?: string;\n MM?: string;\n yyyy?: string;\n ss?: string;\n mm?: string;\n HH?: string;\n date: Date;\n }\n | {\n type: typeof datePickerErrorTypes[1];\n stringValue: string;\n dd?: string;\n MM?: string;\n yyyy?: string;\n ss?: string;\n mm?: string;\n HH?: string;\n }\n | {\n type: typeof datePickerErrorTypes[2];\n date: [Date, Date];\n }\n | {\n type: typeof datePickerErrorTypes[3];\n stringValue: string;\n date: Date;\n HH?: string;\n mm?: string;\n ss?: string;\n },\n) => void;\n"],"mappings":"AAKA,OAGEA,uBAHF,2BAaA,MAAO,IAAMC,mBAAkB,CAAG,CAChC,MADgC,CAEhC,YAFgC,CAGhC,WAHgC,CAIhC,iBAJgC,CAKhC,MALgC,CAMhC,MANgC,CAOhC,YAPgC,CAQhC,OARgC,CAShC,aATgC,CAA3B,CAaP,MAAO,IAAMC,0BAAyB,CAAGD,kBAAkB,CAAC,CAAD,CAApD,CAGP,MAAO,IAAME,kCAAiC,CAAGH,uBAA1C,CAKP,MAAO,IAAMI,qBAAoB,CAAG,CAClC,YADkC,CAElC,qBAFkC,CAGlC,+BAHkC,CAIlC,0BAJkC,CAA7B,CAsBP,MAAO,IAAMC,2BAA0B,CAAG,CACxC,SADwC,CAExC,OAFwC,CAGxC,OAHwC,CAAnC,CAOP,MAAO,IAAMC,kCAAiC,CAAGD,0BAA0B,CAAC,CAAD,CAApE"}
@@ -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=["className","size","form","disabled","view","status","leftSide","rightSide","children","style","focused","leftSlotsRefs","rightSlotsRefs","alignSlots"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{forwardRef}from"react";import{useFlag}from"../../../hooks/useFlag";import{forkRef}from"../../../hooks/useForkRef";import{useRefs}from"../../../hooks/useRefs";import{getElementWidth,useResizeObserved}from"../../../hooks/useResizeObserved";import{cnFieldControlLayout}from"./cnFieldControlLayout";import{formGuard,getBgColor,getBorderColor,getBorderRadius,getBorderStyle,getPaddingLeft,getPaddingRight,getPaddingVertical,getSlots,getSlotsWidthStyles}from"./helpers";var renderContentSlot=function(a,b,c,d){return React.createElement("div",{key:b,ref:forkRef([null===c||void 0===c?void 0:c[b],null===d||void 0===d?void 0:d[b]]),className:cnFieldControlLayout("Slot")},a)};export var FieldControlLayout=forwardRef(function(a,b){var c,d=a.className,e=a.size,f=void 0===e?"m":e,g=a.form,h=void 0===g?"default":g,i=a.disabled,j=void 0!==i&&i,k=a.view,l=void 0===k?"default":k,m=a.status,n=a.leftSide,o=a.rightSide,p=a.children,q=a.style,r=a.focused,s=a.leftSlotsRefs,t=a.rightSlotsRefs,u=a.alignSlots,v=void 0===u?"top":u,w=_objectWithoutProperties(a,_excluded),x=getSlots(n),y=getSlots(o),z=useRefs(x.length),A=useRefs(1),B=useRefs(y.length),C=useResizeObserved(z,getElementWidth),D=useResizeObserved(B,getElementWidth),E=useResizeObserved(A,getElementWidth)[0],F=formGuard(h),G=useFlag(),H=_slicedToArray(G,2),I=H[0],J=H[1];return React.createElement("div",Object.assign({},w,{ref:b,className:cnFieldControlLayout({form:F,disabled:j,view:l,alignSlots:v,status:m},[d]),style:_objectSpread(_objectSpread(_objectSpread({},q),{},(c={},_defineProperty(c,"--field-control-layout-border-color",getBorderColor(r,I,m,j)),_defineProperty(c,"--field-control-layout-height","var(--control-height-".concat(f,")")),_defineProperty(c,"--field-control-layout-space","calc(var(--control-space-".concat(f,") * 0.5)")),_defineProperty(c,"--field-control-layout-text-size","var(--control-text-size-".concat(f,")")),_defineProperty(c,"--field-control-layout-text-line-height","var(--line-height-text-".concat(f,")")),_defineProperty(c,"--field-control-layout-border-radius",getBorderRadius(F,l)),_defineProperty(c,"--field-control-layout-border-style",getBorderStyle(F,l)),_defineProperty(c,"--field-control-layout-padding-top",getPaddingVertical(l)),_defineProperty(c,"--field-control-layout-padding-bottom",getPaddingVertical(l)),_defineProperty(c,"--field-control-layout-padding-left",getPaddingLeft(l,F)),_defineProperty(c,"--field-control-layout-padding-right",getPaddingRight(l,F)),_defineProperty(c,"--field-control-layout-bg-color",getBgColor(l,j)),_defineProperty(c,"--field-control-layout-border-width","default"===l?"var(--control-border-width)":"0px"),_defineProperty(c,"--field-control-layout-container-width","".concat(E,"px")),c),getSlotsWidthStyles(C,"left")),getSlotsWidthStyles(D,"right")),onMouseEnter:J.on,onMouseLeave:J.off}),React.createElement("div",{ref:A[0],className:cnFieldControlLayout("Container")},!!x.length&&x.map(function(a,b){return renderContentSlot(a,b,z,s)}),React.createElement("div",{className:cnFieldControlLayout("Children")},p),!!y.length&&y.map(function(a,b){return renderContentSlot(a,b,B,t)})))});
1
+ import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","size","form","disabled","view","status","leftSide","rightSide","children","style","focused","leftSlotsRefs","rightSlotsRefs","alignSlots"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{forwardRef}from"react";import{useFlag}from"../../../hooks/useFlag";import{forkRef}from"../../../hooks/useForkRef";import{useRefs}from"../../../hooks/useRefs";import{getElementWidth,useResizeObserved}from"../../../hooks/useResizeObserved";import{cnFieldControlLayout}from"./cnFieldControlLayout";import{formGuard,getBgColor,getBorderColor,getBorderRadius,getBorderStyle,getPaddingLeft,getPaddingRight,getPaddingVertical,getSlots,getSlotsWidthStyles}from"./helpers";var renderContentSlot=function(a,b,c,d){return React.createElement("div",{key:b,ref:forkRef([null===c||void 0===c?void 0:c[b],null===d||void 0===d?void 0:d[b]]),className:cnFieldControlLayout("Slot")},a)};export var FieldControlLayout=forwardRef(function(a,b){var c,d=a.className,e=a.size,f=void 0===e?"m":e,g=a.form,h=void 0===g?"default":g,i=a.disabled,j=void 0!==i&&i,k=a.view,l=void 0===k?"default":k,m=a.status,n=a.leftSide,o=a.rightSide,p=a.children,q=a.style,r=a.focused,s=a.leftSlotsRefs,t=a.rightSlotsRefs,u=a.alignSlots,v=void 0===u?"top":u,w=_objectWithoutProperties(a,_excluded),x=getSlots(n),y=getSlots(o),z=useRefs(x.length),A=useRefs(1),B=useRefs(y.length),C=useResizeObserved(z,getElementWidth),D=useResizeObserved(B,getElementWidth),E=useResizeObserved(A,getElementWidth)[0],F=formGuard(h),G=useFlag(),H=_slicedToArray(G,2),I=H[0],J=H[1];return React.createElement("div",Object.assign({},w,{ref:b,className:cnFieldControlLayout({form:F,disabled:j,view:l,alignSlots:v,status:m},[d]),style:_objectSpread(_objectSpread(_objectSpread({},q),{},(c={},_defineProperty(c,"--field-control-layout-border-color",getBorderColor(r,I,m,j)),_defineProperty(c,"--field-control-layout-height","var(--control-height-".concat(f,")")),_defineProperty(c,"--field-control-layout-space","calc(var(--control-space-".concat(f,") * 0.5)")),_defineProperty(c,"--field-control-layout-text-size","var(--control-text-size-".concat(f,")")),_defineProperty(c,"--field-control-layout-text-line-height","var(--line-height-text-m)"),_defineProperty(c,"--field-control-layout-border-radius",getBorderRadius(F,l)),_defineProperty(c,"--field-control-layout-border-style",getBorderStyle(F,l)),_defineProperty(c,"--field-control-layout-padding-top",getPaddingVertical(l)),_defineProperty(c,"--field-control-layout-padding-bottom",getPaddingVertical(l)),_defineProperty(c,"--field-control-layout-padding-left",getPaddingLeft(l,F)),_defineProperty(c,"--field-control-layout-padding-right",getPaddingRight(l,F)),_defineProperty(c,"--field-control-layout-bg-color",getBgColor(l,j)),_defineProperty(c,"--field-control-layout-border-width","default"===l?"var(--control-border-width)":"0px"),_defineProperty(c,"--field-control-layout-container-width","".concat(E,"px")),c),getSlotsWidthStyles(C,"left")),getSlotsWidthStyles(D,"right")),onMouseEnter:J.on,onMouseLeave:J.off}),React.createElement("div",{ref:A[0],className:cnFieldControlLayout("Container")},!!x.length&&x.map(function(a,b){return renderContentSlot(a,b,z,s)}),React.createElement("div",{className:cnFieldControlLayout("Children")},p),!!y.length&&y.map(function(a,b){return renderContentSlot(a,b,B,t)})))});
2
2
  //# sourceMappingURL=FieldControlLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldControlLayout.js","names":["React","forwardRef","useFlag","forkRef","useRefs","getElementWidth","useResizeObserved","cnFieldControlLayout","formGuard","getBgColor","getBorderColor","getBorderRadius","getBorderStyle","getPaddingLeft","getPaddingRight","getPaddingVertical","getSlots","getSlotsWidthStyles","renderContentSlot","node","index","slotsInnerRefs","slotsRefs","FieldControlLayout","props","ref","className","size","form","formProp","disabled","view","status","leftSide","rightSide","children","style","focused","leftSlotsRefsProp","leftSlotsRefs","rightSlotsRefsProp","rightSlotsRefs","alignSlots","otherProps","leftSlots","rightSlots","length","containerRefs","leftSlotsWidth","rightSlotsWidth","containerWidth","hovered","setHovered","on","off","map","slot"],"sources":["../../../../../../src/components/FieldComponents/FieldControlLayout/FieldControlLayout.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { useFlag } from '##/hooks/useFlag';\nimport { forkRef } from '##/hooks/useForkRef';\nimport { useRefs } from '##/hooks/useRefs';\nimport { getElementWidth, useResizeObserved } from '##/hooks/useResizeObserved';\n\nimport { cnFieldControlLayout } from './cnFieldControlLayout';\nimport {\n formGuard,\n getBgColor,\n getBorderColor,\n getBorderRadius,\n getBorderStyle,\n getPaddingLeft,\n getPaddingRight,\n getPaddingVertical,\n getSlots,\n getSlotsWidthStyles,\n} from './helpers';\nimport { FieldControlLayoutProps } from './types';\n\nconst renderContentSlot = (\n node: React.ReactNode,\n index: number,\n slotsInnerRefs?: React.Ref<HTMLDivElement>[],\n slotsRefs?: React.Ref<HTMLDivElement>[],\n) => (\n <div\n key={index}\n ref={forkRef([slotsInnerRefs?.[index], slotsRefs?.[index]])}\n className={cnFieldControlLayout('Slot')}\n >\n {node}\n </div>\n);\n\nexport const FieldControlLayout = forwardRef<\n HTMLDivElement,\n FieldControlLayoutProps\n>((props, ref) => {\n const {\n className,\n size = 'm',\n form: formProp = 'default',\n disabled = false,\n view = 'default',\n status,\n leftSide,\n rightSide,\n children,\n style,\n focused,\n leftSlotsRefs: leftSlotsRefsProp,\n rightSlotsRefs: rightSlotsRefsProp,\n alignSlots = 'top',\n ...otherProps\n } = props;\n const leftSlots = getSlots(leftSide);\n const rightSlots = getSlots(rightSide);\n const leftSlotsRefs = useRefs<HTMLDivElement>(leftSlots.length);\n const containerRefs = useRefs<HTMLDivElement>(1);\n const rightSlotsRefs = useRefs<HTMLDivElement>(rightSlots.length);\n const leftSlotsWidth = useResizeObserved(leftSlotsRefs, getElementWidth);\n const rightSlotsWidth = useResizeObserved(rightSlotsRefs, getElementWidth);\n const containerWidth = useResizeObserved(containerRefs, getElementWidth)[0];\n\n // ToDo: Удалить после того как удалим из всех компонентов \"clearClear\"\n const form = formGuard(formProp);\n\n const [hovered, setHovered] = useFlag();\n\n return (\n <div\n {...otherProps}\n ref={ref}\n className={cnFieldControlLayout(\n { form, disabled, view, alignSlots, status },\n [className],\n )}\n style={{\n ...style,\n ['--field-control-layout-border-color' as string]: getBorderColor(\n focused,\n hovered,\n status,\n disabled,\n ),\n ['--field-control-layout-height' as string]: `var(--control-height-${size})`,\n ['--field-control-layout-space' as string]: `calc(var(--control-space-${size}) * 0.5)`,\n ['--field-control-layout-text-size' as string]: `var(--control-text-size-${size})`,\n ['--field-control-layout-text-line-height' as string]: `var(--line-height-text-${size})`,\n ['--field-control-layout-border-radius' as string]: getBorderRadius(\n form,\n view,\n ),\n ['--field-control-layout-border-style' as string]: getBorderStyle(\n form,\n view,\n ),\n ['--field-control-layout-padding-top' as string]:\n getPaddingVertical(view),\n ['--field-control-layout-padding-bottom' as string]:\n getPaddingVertical(view),\n ['--field-control-layout-padding-left' as string]: getPaddingLeft(\n view,\n form,\n ),\n ['--field-control-layout-padding-right' as string]: getPaddingRight(\n view,\n form,\n ),\n // ['--field-control-layout-padding' as string]: getPadding(form, view),\n ['--field-control-layout-bg-color' as string]: getBgColor(\n view,\n disabled,\n ),\n ['--field-control-layout-border-width' as string]:\n view === 'default' ? 'var(--control-border-width)' : '0px',\n ['--field-control-layout-container-width' as string]: `${containerWidth}px`,\n ...getSlotsWidthStyles(leftSlotsWidth, 'left'),\n ...getSlotsWidthStyles(rightSlotsWidth, 'right'),\n }}\n onMouseEnter={setHovered.on}\n onMouseLeave={setHovered.off}\n >\n <div ref={containerRefs[0]} className={cnFieldControlLayout('Container')}>\n {!!leftSlots.length &&\n leftSlots.map((slot, index) =>\n renderContentSlot(slot, index, leftSlotsRefs, leftSlotsRefsProp),\n )}\n <div className={cnFieldControlLayout('Children')}>{children}</div>\n {!!rightSlots.length &&\n rightSlots.map((slot, index) =>\n renderContentSlot(slot, index, rightSlotsRefs, rightSlotsRefsProp),\n )}\n </div>\n </div>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"FieldControlLayout.js","names":["React","forwardRef","useFlag","forkRef","useRefs","getElementWidth","useResizeObserved","cnFieldControlLayout","formGuard","getBgColor","getBorderColor","getBorderRadius","getBorderStyle","getPaddingLeft","getPaddingRight","getPaddingVertical","getSlots","getSlotsWidthStyles","renderContentSlot","node","index","slotsInnerRefs","slotsRefs","FieldControlLayout","props","ref","className","size","form","formProp","disabled","view","status","leftSide","rightSide","children","style","focused","leftSlotsRefsProp","leftSlotsRefs","rightSlotsRefsProp","rightSlotsRefs","alignSlots","otherProps","leftSlots","rightSlots","length","containerRefs","leftSlotsWidth","rightSlotsWidth","containerWidth","hovered","setHovered","on","off","map","slot"],"sources":["../../../../../../src/components/FieldComponents/FieldControlLayout/FieldControlLayout.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport { useFlag } from '##/hooks/useFlag';\nimport { forkRef } from '##/hooks/useForkRef';\nimport { useRefs } from '##/hooks/useRefs';\nimport { getElementWidth, useResizeObserved } from '##/hooks/useResizeObserved';\n\nimport { cnFieldControlLayout } from './cnFieldControlLayout';\nimport {\n formGuard,\n getBgColor,\n getBorderColor,\n getBorderRadius,\n getBorderStyle,\n getPaddingLeft,\n getPaddingRight,\n getPaddingVertical,\n getSlots,\n getSlotsWidthStyles,\n} from './helpers';\nimport { FieldControlLayoutProps } from './types';\n\nconst renderContentSlot = (\n node: React.ReactNode,\n index: number,\n slotsInnerRefs?: React.Ref<HTMLDivElement>[],\n slotsRefs?: React.Ref<HTMLDivElement>[],\n) => (\n <div\n key={index}\n ref={forkRef([slotsInnerRefs?.[index], slotsRefs?.[index]])}\n className={cnFieldControlLayout('Slot')}\n >\n {node}\n </div>\n);\n\nexport const FieldControlLayout = forwardRef<\n HTMLDivElement,\n FieldControlLayoutProps\n>((props, ref) => {\n const {\n className,\n size = 'm',\n form: formProp = 'default',\n disabled = false,\n view = 'default',\n status,\n leftSide,\n rightSide,\n children,\n style,\n focused,\n leftSlotsRefs: leftSlotsRefsProp,\n rightSlotsRefs: rightSlotsRefsProp,\n alignSlots = 'top',\n ...otherProps\n } = props;\n const leftSlots = getSlots(leftSide);\n const rightSlots = getSlots(rightSide);\n const leftSlotsRefs = useRefs<HTMLDivElement>(leftSlots.length);\n const containerRefs = useRefs<HTMLDivElement>(1);\n const rightSlotsRefs = useRefs<HTMLDivElement>(rightSlots.length);\n const leftSlotsWidth = useResizeObserved(leftSlotsRefs, getElementWidth);\n const rightSlotsWidth = useResizeObserved(rightSlotsRefs, getElementWidth);\n const containerWidth = useResizeObserved(containerRefs, getElementWidth)[0];\n\n // ToDo: Удалить после того как удалим из всех компонентов \"clearClear\"\n const form = formGuard(formProp);\n\n const [hovered, setHovered] = useFlag();\n\n return (\n <div\n {...otherProps}\n ref={ref}\n className={cnFieldControlLayout(\n { form, disabled, view, alignSlots, status },\n [className],\n )}\n style={{\n ...style,\n ['--field-control-layout-border-color' as string]: getBorderColor(\n focused,\n hovered,\n status,\n disabled,\n ),\n ['--field-control-layout-height' as string]: `var(--control-height-${size})`,\n ['--field-control-layout-space' as string]: `calc(var(--control-space-${size}) * 0.5)`,\n ['--field-control-layout-text-size' as string]: `var(--control-text-size-${size})`,\n ['--field-control-layout-text-line-height' as string]: `var(--line-height-text-m)`,\n ['--field-control-layout-border-radius' as string]: getBorderRadius(\n form,\n view,\n ),\n ['--field-control-layout-border-style' as string]: getBorderStyle(\n form,\n view,\n ),\n ['--field-control-layout-padding-top' as string]:\n getPaddingVertical(view),\n ['--field-control-layout-padding-bottom' as string]:\n getPaddingVertical(view),\n ['--field-control-layout-padding-left' as string]: getPaddingLeft(\n view,\n form,\n ),\n ['--field-control-layout-padding-right' as string]: getPaddingRight(\n view,\n form,\n ),\n // ['--field-control-layout-padding' as string]: getPadding(form, view),\n ['--field-control-layout-bg-color' as string]: getBgColor(\n view,\n disabled,\n ),\n ['--field-control-layout-border-width' as string]:\n view === 'default' ? 'var(--control-border-width)' : '0px',\n ['--field-control-layout-container-width' as string]: `${containerWidth}px`,\n ...getSlotsWidthStyles(leftSlotsWidth, 'left'),\n ...getSlotsWidthStyles(rightSlotsWidth, 'right'),\n }}\n onMouseEnter={setHovered.on}\n onMouseLeave={setHovered.off}\n >\n <div ref={containerRefs[0]} className={cnFieldControlLayout('Container')}>\n {!!leftSlots.length &&\n leftSlots.map((slot, index) =>\n renderContentSlot(slot, index, leftSlotsRefs, leftSlotsRefsProp),\n )}\n <div className={cnFieldControlLayout('Children')}>{children}</div>\n {!!rightSlots.length &&\n rightSlots.map((slot, index) =>\n renderContentSlot(slot, index, rightSlotsRefs, rightSlotsRefsProp),\n )}\n </div>\n </div>\n );\n});\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{isNotNil}from"../../../utils/type-guards";import{borderRadiusMap,borderWidthMap,paddingMap}from"./maps";export var getSlots=function(a){return(Array.isArray(a)?a:[a]).filter(function(a){return isNotNil(a)&&!1!==a})};var borderToCss=function(a){return a?"solid":"none"};export var getBorderStyle=function(a,b){return"default"===b?"solid ".concat(borderToCss(borderWidthMap[a][1])," solid ").concat(borderToCss(borderWidthMap[a][0])):"none"};var paddingToCss=function(a){return"increased"===a?"calc(var(--field-control-layout-space) * 1.6)":"var(--field-control-layout-space)"};export var getPaddingVertical=function(a){return"default"===a?"0px":"var(--control-border-width)"};export var getPaddingLeft=function(a,b){return"default"===a?paddingToCss(paddingMap[b][0]):"0px"};export var getPaddingRight=function(a,b){return"default"===a?paddingToCss(paddingMap[b][1]):"0px"};var borderRadiusToCss=function(a){return"default"===a?"var(--control-radius)":"round"===a?"calc(var(--field-control-layout-height) / 2)":"0px"};export var getBorderRadius=function(a,b){return"default"===b?borderRadiusMap[a].map(borderRadiusToCss).join(" "):"0px 0px 0px 0px"};export var getBorderColor=function(a,b,c,d){return d?"transparent":a?"var(--color-control-bg-border-focus)":b?"var(--color-control-bg-border-default-hover)":c?"var(--color-bg-".concat(c,")"):"var(--color-control-bg-border-default)"};export var getBgColor=function(a,b){return"default"===a&&b?"var(--color-control-bg-disable)":"default"===a?"var(--color-bg-default)":void 0};export var getSlotsWidthStyles=function(a,b){for(var c={},d=0;d<a.length;d++)c["--field-control-layout-".concat(b,"-slot-content-width-").concat(d)]="".concat(a[d],"px");return c["--field-control-layout-".concat(b,"-slot-contents-width")]="".concat(a.length?a.reduce(function(c,a){return c+a}):0,"px"),c["--field-control-layout-".concat(b,"-slots-length")]="".concat(a.length),c};export var formGuard=function(a){return"clearClear"===a?"clear":a};
1
+ import{isNotNil}from"../../../utils/type-guards";import{borderRadiusMap,borderWidthMap,paddingMap}from"./maps";export var getSlots=function(a){return(Array.isArray(a)?a:[a]).filter(function(a){return isNotNil(a)&&!1!==a})};var borderToCss=function(a){return a?"solid":"none"};export var getBorderStyle=function(a,b){return"default"===b?"solid ".concat(borderToCss(borderWidthMap[a][1])," solid ").concat(borderToCss(borderWidthMap[a][0])):"none"};var paddingToCss=function(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:"0px";return"increased"===a?"calc(var(--field-control-layout-space) * 1.6 + ".concat(b,")"):"calc(var(--field-control-layout-space) + ".concat(b,")")};export var getPaddingVertical=function(a){return"default"===a?"0px":"var(--control-border-width)"};export var getPaddingLeft=function(a,b){return"default"===a?paddingToCss(paddingMap[b][0],"var(--field-control-layout-additional-padding-left, 0px)"):"var(--field-control-layout-additional-padding-left, 0px)"};export var getPaddingRight=function(a,b){return"default"===a?paddingToCss(paddingMap[b][1],"var(--field-control-layout-additional-padding-right, 0px)"):"var(--field-control-layout-additional-padding-right, 0px)"};var borderRadiusToCss=function(a){return"default"===a?"var(--control-radius)":"round"===a?"calc(var(--field-control-layout-height) / 2)":"0px"};export var getBorderRadius=function(a,b){return"default"===b?borderRadiusMap[a].map(borderRadiusToCss).join(" "):"0px 0px 0px 0px"};export var getBorderColor=function(a,b,c,d){return d?"transparent":a?"var(--color-control-bg-border-focus)":b?"var(--color-control-bg-border-default-hover)":c?"var(--color-bg-".concat(c,")"):"var(--color-control-bg-border-default)"};export var getBgColor=function(a,b){return"default"===a&&b?"var(--color-control-bg-disable)":"default"===a?"var(--color-bg-default)":void 0};export var getSlotsWidthStyles=function(a,b){for(var c={},d=0;d<a.length;d++)c["--field-control-layout-".concat(b,"-slot-content-width-").concat(d)]="".concat(a[d],"px");return c["--field-control-layout-".concat(b,"-slot-contents-width")]="".concat(a.length?a.reduce(function(c,a){return c+a}):0,"px"),c["--field-control-layout-".concat(b,"-slots-length")]="".concat(a.length),c};export var formGuard=function(a){return"clearClear"===a?"clear":a};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["isNotNil","borderRadiusMap","borderWidthMap","paddingMap","getSlots","side","Array","isArray","filter","item","borderToCss","value","getBorderStyle","form","view","paddingToCss","getPaddingVertical","getPaddingLeft","getPaddingRight","borderRadiusToCss","getBorderRadius","map","join","getBorderColor","focused","hovered","status","disabled","getBgColor","getSlotsWidthStyles","sizes","postfix","style","index","length","reduce","a","b","formGuard","from"],"sources":["../../../../../../src/components/FieldComponents/FieldControlLayout/helpers.ts"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { isNotNil } from '##/utils/type-guards';\n\nimport { FieldPropForm, FieldPropStatus, FieldPropView } from '../types';\nimport {\n borderRadiusMap,\n borderWidthMap,\n FieldControlLayoutBorderRadiusNode,\n FieldControlLayoutBorderWidthNode,\n FieldControlLayoutPaddingNode,\n paddingMap,\n} from './maps';\n\nexport const getSlots = (\n side: React.ReactNode | React.ReactNode[],\n): React.ReactNode[] => {\n return ((Array.isArray(side) ? side : [side]) as []).filter(\n (item) => isNotNil(item) && item !== false,\n );\n};\n\nconst borderToCss = (value: FieldControlLayoutBorderWidthNode) => {\n return value ? 'solid' : 'none';\n};\n\nexport const getBorderStyle = (\n form: FieldPropForm,\n view: FieldPropView,\n): string => {\n return view === 'default'\n ? `solid ${borderToCss(borderWidthMap[form][1])} solid ${borderToCss(\n borderWidthMap[form][0],\n )}`\n : `none`;\n};\n\nconst paddingToCss = (value: FieldControlLayoutPaddingNode): string => {\n return value === 'increased'\n ? 'calc(var(--field-control-layout-space) * 1.6)'\n : 'var(--field-control-layout-space)';\n};\n\nexport const getPaddingVertical = (view: FieldPropView): string => {\n return view === 'default' ? '0px' : 'var(--control-border-width)';\n};\n\nexport const getPaddingLeft = (\n view: FieldPropView,\n form: FieldPropForm,\n): string => {\n return view === 'default' ? paddingToCss(paddingMap[form][0]) : `0px`;\n};\n\nexport const getPaddingRight = (\n view: FieldPropView,\n form: FieldPropForm,\n): string => {\n return view === 'default' ? paddingToCss(paddingMap[form][1]) : `0px`;\n};\n\nconst borderRadiusToCss = (\n value: FieldControlLayoutBorderRadiusNode,\n): string => {\n if (value === 'default') {\n return 'var(--control-radius)';\n }\n if (value === 'round') {\n return 'calc(var(--field-control-layout-height) / 2)';\n }\n return '0px';\n};\n\nexport const getBorderRadius = (\n form: FieldPropForm,\n view: FieldPropView,\n): string => {\n return view === 'default'\n ? borderRadiusMap[form].map(borderRadiusToCss).join(' ')\n : `0px 0px 0px 0px`;\n};\n\nexport const getBorderColor = (\n focused?: boolean,\n hovered?: boolean,\n status?: FieldPropStatus,\n disabled?: boolean,\n) => {\n if (disabled) {\n return 'transparent';\n }\n if (focused) {\n return 'var(--color-control-bg-border-focus)';\n }\n if (hovered) {\n return 'var(--color-control-bg-border-default-hover)';\n }\n if (status) {\n return `var(--color-bg-${status})`;\n }\n return 'var(--color-control-bg-border-default)';\n};\n\nexport const getBgColor = (view: FieldPropView, disabled?: boolean) => {\n if (view === 'default' && disabled) {\n return 'var(--color-control-bg-disable)';\n }\n if (view === 'default') {\n return 'var(--color-bg-default)';\n }\n};\n\nexport const getSlotsWidthStyles = (\n sizes: number[],\n postfix: string,\n): CSSProperties => {\n const style: CSSProperties = {};\n for (let index = 0; index < sizes.length; index++) {\n style[\n `--field-control-layout-${postfix}-slot-content-width-${index}` as 'width'\n ] = `${sizes[index]}px`;\n }\n\n style[\n `--field-control-layout-${postfix}-slot-contents-width` as 'width'\n ] = `${sizes.length ? sizes.reduce((a, b) => a + b) : 0}px`;\n\n style[\n `--field-control-layout-${postfix}-slots-length` as 'width'\n ] = `${sizes.length}`;\n\n return style;\n};\n\n// ToDo: Удалить после того как удалим из всех компонентов \"clearClear\"\nexport const formGuard = (from: FieldPropForm | 'clearClear'): FieldPropForm =>\n from === 'clearClear' ? 'clear' : from;\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["isNotNil","borderRadiusMap","borderWidthMap","paddingMap","getSlots","side","Array","isArray","filter","item","borderToCss","value","getBorderStyle","form","view","paddingToCss","additional","getPaddingVertical","getPaddingLeft","getPaddingRight","borderRadiusToCss","getBorderRadius","map","join","getBorderColor","focused","hovered","status","disabled","getBgColor","getSlotsWidthStyles","sizes","postfix","style","index","length","reduce","a","b","formGuard","from"],"sources":["../../../../../../src/components/FieldComponents/FieldControlLayout/helpers.ts"],"sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { isNotNil } from '##/utils/type-guards';\n\nimport { FieldPropForm, FieldPropStatus, FieldPropView } from '../types';\nimport {\n borderRadiusMap,\n borderWidthMap,\n FieldControlLayoutBorderRadiusNode,\n FieldControlLayoutBorderWidthNode,\n FieldControlLayoutPaddingNode,\n paddingMap,\n} from './maps';\n\nexport const getSlots = (\n side: React.ReactNode | React.ReactNode[],\n): React.ReactNode[] => {\n return ((Array.isArray(side) ? side : [side]) as []).filter(\n (item) => isNotNil(item) && item !== false,\n );\n};\n\nconst borderToCss = (value: FieldControlLayoutBorderWidthNode) => {\n return value ? 'solid' : 'none';\n};\n\nexport const getBorderStyle = (\n form: FieldPropForm,\n view: FieldPropView,\n): string => {\n return view === 'default'\n ? `solid ${borderToCss(borderWidthMap[form][1])} solid ${borderToCss(\n borderWidthMap[form][0],\n )}`\n : `none`;\n};\n\nconst paddingToCss = (\n value: FieldControlLayoutPaddingNode,\n additional: string = '0px',\n): string => {\n return value === 'increased'\n ? `calc(var(--field-control-layout-space) * 1.6 + ${additional})`\n : `calc(var(--field-control-layout-space) + ${additional})`;\n};\n\nexport const getPaddingVertical = (view: FieldPropView): string => {\n return view === 'default' ? '0px' : 'var(--control-border-width)';\n};\n\nexport const getPaddingLeft = (\n view: FieldPropView,\n form: FieldPropForm,\n): string => {\n return view === 'default'\n ? paddingToCss(\n paddingMap[form][0],\n 'var(--field-control-layout-additional-padding-left, 0px)',\n )\n : `var(--field-control-layout-additional-padding-left, 0px)`;\n};\n\nexport const getPaddingRight = (\n view: FieldPropView,\n form: FieldPropForm,\n): string => {\n return view === 'default'\n ? paddingToCss(\n paddingMap[form][1],\n 'var(--field-control-layout-additional-padding-right, 0px)',\n )\n : `var(--field-control-layout-additional-padding-right, 0px)`;\n};\n\nconst borderRadiusToCss = (\n value: FieldControlLayoutBorderRadiusNode,\n): string => {\n if (value === 'default') {\n return 'var(--control-radius)';\n }\n if (value === 'round') {\n return 'calc(var(--field-control-layout-height) / 2)';\n }\n return '0px';\n};\n\nexport const getBorderRadius = (\n form: FieldPropForm,\n view: FieldPropView,\n): string => {\n return view === 'default'\n ? borderRadiusMap[form].map(borderRadiusToCss).join(' ')\n : `0px 0px 0px 0px`;\n};\n\nexport const getBorderColor = (\n focused?: boolean,\n hovered?: boolean,\n status?: FieldPropStatus,\n disabled?: boolean,\n) => {\n if (disabled) {\n return 'transparent';\n }\n if (focused) {\n return 'var(--color-control-bg-border-focus)';\n }\n if (hovered) {\n return 'var(--color-control-bg-border-default-hover)';\n }\n if (status) {\n return `var(--color-bg-${status})`;\n }\n return 'var(--color-control-bg-border-default)';\n};\n\nexport const getBgColor = (view: FieldPropView, disabled?: boolean) => {\n if (view === 'default' && disabled) {\n return 'var(--color-control-bg-disable)';\n }\n if (view === 'default') {\n return 'var(--color-bg-default)';\n }\n};\n\nexport const getSlotsWidthStyles = (\n sizes: number[],\n postfix: string,\n): CSSProperties => {\n const style: CSSProperties = {};\n for (let index = 0; index < sizes.length; index++) {\n style[\n `--field-control-layout-${postfix}-slot-content-width-${index}` as 'width'\n ] = `${sizes[index]}px`;\n }\n\n style[\n `--field-control-layout-${postfix}-slot-contents-width` as 'width'\n ] = `${sizes.length ? sizes.reduce((a, b) => a + b) : 0}px`;\n\n style[\n `--field-control-layout-${postfix}-slots-length` as 'width'\n ] = `${sizes.length}`;\n\n return style;\n};\n\n// ToDo: Удалить после того как удалим из всех компонентов \"clearClear\"\nexport const formGuard = (from: FieldPropForm | 'clearClear'): FieldPropForm =>\n from === 'clearClear' ? 'clear' : from;\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ export type FlatSelectRootProps = PropsWithHTMLAttributesAndRef<{
9
9
  direction?: Direction;
10
10
  spareDirection?: Direction;
11
11
  possibleDirections?: Direction[];
12
+ viewportRef?: React.RefObject<HTMLElement>;
12
13
  }, HTMLDivElement>;
13
14
  export declare const cnFlatSelectRoot: import("@bem-react/classname").ClassNameFormatter;
14
15
  export declare const FlatSelectRoot: React.FC<FlatSelectRootProps>;
@@ -1,2 +1,2 @@
1
- import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","anchorRef","openAtom","direction","spareDirection","possibleDirections"];import"./FlatSelectRoot.css";import{useAtom}from"@reatom/npm-react";import React,{forwardRef,useRef}from"react";import{Transition}from"react-transition-group";import{Popover}from"../../Popover";import{useForkRef}from"../../../hooks/useForkRef";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate";import{cn}from"../../../utils/bem";export var cnFlatSelectRoot=cn("FlatSelectRoot");export var FlatSelectRoot=forwardRef(function(a,b){var c=a.className,d=a.anchorRef,e=a.openAtom,f=a.direction,g=void 0===f?"downStartLeft":f,h=a.spareDirection,i=void 0===h?"downStartLeft":h,j=a.possibleDirections,k=void 0===j?["downStartLeft","downStartRight","upStartLeft","upStartRight","leftStartDown","leftStartUp"]:j,l=_objectWithoutProperties(a,_excluded),m=useRef(null),n=useForkRef([m,b]),o=!!d,p=useAtom(e),q=_slicedToArray(p,1),r=q[0];return o?React.createElement(Transition,{in:r,unmountOnExit:!0,timeout:animateTimeout,nodeRef:m},function(a){return React.createElement(Popover,Object.assign({},l,{className:cnFlatSelectRoot({withAnchor:o},[c,cnMixPopoverAnimate({animate:a})]),ref:n,anchorRef:d,equalAnchorWidth:!0,offset:"2xs",direction:g,spareDirection:i,possibleDirections:k}))}):React.createElement("div",Object.assign({},l,{className:cnFlatSelectRoot(null,[c]),ref:b}))});
1
+ import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","anchorRef","openAtom","direction","spareDirection","possibleDirections","viewportRef"];import"./FlatSelectRoot.css";import{useAtom}from"@reatom/npm-react";import React,{forwardRef,useRef}from"react";import{Transition}from"react-transition-group";import{Popover}from"../../Popover";import{useForkRef}from"../../../hooks/useForkRef";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate";import{cn}from"../../../utils/bem";export var cnFlatSelectRoot=cn("FlatSelectRoot");export var FlatSelectRoot=forwardRef(function(a,b){var c=a.className,d=a.anchorRef,e=a.openAtom,f=a.direction,g=void 0===f?"downStartLeft":f,h=a.spareDirection,i=void 0===h?"downStartLeft":h,j=a.possibleDirections,k=void 0===j?["downStartLeft","downStartRight","upStartLeft","upStartRight","leftStartDown","leftStartUp"]:j,l=a.viewportRef,m=_objectWithoutProperties(a,_excluded),n=useRef(null),o=useForkRef([n,b]),p=!!d,q=useAtom(e),r=_slicedToArray(q,1),s=r[0];return p?React.createElement(Transition,{in:s,unmountOnExit:!0,timeout:animateTimeout,nodeRef:n},function(a){return React.createElement(Popover,Object.assign({},m,{className:cnFlatSelectRoot({withAnchor:p},[c,cnMixPopoverAnimate({animate:a})]),ref:o,anchorRef:d,equalAnchorWidth:!0,offset:"2xs",direction:g,spareDirection:i,possibleDirections:k,viewportRef:l}))}):React.createElement("div",Object.assign({},m,{className:cnFlatSelectRoot(null,[c]),ref:b}))});
2
2
  //# sourceMappingURL=FlatSelectRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlatSelectRoot.js","names":["useAtom","React","forwardRef","useRef","Transition","Popover","useForkRef","animateTimeout","cnMixPopoverAnimate","cn","cnFlatSelectRoot","FlatSelectRoot","props","ref","className","anchorRef","openAtom","direction","spareDirection","possibleDirections","otherProps","contentRef","contentForkedRef","withAnchor","open","animate"],"sources":["../../../../../../src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.tsx"],"sourcesContent":["import './FlatSelectRoot.css';\n\nimport { AtomMut } from '@reatom/framework';\nimport { useAtom } from '@reatom/npm-react';\nimport React, { forwardRef, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Direction, Popover } from '##/components/Popover';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { animateTimeout, cnMixPopoverAnimate } from '##/mixs/MixPopoverAnimate';\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type FlatSelectRootProps = PropsWithHTMLAttributesAndRef<\n {\n anchorRef?: React.RefObject<HTMLElement>;\n openAtom: AtomMut<boolean>;\n direction?: Direction;\n spareDirection?: Direction;\n possibleDirections?: Direction[];\n },\n HTMLDivElement\n>;\n\nexport const cnFlatSelectRoot = cn('FlatSelectRoot');\n\nexport const FlatSelectRoot: React.FC<FlatSelectRootProps> = forwardRef(\n (props, ref) => {\n const {\n className,\n anchorRef,\n openAtom,\n direction = 'downStartLeft',\n spareDirection = 'downStartLeft',\n possibleDirections = [\n 'downStartLeft',\n 'downStartRight',\n 'upStartLeft',\n 'upStartRight',\n 'leftStartDown',\n 'leftStartUp',\n ],\n ...otherProps\n } = props;\n\n const contentRef = useRef(null);\n const contentForkedRef = useForkRef([contentRef, ref]);\n const withAnchor = !!anchorRef;\n const [open] = useAtom(openAtom);\n\n if (withAnchor) {\n return (\n <Transition\n in={open}\n unmountOnExit\n timeout={animateTimeout}\n nodeRef={contentRef}\n >\n {(animate) => (\n <Popover\n {...otherProps}\n className={cnFlatSelectRoot({ withAnchor }, [\n className,\n cnMixPopoverAnimate({ animate }),\n ])}\n ref={contentForkedRef}\n anchorRef={anchorRef}\n equalAnchorWidth\n offset=\"2xs\"\n direction={direction}\n spareDirection={spareDirection}\n possibleDirections={possibleDirections}\n />\n )}\n </Transition>\n );\n }\n\n return (\n <div\n {...otherProps}\n className={cnFlatSelectRoot(null, [className])}\n ref={ref}\n />\n );\n },\n);\n"],"mappings":"2PAAA,6BAGA,OAASA,OAAT,KAAwB,mBAAxB,CACA,MAAOC,MAAP,EAAgBC,UAAhB,CAA4BC,MAA5B,KAA0C,OAA1C,CACA,OAASC,UAAT,KAA2B,wBAA3B,CAEA,OAAoBC,OAApB,qBACA,OAASC,UAAT,iCACA,OAASC,cAAT,CAAyBC,mBAAzB,uCACA,OAASC,EAAT,0BAcA,MAAO,IAAMC,iBAAgB,CAAGD,EAAE,CAAC,gBAAD,CAA3B,CAEP,MAAO,IAAME,eAA6C,CAAGT,UAAU,CACrE,SAACU,CAAD,CAAQC,CAAR,CAAgB,IAEZC,EAFY,CAgBVF,CAhBU,CAEZE,SAFY,CAGZC,CAHY,CAgBVH,CAhBU,CAGZG,SAHY,CAIZC,CAJY,CAgBVJ,CAhBU,CAIZI,QAJY,GAgBVJ,CAhBU,CAKZK,SALY,CAKZA,CALY,YAKA,eALA,KAgBVL,CAhBU,CAMZM,cANY,CAMZA,CANY,YAMK,eANL,KAgBVN,CAhBU,CAOZO,kBAPY,CAOZA,CAPY,YAOS,CACnB,eADmB,CAEnB,gBAFmB,CAGnB,aAHmB,CAInB,cAJmB,CAKnB,eALmB,CAMnB,aANmB,CAPT,GAeTC,CAfS,0BAgBVR,CAhBU,YAkBRS,CAAU,CAAGlB,MAAM,CAAC,IAAD,CAlBX,CAmBRmB,CAAgB,CAAGhB,UAAU,CAAC,CAACe,CAAD,CAAaR,CAAb,CAAD,CAnBrB,CAoBRU,CAAU,CAAG,CAAC,CAACR,CApBP,GAqBCf,OAAO,CAACgB,CAAD,CArBR,uBAqBPQ,CArBO,YAuBVD,EAvBU,CAyBV,oBAAC,UAAD,EACE,GAAIC,CADN,CAEE,aAAa,GAFf,CAGE,OAAO,CAAEjB,cAHX,CAIE,OAAO,CAAEc,CAJX,EAMG,SAACI,CAAD,QACC,qBAAC,OAAD,kBACML,CADN,EAEE,SAAS,CAAEV,gBAAgB,CAAC,CAAEa,UAAU,CAAVA,CAAF,CAAD,CAAiB,CAC1CT,CAD0C,CAE1CN,mBAAmB,CAAC,CAAEiB,OAAO,CAAPA,CAAF,CAAD,CAFuB,CAAjB,CAF7B,CAME,GAAG,CAAEH,CANP,CAOE,SAAS,CAAEP,CAPb,CAQE,gBAAgB,GARlB,CASE,MAAM,CAAC,KATT,CAUE,SAAS,CAAEE,CAVb,CAWE,cAAc,CAAEC,CAXlB,CAYE,kBAAkB,CAAEC,CAZtB,GADD,CANH,CAzBU,CAoDZ,2CACMC,CADN,EAEE,SAAS,CAAEV,gBAAgB,CAAC,IAAD,CAAO,CAACI,CAAD,CAAP,CAF7B,CAGE,GAAG,CAAED,CAHP,GAMH,CA3DoE,CAAhE"}
1
+ {"version":3,"file":"FlatSelectRoot.js","names":["useAtom","React","forwardRef","useRef","Transition","Popover","useForkRef","animateTimeout","cnMixPopoverAnimate","cn","cnFlatSelectRoot","FlatSelectRoot","props","ref","className","anchorRef","openAtom","direction","spareDirection","possibleDirections","viewportRef","otherProps","contentRef","contentForkedRef","withAnchor","open","animate"],"sources":["../../../../../../src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.tsx"],"sourcesContent":["import './FlatSelectRoot.css';\n\nimport { AtomMut } from '@reatom/framework';\nimport { useAtom } from '@reatom/npm-react';\nimport React, { forwardRef, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Direction, Popover } from '##/components/Popover';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { animateTimeout, cnMixPopoverAnimate } from '##/mixs/MixPopoverAnimate';\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type FlatSelectRootProps = PropsWithHTMLAttributesAndRef<\n {\n anchorRef?: React.RefObject<HTMLElement>;\n openAtom: AtomMut<boolean>;\n direction?: Direction;\n spareDirection?: Direction;\n possibleDirections?: Direction[];\n viewportRef?: React.RefObject<HTMLElement>;\n },\n HTMLDivElement\n>;\n\nexport const cnFlatSelectRoot = cn('FlatSelectRoot');\n\nexport const FlatSelectRoot: React.FC<FlatSelectRootProps> = forwardRef(\n (props, ref) => {\n const {\n className,\n anchorRef,\n openAtom,\n direction = 'downStartLeft',\n spareDirection = 'downStartLeft',\n possibleDirections = [\n 'downStartLeft',\n 'downStartRight',\n 'upStartLeft',\n 'upStartRight',\n 'leftStartDown',\n 'leftStartUp',\n ],\n viewportRef,\n ...otherProps\n } = props;\n\n const contentRef = useRef(null);\n const contentForkedRef = useForkRef([contentRef, ref]);\n const withAnchor = !!anchorRef;\n const [open] = useAtom(openAtom);\n\n if (withAnchor) {\n return (\n <Transition\n in={open}\n unmountOnExit\n timeout={animateTimeout}\n nodeRef={contentRef}\n >\n {(animate) => (\n <Popover\n {...otherProps}\n className={cnFlatSelectRoot({ withAnchor }, [\n className,\n cnMixPopoverAnimate({ animate }),\n ])}\n ref={contentForkedRef}\n anchorRef={anchorRef}\n equalAnchorWidth\n offset=\"2xs\"\n direction={direction}\n spareDirection={spareDirection}\n possibleDirections={possibleDirections}\n viewportRef={viewportRef}\n />\n )}\n </Transition>\n );\n }\n\n return (\n <div\n {...otherProps}\n className={cnFlatSelectRoot(null, [className])}\n ref={ref}\n />\n );\n },\n);\n"],"mappings":"yQAAA,6BAGA,OAASA,OAAT,KAAwB,mBAAxB,CACA,MAAOC,MAAP,EAAgBC,UAAhB,CAA4BC,MAA5B,KAA0C,OAA1C,CACA,OAASC,UAAT,KAA2B,wBAA3B,CAEA,OAAoBC,OAApB,qBACA,OAASC,UAAT,iCACA,OAASC,cAAT,CAAyBC,mBAAzB,uCACA,OAASC,EAAT,0BAeA,MAAO,IAAMC,iBAAgB,CAAGD,EAAE,CAAC,gBAAD,CAA3B,CAEP,MAAO,IAAME,eAA6C,CAAGT,UAAU,CACrE,SAACU,CAAD,CAAQC,CAAR,CAAgB,IAEZC,EAFY,CAiBVF,CAjBU,CAEZE,SAFY,CAGZC,CAHY,CAiBVH,CAjBU,CAGZG,SAHY,CAIZC,CAJY,CAiBVJ,CAjBU,CAIZI,QAJY,GAiBVJ,CAjBU,CAKZK,SALY,CAKZA,CALY,YAKA,eALA,KAiBVL,CAjBU,CAMZM,cANY,CAMZA,CANY,YAMK,eANL,KAiBVN,CAjBU,CAOZO,kBAPY,CAOZA,CAPY,YAOS,CACnB,eADmB,CAEnB,gBAFmB,CAGnB,aAHmB,CAInB,cAJmB,CAKnB,eALmB,CAMnB,aANmB,CAPT,GAeZC,CAfY,CAiBVR,CAjBU,CAeZQ,WAfY,CAgBTC,CAhBS,0BAiBVT,CAjBU,YAmBRU,CAAU,CAAGnB,MAAM,CAAC,IAAD,CAnBX,CAoBRoB,CAAgB,CAAGjB,UAAU,CAAC,CAACgB,CAAD,CAAaT,CAAb,CAAD,CApBrB,CAqBRW,CAAU,CAAG,CAAC,CAACT,CArBP,GAsBCf,OAAO,CAACgB,CAAD,CAtBR,uBAsBPS,CAtBO,YAwBVD,EAxBU,CA0BV,oBAAC,UAAD,EACE,GAAIC,CADN,CAEE,aAAa,GAFf,CAGE,OAAO,CAAElB,cAHX,CAIE,OAAO,CAAEe,CAJX,EAMG,SAACI,CAAD,QACC,qBAAC,OAAD,kBACML,CADN,EAEE,SAAS,CAAEX,gBAAgB,CAAC,CAAEc,UAAU,CAAVA,CAAF,CAAD,CAAiB,CAC1CV,CAD0C,CAE1CN,mBAAmB,CAAC,CAAEkB,OAAO,CAAPA,CAAF,CAAD,CAFuB,CAAjB,CAF7B,CAME,GAAG,CAAEH,CANP,CAOE,SAAS,CAAER,CAPb,CAQE,gBAAgB,GARlB,CASE,MAAM,CAAC,KATT,CAUE,SAAS,CAAEE,CAVb,CAWE,cAAc,CAAEC,CAXlB,CAYE,kBAAkB,CAAEC,CAZtB,CAaE,WAAW,CAAEC,CAbf,GADD,CANH,CA1BU,CAsDZ,2CACMC,CADN,EAEE,SAAS,CAAEX,gBAAgB,CAAC,IAAD,CAAO,CAACI,CAAD,CAAP,CAF7B,CAGE,GAAG,CAAED,CAHP,GAMH,CA7DoE,CAAhE"}
@@ -101,6 +101,7 @@ export type FlatSelectPropsInit<ITEM = FlatSelectItemDefault, GROUP = FlatSelect
101
101
  direction?: Direction;
102
102
  spareDirection?: Direction;
103
103
  possibleDirections?: Direction[];
104
+ viewportRef?: React.RefObject<HTMLElement>;
104
105
  }, HTMLDivElement>;
105
106
  /**
106
107
  * Props for the FlatSelect component.
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/components/FlatSelect/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { FieldPropSize, FieldPropView } from '##/components/FieldComponents';\nimport { Direction } from '##/components/Popover';\nimport { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type RenderItemProps<ITEM> = {\n item: ITEM;\n active: boolean;\n hovered: boolean;\n onClick: (e: React.MouseEvent) => void;\n onMouseEnter: (e: React.MouseEvent) => void;\n ref: React.Ref<HTMLDivElement>;\n};\n\nexport type FlatSelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type FlatSelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\nexport type FlatSelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type FlatSelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type FlatSelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type FlatSelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type FlatSelectPropGetGroupKey<GROUP> = (\n group: GROUP,\n) => string | number;\nexport type FlatSelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\nexport type FlatSelectPropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\nexport type FlatSelectPropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type FlatSelectPropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type FlatSelectPropRenderValue<ITEM, MULTIPLE> = MULTIPLE extends true\n ? (props: {\n value: ITEM[];\n getRemove: (\n item: ITEM,\n ) => (e: React.SyntheticEvent<Element, Event>) => void;\n }) => React.ReactNode | null\n : (props: { value: ITEM }) => React.ReactNode | null;\n\nexport type FlatSelectPropOnCreate = (\n label: string,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type FlatSelectAllItem = {\n groupKey: string | number;\n __optionSelectAll: true;\n};\n\nexport type Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\n\nexport type CountedGroup<ITEM, GROUP> = Omit<Group<ITEM, GROUP>, 'items'> & {\n items: Array<FlatSelectAllItem | ITEM>;\n};\n\nexport type FlatSelectPropForm = 'default' | 'brick' | 'round';\n\nexport type FlatSelectPropsInit<\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: FlatSelectPropOnChange<ITEM, MULTIPLE>;\n disabled?: boolean;\n form?: 'default' | 'brick' | 'round';\n placeholder?: string;\n size?: FieldPropSize;\n isLoading?: boolean;\n listRef?: React.Ref<HTMLDivElement>;\n renderItem?: FlatSelectPropRenderItem<ITEM>;\n onInputFocus?: React.FocusEventHandler<HTMLInputElement>;\n onInputBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: FlatSelectPropOnCreate;\n inputRef?: React.Ref<HTMLInputElement>;\n input?: boolean;\n inputValue?: string;\n inputDefaultValue?: string;\n onInput?: (value: string) => void;\n labelForCreate?:\n | ((label: string | undefined) => React.ReactNode)\n | React.ReactNode;\n labelForEmptyItems?: string;\n multiple?: MULTIPLE;\n value?: FlatSelectPropValue<ITEM, MULTIPLE>;\n groups?: GROUP[];\n getItemLabel?: FlatSelectPropGetItemLabel<ITEM>;\n getItemKey?: FlatSelectPropGetItemKey<ITEM>;\n getItemGroupKey?: FlatSelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: FlatSelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: FlatSelectPropGetGroupLabel<GROUP>;\n getGroupKey?: FlatSelectPropGetGroupKey<GROUP>;\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n onOpen?: (isOpen: boolean) => void;\n isOpen?: boolean;\n listClassName?: string;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n clearButton?: boolean;\n iconClear?: IconComponent;\n iconLeft?: IconComponent;\n selectAll?: MULTIPLE extends true ? boolean : never;\n selectAllLabel?: string;\n footer?: React.ReactNode;\n view?: FieldPropView;\n bordered?: boolean;\n anchorRef?: React.RefObject<HTMLElement>;\n direction?: Direction;\n spareDirection?: Direction;\n possibleDirections?: Direction[];\n },\n HTMLDivElement\n>;\n\n/**\n * Props for the FlatSelect component.\n *\n * This type defines the props for the FlatSelect component, which is a customizable select component.\n * It allows for single or multiple selection, and supports grouping of items.\n * The component can be customized by providing custom item and group types.\n *\n * @template ITEM The type of the items in the select. Defaults to FlatSelectItemDefault.\n * @template GROUP The type of the groups in the select. Defaults to FlatSelectGroupDefault.\n * @template MULTIPLE Whether the select allows multiple selection. Defaults to false.\n */\nexport type FlatSelectProps<\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = FlatSelectPropsInit<ITEM, GROUP, MULTIPLE> &\n (ITEM extends { label: FlatSelectItemDefault['label'] }\n ? {}\n : { getItemLabel: FlatSelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: FlatSelectItemDefault['id'] }\n ? {}\n : { getItemKey: FlatSelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: FlatSelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: FlatSelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: FlatSelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: FlatSelectPropGetGroupKey<GROUP> });\n\nexport type FlatSelectComponent = <\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(\n props: FlatSelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactNode | null;\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/components/FlatSelect/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { FieldPropSize, FieldPropView } from '##/components/FieldComponents';\nimport { Direction } from '##/components/Popover';\nimport { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type RenderItemProps<ITEM> = {\n item: ITEM;\n active: boolean;\n hovered: boolean;\n onClick: (e: React.MouseEvent) => void;\n onMouseEnter: (e: React.MouseEvent) => void;\n ref: React.Ref<HTMLDivElement>;\n};\n\nexport type FlatSelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type FlatSelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\nexport type FlatSelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type FlatSelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type FlatSelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type FlatSelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type FlatSelectPropGetGroupKey<GROUP> = (\n group: GROUP,\n) => string | number;\nexport type FlatSelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\nexport type FlatSelectPropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\nexport type FlatSelectPropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type FlatSelectPropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type FlatSelectPropRenderValue<ITEM, MULTIPLE> = MULTIPLE extends true\n ? (props: {\n value: ITEM[];\n getRemove: (\n item: ITEM,\n ) => (e: React.SyntheticEvent<Element, Event>) => void;\n }) => React.ReactNode | null\n : (props: { value: ITEM }) => React.ReactNode | null;\n\nexport type FlatSelectPropOnCreate = (\n label: string,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type FlatSelectAllItem = {\n groupKey: string | number;\n __optionSelectAll: true;\n};\n\nexport type Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\n\nexport type CountedGroup<ITEM, GROUP> = Omit<Group<ITEM, GROUP>, 'items'> & {\n items: Array<FlatSelectAllItem | ITEM>;\n};\n\nexport type FlatSelectPropForm = 'default' | 'brick' | 'round';\n\nexport type FlatSelectPropsInit<\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: FlatSelectPropOnChange<ITEM, MULTIPLE>;\n disabled?: boolean;\n form?: 'default' | 'brick' | 'round';\n placeholder?: string;\n size?: FieldPropSize;\n isLoading?: boolean;\n listRef?: React.Ref<HTMLDivElement>;\n renderItem?: FlatSelectPropRenderItem<ITEM>;\n onInputFocus?: React.FocusEventHandler<HTMLInputElement>;\n onInputBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: FlatSelectPropOnCreate;\n inputRef?: React.Ref<HTMLInputElement>;\n input?: boolean;\n inputValue?: string;\n inputDefaultValue?: string;\n onInput?: (value: string) => void;\n labelForCreate?:\n | ((label: string | undefined) => React.ReactNode)\n | React.ReactNode;\n labelForEmptyItems?: string;\n multiple?: MULTIPLE;\n value?: FlatSelectPropValue<ITEM, MULTIPLE>;\n groups?: GROUP[];\n getItemLabel?: FlatSelectPropGetItemLabel<ITEM>;\n getItemKey?: FlatSelectPropGetItemKey<ITEM>;\n getItemGroupKey?: FlatSelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: FlatSelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: FlatSelectPropGetGroupLabel<GROUP>;\n getGroupKey?: FlatSelectPropGetGroupKey<GROUP>;\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n onOpen?: (isOpen: boolean) => void;\n isOpen?: boolean;\n listClassName?: string;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n clearButton?: boolean;\n iconClear?: IconComponent;\n iconLeft?: IconComponent;\n selectAll?: MULTIPLE extends true ? boolean : never;\n selectAllLabel?: string;\n footer?: React.ReactNode;\n view?: FieldPropView;\n bordered?: boolean;\n anchorRef?: React.RefObject<HTMLElement>;\n direction?: Direction;\n spareDirection?: Direction;\n possibleDirections?: Direction[];\n viewportRef?: React.RefObject<HTMLElement>;\n },\n HTMLDivElement\n>;\n\n/**\n * Props for the FlatSelect component.\n *\n * This type defines the props for the FlatSelect component, which is a customizable select component.\n * It allows for single or multiple selection, and supports grouping of items.\n * The component can be customized by providing custom item and group types.\n *\n * @template ITEM The type of the items in the select. Defaults to FlatSelectItemDefault.\n * @template GROUP The type of the groups in the select. Defaults to FlatSelectGroupDefault.\n * @template MULTIPLE Whether the select allows multiple selection. Defaults to false.\n */\nexport type FlatSelectProps<\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = FlatSelectPropsInit<ITEM, GROUP, MULTIPLE> &\n (ITEM extends { label: FlatSelectItemDefault['label'] }\n ? {}\n : { getItemLabel: FlatSelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: FlatSelectItemDefault['id'] }\n ? {}\n : { getItemKey: FlatSelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: FlatSelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: FlatSelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: FlatSelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: FlatSelectPropGetGroupKey<GROUP> });\n\nexport type FlatSelectComponent = <\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(\n props: FlatSelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactNode | null;\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["placeholder","onBlur","onFocus","items","onChange","value","required","disabled","ariaLabel","id","dropdownRef","form","view","size","dropdownClassName","name","groups","getItemLabel","labelForEmptyItems","getItemKey","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","isLoading","renderValue","inputRef","style","dropdownForm","onDropdownOpen","onScrollToBottom","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs"];import"../SelectComponents/Select.css";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useRef}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{cnSelect,COMPONENT_NAME}from"../SelectComponents/cnSelect";import{defaultLabelForEmptyItems}from"../SelectComponents/helpers";import{SelectContainer}from"../SelectComponents/SelectContainer";import{SelectDropdown}from"../SelectComponents/SelectDropdown";import{SelectItem}from"../SelectComponents/SelectItem";import{defaultPropForm,defaultPropSize,defaultPropView}from"../SelectComponents/types";import{useSelect}from"../SelectComponents/useSelect";import{useForkRef}from"../../hooks/useForkRef";import{isNotNil}from"../../utils/type-guards";import{iconSizeMap,withDefaultGetters}from"./helpers";var SelectRender=function(a,b){var c=useRef(null),d=useRef(null),e=usePropsHandler(COMPONENT_NAME,withDefaultGetters(a),d),f=e.placeholder,g=e.onBlur,h=e.onFocus,i=e.items,j=e.onChange,k=e.value,l=e.required,m=e.disabled,n=e.ariaLabel,o=e.id,p=e.dropdownRef,q=e.form,r=void 0===q?defaultPropForm:q,s=e.view,t=void 0===s?defaultPropView:s,u=e.size,v=void 0===u?defaultPropSize:u,w=e.dropdownClassName,x=e.name,y=e.groups,z=void 0===y?[]:y,A=e.getItemLabel,B=e.labelForEmptyItems,C=void 0===B?defaultLabelForEmptyItems:B,D=e.getItemKey,E=e.getItemGroupKey,F=e.getItemDisabled,G=e.getGroupKey,H=e.getGroupLabel,I=e.renderItem,J=e.isLoading,K=e.renderValue,L=e.inputRef,M=e.style,N=e.dropdownForm,O=void 0===N?"default":N,P=e.onDropdownOpen,Q=e.onScrollToBottom,R=e.virtualScroll,S=e.dropdownOpen,T=e.ignoreOutsideClicksRefs,U=_objectWithoutProperties(e,_excluded),V=useSelect({items:i,groups:z,value:k,onChange:j,dropdownRef:c,controlRef:d,disabled:m,getItemLabel:A,getItemKey:D,getGroupKey:G,getItemGroupKey:E,getItemDisabled:F,multiple:!1,onBlur:g,onFocus:h,onDropdownOpen:P,dropdownOpen:S,ignoreOutsideClicksRefs:T}),W=V.getKeyProps,X=V.getOptionProps,Y=V.isOpen,Z=V.visibleItems,$=V.isFocused,_=V.handleInputFocus,aa=V.handleInputBlur,ba=V.handleToggleDropdown,ca=V.inputRef,da=V.handleInputClick,ea=V.notFound,fa=V.hasItems,ga=V.optionsRefs,ha=o?"".concat(o,"-input"):o;return React.createElement(React.Fragment,null,React.createElement(SelectContainer,Object.assign({focused:$,disabled:m,size:v,view:t,form:r,required:l,ref:b,style:M,id:ha},U),React.createElement("div",{className:cnSelect("Control"),ref:d,"aria-expanded":Y,"aria-haspopup":"listbox",id:o},React.createElement("div",{className:cnSelect("ControlInner")},React.createElement("div",{className:cnSelect("ControlValueContainer")},React.createElement("input",Object.assign({},W(),{className:cnSelect("FakeField"),type:"text",name:x,id:ha,onFocus:_,onBlur:aa,"aria-label":n,onClick:da,ref:useForkRef([ca,L]),readOnly:!0})),isNotNil(k)&&(K||function renderValueDefault(a){var b=A(a.item);return React.createElement("span",{className:cnSelect("ControlValue"),title:b},b)})({item:k}),!isNotNil(k)&&f&&React.createElement("span",{className:cnSelect("Placeholder"),title:"placeholder"},f))),React.createElement("span",{className:cnSelect("Indicators")},React.createElement("button",{type:"button",className:cnSelect("IndicatorsDropdown"),tabIndex:-1,onClick:ba},React.createElement(IconSelect,{size:iconSizeMap[v],className:cnSelect("DropdownIndicatorIcon")}))))),React.createElement(SelectDropdown,{isOpen:Y,size:v,controlRef:d,getOptionProps:X,dropdownRef:useForkRef([p,c]),form:O,className:w,renderItem:I||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(SelectItem,{label:A(b),active:c,hovered:d,multiple:!1,size:v,indent:"round"===O?"increased":"normal",onClick:e,onMouseEnter:f,disabled:F(b),ref:g})},getGroupLabel:H,visibleItems:Z,notFound:ea,isLoading:J,labelForEmptyItems:C,hasItems:fa,itemsRefs:ga,virtualScroll:R,onScrollToBottom:Q,style:"number"==typeof(null===M||void 0===M?void 0:M.zIndex)?{zIndex:M.zIndex+1}:void 0}))};export var Select=forwardRef(SelectRender);export*from"./helpers";
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["placeholder","onBlur","onFocus","items","onChange","value","required","disabled","ariaLabel","id","dropdownRef","form","view","size","dropdownClassName","name","groups","getItemLabel","labelForEmptyItems","getItemKey","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","isLoading","renderValue","inputRef","style","dropdownForm","onDropdownOpen","onScrollToBottom","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","dropdownViewportRef"];import"../SelectComponents/Select.css";import{IconSelect}from"@consta/icons/IconSelect";import React,{forwardRef,useRef}from"react";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{cnSelect,COMPONENT_NAME}from"../SelectComponents/cnSelect";import{defaultLabelForEmptyItems}from"../SelectComponents/helpers";import{SelectContainer}from"../SelectComponents/SelectContainer";import{SelectDropdown}from"../SelectComponents/SelectDropdown";import{SelectItem}from"../SelectComponents/SelectItem";import{defaultPropForm,defaultPropSize,defaultPropView}from"../SelectComponents/types";import{useSelect}from"../SelectComponents/useSelect";import{useForkRef}from"../../hooks/useForkRef";import{isNotNil}from"../../utils/type-guards";import{iconSizeMap,withDefaultGetters}from"./helpers";var SelectRender=function(a,b){var c=useRef(null),d=useRef(null),e=usePropsHandler(COMPONENT_NAME,withDefaultGetters(a),d),f=e.placeholder,g=e.onBlur,h=e.onFocus,i=e.items,j=e.onChange,k=e.value,l=e.required,m=e.disabled,n=e.ariaLabel,o=e.id,p=e.dropdownRef,q=e.form,r=void 0===q?defaultPropForm:q,s=e.view,t=void 0===s?defaultPropView:s,u=e.size,v=void 0===u?defaultPropSize:u,w=e.dropdownClassName,x=e.name,y=e.groups,z=void 0===y?[]:y,A=e.getItemLabel,B=e.labelForEmptyItems,C=void 0===B?defaultLabelForEmptyItems:B,D=e.getItemKey,E=e.getItemGroupKey,F=e.getItemDisabled,G=e.getGroupKey,H=e.getGroupLabel,I=e.renderItem,J=e.isLoading,K=e.renderValue,L=e.inputRef,M=e.style,N=e.dropdownForm,O=void 0===N?"default":N,P=e.onDropdownOpen,Q=e.onScrollToBottom,R=e.virtualScroll,S=e.dropdownOpen,T=e.ignoreOutsideClicksRefs,U=e.dropdownViewportRef,V=_objectWithoutProperties(e,_excluded),W=useSelect({items:i,groups:z,value:k,onChange:j,dropdownRef:c,controlRef:d,disabled:m,getItemLabel:A,getItemKey:D,getGroupKey:G,getItemGroupKey:E,getItemDisabled:F,multiple:!1,onBlur:g,onFocus:h,onDropdownOpen:P,dropdownOpen:S,ignoreOutsideClicksRefs:T}),X=W.getKeyProps,Y=W.getOptionProps,Z=W.isOpen,$=W.visibleItems,_=W.isFocused,aa=W.handleInputFocus,ba=W.handleInputBlur,ca=W.handleToggleDropdown,da=W.inputRef,ea=W.handleInputClick,fa=W.notFound,ga=W.hasItems,ha=W.optionsRefs,ia=o?"".concat(o,"-input"):o;return React.createElement(React.Fragment,null,React.createElement(SelectContainer,Object.assign({focused:_,disabled:m,size:v,view:t,form:r,required:l,ref:b,style:M,id:ia},V),React.createElement("div",{className:cnSelect("Control"),ref:d,"aria-expanded":Z,"aria-haspopup":"listbox",id:o},React.createElement("div",{className:cnSelect("ControlInner")},React.createElement("div",{className:cnSelect("ControlValueContainer")},React.createElement("input",Object.assign({},X(),{className:cnSelect("FakeField"),type:"text",name:x,id:ia,onFocus:aa,onBlur:ba,"aria-label":n,onClick:ea,ref:useForkRef([da,L]),readOnly:!0})),isNotNil(k)&&(K||function renderValueDefault(a){var b=A(a.item);return React.createElement("span",{className:cnSelect("ControlValue"),title:b},b)})({item:k}),!isNotNil(k)&&f&&React.createElement("span",{className:cnSelect("Placeholder"),title:"placeholder"},f))),React.createElement("span",{className:cnSelect("Indicators")},React.createElement("button",{type:"button",className:cnSelect("IndicatorsDropdown"),tabIndex:-1,onClick:ca},React.createElement(IconSelect,{size:iconSizeMap[v],className:cnSelect("DropdownIndicatorIcon")}))))),React.createElement(SelectDropdown,{isOpen:Z,size:v,controlRef:d,getOptionProps:Y,dropdownRef:useForkRef([p,c]),form:O,className:w,renderItem:I||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(SelectItem,{label:A(b),active:c,hovered:d,multiple:!1,size:v,indent:"round"===O?"increased":"normal",onClick:e,onMouseEnter:f,disabled:F(b),ref:g})},getGroupLabel:H,visibleItems:$,notFound:fa,isLoading:J,labelForEmptyItems:C,hasItems:ga,itemsRefs:ha,virtualScroll:R,onScrollToBottom:Q,viewportRef:U,style:"number"==typeof(null===M||void 0===M?void 0:M.zIndex)?{zIndex:M.zIndex+1}:void 0}))};export var Select=forwardRef(SelectRender);export*from"./helpers";
2
2
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["IconSelect","React","forwardRef","useRef","usePropsHandler","cnSelect","COMPONENT_NAME","defaultLabelForEmptyItems","SelectContainer","SelectDropdown","SelectItem","defaultPropForm","defaultPropSize","defaultPropView","useSelect","useForkRef","isNotNil","iconSizeMap","withDefaultGetters","SelectRender","props","ref","defaultDropdownRef","controlRef","placeholder","onBlur","onFocus","items","onChange","value","required","disabled","ariaLabel","id","dropdownRef","form","view","size","dropdownClassName","name","groups","getItemLabel","labelForEmptyItems","getItemKey","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","isLoading","renderValueProp","renderValue","inputRefProp","inputRef","style","dropdownForm","onDropdownOpen","onScrollToBottom","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","restProps","multiple","getKeyProps","getOptionProps","isOpen","visibleItems","isFocused","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","notFound","hasItems","optionsRefs","inputId","renderValueDefault","label","item","renderItemDefault","active","hovered","onClick","onMouseEnter","zIndex","Select"],"sources":["../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import '##/components/SelectComponents/Select.css';\n\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport {\n cnSelect,\n COMPONENT_NAME,\n} from '##/components/SelectComponents/cnSelect';\nimport { defaultLabelForEmptyItems } from '##/components/SelectComponents/helpers';\nimport { SelectContainer } from '##/components/SelectComponents/SelectContainer';\nimport { SelectDropdown } from '##/components/SelectComponents/SelectDropdown';\nimport { SelectItem } from '##/components/SelectComponents/SelectItem';\nimport {\n defaultPropForm,\n defaultPropSize,\n defaultPropView,\n} from '##/components/SelectComponents/types';\nimport { useSelect } from '##/components/SelectComponents/useSelect';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { isNotNil } from '##/utils/type-guards';\n\nimport {\n iconSizeMap,\n PropRenderItem,\n PropRenderValue,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectProps,\n withDefaultGetters,\n} from './helpers';\n\nconst SelectRender = <ITEM = SelectItemDefault, GROUP = SelectGroupDefault>(\n props: SelectProps<ITEM, GROUP>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const defaultDropdownRef = useRef<HTMLDivElement>(null);\n const controlRef = useRef<HTMLDivElement | null>(null);\n\n const {\n placeholder,\n onBlur,\n onFocus,\n items,\n onChange,\n value,\n required,\n disabled,\n ariaLabel,\n id,\n dropdownRef,\n form = defaultPropForm,\n view = defaultPropView,\n size = defaultPropSize,\n dropdownClassName,\n name,\n groups = [],\n getItemLabel,\n labelForEmptyItems = defaultLabelForEmptyItems,\n getItemKey,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n getGroupLabel,\n renderItem,\n isLoading,\n renderValue: renderValueProp,\n inputRef: inputRefProp,\n style,\n dropdownForm = 'default',\n onDropdownOpen,\n onScrollToBottom,\n virtualScroll,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n ...restProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), controlRef);\n\n const {\n getKeyProps,\n getOptionProps,\n isOpen,\n visibleItems,\n isFocused,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n notFound,\n hasItems,\n optionsRefs,\n } = useSelect<ITEM, GROUP, false>({\n items,\n groups,\n value,\n onChange,\n dropdownRef: defaultDropdownRef,\n controlRef,\n disabled,\n getItemLabel,\n getItemKey,\n getGroupKey,\n getItemGroupKey,\n getItemDisabled,\n multiple: false,\n onBlur,\n onFocus,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n });\n\n const inputId = id ? `${id}-input` : id;\n\n const renderItemDefault: PropRenderItem<ITEM> = (props) => {\n const { item, active, hovered, onClick, onMouseEnter, ref } = props;\n\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n multiple={false}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n />\n );\n };\n\n const renderValueDefault: PropRenderValue<ITEM> = (props) => {\n const label = getItemLabel(props.item);\n\n return (\n <span className={cnSelect('ControlValue')} title={label}>\n {label}\n </span>\n );\n };\n\n const renderValue = renderValueProp || renderValueDefault;\n\n return (\n <>\n <SelectContainer\n focused={isFocused}\n disabled={disabled}\n size={size}\n view={view}\n form={form}\n required={required}\n ref={ref}\n style={style}\n id={inputId}\n {...restProps}\n >\n <div\n className={cnSelect('Control')}\n ref={controlRef}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n id={id}\n >\n <div className={cnSelect('ControlInner')}>\n <div className={cnSelect('ControlValueContainer')}>\n <input\n {...getKeyProps()}\n className={cnSelect('FakeField')}\n type=\"text\"\n name={name}\n id={inputId}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n aria-label={ariaLabel}\n onClick={handleInputClick}\n ref={useForkRef([inputRef, inputRefProp])}\n readOnly\n />\n {isNotNil(value) && renderValue({ item: value })}\n {!isNotNil(value) && placeholder && (\n <span className={cnSelect('Placeholder')} title=\"placeholder\">\n {placeholder}\n </span>\n )}\n </div>\n </div>\n <span className={cnSelect('Indicators')}>\n <button\n type=\"button\"\n className={cnSelect('IndicatorsDropdown')}\n tabIndex={-1}\n onClick={handleToggleDropdown}\n >\n <IconSelect\n size={iconSizeMap[size]}\n className={cnSelect('DropdownIndicatorIcon')}\n />\n </button>\n </span>\n </div>\n </SelectContainer>\n <SelectDropdown\n isOpen={isOpen}\n size={size}\n controlRef={controlRef}\n getOptionProps={getOptionProps}\n dropdownRef={useForkRef([dropdownRef, defaultDropdownRef])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItems={visibleItems}\n notFound={notFound}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n hasItems={hasItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n style={\n typeof style?.zIndex === 'number'\n ? { zIndex: style.zIndex + 1 }\n : undefined\n }\n />\n </>\n );\n};\n\nexport const Select = forwardRef(SelectRender) as SelectComponent;\n\nexport * from './helpers';\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":["IconSelect","React","forwardRef","useRef","usePropsHandler","cnSelect","COMPONENT_NAME","defaultLabelForEmptyItems","SelectContainer","SelectDropdown","SelectItem","defaultPropForm","defaultPropSize","defaultPropView","useSelect","useForkRef","isNotNil","iconSizeMap","withDefaultGetters","SelectRender","props","ref","defaultDropdownRef","controlRef","placeholder","onBlur","onFocus","items","onChange","value","required","disabled","ariaLabel","id","dropdownRef","form","view","size","dropdownClassName","name","groups","getItemLabel","labelForEmptyItems","getItemKey","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","isLoading","renderValueProp","renderValue","inputRefProp","inputRef","style","dropdownForm","onDropdownOpen","onScrollToBottom","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","dropdownViewportRef","restProps","multiple","getKeyProps","getOptionProps","isOpen","visibleItems","isFocused","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","notFound","hasItems","optionsRefs","inputId","renderValueDefault","label","item","renderItemDefault","active","hovered","onClick","onMouseEnter","zIndex","Select"],"sources":["../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import '##/components/SelectComponents/Select.css';\n\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport {\n cnSelect,\n COMPONENT_NAME,\n} from '##/components/SelectComponents/cnSelect';\nimport { defaultLabelForEmptyItems } from '##/components/SelectComponents/helpers';\nimport { SelectContainer } from '##/components/SelectComponents/SelectContainer';\nimport { SelectDropdown } from '##/components/SelectComponents/SelectDropdown';\nimport { SelectItem } from '##/components/SelectComponents/SelectItem';\nimport {\n defaultPropForm,\n defaultPropSize,\n defaultPropView,\n} from '##/components/SelectComponents/types';\nimport { useSelect } from '##/components/SelectComponents/useSelect';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { isNotNil } from '##/utils/type-guards';\n\nimport {\n iconSizeMap,\n PropRenderItem,\n PropRenderValue,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectProps,\n withDefaultGetters,\n} from './helpers';\n\nconst SelectRender = <ITEM = SelectItemDefault, GROUP = SelectGroupDefault>(\n props: SelectProps<ITEM, GROUP>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const defaultDropdownRef = useRef<HTMLDivElement>(null);\n const controlRef = useRef<HTMLDivElement | null>(null);\n\n const {\n placeholder,\n onBlur,\n onFocus,\n items,\n onChange,\n value,\n required,\n disabled,\n ariaLabel,\n id,\n dropdownRef,\n form = defaultPropForm,\n view = defaultPropView,\n size = defaultPropSize,\n dropdownClassName,\n name,\n groups = [],\n getItemLabel,\n labelForEmptyItems = defaultLabelForEmptyItems,\n getItemKey,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n getGroupLabel,\n renderItem,\n isLoading,\n renderValue: renderValueProp,\n inputRef: inputRefProp,\n style,\n dropdownForm = 'default',\n onDropdownOpen,\n onScrollToBottom,\n virtualScroll,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n dropdownViewportRef,\n ...restProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), controlRef);\n\n const {\n getKeyProps,\n getOptionProps,\n isOpen,\n visibleItems,\n isFocused,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n notFound,\n hasItems,\n optionsRefs,\n } = useSelect<ITEM, GROUP, false>({\n items,\n groups,\n value,\n onChange,\n dropdownRef: defaultDropdownRef,\n controlRef,\n disabled,\n getItemLabel,\n getItemKey,\n getGroupKey,\n getItemGroupKey,\n getItemDisabled,\n multiple: false,\n onBlur,\n onFocus,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n });\n\n const inputId = id ? `${id}-input` : id;\n\n const renderItemDefault: PropRenderItem<ITEM> = (props) => {\n const { item, active, hovered, onClick, onMouseEnter, ref } = props;\n\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n multiple={false}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n />\n );\n };\n\n const renderValueDefault: PropRenderValue<ITEM> = (props) => {\n const label = getItemLabel(props.item);\n\n return (\n <span className={cnSelect('ControlValue')} title={label}>\n {label}\n </span>\n );\n };\n\n const renderValue = renderValueProp || renderValueDefault;\n\n return (\n <>\n <SelectContainer\n focused={isFocused}\n disabled={disabled}\n size={size}\n view={view}\n form={form}\n required={required}\n ref={ref}\n style={style}\n id={inputId}\n {...restProps}\n >\n <div\n className={cnSelect('Control')}\n ref={controlRef}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n id={id}\n >\n <div className={cnSelect('ControlInner')}>\n <div className={cnSelect('ControlValueContainer')}>\n <input\n {...getKeyProps()}\n className={cnSelect('FakeField')}\n type=\"text\"\n name={name}\n id={inputId}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n aria-label={ariaLabel}\n onClick={handleInputClick}\n ref={useForkRef([inputRef, inputRefProp])}\n readOnly\n />\n {isNotNil(value) && renderValue({ item: value })}\n {!isNotNil(value) && placeholder && (\n <span className={cnSelect('Placeholder')} title=\"placeholder\">\n {placeholder}\n </span>\n )}\n </div>\n </div>\n <span className={cnSelect('Indicators')}>\n <button\n type=\"button\"\n className={cnSelect('IndicatorsDropdown')}\n tabIndex={-1}\n onClick={handleToggleDropdown}\n >\n <IconSelect\n size={iconSizeMap[size]}\n className={cnSelect('DropdownIndicatorIcon')}\n />\n </button>\n </span>\n </div>\n </SelectContainer>\n <SelectDropdown\n isOpen={isOpen}\n size={size}\n controlRef={controlRef}\n getOptionProps={getOptionProps}\n dropdownRef={useForkRef([dropdownRef, defaultDropdownRef])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItems={visibleItems}\n notFound={notFound}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n hasItems={hasItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n viewportRef={dropdownViewportRef}\n style={\n typeof style?.zIndex === 'number'\n ? { zIndex: style.zIndex + 1 }\n : undefined\n }\n />\n </>\n );\n};\n\nexport const Select = forwardRef(SelectRender) as SelectComponent;\n\nexport * from './helpers';\n"],"mappings":"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"}
@@ -67,6 +67,7 @@ export type SelectProps<ITEM = SelectItemDefault, GROUP = SelectGroupDefault> =
67
67
  onDropdownOpen?: (isOpen: boolean) => void;
68
68
  dropdownOpen?: boolean;
69
69
  ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
70
+ dropdownViewportRef?: React.RefObject<HTMLElement>;
70
71
  }, HTMLDivElement> & (ITEM extends {
71
72
  label: SelectItemDefault['label'];
72
73
  } ? {} : {
@@ -131,7 +132,8 @@ export declare function withDefaultGetters<ITEM, GROUP>(props: SelectProps<ITEM,
131
132
  onDropdownOpen?: (isOpen: boolean) => void;
132
133
  dropdownOpen?: boolean;
133
134
  ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
134
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "onFocus" | "onBlur" | "onChange" | "size" | "view" | "form" | "status" | "caption" | "label" | "name" | "disabled" | "value" | "placeholder" | "required" | "inputRef" | "items" | "dropdownForm" | "focused" | "ariaLabel" | "dropdownClassName" | "dropdownRef" | "isLoading" | "labelForEmptyItems" | "renderItem" | "renderValue" | "groups" | "getItemLabel" | "getItemKey" | "getItemGroupKey" | "getItemDisabled" | "getGroupLabel" | "getGroupKey" | "labelIcon" | "labelPosition" | "onScrollToBottom" | "onDropdownOpen" | "dropdownOpen" | "ignoreOutsideClicksRefs" | "virtualScroll"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
135
+ dropdownViewportRef?: React.RefObject<HTMLElement>;
136
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "onFocus" | "onBlur" | "onChange" | "size" | "view" | "form" | "status" | "caption" | "label" | "name" | "disabled" | "value" | "placeholder" | "required" | "inputRef" | "items" | "dropdownForm" | "focused" | "ariaLabel" | "dropdownClassName" | "dropdownRef" | "isLoading" | "labelForEmptyItems" | "renderItem" | "renderValue" | "groups" | "getItemLabel" | "getItemKey" | "getItemGroupKey" | "getItemDisabled" | "getGroupLabel" | "getGroupKey" | "labelIcon" | "labelPosition" | "onScrollToBottom" | "onDropdownOpen" | "dropdownOpen" | "ignoreOutsideClicksRefs" | "virtualScroll" | "dropdownViewportRef"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
135
137
  label: SelectItemDefault["label"];
136
138
  } ? {} : {
137
139
  getItemLabel: SelectPropGetItemLabel<ITEM>;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","iconSizeMap","xs","s","m","l"],"sources":["../../../../../src/components/Select/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 SelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type SelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\ntype SelectPropValue<ITEM> = ITEM | null | undefined;\n\ntype SelectRenderValueProps<ITEM> = {\n item: ITEM;\n};\n\nexport type SelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type SelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type SelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type SelectPropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type SelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\nexport type PropRenderValue<ITEM> = (\n props: SelectRenderValueProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type SelectPropOnChange<ITEM> = (\n value: ITEM | null,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type SelectProps<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: SelectPropOnChange<ITEM>;\n disabled?: boolean;\n form?: PropForm;\n dropdownForm?: 'default' | 'brick' | 'round';\n size?: PropSize;\n view?: PropView;\n status?: PropStatus;\n focused?: boolean;\n placeholder?: string;\n ariaLabel?: string;\n dropdownClassName?: string;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n required?: boolean;\n name?: string;\n isLoading?: boolean;\n labelForEmptyItems?: string;\n value?: SelectPropValue<ITEM>;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n inputRef?: React.RefObject<HTMLInputElement>;\n groups?: GROUP[];\n getItemLabel?: SelectPropGetItemLabel<ITEM>;\n getItemKey?: SelectPropGetItemKey<ITEM>;\n getItemGroupKey?: SelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: SelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: SelectPropGetGroupLabel<GROUP>;\n getGroupKey?: SelectPropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n labelPosition?: 'top' | 'left';\n caption?: string;\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n },\n HTMLDivElement\n> &\n (ITEM extends { label: SelectItemDefault['label'] }\n ? {}\n : { getItemLabel: SelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: SelectItemDefault['id'] }\n ? {}\n : { getItemKey: SelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: SelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: SelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: SelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: SelectPropGetGroupKey<GROUP> });\n\nexport type SelectComponent = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nexport const defaultGetItemKey: SelectPropGetItemKey<SelectItemDefault> = (\n item,\n) => item.id;\nexport const defaultGetItemLabel: SelectPropGetItemLabel<SelectItemDefault> = (\n item,\n) => item.label;\nexport const defaultGetItemGroupKey: SelectPropGetItemGroupKey<\n SelectItemDefault\n> = (item) => item.groupId;\nexport const defaultGetItemDisabled: SelectPropGetItemDisabled<\n SelectItemDefault\n> = (item) => item.disabled;\n\nexport const defaultGetGroupKey: SelectPropGetGroupKey<SelectGroupDefault> = (\n group,\n) => group.id;\nexport const defaultGetGroupLabel: SelectPropGetGroupLabel<\n SelectGroupDefault\n> = (group) => group.label;\n\nexport function withDefaultGetters<ITEM, GROUP>(\n props: SelectProps<ITEM, GROUP>,\n) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n };\n}\n\nexport const iconSizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n"],"mappings":"qqBAuHA,MAAO,IAAMA,kBAA0D,CAAG,SACxEC,CADwE,QAErEA,EAAI,CAACC,EAFgE,CAAnE,CAGP,MAAO,IAAMC,oBAA8D,CAAG,SAC5EF,CAD4E,QAEzEA,EAAI,CAACG,KAFoE,CAAvE,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACJ,CAAD,QAAUA,EAAI,CAACK,OAAf,CAFG,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACN,CAAD,QAAUA,EAAI,CAACO,QAAf,CAFG,CAIP,MAAO,IAAMC,mBAA6D,CAAG,SAC3EC,CAD2E,QAExEA,EAAK,CAACR,EAFkE,CAAtE,CAGP,MAAO,IAAMS,qBAEZ,CAAG,SAACD,CAAD,QAAWA,EAAK,CAACN,KAAjB,CAFG,CAIP,MAAO,SAASQ,mBAAT,CACLC,CADK,CAEL,CACA,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBX,mBAFtC,CAGEY,UAAU,CAAEF,CAAK,CAACE,UAAN,EAAoBf,iBAHlC,CAIEgB,eAAe,CAAEH,CAAK,CAACG,eAAN,EAAyBX,sBAJ5C,CAKEY,eAAe,CAAEJ,CAAK,CAACI,eAAN,EAAyBV,sBAL5C,CAMEW,aAAa,CAAEL,CAAK,CAACK,aAAN,EAAuBP,oBANxC,CAOEQ,WAAW,CAAEN,CAAK,CAACM,WAAN,EAAqBV,kBAPpC,EASD,CAED,MAAO,IAAMW,YAA2C,CAAG,CACzDC,EAAE,CAAE,IADqD,CAEzDC,CAAC,CAAE,GAFsD,CAGzDC,CAAC,CAAE,GAHsD,CAIzDC,CAAC,CAAE,GAJsD,CAApD"}
1
+ {"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","iconSizeMap","xs","s","m","l"],"sources":["../../../../../src/components/Select/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 SelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type SelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\ntype SelectPropValue<ITEM> = ITEM | null | undefined;\n\ntype SelectRenderValueProps<ITEM> = {\n item: ITEM;\n};\n\nexport type SelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type SelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type SelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type SelectPropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type SelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\nexport type PropRenderValue<ITEM> = (\n props: SelectRenderValueProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type SelectPropOnChange<ITEM> = (\n value: ITEM | null,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type SelectProps<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: SelectPropOnChange<ITEM>;\n disabled?: boolean;\n form?: PropForm;\n dropdownForm?: 'default' | 'brick' | 'round';\n size?: PropSize;\n view?: PropView;\n status?: PropStatus;\n focused?: boolean;\n placeholder?: string;\n ariaLabel?: string;\n dropdownClassName?: string;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n required?: boolean;\n name?: string;\n isLoading?: boolean;\n labelForEmptyItems?: string;\n value?: SelectPropValue<ITEM>;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n inputRef?: React.RefObject<HTMLInputElement>;\n groups?: GROUP[];\n getItemLabel?: SelectPropGetItemLabel<ITEM>;\n getItemKey?: SelectPropGetItemKey<ITEM>;\n getItemGroupKey?: SelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: SelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: SelectPropGetGroupLabel<GROUP>;\n getGroupKey?: SelectPropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n labelPosition?: 'top' | 'left';\n caption?: string;\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => 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: SelectItemDefault['label'] }\n ? {}\n : { getItemLabel: SelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: SelectItemDefault['id'] }\n ? {}\n : { getItemKey: SelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: SelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: SelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: SelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: SelectPropGetGroupKey<GROUP> });\n\nexport type SelectComponent = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nexport const defaultGetItemKey: SelectPropGetItemKey<SelectItemDefault> = (\n item,\n) => item.id;\nexport const defaultGetItemLabel: SelectPropGetItemLabel<SelectItemDefault> = (\n item,\n) => item.label;\nexport const defaultGetItemGroupKey: SelectPropGetItemGroupKey<\n SelectItemDefault\n> = (item) => item.groupId;\nexport const defaultGetItemDisabled: SelectPropGetItemDisabled<\n SelectItemDefault\n> = (item) => item.disabled;\n\nexport const defaultGetGroupKey: SelectPropGetGroupKey<SelectGroupDefault> = (\n group,\n) => group.id;\nexport const defaultGetGroupLabel: SelectPropGetGroupLabel<\n SelectGroupDefault\n> = (group) => group.label;\n\nexport function withDefaultGetters<ITEM, GROUP>(\n props: SelectProps<ITEM, GROUP>,\n) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n };\n}\n\nexport const iconSizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n"],"mappings":"qqBAwHA,MAAO,IAAMA,kBAA0D,CAAG,SACxEC,CADwE,QAErEA,EAAI,CAACC,EAFgE,CAAnE,CAGP,MAAO,IAAMC,oBAA8D,CAAG,SAC5EF,CAD4E,QAEzEA,EAAI,CAACG,KAFoE,CAAvE,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACJ,CAAD,QAAUA,EAAI,CAACK,OAAf,CAFG,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACN,CAAD,QAAUA,EAAI,CAACO,QAAf,CAFG,CAIP,MAAO,IAAMC,mBAA6D,CAAG,SAC3EC,CAD2E,QAExEA,EAAK,CAACR,EAFkE,CAAtE,CAGP,MAAO,IAAMS,qBAEZ,CAAG,SAACD,CAAD,QAAWA,EAAK,CAACN,KAAjB,CAFG,CAIP,MAAO,SAASQ,mBAAT,CACLC,CADK,CAEL,CACA,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBX,mBAFtC,CAGEY,UAAU,CAAEF,CAAK,CAACE,UAAN,EAAoBf,iBAHlC,CAIEgB,eAAe,CAAEH,CAAK,CAACG,eAAN,EAAyBX,sBAJ5C,CAKEY,eAAe,CAAEJ,CAAK,CAACI,eAAN,EAAyBV,sBAL5C,CAMEW,aAAa,CAAEL,CAAK,CAACK,aAAN,EAAuBP,oBANxC,CAOEQ,WAAW,CAAEN,CAAK,CAACM,WAAN,EAAqBV,kBAPpC,EASD,CAED,MAAO,IAAMW,YAA2C,CAAG,CACzDC,EAAE,CAAE,IADqD,CAEzDC,CAAC,CAAE,GAFsD,CAGzDC,CAAC,CAAE,GAHsD,CAIzDC,CAAC,CAAE,GAJsD,CAApD"}
@@ -48,6 +48,7 @@ type Props<ITEM, GROUP> = PropsWithJsxAttributes<{
48
48
  groupsCounterAtom: AtomMut<Record<string, [number, number]>>;
49
49
  dropdownZIndexAtom: AtomMut<number | undefined>;
50
50
  selectAllLabel: string;
51
+ viewportRef?: React.RefObject<HTMLElement>;
51
52
  }>;
52
53
  type SelectDropdownComponent = <ITEM, GROUP>(props: Props<ITEM, GROUP>) => React.ReactNode | null;
53
54
  export declare const SelectDropdown: SelectDropdownComponent;