@skbkontur/react-ui 5.4.3 → 5.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  3. package/cjs/components/DateRangePicker/DateRangePicker.js +24 -1
  4. package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  5. package/cjs/components/DateRangePicker/DateRangePickerInput.js +2 -2
  6. package/cjs/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  7. package/cjs/components/MaskedInput/MaskedInput.d.ts +20 -17
  8. package/cjs/components/MaskedInput/MaskedInput.js +6 -3
  9. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  10. package/cjs/components/MenuItem/MenuItem.styles.js +3 -3
  11. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  12. package/cjs/components/TokenInput/TokenInput.d.ts +13 -4
  13. package/cjs/components/TokenInput/TokenInput.js +63 -28
  14. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  15. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  16. package/cjs/internal/themes/BasicTheme.d.ts +1 -0
  17. package/cjs/internal/themes/BasicTheme.js +2 -1
  18. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  19. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +14 -1
  20. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
  21. package/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  22. package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js +2 -2
  23. package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js.map +1 -1
  24. package/components/MaskedInput/MaskedInput/MaskedInput.js +1 -3
  25. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  26. package/components/MaskedInput/MaskedInput.d.ts +20 -17
  27. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
  28. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  29. package/components/TokenInput/TokenInput/TokenInput.js +77 -48
  30. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  31. package/components/TokenInput/TokenInput.d.ts +13 -4
  32. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  33. package/internal/themes/BasicTheme/BasicTheme.js +1 -0
  34. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  35. package/internal/themes/BasicTheme.d.ts +1 -0
  36. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,31 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.4.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.4.4...@skbkontur/react-ui@5.4.5) (2025-12-03)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **MenuItem:** add menuItemCommentOpacityHover var ([97bcab4](https://github.com/skbkontur/retail-ui/commit/97bcab43f64cdc09cdcccdeff7307e9405872604))
12
+ * **TokenInput:** add onKeyDown prop ([848cb97](https://github.com/skbkontur/retail-ui/commit/848cb9717b4b4f19b48a93fb0dbd2e38e73b832b))
13
+
14
+
15
+
16
+
17
+
18
+ ## [5.4.4](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.4.2...@skbkontur/react-ui@5.4.4) (2025-11-28)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **DateRangePicker:** show picker under input by `menuAnchorElement` on focus ([a0099f3](https://github.com/skbkontur/retail-ui/commit/a0099f30262239f1203e6c9aac910e6a4b304b9f))
24
+ * **Textarea:** baseline alignment ([98e4dc0](https://github.com/skbkontur/retail-ui/commit/98e4dc0575e0c3c6315ea0adedad5f85df7b95d1))
25
+ * **TokenInput:** prevent set hidden items, setting on editing object, fix itemToId prop ([c922996](https://github.com/skbkontur/retail-ui/commit/c922996ed0b27c45e8f3a9876faca6096699b807))
26
+
27
+
28
+
29
+
30
+
6
31
  ## [5.4.3](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.4.2...@skbkontur/react-ui@5.4.3) (2025-11-24)
7
32
 
8
33
 
@@ -18,6 +18,12 @@ export declare const DateRangePickerDataTids: {
18
18
  readonly rangeEnd: "DateRangePicker__rangeEnd";
19
19
  };
20
20
  export interface DateRangePickerProps extends CommonProps, Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>, Pick<DatePickerProps, 'size' | 'width' | 'renderDay' | 'menuPos' | 'menuAlign' | 'useMobileNativeDatePicker' | 'enableTodayLink' | 'onMonthChange'> {
21
+ /**
22
+ * Элемент относительно которого открывается календарь,
23
+ * Если передать значение `focused` - меню будет открываться у зафокусированного элемента.
24
+ * Если передать ссылку на DOM элемент или ref - меню откроется относительно переданного элемента.
25
+ */
26
+ menuAnchorElement?: 'focused' | Element | React.ReactNode | React.RefObject<any>;
21
27
  /**
22
28
  * Элементы DateRangePicker:
23
29
  * `<DateRangePicker.Start />`
@@ -70,6 +70,12 @@ var DayDateAttribute = 'data-date-range-picker-day';
70
70
 
71
71
 
72
72
 
73
+
74
+
75
+
76
+
77
+
78
+
73
79
 
74
80
 
75
81
 
@@ -302,6 +308,23 @@ var DateRangePicker = exports.DateRangePicker = Object.assign(
302
308
  ));};
303
309
 
304
310
 
311
+ var getAnchorElement = function getAnchorElement() {
312
+ var menuAnchorElement = props.menuAnchorElement;
313
+ if (menuAnchorElement === 'focused') {
314
+ return (0, _rootNode.getRootNode)(focusInput === 'start' ? startRef.current : endRef.current);
315
+ }
316
+
317
+ if ( /*#__PURE__*/_react.default.isValidElement(menuAnchorElement)) {
318
+ return menuAnchorElement;
319
+ }
320
+
321
+ if (menuAnchorElement && typeof menuAnchorElement === 'object' && 'current' in menuAnchorElement) {
322
+ return (0, _rootNode.getRootNode)(menuAnchorElement.current);
323
+ }
324
+
325
+ return (0, _rootNode.getRootNode)(startRef.current) || (0, _rootNode.getRootNode)(endRef.current) || (0, _rootNode.getRootNode)(dateRangePickerRef.current);
326
+ };
327
+
305
328
  var renderDesktopCalendar = function renderDesktopCalendar(theme) {return /*#__PURE__*/(
306
329
  _react.default.createElement(_Popup.Popup, {
307
330
  opened: true,
@@ -309,7 +332,7 @@ var DateRangePicker = exports.DateRangePicker = Object.assign(
309
332
  priority: _ZIndex.ZIndex.priorities.PopupMenu,
310
333
  positions: (0, _getMenuPositions.getMenuPositions)(props.menuPos, props.menuAlign),
311
334
  "data-tid": DateRangePickerDataTids.root,
312
- anchorElement: (0, _rootNode.getRootNode)(dateRangePickerRef.current),
335
+ anchorElement: getAnchorElement(),
313
336
  margin: parseInt(theme.datePickerMenuOffsetY) }, /*#__PURE__*/
314
337
 
315
338
  _react.default.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_MobilePopup","_useLocaleForControl","_Emotion","_ThemeContext","_CommonWrapper","_Calendar","_Popup","_DateInput","_comparison","_ZIndex","_rootNode","_getMenuPositions","_Button","_ResponsiveLayout","_InternalDate","_InternalDateGetter","_ArrowAUp16Light","_NativeDateInput","_forwardRefAndName","_locale","_client","_DateRangePicker","_DateRangePickerSeparator","_DateRangePickerContext","_DateRangePickerInput","_DateRangePickerTheme","_locale2","_validateDateRangePicker","_getStateForValue","_templateObject","_templateObject2","DateRangePickerDataTids","exports","root","start","end","popup","calendar","todayButton","startOptionalButton","endOptionalButton","mobileStart","mobileEnd","rangeStart","rangeEnd","DayDateAttribute","DateRangePicker","Object","assign","Start","DateRangePickerStart","End","DateRangePickerEnd","Separator","DateRangePickerSeparator","validate","validateDateRangePicker","forwardRefAndName","props","ref","_useResponsiveLayout","useResponsiveLayout","isMobile","locale","useLocaleForControl","DateRangePickerLocaleHelper","_useState","useState","startValue","setStartValue","_useState2","startOptional","setStartOptional","_useState3","startDisabled","setStartDisabled","_useState4","endValue","setEndValue","_useState5","endOptional","setEndOptional","_useState6","endDisabled","setEndDisabled","_useState7","minDate","setMinDate","_useState8","maxDate","setMaxDate","_useState9","hoveredDay","setHoveredDay","_useState10","showCalendar","setShowCalendar","_useState11","focusInput","setFocusInput","dateRangePickerRef","useRef","calendarRef","startRef","endRef","mobileStartRef","mobileEndRef","mobileNativeStartRef","mobileNativeEndRef","isCalendarOpen","updateDateRangeValues","value","currentValues","currentStart","currentEnd","updatedState","getStateForValue","isOpen","focus","close","open","inputType","setEmpty","type","useImperativeHandle","_calendarRef$current","scrollToMonth","current","getRootNode","useLayoutEffect","setTimeout","_currentFieldRef$curr4","isStart","currentFieldRef","useMobileNativeDatePicker","isIOS","_currentFieldRef$curr","_currentFieldRef$curr2","click","_currentFieldRef$curr3","dateRangePickerContextProps","size","renderCalendar","theme","widthAuto","_cx","default","createElement","LocaleContext","Provider","Calendar","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","renderDay","dayProps","renderCalendarRange","onValueChange","onMonthChange","className","cx","styles","calendarWidthAuto","renderMobileCalendar","_cx2","_cx3","MobilePopup","opened","headerChildComponent","inputWrapperWidthFull","DateInput","withIcon","width","inputVisuallyFocus","disabled","onFocus","onCloseRequest","footerChildComponent","renderButtons","ThemeContext","getMobileDateRangePickerTheme","renderDesktopCalendar","Popup","hasShadow","priority","ZIndex","priorities","PopupMenu","positions","getMenuPositions","menuPos","menuAlign","anchorElement","margin","parseInt","datePickerMenuOffsetY","calendarWrapper","onMouseDown","e","preventDefault","onMouseMove","handleCalendarRangeMouseMove","today","InternalDate","setComponents","InternalDateGetter","getTodayComponents","toString","withPad","withSeparator","hasOptionalButtons","buttonWrap","Fragment","Button","onClick","startDateEmpty","endDateEmpty","enableTodayLink","icon","ArrowAUpIcon16Light","todayAriaLabel","renderMobileNativeDateInput","NativeDateInput","Consumer","getDateRangePickerTheme","DateRangePickerContext","CommonWrapper","inputWrapperWidth","css","_taggedTemplateLiteralLoose2","getFontSize","role","style","children","hoveredElement","target","hasAttribute","date","String","getAttribute","t","renderDayFn","_extends2","_cx4","day","isDayFirst","isDayLast","isDayInPeriod","Boolean","isBetween","hasHoveredDay","isDayInHoveredPeriod","hasLeftRoundings","hasRightRoundings","isDayBeforeFirstInPeriod","isLess","isDayAfterLastInPeriod","isGreater","isGreaterOrEqual","isLessOrEqual","isDayHovered","renderDayProps","_extends3","dataTid","rangeCalendarDay","rangeCalendarCellBg","calendarCellBorderRadius","rangeCalendarDayEnd","rangeCalendarDayHoverInPeriod","rangeCalendarDayInHoveredPeriod","CalendarDay"],"sources":["DateRangePicker.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useLayoutEffect, type AriaAttributes } from 'react';\n\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { css, cx } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { CalendarDayProps } from '../Calendar';\nimport { Calendar, CalendarDay } from '../Calendar';\nimport { Popup } from '../../internal/Popup';\nimport { DateInput } from '../DateInput';\nimport { isBetween, isGreater, isGreaterOrEqual, isLess, isLessOrEqual } from '../../lib/date/comparison';\nimport type { DatePickerProps } from '../DatePicker';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getRootNode } from '../../lib/rootNode';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { Button } from '../Button';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { LocaleContext } from '../../lib/locale';\nimport { isIOS } from '../../lib/client';\n\nimport { getFontSize, styles } from './DateRangePicker.styles';\nimport { DateRangePickerSeparator } from './DateRangePickerSeparator';\nimport type { DateRangePickerContextProps } from './DateRangePickerContext';\nimport { DateRangePickerContext } from './DateRangePickerContext';\nimport type { DateRangePickerInputType } from './DateRangePickerInput';\nimport { DateRangePickerEnd, DateRangePickerStart } from './DateRangePickerInput';\nimport { getDateRangePickerTheme, getMobileDateRangePickerTheme } from './DateRangePickerTheme';\nimport { DateRangePickerLocaleHelper } from './locale';\nimport { validateDateRangePicker } from './helpers/validateDateRangePicker';\nimport { getStateForValue } from './helpers/getStateForValue';\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 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 * Элементы DateRangePicker:\n * `<DateRangePicker.Start />`\n * `<DateRangePicker.Separator />`\n * `<DateRangePicker.End />`\n */\n children: React.ReactNode;\n}\n\nexport const DateRangePicker = Object.assign(\n {\n Start: DateRangePickerStart,\n End: DateRangePickerEnd,\n Separator: DateRangePickerSeparator,\n validate: validateDateRangePicker,\n },\n forwardRefAndName('DateRangePicker', (props: DateRangePickerProps, ref) => {\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: calendarRef.current?.scrollToMonth,\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 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={getRootNode(dateRangePickerRef.current)}\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) | 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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_MobilePopup","_useLocaleForControl","_Emotion","_ThemeContext","_CommonWrapper","_Calendar","_Popup","_DateInput","_comparison","_ZIndex","_rootNode","_getMenuPositions","_Button","_ResponsiveLayout","_InternalDate","_InternalDateGetter","_ArrowAUp16Light","_NativeDateInput","_forwardRefAndName","_locale","_client","_DateRangePicker","_DateRangePickerSeparator","_DateRangePickerContext","_DateRangePickerInput","_DateRangePickerTheme","_locale2","_validateDateRangePicker","_getStateForValue","_templateObject","_templateObject2","DateRangePickerDataTids","exports","root","start","end","popup","calendar","todayButton","startOptionalButton","endOptionalButton","mobileStart","mobileEnd","rangeStart","rangeEnd","DayDateAttribute","DateRangePicker","Object","assign","Start","DateRangePickerStart","End","DateRangePickerEnd","Separator","DateRangePickerSeparator","validate","validateDateRangePicker","forwardRefAndName","props","ref","_useResponsiveLayout","useResponsiveLayout","isMobile","locale","useLocaleForControl","DateRangePickerLocaleHelper","_useState","useState","startValue","setStartValue","_useState2","startOptional","setStartOptional","_useState3","startDisabled","setStartDisabled","_useState4","endValue","setEndValue","_useState5","endOptional","setEndOptional","_useState6","endDisabled","setEndDisabled","_useState7","minDate","setMinDate","_useState8","maxDate","setMaxDate","_useState9","hoveredDay","setHoveredDay","_useState10","showCalendar","setShowCalendar","_useState11","focusInput","setFocusInput","dateRangePickerRef","useRef","calendarRef","startRef","endRef","mobileStartRef","mobileEndRef","mobileNativeStartRef","mobileNativeEndRef","isCalendarOpen","updateDateRangeValues","value","currentValues","currentStart","currentEnd","updatedState","getStateForValue","isOpen","focus","close","open","inputType","setEmpty","type","useImperativeHandle","_calendarRef$current","scrollToMonth","current","getRootNode","useLayoutEffect","setTimeout","_currentFieldRef$curr4","isStart","currentFieldRef","useMobileNativeDatePicker","isIOS","_currentFieldRef$curr","_currentFieldRef$curr2","click","_currentFieldRef$curr3","dateRangePickerContextProps","size","renderCalendar","theme","widthAuto","_cx","default","createElement","LocaleContext","Provider","Calendar","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","renderDay","dayProps","renderCalendarRange","onValueChange","onMonthChange","className","cx","styles","calendarWidthAuto","renderMobileCalendar","_cx2","_cx3","MobilePopup","opened","headerChildComponent","inputWrapperWidthFull","DateInput","withIcon","width","inputVisuallyFocus","disabled","onFocus","onCloseRequest","footerChildComponent","renderButtons","ThemeContext","getMobileDateRangePickerTheme","getAnchorElement","menuAnchorElement","React","isValidElement","renderDesktopCalendar","Popup","hasShadow","priority","ZIndex","priorities","PopupMenu","positions","getMenuPositions","menuPos","menuAlign","anchorElement","margin","parseInt","datePickerMenuOffsetY","calendarWrapper","onMouseDown","e","preventDefault","onMouseMove","handleCalendarRangeMouseMove","today","InternalDate","setComponents","InternalDateGetter","getTodayComponents","toString","withPad","withSeparator","hasOptionalButtons","buttonWrap","Fragment","Button","onClick","startDateEmpty","endDateEmpty","enableTodayLink","icon","ArrowAUpIcon16Light","todayAriaLabel","renderMobileNativeDateInput","NativeDateInput","Consumer","getDateRangePickerTheme","DateRangePickerContext","CommonWrapper","inputWrapperWidth","css","_taggedTemplateLiteralLoose2","getFontSize","role","style","children","hoveredElement","target","hasAttribute","date","String","getAttribute","t","renderDayFn","_extends2","_cx4","day","isDayFirst","isDayLast","isDayInPeriod","Boolean","isBetween","hasHoveredDay","isDayInHoveredPeriod","hasLeftRoundings","hasRightRoundings","isDayBeforeFirstInPeriod","isLess","isDayAfterLastInPeriod","isGreater","isGreaterOrEqual","isLessOrEqual","isDayHovered","renderDayProps","_extends3","dataTid","rangeCalendarDay","rangeCalendarCellBg","calendarCellBorderRadius","rangeCalendarDayEnd","rangeCalendarDayHoverInPeriod","rangeCalendarDayInHoveredPeriod","CalendarDay"],"sources":["DateRangePicker.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useLayoutEffect, type AriaAttributes } from 'react';\n\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { css, cx } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { CalendarDayProps } from '../Calendar';\nimport { Calendar, CalendarDay } from '../Calendar';\nimport { Popup } from '../../internal/Popup';\nimport { DateInput } from '../DateInput';\nimport { isBetween, isGreater, isGreaterOrEqual, isLess, isLessOrEqual } from '../../lib/date/comparison';\nimport type { DatePickerProps } from '../DatePicker';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getRootNode } from '../../lib/rootNode';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { Button } from '../Button';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { LocaleContext } from '../../lib/locale';\nimport { isIOS } from '../../lib/client';\n\nimport { getFontSize, styles } from './DateRangePicker.styles';\nimport { DateRangePickerSeparator } from './DateRangePickerSeparator';\nimport type { DateRangePickerContextProps } from './DateRangePickerContext';\nimport { DateRangePickerContext } from './DateRangePickerContext';\nimport type { DateRangePickerInputType } from './DateRangePickerInput';\nimport { DateRangePickerEnd, DateRangePickerStart } from './DateRangePickerInput';\nimport { getDateRangePickerTheme, getMobileDateRangePickerTheme } from './DateRangePickerTheme';\nimport { DateRangePickerLocaleHelper } from './locale';\nimport { validateDateRangePicker } from './helpers/validateDateRangePicker';\nimport { getStateForValue } from './helpers/getStateForValue';\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 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 const DateRangePicker = Object.assign(\n {\n Start: DateRangePickerStart,\n End: DateRangePickerEnd,\n Separator: DateRangePickerSeparator,\n validate: validateDateRangePicker,\n },\n forwardRefAndName('DateRangePicker', (props: DateRangePickerProps, ref) => {\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: calendarRef.current?.scrollToMonth,\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) | 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"],"mappings":"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","ignoreList":[]}
@@ -127,7 +127,7 @@ var DateRangePickerInput = /*#__PURE__*/(0, _react.forwardRef)(function (props,
127
127
  _react.default.createElement(_DateInput.DateInput, (0, _extends2.default)({},
128
128
  commonProps, {
129
129
  value: props.value || '',
130
- "data-tid": _DateRangePicker.DateRangePickerDataTids.start,
130
+ "data-tid": props['data-tid'] || _DateRangePicker.DateRangePickerDataTids.start,
131
131
  "aria-label": props['aria-label'] || locale.startDateLabel,
132
132
  ref: startRef })
133
133
  ));
@@ -137,7 +137,7 @@ var DateRangePickerInput = /*#__PURE__*/(0, _react.forwardRef)(function (props,
137
137
  _react.default.createElement(_DateInput.DateInput, (0, _extends2.default)({},
138
138
  commonProps, {
139
139
  value: props.value || '',
140
- "data-tid": _DateRangePicker.DateRangePickerDataTids.end,
140
+ "data-tid": props['data-tid'] || _DateRangePicker.DateRangePickerDataTids.end,
141
141
  "aria-label": props['aria-label'] || locale.endDateLabel,
142
142
  ref: endRef })
143
143
  ));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_useLocaleForControl","_DateInput","_ResponsiveLayout","_forwardRefAndName","_utils","_DateRangePickerContext","_DateRangePicker","_locale","DateRangePickerInput","forwardRef","props","ref","_useContext","useContext","DateRangePickerContext","minDate","maxDate","startValue","endValue","size","setStartValue","setStartOptional","setStartDisabled","setEndValue","setEndOptional","setEndDisabled","setMinDate","setMaxDate","setFocusInput","open","close","dateRangePickerRef","startRef","endRef","isStart","type","isEnd","locale","useLocaleForControl","DateRangePickerLocaleHelper","_useResponsiveLayout","useResponsiveLayout","isMobile","useImperativeHandle","current","useEffect","value","optional","disabled","isNonNullable","onValueChange","commonProps","_extends2","default","withIcon","onClick","onFocus","e","onBlur","_dateRangePickerRef$c","nextFocusedElement","relatedTarget","contains","createElement","DateInput","DateRangePickerDataTids","start","startDateLabel","end","endDateLabel","DateRangePickerStart","exports","forwardRefAndName","DateRangePickerEnd"],"sources":["DateRangePickerInput.tsx"],"sourcesContent":["import type { Ref } from 'react';\nimport React, { forwardRef, useContext, useEffect, useImperativeHandle } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport type { DateInputProps } from '../DateInput';\nimport { DateInput } from '../DateInput';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { DateRangePickerContext } from './DateRangePickerContext';\nimport { DateRangePickerDataTids } from './DateRangePicker';\nimport { DateRangePickerLocaleHelper } from './locale';\n\nexport type DateRangePickerInputType = 'start' | 'end';\n\nexport interface DateRangePickerInputProps extends Omit<DateInputProps, 'value'> {\n type: DateRangePickerInputType;\n value?: string | null;\n optional?: boolean;\n}\n\ntype DateRangePickerInputWithoutType = Omit<DateRangePickerInputProps, 'type'>;\n\nconst DateRangePickerInput = forwardRef((props: DateRangePickerInputProps, ref: Ref<DateInput | null>) => {\n const {\n minDate,\n maxDate,\n startValue,\n endValue,\n 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 } = useContext(DateRangePickerContext);\n const isStart = props.type === 'start';\n const isEnd = props.type === 'end';\n const locale = useLocaleForControl('DateRangePicker', DateRangePickerLocaleHelper);\n\n const { isMobile } = useResponsiveLayout();\n\n useImperativeHandle(ref, () => (isStart ? startRef.current : endRef.current), []);\n\n useEffect(() => {\n if (isStart && startValue !== props.value) {\n setStartValue(props.value || '');\n } else if (isEnd && endValue !== props.value) {\n setEndValue(props.value || '');\n }\n }, [props.value]);\n\n useEffect(() => {\n if (isStart) {\n setStartOptional(props.optional || false);\n setStartDisabled(props.disabled || false);\n setMinDate(props.minDate || '');\n } else if (isEnd) {\n setEndOptional(props.optional || false);\n setEndDisabled(props.disabled || false);\n setMaxDate(props.maxDate || '');\n }\n }, [props.optional, props.disabled, props.minDate, props.maxDate]);\n\n useEffect(() => {\n if (isStart && startValue !== props.value && isNonNullable(startValue)) {\n props.onValueChange?.(startValue);\n }\n }, [startValue]);\n\n useEffect(() => {\n if (isEnd && endValue !== props.value && isNonNullable(endValue)) {\n props.onValueChange?.(endValue);\n }\n }, [endValue]);\n\n const commonProps: DateRangePickerInputProps = {\n withIcon: true,\n size,\n minDate,\n maxDate,\n ...props,\n onValueChange: (value) => {\n if (isStart) {\n setStartValue(value || '');\n } else if (isEnd) {\n setEndValue(value || '');\n }\n },\n onClick: () => {\n if (props.disabled) {\n return;\n }\n open(props.type);\n },\n onFocus: (e) => {\n open(props.type);\n props.onFocus?.(e);\n },\n onBlur: (e) => {\n props.onBlur?.(e);\n\n if (isMobile) {\n return;\n }\n const nextFocusedElement = e.relatedTarget;\n if (!dateRangePickerRef.current?.contains(nextFocusedElement)) {\n close();\n }\n setFocusInput(null);\n },\n };\n\n switch (props.type) {\n case 'start':\n return (\n <DateInput\n {...commonProps}\n value={props.value || ''}\n data-tid={DateRangePickerDataTids.start}\n aria-label={props['aria-label'] || locale.startDateLabel}\n ref={startRef}\n />\n );\n case 'end':\n return (\n <DateInput\n {...commonProps}\n value={props.value || ''}\n data-tid={DateRangePickerDataTids.end}\n aria-label={props['aria-label'] || locale.endDateLabel}\n ref={endRef}\n />\n );\n }\n});\n\nexport const DateRangePickerStart = forwardRefAndName(\n 'DateRangePickerStart',\n (props: DateRangePickerInputWithoutType, ref: Ref<DateInput>) => (\n <DateRangePickerInput type=\"start\" {...props} ref={ref} />\n ),\n);\n\nexport const DateRangePickerEnd = forwardRefAndName(\n 'DateRangePickerEnd',\n (props: DateRangePickerInputWithoutType, ref: Ref<DateInput>) => (\n <DateRangePickerInput type=\"end\" {...props} ref={ref} />\n ),\n);\n"],"mappings":";AACA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;;AAEA,IAAAC,oBAAA,GAAAD,OAAA;;AAEA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;;AAEA,IAAAM,uBAAA,GAAAN,OAAA;AACA,IAAAO,gBAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;;;;;;;;;;;;AAYA,IAAMS,oBAAoB,gBAAG,IAAAC,iBAAU,EAAC,UAACC,KAAgC,EAAEC,GAA0B,EAAK;EACxG,IAAAC,WAAA;;;;;;;;;;;;;;;;;;;;IAoBI,IAAAC,iBAAU,EAACC,8CAAsB,CAAC,CAnBpCC,OAAO,GAAAH,WAAA,CAAPG,OAAO,CACPC,OAAO,GAAAJ,WAAA,CAAPI,OAAO,CACPC,UAAU,GAAAL,WAAA,CAAVK,UAAU,CACVC,QAAQ,GAAAN,WAAA,CAARM,QAAQ,CACRC,IAAI,GAAAP,WAAA,CAAJO,IAAI,CACJC,aAAa,GAAAR,WAAA,CAAbQ,aAAa,CACbC,gBAAgB,GAAAT,WAAA,CAAhBS,gBAAgB,CAChBC,gBAAgB,GAAAV,WAAA,CAAhBU,gBAAgB,CAChBC,WAAW,GAAAX,WAAA,CAAXW,WAAW,CACXC,cAAc,GAAAZ,WAAA,CAAdY,cAAc,CACdC,cAAc,GAAAb,WAAA,CAAda,cAAc,CACdC,UAAU,GAAAd,WAAA,CAAVc,UAAU,CACVC,UAAU,GAAAf,WAAA,CAAVe,UAAU,CACVC,aAAa,GAAAhB,WAAA,CAAbgB,aAAa,CACbC,IAAI,GAAAjB,WAAA,CAAJiB,IAAI,CACJC,KAAK,GAAAlB,WAAA,CAALkB,KAAK,CACLC,kBAAkB,GAAAnB,WAAA,CAAlBmB,kBAAkB,CAClBC,QAAQ,GAAApB,WAAA,CAARoB,QAAQ,CACRC,MAAM,GAAArB,WAAA,CAANqB,MAAM;EAER,IAAMC,OAAO,GAAGxB,KAAK,CAACyB,IAAI,KAAK,OAAO;EACtC,IAAMC,KAAK,GAAG1B,KAAK,CAACyB,IAAI,KAAK,KAAK;EAClC,IAAME,MAAM,GAAG,IAAAC,wCAAmB,EAAC,iBAAiB,EAAEC,mCAA2B,CAAC;;EAElF,IAAAC,oBAAA,GAAqB,IAAAC,qCAAmB,EAAC,CAAC,CAAlCC,QAAQ,GAAAF,oBAAA,CAARE,QAAQ;;EAEhB,IAAAC,0BAAmB,EAAChC,GAAG,EAAE,oBAAOuB,OAAO,GAAGF,QAAQ,CAACY,OAAO,GAAGX,MAAM,CAACW,OAAO,EAAC,EAAE,EAAE,CAAC;;EAEjF,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAIX,OAAO,IAAIjB,UAAU,KAAKP,KAAK,CAACoC,KAAK,EAAE;MACzC1B,aAAa,CAACV,KAAK,CAACoC,KAAK,IAAI,EAAE,CAAC;IAClC,CAAC,MAAM,IAAIV,KAAK,IAAIlB,QAAQ,KAAKR,KAAK,CAACoC,KAAK,EAAE;MAC5CvB,WAAW,CAACb,KAAK,CAACoC,KAAK,IAAI,EAAE,CAAC;IAChC;EACF,CAAC,EAAE,CAACpC,KAAK,CAACoC,KAAK,CAAC,CAAC;;EAEjB,IAAAD,gBAAS,EAAC,YAAM;IACd,IAAIX,OAAO,EAAE;MACXb,gBAAgB,CAACX,KAAK,CAACqC,QAAQ,IAAI,KAAK,CAAC;MACzCzB,gBAAgB,CAACZ,KAAK,CAACsC,QAAQ,IAAI,KAAK,CAAC;MACzCtB,UAAU,CAAChB,KAAK,CAACK,OAAO,IAAI,EAAE,CAAC;IACjC,CAAC,MAAM,IAAIqB,KAAK,EAAE;MAChBZ,cAAc,CAACd,KAAK,CAACqC,QAAQ,IAAI,KAAK,CAAC;MACvCtB,cAAc,CAACf,KAAK,CAACsC,QAAQ,IAAI,KAAK,CAAC;MACvCrB,UAAU,CAACjB,KAAK,CAACM,OAAO,IAAI,EAAE,CAAC;IACjC;EACF,CAAC,EAAE,CAACN,KAAK,CAACqC,QAAQ,EAAErC,KAAK,CAACsC,QAAQ,EAAEtC,KAAK,CAACK,OAAO,EAAEL,KAAK,CAACM,OAAO,CAAC,CAAC;;EAElE,IAAA6B,gBAAS,EAAC,YAAM;IACd,IAAIX,OAAO,IAAIjB,UAAU,KAAKP,KAAK,CAACoC,KAAK,IAAI,IAAAG,oBAAa,EAAChC,UAAU,CAAC,EAAE;MACtEP,KAAK,CAACwC,aAAa,YAAnBxC,KAAK,CAACwC,aAAa,CAAGjC,UAAU,CAAC;IACnC;EACF,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;;EAEhB,IAAA4B,gBAAS,EAAC,YAAM;IACd,IAAIT,KAAK,IAAIlB,QAAQ,KAAKR,KAAK,CAACoC,KAAK,IAAI,IAAAG,oBAAa,EAAC/B,QAAQ,CAAC,EAAE;MAChER,KAAK,CAACwC,aAAa,YAAnBxC,KAAK,CAACwC,aAAa,CAAGhC,QAAQ,CAAC;IACjC;EACF,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;;EAEd,IAAMiC,WAAsC,OAAAC,SAAA,CAAAC,OAAA;IAC1CC,QAAQ,EAAE,IAAI;IACdnC,IAAI,EAAJA,IAAI;IACJJ,OAAO,EAAPA,OAAO;IACPC,OAAO,EAAPA,OAAO;EACJN,KAAK;IACRwC,aAAa,EAAE,SAAAA,cAACJ,KAAK,EAAK;MACxB,IAAIZ,OAAO,EAAE;QACXd,aAAa,CAAC0B,KAAK,IAAI,EAAE,CAAC;MAC5B,CAAC,MAAM,IAAIV,KAAK,EAAE;QAChBb,WAAW,CAACuB,KAAK,IAAI,EAAE,CAAC;MAC1B;IACF,CAAC;IACDS,OAAO,EAAE,SAAAA,QAAA,EAAM;MACb,IAAI7C,KAAK,CAACsC,QAAQ,EAAE;QAClB;MACF;MACAnB,IAAI,CAACnB,KAAK,CAACyB,IAAI,CAAC;IAClB,CAAC;IACDqB,OAAO,EAAE,SAAAA,QAACC,CAAC,EAAK;MACd5B,IAAI,CAACnB,KAAK,CAACyB,IAAI,CAAC;MAChBzB,KAAK,CAAC8C,OAAO,YAAb9C,KAAK,CAAC8C,OAAO,CAAGC,CAAC,CAAC;IACpB,CAAC;IACDC,MAAM,EAAE,SAAAA,OAACD,CAAC,EAAK,KAAAE,qBAAA;MACbjD,KAAK,CAACgD,MAAM,YAAZhD,KAAK,CAACgD,MAAM,CAAGD,CAAC,CAAC;;MAEjB,IAAIf,QAAQ,EAAE;QACZ;MACF;MACA,IAAMkB,kBAAkB,GAAGH,CAAC,CAACI,aAAa;MAC1C,IAAI,GAAAF,qBAAA,GAAC5B,kBAAkB,CAACa,OAAO,aAA1Be,qBAAA,CAA4BG,QAAQ,CAACF,kBAAkB,CAAC,GAAE;QAC7D9B,KAAK,CAAC,CAAC;MACT;MACAF,aAAa,CAAC,IAAI,CAAC;IACrB,CAAC,GACF;;;EAED,QAAQlB,KAAK,CAACyB,IAAI;IAChB,KAAK,OAAO;MACV;QACEtC,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAAC9D,UAAA,CAAA+D,SAAS,MAAAZ,SAAA,CAAAC,OAAA;QACJF,WAAW;UACfL,KAAK,EAAEpC,KAAK,CAACoC,KAAK,IAAI,EAAG;UACzB,YAAUmB,wCAAuB,CAACC,KAAM;UACxC,cAAYxD,KAAK,CAAC,YAAY,CAAC,IAAI2B,MAAM,CAAC8B,cAAe;UACzDxD,GAAG,EAAEqB,QAAS;QACf,CAAC;;IAEN,KAAK,KAAK;MACR;QACEnC,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAAC9D,UAAA,CAAA+D,SAAS,MAAAZ,SAAA,CAAAC,OAAA;QACJF,WAAW;UACfL,KAAK,EAAEpC,KAAK,CAACoC,KAAK,IAAI,EAAG;UACzB,YAAUmB,wCAAuB,CAACG,GAAI;UACtC,cAAY1D,KAAK,CAAC,YAAY,CAAC,IAAI2B,MAAM,CAACgC,YAAa;UACvD1D,GAAG,EAAEsB,MAAO;QACb,CAAC;;EAER;AACF,CAAC,CAAC;;AAEK,IAAMqC,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,IAAAE,oCAAiB;EACnD,sBAAsB;EACtB,UAAC9D,KAAsC,EAAEC,GAAmB;MAC1Dd,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACvD,oBAAoB,MAAA4C,SAAA,CAAAC,OAAA,IAAClB,IAAI,EAAC,OAAO,IAAKzB,KAAK,IAAEC,GAAG,EAAEA,GAAI,GAAE,CAAC;;AAE9D,CAAC;;AAEM,IAAM8D,kBAAkB,GAAAF,OAAA,CAAAE,kBAAA,GAAG,IAAAD,oCAAiB;EACjD,oBAAoB;EACpB,UAAC9D,KAAsC,EAAEC,GAAmB;MAC1Dd,MAAA,CAAAwD,OAAA,CAAAU,aAAA,CAACvD,oBAAoB,MAAA4C,SAAA,CAAAC,OAAA,IAAClB,IAAI,EAAC,KAAK,IAAKzB,KAAK,IAAEC,GAAG,EAAEA,GAAI,GAAE,CAAC;;AAE5D,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_useLocaleForControl","_DateInput","_ResponsiveLayout","_forwardRefAndName","_utils","_DateRangePickerContext","_DateRangePicker","_locale","DateRangePickerInput","forwardRef","props","ref","_useContext","useContext","DateRangePickerContext","minDate","maxDate","startValue","endValue","size","setStartValue","setStartOptional","setStartDisabled","setEndValue","setEndOptional","setEndDisabled","setMinDate","setMaxDate","setFocusInput","open","close","dateRangePickerRef","startRef","endRef","isStart","type","isEnd","locale","useLocaleForControl","DateRangePickerLocaleHelper","_useResponsiveLayout","useResponsiveLayout","isMobile","useImperativeHandle","current","useEffect","value","optional","disabled","isNonNullable","onValueChange","commonProps","_extends2","default","withIcon","onClick","onFocus","e","onBlur","_dateRangePickerRef$c","nextFocusedElement","relatedTarget","contains","createElement","DateInput","DateRangePickerDataTids","start","startDateLabel","end","endDateLabel","DateRangePickerStart","exports","forwardRefAndName","DateRangePickerEnd"],"sources":["DateRangePickerInput.tsx"],"sourcesContent":["import type { Ref } from 'react';\nimport React, { forwardRef, useContext, useEffect, useImperativeHandle } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport type { DateInputProps } from '../DateInput';\nimport { DateInput } from '../DateInput';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { DateRangePickerContext } from './DateRangePickerContext';\nimport { DateRangePickerDataTids } from './DateRangePicker';\nimport { DateRangePickerLocaleHelper } from './locale';\n\nexport type DateRangePickerInputType = 'start' | 'end';\n\nexport interface DateRangePickerInputProps extends Omit<DateInputProps, 'value'> {\n type: DateRangePickerInputType;\n value?: string | null;\n optional?: boolean;\n}\n\ntype DateRangePickerInputWithoutType = Omit<DateRangePickerInputProps, 'type'>;\n\nconst DateRangePickerInput = forwardRef((props: DateRangePickerInputProps, ref: Ref<DateInput | null>) => {\n const {\n minDate,\n maxDate,\n startValue,\n endValue,\n 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 } = useContext(DateRangePickerContext);\n const isStart = props.type === 'start';\n const isEnd = props.type === 'end';\n const locale = useLocaleForControl('DateRangePicker', DateRangePickerLocaleHelper);\n\n const { isMobile } = useResponsiveLayout();\n\n useImperativeHandle(ref, () => (isStart ? startRef.current : endRef.current), []);\n\n useEffect(() => {\n if (isStart && startValue !== props.value) {\n setStartValue(props.value || '');\n } else if (isEnd && endValue !== props.value) {\n setEndValue(props.value || '');\n }\n }, [props.value]);\n\n useEffect(() => {\n if (isStart) {\n setStartOptional(props.optional || false);\n setStartDisabled(props.disabled || false);\n setMinDate(props.minDate || '');\n } else if (isEnd) {\n setEndOptional(props.optional || false);\n setEndDisabled(props.disabled || false);\n setMaxDate(props.maxDate || '');\n }\n }, [props.optional, props.disabled, props.minDate, props.maxDate]);\n\n useEffect(() => {\n if (isStart && startValue !== props.value && isNonNullable(startValue)) {\n props.onValueChange?.(startValue);\n }\n }, [startValue]);\n\n useEffect(() => {\n if (isEnd && endValue !== props.value && isNonNullable(endValue)) {\n props.onValueChange?.(endValue);\n }\n }, [endValue]);\n\n const commonProps: DateRangePickerInputProps = {\n withIcon: true,\n size,\n minDate,\n maxDate,\n ...props,\n onValueChange: (value) => {\n if (isStart) {\n setStartValue(value || '');\n } else if (isEnd) {\n setEndValue(value || '');\n }\n },\n onClick: () => {\n if (props.disabled) {\n return;\n }\n open(props.type);\n },\n onFocus: (e) => {\n open(props.type);\n props.onFocus?.(e);\n },\n onBlur: (e) => {\n props.onBlur?.(e);\n\n if (isMobile) {\n return;\n }\n const nextFocusedElement = e.relatedTarget;\n if (!dateRangePickerRef.current?.contains(nextFocusedElement)) {\n close();\n }\n setFocusInput(null);\n },\n };\n\n switch (props.type) {\n case 'start':\n return (\n <DateInput\n {...commonProps}\n value={props.value || ''}\n data-tid={props['data-tid'] || DateRangePickerDataTids.start}\n aria-label={props['aria-label'] || locale.startDateLabel}\n ref={startRef}\n />\n );\n case 'end':\n return (\n <DateInput\n {...commonProps}\n value={props.value || ''}\n data-tid={props['data-tid'] || DateRangePickerDataTids.end}\n aria-label={props['aria-label'] || locale.endDateLabel}\n ref={endRef}\n />\n );\n }\n});\n\nexport const DateRangePickerStart = forwardRefAndName(\n 'DateRangePickerStart',\n (props: DateRangePickerInputWithoutType, ref: Ref<DateInput>) => (\n <DateRangePickerInput type=\"start\" {...props} ref={ref} />\n ),\n);\n\nexport const DateRangePickerEnd = forwardRefAndName(\n 'DateRangePickerEnd',\n (props: DateRangePickerInputWithoutType, ref: Ref<DateInput>) => (\n <DateRangePickerInput type=\"end\" {...props} ref={ref} />\n ),\n);\n"],"mappings":"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","ignoreList":[]}
@@ -3,33 +3,38 @@ import type { InputProps, InputType } from '../Input';
3
3
  import { Input } from '../Input';
4
4
  export type MaskedInputOnBeforePasteValue = (value: string) => string;
5
5
  export interface MaskedProps {
6
- /** Паттерн маски */
6
+ /** Шаблон ввода, определяющий допустимые символы. */
7
7
  mask: string;
8
- /** Устанавливает символ маски
8
+ /** Плейсхолдер, который отображается на месте ещё не введённых пользователем символов.
9
9
  * @default _ */
10
10
  maskChar?: string;
11
- /** Задает словарь символов-регулярок для задания маски.
11
+ /** Словарь правил для настройки маски, где
12
+ * Ключ — символ для использования в маске
13
+ * Значение — регулярка-правило
12
14
  * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */
13
15
  formatChars?: Record<string, string>;
14
- /** Включает показ символов маски.
16
+ /** Всегда показывать символы маски, независимо от фокуса в поле.
15
17
  * @default false */
16
18
  alwaysShowMask?: boolean;
17
- /** Задает обработчик неправильного ввода.
18
- * Вторым агрументом будет передан метод вспыхивания акцентным цветом.
19
+ /** Событие некорректного ввода.
20
+ * Вторым аргументом передаётся метод вспыхивания рамки поля.
19
21
  *
20
- * Если обработчик не задан, то инпут вспыхивает по-умолчанию.
21
- * @param value значение инпута.
22
- * @param blink вспыхнуть акцентным цвтетом.
22
+ * Если обработчик не задан, то при событии рамка всегда вспыхивает.
23
+ *
24
+ * @param value значение поля
25
+ * @param blink метод вспыхивания рамки поля
23
26
  */
24
27
  onUnexpectedInput?: (value: string, blink: () => void) => void;
25
- /** Задает обработчик вставки значения в инпут.
26
- * В value будет передано значение из буфера обмена.
27
- * Возвращаемое значение будет использовано как значение инпута.
28
- * Используется для фильтрации значения при вставке из буфера обмена.
28
+ /**
29
+ * Событие перед вставкой текста в поле.
30
+ * Вызывается с аргументом value текст из буфера.
31
+ *
32
+ * Обработчик должен вернуть текст — он попадёт в поле.
33
+ *
29
34
  * @param value значение вставки.
30
35
  */
31
36
  onBeforePasteValue?: MaskedInputOnBeforePasteValue;
32
- /** Убирает из value символы, не введённые пользователем
37
+ /** Убирает из value символы маски, которые пользователь не вводил.
33
38
  * @default false */
34
39
  unmask?: boolean;
35
40
  /** Раскрашивает символы маски.
@@ -45,8 +50,6 @@ export declare const getSafeMaskInputType: (type?: InputType) => MaskInputType |
45
50
  export interface MaskedInputProps extends MaskedProps, Omit<InputProps, 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'> {
46
51
  type?: MaskInputType;
47
52
  }
48
- /**
49
- * Интерфейс пропсов наследуется от `Input`.
50
- * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.
53
+ /** Поле ввода, которое ограничивает формат вводимого значения по заданной маске. Такое поле облегчает пользователю ввод и снижает количество ошибок.
51
54
  */
52
55
  export declare const MaskedInput: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<Input, MaskedInputProps> & Record<never, never>;
@@ -59,6 +59,11 @@ var _FixedIMaskInput = require("./FixedIMaskInput");var _excluded = ["mask", "ma
59
59
 
60
60
 
61
61
 
62
+
63
+
64
+
65
+
66
+
62
67
 
63
68
 
64
69
 
@@ -90,9 +95,7 @@ var getSafeMaskInputType = exports.getSafeMaskInputType = function getSafeMaskIn
90
95
 
91
96
 
92
97
 
93
- /**
94
- * Интерфейс пропсов наследуется от `Input`.
95
- * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.
98
+ /** Поле ввода, которое ограничивает формат вводимого значения по заданной маске. Такое поле облегчает пользователю ввод и снижает количество ошибок.
96
99
  */
97
100
  var MaskedInput = exports.MaskedInput = (0, _forwardRefAndName.forwardRefAndName)(
98
101
  'MaskedInput',
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_forwardRefAndName","_Emotion","_Input","_identifiers","_ThemeContext","_MaskedInput","_MaskedInput2","_ColorableInputElement","_FixedIMaskInput","_excluded","getSafeMaskInputType","exports","type","MaskedInput","forwardRefAndName","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","onBeforePasteValue","element","className","maxLength","inputProps","_objectWithoutPropertiesLoose2","default","theme","useContext","ThemeContext","inputRef","useRef","_useState","useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","useImperativeHandle","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","useEffect","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","Input","_extends2","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","onPaste","handlePaste","cx","globalClasses","root","styles","ColorableInputElement","showOnFocus","FixedIMaskInput","onAccept","handleAccept","event","_event$clipboardData$","_event$clipboardData","preventDefault","clipboardData","getData","replace","placeholderChar","getMaskChar","definitions","getDefinitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd","isKeyBackspace","isKeyDelete"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport type MaskedInputOnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Задает обработчик вставки значения в инпут.\n * В value будет передано значение из буфера обмена.\n * Возвращаемое значение будет использовано как значение инпута.\n * Используется для фильтрации значения при вставке из буфера обмена.\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputOnBeforePasteValue;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false} alwaysShowMask={alwaysShowMask}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function handlePaste(event: React.ClipboardEvent<HTMLInputElement>) {\n if (onBeforePasteValue && onValueChange) {\n event.preventDefault();\n onValueChange?.(onBeforePasteValue(event.clipboardData?.getData('text') ?? ''));\n }\n\n props.onPaste?.(event);\n }\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_forwardRefAndName","_Emotion","_Input","_identifiers","_ThemeContext","_MaskedInput","_MaskedInput2","_ColorableInputElement","_FixedIMaskInput","_excluded","getSafeMaskInputType","exports","type","MaskedInput","forwardRefAndName","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","onBeforePasteValue","element","className","maxLength","inputProps","_objectWithoutPropertiesLoose2","default","theme","useContext","ThemeContext","inputRef","useRef","_useState","useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","useImperativeHandle","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","useEffect","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","Input","_extends2","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","onPaste","handlePaste","cx","globalClasses","root","styles","ColorableInputElement","showOnFocus","FixedIMaskInput","onAccept","handleAccept","event","_event$clipboardData$","_event$clipboardData","preventDefault","clipboardData","getData","replace","placeholderChar","getMaskChar","definitions","getDefinitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd","isKeyBackspace","isKeyDelete"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport type MaskedInputOnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedProps {\n /** Шаблон ввода, определяющий допустимые символы. */\n mask: string;\n\n /** Плейсхолдер, который отображается на месте ещё не введённых пользователем символов.\n * @default _ */\n maskChar?: string;\n\n /** Словарь правил для настройки маски, где\n * Ключ — символ для использования в маске\n * Значение — регулярка-правило\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Всегда показывать символы маски, независимо от фокуса в поле.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Событие некорректного ввода.\n * Вторым аргументом передаётся метод вспыхивания рамки поля.\n *\n * Если обработчик не задан, то при событии рамка всегда вспыхивает.\n *\n * @param value значение поля\n * @param blink метод вспыхивания рамки поля\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /**\n * Событие перед вставкой текста в поле.\n * Вызывается с аргументом value — текст из буфера.\n *\n * Обработчик должен вернуть текст — он попадёт в поле.\n *\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputOnBeforePasteValue;\n\n /** Убирает из value символы маски, которые пользователь не вводил.\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/** Поле ввода, которое ограничивает формат вводимого значения по заданной маске. Такое поле облегчает пользователю ввод и снижает количество ошибок.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false} alwaysShowMask={alwaysShowMask}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function handlePaste(event: React.ClipboardEvent<HTMLInputElement>) {\n if (onBeforePasteValue && onValueChange) {\n event.preventDefault();\n onValueChange?.(onBeforePasteValue(event.clipboardData?.getData('text') ?? ''));\n }\n\n props.onPaste?.(event);\n }\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
@@ -133,9 +133,9 @@ var styles = exports.styles = (0, _Emotion.memoizeStyle)({
133
133
 
134
134
  },
135
135
  commentHover: function commentHover(t) {
136
- return (0, _Emotion.css)(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n opacity: 0.6;\n "])),
137
- t.menuItemCommentColorHover);
138
-
136
+ return (0, _Emotion.css)(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n opacity: ", ";\n "])),
137
+ t.menuItemCommentColorHover,
138
+ t.menuItemCommentOpacityHover);
139
139
 
140
140
  },
141
141
  icon: function icon() {