@skbkontur/react-ui 6.0.6 → 6.0.7-eab55.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/components/Autocomplete/Autocomplete.js +15 -4
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Calendar/CalendarDay.js +3 -0
- package/components/Calendar/CalendarDay.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +1 -0
- package/components/Calendar/DayCellView.styles.js +6 -3
- package/components/Calendar/DayCellView.styles.js.map +1 -1
- package/components/DatePicker/MobilePicker.js +1 -1
- package/components/DatePicker/MobilePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.js +1 -1
- package/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/Loader/Loader.d.ts +12 -4
- package/components/Loader/Loader.js +18 -7
- package/components/Loader/Loader.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +1 -0
- package/components/MenuItem/MenuItem.js +17 -1
- package/components/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.styles.d.ts +3 -0
- package/components/MenuItem/MenuItem.styles.js +25 -16
- package/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/components/Select/Select.js +11 -1
- package/components/Select/Select.js.map +1 -1
- package/components/SingleToast/SingleToast.d.ts +8 -10
- package/components/SingleToast/SingleToast.js +8 -10
- package/components/SingleToast/SingleToast.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +23 -33
- package/components/Spinner/Spinner.js +23 -19
- package/components/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.styles.d.ts +0 -3
- package/components/Spinner/Spinner.styles.js +6 -15
- package/components/Spinner/Spinner.styles.js.map +1 -1
- package/components/Tabs/Indicator.styles.d.ts +0 -1
- package/components/Tabs/Indicator.styles.js +1 -4
- package/components/Tabs/Indicator.styles.js.map +1 -1
- package/components/Textarea/Textarea.js +1 -1
- package/components/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.styles.d.ts +1 -0
- package/components/Textarea/Textarea.styles.js +7 -4
- package/components/Textarea/Textarea.styles.js.map +1 -1
- package/components/Textarea/TextareaCounter.d.ts +2 -0
- package/components/Textarea/TextareaCounter.js +22 -4
- package/components/Textarea/TextareaCounter.js.map +1 -1
- package/components/TimePicker/TimeClockIcon.d.ts +3 -0
- package/components/TimePicker/TimeClockIcon.js +11 -0
- package/components/TimePicker/TimeClockIcon.js.map +1 -0
- package/components/TimePicker/TimeFragmentsView.d.ts +15 -0
- package/components/TimePicker/TimeFragmentsView.js +72 -0
- package/components/TimePicker/TimeFragmentsView.js.map +1 -0
- package/components/TimePicker/TimeFragmentsView.styles.d.ts +12 -0
- package/components/TimePicker/TimeFragmentsView.styles.js +43 -0
- package/components/TimePicker/TimeFragmentsView.styles.js.map +1 -0
- package/components/TimePicker/TimeInput.d.ts +21 -0
- package/components/TimePicker/TimeInput.js +98 -0
- package/components/TimePicker/TimeInput.js.map +1 -0
- package/components/TimePicker/TimePicker.d.ts +59 -0
- package/components/TimePicker/TimePicker.js +478 -0
- package/components/TimePicker/TimePicker.js.map +1 -0
- package/components/TimePicker/TimePicker.styles.d.ts +11 -0
- package/components/TimePicker/TimePicker.styles.js +36 -0
- package/components/TimePicker/TimePicker.styles.js.map +1 -0
- package/components/TimePicker/TimePickerMobilePopup.d.ts +31 -0
- package/components/TimePicker/TimePickerMobilePopup.js +21 -0
- package/components/TimePicker/TimePickerMobilePopup.js.map +1 -0
- package/components/TimePicker/TimePickerPopup.d.ts +19 -0
- package/components/TimePicker/TimePickerPopup.js +18 -0
- package/components/TimePicker/TimePickerPopup.js.map +1 -0
- package/components/TimePicker/TimePickerSlots.d.ts +16 -0
- package/components/TimePicker/TimePickerSlots.js +67 -0
- package/components/TimePicker/TimePickerSlots.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +18 -0
- package/components/TimePicker/helpers/TimePicker.constants.js +41 -0
- package/components/TimePicker/helpers/TimePicker.constants.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +6 -0
- package/components/TimePicker/helpers/TimePicker.editing.js +86 -0
- package/components/TimePicker/helpers/TimePicker.editing.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.layout.d.ts +7 -0
- package/components/TimePicker/helpers/TimePicker.layout.js +17 -0
- package/components/TimePicker/helpers/TimePicker.layout.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.selection.d.ts +7 -0
- package/components/TimePicker/helpers/TimePicker.selection.js +51 -0
- package/components/TimePicker/helpers/TimePicker.selection.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +23 -0
- package/components/TimePicker/helpers/TimePicker.shared.js +50 -0
- package/components/TimePicker/helpers/TimePicker.shared.js.map +1 -0
- package/components/TimePicker/helpers/TimePicker.value.d.ts +8 -0
- package/components/TimePicker/helpers/TimePicker.value.js +61 -0
- package/components/TimePicker/helpers/TimePicker.value.js.map +1 -0
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.d.ts +1 -0
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js +21 -0
- package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js.map +1 -0
- package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +17 -0
- package/components/TimePicker/hooks/useTimePickerDropdown.js +62 -0
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +1 -0
- package/components/TimePicker/hooks/useTimePickerSelection.d.ts +15 -0
- package/components/TimePicker/hooks/useTimePickerSelection.js +43 -0
- package/components/TimePicker/hooks/useTimePickerSelection.js.map +1 -0
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +18 -0
- package/components/TimePicker/hooks/useTimePickerValue.js +48 -0
- package/components/TimePicker/hooks/useTimePickerValue.js.map +1 -0
- package/components/TimePicker/index.d.ts +2 -0
- package/components/TimePicker/index.js +2 -0
- package/components/TimePicker/index.js.map +1 -0
- package/components/Toast/Toast.d.ts +13 -14
- package/components/Toast/Toast.js +3 -3
- package/components/Toast/Toast.js.map +1 -1
- package/components/Toast/ToastView.d.ts +8 -5
- package/components/Toast/ToastView.js +28 -8
- package/components/Toast/ToastView.js.map +1 -1
- package/components/Toast/ToastView.styles.d.ts +7 -0
- package/components/Toast/ToastView.styles.js +30 -8
- package/components/Toast/ToastView.styles.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
- package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.js +5 -0
- package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.js +13 -2
- package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/internal/Menu/Menu.js +3 -0
- package/internal/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.styles.d.ts +1 -0
- package/internal/Menu/Menu.styles.js +13 -10
- package/internal/Menu/Menu.styles.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.js +17 -1
- package/internal/MenuMessage/MenuMessage.js.map +1 -1
- package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -0
- package/internal/MenuMessage/MenuMessage.styles.js +13 -4
- package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +8 -0
- package/internal/MobilePopup/MobilePopup.js +34 -11
- package/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -0
- package/internal/MobilePopup/MobilePopup.styles.js +34 -10
- package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +18 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +14 -4
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +4 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +48 -11
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +6 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +28 -8
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +16 -0
- package/internal/NativeTimeInput/NativeTimeInput.js +25 -0
- package/internal/NativeTimeInput/NativeTimeInput.js.map +1 -0
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +3 -0
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +15 -0
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +1 -0
- package/internal/NativeTimeInput/index.d.ts +1 -0
- package/internal/NativeTimeInput/index.js +2 -0
- package/internal/NativeTimeInput/index.js.map +1 -0
- package/internal/NativeTimeInput/utils.d.ts +7 -0
- package/internal/NativeTimeInput/utils.js +28 -0
- package/internal/NativeTimeInput/utils.js.map +1 -0
- package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
- package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
- package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
- package/internal/icons2022/LoadingIcon.js +1 -1
- package/internal/icons2022/LoadingIcon.js.map +1 -1
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +2 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +21 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +1 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +2 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +21 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +1 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +2 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +21 -0
- package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +1 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +2 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +20 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +1 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +2 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +20 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +1 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +2 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +20 -0
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +1 -0
- package/internal/themes/BasicTheme.d.ts +51 -4
- package/internal/themes/BasicTheme.js +172 -5
- package/internal/themes/BasicTheme.js.map +1 -1
- package/internal/themes/DarkTheme6_1.d.ts +1 -0
- package/internal/themes/DarkTheme6_1.js +164 -0
- package/internal/themes/DarkTheme6_1.js.map +1 -0
- package/internal/themes/LightTheme6_1.d.ts +1 -0
- package/internal/themes/LightTheme6_1.js +164 -0
- package/internal/themes/LightTheme6_1.js.map +1 -0
- package/lib/theming/themes/DarkTheme.d.ts +1 -0
- package/lib/theming/themes/DarkTheme.js +3 -1
- package/lib/theming/themes/DarkTheme.js.map +1 -1
- package/lib/theming/themes/LightTheme.d.ts +1 -0
- package/lib/theming/themes/LightTheme.js +3 -1
- package/lib/theming/themes/LightTheme.js.map +1 -1
- package/package.json +5 -1
|
@@ -58,6 +58,7 @@ import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
|
|
|
58
58
|
import { getRootNode, rootNode } from '../../lib/rootNode/index.js';
|
|
59
59
|
import { withSize } from '../../lib/size/SizeDecorator.js';
|
|
60
60
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
61
|
+
import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
|
|
61
62
|
import { getRandomID, isNullable } from '../../lib/utils.js';
|
|
62
63
|
import { Input } from '../Input/index.js';
|
|
63
64
|
import { MaskedInput, getSafeMaskInputType } from '../MaskedInput/index.js';
|
|
@@ -133,9 +134,18 @@ var Autocomplete = /** @class */ (function (_super) {
|
|
|
133
134
|
inputMode: _this.props.inputMode,
|
|
134
135
|
'aria-label': _this.props['aria-label'],
|
|
135
136
|
'aria-controls': _this.menuId,
|
|
137
|
+
size: isThemeGTE(_this.theme, '6.1') ? _this.size : undefined,
|
|
136
138
|
};
|
|
137
139
|
var items = _this.state.items;
|
|
138
|
-
|
|
140
|
+
var themeDependantProps = isThemeGTE(_this.theme, '6.1')
|
|
141
|
+
? {
|
|
142
|
+
footerChildComponent: _this.getInput(inputProps),
|
|
143
|
+
size: _this.size,
|
|
144
|
+
}
|
|
145
|
+
: {
|
|
146
|
+
headerChildComponent: _this.getInput(inputProps),
|
|
147
|
+
};
|
|
148
|
+
return (React.createElement(MobilePopup, __assign({ id: _this.menuId }, themeDependantProps, { caption: _this.props.mobileMenuHeaderText, opened: _this.state.isMobileOpened, onCloseRequest: _this.handleCloseMobile, ref: _this.refMobilePopup }),
|
|
139
149
|
React.createElement(Menu, { ref: _this.refMenu, onItemClick: (_a = _this.mobilePopup) === null || _a === void 0 ? void 0 : _a.close, disableScrollContainer: true, maxHeight: 'auto' },
|
|
140
150
|
items && items.length > 0 && _this.getItems(),
|
|
141
151
|
_this.renderHints())));
|
|
@@ -276,14 +286,15 @@ var Autocomplete = /** @class */ (function (_super) {
|
|
|
276
286
|
};
|
|
277
287
|
Autocomplete.prototype.renderHints = function () {
|
|
278
288
|
var items = this.state.items;
|
|
289
|
+
var themeDependantProps = isThemeGTE(this.theme, '6.1') ? { size: this.size } : {};
|
|
279
290
|
if (!this.props.value) {
|
|
280
|
-
return React.createElement(MenuMessage,
|
|
291
|
+
return React.createElement(MenuMessage, __assign({}, themeDependantProps), this.locale.enterValue);
|
|
281
292
|
}
|
|
282
293
|
if ((items === null || items === void 0 ? void 0 : items.length) === 0 && this.props.value) {
|
|
283
|
-
return React.createElement(MenuMessage,
|
|
294
|
+
return React.createElement(MenuMessage, __assign({}, themeDependantProps), this.locale.notFound);
|
|
284
295
|
}
|
|
285
296
|
if (isNullable(items) && this.props.value) {
|
|
286
|
-
return React.createElement(MenuMessage,
|
|
297
|
+
return React.createElement(MenuMessage, __assign({}, themeDependantProps), this.locale.updateValue);
|
|
287
298
|
}
|
|
288
299
|
return null;
|
|
289
300
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sourceRoot":"","sources":["../../../components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, KeyboardEvent } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { Menu } from '../../internal/Menu/index.js';\nimport { MenuMessage } from '../../internal/MenuMessage/index.js';\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getRandomID, isNullable } from '../../lib/utils.js';\nimport type { Nullable, Override } from '../../typings/utility-types.js';\nimport { Input } from '../Input/index.js';\nimport type { InputProps } from '../Input/index.js';\nimport { MaskedInput, type MaskedProps, getSafeMaskInputType } from '../MaskedInput/index.js';\nimport { MenuItem } from '../MenuItem/index.js';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator.js';\nimport { getStyles } from './Autocomplete.styles.js';\nimport { getAutocompleteTheme } from './getAutocompleteTheme.js';\nimport type { AutocompleteLocale } from './locale/index.js';\nimport { AutocompleteLocaleHelper } from './locale/index.js';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-label'>,\n Pick<Partial<MaskedProps>, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n Override<\n Omit<InputProps, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n {\n /** Отрисовывает элементы результата поиска. */\n renderItem?: (item: string) => React.ReactNode;\n\n /** Задаёт функцию поиска элементов, которая должна возвращать Promise с массивом значений. */\n source?: string[] | ((patter: string) => Promise<string[]>);\n\n /** По умолчанию выпадающий список рендерится через [паттерн Portal](https://react.dev/reference/react-dom/createPortal). Проп отключает использование Portal и список рендерится как обычный блок с абсолютным позиционированием внутри компонента. */\n disablePortal?: boolean;\n\n /** Определяет, нужно ли показывать тень у выпадающего списка. */\n hasShadow?: boolean;\n\n /** Выравнивание выпадающего списка. */\n menuAlign?: 'left' | 'right';\n\n /** Максимальная высота выпадающего списка. */\n menuMaxHeight?: number | string;\n\n /** Ширина выпадающего списка. */\n menuWidth?: number | string;\n\n /** Отключает скролл окна, когда выпадающий список раскрыт. */\n preventWindowScroll?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange: (value: string) => void;\n\n /** Событие потери автокомплитом фокуса. */\n onBlur?: () => void;\n\n /** Размер автокомплита. */\n size?: SizeProp;\n\n /** Значение автокомплита. */\n value: string;\n\n /** Текст заголовка выпадающего списка в мобильной версии. */\n mobileMenuHeaderText?: string;\n }\n > {\n /** Расположение выпадающего списка — над или под полем. */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<AutocompleteProps, 'renderItem' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'preventWindowScroll'>\n>;\n\n/**\n * Автокомплит — поле ввода с выпадающим списком подсказок. Подсказки отображаются пользователю, когда он начинает вводить значение в поле. */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\n@withSize\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n public static displayName = 'Autocomplete';\n\n public static defaultProps: DefaultProps = {\n renderItem,\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n /** Программно устанавливает фокус на автокомплит.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.focus()}>Focus</button>\n */\n public focus(): void {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /** Программно снимает фокус с автокомплита.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.blur()}>Blur</button>\n */\n public blur(): void {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>): React.JSX.Element => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n menuPos,\n width = this.theme.inputWidth,\n mobileMenuHeaderText,\n type,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n autoComplete: 'off',\n 'aria-controls': this.menuId,\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={this.cx(this.styles.root(this.theme), {\n [this.styles.noPortal()]: disablePortal,\n })}\n style={{ width }}\n ref={this.refRootSpan}\n >\n {this.getInput(inputProps)}\n\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n\n if (!this.props.value) {\n return <MenuMessage>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuPos, menuAlign, menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, disablePortal } =\n this.getProps();\n const calculatedMenuWidth = menuWidth ? '100%' : width && getDOMRect(this.rootSpan).width;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow: false,\n hasMargin: false,\n width: calculatedMenuWidth,\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <Popup\n opened\n hasShadow={hasShadow}\n id={this.menuId}\n priority={ZIndex.priorities.PopupMenu}\n data-tid={AutocompleteDataTids.menu}\n anchorElement={this.getAnchor()}\n disablePortal={disablePortal}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </Popup>\n );\n }\n\n private getInput = (inputProps: InputProps) => {\n return this.props.mask ? (\n <MaskedInput\n {...inputProps}\n type={getSafeMaskInputType(this.props.type)}\n mask={this.props.mask}\n maskChar={this.props.maskChar}\n />\n ) : (\n <Input {...inputProps} />\n );\n };\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n type: this.props.type,\n inputMode: this.props.inputMode,\n 'aria-label': this.props['aria-label'],\n 'aria-controls': this.menuId,\n };\n\n const items = this.state.items;\n\n return (\n <MobilePopup\n id={this.menuId}\n headerChildComponent={this.getInput(inputProps)}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = () => {\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n\n // NOTE: этот таймаут - костыль. Проблема в старом ReactInputMask, он сеттит пустой value при потере фокуса.\n // Можно будет убрать после полного перехода на MaskedInput\n setTimeout(() => {\n this.blur();\n }, 0);\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sourceRoot":"","sources":["../../../components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, KeyboardEvent } from 'react';\nimport React from 'react';\n\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { Menu } from '../../internal/Menu/index.js';\nimport { MenuMessage } from '../../internal/MenuMessage/index.js';\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { getRandomID, isNullable } from '../../lib/utils.js';\nimport type { Nullable, Override } from '../../typings/utility-types.js';\nimport { Input } from '../Input/index.js';\nimport type { InputProps } from '../Input/index.js';\nimport { MaskedInput, type MaskedProps, getSafeMaskInputType } from '../MaskedInput/index.js';\nimport { MenuItem } from '../MenuItem/index.js';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator.js';\nimport { getStyles } from './Autocomplete.styles.js';\nimport { getAutocompleteTheme } from './getAutocompleteTheme.js';\nimport type { AutocompleteLocale } from './locale/index.js';\nimport { AutocompleteLocaleHelper } from './locale/index.js';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-label'>,\n Pick<Partial<MaskedProps>, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n Override<\n Omit<InputProps, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n {\n /** Отрисовывает элементы результата поиска. */\n renderItem?: (item: string) => React.ReactNode;\n\n /** Задаёт функцию поиска элементов, которая должна возвращать Promise с массивом значений. */\n source?: string[] | ((patter: string) => Promise<string[]>);\n\n /** По умолчанию выпадающий список рендерится через [паттерн Portal](https://react.dev/reference/react-dom/createPortal). Проп отключает использование Portal и список рендерится как обычный блок с абсолютным позиционированием внутри компонента. */\n disablePortal?: boolean;\n\n /** Определяет, нужно ли показывать тень у выпадающего списка. */\n hasShadow?: boolean;\n\n /** Выравнивание выпадающего списка. */\n menuAlign?: 'left' | 'right';\n\n /** Максимальная высота выпадающего списка. */\n menuMaxHeight?: number | string;\n\n /** Ширина выпадающего списка. */\n menuWidth?: number | string;\n\n /** Отключает скролл окна, когда выпадающий список раскрыт. */\n preventWindowScroll?: boolean;\n\n /** Событие изменения `value`. */\n onValueChange: (value: string) => void;\n\n /** Событие потери автокомплитом фокуса. */\n onBlur?: () => void;\n\n /** Размер автокомплита. */\n size?: SizeProp;\n\n /** Значение автокомплита. */\n value: string;\n\n /** Текст заголовка выпадающего списка в мобильной версии. */\n mobileMenuHeaderText?: string;\n }\n > {\n /** Расположение выпадающего списка — над или под полем. */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<AutocompleteProps, 'renderItem' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'preventWindowScroll'>\n>;\n\n/**\n * Автокомплит — поле ввода с выпадающим списком подсказок. Подсказки отображаются пользователю, когда он начинает вводить значение в поле. */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\n@withSize\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n public static displayName = 'Autocomplete';\n\n public static defaultProps: DefaultProps = {\n renderItem,\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private size!: SizeProp;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n /** Программно устанавливает фокус на автокомплит.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.focus()}>Focus</button>\n */\n public focus(): void {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /** Программно снимает фокус с автокомплита.\n * @public\n * @example\n * <Autocomplete ref={autocompleteRef} />\n * <button onClick={() => autocompleteRef.current?.blur()}>Blur</button>\n */\n public blur(): void {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>): React.JSX.Element => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n menuPos,\n width = this.theme.inputWidth,\n mobileMenuHeaderText,\n type,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n autoComplete: 'off',\n 'aria-controls': this.menuId,\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={this.cx(this.styles.root(this.theme), {\n [this.styles.noPortal()]: disablePortal,\n })}\n style={{ width }}\n ref={this.refRootSpan}\n >\n {this.getInput(inputProps)}\n\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n const themeDependantProps = isThemeGTE(this.theme, '6.1') ? { size: this.size } : {};\n\n if (!this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage {...themeDependantProps}>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuPos, menuAlign, menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, disablePortal } =\n this.getProps();\n const calculatedMenuWidth = menuWidth ? '100%' : width && getDOMRect(this.rootSpan).width;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow: false,\n hasMargin: false,\n width: calculatedMenuWidth,\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <Popup\n opened\n hasShadow={hasShadow}\n id={this.menuId}\n priority={ZIndex.priorities.PopupMenu}\n data-tid={AutocompleteDataTids.menu}\n anchorElement={this.getAnchor()}\n disablePortal={disablePortal}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </Popup>\n );\n }\n\n private getInput = (inputProps: InputProps) => {\n return this.props.mask ? (\n <MaskedInput\n {...inputProps}\n type={getSafeMaskInputType(this.props.type)}\n mask={this.props.mask}\n maskChar={this.props.maskChar}\n />\n ) : (\n <Input {...inputProps} />\n );\n };\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n type: this.props.type,\n inputMode: this.props.inputMode,\n 'aria-label': this.props['aria-label'],\n 'aria-controls': this.menuId,\n size: isThemeGTE(this.theme, '6.1') ? this.size : undefined,\n };\n\n const items = this.state.items;\n\n const themeDependantProps = isThemeGTE(this.theme, '6.1')\n ? {\n footerChildComponent: this.getInput(inputProps),\n size: this.size,\n }\n : {\n headerChildComponent: this.getInput(inputProps),\n };\n\n return (\n <MobilePopup\n id={this.menuId}\n {...themeDependantProps}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = () => {\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n\n // NOTE: этот таймаут - костыль. Проблема в старом ReactInputMask, он сеттит пустой value при потере фокуса.\n // Можно будет убрать после полного перехода на MaskedInput\n setTimeout(() => {\n this.blur();\n }, 0);\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
|
|
@@ -28,6 +28,7 @@ import { LocaleContext } from '../../lib/locale/index.js';
|
|
|
28
28
|
import { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';
|
|
29
29
|
import { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';
|
|
30
30
|
import { ThemeContext } from '../../lib/theming/ThemeContext.js';
|
|
31
|
+
import { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';
|
|
31
32
|
import { DatePickerLocaleHelper } from '../DatePicker/locale/index.js';
|
|
32
33
|
import { CalendarDataTids } from './Calendar.js';
|
|
33
34
|
import { getStyles } from './DayCellView.styles.js';
|
|
@@ -42,6 +43,7 @@ export var CalendarDay = memo(forwardRefAndName('CalendarDay', function Calendar
|
|
|
42
43
|
var theme = useContext(ThemeContext);
|
|
43
44
|
var cx = useEmotion().cx;
|
|
44
45
|
var styles = useStyles(getStyles);
|
|
46
|
+
var themeGTE6_1 = isThemeGTE(theme, '6.1');
|
|
45
47
|
var langCode = useContext(LocaleContext).langCode;
|
|
46
48
|
var internalDate = new InternalDate({ langCode: langCode, value: date });
|
|
47
49
|
var locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);
|
|
@@ -56,6 +58,7 @@ export var CalendarDay = memo(forwardRefAndName('CalendarDay', function Calendar
|
|
|
56
58
|
_b[styles.day(theme)] = true,
|
|
57
59
|
_b[styles.weekend(theme)] = isWeekend,
|
|
58
60
|
_b[styles.selected(theme)] = isSelected,
|
|
61
|
+
_b[styles.selected_6_1(theme)] = isSelected && themeGTE6_1,
|
|
59
62
|
_b), className) }, getVisualStateDataAttributes({ selected: isSelected }), rest),
|
|
60
63
|
React.createElement("span", { className: cx((_c = {}, _c[styles.todayCaption(theme)] = isToday, _c)) }, caption)));
|
|
61
64
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarDay.js","sourceRoot":"","sources":["../../../components/Calendar/CalendarDay.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oEAAoE,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAwBpD;;;;GAIG;AACH,MAAM,CAAC,IAAM,WAAW,GAAG,IAAI,CAC7B,iBAAiB,CACf,aAAa,EACb,SAAS,WAAW,CAClB,EAWsC,EACtC,GAAiC;;IAX/B,IAAA,OAAO,aAAA,EACP,UAAU,gBAAA,EACV,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,IAAI,UAAA,EACJ,UAAU,gBAAA,EACV,OAAO,aAAA,EACP,QAAQ,cAAA,EACR,SAAS,eAAA,EACN,IAAI,cAVT,8GAWC,CADQ;IAIT,IAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAA,EAAE,GAAK,UAAU,EAAE,GAAjB,CAAkB;IAC5B,IAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CalendarDay.js","sourceRoot":"","sources":["../../../components/Calendar/CalendarDay.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { memo, useCallback, useContext } from 'react';\nimport type { PropsWithChildren } from 'react';\n\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { InternalDate } from '../../lib/date/InternalDate.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { LocaleContext } from '../../lib/locale/index.js';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers.js';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale/index.js';\nimport { CalendarDataTids } from './Calendar.js';\nimport { getStyles } from './DayCellView.styles.js';\n\nexport interface CalendarDayProps extends React.HTMLAttributes<HTMLButtonElement> {\n /** Устанавливает, является ли день текущим. */\n isToday?: boolean;\n\n /** Устанавливает, является ли день выбранным. */\n isSelected?: boolean;\n\n /** Устанавливает, является ли день недоступным. */\n isDisabled?: boolean;\n\n /** Устанавливает, является ли день выходным. */\n isWeekend?: boolean;\n\n /** Задает день. */\n date: string;\n\n /** Задает функцию, которая вызывается при клике на день. Необходима для внутренней работы Calendar. Не предназначена для переопределения. Вместо этого, следует использовать стандартный `onClick`.\n * @internal @ignore\n */\n onDayClick: () => void;\n}\n\n/**\n * Компонент дня `CalendarDay` из Calendar.\n *\n * @visibleName Calendar.Day\n */\nexport const CalendarDay = memo(\n forwardRefAndName(\n 'CalendarDay',\n function CalendarDay(\n {\n isToday,\n isSelected,\n isDisabled,\n isWeekend,\n date,\n onDayClick,\n onClick,\n children,\n className,\n ...rest\n }: PropsWithChildren<CalendarDayProps>,\n ref: React.Ref<HTMLButtonElement>,\n ) {\n const theme = useContext(ThemeContext);\n const { cx } = useEmotion();\n const styles = useStyles(getStyles);\n const themeGTE6_1 = isThemeGTE(theme, '6.1');\n\n const { langCode } = useContext(LocaleContext);\n const internalDate = new InternalDate({ langCode, value: date });\n\n const locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);\n const ariaLabel = `${locale.dayCellChooseDateAriaLabel}: ${internalDate.toA11YFormat()}`;\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (e) => {\n onDayClick();\n onClick?.(e);\n },\n [onDayClick, onClick],\n );\n\n const { date: day } = internalDate.getComponentsLikeNumber();\n const caption = children ?? day;\n\n return (\n <button\n ref={ref}\n data-tid={CalendarDataTids.dayCell}\n aria-label={ariaLabel}\n tabIndex={-1}\n disabled={isDisabled}\n onClick={handleClick}\n className={cx(\n {\n [styles.day(theme)]: true,\n [styles.weekend(theme)]: isWeekend,\n [styles.selected(theme)]: isSelected,\n [styles.selected_6_1(theme)]: isSelected && themeGTE6_1,\n },\n className,\n )}\n {...getVisualStateDataAttributes({ selected: isSelected })}\n {...rest}\n >\n <span className={cx({ [styles.todayCaption(theme)]: isToday })}>{caption}</span>\n </button>\n );\n },\n ),\n);\n"]}
|
|
@@ -16,13 +16,16 @@ export var getStyles = memoizeGetStyles(function (_a) {
|
|
|
16
16
|
selected: function (t) {
|
|
17
17
|
return css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-color: ", ";\n color: ", ";\n "], ["\n background-color: ", ";\n color: ", ";\n "])), t.calendarCellSelectedBgColor, t.calendarCellSelectedFontColor);
|
|
18
18
|
},
|
|
19
|
+
selected_6_1: function (t) {
|
|
20
|
+
return css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n @media (hover: hover) {\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n }\n "], ["\n @media (hover: hover) {\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n }\n "])), t.calendarCellSelectedBgColor, t.calendarCellSelectedFontColor);
|
|
21
|
+
},
|
|
19
22
|
weekend: function (t) {
|
|
20
|
-
return css(
|
|
23
|
+
return css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.calendarCellWeekendColor);
|
|
21
24
|
},
|
|
22
25
|
todayCaption: function (t) {
|
|
23
|
-
return css(
|
|
26
|
+
return css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding-bottom: 2px;\n border-bottom: ", ";\n "], ["\n padding-bottom: 2px;\n border-bottom: ", ";\n "])), t.calendarCellTodayBorder);
|
|
24
27
|
},
|
|
25
28
|
});
|
|
26
29
|
});
|
|
27
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
|
|
30
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
28
31
|
//# sourceMappingURL=DayCellView.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DayCellView.styles.js","sourceRoot":"","sources":["../../../components/Calendar/DayCellView.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,uHAAA,oBACI,EAAmB,mBACrB,EAAoB,SAC/B,KAFa,CAAC,CAAC,iBAAiB,EACrB,CAAC,CAAC,kBAAkB,EAC9B;QACJ,CAAC;QACD,GAAG,YAAC,CAAQ;YACV,OAAO,GAAG,89BAAA,UACN,EAAa,kEAID,EAAgB,4DAEjB,EAAsB,2HAKpB,EAAwB,0BACtB,EAA0B,6YAiBnB,EAA0B,sBACrC,EAAwB,yLAU1B,EAA8B,kBAE1C,KA1CG,WAAW,EAAE,EAID,CAAC,CAAC,cAAc,EAEjB,CAAC,CAAC,oBAAoB,EAKpB,CAAC,CAAC,sBAAsB,EACtB,CAAC,CAAC,wBAAwB,EAiBnB,CAAC,CAAC,wBAAwB,EACrC,CAAC,CAAC,sBAAsB,EAU1B,CAAC,CAAC,4BAA4B,EAEzC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,OAAO,GAAG,8HAAA,4BACY,EAA6B,kBACxC,EAA+B,SACzC,KAFqB,CAAC,CAAC,2BAA2B,EACxC,CAAC,CAAC,6BAA6B,EACxC;QACJ,CAAC;QAED,OAAO,YAAC,CAAQ;YACd,OAAO,GAAG,+FAAA,iBACC,EAA0B,SACpC,KADU,CAAC,CAAC,wBAAwB,EACnC;QACJ,CAAC;QAED,YAAY,YAAC,CAAQ;YACnB,OAAO,GAAG,mIAAA,qDAES,EAAyB,SAC3C,KADkB,CAAC,CAAC,uBAAuB,EAC1C;QACJ,CAAC;KACF,CAAC;
|
|
1
|
+
{"version":3,"file":"DayCellView.styles.js","sourceRoot":"","sources":["../../../components/Calendar/DayCellView.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,MAAM,CAAC,IAAM,SAAS,GAAG,gBAAgB,CAAC,UAAC,EAAgB;QAAd,GAAG,SAAA;IAAgB,OAAA,CAAC;QAC/D,IAAI,YAAC,CAAQ;YACX,OAAO,GAAG,uHAAA,oBACI,EAAmB,mBACrB,EAAoB,SAC/B,KAFa,CAAC,CAAC,iBAAiB,EACrB,CAAC,CAAC,kBAAkB,EAC9B;QACJ,CAAC;QACD,GAAG,YAAC,CAAQ;YACV,OAAO,GAAG,89BAAA,UACN,EAAa,kEAID,EAAgB,4DAEjB,EAAsB,2HAKpB,EAAwB,0BACtB,EAA0B,6YAiBnB,EAA0B,sBACrC,EAAwB,yLAU1B,EAA8B,kBAE1C,KA1CG,WAAW,EAAE,EAID,CAAC,CAAC,cAAc,EAEjB,CAAC,CAAC,oBAAoB,EAKpB,CAAC,CAAC,sBAAsB,EACtB,CAAC,CAAC,wBAAwB,EAiBnB,CAAC,CAAC,wBAAwB,EACrC,CAAC,CAAC,sBAAsB,EAU1B,CAAC,CAAC,4BAA4B,EAEzC;QACJ,CAAC;QAED,QAAQ,YAAC,CAAQ;YACf,OAAO,GAAG,8HAAA,4BACY,EAA6B,kBACxC,EAA+B,SACzC,KAFqB,CAAC,CAAC,2BAA2B,EACxC,CAAC,CAAC,6BAA6B,EACxC;QACJ,CAAC;QAED,YAAY,YAAC,CAAQ;YACnB,OAAO,GAAG,4MAAA,kFAGgB,EAA6B,sBACxC,EAA+B,6BAG7C,KAJyB,CAAC,CAAC,2BAA2B,EACxC,CAAC,CAAC,6BAA6B,EAG5C;QACJ,CAAC;QAED,OAAO,YAAC,CAAQ;YACd,OAAO,GAAG,+FAAA,iBACC,EAA0B,SACpC,KADU,CAAC,CAAC,wBAAwB,EACnC;QACJ,CAAC;QAED,YAAY,YAAC,CAAQ;YACnB,OAAO,GAAG,mIAAA,qDAES,EAAyB,SAC3C,KADkB,CAAC,CAAC,uBAAuB,EAC1C;QACJ,CAAC;KACF,CAAC;AApF8D,CAoF9D,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { resetButton } from '../../lib/styles/Mixins.js';\nimport { memoizeGetStyles } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\n\nexport const getStyles = memoizeGetStyles(({ css }: Emotion) => ({\n cell(t: Theme) {\n return css`\n flex: 1 1 ${t.calendarCellWidth};\n height: ${t.calendarCellHeight};\n `;\n },\n day(t: Theme) {\n return css`\n ${resetButton()};\n width: 100%;\n height: 100%;\n\n background: ${t.calendarCellBg};\n border: 1px solid transparent;\n font-size: ${t.calendarCellFontSize};\n padding: 0;\n text-align: center;\n user-select: none;\n position: relative;\n line-height: ${t.calendarCellLineHeight};\n border-radius: ${t.calendarCellBorderRadius};\n transition:\n 0.15s ease background-color,\n 0.15s ease opacity;\n\n // Expand the clickable area\n &:before {\n content: '';\n position: absolute;\n left: -1px;\n top: -1px;\n width: calc(100% + 2px);\n height: calc(100% + 2px);\n }\n\n @media (hover: hover) {\n &:hover {\n background-color: ${t.calendarCellHoverBgColor};\n color: ${t.calendarCellHoverColor};\n cursor: pointer;\n }\n }\n\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n &:active:hover:enabled {\n color: ${t.calendarCellActiveHoverColor};\n }\n `;\n },\n\n selected(t: Theme) {\n return css`\n background-color: ${t.calendarCellSelectedBgColor};\n color: ${t.calendarCellSelectedFontColor};\n `;\n },\n\n selected_6_1(t: Theme) {\n return css`\n @media (hover: hover) {\n &:hover {\n background-color: ${t.calendarCellSelectedBgColor};\n color: ${t.calendarCellSelectedFontColor};\n }\n }\n `;\n },\n\n weekend(t: Theme) {\n return css`\n color: ${t.calendarCellWeekendColor};\n `;\n },\n\n todayCaption(t: Theme) {\n return css`\n padding-bottom: 2px;\n border-bottom: ${t.calendarCellTodayBorder};\n `;\n },\n}));\n"]}
|
|
@@ -40,7 +40,7 @@ export var MobilePicker = function (props) {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
return (React.createElement(ThemeContext.Provider, { value: theme },
|
|
43
|
-
React.createElement(MobilePopup, { opened: true, headerChildComponent: React.createElement(DateInput, { value: props.value || '', width: "100%", withIcon: true, ref: inputRef, minDate: props.minDate, maxDate: props.maxDate, onValueChange: props.onValueChange, size: "medium", warning: props.warning, error: props.error, "data-tid": MobilePickerDataTids.input }), footerChildComponent: props.enableTodayLink && (React.createElement(Button, { size: "medium", onClick: onTodayClick, "data-tid": MobilePickerDataTids.today }, locale.today)), onCloseRequest: props.onCloseRequest },
|
|
43
|
+
React.createElement(MobilePopup, { opened: true, verticalAlign: 'center', headerChildComponent: React.createElement(DateInput, { value: props.value || '', width: "100%", withIcon: true, ref: inputRef, minDate: props.minDate, maxDate: props.maxDate, onValueChange: props.onValueChange, size: "medium", warning: props.warning, error: props.error, "data-tid": MobilePickerDataTids.input }), footerChildComponent: props.enableTodayLink && (React.createElement(Button, { size: "medium", onClick: onTodayClick, "data-tid": MobilePickerDataTids.today }, locale.today)), onCloseRequest: props.onCloseRequest },
|
|
44
44
|
React.createElement(Calendar, { ref: calendarRef, value: props.value, className: styles.calendarRoot(), minDate: props.minDate, maxDate: props.maxDate, onValueChange: onValueChange, isHoliday: props.isHoliday, renderDay: props.renderDay, onMonthChange: props.onMonthChange }))));
|
|
45
45
|
};
|
|
46
46
|
//# sourceMappingURL=MobilePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobilePicker.js","sourceRoot":"","sources":["../../../components/DatePicker/MobilePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useLayoutEffect, useRef, useState } from 'react';\n\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Button } from '../Button/index.js';\nimport { getMonthInHumanFormat, getTodayDate } from '../Calendar/CalendarUtils.js';\nimport { Calendar } from '../Calendar/index.js';\nimport { DateInput } from '../DateInput/index.js';\nimport type { DatePickerProps } from './DatePicker.js';\nimport { getMobilePickerTheme } from './getMobilePickerTheme.js';\nimport { DatePickerLocaleHelper } from './locale/index.js';\nimport { getStyles } from './MobilePicker.styles.js';\n\nexport const MobilePickerDataTids = {\n input: 'MobilePicker__input',\n today: 'MobilePicker__today',\n} as const;\n\nexport interface MobilePickerProps extends Pick<\n DatePickerProps,\n | 'error'\n | 'warning'\n | 'value'\n | 'minDate'\n | 'maxDate'\n | 'onValueChange'\n | 'isHoliday'\n | 'enableTodayLink'\n | 'renderDay'\n | 'onMonthChange'\n> {\n onCloseRequest?: () => void;\n}\n\nexport const MobilePicker: React.FC<MobilePickerProps> = (props) => {\n const locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);\n const styles = useStyles(getStyles);\n const theme = getMobilePickerTheme(useContext(ThemeContext));\n\n const calendarRef = useRef<Calendar>(null);\n const inputRef = useRef<DateInput>(null);\n\n const [{ month: monthNative, year }] = useState(() => getTodayDate());\n const month = getMonthInHumanFormat(monthNative);\n\n const onValueChange = (date: string) => {\n props.onValueChange?.(date);\n props.onCloseRequest?.();\n };\n\n useLayoutEffect(() => {\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n inputRef.current?.focus();\n });\n }, []);\n\n const onTodayClick = () => {\n if (calendarRef.current) {\n calendarRef.current.scrollToMonth(month, year);\n }\n };\n\n return (\n <ThemeContext.Provider value={theme}>\n <MobilePopup\n opened\n headerChildComponent={\n <DateInput\n value={props.value || ''}\n width=\"100%\"\n withIcon\n ref={inputRef}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={props.onValueChange}\n size=\"medium\"\n warning={props.warning}\n error={props.error}\n data-tid={MobilePickerDataTids.input}\n />\n }\n footerChildComponent={\n props.enableTodayLink && (\n <Button size=\"medium\" onClick={onTodayClick} data-tid={MobilePickerDataTids.today}>\n {locale.today}\n </Button>\n )\n }\n onCloseRequest={props.onCloseRequest}\n >\n <Calendar\n ref={calendarRef}\n value={props.value}\n className={styles.calendarRoot()}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={onValueChange}\n isHoliday={props.isHoliday}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n </MobilePopup>\n </ThemeContext.Provider>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"MobilePicker.js","sourceRoot":"","sources":["../../../components/DatePicker/MobilePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useLayoutEffect, useRef, useState } from 'react';\n\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';\nimport { useStyles } from '../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Button } from '../Button/index.js';\nimport { getMonthInHumanFormat, getTodayDate } from '../Calendar/CalendarUtils.js';\nimport { Calendar } from '../Calendar/index.js';\nimport { DateInput } from '../DateInput/index.js';\nimport type { DatePickerProps } from './DatePicker.js';\nimport { getMobilePickerTheme } from './getMobilePickerTheme.js';\nimport { DatePickerLocaleHelper } from './locale/index.js';\nimport { getStyles } from './MobilePicker.styles.js';\n\nexport const MobilePickerDataTids = {\n input: 'MobilePicker__input',\n today: 'MobilePicker__today',\n} as const;\n\nexport interface MobilePickerProps extends Pick<\n DatePickerProps,\n | 'error'\n | 'warning'\n | 'value'\n | 'minDate'\n | 'maxDate'\n | 'onValueChange'\n | 'isHoliday'\n | 'enableTodayLink'\n | 'renderDay'\n | 'onMonthChange'\n> {\n onCloseRequest?: () => void;\n}\n\nexport const MobilePicker: React.FC<MobilePickerProps> = (props) => {\n const locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);\n const styles = useStyles(getStyles);\n const theme = getMobilePickerTheme(useContext(ThemeContext));\n\n const calendarRef = useRef<Calendar>(null);\n const inputRef = useRef<DateInput>(null);\n\n const [{ month: monthNative, year }] = useState(() => getTodayDate());\n const month = getMonthInHumanFormat(monthNative);\n\n const onValueChange = (date: string) => {\n props.onValueChange?.(date);\n props.onCloseRequest?.();\n };\n\n useLayoutEffect(() => {\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n inputRef.current?.focus();\n });\n }, []);\n\n const onTodayClick = () => {\n if (calendarRef.current) {\n calendarRef.current.scrollToMonth(month, year);\n }\n };\n\n return (\n <ThemeContext.Provider value={theme}>\n <MobilePopup\n opened\n verticalAlign={'center'}\n headerChildComponent={\n <DateInput\n value={props.value || ''}\n width=\"100%\"\n withIcon\n ref={inputRef}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={props.onValueChange}\n size=\"medium\"\n warning={props.warning}\n error={props.error}\n data-tid={MobilePickerDataTids.input}\n />\n }\n footerChildComponent={\n props.enableTodayLink && (\n <Button size=\"medium\" onClick={onTodayClick} data-tid={MobilePickerDataTids.today}>\n {locale.today}\n </Button>\n )\n }\n onCloseRequest={props.onCloseRequest}\n >\n <Calendar\n ref={calendarRef}\n value={props.value}\n className={styles.calendarRoot()}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={onValueChange}\n isHoliday={props.isHoliday}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n </MobilePopup>\n </ThemeContext.Provider>\n );\n};\n"]}
|
|
@@ -215,7 +215,7 @@ export var DateRangePicker = Object.assign({
|
|
|
215
215
|
};
|
|
216
216
|
var renderMobileCalendar = function (theme) {
|
|
217
217
|
var _a, _b;
|
|
218
|
-
return (React.createElement(MobilePopup, { opened: true, headerChildComponent: React.createElement("div", { className: cx(styles.root(theme), styles.inputWrapperWidthFull()) },
|
|
218
|
+
return (React.createElement(MobilePopup, { opened: true, verticalAlign: 'center', headerChildComponent: React.createElement("div", { className: cx(styles.root(theme), styles.inputWrapperWidthFull()) },
|
|
219
219
|
React.createElement(DateInput, { withIcon: true, value: startValue, width: "auto", size: "medium", className: cx((_a = {}, _a[styles.inputVisuallyFocus(theme)] = focusInput === 'start', _a)), disabled: startDisabled, onValueChange: setStartValue, onFocus: function () { return setFocusInput('start'); }, ref: mobileStartRef, "data-tid": DateRangePickerDataTids.mobileStart }),
|
|
220
220
|
React.createElement(DateRangePicker.Separator, null),
|
|
221
221
|
React.createElement(DateInput, { withIcon: true, value: endValue, width: "auto", size: "medium", className: cx((_b = {}, _b[styles.inputVisuallyFocus(theme)] = focusInput === 'end', _b)), disabled: endDisabled, onValueChange: setEndValue, onFocus: function () { return setFocusInput('end'); }, ref: mobileEndRef, "data-tid": DateRangePickerDataTids.mobileEnd })), onCloseRequest: function () { return close(); }, footerChildComponent: renderButtons() },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","sourceRoot":"","sources":["../../../components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type AriaAttributes, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light.js';\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { NativeDateInput } from '../../internal/NativeDateInput/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { isIOS } from '../../lib/client.js';\nimport { isBetween, isGreater, isGreaterOrEqual, isLess, isLessOrEqual } from '../../lib/date/comparison.js';\nimport { InternalDate } from '../../lib/date/InternalDate.js';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { LocaleContext } from '../../lib/locale/index.js';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { InstanceWithRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Button } from '../Button/index.js';\nimport { Calendar, CalendarDay } from '../Calendar/index.js';\nimport type { CalendarDayProps } from '../Calendar/index.js';\nimport { DateInput } from '../DateInput/index.js';\nimport type { DatePickerProps } from '../DatePicker/index.js';\nimport { useResponsiveLayout } from '../ResponsiveLayout/index.js';\nimport { getFontSize, getStyles } from './DateRangePicker.styles.js';\nimport { DateRangePickerContext } from './DateRangePickerContext.js';\nimport type { DateRangePickerContextProps } from './DateRangePickerContext.js';\nimport { DateRangePickerEnd, DateRangePickerStart } from './DateRangePickerInput.js';\nimport type { DateRangePickerInputType } from './DateRangePickerInput.js';\nimport { DateRangePickerSeparator } from './DateRangePickerSeparator.js';\nimport { getDateRangePickerTheme, getMobileDateRangePickerTheme } from './DateRangePickerTheme.js';\nimport { getStateForValue } from './helpers/getStateForValue.js';\nimport { validateDateRangePicker } from './helpers/validateDateRangePicker.js';\nimport { DateRangePickerLocaleHelper } from './locale/index.js';\n\nexport const DateRangePickerDataTids = {\n root: 'DateRangePicker__root',\n start: 'DateRangePicker__start',\n end: 'DateRangePicker__end',\n popup: 'DateRangePicker__popup',\n calendar: 'DateRangePicker__calendar',\n todayButton: 'DateRangePicker__todayButton',\n startOptionalButton: 'DateRangePicker__startOptionalButton',\n endOptionalButton: 'DateRangePicker__endOptionalButton',\n mobileStart: 'DateRangePicker__mobileStart',\n mobileEnd: 'DateRangePicker__mobileEnd',\n rangeStart: 'DateRangePicker__rangeStart',\n rangeEnd: 'DateRangePicker__rangeEnd',\n} as const;\n\nconst DayDateAttribute = 'data-date-range-picker-day';\n\nexport interface DateRangePickerProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>,\n Pick<\n DatePickerProps,\n | 'size'\n | 'width'\n | 'renderDay'\n | 'menuPos'\n | 'menuAlign'\n | 'useMobileNativeDatePicker'\n | 'enableTodayLink'\n | 'onMonthChange'\n > {\n /**\n * Элемент относительно которого открывается календарь,\n * Если передать значение `focused` - меню будет открываться у зафокусированного элемента.\n * Если передать ссылку на DOM элемент или ref - меню откроется относительно переданного элемента.\n */\n menuAnchorElement?: 'focused' | Element | React.ReactNode | React.RefObject<any>;\n /**\n * Элементы DateRangePicker:\n * `<DateRangePicker.Start />`\n * `<DateRangePicker.Separator />`\n * `<DateRangePicker.End />`\n */\n children: React.ReactNode;\n}\n\nexport interface DateRangePickerRef extends InstanceWithRootNode {\n open: (inputType?: DateRangePickerInputType) => void;\n close: () => void;\n scrollToMonth: (month: number, year: number) => void;\n}\n\nexport type DateRangePicker = DateRangePickerRef;\n\nexport const DateRangePicker = Object.assign(\n {\n Start: DateRangePickerStart,\n End: DateRangePickerEnd,\n Separator: DateRangePickerSeparator,\n validate: validateDateRangePicker,\n },\n forwardRefAndName<DateRangePickerRef, DateRangePickerProps>('DateRangePicker', (props: DateRangePickerProps, ref) => {\n const { css, cx } = useEmotion();\n const styles = useStyles(getStyles);\n const { isMobile } = useResponsiveLayout();\n const locale = useLocaleForControl('DateRangePicker', DateRangePickerLocaleHelper);\n\n const [startValue, setStartValue] = useState<string>();\n const [startOptional, setStartOptional] = useState(false);\n const [startDisabled, setStartDisabled] = useState(false);\n\n const [endValue, setEndValue] = useState<string>();\n const [endOptional, setEndOptional] = useState(false);\n const [endDisabled, setEndDisabled] = useState(false);\n\n const [minDate, setMinDate] = useState('');\n const [maxDate, setMaxDate] = useState('');\n\n const [hoveredDay, setHoveredDay] = useState<string | null>(null);\n const [showCalendar, setShowCalendar] = useState<boolean>(false);\n const [focusInput, setFocusInput] = useState<DateRangePickerInputType | null>(null);\n\n const dateRangePickerRef = useRef<HTMLDivElement>(null);\n const calendarRef = useRef<Calendar>(null);\n const startRef = useRef<DateInput>(null);\n const endRef = useRef<DateInput>(null);\n const mobileStartRef = useRef<DateInput>(null);\n const mobileEndRef = useRef<DateInput>(null);\n const mobileNativeStartRef = useRef<NativeDateInput>(null);\n const mobileNativeEndRef = useRef<NativeDateInput>(null);\n const isCalendarOpen = !startDisabled && !endDisabled && showCalendar;\n\n const updateDateRangeValues = (value = '') => {\n const currentValues = {\n currentStart: startValue,\n currentEnd: endValue,\n minDate,\n maxDate,\n };\n const updatedState = getStateForValue(focusInput, value, currentValues);\n\n setStartValue(updatedState.start);\n setEndValue(updatedState.end);\n\n if (updatedState.isOpen && updatedState.focus) {\n focus(updatedState.focus);\n }\n\n if (!updatedState.isOpen) {\n close();\n }\n };\n\n const open = (inputType: DateRangePickerInputType = 'start') => {\n setFocusInput(inputType);\n setShowCalendar(true);\n };\n\n const close = () => {\n setShowCalendar(false);\n setHoveredDay(null);\n };\n\n const focus = (inputType: DateRangePickerInputType = 'start') => {\n setFocusInput(inputType);\n };\n\n const setEmpty = (type: DateRangePickerInputType) => {\n switch (type) {\n case 'start':\n setStartValue('');\n focus('end');\n break;\n\n case 'end':\n setEndValue('');\n close();\n break;\n }\n };\n\n useImperativeHandle(\n ref,\n () => ({\n open,\n close,\n scrollToMonth: (month, year) => {\n calendarRef.current?.scrollToMonth?.(month, year);\n },\n getRootNode: () => dateRangePickerRef.current,\n }),\n [],\n );\n\n useLayoutEffect(() => {\n if (!focusInput) {\n return;\n }\n\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n const isStart = focusInput === 'start';\n let currentFieldRef;\n\n // Mobile Native Picker\n if (isMobile && props.useMobileNativeDatePicker) {\n currentFieldRef = isStart ? mobileNativeStartRef : mobileNativeEndRef;\n if (isIOS) {\n currentFieldRef.current?.focus();\n } else {\n // Android open native datepicker only via click\n currentFieldRef.current?.click();\n }\n return;\n }\n\n // Mobile\n if (isMobile) {\n currentFieldRef = isStart ? mobileStartRef : mobileEndRef;\n currentFieldRef.current?.focus();\n return;\n }\n\n // Desktop\n currentFieldRef = isStart ? startRef : endRef;\n currentFieldRef.current?.focus();\n });\n }, [focusInput]);\n\n const dateRangePickerContextProps: DateRangePickerContextProps = {\n startValue,\n startOptional,\n startDisabled,\n endValue,\n endOptional,\n endDisabled,\n minDate,\n maxDate,\n size: props.size,\n setStartValue,\n setStartOptional,\n setStartDisabled,\n setEndValue,\n setEndOptional,\n setEndDisabled,\n setMinDate,\n setMaxDate,\n setFocusInput,\n open,\n close,\n dateRangePickerRef,\n startRef,\n endRef,\n };\n\n const renderCalendar = (theme: Theme, widthAuto = false) => (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: locale.months,\n dayCellChooseDateAriaLabel: locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: locale.selectMonthAriaLabel,\n selectYearAriaLabel: locale.selectYearAriaLabel,\n selectChosenAriaLabel: locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <Calendar\n value={focusInput === 'start' ? startValue : endValue}\n minDate={minDate}\n maxDate={maxDate}\n renderDay={(dayProps) => renderCalendarRange(dayProps, theme, props.renderDay)}\n onValueChange={(value) => updateDateRangeValues(value)}\n ref={calendarRef}\n onMonthChange={props.onMonthChange}\n className={cx({ [styles.calendarWidthAuto()]: widthAuto })}\n />\n </LocaleContext.Provider>\n );\n\n const renderMobileCalendar = (theme: Theme) => (\n <MobilePopup\n opened\n headerChildComponent={\n <div className={cx(styles.root(theme), styles.inputWrapperWidthFull())}>\n <DateInput\n withIcon\n value={startValue}\n width=\"auto\"\n size=\"medium\"\n className={cx({ [styles.inputVisuallyFocus(theme)]: focusInput === 'start' })}\n disabled={startDisabled}\n onValueChange={setStartValue}\n onFocus={() => setFocusInput('start')}\n ref={mobileStartRef}\n data-tid={DateRangePickerDataTids.mobileStart}\n />\n <DateRangePicker.Separator />\n <DateInput\n withIcon\n value={endValue}\n width=\"auto\"\n size=\"medium\"\n className={cx({ [styles.inputVisuallyFocus(theme)]: focusInput === 'end' })}\n disabled={endDisabled}\n onValueChange={setEndValue}\n onFocus={() => setFocusInput('end')}\n ref={mobileEndRef}\n data-tid={DateRangePickerDataTids.mobileEnd}\n />\n </div>\n }\n onCloseRequest={() => close()}\n footerChildComponent={renderButtons()}\n >\n <ThemeContext.Provider value={getMobileDateRangePickerTheme(theme)}>\n {renderCalendar(theme, true)}\n </ThemeContext.Provider>\n </MobilePopup>\n );\n\n const getAnchorElement = () => {\n const { menuAnchorElement } = props;\n if (menuAnchorElement === 'focused') {\n return getRootNode(focusInput === 'start' ? startRef.current : endRef.current);\n }\n\n if (React.isValidElement(menuAnchorElement)) {\n return menuAnchorElement;\n }\n\n if (menuAnchorElement && typeof menuAnchorElement === 'object' && 'current' in menuAnchorElement) {\n return getRootNode(menuAnchorElement.current);\n }\n\n return getRootNode(startRef.current) || getRootNode(endRef.current) || getRootNode(dateRangePickerRef.current);\n };\n\n const renderDesktopCalendar = (theme: Theme) => (\n <Popup\n opened\n hasShadow\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(props.menuPos, props.menuAlign)}\n data-tid={DateRangePickerDataTids.root}\n anchorElement={getAnchorElement()}\n margin={parseInt(theme.datePickerMenuOffsetY)}\n >\n <div\n className={styles.calendarWrapper(theme)}\n onMouseDown={(e) => e.preventDefault()}\n onMouseMove={handleCalendarRangeMouseMove}\n >\n {renderCalendar(theme)}\n {renderButtons()}\n </div>\n </Popup>\n );\n\n const renderButtons = () => {\n const today = new InternalDate(locale)\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n const hasOptionalButtons = startOptional || endOptional;\n return (\n <div className={cx(styles.buttonWrap())}>\n {hasOptionalButtons && (\n <>\n {focusInput === 'start' && startOptional && (\n <Button\n width=\"100%\"\n data-tid={DateRangePickerDataTids.startOptionalButton}\n onClick={() => setEmpty('start')}\n >\n {locale.startDateEmpty}\n </Button>\n )}\n {focusInput === 'end' && endOptional && (\n <Button\n width=\"100%\"\n data-tid={DateRangePickerDataTids.endOptionalButton}\n onClick={() => setEmpty('end')}\n >\n {locale.endDateEmpty}\n </Button>\n )}\n </>\n )}\n\n {props.enableTodayLink && (\n <Button\n icon={<ArrowAUpIcon16Light />}\n aria-label={locale.todayAriaLabel}\n data-tid={DateRangePickerDataTids.todayButton}\n onClick={() => updateDateRangeValues(today)}\n >\n {!hasOptionalButtons && locale.today}\n </Button>\n )}\n </div>\n );\n };\n\n const renderMobileNativeDateInput = () => (\n <>\n <NativeDateInput\n value={startValue}\n minDate={minDate}\n maxDate={maxDate}\n onValueChange={setStartValue}\n disabled={startDisabled}\n ref={mobileNativeStartRef}\n />\n <NativeDateInput\n value={endValue}\n minDate={minDate}\n maxDate={maxDate}\n onValueChange={setEndValue}\n disabled={endDisabled}\n ref={mobileNativeEndRef}\n />\n </>\n );\n\n return (\n <ThemeContext.Consumer>\n {(theme) => (\n <ThemeContext.Provider value={getDateRangePickerTheme(theme)}>\n <DateRangePickerContext.Provider value={dateRangePickerContextProps}>\n <CommonWrapper {...props}>\n <div\n className={cx(\n styles.root(theme),\n styles.inputWrapperWidth(theme),\n css`\n font-size: ${getFontSize(theme, props.size)};\n `,\n )}\n role=\"group\"\n aria-describedby={props['aria-describedby']}\n aria-label={props['aria-label']}\n aria-labelledby={props['aria-labelledby']}\n data-tid={DateRangePickerDataTids.root}\n ref={dateRangePickerRef}\n style={{ width: props.width }}\n >\n {props.children}\n\n {props.useMobileNativeDatePicker && isMobile\n ? renderMobileNativeDateInput()\n : isCalendarOpen && (isMobile ? renderMobileCalendar(theme) : renderDesktopCalendar(theme))}\n </div>\n </CommonWrapper>\n </DateRangePickerContext.Provider>\n </ThemeContext.Provider>\n )}\n </ThemeContext.Consumer>\n );\n\n // Use parent mousemove event instead each CalendarDay's mouseenter / mouseover\n function handleCalendarRangeMouseMove(e: React.MouseEvent<HTMLDivElement, MouseEvent>) {\n if (!startValue && !endValue) {\n return;\n }\n\n const hoveredElement = e.target as HTMLElement;\n if (!hoveredElement.hasAttribute(DayDateAttribute) && hoveredDay === null) {\n return;\n }\n\n const date = String(hoveredElement?.getAttribute(DayDateAttribute)) || null;\n setHoveredDay(date);\n }\n\n function renderCalendarRange(\n props: CalendarDayProps,\n t: Theme,\n renderDayFn: ((props: CalendarDayProps) => React.ReactElement<unknown>) | undefined,\n ) {\n const day = props.date;\n\n const isDayFirst = startValue === day;\n const isDayLast = endValue === day;\n const isDayInPeriod = Boolean(startValue && endValue && isBetween(day, startValue, endValue));\n\n const hasHoveredDay = hoveredDay !== null;\n const isDayInHoveredPeriod =\n hasHoveredDay &&\n Boolean(\n (focusInput === 'start' && endValue && isBetween(day, hoveredDay, endValue)) ||\n (focusInput === 'end' && startValue && isBetween(day, startValue, hoveredDay)),\n );\n\n let hasLeftRoundings;\n let hasRightRoundings;\n\n if (hasHoveredDay) {\n const isDayBeforeFirstInPeriod = startValue ? isLess(hoveredDay, startValue) : endValue;\n const isDayAfterLastInPeriod = endValue ? isGreater(hoveredDay, endValue) : startValue;\n\n if (isDayFirst && (isGreaterOrEqual(hoveredDay, startValue) || focusInput === 'end')) {\n hasLeftRoundings = true;\n }\n\n if (isDayLast && (isLessOrEqual(hoveredDay, endValue) || focusInput === 'start')) {\n hasRightRoundings = true;\n }\n\n const isDayHovered = hoveredDay === day;\n if (isDayHovered) {\n if (isDayBeforeFirstInPeriod) {\n hasLeftRoundings = true;\n }\n\n if (isDayAfterLastInPeriod) {\n hasRightRoundings = true;\n }\n }\n } else {\n if (isDayFirst) {\n hasLeftRoundings = true;\n }\n\n if (isDayLast) {\n hasRightRoundings = true;\n }\n }\n\n const renderDayProps = {\n ...props,\n [DayDateAttribute]: props.date,\n };\n\n let dataTid = null;\n if (isDayFirst) {\n dataTid = DateRangePickerDataTids.rangeStart;\n } else if (isDayLast) {\n dataTid = DateRangePickerDataTids.rangeEnd;\n }\n\n return (\n <div\n className={cx(\n styles.rangeCalendarDay(),\n css`\n background: ${isDayInPeriod && t.rangeCalendarCellBg};\n border-top-left-radius: ${hasLeftRoundings && t.calendarCellBorderRadius};\n border-bottom-left-radius: ${hasLeftRoundings && t.calendarCellBorderRadius};\n border-top-right-radius: ${hasRightRoundings && t.calendarCellBorderRadius};\n border-bottom-right-radius: ${hasRightRoundings && t.calendarCellBorderRadius};\n `,\n {\n [styles.rangeCalendarDayEnd(t)]: isDayFirst || isDayLast,\n [styles.rangeCalendarDayHoverInPeriod(t)]: isDayInPeriod,\n [styles.rangeCalendarDayInHoveredPeriod(t)]: isDayInHoveredPeriod,\n },\n )}\n data-tid={dataTid}\n >\n {renderDayFn ? renderDayFn(renderDayProps) : <CalendarDay {...renderDayProps} />}\n </div>\n );\n }\n }),\n);\n"]}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","sourceRoot":"","sources":["../../../components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type AriaAttributes, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light.js';\nimport { MobilePopup } from '../../internal/MobilePopup/index.js';\nimport { NativeDateInput } from '../../internal/NativeDateInput/index.js';\nimport { Popup } from '../../internal/Popup/index.js';\nimport { ZIndex } from '../../internal/ZIndex/index.js';\nimport { isIOS } from '../../lib/client.js';\nimport { isBetween, isGreater, isGreaterOrEqual, isLess, isLessOrEqual } from '../../lib/date/comparison.js';\nimport { InternalDate } from '../../lib/date/InternalDate.js';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { getMenuPositions } from '../../lib/getMenuPositions.js';\nimport { LocaleContext } from '../../lib/locale/index.js';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl.js';\nimport { useEmotion, useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { InstanceWithRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { Button } from '../Button/index.js';\nimport { Calendar, CalendarDay } from '../Calendar/index.js';\nimport type { CalendarDayProps } from '../Calendar/index.js';\nimport { DateInput } from '../DateInput/index.js';\nimport type { DatePickerProps } from '../DatePicker/index.js';\nimport { useResponsiveLayout } from '../ResponsiveLayout/index.js';\nimport { getFontSize, getStyles } from './DateRangePicker.styles.js';\nimport { DateRangePickerContext } from './DateRangePickerContext.js';\nimport type { DateRangePickerContextProps } from './DateRangePickerContext.js';\nimport { DateRangePickerEnd, DateRangePickerStart } from './DateRangePickerInput.js';\nimport type { DateRangePickerInputType } from './DateRangePickerInput.js';\nimport { DateRangePickerSeparator } from './DateRangePickerSeparator.js';\nimport { getDateRangePickerTheme, getMobileDateRangePickerTheme } from './DateRangePickerTheme.js';\nimport { getStateForValue } from './helpers/getStateForValue.js';\nimport { validateDateRangePicker } from './helpers/validateDateRangePicker.js';\nimport { DateRangePickerLocaleHelper } from './locale/index.js';\n\nexport const DateRangePickerDataTids = {\n root: 'DateRangePicker__root',\n start: 'DateRangePicker__start',\n end: 'DateRangePicker__end',\n popup: 'DateRangePicker__popup',\n calendar: 'DateRangePicker__calendar',\n todayButton: 'DateRangePicker__todayButton',\n startOptionalButton: 'DateRangePicker__startOptionalButton',\n endOptionalButton: 'DateRangePicker__endOptionalButton',\n mobileStart: 'DateRangePicker__mobileStart',\n mobileEnd: 'DateRangePicker__mobileEnd',\n rangeStart: 'DateRangePicker__rangeStart',\n rangeEnd: 'DateRangePicker__rangeEnd',\n} as const;\n\nconst DayDateAttribute = 'data-date-range-picker-day';\n\nexport interface DateRangePickerProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>,\n Pick<\n DatePickerProps,\n | 'size'\n | 'width'\n | 'renderDay'\n | 'menuPos'\n | 'menuAlign'\n | 'useMobileNativeDatePicker'\n | 'enableTodayLink'\n | 'onMonthChange'\n > {\n /**\n * Элемент относительно которого открывается календарь,\n * Если передать значение `focused` - меню будет открываться у зафокусированного элемента.\n * Если передать ссылку на DOM элемент или ref - меню откроется относительно переданного элемента.\n */\n menuAnchorElement?: 'focused' | Element | React.ReactNode | React.RefObject<any>;\n /**\n * Элементы DateRangePicker:\n * `<DateRangePicker.Start />`\n * `<DateRangePicker.Separator />`\n * `<DateRangePicker.End />`\n */\n children: React.ReactNode;\n}\n\nexport interface DateRangePickerRef extends InstanceWithRootNode {\n open: (inputType?: DateRangePickerInputType) => void;\n close: () => void;\n scrollToMonth: (month: number, year: number) => void;\n}\n\nexport type DateRangePicker = DateRangePickerRef;\n\nexport const DateRangePicker = Object.assign(\n {\n Start: DateRangePickerStart,\n End: DateRangePickerEnd,\n Separator: DateRangePickerSeparator,\n validate: validateDateRangePicker,\n },\n forwardRefAndName<DateRangePickerRef, DateRangePickerProps>('DateRangePicker', (props: DateRangePickerProps, ref) => {\n const { css, cx } = useEmotion();\n const styles = useStyles(getStyles);\n const { isMobile } = useResponsiveLayout();\n const locale = useLocaleForControl('DateRangePicker', DateRangePickerLocaleHelper);\n\n const [startValue, setStartValue] = useState<string>();\n const [startOptional, setStartOptional] = useState(false);\n const [startDisabled, setStartDisabled] = useState(false);\n\n const [endValue, setEndValue] = useState<string>();\n const [endOptional, setEndOptional] = useState(false);\n const [endDisabled, setEndDisabled] = useState(false);\n\n const [minDate, setMinDate] = useState('');\n const [maxDate, setMaxDate] = useState('');\n\n const [hoveredDay, setHoveredDay] = useState<string | null>(null);\n const [showCalendar, setShowCalendar] = useState<boolean>(false);\n const [focusInput, setFocusInput] = useState<DateRangePickerInputType | null>(null);\n\n const dateRangePickerRef = useRef<HTMLDivElement>(null);\n const calendarRef = useRef<Calendar>(null);\n const startRef = useRef<DateInput>(null);\n const endRef = useRef<DateInput>(null);\n const mobileStartRef = useRef<DateInput>(null);\n const mobileEndRef = useRef<DateInput>(null);\n const mobileNativeStartRef = useRef<NativeDateInput>(null);\n const mobileNativeEndRef = useRef<NativeDateInput>(null);\n const isCalendarOpen = !startDisabled && !endDisabled && showCalendar;\n\n const updateDateRangeValues = (value = '') => {\n const currentValues = {\n currentStart: startValue,\n currentEnd: endValue,\n minDate,\n maxDate,\n };\n const updatedState = getStateForValue(focusInput, value, currentValues);\n\n setStartValue(updatedState.start);\n setEndValue(updatedState.end);\n\n if (updatedState.isOpen && updatedState.focus) {\n focus(updatedState.focus);\n }\n\n if (!updatedState.isOpen) {\n close();\n }\n };\n\n const open = (inputType: DateRangePickerInputType = 'start') => {\n setFocusInput(inputType);\n setShowCalendar(true);\n };\n\n const close = () => {\n setShowCalendar(false);\n setHoveredDay(null);\n };\n\n const focus = (inputType: DateRangePickerInputType = 'start') => {\n setFocusInput(inputType);\n };\n\n const setEmpty = (type: DateRangePickerInputType) => {\n switch (type) {\n case 'start':\n setStartValue('');\n focus('end');\n break;\n\n case 'end':\n setEndValue('');\n close();\n break;\n }\n };\n\n useImperativeHandle(\n ref,\n () => ({\n open,\n close,\n scrollToMonth: (month, year) => {\n calendarRef.current?.scrollToMonth?.(month, year);\n },\n getRootNode: () => dateRangePickerRef.current,\n }),\n [],\n );\n\n useLayoutEffect(() => {\n if (!focusInput) {\n return;\n }\n\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n const isStart = focusInput === 'start';\n let currentFieldRef;\n\n // Mobile Native Picker\n if (isMobile && props.useMobileNativeDatePicker) {\n currentFieldRef = isStart ? mobileNativeStartRef : mobileNativeEndRef;\n if (isIOS) {\n currentFieldRef.current?.focus();\n } else {\n // Android open native datepicker only via click\n currentFieldRef.current?.click();\n }\n return;\n }\n\n // Mobile\n if (isMobile) {\n currentFieldRef = isStart ? mobileStartRef : mobileEndRef;\n currentFieldRef.current?.focus();\n return;\n }\n\n // Desktop\n currentFieldRef = isStart ? startRef : endRef;\n currentFieldRef.current?.focus();\n });\n }, [focusInput]);\n\n const dateRangePickerContextProps: DateRangePickerContextProps = {\n startValue,\n startOptional,\n startDisabled,\n endValue,\n endOptional,\n endDisabled,\n minDate,\n maxDate,\n size: props.size,\n setStartValue,\n setStartOptional,\n setStartDisabled,\n setEndValue,\n setEndOptional,\n setEndDisabled,\n setMinDate,\n setMaxDate,\n setFocusInput,\n open,\n close,\n dateRangePickerRef,\n startRef,\n endRef,\n };\n\n const renderCalendar = (theme: Theme, widthAuto = false) => (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: locale.months,\n dayCellChooseDateAriaLabel: locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: locale.selectMonthAriaLabel,\n selectYearAriaLabel: locale.selectYearAriaLabel,\n selectChosenAriaLabel: locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <Calendar\n value={focusInput === 'start' ? startValue : endValue}\n minDate={minDate}\n maxDate={maxDate}\n renderDay={(dayProps) => renderCalendarRange(dayProps, theme, props.renderDay)}\n onValueChange={(value) => updateDateRangeValues(value)}\n ref={calendarRef}\n onMonthChange={props.onMonthChange}\n className={cx({ [styles.calendarWidthAuto()]: widthAuto })}\n />\n </LocaleContext.Provider>\n );\n\n const renderMobileCalendar = (theme: Theme) => (\n <MobilePopup\n opened\n verticalAlign={'center'}\n headerChildComponent={\n <div className={cx(styles.root(theme), styles.inputWrapperWidthFull())}>\n <DateInput\n withIcon\n value={startValue}\n width=\"auto\"\n size=\"medium\"\n className={cx({ [styles.inputVisuallyFocus(theme)]: focusInput === 'start' })}\n disabled={startDisabled}\n onValueChange={setStartValue}\n onFocus={() => setFocusInput('start')}\n ref={mobileStartRef}\n data-tid={DateRangePickerDataTids.mobileStart}\n />\n <DateRangePicker.Separator />\n <DateInput\n withIcon\n value={endValue}\n width=\"auto\"\n size=\"medium\"\n className={cx({ [styles.inputVisuallyFocus(theme)]: focusInput === 'end' })}\n disabled={endDisabled}\n onValueChange={setEndValue}\n onFocus={() => setFocusInput('end')}\n ref={mobileEndRef}\n data-tid={DateRangePickerDataTids.mobileEnd}\n />\n </div>\n }\n onCloseRequest={() => close()}\n footerChildComponent={renderButtons()}\n >\n <ThemeContext.Provider value={getMobileDateRangePickerTheme(theme)}>\n {renderCalendar(theme, true)}\n </ThemeContext.Provider>\n </MobilePopup>\n );\n\n const getAnchorElement = () => {\n const { menuAnchorElement } = props;\n if (menuAnchorElement === 'focused') {\n return getRootNode(focusInput === 'start' ? startRef.current : endRef.current);\n }\n\n if (React.isValidElement(menuAnchorElement)) {\n return menuAnchorElement;\n }\n\n if (menuAnchorElement && typeof menuAnchorElement === 'object' && 'current' in menuAnchorElement) {\n return getRootNode(menuAnchorElement.current);\n }\n\n return getRootNode(startRef.current) || getRootNode(endRef.current) || getRootNode(dateRangePickerRef.current);\n };\n\n const renderDesktopCalendar = (theme: Theme) => (\n <Popup\n opened\n hasShadow\n priority={ZIndex.priorities.PopupMenu}\n positions={getMenuPositions(props.menuPos, props.menuAlign)}\n data-tid={DateRangePickerDataTids.root}\n anchorElement={getAnchorElement()}\n margin={parseInt(theme.datePickerMenuOffsetY)}\n >\n <div\n className={styles.calendarWrapper(theme)}\n onMouseDown={(e) => e.preventDefault()}\n onMouseMove={handleCalendarRangeMouseMove}\n >\n {renderCalendar(theme)}\n {renderButtons()}\n </div>\n </Popup>\n );\n\n const renderButtons = () => {\n const today = new InternalDate(locale)\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n const hasOptionalButtons = startOptional || endOptional;\n return (\n <div className={cx(styles.buttonWrap())}>\n {hasOptionalButtons && (\n <>\n {focusInput === 'start' && startOptional && (\n <Button\n width=\"100%\"\n data-tid={DateRangePickerDataTids.startOptionalButton}\n onClick={() => setEmpty('start')}\n >\n {locale.startDateEmpty}\n </Button>\n )}\n {focusInput === 'end' && endOptional && (\n <Button\n width=\"100%\"\n data-tid={DateRangePickerDataTids.endOptionalButton}\n onClick={() => setEmpty('end')}\n >\n {locale.endDateEmpty}\n </Button>\n )}\n </>\n )}\n\n {props.enableTodayLink && (\n <Button\n icon={<ArrowAUpIcon16Light />}\n aria-label={locale.todayAriaLabel}\n data-tid={DateRangePickerDataTids.todayButton}\n onClick={() => updateDateRangeValues(today)}\n >\n {!hasOptionalButtons && locale.today}\n </Button>\n )}\n </div>\n );\n };\n\n const renderMobileNativeDateInput = () => (\n <>\n <NativeDateInput\n value={startValue}\n minDate={minDate}\n maxDate={maxDate}\n onValueChange={setStartValue}\n disabled={startDisabled}\n ref={mobileNativeStartRef}\n />\n <NativeDateInput\n value={endValue}\n minDate={minDate}\n maxDate={maxDate}\n onValueChange={setEndValue}\n disabled={endDisabled}\n ref={mobileNativeEndRef}\n />\n </>\n );\n\n return (\n <ThemeContext.Consumer>\n {(theme) => (\n <ThemeContext.Provider value={getDateRangePickerTheme(theme)}>\n <DateRangePickerContext.Provider value={dateRangePickerContextProps}>\n <CommonWrapper {...props}>\n <div\n className={cx(\n styles.root(theme),\n styles.inputWrapperWidth(theme),\n css`\n font-size: ${getFontSize(theme, props.size)};\n `,\n )}\n role=\"group\"\n aria-describedby={props['aria-describedby']}\n aria-label={props['aria-label']}\n aria-labelledby={props['aria-labelledby']}\n data-tid={DateRangePickerDataTids.root}\n ref={dateRangePickerRef}\n style={{ width: props.width }}\n >\n {props.children}\n\n {props.useMobileNativeDatePicker && isMobile\n ? renderMobileNativeDateInput()\n : isCalendarOpen && (isMobile ? renderMobileCalendar(theme) : renderDesktopCalendar(theme))}\n </div>\n </CommonWrapper>\n </DateRangePickerContext.Provider>\n </ThemeContext.Provider>\n )}\n </ThemeContext.Consumer>\n );\n\n // Use parent mousemove event instead each CalendarDay's mouseenter / mouseover\n function handleCalendarRangeMouseMove(e: React.MouseEvent<HTMLDivElement, MouseEvent>) {\n if (!startValue && !endValue) {\n return;\n }\n\n const hoveredElement = e.target as HTMLElement;\n if (!hoveredElement.hasAttribute(DayDateAttribute) && hoveredDay === null) {\n return;\n }\n\n const date = String(hoveredElement?.getAttribute(DayDateAttribute)) || null;\n setHoveredDay(date);\n }\n\n function renderCalendarRange(\n props: CalendarDayProps,\n t: Theme,\n renderDayFn: ((props: CalendarDayProps) => React.ReactElement<unknown>) | undefined,\n ) {\n const day = props.date;\n\n const isDayFirst = startValue === day;\n const isDayLast = endValue === day;\n const isDayInPeriod = Boolean(startValue && endValue && isBetween(day, startValue, endValue));\n\n const hasHoveredDay = hoveredDay !== null;\n const isDayInHoveredPeriod =\n hasHoveredDay &&\n Boolean(\n (focusInput === 'start' && endValue && isBetween(day, hoveredDay, endValue)) ||\n (focusInput === 'end' && startValue && isBetween(day, startValue, hoveredDay)),\n );\n\n let hasLeftRoundings;\n let hasRightRoundings;\n\n if (hasHoveredDay) {\n const isDayBeforeFirstInPeriod = startValue ? isLess(hoveredDay, startValue) : endValue;\n const isDayAfterLastInPeriod = endValue ? isGreater(hoveredDay, endValue) : startValue;\n\n if (isDayFirst && (isGreaterOrEqual(hoveredDay, startValue) || focusInput === 'end')) {\n hasLeftRoundings = true;\n }\n\n if (isDayLast && (isLessOrEqual(hoveredDay, endValue) || focusInput === 'start')) {\n hasRightRoundings = true;\n }\n\n const isDayHovered = hoveredDay === day;\n if (isDayHovered) {\n if (isDayBeforeFirstInPeriod) {\n hasLeftRoundings = true;\n }\n\n if (isDayAfterLastInPeriod) {\n hasRightRoundings = true;\n }\n }\n } else {\n if (isDayFirst) {\n hasLeftRoundings = true;\n }\n\n if (isDayLast) {\n hasRightRoundings = true;\n }\n }\n\n const renderDayProps = {\n ...props,\n [DayDateAttribute]: props.date,\n };\n\n let dataTid = null;\n if (isDayFirst) {\n dataTid = DateRangePickerDataTids.rangeStart;\n } else if (isDayLast) {\n dataTid = DateRangePickerDataTids.rangeEnd;\n }\n\n return (\n <div\n className={cx(\n styles.rangeCalendarDay(),\n css`\n background: ${isDayInPeriod && t.rangeCalendarCellBg};\n border-top-left-radius: ${hasLeftRoundings && t.calendarCellBorderRadius};\n border-bottom-left-radius: ${hasLeftRoundings && t.calendarCellBorderRadius};\n border-top-right-radius: ${hasRightRoundings && t.calendarCellBorderRadius};\n border-bottom-right-radius: ${hasRightRoundings && t.calendarCellBorderRadius};\n `,\n {\n [styles.rangeCalendarDayEnd(t)]: isDayFirst || isDayLast,\n [styles.rangeCalendarDayHoverInPeriod(t)]: isDayInPeriod,\n [styles.rangeCalendarDayInHoveredPeriod(t)]: isDayInHoveredPeriod,\n },\n )}\n data-tid={dataTid}\n >\n {renderDayFn ? renderDayFn(renderDayProps) : <CalendarDay {...renderDayProps} />}\n </div>\n );\n }\n }),\n);\n"]}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { CommonProps } from '../../internal/CommonWrapper/index.js';
|
|
3
3
|
import type { TGetRootNode } from '../../lib/rootNode/index.js';
|
|
4
|
+
import type { SizeProp } from '../../lib/types/props.js';
|
|
4
5
|
import type { AnyObject } from '../../lib/utils.js';
|
|
5
6
|
import type { SpinnerProps } from '../Spinner/index.js';
|
|
6
7
|
declare const types: readonly ["mini", "normal", "big"];
|
|
8
|
+
/** @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`.
|
|
9
|
+
* @see {@link SizeProp} */
|
|
7
10
|
export type LoaderType = (typeof types)[number];
|
|
8
11
|
export interface LoaderProps extends CommonProps {
|
|
9
12
|
/** @ignore */
|
|
@@ -12,13 +15,16 @@ export interface LoaderProps extends CommonProps {
|
|
|
12
15
|
* @default false */
|
|
13
16
|
active?: boolean;
|
|
14
17
|
/** Подпись под спиннером.
|
|
15
|
-
* @default
|
|
16
|
-
*/
|
|
18
|
+
* @default "" */
|
|
17
19
|
caption?: SpinnerProps['caption'];
|
|
18
20
|
/** Задает компонент, заменяющий спиннер. */
|
|
19
21
|
component?: React.ReactNode;
|
|
20
22
|
/** Размер спиннера и текста.
|
|
21
|
-
* @default
|
|
23
|
+
* @default small */
|
|
24
|
+
size?: SizeProp;
|
|
25
|
+
/** Размер спиннера и текста.
|
|
26
|
+
* @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу нового `SizeContext`. Они будут удалены в `7.0`.
|
|
27
|
+
* @see {@link size} */
|
|
22
28
|
type?: LoaderType;
|
|
23
29
|
/** Время в миллисекундах для показа вуали без спиннера.
|
|
24
30
|
* @default 300 */
|
|
@@ -38,7 +44,7 @@ export declare const LoaderDataTids: {
|
|
|
38
44
|
readonly veil: "Loader__Veil";
|
|
39
45
|
readonly spinner: "Loader__Spinner";
|
|
40
46
|
};
|
|
41
|
-
type DefaultProps = Required<Pick<LoaderProps, '
|
|
47
|
+
type DefaultProps = Required<Pick<LoaderProps, 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;
|
|
42
48
|
/**
|
|
43
49
|
* С помощью лоадера можно отобразить процесс выполнения задачи.
|
|
44
50
|
* Лоадер принимает в качестве дочернего элемента другой компонент или контент, который будет показан на экране.
|
|
@@ -54,6 +60,7 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
|
|
|
54
60
|
private cx;
|
|
55
61
|
private styles;
|
|
56
62
|
private theme;
|
|
63
|
+
private size;
|
|
57
64
|
getRootNode: TGetRootNode;
|
|
58
65
|
private setRootNode;
|
|
59
66
|
private spinnerContainerNode;
|
|
@@ -77,5 +84,6 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
|
|
|
77
84
|
private enableChildrenFocus;
|
|
78
85
|
private makeObservable;
|
|
79
86
|
private makeUnobservable;
|
|
87
|
+
private typeToSize;
|
|
80
88
|
}
|
|
81
89
|
export {};
|