@finam/web-ui-kit-components 3.33.2 → 3.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/Avatar/index.d.ts +1 -3
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +1 -5
- package/dist/Avatar/utils.d.ts.map +1 -1
- package/dist/Avatar/utils.js.map +1 -1
- package/dist/Breadcrumbs/Breadcrumb/Breadcrumb.d.ts +2 -1
- package/dist/Breadcrumbs/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/Breadcrumbs/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/Breadcrumbs/utils/getRenderOnPageItems.d.ts.map +1 -1
- package/dist/Breadcrumbs/utils/getRenderOnPageItems.js +7 -8
- package/dist/Breadcrumbs/utils/getRenderOnPageItems.js.map +1 -1
- package/dist/Calendar/Calendar.js +8 -1
- package/dist/Calendar/Calendar.js.map +1 -1
- package/dist/Calendar/Calendar.styles.css +1 -1
- package/dist/Calendar/Calendar.styles.d.ts +1 -1
- package/dist/Calendar/Calendar.styles.d.ts.map +1 -1
- package/dist/Calendar/Calendar.styles.js +1 -1
- package/dist/Calendar/Calendar.styles.js.map +1 -1
- package/dist/Calendar/Day/Day.d.ts +3 -2
- package/dist/Calendar/Day/Day.d.ts.map +1 -1
- package/dist/Calendar/Day/Day.js +5 -2
- package/dist/Calendar/Day/Day.js.map +1 -1
- package/dist/Calendar/Day/Day.styles.css +2 -2
- package/dist/Calendar/Day/Day.styles.d.ts.map +1 -1
- package/dist/Calendar/Day/Day.styles.js.map +1 -1
- package/dist/Calendar/Day/index.d.ts +1 -3
- package/dist/Calendar/Day/index.d.ts.map +1 -1
- package/dist/Calendar/Day/index.js +1 -5
- package/dist/Calendar/DayWrapper.d.ts +1 -1
- package/dist/Calendar/DayWrapper.d.ts.map +1 -1
- package/dist/Calendar/DayWrapper.js +15 -7
- package/dist/Calendar/DayWrapper.js.map +1 -1
- package/dist/Calendar/SelectMonthTable/SelectMonthTable.styles.css +1 -1
- package/dist/Calendar/SelectMonthTable/SelectMonthTable.styles.d.ts +1 -1
- package/dist/Calendar/SelectMonthTable/SelectMonthTable.styles.d.ts.map +1 -1
- package/dist/Calendar/SelectMonthTable/SelectMonthTable.styles.js.map +1 -1
- package/dist/Calendar/SelectYearTable/SelectYearTable.styles.css +1 -1
- package/dist/Calendar/SelectYearTable/SelectYearTable.styles.d.ts +1 -1
- package/dist/Calendar/SelectYearTable/SelectYearTable.styles.d.ts.map +1 -1
- package/dist/Calendar/SelectYearTable/SelectYearTable.styles.js.map +1 -1
- package/dist/Calendar/SlideTransition/index.d.ts +1 -3
- package/dist/Calendar/SlideTransition/index.d.ts.map +1 -1
- package/dist/Calendar/SlideTransition/index.js +1 -5
- package/dist/Calendar/utils.js +9 -9
- package/dist/Calendar/utils.js.map +1 -1
- package/dist/CheckboxField/index.d.ts +1 -3
- package/dist/CheckboxField/index.d.ts.map +1 -1
- package/dist/CheckboxField/index.js +1 -5
- package/dist/CheckboxField/types.d.ts +2 -2
- package/dist/CheckboxField/types.d.ts.map +1 -1
- package/dist/Chip/index.d.ts +1 -3
- package/dist/Chip/index.d.ts.map +1 -1
- package/dist/Chip/index.js +1 -5
- package/dist/ClickAwayListener/ClickAwayListener.d.ts.map +1 -1
- package/dist/ClickAwayListener/ClickAwayListener.js +3 -1
- package/dist/ClickAwayListener/ClickAwayListener.js.map +1 -1
- package/dist/ClickAwayListener/index.d.ts +1 -3
- package/dist/ClickAwayListener/index.d.ts.map +1 -1
- package/dist/ClickAwayListener/index.js +1 -5
- package/dist/Counter/index.d.ts +1 -3
- package/dist/Counter/index.d.ts.map +1 -1
- package/dist/Counter/index.js +1 -5
- package/dist/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker/DatePicker.js +1 -1
- package/dist/DatePicker/DatePicker.js.map +1 -1
- package/dist/DateTimePeriod/index.d.ts +2 -5
- package/dist/DateTimePeriod/index.d.ts.map +1 -1
- package/dist/DateTimePeriod/index.js +1 -5
- package/dist/DateTimePicker/index.d.ts +1 -3
- package/dist/DateTimePicker/index.d.ts.map +1 -1
- package/dist/DateTimePicker/index.js +1 -5
- package/dist/Dialog/Dialog.js +1 -1
- package/dist/Dialog/Dialog.js.map +1 -1
- package/dist/DialogActions/index.d.ts +1 -3
- package/dist/DialogActions/index.d.ts.map +1 -1
- package/dist/DialogActions/index.js +1 -5
- package/dist/DialogContent/index.d.ts +1 -3
- package/dist/DialogContent/index.d.ts.map +1 -1
- package/dist/DialogContent/index.js +1 -5
- package/dist/DialogTitle/index.d.ts +1 -3
- package/dist/DialogTitle/index.d.ts.map +1 -1
- package/dist/DialogTitle/index.js +1 -5
- package/dist/Divider/index.d.ts +1 -3
- package/dist/Divider/index.d.ts.map +1 -1
- package/dist/Divider/index.js +1 -5
- package/dist/DraggablePopover/DraggablePopover.d.ts.map +1 -1
- package/dist/DraggablePopover/DraggablePopover.js +2 -2
- package/dist/DraggablePopover/DraggablePopover.js.map +1 -1
- package/dist/DraggablePopover/layersManager.d.ts +1 -1
- package/dist/DraggablePopover/layersManager.d.ts.map +1 -1
- package/dist/DraggablePopover/layersManager.js.map +1 -1
- package/dist/DropDownMenu/index.d.ts +1 -3
- package/dist/DropDownMenu/index.d.ts.map +1 -1
- package/dist/DropDownMenu/index.js +1 -5
- package/dist/FeatureCallout/FeatureCalloutActions/index.d.ts +1 -3
- package/dist/FeatureCallout/FeatureCalloutActions/index.d.ts.map +1 -1
- package/dist/FeatureCallout/FeatureCalloutActions/index.js +1 -5
- package/dist/FeatureCallout/FeatureCalloutText/index.d.ts +1 -3
- package/dist/FeatureCallout/FeatureCalloutText/index.d.ts.map +1 -1
- package/dist/FeatureCallout/FeatureCalloutText/index.js +1 -5
- package/dist/FeatureCallout/FeatureCalloutTitle/index.d.ts +1 -3
- package/dist/FeatureCallout/FeatureCalloutTitle/index.d.ts.map +1 -1
- package/dist/FeatureCallout/FeatureCalloutTitle/index.js +1 -5
- package/dist/FeatureCallout/index.d.ts +4 -7
- package/dist/FeatureCallout/index.d.ts.map +1 -1
- package/dist/FeatureCallout/index.js +1 -5
- package/dist/FeatureCallout/utils.d.ts.map +1 -1
- package/dist/FeatureCallout/utils.js +1 -37
- package/dist/FeatureCallout/utils.js.map +1 -1
- package/dist/FieldHint/index.d.ts +1 -3
- package/dist/FieldHint/index.d.ts.map +1 -1
- package/dist/FieldHint/index.js +1 -5
- package/dist/FilterButton/FilterButton.js +1 -1
- package/dist/FilterButton/FilterButton.js.map +1 -1
- package/dist/FormGroup/index.d.ts +1 -3
- package/dist/FormGroup/index.d.ts.map +1 -1
- package/dist/FormGroup/index.js +1 -5
- package/dist/Loader/index.d.ts +1 -3
- package/dist/Loader/index.d.ts.map +1 -1
- package/dist/Loader/index.js +1 -5
- package/dist/LoaderBackdrop/index.d.ts +1 -3
- package/dist/LoaderBackdrop/index.d.ts.map +1 -1
- package/dist/LoaderBackdrop/index.js +1 -5
- package/dist/LoaderDots/index.d.ts +1 -3
- package/dist/LoaderDots/index.d.ts.map +1 -1
- package/dist/LoaderDots/index.js +1 -5
- package/dist/MarketingButton/useMarketingAnimations.d.ts +2 -2
- package/dist/MarketingButton/useMarketingAnimations.d.ts.map +1 -1
- package/dist/MarketingButton/useMarketingAnimations.js +27 -14
- package/dist/MarketingButton/useMarketingAnimations.js.map +1 -1
- package/dist/Modal/ModalManager.d.ts +1 -1
- package/dist/Modal/ModalManager.d.ts.map +1 -1
- package/dist/Modal/ModalManager.js.map +1 -1
- package/dist/Modal/Portal.js +1 -1
- package/dist/Modal/Portal.js.map +1 -1
- package/dist/ModalsProvider/index.d.ts +1 -3
- package/dist/ModalsProvider/index.d.ts.map +1 -1
- package/dist/ModalsProvider/index.js +1 -6
- package/dist/MultiSelectField/MultiSelectField.d.ts.map +1 -1
- package/dist/MultiSelectField/MultiSelectField.js +3 -8
- package/dist/MultiSelectField/MultiSelectField.js.map +1 -1
- package/dist/MultiSelectField/index.d.ts +1 -3
- package/dist/MultiSelectField/index.d.ts.map +1 -1
- package/dist/MultiSelectField/index.js +1 -5
- package/dist/NumberTextField/NumberTextField.js +4 -4
- package/dist/NumberTextField/NumberTextField.js.map +1 -1
- package/dist/NumberTextField/index.d.ts +1 -3
- package/dist/NumberTextField/index.d.ts.map +1 -1
- package/dist/NumberTextField/index.js +1 -5
- package/dist/NumberTextField/utils.d.ts.map +1 -1
- package/dist/NumberTextField/utils.js +1 -1
- package/dist/NumberTextField/utils.js.map +1 -1
- package/dist/PaginatorNumber/NavButton/index.d.ts +1 -3
- package/dist/PaginatorNumber/NavButton/index.d.ts.map +1 -1
- package/dist/PaginatorNumber/NavButton/index.js +1 -5
- package/dist/PaginatorNumber/PageButton/index.d.ts +1 -3
- package/dist/PaginatorNumber/PageButton/index.d.ts.map +1 -1
- package/dist/PaginatorNumber/PageButton/index.js +1 -5
- package/dist/PaginatorNumber/index.d.ts +1 -3
- package/dist/PaginatorNumber/index.d.ts.map +1 -1
- package/dist/PaginatorNumber/index.js +1 -5
- package/dist/PaginatorOverflow/NavButton/index.d.ts +1 -3
- package/dist/PaginatorOverflow/NavButton/index.d.ts.map +1 -1
- package/dist/PaginatorOverflow/NavButton/index.js +1 -5
- package/dist/PaginatorOverflow/PaginatorOverflow.js +2 -2
- package/dist/PaginatorOverflow/PaginatorOverflow.js.map +1 -1
- package/dist/PaginatorOverflow/index.d.ts +1 -3
- package/dist/PaginatorOverflow/index.d.ts.map +1 -1
- package/dist/PaginatorOverflow/index.js +1 -5
- package/dist/Paper/types.d.ts +6 -1
- package/dist/Paper/types.d.ts.map +1 -1
- package/dist/Paper/utils.d.ts +2 -2
- package/dist/PickersUtilsProvider/defaultDateFormatUtils.js +1 -1
- package/dist/PickersUtilsProvider/defaultDateFormatUtils.js.map +1 -1
- package/dist/PickersUtilsProvider/defaultTimeFormatUtils.js +4 -4
- package/dist/PickersUtilsProvider/defaultTimeFormatUtils.js.map +1 -1
- package/dist/PickersUtilsProvider/utils.js +1 -1
- package/dist/PickersUtilsProvider/utils.js.map +1 -1
- package/dist/ProductCard/layouts/ipo/Content.d.ts +2 -2
- package/dist/ProductCard/layouts/ipo/Content.d.ts.map +1 -1
- package/dist/ProductCard/layouts/ipo/Content.js.map +1 -1
- package/dist/ProductCard/utils.d.ts.map +1 -1
- package/dist/ProductCard/utils.js +4 -1
- package/dist/ProductCard/utils.js.map +1 -1
- package/dist/Skeleton/index.d.ts +2 -3
- package/dist/Skeleton/index.d.ts.map +1 -1
- package/dist/Skeleton/index.js +1 -5
- package/dist/Slider/Slider.js +9 -5
- package/dist/Slider/Slider.js.map +1 -1
- package/dist/Snackbar/Snackbar.js.map +1 -1
- package/dist/Stepper/index.d.ts +2 -3
- package/dist/Stepper/index.d.ts.map +1 -1
- package/dist/Stepper/index.js +1 -5
- package/dist/Tab/Tab.d.ts +2 -1
- package/dist/Tab/Tab.d.ts.map +1 -1
- package/dist/Tab/Tab.js +1 -1
- package/dist/Tab/Tab.js.map +1 -1
- package/dist/Tag/Tag.d.ts.map +1 -1
- package/dist/Tag/Tag.js +2 -13
- package/dist/Tag/Tag.js.map +1 -1
- package/dist/Tag/Tag.styles.css +1 -1
- package/dist/Tag/Tag.styles.d.ts.map +1 -1
- package/dist/Tag/Tag.styles.js.map +1 -1
- package/dist/TextArea/TextArea.d.ts +9 -4
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +58 -9
- package/dist/TextArea/TextArea.js.map +1 -1
- package/dist/TextArea/TextArea.styles.css +2 -0
- package/dist/TextArea/TextArea.styles.d.ts +2 -0
- package/dist/TextArea/TextArea.styles.d.ts.map +1 -1
- package/dist/TextArea/TextArea.styles.js +3 -1
- package/dist/TextArea/TextArea.styles.js.map +1 -1
- package/dist/Tooltip/Tooltip.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -1
- package/dist/Avatar/index.js.map +0 -1
- package/dist/Calendar/Day/index.js.map +0 -1
- package/dist/Calendar/SlideTransition/index.js.map +0 -1
- package/dist/CheckboxField/index.js.map +0 -1
- package/dist/Chip/index.js.map +0 -1
- package/dist/ClickAwayListener/index.js.map +0 -1
- package/dist/Counter/index.js.map +0 -1
- package/dist/DateTimePeriod/index.js.map +0 -1
- package/dist/DateTimePicker/index.js.map +0 -1
- package/dist/DialogActions/index.js.map +0 -1
- package/dist/DialogContent/index.js.map +0 -1
- package/dist/DialogTitle/index.js.map +0 -1
- package/dist/Divider/index.js.map +0 -1
- package/dist/DropDownMenu/index.js.map +0 -1
- package/dist/FeatureCallout/FeatureCalloutActions/index.js.map +0 -1
- package/dist/FeatureCallout/FeatureCalloutText/index.js.map +0 -1
- package/dist/FeatureCallout/FeatureCalloutTitle/index.js.map +0 -1
- package/dist/FeatureCallout/index.js.map +0 -1
- package/dist/FieldHint/index.js.map +0 -1
- package/dist/FormGroup/index.js.map +0 -1
- package/dist/Loader/index.js.map +0 -1
- package/dist/LoaderBackdrop/index.js.map +0 -1
- package/dist/LoaderDots/index.js.map +0 -1
- package/dist/ModalsProvider/index.js.map +0 -1
- package/dist/MultiSelectField/index.js.map +0 -1
- package/dist/NumberTextField/index.js.map +0 -1
- package/dist/PaginatorNumber/NavButton/index.js.map +0 -1
- package/dist/PaginatorNumber/PageButton/index.js.map +0 -1
- package/dist/PaginatorNumber/index.js.map +0 -1
- package/dist/PaginatorOverflow/NavButton/index.js.map +0 -1
- package/dist/PaginatorOverflow/index.js.map +0 -1
- package/dist/Skeleton/index.js.map +0 -1
- package/dist/Stepper/index.js.map +0 -1
package/dist/Slider/Slider.js
CHANGED
|
@@ -56,7 +56,7 @@ const Slider = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
56
56
|
const newValue = valueReducer(rawValue, props, event);
|
|
57
57
|
const hiddenInput = hiddenInputsRef.current[currentIndex];
|
|
58
58
|
const previousValue = null == hiddenInput ? void 0 : hiddenInput.value;
|
|
59
|
-
if (hiddenInput && null !== newValue && newValue !== parseFloat(previousValue) && 'function' == typeof onChange) triggerChangeEvent(hiddenInput, newValue);
|
|
59
|
+
if (hiddenInput && null !== newValue && newValue !== parseFloat(null != previousValue ? previousValue : '') && 'function' == typeof onChange) triggerChangeEvent(hiddenInput, newValue);
|
|
60
60
|
}, [
|
|
61
61
|
props,
|
|
62
62
|
valueReducer,
|
|
@@ -128,8 +128,9 @@ const Slider = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
128
128
|
handleDragEnd
|
|
129
129
|
]);
|
|
130
130
|
const handleMouseDown = useCallback((event)=>{
|
|
131
|
+
var _event_currentTarget_getAttribute;
|
|
131
132
|
event.preventDefault();
|
|
132
|
-
const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR));
|
|
133
|
+
const index = parseFloat(null != (_event_currentTarget_getAttribute = event.currentTarget.getAttribute(INDEX_ATTR)) ? _event_currentTarget_getAttribute : '');
|
|
133
134
|
setActiveIndex(index);
|
|
134
135
|
const value = calculateValueFromPercent(event.nativeEvent);
|
|
135
136
|
const newValue = valueReducer(value, props, event.nativeEvent);
|
|
@@ -162,10 +163,11 @@ const Slider = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
162
163
|
handleMouseUp
|
|
163
164
|
]);
|
|
164
165
|
const handleTouchStart = useCallback((event)=>{
|
|
166
|
+
var _event_currentTarget_getAttribute;
|
|
165
167
|
event.preventDefault();
|
|
166
168
|
const touch = event.changedTouches.item(0);
|
|
167
169
|
if (null != touch) touchIdRef.current = touch.identifier;
|
|
168
|
-
const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR));
|
|
170
|
+
const index = parseFloat(null != (_event_currentTarget_getAttribute = event.currentTarget.getAttribute(INDEX_ATTR)) ? _event_currentTarget_getAttribute : '');
|
|
169
171
|
setActiveIndex(index);
|
|
170
172
|
const value = calculateValueFromPercent(event.nativeEvent);
|
|
171
173
|
const newValue = valueReducer(value, props, event.nativeEvent);
|
|
@@ -191,7 +193,8 @@ const Slider = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
191
193
|
handleMouseMove
|
|
192
194
|
]);
|
|
193
195
|
const handleKeyDown = useCallback((event)=>{
|
|
194
|
-
|
|
196
|
+
var _event_currentTarget_getAttribute;
|
|
197
|
+
const index = parseFloat(null != (_event_currentTarget_getAttribute = event.currentTarget.getAttribute(INDEX_ATTR)) ? _event_currentTarget_getAttribute : '');
|
|
195
198
|
const currentValue = Array.isArray(valueProp) ? valueProp[index] : valueProp;
|
|
196
199
|
const onePercent = Math.abs((max - min) / 100);
|
|
197
200
|
const step = stepProp || onePercent;
|
|
@@ -232,7 +235,8 @@ const Slider = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
232
235
|
]);
|
|
233
236
|
const handleChange = useCallback((event)=>{
|
|
234
237
|
if (onChange) {
|
|
235
|
-
|
|
238
|
+
var _event_currentTarget_getAttribute;
|
|
239
|
+
const index = parseFloat(null != (_event_currentTarget_getAttribute = event.currentTarget.getAttribute(INDEX_ATTR)) ? _event_currentTarget_getAttribute : '');
|
|
236
240
|
let newValue;
|
|
237
241
|
if (Array.isArray(valueProp)) {
|
|
238
242
|
newValue = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider/Slider.js","sources":["../../src/Slider/Slider.tsx"],"sourcesContent":["import { forwardRef, useCallback, useEffect, useRef, useState, memo } from 'react';\nimport type * as React from 'react';\nimport classnames from 'clsx';\nimport { triggerChangeEvent } from '../utils/event.js';\nimport {\n Root,\n Container,\n ThumbWrapper,\n Thumb,\n HiddenNumberInput,\n TrackSvg,\n RailLine,\n TrackLine,\n} from './Slider.styles.js';\nimport {\n clamp,\n percentToValue,\n valueToPercent,\n roundToStep,\n getTouch,\n calculatePercent,\n preventPageScrolling,\n} from './utils.js';\n\ninterface OuterProps extends Omit<React.ComponentPropsWithoutRef<typeof Root>, 'onChange' | 'onDragStart' | 'onDragEnd'> {\n /** Флаг неактивного состояния компонента */\n disabled?: boolean;\n /** from HTMLInputElement */\n name?: string;\n /** Состояние значения компонента */\n value: number;\n /** Минимально возможное значение компонента */\n min?: number;\n /** Максимально возможное значение компонента */\n max?: number;\n /** Шаг изменения значения компонента */\n step?: number;\n /** Отображение меток шага */\n marks?: boolean;\n /** Вариант цветовой схемы */\n color?: 'default' | 'alternative';\n /** Обработчик изменения значения */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, value: number) => void;\n /** Обработчик начала захвата ползунка */\n onDragStart?: (event: MouseEvent | TouchEvent, value: number | null) => void;\n /** Обработчик завершения захвата ползунка */\n onDragEnd?: (event: MouseEvent | TouchEvent, value: number | null) => void;\n /** Переключение на вертикальный вид слайдера */\n vertical?: boolean;\n /** Кастомный обработчик значения перед его изменением */\n valueReducer?: (\n rawValue: number | null,\n props: Props,\n event: MouseEvent | TouchEvent | KeyboardEvent,\n ) => number | null;\n}\n\ninterface OuterPropsRange extends Omit<OuterProps, 'value' | 'onChange'> {\n /** или массив значений */\n value: number[];\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, value: number[]) => void;\n}\n\nexport type Props = OuterProps | OuterPropsRange;\n\nconst INDEX_ATTR = 'data-index';\n\nexport function defaultValueReducer(rawValue: number | null, props: Props) {\n const { disabled, step } = props;\n\n if (disabled || rawValue === null) {\n return null;\n }\n\n if (step) {\n return roundToStep(rawValue, step);\n }\n\n return Number(rawValue.toFixed(3));\n}\n\nconst Slider = forwardRef<HTMLDivElement, Props>((props, ref) => {\n const {\n className,\n disabled,\n value: valueProp,\n min = 0,\n max = 100,\n step: stepProp,\n marks,\n onChange,\n onDragStart,\n onDragEnd,\n vertical,\n valueReducer = defaultValueReducer,\n name,\n color = 'default',\n ...otherProps\n } = props;\n\n const touchIdRef = useRef<number | undefined>(undefined);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const hiddenInputsRef = useRef<(HTMLInputElement | null)[]>([]);\n const removeListenersRef = useRef<VoidFunction | undefined>(undefined);\n const [activeIndex, setActiveIndex] = useState<number>();\n const activeIndexRef = useRef(activeIndex);\n\n if (disabled && activeIndex !== undefined) {\n setActiveIndex(undefined);\n }\n if (activeIndex !== activeIndexRef.current) {\n activeIndexRef.current = activeIndex;\n }\n\n useEffect(() => () => {\n if (removeListenersRef.current) {\n removeListenersRef.current();\n }\n }, []);\n\n const focusThumb = (index: number) => {\n if (\n !containerRef.current?.contains(document.activeElement) ||\n Number(document.activeElement?.getAttribute('data-index')) !== index\n ) {\n containerRef.current\n ?.querySelector<HTMLElement>(`[role=\"slider\"][data-index=\"${index}\"]`)\n ?.focus();\n }\n\n setActiveIndex(prevIndex => (\n prevIndex !== undefined && index !== prevIndex ? index : prevIndex\n ));\n };\n\n const emitChange = useCallback((\n event: MouseEvent | TouchEvent | KeyboardEvent,\n rawValue: number | null,\n index?: number,\n ) => {\n const currentIndex = index === undefined ? activeIndexRef.current : index;\n if (currentIndex === undefined) {\n return;\n }\n\n const newValue = valueReducer(rawValue, props, event);\n const hiddenInput = hiddenInputsRef.current[currentIndex];\n const previousValue = hiddenInput?.value;\n\n if (\n hiddenInput &&\n newValue !== null &&\n newValue !== parseFloat(previousValue!) &&\n typeof onChange === 'function'\n ) {\n triggerChangeEvent(hiddenInput, newValue);\n }\n }, [props, valueReducer, onChange]);\n\n const calculateValueFromPercent = useCallback((event: MouseEvent | TouchEvent): number | null => {\n const percent = containerRef.current && calculatePercent(\n containerRef.current,\n event,\n touchIdRef.current,\n vertical,\n );\n\n return percent != null ? percentToValue(percent, min, max) : null;\n }, [vertical, min, max]);\n\n const handleClick = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n const value = calculateValueFromPercent(event.nativeEvent);\n\n if (value == null) {\n return;\n }\n\n if (Array.isArray(valueProp)) {\n let index;\n let prevDiff: number | undefined;\n\n valueProp.forEach((val, i) => {\n const diff = Math.abs(val - value);\n\n if (prevDiff === undefined || diff < prevDiff) {\n index = i;\n prevDiff = diff;\n }\n });\n\n emitChange(event.nativeEvent, value, index);\n } else {\n emitChange(event.nativeEvent, value, 0);\n }\n }, [calculateValueFromPercent, emitChange, valueProp]);\n\n const handleDragEnd = useCallback((event: MouseEvent | TouchEvent) => {\n const value = calculateValueFromPercent(event);\n const newValue = valueReducer(value, props, event);\n\n setActiveIndex(undefined);\n\n if (removeListenersRef.current) {\n removeListenersRef.current();\n removeListenersRef.current = undefined;\n }\n\n if (typeof onDragEnd === 'function') {\n onDragEnd(event, newValue);\n }\n }, [calculateValueFromPercent, valueReducer, props, onDragEnd]);\n\n const handleMouseEnter = useCallback((event: MouseEvent) => {\n // If the slider was being interacted with but the mouse went off the window\n // and then re-entered while unclicked then end the interaction.\n if (event.buttons === 0) {\n handleDragEnd(event);\n }\n }, [handleDragEnd]);\n\n const handleMouseMove = useCallback((event: MouseEvent | TouchEvent) => {\n const value = calculateValueFromPercent(event);\n\n emitChange(event, value);\n }, [calculateValueFromPercent, emitChange]);\n\n const handleMouseLeave = useCallback((event: MouseEvent) => {\n // The mouse will have moved between the last mouse move event\n // this mouse leave event\n handleMouseMove(event);\n }, [handleMouseMove]);\n\n const handleMouseUp = useCallback((event: MouseEvent | TouchEvent) => {\n handleDragEnd(event);\n }, [handleDragEnd]);\n\n const handleMouseDown = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR)!);\n setActiveIndex(index);\n\n const value = calculateValueFromPercent(event.nativeEvent);\n const newValue = valueReducer(value, props, event.nativeEvent);\n\n document.body.addEventListener('mouseenter', handleMouseEnter);\n document.body.addEventListener('mouseleave', handleMouseLeave);\n document.body.addEventListener('mousemove', handleMouseMove);\n document.body.addEventListener('mouseup', handleMouseUp);\n\n removeListenersRef.current = () => {\n document.body.removeEventListener('mouseenter', handleMouseEnter);\n document.body.removeEventListener('mouseleave', handleMouseLeave);\n document.body.removeEventListener('mousemove', handleMouseMove);\n document.body.removeEventListener('mouseup', handleMouseUp);\n };\n\n if (typeof onDragStart === 'function') {\n onDragStart(event.nativeEvent, newValue);\n }\n }, [\n calculateValueFromPercent, valueReducer, props,\n handleMouseEnter, handleMouseLeave, handleMouseMove, handleMouseUp, onDragStart,\n ]);\n\n const handleTouchEnd = useCallback((event: TouchEvent) => {\n if (touchIdRef.current === undefined) {\n handleMouseUp(event);\n return;\n }\n const touch = getTouch(event, touchIdRef.current);\n if (touch) {\n handleMouseUp(event);\n }\n }, [handleMouseUp]);\n\n const handleTouchStart = useCallback((event: React.TouchEvent) => {\n event.preventDefault();\n const touch = event.changedTouches.item(0);\n if (touch != null) {\n touchIdRef.current = touch.identifier;\n }\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR)!);\n setActiveIndex(index);\n\n const value = calculateValueFromPercent(event.nativeEvent);\n const newValue = valueReducer(value, props, event.nativeEvent);\n emitChange(event.nativeEvent, value);\n\n document.body.addEventListener('touchend', handleTouchEnd);\n\n removeListenersRef.current = () => {\n document.body.removeEventListener('touchend', handleTouchEnd);\n };\n\n if (typeof onDragStart === 'function') {\n onDragStart(event.nativeEvent, newValue);\n }\n }, [calculateValueFromPercent, emitChange, handleTouchEnd, onDragStart, props, valueReducer]);\n\n const handleTouchMove = useCallback(({ nativeEvent }: React.TouchEvent) => {\n if (touchIdRef.current === undefined) {\n handleMouseMove(nativeEvent);\n return;\n }\n\n const touch = getTouch(nativeEvent, touchIdRef.current);\n if (touch) {\n handleMouseMove(nativeEvent);\n }\n }, [handleMouseMove]);\n\n const handleKeyDown = useCallback((event: React.KeyboardEvent) => {\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR)!);\n\n const currentValue = Array.isArray(valueProp) ? valueProp[index] : valueProp;\n\n const onePercent = Math.abs((max - min) / 100);\n const step = stepProp || onePercent;\n let value;\n\n switch (event.key) {\n case 'Home':\n value = min;\n break;\n case 'End':\n value = max;\n break;\n case 'PageUp':\n value = currentValue + onePercent * 10;\n break;\n case 'PageDown':\n value = currentValue - onePercent * 10;\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n value = currentValue + step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n value = currentValue - step;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n\n value = clamp(value, min, max);\n\n emitChange(event.nativeEvent, value, index);\n }, [emitChange, max, min, stepProp, valueProp]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR)!);\n\n let newValue;\n\n if (Array.isArray(valueProp)) {\n newValue = [...valueProp];\n const eventValue = parseFloat(event.target.value);\n newValue[index] = eventValue;\n\n newValue.sort((a, b) => a - b);\n\n focusThumb(newValue.indexOf(eventValue));\n } else {\n newValue = parseFloat(event.target.value);\n }\n\n onChange(event, newValue as number & number[]);\n }\n }, [onChange, valueProp]);\n\n const handleRef = (node: HTMLDivElement | null) => {\n const nextContainer = node;\n const prevContainer = containerRef.current;\n\n if (prevContainer !== nextContainer) {\n if (prevContainer) {\n prevContainer.removeEventListener('touchstart', preventPageScrolling);\n }\n if (nextContainer) {\n nextContainer.addEventListener('touchstart', preventPageScrolling, { passive: false });\n }\n }\n\n containerRef.current = nextContainer;\n };\n\n const handleInputRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n const index = node.getAttribute(INDEX_ATTR);\n\n if (index != null) {\n hiddenInputsRef.current[parseInt(index, 10)] = node;\n }\n }\n }, []);\n\n const calculateTrackPoints = (offset: number, leap: number) => {\n if (vertical) {\n return {\n x1: 1,\n y1: 100 - offset,\n x2: 1,\n y2: 100 - leap,\n };\n }\n\n return {\n x1: offset,\n y1: 1,\n x2: leap,\n y2: 1,\n };\n };\n\n const values = Array.isArray(valueProp) ? valueProp : [valueProp == null ? min : valueProp];\n\n const startValue = Array.isArray(valueProp) ? valueProp[0] : min;\n const endValue = values[values.length - 1];\n\n const tracksCount = marks && stepProp ? (((max - min) / stepProp)) : undefined;\n\n const rootClassName = classnames(\n className,\n {\n vertical,\n disabled,\n activated: activeIndex !== undefined,\n discrete: tracksCount && stepProp != null ? 'discrete' : undefined,\n alternative: color === 'alternative',\n },\n );\n\n return (\n <Root\n className={rootClassName}\n onClick={handleClick}\n {...otherProps}\n ref={ref}\n >\n <Container ref={handleRef} className=\"ui-slider__container\">\n <TrackSvg viewBox={vertical ? '0 0 2 100' : '0 0 100 2'} preserveAspectRatio=\"none\" className=\"ui-slider__track\">\n {\n tracksCount && stepProp != null\n ? Array.from({ length: tracksCount }).map((_, i) => {\n const trackStart = min + i * stepProp;\n const trackEnd = trackStart + stepProp;\n const trackOffset = valueToPercent(trackStart, min, max) + (i === 0 ? 0 : 0.2);\n const trackLeap = valueToPercent(trackEnd, min, max) -\n (i === tracksCount - 1 ? 0 : 0.2);\n const active = trackStart >= startValue && trackEnd <= endValue;\n return (\n <TrackLine\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n className={classnames({ active })}\n {...calculateTrackPoints(trackOffset, trackLeap)}\n />\n );\n })\n : (\n <>\n <RailLine\n {...calculateTrackPoints(0, 100)}\n />\n <TrackLine\n className=\"active\"\n {...calculateTrackPoints(\n valueToPercent(startValue, min, max),\n valueToPercent(endValue, min, max),\n )}\n />\n </>\n )\n }\n </TrackSvg>\n {\n values.map((val, i) => {\n const percent = clamp(valueToPercent(val, min, max));\n\n const stylesThumbWrapper = {\n [vertical ? 'bottom' : 'left']: `${percent}%`,\n };\n\n return (\n <ThumbWrapper\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n className={classnames({ activated: activeIndex === i })}\n style={stylesThumbWrapper}\n onMouseDown={handleMouseDown}\n onTouchStartCapture={handleTouchStart}\n onTouchMove={handleTouchMove}\n data-index={i}\n >\n <Thumb\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onTouchStartCapture={handleTouchStart}\n onTouchMove={handleTouchMove}\n type=\"button\"\n role=\"slider\"\n data-index={i}\n className=\"ui-slider__thumb\"\n />\n <HiddenNumberInput\n type=\"number\"\n name={name}\n data-index={i}\n value={val}\n onChange={handleChange}\n ref={handleInputRef}\n />\n </ThumbWrapper>\n );\n })\n }\n </Container>\n </Root>\n );\n});\n\nexport default memo(Slider);\n"],"names":["INDEX_ATTR","defaultValueReducer","rawValue","props","disabled","step","roundToStep","Number","Slider","forwardRef","ref","className","valueProp","min","max","stepProp","marks","onChange","onDragStart","onDragEnd","vertical","valueReducer","name","color","otherProps","touchIdRef","useRef","undefined","containerRef","hiddenInputsRef","removeListenersRef","activeIndex","setActiveIndex","useState","activeIndexRef","useEffect","focusThumb","index","_containerRef_current","_document_activeElement","document","_containerRef_current_querySelector","prevIndex","emitChange","useCallback","event","currentIndex","newValue","hiddenInput","previousValue","parseFloat","triggerChangeEvent","calculateValueFromPercent","percent","calculatePercent","percentToValue","handleClick","value","Array","prevDiff","val","i","diff","Math","handleDragEnd","handleMouseEnter","handleMouseMove","handleMouseLeave","handleMouseUp","handleMouseDown","handleTouchEnd","touch","getTouch","handleTouchStart","handleTouchMove","nativeEvent","handleKeyDown","currentValue","onePercent","clamp","handleChange","eventValue","a","b","handleRef","node","nextContainer","prevContainer","preventPageScrolling","handleInputRef","parseInt","calculateTrackPoints","offset","leap","values","startValue","endValue","tracksCount","rootClassName","classnames","Root","Container","TrackSvg","_","trackStart","trackEnd","trackOffset","valueToPercent","trackLeap","active","TrackLine","RailLine","stylesThumbWrapper","ThumbWrapper","Thumb","HiddenNumberInput","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Slider/Slider.js","sources":["../../src/Slider/Slider.tsx"],"sourcesContent":["import { forwardRef, useCallback, useEffect, useRef, useState, memo } from 'react';\nimport type * as React from 'react';\nimport classnames from 'clsx';\nimport { triggerChangeEvent } from '../utils/event.js';\nimport {\n Root,\n Container,\n ThumbWrapper,\n Thumb,\n HiddenNumberInput,\n TrackSvg,\n RailLine,\n TrackLine,\n} from './Slider.styles.js';\nimport {\n clamp,\n percentToValue,\n valueToPercent,\n roundToStep,\n getTouch,\n calculatePercent,\n preventPageScrolling,\n} from './utils.js';\n\ninterface OuterProps extends Omit<React.ComponentPropsWithoutRef<typeof Root>, 'onChange' | 'onDragStart' | 'onDragEnd'> {\n /** Флаг неактивного состояния компонента */\n disabled?: boolean;\n /** from HTMLInputElement */\n name?: string;\n /** Состояние значения компонента */\n value: number;\n /** Минимально возможное значение компонента */\n min?: number;\n /** Максимально возможное значение компонента */\n max?: number;\n /** Шаг изменения значения компонента */\n step?: number;\n /** Отображение меток шага */\n marks?: boolean;\n /** Вариант цветовой схемы */\n color?: 'default' | 'alternative';\n /** Обработчик изменения значения */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, value: number) => void;\n /** Обработчик начала захвата ползунка */\n onDragStart?: (event: MouseEvent | TouchEvent, value: number | null) => void;\n /** Обработчик завершения захвата ползунка */\n onDragEnd?: (event: MouseEvent | TouchEvent, value: number | null) => void;\n /** Переключение на вертикальный вид слайдера */\n vertical?: boolean;\n /** Кастомный обработчик значения перед его изменением */\n valueReducer?: (\n rawValue: number | null,\n props: Props,\n event: MouseEvent | TouchEvent | KeyboardEvent,\n ) => number | null;\n}\n\ninterface OuterPropsRange extends Omit<OuterProps, 'value' | 'onChange'> {\n /** или массив значений */\n value: number[];\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, value: number[]) => void;\n}\n\nexport type Props = OuterProps | OuterPropsRange;\n\nconst INDEX_ATTR = 'data-index';\n\nexport function defaultValueReducer(rawValue: number | null, props: Props) {\n const { disabled, step } = props;\n\n if (disabled || rawValue === null) {\n return null;\n }\n\n if (step) {\n return roundToStep(rawValue, step);\n }\n\n return Number(rawValue.toFixed(3));\n}\n\nconst Slider = forwardRef<HTMLDivElement, Props>((props, ref) => {\n const {\n className,\n disabled,\n value: valueProp,\n min = 0,\n max = 100,\n step: stepProp,\n marks,\n onChange,\n onDragStart,\n onDragEnd,\n vertical,\n valueReducer = defaultValueReducer,\n name,\n color = 'default',\n ...otherProps\n } = props;\n\n const touchIdRef = useRef<number | undefined>(undefined);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const hiddenInputsRef = useRef<(HTMLInputElement | null)[]>([]);\n const removeListenersRef = useRef<VoidFunction | undefined>(undefined);\n const [activeIndex, setActiveIndex] = useState<number>();\n const activeIndexRef = useRef(activeIndex);\n\n if (disabled && activeIndex !== undefined) {\n setActiveIndex(undefined);\n }\n if (activeIndex !== activeIndexRef.current) {\n activeIndexRef.current = activeIndex;\n }\n\n useEffect(() => () => {\n if (removeListenersRef.current) {\n removeListenersRef.current();\n }\n }, []);\n\n const focusThumb = (index: number) => {\n if (\n !containerRef.current?.contains(document.activeElement) ||\n Number(document.activeElement?.getAttribute('data-index')) !== index\n ) {\n containerRef.current\n ?.querySelector<HTMLElement>(`[role=\"slider\"][data-index=\"${index}\"]`)\n ?.focus();\n }\n\n setActiveIndex(prevIndex => (\n prevIndex !== undefined && index !== prevIndex ? index : prevIndex\n ));\n };\n\n const emitChange = useCallback((\n event: MouseEvent | TouchEvent | KeyboardEvent,\n rawValue: number | null,\n index?: number,\n ) => {\n const currentIndex = index === undefined ? activeIndexRef.current : index;\n if (currentIndex === undefined) {\n return;\n }\n\n const newValue = valueReducer(rawValue, props, event);\n const hiddenInput = hiddenInputsRef.current[currentIndex];\n const previousValue = hiddenInput?.value;\n\n if (\n hiddenInput &&\n newValue !== null &&\n newValue !== parseFloat(previousValue ?? '') &&\n typeof onChange === 'function'\n ) {\n triggerChangeEvent(hiddenInput, newValue);\n }\n }, [props, valueReducer, onChange]);\n\n const calculateValueFromPercent = useCallback((event: MouseEvent | TouchEvent): number | null => {\n const percent = containerRef.current && calculatePercent(\n containerRef.current,\n event,\n touchIdRef.current,\n vertical,\n );\n\n return percent != null ? percentToValue(percent, min, max) : null;\n }, [vertical, min, max]);\n\n const handleClick = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n const value = calculateValueFromPercent(event.nativeEvent);\n\n if (value == null) {\n return;\n }\n\n if (Array.isArray(valueProp)) {\n let index;\n let prevDiff: number | undefined;\n\n valueProp.forEach((val, i) => {\n const diff = Math.abs(val - value);\n\n if (prevDiff === undefined || diff < prevDiff) {\n index = i;\n prevDiff = diff;\n }\n });\n\n emitChange(event.nativeEvent, value, index);\n } else {\n emitChange(event.nativeEvent, value, 0);\n }\n }, [calculateValueFromPercent, emitChange, valueProp]);\n\n const handleDragEnd = useCallback((event: MouseEvent | TouchEvent) => {\n const value = calculateValueFromPercent(event);\n const newValue = valueReducer(value, props, event);\n\n setActiveIndex(undefined);\n\n if (removeListenersRef.current) {\n removeListenersRef.current();\n removeListenersRef.current = undefined;\n }\n\n if (typeof onDragEnd === 'function') {\n onDragEnd(event, newValue);\n }\n }, [calculateValueFromPercent, valueReducer, props, onDragEnd]);\n\n const handleMouseEnter = useCallback((event: MouseEvent) => {\n // If the slider was being interacted with but the mouse went off the window\n // and then re-entered while unclicked then end the interaction.\n if (event.buttons === 0) {\n handleDragEnd(event);\n }\n }, [handleDragEnd]);\n\n const handleMouseMove = useCallback((event: MouseEvent | TouchEvent) => {\n const value = calculateValueFromPercent(event);\n\n emitChange(event, value);\n }, [calculateValueFromPercent, emitChange]);\n\n const handleMouseLeave = useCallback((event: MouseEvent) => {\n // The mouse will have moved between the last mouse move event\n // this mouse leave event\n handleMouseMove(event);\n }, [handleMouseMove]);\n\n const handleMouseUp = useCallback((event: MouseEvent | TouchEvent) => {\n handleDragEnd(event);\n }, [handleDragEnd]);\n\n const handleMouseDown = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR) ?? '');\n setActiveIndex(index);\n\n const value = calculateValueFromPercent(event.nativeEvent);\n const newValue = valueReducer(value, props, event.nativeEvent);\n\n document.body.addEventListener('mouseenter', handleMouseEnter);\n document.body.addEventListener('mouseleave', handleMouseLeave);\n document.body.addEventListener('mousemove', handleMouseMove);\n document.body.addEventListener('mouseup', handleMouseUp);\n\n removeListenersRef.current = () => {\n document.body.removeEventListener('mouseenter', handleMouseEnter);\n document.body.removeEventListener('mouseleave', handleMouseLeave);\n document.body.removeEventListener('mousemove', handleMouseMove);\n document.body.removeEventListener('mouseup', handleMouseUp);\n };\n\n if (typeof onDragStart === 'function') {\n onDragStart(event.nativeEvent, newValue);\n }\n }, [\n calculateValueFromPercent, valueReducer, props,\n handleMouseEnter, handleMouseLeave, handleMouseMove, handleMouseUp, onDragStart,\n ]);\n\n const handleTouchEnd = useCallback((event: TouchEvent) => {\n if (touchIdRef.current === undefined) {\n handleMouseUp(event);\n return;\n }\n const touch = getTouch(event, touchIdRef.current);\n if (touch) {\n handleMouseUp(event);\n }\n }, [handleMouseUp]);\n\n const handleTouchStart = useCallback((event: React.TouchEvent) => {\n event.preventDefault();\n const touch = event.changedTouches.item(0);\n if (touch != null) {\n touchIdRef.current = touch.identifier;\n }\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR) ?? '');\n setActiveIndex(index);\n\n const value = calculateValueFromPercent(event.nativeEvent);\n const newValue = valueReducer(value, props, event.nativeEvent);\n emitChange(event.nativeEvent, value);\n\n document.body.addEventListener('touchend', handleTouchEnd);\n\n removeListenersRef.current = () => {\n document.body.removeEventListener('touchend', handleTouchEnd);\n };\n\n if (typeof onDragStart === 'function') {\n onDragStart(event.nativeEvent, newValue);\n }\n }, [calculateValueFromPercent, emitChange, handleTouchEnd, onDragStart, props, valueReducer]);\n\n const handleTouchMove = useCallback(({ nativeEvent }: React.TouchEvent) => {\n if (touchIdRef.current === undefined) {\n handleMouseMove(nativeEvent);\n return;\n }\n\n const touch = getTouch(nativeEvent, touchIdRef.current);\n if (touch) {\n handleMouseMove(nativeEvent);\n }\n }, [handleMouseMove]);\n\n const handleKeyDown = useCallback((event: React.KeyboardEvent) => {\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR) ?? '');\n\n const currentValue = Array.isArray(valueProp) ? valueProp[index] : valueProp;\n\n const onePercent = Math.abs((max - min) / 100);\n const step = stepProp || onePercent;\n let value;\n\n switch (event.key) {\n case 'Home':\n value = min;\n break;\n case 'End':\n value = max;\n break;\n case 'PageUp':\n value = currentValue + onePercent * 10;\n break;\n case 'PageDown':\n value = currentValue - onePercent * 10;\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n value = currentValue + step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n value = currentValue - step;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n\n value = clamp(value, min, max);\n\n emitChange(event.nativeEvent, value, index);\n }, [emitChange, max, min, stepProp, valueProp]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n const index = parseFloat(event.currentTarget.getAttribute(INDEX_ATTR) ?? '');\n\n let newValue;\n\n if (Array.isArray(valueProp)) {\n newValue = [...valueProp];\n const eventValue = parseFloat(event.target.value);\n newValue[index] = eventValue;\n\n newValue.sort((a, b) => a - b);\n\n focusThumb(newValue.indexOf(eventValue));\n } else {\n newValue = parseFloat(event.target.value);\n }\n\n onChange(event, newValue as number & number[]);\n }\n }, [onChange, valueProp]);\n\n const handleRef = (node: HTMLDivElement | null) => {\n const nextContainer = node;\n const prevContainer = containerRef.current;\n\n if (prevContainer !== nextContainer) {\n if (prevContainer) {\n prevContainer.removeEventListener('touchstart', preventPageScrolling);\n }\n if (nextContainer) {\n nextContainer.addEventListener('touchstart', preventPageScrolling, { passive: false });\n }\n }\n\n containerRef.current = nextContainer;\n };\n\n const handleInputRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n const index = node.getAttribute(INDEX_ATTR);\n\n if (index != null) {\n hiddenInputsRef.current[parseInt(index, 10)] = node;\n }\n }\n }, []);\n\n const calculateTrackPoints = (offset: number, leap: number) => {\n if (vertical) {\n return {\n x1: 1,\n y1: 100 - offset,\n x2: 1,\n y2: 100 - leap,\n };\n }\n\n return {\n x1: offset,\n y1: 1,\n x2: leap,\n y2: 1,\n };\n };\n\n const values = Array.isArray(valueProp) ? valueProp : [valueProp == null ? min : valueProp];\n\n const startValue = Array.isArray(valueProp) ? valueProp[0] : min;\n const endValue = values[values.length - 1];\n\n const tracksCount = marks && stepProp ? (((max - min) / stepProp)) : undefined;\n\n const rootClassName = classnames(\n className,\n {\n vertical,\n disabled,\n activated: activeIndex !== undefined,\n discrete: tracksCount && stepProp != null ? 'discrete' : undefined,\n alternative: color === 'alternative',\n },\n );\n\n return (\n <Root\n className={rootClassName}\n onClick={handleClick}\n {...otherProps}\n ref={ref}\n >\n <Container ref={handleRef} className=\"ui-slider__container\">\n <TrackSvg viewBox={vertical ? '0 0 2 100' : '0 0 100 2'} preserveAspectRatio=\"none\" className=\"ui-slider__track\">\n {\n tracksCount && stepProp != null\n ? Array.from({ length: tracksCount }).map((_, i) => {\n const trackStart = min + i * stepProp;\n const trackEnd = trackStart + stepProp;\n const trackOffset = valueToPercent(trackStart, min, max) + (i === 0 ? 0 : 0.2);\n const trackLeap = valueToPercent(trackEnd, min, max) -\n (i === tracksCount - 1 ? 0 : 0.2);\n const active = trackStart >= startValue && trackEnd <= endValue;\n return (\n <TrackLine\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n className={classnames({ active })}\n {...calculateTrackPoints(trackOffset, trackLeap)}\n />\n );\n })\n : (\n <>\n <RailLine\n {...calculateTrackPoints(0, 100)}\n />\n <TrackLine\n className=\"active\"\n {...calculateTrackPoints(\n valueToPercent(startValue, min, max),\n valueToPercent(endValue, min, max),\n )}\n />\n </>\n )\n }\n </TrackSvg>\n {\n values.map((val, i) => {\n const percent = clamp(valueToPercent(val, min, max));\n\n const stylesThumbWrapper = {\n [vertical ? 'bottom' : 'left']: `${percent}%`,\n };\n\n return (\n <ThumbWrapper\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n className={classnames({ activated: activeIndex === i })}\n style={stylesThumbWrapper}\n onMouseDown={handleMouseDown}\n onTouchStartCapture={handleTouchStart}\n onTouchMove={handleTouchMove}\n data-index={i}\n >\n <Thumb\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onTouchStartCapture={handleTouchStart}\n onTouchMove={handleTouchMove}\n type=\"button\"\n role=\"slider\"\n data-index={i}\n className=\"ui-slider__thumb\"\n />\n <HiddenNumberInput\n type=\"number\"\n name={name}\n data-index={i}\n value={val}\n onChange={handleChange}\n ref={handleInputRef}\n />\n </ThumbWrapper>\n );\n })\n }\n </Container>\n </Root>\n );\n});\n\nexport default memo(Slider);\n"],"names":["INDEX_ATTR","defaultValueReducer","rawValue","props","disabled","step","roundToStep","Number","Slider","forwardRef","ref","className","valueProp","min","max","stepProp","marks","onChange","onDragStart","onDragEnd","vertical","valueReducer","name","color","otherProps","touchIdRef","useRef","undefined","containerRef","hiddenInputsRef","removeListenersRef","activeIndex","setActiveIndex","useState","activeIndexRef","useEffect","focusThumb","index","_containerRef_current","_document_activeElement","document","_containerRef_current_querySelector","prevIndex","emitChange","useCallback","event","currentIndex","newValue","hiddenInput","previousValue","parseFloat","triggerChangeEvent","calculateValueFromPercent","percent","calculatePercent","percentToValue","handleClick","value","Array","prevDiff","val","i","diff","Math","handleDragEnd","handleMouseEnter","handleMouseMove","handleMouseLeave","handleMouseUp","handleMouseDown","_event_currentTarget_getAttribute","handleTouchEnd","touch","getTouch","handleTouchStart","handleTouchMove","nativeEvent","handleKeyDown","currentValue","onePercent","clamp","handleChange","eventValue","a","b","handleRef","node","nextContainer","prevContainer","preventPageScrolling","handleInputRef","parseInt","calculateTrackPoints","offset","leap","values","startValue","endValue","tracksCount","rootClassName","classnames","Root","Container","TrackSvg","_","trackStart","trackEnd","trackOffset","valueToPercent","trackLeap","active","TrackLine","RailLine","stylesThumbWrapper","ThumbWrapper","Thumb","HiddenNumberInput","memo"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snackbar/Snackbar.js","sources":["../../src/Snackbar/Snackbar.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'clsx';\nimport { CSSTransition } from 'react-transition-group';\nimport { transitionSlideParent, transitionSlide } from '@finam/web-ui-kit-core/styles/transition';\nimport type { CSSTransitionProps } from '../types.js';\nimport ClickAwayListener, { ClickAwayListenerProps } from '../ClickAwayListener/index.js';\nimport SnackbarContent, { SnackbarContentProps } from '../SnackbarContent/index.js';\nimport { IN, OUT, Root, slide, transitionClassName } from './Snackbar.styles.js';\nimport { transitionClassNames } from '../utils/transition.js';\n\nexport interface Props extends React.ComponentPropsWithoutRef<typeof Root> {\n /** Управление видимостью всплывающего окна */\n open?: boolean;\n /** Объект управляющий позицией всплытия\n * - `horizontal`: \"left\", \"center\", \"right\".\n * - `vertical`: \"top\", \"bottom\".\n */\n anchorOrigin?: AnchorOrigin;\n /** Количество миллисекунд, через которое всплывающее окно будет автоматически скрыто */\n autoHideDuration?: number;\n /** Количество миллисекунд, через которое всплывающее окно будет автоматически скрыто\n * после восстановления активности (после паузы) */\n resumeHideDuration?: number;\n /** Иконка, отображаемая перед контентом всплывающего окна */\n icon?: React.ReactElement<any>;\n /** Элемент, предназначенный для выполнения действий при взаимодействии с пользователем */\n action?: React.ReactNode;\n /** Текст сообщения всплывающего окна */\n message?: React.ReactNode;\n /** Кастомный компонент, полностью заменяющий содержимое всплывающего окна */\n children?: React.ReactElement<any>;\n /** Флаг, включающий возможность копирования текста некастомного контента\n * всплывающего окна по клику */\n withCopy?: boolean;\n /** Кастомные классы передаваемые в корневой компонент */\n className?: string;\n /** Свойства передаваемые в компонент `ClickAwayListener` */\n ClickAwayListenerProps?: Partial<ClickAwayListenerProps<HTMLDivElement>>;\n /** Свойства передаваемые в компонент `SnackbarContent` */\n ContentProps?: Partial<SnackbarContentProps>;\n /** Флаг, отключающий автоматическое скрытие всплывающего окна при потере фокуса\n * активного `windows` */\n disableWindowBlurListener?: boolean;\n /** Функция обратного вызова, вызываемая при закрытии всплывающего окна */\n onClose?: (\n event:\n MouseEvent | React.MouseEvent<HTMLDivElement> |\n TouchEvent | React.TouchEvent<HTMLDivElement> |\n null,\n reason: 'timeout' | 'clickaway' | 'swipe'\n ) => void;\n /** Свойства передаваемые в компонент `CSSTransition` */\n TransitionProps?: Partial<CSSTransitionProps<HTMLElement>>;\n /** Вариант основного цвета всплывающего окна */\n color?: 'regular' | 'danger';\n}\n\nexport interface AnchorOrigin {\n horizontal: 'left' | 'center' | 'right';\n vertical: 'top' | 'bottom';\n}\n\nconst SWIPE_Y_DISTANCE = 20;\n\nconst Snackbar = React.forwardRef<HTMLDivElement, Props>((props, ref) => {\n const {\n open,\n anchorOrigin: { vertical, horizontal } = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration,\n resumeHideDuration,\n icon,\n action,\n message,\n withCopy = true,\n children,\n className,\n ClickAwayListenerProps: clickAwayListenerProps,\n ContentProps,\n disableWindowBlurListener = false,\n onClose,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n onTouchEnd,\n TransitionProps,\n color,\n ...other\n } = props;\n\n const timeout = TransitionProps?.timeout || {\n enter: IN,\n exit: OUT,\n };\n const onEnter = TransitionProps?.onEnter;\n const onExited = TransitionProps?.onExited;\n\n const contentRef = React.useRef<HTMLDivElement>(null);\n const timerAutoHide = React.useRef<any | undefined>(undefined);\n const [exited, setExited] = React.useState(true);\n const [dragY, setDragY] = React.useState(0);\n\n // Timer that controls delay before snackbar auto hides\n const setAutoHideTimer = React.useCallback(\n (autoHideDurationParam?: number) => {\n const autoHideDurationBefore =\n autoHideDurationParam != null ? autoHideDurationParam : autoHideDuration;\n\n if (!open || !onClose || autoHideDurationBefore == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n const autoHideDurationAfter =\n autoHideDurationParam != null ? autoHideDurationParam : autoHideDuration;\n if (!onClose || autoHideDurationAfter == null) {\n return;\n }\n onClose(null, 'timeout');\n }, autoHideDurationBefore);\n },\n [autoHideDuration, onClose, open],\n );\n\n React.useEffect(() => {\n if (open) {\n setAutoHideTimer();\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, setAutoHideTimer]);\n\n // Pause the timer when the user is interacting with the Snackbar\n // or when the user hide the window.\n const handlePause = React.useCallback(() => {\n clearTimeout(timerAutoHide.current);\n }, []);\n\n // Restart the timer when the user is no longer interacting with the Snackbar\n // or when the window is shown back.\n const handleResume = React.useCallback(() => {\n if (autoHideDuration != null) {\n if (resumeHideDuration != null) {\n setAutoHideTimer(resumeHideDuration);\n return;\n }\n setAutoHideTimer(autoHideDuration * 0.5);\n }\n }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n\n const handlePointerEnter = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType !== 'touch') {\n if (onMouseEnter) {\n onMouseEnter(event);\n }\n handlePause();\n }\n }, [onMouseEnter, handlePause]);\n\n const handlePointerLeave = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType !== 'touch') {\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n handleResume();\n }\n }, [onMouseLeave, handleResume]);\n\n const handleTouchStart = React.useCallback((event: React.TouchEvent<HTMLDivElement>) => {\n if (onTouchStart) {\n onTouchStart(event);\n }\n handlePause();\n\n const startDragY = event.changedTouches?.[0].clientY;\n\n if (startDragY) {\n setDragY(startDragY);\n }\n }, [onTouchStart, handlePause]);\n\n const handleTouchEnd = React.useCallback((event: React.TouchEvent<HTMLDivElement>) => {\n if (onTouchEnd) {\n onTouchEnd(event);\n }\n handleResume();\n\n const endDragY = event.changedTouches?.[0].clientY;\n\n if (endDragY && Math.abs(dragY - endDragY) > SWIPE_Y_DISTANCE) {\n onClose?.(event, 'swipe');\n }\n }, [dragY, onTouchEnd, handleResume, onClose]);\n\n const handleClickAway = React.useCallback((event: MouseEvent | TouchEvent) => {\n if (onClose) {\n onClose(event, 'clickaway');\n }\n }, [onClose]);\n\n const handleEnter = React.useCallback((node: HTMLElement, isAppearing: boolean) => {\n setExited(false);\n onEnter?.(isAppearing);\n }, [onEnter]);\n\n const handleExited = React.useCallback(() => {\n setExited(true);\n onExited?.();\n }, [onExited]);\n\n React.useEffect(() => {\n if (!disableWindowBlurListener && open) {\n window.addEventListener('focus', handleResume);\n window.addEventListener('blur', handlePause);\n\n return () => {\n window.removeEventListener('focus', handleResume);\n window.removeEventListener('blur', handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, handlePause, open]);\n\n if (!open && exited) {\n return null;\n }\n\n const rootClassName = classnames(\n `anchor-origin-${vertical}-${horizontal}`,\n className,\n );\n const contentClassName = classnames(\n transitionSlide({ marginThreshold: 'medium', direction: vertical === 'top' ? 'down' : 'up' }),\n slide,\n ContentProps?.className,\n );\n\n return (\n <ClickAwayListener onClickAway={handleClickAway} {...clickAwayListenerProps}>\n <Root\n className={rootClassName}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n ref={ref}\n {...other}\n >\n <CSSTransition\n appear={true}\n in={open}\n timeout={timeout}\n classNames={transitionClassNames([transitionSlideParent, transitionClassName])}\n {...TransitionProps}\n onEnter={handleEnter as any}\n onExited={handleExited}\n nodeRef={contentRef}\n >\n {children || (\n <SnackbarContent\n ref={contentRef}\n message={message}\n icon={icon}\n action={action}\n withCopy={withCopy}\n color={color}\n {...ContentProps}\n className={contentClassName}\n />\n )}\n </CSSTransition>\n </Root>\n </ClickAwayListener>\n );\n});\n\nexport default React.memo(Snackbar);\n"],"names":["SWIPE_Y_DISTANCE","Snackbar","React","props","ref","open","vertical","horizontal","autoHideDuration","resumeHideDuration","icon","action","message","withCopy","children","className","clickAwayListenerProps","ContentProps","disableWindowBlurListener","onClose","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","TransitionProps","color","other","timeout","IN","OUT","onEnter","onExited","contentRef","timerAutoHide","undefined","exited","setExited","dragY","setDragY","setAutoHideTimer","autoHideDurationParam","autoHideDurationBefore","clearTimeout","setTimeout","autoHideDurationAfter","handlePause","handleResume","handlePointerEnter","event","handlePointerLeave","handleTouchStart","_event_changedTouches","startDragY","handleTouchEnd","endDragY","Math","handleClickAway","handleEnter","node","isAppearing","handleExited","window","rootClassName","classnames","contentClassName","transitionSlide","slide","ClickAwayListener","Root","CSSTransition","transitionClassNames","transitionSlideParent","transitionClassName","SnackbarContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Snackbar/Snackbar.js","sources":["../../src/Snackbar/Snackbar.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'clsx';\nimport { CSSTransition } from 'react-transition-group';\nimport { transitionSlideParent, transitionSlide } from '@finam/web-ui-kit-core/styles/transition';\nimport type { CSSTransitionProps } from '../types.js';\nimport ClickAwayListener, { ClickAwayListenerProps } from '../ClickAwayListener/index.js';\nimport SnackbarContent, { SnackbarContentProps } from '../SnackbarContent/index.js';\nimport { IN, OUT, Root, slide, transitionClassName } from './Snackbar.styles.js';\nimport { transitionClassNames } from '../utils/transition.js';\n\nexport interface Props extends React.ComponentPropsWithoutRef<typeof Root> {\n /** Управление видимостью всплывающего окна */\n open?: boolean;\n /** Объект управляющий позицией всплытия\n * - `horizontal`: \"left\", \"center\", \"right\".\n * - `vertical`: \"top\", \"bottom\".\n */\n anchorOrigin?: AnchorOrigin;\n /** Количество миллисекунд, через которое всплывающее окно будет автоматически скрыто */\n autoHideDuration?: number;\n /** Количество миллисекунд, через которое всплывающее окно будет автоматически скрыто\n * после восстановления активности (после паузы) */\n resumeHideDuration?: number;\n /** Иконка, отображаемая перед контентом всплывающего окна */\n icon?: React.ReactElement<any>;\n /** Элемент, предназначенный для выполнения действий при взаимодействии с пользователем */\n action?: React.ReactNode;\n /** Текст сообщения всплывающего окна */\n message?: React.ReactNode;\n /** Кастомный компонент, полностью заменяющий содержимое всплывающего окна */\n children?: React.ReactElement<any>;\n /** Флаг, включающий возможность копирования текста некастомного контента\n * всплывающего окна по клику */\n withCopy?: boolean;\n /** Кастомные классы передаваемые в корневой компонент */\n className?: string;\n /** Свойства передаваемые в компонент `ClickAwayListener` */\n ClickAwayListenerProps?: Partial<ClickAwayListenerProps<HTMLDivElement>>;\n /** Свойства передаваемые в компонент `SnackbarContent` */\n ContentProps?: Partial<SnackbarContentProps>;\n /** Флаг, отключающий автоматическое скрытие всплывающего окна при потере фокуса\n * активного `windows` */\n disableWindowBlurListener?: boolean;\n /** Функция обратного вызова, вызываемая при закрытии всплывающего окна */\n onClose?: (\n event:\n MouseEvent | React.MouseEvent<HTMLDivElement> |\n TouchEvent | React.TouchEvent<HTMLDivElement> |\n null,\n reason: 'timeout' | 'clickaway' | 'swipe'\n ) => void;\n /** Свойства передаваемые в компонент `CSSTransition` */\n TransitionProps?: Partial<CSSTransitionProps<HTMLElement>>;\n /** Вариант основного цвета всплывающего окна */\n color?: 'regular' | 'danger';\n}\n\nexport interface AnchorOrigin {\n horizontal: 'left' | 'center' | 'right';\n vertical: 'top' | 'bottom';\n}\n\nconst SWIPE_Y_DISTANCE = 20;\n\nconst Snackbar = React.forwardRef<HTMLDivElement, Props>((props, ref) => {\n const {\n open,\n anchorOrigin: { vertical, horizontal } = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration,\n resumeHideDuration,\n icon,\n action,\n message,\n withCopy = true,\n children,\n className,\n ClickAwayListenerProps: clickAwayListenerProps,\n ContentProps,\n disableWindowBlurListener = false,\n onClose,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n onTouchEnd,\n TransitionProps,\n color,\n ...other\n } = props;\n\n const timeout = TransitionProps?.timeout || {\n enter: IN,\n exit: OUT,\n };\n const onEnter = TransitionProps?.onEnter;\n const onExited = TransitionProps?.onExited;\n\n const contentRef = React.useRef<HTMLDivElement>(null);\n const timerAutoHide = React.useRef<any>(undefined);\n const [exited, setExited] = React.useState(true);\n const [dragY, setDragY] = React.useState(0);\n\n // Timer that controls delay before snackbar auto hides\n const setAutoHideTimer = React.useCallback(\n (autoHideDurationParam?: number) => {\n const autoHideDurationBefore =\n autoHideDurationParam != null ? autoHideDurationParam : autoHideDuration;\n\n if (!open || !onClose || autoHideDurationBefore == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n const autoHideDurationAfter =\n autoHideDurationParam != null ? autoHideDurationParam : autoHideDuration;\n if (!onClose || autoHideDurationAfter == null) {\n return;\n }\n onClose(null, 'timeout');\n }, autoHideDurationBefore);\n },\n [autoHideDuration, onClose, open],\n );\n\n React.useEffect(() => {\n if (open) {\n setAutoHideTimer();\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, setAutoHideTimer]);\n\n // Pause the timer when the user is interacting with the Snackbar\n // or when the user hide the window.\n const handlePause = React.useCallback(() => {\n clearTimeout(timerAutoHide.current);\n }, []);\n\n // Restart the timer when the user is no longer interacting with the Snackbar\n // or when the window is shown back.\n const handleResume = React.useCallback(() => {\n if (autoHideDuration != null) {\n if (resumeHideDuration != null) {\n setAutoHideTimer(resumeHideDuration);\n return;\n }\n setAutoHideTimer(autoHideDuration * 0.5);\n }\n }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n\n const handlePointerEnter = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType !== 'touch') {\n if (onMouseEnter) {\n onMouseEnter(event);\n }\n handlePause();\n }\n }, [onMouseEnter, handlePause]);\n\n const handlePointerLeave = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => {\n if (event.pointerType !== 'touch') {\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n handleResume();\n }\n }, [onMouseLeave, handleResume]);\n\n const handleTouchStart = React.useCallback((event: React.TouchEvent<HTMLDivElement>) => {\n if (onTouchStart) {\n onTouchStart(event);\n }\n handlePause();\n\n const startDragY = event.changedTouches?.[0].clientY;\n\n if (startDragY) {\n setDragY(startDragY);\n }\n }, [onTouchStart, handlePause]);\n\n const handleTouchEnd = React.useCallback((event: React.TouchEvent<HTMLDivElement>) => {\n if (onTouchEnd) {\n onTouchEnd(event);\n }\n handleResume();\n\n const endDragY = event.changedTouches?.[0].clientY;\n\n if (endDragY && Math.abs(dragY - endDragY) > SWIPE_Y_DISTANCE) {\n onClose?.(event, 'swipe');\n }\n }, [dragY, onTouchEnd, handleResume, onClose]);\n\n const handleClickAway = React.useCallback((event: MouseEvent | TouchEvent) => {\n if (onClose) {\n onClose(event, 'clickaway');\n }\n }, [onClose]);\n\n const handleEnter = React.useCallback((node: HTMLElement, isAppearing: boolean) => {\n setExited(false);\n onEnter?.(isAppearing);\n }, [onEnter]);\n\n const handleExited = React.useCallback(() => {\n setExited(true);\n onExited?.();\n }, [onExited]);\n\n React.useEffect(() => {\n if (!disableWindowBlurListener && open) {\n window.addEventListener('focus', handleResume);\n window.addEventListener('blur', handlePause);\n\n return () => {\n window.removeEventListener('focus', handleResume);\n window.removeEventListener('blur', handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, handlePause, open]);\n\n if (!open && exited) {\n return null;\n }\n\n const rootClassName = classnames(\n `anchor-origin-${vertical}-${horizontal}`,\n className,\n );\n const contentClassName = classnames(\n transitionSlide({ marginThreshold: 'medium', direction: vertical === 'top' ? 'down' : 'up' }),\n slide,\n ContentProps?.className,\n );\n\n return (\n <ClickAwayListener onClickAway={handleClickAway} {...clickAwayListenerProps}>\n <Root\n className={rootClassName}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n ref={ref}\n {...other}\n >\n <CSSTransition\n appear={true}\n in={open}\n timeout={timeout}\n classNames={transitionClassNames([transitionSlideParent, transitionClassName])}\n {...TransitionProps}\n onEnter={handleEnter as any}\n onExited={handleExited}\n nodeRef={contentRef}\n >\n {children || (\n <SnackbarContent\n ref={contentRef}\n message={message}\n icon={icon}\n action={action}\n withCopy={withCopy}\n color={color}\n {...ContentProps}\n className={contentClassName}\n />\n )}\n </CSSTransition>\n </Root>\n </ClickAwayListener>\n );\n});\n\nexport default React.memo(Snackbar);\n"],"names":["SWIPE_Y_DISTANCE","Snackbar","React","props","ref","open","vertical","horizontal","autoHideDuration","resumeHideDuration","icon","action","message","withCopy","children","className","clickAwayListenerProps","ContentProps","disableWindowBlurListener","onClose","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","TransitionProps","color","other","timeout","IN","OUT","onEnter","onExited","contentRef","timerAutoHide","undefined","exited","setExited","dragY","setDragY","setAutoHideTimer","autoHideDurationParam","autoHideDurationBefore","clearTimeout","setTimeout","autoHideDurationAfter","handlePause","handleResume","handlePointerEnter","event","handlePointerLeave","handleTouchStart","_event_changedTouches","startDragY","handleTouchEnd","endDragY","Math","handleClickAway","handleEnter","node","isAppearing","handleExited","window","rootClassName","classnames","contentClassName","transitionSlide","slide","ClickAwayListener","Root","CSSTransition","transitionClassNames","transitionSlideParent","transitionClassName","SnackbarContent"],"mappings":";;;;;;;;;;;;AA8DA,MAAMA,mBAAmB;AAEzB,MAAMC,WAAW,WAAHA,GAAGC,wBAAAA,UAAgB,CAAwB,CAACC,OAAOC;IAC/D,MAAM,EACJC,IAAI,EACJ,cAAc,EAAEC,QAAQ,EAAEC,UAAU,EAAE,GAAG;QAAE,UAAU;QAAU,YAAY;IAAS,CAAC,EACrFC,gBAAgB,EAChBC,kBAAkB,EAClBC,IAAI,EACJC,MAAM,EACNC,OAAO,EACPC,WAAW,IAAI,EACfC,QAAQ,EACRC,SAAS,EACT,wBAAwBC,sBAAsB,EAC9CC,YAAY,EACZC,4BAA4B,KAAK,EACjCC,OAAO,EACPC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,UAAU,EACVC,eAAe,EACfC,KAAK,EAEN,GAAGtB,OADCuB,QAAAA,6BACDvB,OAAAA;;;;;;;;;;;;;;;;;;;;;;IAEJ,MAAMwB,UAAUH,AAAAA,CAAAA,QAAAA,kBAAAA,KAAAA,IAAAA,gBAAiB,OAAO,AAAD,KAAK;QAC1C,OAAOI;QACP,MAAMC;IACR;IACA,MAAMC,UAAUN,QAAAA,kBAAAA,KAAAA,IAAAA,gBAAiB,OAAO;IACxC,MAAMO,WAAWP,QAAAA,kBAAAA,KAAAA,IAAAA,gBAAiB,QAAQ;IAE1C,MAAMQ,aAAa9B,wBAAAA,MAAY,CAAiB;IAChD,MAAM+B,gBAAgB/B,wBAAAA,MAAY,CAAMgC;IACxC,MAAM,CAACC,QAAQC,UAAU,GAAGlC,wBAAAA,QAAc,CAAC;IAC3C,MAAM,CAACmC,OAAOC,SAAS,GAAGpC,wBAAAA,QAAc,CAAC;IAGzC,MAAMqC,mBAAmBrC,wBAAAA,WAAiB,CACxC,CAACsC;QACC,MAAMC,yBACJD,AAAyB,QAAzBA,wBAAgCA,wBAAwBhC;QAE1D,IAAI,CAACH,QAAQ,CAACc,WAAWsB,AAA0B,QAA1BA,wBACvB;QAGFC,aAAaT,cAAc,OAAO;QAClCA,cAAc,OAAO,GAAGU,WAAW;YACjC,MAAMC,wBACJJ,AAAyB,QAAzBA,wBAAgCA,wBAAwBhC;YAC1D,IAAI,CAACW,WAAWyB,AAAyB,QAAzBA,uBACd;YAEFzB,QAAQ,MAAM;QAChB,GAAGsB;IACL,GACA;QAACjC;QAAkBW;QAASd;KAAK;IAGnCH,wBAAAA,SAAe,CAAC;QACd,IAAIG,MACFkC;QAGF,OAAO;YACLG,aAAaT,cAAc,OAAO;QACpC;IACF,GAAG;QAAC5B;QAAMkC;KAAiB;IAI3B,MAAMM,cAAc3C,wBAAAA,WAAiB,CAAC;QACpCwC,aAAaT,cAAc,OAAO;IACpC,GAAG,EAAE;IAIL,MAAMa,eAAe5C,wBAAAA,WAAiB,CAAC;QACrC,IAAIM,AAAoB,QAApBA,kBAA0B;YAC5B,IAAIC,AAAsB,QAAtBA,oBAA4B,YAC9B8B,iBAAiB9B;YAGnB8B,iBAAiB/B,AAAmB,MAAnBA;QACnB;IACF,GAAG;QAACA;QAAkBC;QAAoB8B;KAAiB;IAE3D,MAAMQ,qBAAqB7C,wBAAAA,WAAiB,CAAC,CAAC8C;QAC5C,IAAIA,AAAsB,YAAtBA,MAAM,WAAW,EAAc;YACjC,IAAI5B,cACFA,aAAa4B;YAEfH;QACF;IACF,GAAG;QAACzB;QAAcyB;KAAY;IAE9B,MAAMI,qBAAqB/C,wBAAAA,WAAiB,CAAC,CAAC8C;QAC5C,IAAIA,AAAsB,YAAtBA,MAAM,WAAW,EAAc;YACjC,IAAI3B,cACFA,aAAa2B;YAEfF;QACF;IACF,GAAG;QAACzB;QAAcyB;KAAa;IAE/B,MAAMI,mBAAmBhD,wBAAAA,WAAiB,CAAC,CAAC8C;YAMvBG;QALnB,IAAI7B,cACFA,aAAa0B;QAEfH;QAEA,MAAMO,aAAa,QAAAD,CAAAA,wBAAAA,MAAM,cAAc,AAAD,IAAnBA,KAAAA,IAAAA,qBAAsB,CAAC,EAAE,CAAC,OAAO;QAEpD,IAAIC,YACFd,SAASc;IAEb,GAAG;QAAC9B;QAAcuB;KAAY;IAE9B,MAAMQ,iBAAiBnD,wBAAAA,WAAiB,CAAC,CAAC8C;YAMvBG;QALjB,IAAI5B,YACFA,WAAWyB;QAEbF;QAEA,MAAMQ,WAAW,QAAAH,CAAAA,wBAAAA,MAAM,cAAc,AAAD,IAAnBA,KAAAA,IAAAA,qBAAsB,CAAC,EAAE,CAAC,OAAO;QAElD,IAAIG,YAAYC,KAAK,GAAG,CAAClB,QAAQiB,YAAYtD,kBAC3CmB,QAAAA,WAAAA,QAAU6B,OAAO;IAErB,GAAG;QAACX;QAAOd;QAAYuB;QAAc3B;KAAQ;IAE7C,MAAMqC,kBAAkBtD,wBAAAA,WAAiB,CAAC,CAAC8C;QACzC,IAAI7B,SACFA,QAAQ6B,OAAO;IAEnB,GAAG;QAAC7B;KAAQ;IAEZ,MAAMsC,cAAcvD,wBAAAA,WAAiB,CAAC,CAACwD,MAAmBC;QACxDvB,UAAU;QACVN,QAAAA,WAAAA,QAAU6B;IACZ,GAAG;QAAC7B;KAAQ;IAEZ,MAAM8B,eAAe1D,wBAAAA,WAAiB,CAAC;QACrCkC,UAAU;QACVL,QAAAA,YAAAA;IACF,GAAG;QAACA;KAAS;IAEb7B,wBAAAA,SAAe,CAAC;QACd,IAAI,CAACgB,6BAA6Bb,MAAM;YACtCwD,OAAO,gBAAgB,CAAC,SAASf;YACjCe,OAAO,gBAAgB,CAAC,QAAQhB;YAEhC,OAAO;gBACLgB,OAAO,mBAAmB,CAAC,SAASf;gBACpCe,OAAO,mBAAmB,CAAC,QAAQhB;YACrC;QACF;IAGF,GAAG;QAAC3B;QAA2B4B;QAAcD;QAAaxC;KAAK;IAE/D,IAAI,CAACA,QAAQ8B,QACX,OAAO;IAGT,MAAM2B,gBAAgBC,KACpB,CAAC,cAAc,EAAEzD,SAAS,CAAC,EAAEC,YAAY,EACzCQ;IAEF,MAAMiD,mBAAmBD,KACvBE,gBAAgB;QAAE,iBAAiB;QAAU,WAAW3D,AAAa,UAAbA,WAAqB,SAAS;IAAK,IAC3F4D,OACAjD,QAAAA,eAAAA,KAAAA,IAAAA,aAAc,SAAS;IAGzB,OAAO,WAAP,GACE,IAACkD,mBAAiBA,uBAAAA,EAAAA;QAAC,aAAaX;OAAqBxC,yBAAAA;kBACnD,kBAACoD,MAAIA,uBAAAA,EAAAA;YACH,WAAWN;YACX,gBAAgBf;YAChB,gBAAgBE;YAChB,cAAcC;YACd,YAAYG;YACZ,KAAKjD;WACDsB,QAAAA;sBAEJ,kBAAC2C,eAAaA,uBAAAA,EAAAA;gBACZ,QAAQ;gBACR,IAAIhE;gBACJ,SAASsB;gBACT,YAAY2C,qBAAqB;oBAACC;oBAAuBC;iBAAoB;eACzEhD,kBAAAA;gBACJ,SAASiC;gBACT,UAAUG;gBACV,SAAS5B;0BAERlB,YAAY,WAAZA,GACC,IAAC2D,iBAAeA,uBAAAA,EAAAA;oBACd,KAAKzC;oBACL,SAASpB;oBACT,MAAMF;oBACN,QAAQC;oBACR,UAAUE;oBACV,OAAOY;mBACHR,eAAAA;oBACJ,WAAW+C;;;;;AAOzB;AAEA,wCAAe9D,wBAAAA,IAAU,CAACD"}
|
package/dist/Stepper/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import Stepper, { Props } from './Stepper.js';
|
|
2
1
|
export type { Size } from './types.js';
|
|
3
|
-
export type { Props as StepperProps };
|
|
4
|
-
export default Stepper;
|
|
2
|
+
export type { Props as StepperProps } from './Stepper.js';
|
|
3
|
+
export { default } from './Stepper.js';
|
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Stepper/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Stepper/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/Stepper/index.js
CHANGED
package/dist/Tab/Tab.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ type ExportProps<T extends ElementType> = {
|
|
|
32
32
|
as?: T;
|
|
33
33
|
ref?: Ref<T>;
|
|
34
34
|
} & Omit<Props, keyof ComponentPropsWithoutRef<T> | 'as'> & Omit<ComponentPropsWithoutRef<T>, 'as'>;
|
|
35
|
-
declare const _default: (<T extends ElementType = "button">(
|
|
35
|
+
declare const _default: (<T extends ElementType = "button">(// NOSONAR
|
|
36
|
+
props: ExportProps<T>) => JSX.Element) & MemoExoticComponent<typeof Tab>;
|
|
36
37
|
export default _default;
|
|
37
38
|
//# sourceMappingURL=Tab.d.ts.map
|
package/dist/Tab/Tab.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../src/Tab/Tab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,SAAS,EAET,GAAG,EACH,WAAW,EACX,GAAG,EACH,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG5E,MAAM,WAAW,KAAM,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACpE,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,yCAAyC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,gCAAgC;IAChC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC7B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAED,QAAA,MAAM,GAAG,qGAuEP,CAAC;AAEH,KAAK,WAAW,CAAC,CAAC,SAAS,WAAW,IAChC;IAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GACzB,IAAI,CAAC,KAAK,EAAE,MAAM,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GACrD,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../src/Tab/Tab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,SAAS,EAET,GAAG,EACH,WAAW,EACX,GAAG,EACH,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG5E,MAAM,WAAW,KAAM,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACpE,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,yCAAyC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,gCAAgC;IAChC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC7B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAED,QAAA,MAAM,GAAG,qGAuEP,CAAC;AAEH,KAAK,WAAW,CAAC,CAAC,SAAS,WAAW,IAChC;IAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GACzB,IAAI,CAAC,KAAK,EAAE,MAAM,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GACrD,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAGlB,CAAC,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,EAAG,UAAU;AACzE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAClB,GAAG,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,GAAG,CAAC;AAFnD,wBAEoD"}
|
package/dist/Tab/Tab.js
CHANGED
|
@@ -64,7 +64,7 @@ const Tab = /*#__PURE__*/ forwardRef((_0, _1)=>{
|
|
|
64
64
|
children: children
|
|
65
65
|
}) : children,
|
|
66
66
|
count ? /*#__PURE__*/ jsx(Counter, {
|
|
67
|
-
color: 'buttons' === tabType && selected && 'alternative'
|
|
67
|
+
color: 'buttons' === tabType && selected && 'alternative' !== buttonVariant ? 'onbrand' : 'default',
|
|
68
68
|
size: 'xs' === size ? 's' : size,
|
|
69
69
|
className: tabCounterSpacing[tabType],
|
|
70
70
|
children: count
|
package/dist/Tab/Tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab/Tab.js","sources":["../../src/Tab/Tab.tsx"],"sourcesContent":["import type {\n ButtonHTMLAttributes,\n ReactNode,\n MouseEvent,\n JSX,\n ElementType,\n Ref,\n ComponentPropsWithoutRef,\n MemoExoticComponent,\n} from 'react';\nimport { forwardRef, memo, useCallback } from 'react';\nimport { tab, tabContentWrapper, tabCounterSpacing } from '@finam/web-ui-kit-core/styles/tab';\nimport classnames from 'clsx';\nimport type { Size, TabType, ButtonVariant, LineVariant } from './types.js';\nimport Counter from '../Counter/index.js';\n\nexport interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Активное состояние компонента */\n selected?: boolean;\n /** Растяжение компонента по ширине контейнера */\n fullWidth?: boolean;\n /** Варианты отображения кнопочного Tab */\n buttonVariant?: ButtonVariant;\n /** Варианты отображения линейного Tab */\n lineVariant?: LineVariant;\n /** Размер Tab */\n size?: Size;\n /** Линейный или кнопочный Tab */\n tabType?: TabType;\n /** Значение вкладки */\n value?: any;\n /** Обработчик выбора вкладки */\n onChange?(value?: any): void;\n /** Иконка, отображаемая слева от текста */\n icon?: ReactNode;\n /** Счетчик, отображаемый справа от текста */\n count?: number;\n /** Направление линейных вкладок */\n vertical?: boolean;\n /** Отключение действия по клику, по-умолчанию true для типа компонента \"button\" */\n preventDefaultOnClick?: boolean;\n\n as?: ElementType;\n}\n\nconst Tab = forwardRef<HTMLButtonElement, Props>(({\n selected,\n fullWidth,\n buttonVariant = 'primary',\n lineVariant = 'primary',\n size = 'm',\n tabType = 'line',\n value,\n onChange,\n icon = null,\n vertical: verticalProp,\n count,\n as: TabComponent = 'button',\n preventDefaultOnClick = TabComponent === 'button',\n ...tabProps\n}, ref) => {\n const vertical = verticalProp && tabType === 'line';\n const { className, disabled, onClick, children } = tabProps;\n\n const handleClick = useCallback((event: MouseEvent<HTMLButtonElement>) => {\n if (preventDefaultOnClick) {\n event.preventDefault();\n }\n onChange?.(value);\n onClick?.(event);\n }, [value, onChange, onClick, preventDefaultOnClick]);\n\n const iconOnly = Boolean(!children && !count && icon);\n\n const buttonClassName = classnames(\n tab({\n size,\n tabType,\n fullWidth,\n vertical,\n disabled,\n buttonVariant,\n lineVariant,\n iconOnly,\n selected,\n }),\n className,\n );\n\n return (\n <TabComponent\n type=\"button\"\n role=\"tab\"\n value={value}\n {...tabProps}\n ref={ref}\n className={buttonClassName}\n onClick={handleClick}\n >\n {icon}\n {tabType === 'buttons' && children ? (\n <span className={tabContentWrapper[size]}>\n {children}\n </span>\n ) : children}\n {count ? (\n <Counter\n color={tabType === 'buttons' && selected && buttonVariant
|
|
1
|
+
{"version":3,"file":"Tab/Tab.js","sources":["../../src/Tab/Tab.tsx"],"sourcesContent":["import type {\n ButtonHTMLAttributes,\n ReactNode,\n MouseEvent,\n JSX,\n ElementType,\n Ref,\n ComponentPropsWithoutRef,\n MemoExoticComponent,\n} from 'react';\nimport { forwardRef, memo, useCallback } from 'react';\nimport { tab, tabContentWrapper, tabCounterSpacing } from '@finam/web-ui-kit-core/styles/tab';\nimport classnames from 'clsx';\nimport type { Size, TabType, ButtonVariant, LineVariant } from './types.js';\nimport Counter from '../Counter/index.js';\n\nexport interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Активное состояние компонента */\n selected?: boolean;\n /** Растяжение компонента по ширине контейнера */\n fullWidth?: boolean;\n /** Варианты отображения кнопочного Tab */\n buttonVariant?: ButtonVariant;\n /** Варианты отображения линейного Tab */\n lineVariant?: LineVariant;\n /** Размер Tab */\n size?: Size;\n /** Линейный или кнопочный Tab */\n tabType?: TabType;\n /** Значение вкладки */\n value?: any;\n /** Обработчик выбора вкладки */\n onChange?(value?: any): void;\n /** Иконка, отображаемая слева от текста */\n icon?: ReactNode;\n /** Счетчик, отображаемый справа от текста */\n count?: number;\n /** Направление линейных вкладок */\n vertical?: boolean;\n /** Отключение действия по клику, по-умолчанию true для типа компонента \"button\" */\n preventDefaultOnClick?: boolean;\n\n as?: ElementType;\n}\n\nconst Tab = forwardRef<HTMLButtonElement, Props>(({\n selected,\n fullWidth,\n buttonVariant = 'primary',\n lineVariant = 'primary',\n size = 'm',\n tabType = 'line',\n value,\n onChange,\n icon = null,\n vertical: verticalProp,\n count,\n as: TabComponent = 'button',\n preventDefaultOnClick = TabComponent === 'button',\n ...tabProps\n}, ref) => {\n const vertical = verticalProp && tabType === 'line';\n const { className, disabled, onClick, children } = tabProps;\n\n const handleClick = useCallback((event: MouseEvent<HTMLButtonElement>) => {\n if (preventDefaultOnClick) {\n event.preventDefault();\n }\n onChange?.(value);\n onClick?.(event);\n }, [value, onChange, onClick, preventDefaultOnClick]);\n\n const iconOnly = Boolean(!children && !count && icon);\n\n const buttonClassName = classnames(\n tab({\n size,\n tabType,\n fullWidth,\n vertical,\n disabled,\n buttonVariant,\n lineVariant,\n iconOnly,\n selected,\n }),\n className,\n );\n\n return (\n <TabComponent\n type=\"button\"\n role=\"tab\"\n value={value}\n {...tabProps}\n ref={ref}\n className={buttonClassName}\n onClick={handleClick}\n >\n {icon}\n {tabType === 'buttons' && children ? (\n <span className={tabContentWrapper[size]}>\n {children}\n </span>\n ) : children}\n {count ? (\n <Counter\n color={tabType === 'buttons' && selected && buttonVariant !== 'alternative' ? 'onbrand' : 'default'}\n size={size === 'xs' ? 's' : size}\n className={tabCounterSpacing[tabType]}\n >\n {count}\n </Counter>\n ) : null}\n </TabComponent>\n );\n});\n\ntype ExportProps<T extends ElementType> =\n & { as?: T; ref?: Ref<T>; }\n & Omit<Props, keyof ComponentPropsWithoutRef<T> | 'as'> // NOSONAR: 'as' is needed when T has no 'as' prop\n & Omit<ComponentPropsWithoutRef<T>, 'as'>;\n\n// Assertion preserves generic polymorphic signature after memo()\nexport default memo(Tab) as (<T extends ElementType = 'button'>( // NOSONAR\n props: ExportProps<T>\n) => JSX.Element) & MemoExoticComponent<typeof Tab>;\n"],"names":["Tab","forwardRef","selected","fullWidth","buttonVariant","lineVariant","size","tabType","value","onChange","icon","verticalProp","count","TabComponent","preventDefaultOnClick","tabProps","ref","vertical","className","disabled","onClick","children","handleClick","useCallback","event","iconOnly","Boolean","buttonClassName","classnames","tab","tabContentWrapper","Counter","tabCounterSpacing","memo"],"mappings":";;;;;;;;AA6CA,MAAMA,MAAM,WAAHA,GAAGC,WAAqC,CAAC,IAAD;;;;iCAAC,EAChDC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,SAAS,EACzBC,cAAc,SAAS,EACvBC,OAAO,GAAG,EACVC,UAAU,MAAM,EAChBC,KAAK,EACLC,QAAQ,EACRC,OAAO,IAAI,EACX,UAAUC,YAAY,EACtBC,KAAK,EACL,IAAIC,eAAe,QAAQ,EAC3BC,wBAAwBD,AAAiB,aAAjBA,YAAyB,EAElD,UADIE,WAAAA,6BAAAA,OAAAA;;;;;;;;;;;;;;SACFC,IAAAA,GAAAA;IACD,MAAMC,WAAWN,gBAAgBJ,AAAY,WAAZA;IACjC,MAAM,EAAEW,SAAS,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGN;IAEnD,MAAMO,cAAcC,YAAY,CAACC;QAC/B,IAAIV,uBACFU,MAAM,cAAc;QAEtBf,QAAAA,YAAAA,SAAWD;QACXY,QAAAA,WAAAA,QAAUI;IACZ,GAAG;QAAChB;QAAOC;QAAUW;QAASN;KAAsB;IAEpD,MAAMW,WAAWC,QAAQ,CAACL,YAAY,CAACT,SAASF;IAEhD,MAAMiB,kBAAkBC,KACtBC,IAAI;QACFvB;QACAC;QACAJ;QACAc;QACAE;QACAf;QACAC;QACAoB;QACAvB;IACF,IACAgB;IAGF,OAAO,WAAP,GACE,KAACL,cAAAA,uBAAAA,EAAAA;QACC,MAAK;QACL,MAAK;QACL,OAAOL;OACHO,WAAAA;QACJ,KAAKC;QACL,WAAWW;QACX,SAASL;;YAERZ;YACY,cAAZH,WAAyBc,WAAW,WAAXA,GACxB,IAAC;gBAAK,WAAWS,iBAAiB,CAACxB,KAAK;0BACrCe;iBAEDA;YACHT,QAAQ,WAARA,GACC,IAACmB,SAAOA;gBACN,OAAOxB,AAAY,cAAZA,WAAyBL,YAAYE,AAAkB,kBAAlBA,gBAAkC,YAAY;gBAC1F,MAAME,AAAS,SAATA,OAAgB,MAAMA;gBAC5B,WAAW0B,iBAAiB,CAACzB,QAAQ;0BAEpCK;iBAED;;;AAGV;AAQA,8BAAeqB,KAAKjC"}
|
package/dist/Tag/Tag.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../src/Tag/Tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../src/Tag/Tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3F,MAAM,WAAW,KAAM,SAAQ,cAAc,CAAC,eAAe,CAAC;IAC5D,gCAAgC;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,yBAAyB;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,QAAA,MAAM,GAAG,mGA2DP,CAAC;AAEH,eAAe,GAAG,CAAC"}
|
package/dist/Tag/Tag.js
CHANGED
|
@@ -6,7 +6,6 @@ import { forwardRef, useCallback } from "react";
|
|
|
6
6
|
import clsx from "clsx";
|
|
7
7
|
import { tag, tagIconWrapper } from "@finam/web-ui-kit-core/styles/tag";
|
|
8
8
|
import { iconButton } from "./Tag.styles.js";
|
|
9
|
-
import { KeyboardEventKey } from "../types.js";
|
|
10
9
|
const Tag = /*#__PURE__*/ forwardRef((_0, _1)=>{
|
|
11
10
|
let _ref = [
|
|
12
11
|
_0,
|
|
@@ -40,19 +39,9 @@ const Tag = /*#__PURE__*/ forwardRef((_0, _1)=>{
|
|
|
40
39
|
}, [
|
|
41
40
|
onIconClick
|
|
42
41
|
]);
|
|
43
|
-
const handleIconKeyDown = useCallback((event)=>{
|
|
44
|
-
if (event.key === KeyboardEventKey.ENTER || event.key === KeyboardEventKey.SPACE) {
|
|
45
|
-
event.stopPropagation();
|
|
46
|
-
null == onIconClick || onIconClick();
|
|
47
|
-
}
|
|
48
|
-
}, [
|
|
49
|
-
onIconClick
|
|
50
|
-
]);
|
|
51
42
|
const renderIcon = (wrapperClassName)=>{
|
|
52
|
-
if (onIconClick) return /*#__PURE__*/ jsx("
|
|
53
|
-
|
|
54
|
-
tabIndex: 0,
|
|
55
|
-
onKeyDown: handleIconKeyDown,
|
|
43
|
+
if (onIconClick) return /*#__PURE__*/ jsx("button", {
|
|
44
|
+
type: "button",
|
|
56
45
|
className: clsx(wrapperClassName, iconButton),
|
|
57
46
|
onClick: handleIconClick,
|
|
58
47
|
children: icon
|
package/dist/Tag/Tag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag/Tag.js","sources":["../../src/Tag/Tag.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, type ReactNode, useCallback } from 'react';\nimport classnames from 'clsx';\nimport { tag, tagIconWrapper } from '@finam/web-ui-kit-core/styles/tag';\nimport type { Color, ColorType, Priority, Variant, Size, IconPlacement } from './types.js';\nimport { iconButton } from './Tag.styles.js';\
|
|
1
|
+
{"version":3,"file":"Tag/Tag.js","sources":["../../src/Tag/Tag.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, type ReactNode, useCallback } from 'react';\nimport classnames from 'clsx';\nimport { tag, tagIconWrapper } from '@finam/web-ui-kit-core/styles/tag';\nimport type { Color, ColorType, Priority, Variant, Size, IconPlacement } from './types.js';\nimport { iconButton } from './Tag.styles.js';\n\nexport interface Props extends HTMLAttributes<HTMLSpanElement> {\n /** Текстовое содержимое тега */\n children?: ReactNode;\n /** Цветовая схема тега */\n color?: Color;\n /** Тип цветовой схемы */\n colorType?: ColorType;\n /** Тип цветовой схемы тега */\n priority?: Priority;\n /** Вариант отображения тега */\n variant?: Variant;\n /** Размер тега */\n size?: Size;\n /** Иконка, отображаемая вместо текста либо рядом с ним */\n icon?: ReactNode;\n /** Расположение иконки относительно текста */\n iconPlacement?: IconPlacement;\n /** Обработчик клика по иконке */\n onIconClick?: () => void;\n}\n\nconst Tag = forwardRef<HTMLSpanElement, Props>(({\n children,\n color = 'info',\n colorType = 'default',\n priority = 'high',\n variant = 'fill',\n size = 'm',\n icon,\n iconPlacement = 'left',\n className,\n onClick,\n onIconClick,\n ...props\n}, ref) => {\n const iconOnly = Boolean(icon && !children);\n const tagClassName = classnames(className, tag({\n color,\n colorType,\n priority,\n variant,\n size,\n iconOnly,\n clickable: Boolean(onClick),\n }));\n\n const handleIconClick = useCallback((event: React.MouseEvent) => {\n event.stopPropagation();\n onIconClick?.();\n }, [onIconClick]);\n\n const renderIcon = (wrapperClassName: string) => {\n if (onIconClick) {\n return (\n <button\n type=\"button\"\n className={classnames(wrapperClassName, iconButton)}\n onClick={handleIconClick}\n >\n {icon}\n </button>\n );\n }\n\n return <span className={wrapperClassName}>{icon}</span>;\n };\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <span\n className={tagClassName}\n ref={ref}\n onClick={onClick}\n {...props}\n >\n {iconPlacement === 'left' && icon && children && renderIcon(tagIconWrapper.left)}\n {iconOnly ? renderIcon(tagIconWrapper.center) : children}\n {iconPlacement === 'right' && icon && children && renderIcon(tagIconWrapper.right)}\n </span>\n );\n});\n\nexport default Tag;\n"],"names":["Tag","forwardRef","children","color","colorType","priority","variant","size","icon","iconPlacement","className","onClick","onIconClick","props","ref","iconOnly","Boolean","tagClassName","classnames","tag","handleIconClick","useCallback","event","renderIcon","wrapperClassName","iconButton","tagIconWrapper"],"mappings":";;;;;;;;AA2BA,MAAMA,MAAM,WAAHA,GAAGC,WAAmC,CAAC,IAAD;;;;iCAAC,EAC9CC,QAAQ,EACRC,QAAQ,MAAM,EACdC,YAAY,SAAS,EACrBC,WAAW,MAAM,EACjBC,UAAU,MAAM,EAChBC,OAAO,GAAG,EACVC,IAAI,EACJC,gBAAgB,MAAM,EACtBC,SAAS,EACTC,OAAO,EACPC,WAAW,EAEZ,UADIC,QAAAA,6BAAAA,OAAAA;;;;;;;;;;;;SACFC,IAAAA,GAAAA;IACD,MAAMC,WAAWC,QAAQR,QAAQ,CAACN;IAClC,MAAMe,eAAeC,KAAWR,WAAWS,IAAI;QAC7ChB;QACAC;QACAC;QACAC;QACAC;QACAQ;QACA,WAAWC,QAAQL;IACrB;IAEA,MAAMS,kBAAkBC,YAAY,CAACC;QACnCA,MAAM,eAAe;QACrBV,QAAAA,eAAAA;IACF,GAAG;QAACA;KAAY;IAEhB,MAAMW,aAAa,CAACC;QAClB,IAAIZ,aACF,OAAO,WAAP,GACE,IAAC;YACC,MAAK;YACL,WAAWM,KAAWM,kBAAkBC;YACxC,SAASL;sBAERZ;;QAKP,OAAO,WAAP,GAAO,IAAC;YAAK,WAAWgB;sBAAmBhB;;IAC7C;IAEA,O,cAEE,KAAC;QACC,WAAWS;QACX,KAAKH;QACL,SAASH;OACLE,QAAAA;;YAEe,WAAlBJ,iBAA4BD,QAAQN,YAAYqB,WAAWG,eAAe,IAAI;YAC9EX,WAAWQ,WAAWG,eAAe,MAAM,IAAIxB;YAC7B,YAAlBO,iBAA6BD,QAAQN,YAAYqB,WAAWG,eAAe,KAAK;;;AAGvF;AAEA,gBAAe1B"}
|
package/dist/Tag/Tag.styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.ui_components_i1n6bebk{background:none;border:none;padding:0;cursor:pointer;font:inherit;color:inherit;display:flex;align-items:center;}
|
|
1
|
+
.ui_components_i1n6bebk{appearance:none;background:none;border:none;margin:0;padding:0;cursor:pointer;font:inherit;color:inherit;display:flex;align-items:center;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag.styles.d.ts","sourceRoot":"","sources":["../../src/Tag/Tag.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"Tag.styles.d.ts","sourceRoot":"","sources":["../../src/Tag/Tag.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,0CAWtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag/Tag.styles.js","sources":["../../src/Tag/Tag.styles.ts"],"sourcesContent":["import { css } from '@linaria/core';\n\nexport const iconButton = css`\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font: inherit;\n color: inherit;\n display: flex;\n align-items: center;\n`;\n"],"names":["iconButton","css"],"mappings":";AAEO,MAAMA,aAAaC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"Tag/Tag.styles.js","sources":["../../src/Tag/Tag.styles.ts"],"sourcesContent":["import { css } from '@linaria/core';\n\nexport const iconButton = css`\n appearance: none;\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n cursor: pointer;\n font: inherit;\n color: inherit;\n display: flex;\n align-items: center;\n`;\n"],"names":["iconButton","css"],"mappings":";AAEO,MAAMA,aAAaC,GAAG,CAAC;;;;;;;;;;;AAW9B,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Ref } from 'react';
|
|
2
|
-
import type * as React from 'react';
|
|
1
|
+
import { type ReactNode, type Ref } from 'react';
|
|
3
2
|
import { TextareaAutosizeProps } from 'react-textarea-autosize';
|
|
4
3
|
import type { Placement, InputSize, InputVariant } from '../types.js';
|
|
5
4
|
import { InputProps } from '../Input/index.js';
|
|
@@ -8,7 +7,7 @@ export interface Props extends Omit<TextareaAutosizeProps & InheritedInputProps,
|
|
|
8
7
|
/** Состояние значения поля ввода */
|
|
9
8
|
value?: string;
|
|
10
9
|
/** Текст сообщения подсказки */
|
|
11
|
-
message?:
|
|
10
|
+
message?: ReactNode;
|
|
12
11
|
/** Содержимое label поля ввода */
|
|
13
12
|
label?: string;
|
|
14
13
|
/** Вариант отображения поля ввода */
|
|
@@ -29,7 +28,13 @@ export interface Props extends Omit<TextareaAutosizeProps & InheritedInputProps,
|
|
|
29
28
|
inputRef?: Ref<HTMLTextAreaElement>;
|
|
30
29
|
/** Флаг, управляющий отображением счётчика символов */
|
|
31
30
|
symbolCounterVisible?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Позволяет пользователю менять высоту поля, растягивая его за правый нижний угол.
|
|
33
|
+
* Автоподстройка высоты под содержимое при этом отключается, `minRows` задаёт начальную высоту,
|
|
34
|
+
* `maxRows` не учитывается
|
|
35
|
+
*/
|
|
36
|
+
resizable?: boolean;
|
|
32
37
|
}
|
|
33
|
-
declare const TextArea: ({ label, errorText, message, inputRef, onScroll, className, symbolCounterVisible, ...other }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
declare const TextArea: ({ label, errorText, message, inputRef, onScroll, className, symbolCounterVisible, resizable, minRows, maxRows, cacheMeasurements, onHeightChange, ...other }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
34
39
|
export default TextArea;
|
|
35
40
|
//# sourceMappingURL=TextArea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../src/TextArea/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../src/TextArea/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,SAAS,EACd,KAAK,GAAG,EAIT,MAAM,OAAO,CAAC;AACf,OAAyB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKlF,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtE,OAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAItD,KAAK,mBAAmB,GAAG,IAAI,CAAC,UAAU,EACxC,kBAAkB,GAClB,YAAY,GACZ,qBAAqB,GACrB,oBAAoB,GACpB,YAAY,GACZ,eAAe,GACf,OAAO,CACR,CAAC;AAEF,MAAM,WAAW,KAAM,SAAQ,IAAI,CAAC,qBAAqB,GAAG,mBAAmB,EAAE,IAAI,CAAC;IACpF,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wBAAwB;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,SAAS,CAAC;IACjC,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACpC,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqBD,QAAA,MAAM,QAAQ,GAAI,8JAcf,KAAK,4CAyDP,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -2,23 +2,56 @@ import { _ } from "@swc/helpers/_/_object_spread";
|
|
|
2
2
|
import { _ as _object_spread_props__ } from "@swc/helpers/_/_object_spread_props";
|
|
3
3
|
import { _ as _object_without_properties__ } from "@swc/helpers/_/_object_without_properties";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
6
6
|
import react_textarea_autosize from "react-textarea-autosize";
|
|
7
7
|
import throttle from "lodash/throttle.js";
|
|
8
8
|
import clsx from "clsx";
|
|
9
|
+
import { customScroll } from "@finam/web-ui-kit-core/styles/scroll";
|
|
10
|
+
import DragHandleArea from "@finam/web-ui-kit-icons/DragHandle/DragHandleArea";
|
|
9
11
|
import Input from "../Input/index.js";
|
|
10
12
|
import { setRef } from "../utils/withForwardedRef.js";
|
|
11
|
-
import { inputStyles } from "./TextArea.styles.js";
|
|
13
|
+
import { inputStyles, resizableStyles, resizeHandleStyles } from "./TextArea.styles.js";
|
|
12
14
|
const InputStyled = Input;
|
|
15
|
+
const AutosizeField = /*#__PURE__*/ forwardRef((_0, _1)=>{
|
|
16
|
+
let _ref = [
|
|
17
|
+
_0,
|
|
18
|
+
_1
|
|
19
|
+
], [_ref1, ..._rest] = _ref, { className } = _ref1, props = _object_without_properties__(_ref1, [
|
|
20
|
+
"className"
|
|
21
|
+
]), [ref] = _rest;
|
|
22
|
+
return /*#__PURE__*/ jsx(react_textarea_autosize, _object_spread_props__(_({}, props), {
|
|
23
|
+
ref: ref,
|
|
24
|
+
className: clsx(className, customScroll())
|
|
25
|
+
}));
|
|
26
|
+
});
|
|
27
|
+
AutosizeField.displayName = 'AutosizeField';
|
|
28
|
+
const ResizableField = /*#__PURE__*/ forwardRef((_0, _1)=>{
|
|
29
|
+
let _ref = [
|
|
30
|
+
_0,
|
|
31
|
+
_1
|
|
32
|
+
], [_ref1, ..._rest] = _ref, { className } = _ref1, props = _object_without_properties__(_ref1, [
|
|
33
|
+
"className"
|
|
34
|
+
]), [ref] = _rest;
|
|
35
|
+
return /*#__PURE__*/ jsx("textarea", _object_spread_props__(_({}, props), {
|
|
36
|
+
ref: ref,
|
|
37
|
+
className: clsx(className, customScroll())
|
|
38
|
+
}));
|
|
39
|
+
});
|
|
40
|
+
ResizableField.displayName = 'ResizableField';
|
|
13
41
|
const TextArea = (_0)=>{
|
|
14
|
-
let { label, errorText, message, inputRef, onScroll, className, symbolCounterVisible } = _0, other = _object_without_properties__(_0, [
|
|
42
|
+
let { label, errorText, message, inputRef, onScroll, className, symbolCounterVisible, resizable = false, minRows, maxRows, cacheMeasurements, onHeightChange } = _0, other = _object_without_properties__(_0, [
|
|
15
43
|
"label",
|
|
16
44
|
"errorText",
|
|
17
45
|
"message",
|
|
18
46
|
"inputRef",
|
|
19
47
|
"onScroll",
|
|
20
48
|
"className",
|
|
21
|
-
"symbolCounterVisible"
|
|
49
|
+
"symbolCounterVisible",
|
|
50
|
+
"resizable",
|
|
51
|
+
"minRows",
|
|
52
|
+
"maxRows",
|
|
53
|
+
"cacheMeasurements",
|
|
54
|
+
"onHeightChange"
|
|
22
55
|
]);
|
|
23
56
|
const textareaRef = useRef(null);
|
|
24
57
|
const [showLabel, setShowLabel] = useState(true);
|
|
@@ -43,15 +76,31 @@ const TextArea = (_0)=>{
|
|
|
43
76
|
onScroll,
|
|
44
77
|
updateState
|
|
45
78
|
]);
|
|
46
|
-
|
|
47
|
-
|
|
79
|
+
const autosizeProps = resizable ? {
|
|
80
|
+
rows: minRows
|
|
81
|
+
} : {
|
|
82
|
+
minRows,
|
|
83
|
+
maxRows,
|
|
84
|
+
cacheMeasurements,
|
|
85
|
+
onHeightChange
|
|
86
|
+
};
|
|
87
|
+
return /*#__PURE__*/ jsx(InputStyled, _object_spread_props__(_(_object_spread_props__(_({
|
|
88
|
+
as: resizable ? ResizableField : AutosizeField
|
|
89
|
+
}, autosizeProps), {
|
|
48
90
|
label: showLabel ? label : void 0,
|
|
49
91
|
message: errorText || message,
|
|
50
92
|
error: Boolean(errorText),
|
|
51
93
|
errorIcon: !!errorText,
|
|
52
|
-
symbolCounterVisible: symbolCounterVisible
|
|
53
|
-
|
|
54
|
-
|
|
94
|
+
symbolCounterVisible: symbolCounterVisible,
|
|
95
|
+
adornment: resizable && !other.disabled ? /*#__PURE__*/ jsx("div", {
|
|
96
|
+
className: clsx(resizeHandleStyles, 'ui-textarea__resize-handle'),
|
|
97
|
+
"aria-hidden": true,
|
|
98
|
+
children: /*#__PURE__*/ jsx(DragHandleArea, {
|
|
99
|
+
color: "tertiary"
|
|
100
|
+
})
|
|
101
|
+
}) : void 0
|
|
102
|
+
}), other), {
|
|
103
|
+
className: clsx(inputStyles, resizable && resizableStyles, className),
|
|
55
104
|
ref: handleRef,
|
|
56
105
|
onScroll: handleScroll
|
|
57
106
|
}));
|