@skbkontur/react-ui 5.1.6 → 5.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/cjs/components/Calendar/CalendarDay.js +18 -2
- package/cjs/components/Calendar/CalendarDay.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.js +7 -15
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
- package/cjs/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
- package/cjs/components/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.js +19 -15
- package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js +13 -18
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
- package/cjs/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
- package/cjs/components/Link/__creevey__/Link.creevey.mts +2 -2
- package/cjs/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
- package/cjs/components/Select/Select.d.ts +3 -0
- package/cjs/components/Select/Select.js +4 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
- package/cjs/internal/DateSelect/DateSelect.js +13 -2
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/lib/getMenuPositions.d.ts +21 -1
- package/cjs/lib/getMenuPositions.js +45 -8
- package/cjs/lib/getMenuPositions.js.map +1 -1
- package/components/Calendar/CalendarDay/CalendarDay.js +9 -2
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
- package/components/Calendar/DayCellView/DayCellView.js +6 -10
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
- package/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +10 -11
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js +12 -15
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
- package/components/Link/__creevey__/Link.creevey.mts +2 -2
- package/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
- package/components/Select/Select/Select.js +3 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +3 -0
- package/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
- package/internal/DateSelect/DateSelect/DateSelect.js +2 -0
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/lib/getMenuPositions/getMenuPositions.js +33 -4
- package/lib/getMenuPositions/getMenuPositions.js.map +1 -1
- package/lib/getMenuPositions.d.ts +21 -1
- package/package.json +2 -2
|
@@ -1,2 +1,22 @@
|
|
|
1
1
|
import type { PopupPositionsType } from '../internal/Popup';
|
|
2
|
-
|
|
2
|
+
declare const MENU_POSITIONS: {
|
|
3
|
+
readonly TOP: "top";
|
|
4
|
+
readonly MIDDLE: "middle";
|
|
5
|
+
readonly BOTTOM: "bottom";
|
|
6
|
+
};
|
|
7
|
+
declare const MENU_ALIGNMENTS: {
|
|
8
|
+
readonly LEFT: "left";
|
|
9
|
+
readonly RIGHT: "right";
|
|
10
|
+
};
|
|
11
|
+
type MenuPosition = (typeof MENU_POSITIONS)[keyof typeof MENU_POSITIONS];
|
|
12
|
+
type MenuAlignment = (typeof MENU_ALIGNMENTS)[keyof typeof MENU_ALIGNMENTS];
|
|
13
|
+
/**
|
|
14
|
+
* Генерирует массив позиций попапа на основе позиции и выравнивания меню
|
|
15
|
+
*
|
|
16
|
+
* @param menuPos - Позиция меню ('top', 'middle', 'bottom')
|
|
17
|
+
* @param menuAlign - Выравнивание меню ('left', 'right')
|
|
18
|
+
* @returns Массив позиций попапа в порядке приоритета
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export declare function getMenuPositions(menuPos?: MenuPosition, menuAlign?: MenuAlignment): PopupPositionsType[];
|
|
22
|
+
export {};
|
|
@@ -1,15 +1,52 @@
|
|
|
1
1
|
"use strict";exports.__esModule = true;exports.getMenuPositions = getMenuPositions;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
var MENU_POSITIONS = {
|
|
4
|
+
TOP: 'top',
|
|
5
|
+
MIDDLE: 'middle',
|
|
6
|
+
BOTTOM: 'bottom'
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
var MENU_ALIGNMENTS = {
|
|
10
|
+
LEFT: 'left',
|
|
11
|
+
RIGHT: 'right'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
var POPUP_POSITIONS = {
|
|
15
|
+
TOP_LEFT: 'top left',
|
|
16
|
+
TOP_RIGHT: 'top right',
|
|
17
|
+
BOTTOM_LEFT: 'bottom left',
|
|
18
|
+
BOTTOM_RIGHT: 'bottom right',
|
|
19
|
+
MIDDLE_LEFT: 'middle left',
|
|
20
|
+
MIDDLE_RIGHT: 'middle right'
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Генерирует массив позиций попапа на основе позиции и выравнивания меню
|
|
28
|
+
*
|
|
29
|
+
* @param menuPos - Позиция меню ('top', 'middle', 'bottom')
|
|
30
|
+
* @param menuAlign - Выравнивание меню ('left', 'right')
|
|
31
|
+
* @returns Массив позиций попапа в порядке приоритета
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
function getMenuPositions(menuPos, menuAlign) {
|
|
35
|
+
if (menuPos === undefined && menuAlign === undefined) {
|
|
36
|
+
return [
|
|
37
|
+
POPUP_POSITIONS.BOTTOM_LEFT,
|
|
38
|
+
POPUP_POSITIONS.TOP_LEFT,
|
|
39
|
+
POPUP_POSITIONS.BOTTOM_RIGHT,
|
|
40
|
+
POPUP_POSITIONS.TOP_RIGHT];
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (menuPos !== undefined && menuAlign === undefined) {
|
|
45
|
+
return [menuPos + " " + MENU_ALIGNMENTS.LEFT, menuPos + " " + MENU_ALIGNMENTS.RIGHT];
|
|
9
46
|
}
|
|
10
47
|
|
|
11
|
-
if (menuPos === undefined) {
|
|
12
|
-
return ["
|
|
48
|
+
if (menuPos === undefined && menuAlign !== undefined) {
|
|
49
|
+
return [MENU_POSITIONS.BOTTOM + " " + menuAlign, MENU_POSITIONS.TOP + " " + menuAlign];
|
|
13
50
|
}
|
|
14
51
|
|
|
15
52
|
return [menuPos + " " + menuAlign];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getMenuPositions","menuPos","menuAlign","undefined"],"sources":["getMenuPositions.ts"],"sourcesContent":["import type { PopupPositionsType } from '../internal/Popup';\n\
|
|
1
|
+
{"version":3,"names":["MENU_POSITIONS","TOP","MIDDLE","BOTTOM","MENU_ALIGNMENTS","LEFT","RIGHT","POPUP_POSITIONS","TOP_LEFT","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","MIDDLE_LEFT","MIDDLE_RIGHT","getMenuPositions","menuPos","menuAlign","undefined"],"sources":["getMenuPositions.ts"],"sourcesContent":["import type { PopupPositionsType } from '../internal/Popup';\n\nconst MENU_POSITIONS = {\n TOP: 'top',\n MIDDLE: 'middle',\n BOTTOM: 'bottom',\n} as const;\n\nconst MENU_ALIGNMENTS = {\n LEFT: 'left',\n RIGHT: 'right',\n} as const;\n\nconst POPUP_POSITIONS = {\n TOP_LEFT: 'top left',\n TOP_RIGHT: 'top right',\n BOTTOM_LEFT: 'bottom left',\n BOTTOM_RIGHT: 'bottom right',\n MIDDLE_LEFT: 'middle left',\n MIDDLE_RIGHT: 'middle right',\n} as const;\n\ntype MenuPosition = (typeof MENU_POSITIONS)[keyof typeof MENU_POSITIONS];\ntype MenuAlignment = (typeof MENU_ALIGNMENTS)[keyof typeof MENU_ALIGNMENTS];\n\n/**\n * Генерирует массив позиций попапа на основе позиции и выравнивания меню\n *\n * @param menuPos - Позиция меню ('top', 'middle', 'bottom')\n * @param menuAlign - Выравнивание меню ('left', 'right')\n * @returns Массив позиций попапа в порядке приоритета\n *\n */\nexport function getMenuPositions(menuPos?: MenuPosition, menuAlign?: MenuAlignment): PopupPositionsType[] {\n if (menuPos === undefined && menuAlign === undefined) {\n return [\n POPUP_POSITIONS.BOTTOM_LEFT,\n POPUP_POSITIONS.TOP_LEFT,\n POPUP_POSITIONS.BOTTOM_RIGHT,\n POPUP_POSITIONS.TOP_RIGHT,\n ];\n }\n\n if (menuPos !== undefined && menuAlign === undefined) {\n return [`${menuPos} ${MENU_ALIGNMENTS.LEFT}`, `${menuPos} ${MENU_ALIGNMENTS.RIGHT}`];\n }\n\n if (menuPos === undefined && menuAlign !== undefined) {\n return [`${MENU_POSITIONS.BOTTOM} ${menuAlign}`, `${MENU_POSITIONS.TOP} ${menuAlign}`];\n }\n\n return [`${menuPos} ${menuAlign}`];\n}\n"],"mappings":";;AAEA,IAAMA,cAAc,GAAG;EACrBC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE;AACV,CAAU;;AAEV,IAAMC,eAAe,GAAG;EACtBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE;AACT,CAAU;;AAEV,IAAMC,eAAe,GAAG;EACtBC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE,WAAW;EACtBC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE,cAAc;EAC5BC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE;AAChB,CAAU;;;;;AAKV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAACC,OAAsB,EAAEC,SAAyB,EAAwB;EACxG,IAAID,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO;IACLV,eAAe,CAACG,WAAW;IAC3BH,eAAe,CAACC,QAAQ;IACxBD,eAAe,CAACI,YAAY;IAC5BJ,eAAe,CAACE,SAAS,CAC1B;;EACH;;EAEA,IAAIM,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO,CAAIF,OAAO,SAAIX,eAAe,CAACC,IAAI,EAAOU,OAAO,SAAIX,eAAe,CAACE,KAAK,CAAG;EACtF;;EAEA,IAAIS,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO,CAAIjB,cAAc,CAACG,MAAM,SAAIa,SAAS,EAAOhB,cAAc,CAACC,GAAG,SAAIe,SAAS,CAAG;EACxF;;EAEA,OAAO,CAAID,OAAO,SAAIC,SAAS,CAAG;AACpC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["isToday", "isSelected", "isDisabled", "isWeekend", "date", "children", "className"];
|
|
4
|
-
import React, { useContext, memo } from 'react';
|
|
3
|
+
var _excluded = ["isToday", "isSelected", "isDisabled", "isWeekend", "date", "onDayClick", "onClick", "children", "className"];
|
|
4
|
+
import React, { useContext, memo, useCallback } from 'react';
|
|
5
5
|
import { useLocaleForControl } from "../../../lib/locale/useLocaleForControl";
|
|
6
6
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
7
7
|
import { cx } from "../../../lib/theming/Emotion";
|
|
@@ -25,6 +25,8 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
25
25
|
isDisabled = _ref.isDisabled,
|
|
26
26
|
isWeekend = _ref.isWeekend,
|
|
27
27
|
date = _ref.date,
|
|
28
|
+
onDayClick = _ref.onDayClick,
|
|
29
|
+
onClick = _ref.onClick,
|
|
28
30
|
children = _ref.children,
|
|
29
31
|
className = _ref.className,
|
|
30
32
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
@@ -37,6 +39,10 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
37
39
|
});
|
|
38
40
|
var locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);
|
|
39
41
|
var ariaLabel = locale.dayCellChooseDateAriaLabel + ": " + internalDate.toA11YFormat();
|
|
42
|
+
var handleClick = useCallback(function (e) {
|
|
43
|
+
onDayClick();
|
|
44
|
+
onClick == null || onClick(e);
|
|
45
|
+
}, [onDayClick, onClick]);
|
|
40
46
|
var _internalDate$getComp = internalDate.getComponentsLikeNumber(),
|
|
41
47
|
day = _internalDate$getComp.date;
|
|
42
48
|
var caption = children != null ? children : day;
|
|
@@ -47,6 +53,7 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
47
53
|
"aria-label": ariaLabel,
|
|
48
54
|
tabIndex: -1,
|
|
49
55
|
disabled: isDisabled,
|
|
56
|
+
onClick: handleClick,
|
|
50
57
|
className: cx((_cx = {}, _cx[styles.day(theme)] = true, _cx[styles.selected(theme)] = isSelected, _cx[styles.weekend(theme)] = isWeekend, _cx), className)
|
|
51
58
|
}, getVisualStateDataAttributes({
|
|
52
59
|
selected: isSelected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","memo","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","selected","weekend","todayCaption"],"sources":["CalendarDay.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useContext, memo } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { LocaleContext } from '../../lib/locale';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarDataTids } from './Calendar';\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\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 children,\n className,\n ...rest\n }: PropsWithChildren<CalendarDayProps>,\n ref: React.Ref<HTMLButtonElement>,\n ) {\n const theme = useContext(ThemeContext);\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 { 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 className={cx(\n {\n [styles.day(theme)]: true,\n [styles.selected(theme)]: isSelected,\n [styles.weekend(theme)]: isWeekend,\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"],"mappings":";AACA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,IAAI,QAAQ,OAAO;;
|
|
1
|
+
{"version":3,"names":["React","useContext","memo","useCallback","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","onDayClick","onClick","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","handleClick","e","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","selected","weekend","todayCaption"],"sources":["CalendarDay.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useContext, memo, useCallback } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { LocaleContext } from '../../lib/locale';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarDataTids } from './Calendar';\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\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.selected(theme)]: isSelected,\n [styles.weekend(theme)]: isWeekend,\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"],"mappings":";AACA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,IAAI,EAAEC,WAAW,QAAQ,OAAO;;AAE5D,SAASC,mBAAmB,QAAQ,sCAAsC;AAC1E,SAASC,YAAY,QAAQ,gCAAgC;AAC7D,SAASC,EAAE,QAAQ,2BAA2B;AAC9C,SAASC,sBAAsB,QAAQ,sBAAsB;AAC7D,SAASC,YAAY,QAAQ,6BAA6B;AAC1D,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,4BAA4B,QAAQ,iEAAiE;AAC9G,SAASC,iBAAiB,QAAQ,6BAA6B;;AAE/D,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,gBAAgB,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;AAwB7C;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW,gBAAGZ,IAAI;EAC7BS,iBAAiB;IACf,aAAa;IACb,SAASG,WAAWA,CAAAC,IAAA;;;;;;;;;;;;;IAalBC,GAAiC;IACjC,KAAAC,GAAA,EAAAC,IAAA,KAZEC,OAAO,GAAAJ,IAAA,CAAPI,OAAO,CACPC,UAAU,GAAAL,IAAA,CAAVK,UAAU,CACVC,UAAU,GAAAN,IAAA,CAAVM,UAAU,CACVC,SAAS,GAAAP,IAAA,CAATO,SAAS,CACTC,IAAI,GAAAR,IAAA,CAAJQ,IAAI,CACJC,UAAU,GAAAT,IAAA,CAAVS,UAAU,CACVC,OAAO,GAAAV,IAAA,CAAPU,OAAO,CACPC,QAAQ,GAAAX,IAAA,CAARW,QAAQ,CACRC,SAAS,GAAAZ,IAAA,CAATY,SAAS,CACNC,IAAI,GAAAC,6BAAA,CAAAd,IAAA,EAAAe,SAAA;MAIT,IAAMC,KAAK,GAAG9B,UAAU,CAACI,YAAY,CAAC;;MAEtC,IAAA2B,WAAA,GAAqB/B,UAAU,CAACQ,aAAa,CAAC,CAAtCwB,QAAQ,GAAAD,WAAA,CAARC,QAAQ;MAChB,IAAMC,YAAY,GAAG,IAAI1B,YAAY,CAAC,EAAEyB,QAAQ,EAARA,QAAQ,EAAEE,KAAK,EAAEZ,IAAI,CAAC,CAAC,CAAC;;MAEhE,IAAMa,MAAM,GAAGhC,mBAAmB,CAAC,UAAU,EAAEG,sBAAsB,CAAC;MACtE,IAAM8B,SAAS,GAAMD,MAAM,CAACE,0BAA0B,UAAKJ,YAAY,CAACK,YAAY,CAAC,CAAG;;MAExF,IAAMC,WAAW,GAAGrC,WAAW;QAC7B,UAACsC,CAAC,EAAK;UACLjB,UAAU,CAAC,CAAC;UACZC,OAAO,YAAPA,OAAO,CAAGgB,CAAC,CAAC;QACd,CAAC;QACD,CAACjB,UAAU,EAAEC,OAAO;MACtB,CAAC;;MAED,IAAAiB,qBAAA,GAAsBR,YAAY,CAACS,uBAAuB,CAAC,CAAC,CAA9CC,GAAG,GAAAF,qBAAA,CAATnB,IAAI;MACZ,IAAMsB,OAAO,GAAGnB,QAAQ,WAARA,QAAQ,GAAIkB,GAAG;;MAE/B;QACE5C,KAAA,CAAA8C,aAAA,WAAAC,QAAA;UACE/B,GAAG,EAAEA,GAAI;UACT,YAAUH,gBAAgB,CAACmC,OAAQ;UACnC,cAAYX,SAAU;UACtBY,QAAQ,EAAE,CAAC,CAAE;UACbC,QAAQ,EAAE7B,UAAW;UACrBI,OAAO,EAAEe,WAAY;UACrBb,SAAS,EAAErB,EAAE,EAAAW,GAAA,OAAAA,GAAA;;UAERL,MAAM,CAACgC,GAAG,CAACb,KAAK,CAAC,IAAG,IAAI,EAAAd,GAAA;UACxBL,MAAM,CAACuC,QAAQ,CAACpB,KAAK,CAAC,IAAGX,UAAU,EAAAH,GAAA;UACnCL,MAAM,CAACwC,OAAO,CAACrB,KAAK,CAAC,IAAGT,SAAS,EAAAL,GAAA;;UAEpCU;UACF,CAAE;QACEjB,4BAA4B,CAAC,EAAEyC,QAAQ,EAAE/B,UAAU,CAAC,CAAC,CAAC;QACtDQ,IAAI;;QAER5B,KAAA,CAAA8C,aAAA,WAAMnB,SAAS,EAAErB,EAAE,EAAAY,IAAA,OAAAA,IAAA,CAAIN,MAAM,CAACyC,YAAY,CAACtB,KAAK,CAAC,IAAGZ,OAAO,EAAAD,IAAA,CAAE,CAAE,IAAE2B,OAAc;QACzE,CAAC;;IAEb;EACF;AACF,CAAC","ignoreList":[]}
|
|
@@ -19,23 +19,19 @@ export var DayCellView = function DayCellView(props) {
|
|
|
19
19
|
var theme = useContext(ThemeContext);
|
|
20
20
|
var isDisabled = !CDS.isBetween(date, minDate, maxDate);
|
|
21
21
|
var humanDateString = InternalDateTransformer.dateToHumanString(date);
|
|
22
|
+
var dayClickHandler = useCallback(function () {
|
|
23
|
+
onDateClick == null || onDateClick(date);
|
|
24
|
+
}, [onDateClick, date]);
|
|
22
25
|
var dayProps = {
|
|
23
26
|
isToday: Boolean(today && CDS.isEqual(date, today)),
|
|
24
27
|
isSelected: Boolean(value && CDS.isEqual(date, value)),
|
|
25
28
|
isDisabled: isDisabled,
|
|
26
29
|
isWeekend: (_isHoliday = isHoliday == null ? void 0 : isHoliday(humanDateString, date.isWeekend)) != null ? _isHoliday : date.isWeekend,
|
|
27
|
-
date: humanDateString
|
|
30
|
+
date: humanDateString,
|
|
31
|
+
onDayClick: dayClickHandler
|
|
28
32
|
};
|
|
29
33
|
var dayElement = (_renderDay = renderDay == null ? void 0 : renderDay(dayProps)) != null ? _renderDay : /*#__PURE__*/React.createElement(CalendarDay, dayProps);
|
|
30
|
-
var customDayClickHandler = dayElement.props.onClick;
|
|
31
|
-
var dayClickHandler = useCallback(function (e) {
|
|
32
|
-
customDayClickHandler == null || customDayClickHandler(e);
|
|
33
|
-
onDateClick == null || onDateClick(date);
|
|
34
|
-
}, [customDayClickHandler, onDateClick, date]);
|
|
35
|
-
var dayElementWithClickHandler = /*#__PURE__*/React.cloneElement(dayElement, {
|
|
36
|
-
onClick: dayClickHandler
|
|
37
|
-
});
|
|
38
34
|
return /*#__PURE__*/React.createElement("div", {
|
|
39
35
|
className: styles.cell(theme)
|
|
40
|
-
},
|
|
36
|
+
}, dayElement);
|
|
41
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useContext","ThemeContext","InternalDateTransformer","styles","CalendarContext","CDS","CalendarDay","DayCellView","props","_isHoliday","_renderDay","date","_useContext","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","isDisabled","isBetween","humanDateString","dateToHumanString","dayProps","isToday","Boolean","isEqual","isSelected","isWeekend","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useContext","ThemeContext","InternalDateTransformer","styles","CalendarContext","CDS","CalendarDay","DayCellView","props","_isHoliday","_renderDay","date","_useContext","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","isDisabled","isBetween","humanDateString","dateToHumanString","dayClickHandler","dayProps","isToday","Boolean","isEqual","isSelected","isWeekend","onDayClick","dayElement","createElement","className","cell"],"sources":["DayCellView.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport React, { useCallback, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarContext } from './CalendarContext';\nimport type { DayCellViewModel } from './DayCellViewModel';\nimport * as CDS from './CalendarDateShape';\nimport type { CalendarDayProps } from './CalendarDay';\nimport { CalendarDay } from './CalendarDay';\n\nexport interface DayCellViewProps {\n date: DayCellViewModel;\n}\n\nexport const DayCellView = (props: DayCellViewProps) => {\n const { date } = props;\n const { value, minDate, maxDate, isHoliday, renderDay, today, onDateClick } = useContext(CalendarContext);\n const theme = useContext(ThemeContext);\n\n const isDisabled = !CDS.isBetween(date, minDate, maxDate);\n\n const humanDateString = InternalDateTransformer.dateToHumanString(date);\n\n const dayClickHandler = useCallback(() => {\n onDateClick?.(date);\n }, [onDateClick, date]);\n\n const dayProps: CalendarDayProps = {\n isToday: Boolean(today && CDS.isEqual(date, today)),\n isSelected: Boolean(value && CDS.isEqual(date, value)),\n isDisabled,\n isWeekend: isHoliday?.(humanDateString, date.isWeekend) ?? date.isWeekend,\n date: humanDateString,\n onDayClick: dayClickHandler,\n };\n\n const dayElement: ReactElement<CalendarDayProps> = renderDay?.(dayProps) ?? <CalendarDay {...dayProps} />;\n\n return <div className={styles.cell(theme)}>{dayElement}</div>;\n};\n"],"mappings":";AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;;AAEtD,SAASC,YAAY,QAAQ,gCAAgC;AAC7D,SAASC,uBAAuB,QAAQ,wCAAwC;;AAEhF,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,eAAe,QAAQ,mBAAmB;;AAEnD,OAAO,KAAKC,GAAG,MAAM,qBAAqB;;AAE1C,SAASC,WAAW,QAAQ,eAAe;;;;;;AAM3C,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAuB,EAAK,KAAAC,UAAA,EAAAC,UAAA;EACtD,IAAQC,IAAI,GAAKH,KAAK,CAAdG,IAAI;EACZ,IAAAC,WAAA,GAA8EZ,UAAU,CAACI,eAAe,CAAC,CAAjGS,KAAK,GAAAD,WAAA,CAALC,KAAK,CAAEC,OAAO,GAAAF,WAAA,CAAPE,OAAO,CAAEC,OAAO,GAAAH,WAAA,CAAPG,OAAO,CAAEC,SAAS,GAAAJ,WAAA,CAATI,SAAS,CAAEC,SAAS,GAAAL,WAAA,CAATK,SAAS,CAAEC,KAAK,GAAAN,WAAA,CAALM,KAAK,CAAEC,WAAW,GAAAP,WAAA,CAAXO,WAAW;EACzE,IAAMC,KAAK,GAAGpB,UAAU,CAACC,YAAY,CAAC;;EAEtC,IAAMoB,UAAU,GAAG,CAAChB,GAAG,CAACiB,SAAS,CAACX,IAAI,EAAEG,OAAO,EAAEC,OAAO,CAAC;;EAEzD,IAAMQ,eAAe,GAAGrB,uBAAuB,CAACsB,iBAAiB,CAACb,IAAI,CAAC;;EAEvE,IAAMc,eAAe,GAAG1B,WAAW,CAAC,YAAM;IACxCoB,WAAW,YAAXA,WAAW,CAAGR,IAAI,CAAC;EACrB,CAAC,EAAE,CAACQ,WAAW,EAAER,IAAI,CAAC,CAAC;;EAEvB,IAAMe,QAA0B,GAAG;IACjCC,OAAO,EAAEC,OAAO,CAACV,KAAK,IAAIb,GAAG,CAACwB,OAAO,CAAClB,IAAI,EAAEO,KAAK,CAAC,CAAC;IACnDY,UAAU,EAAEF,OAAO,CAACf,KAAK,IAAIR,GAAG,CAACwB,OAAO,CAAClB,IAAI,EAAEE,KAAK,CAAC,CAAC;IACtDQ,UAAU,EAAVA,UAAU;IACVU,SAAS,GAAAtB,UAAA,GAAEO,SAAS,oBAATA,SAAS,CAAGO,eAAe,EAAEZ,IAAI,CAACoB,SAAS,CAAC,YAAAtB,UAAA,GAAIE,IAAI,CAACoB,SAAS;IACzEpB,IAAI,EAAEY,eAAe;IACrBS,UAAU,EAAEP;EACd,CAAC;;EAED,IAAMQ,UAA0C,IAAAvB,UAAA,GAAGO,SAAS,oBAATA,SAAS,CAAGS,QAAQ,CAAC,YAAAhB,UAAA,gBAAIZ,KAAA,CAAAoC,aAAA,CAAC5B,WAAW,EAAKoB,QAAW,CAAC;;EAEzG,oBAAO5B,KAAA,CAAAoC,aAAA,UAAKC,SAAS,EAAEhC,MAAM,CAACiC,IAAI,CAAChB,KAAK,CAAE,IAAEa,UAAgB,CAAC;AAC/D,CAAC","ignoreList":[]}
|
|
@@ -71,4 +71,43 @@ kind('Calendar', () => {
|
|
|
71
71
|
},
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
|
+
|
|
75
|
+
story('CalendarWithDateSelectMiddlePosition', ({ setStoryParameters }) => {
|
|
76
|
+
setStoryParameters({
|
|
77
|
+
skip: { "themes don't affect logic": { in: /^(?!\b(chrome2022|firefox2022)\b)/ } },
|
|
78
|
+
});
|
|
79
|
+
test('DateSelect months', async (context) => {
|
|
80
|
+
await delay(1000);
|
|
81
|
+
await context.webdriver
|
|
82
|
+
.actions({
|
|
83
|
+
bridge: true,
|
|
84
|
+
})
|
|
85
|
+
.click(context.webdriver.findElement({ css: '[data-comp-name~="Calendar"]' }))
|
|
86
|
+
.pause(1000)
|
|
87
|
+
.click(
|
|
88
|
+
context.webdriver.findElement({
|
|
89
|
+
css: '[data-tid="MonthView__month"]:first-child [data-tid="MonthView__headerMonth"] [data-tid="DateSelect__caption"]',
|
|
90
|
+
}),
|
|
91
|
+
)
|
|
92
|
+
.perform();
|
|
93
|
+
await context.matchImage(await context.takeScreenshot(), 'months');
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
test('DateSelect years', async (context) => {
|
|
97
|
+
await delay(1000);
|
|
98
|
+
await context.webdriver
|
|
99
|
+
.actions({
|
|
100
|
+
bridge: true,
|
|
101
|
+
})
|
|
102
|
+
.click(context.webdriver.findElement({ css: '[data-comp-name~="Calendar"]' }))
|
|
103
|
+
.pause(1000)
|
|
104
|
+
.click(
|
|
105
|
+
context.webdriver.findElement({
|
|
106
|
+
css: '[data-comp-name~="MonthView"]:first-child [data-tid="MonthView__headerYear"] [data-tid="DateSelect__caption"]',
|
|
107
|
+
}),
|
|
108
|
+
)
|
|
109
|
+
.perform();
|
|
110
|
+
await context.matchImage(await context.takeScreenshot(), 'years');
|
|
111
|
+
});
|
|
112
|
+
});
|
|
74
113
|
});
|
|
@@ -263,7 +263,7 @@ export var DateRangePicker = Object.assign({
|
|
|
263
263
|
opened: true,
|
|
264
264
|
headerChildComponent: /*#__PURE__*/
|
|
265
265
|
React.createElement("div", {
|
|
266
|
-
className: cx(styles.
|
|
266
|
+
className: cx(styles.root(theme), styles.inputWrapperWidthFull())
|
|
267
267
|
}, /*#__PURE__*/
|
|
268
268
|
React.createElement(DateInput, {
|
|
269
269
|
withIcon: true,
|
|
@@ -388,23 +388,22 @@ export var DateRangePicker = Object.assign({
|
|
|
388
388
|
React.createElement(ThemeContext.Provider, {
|
|
389
389
|
value: getDateRangePickerTheme(theme)
|
|
390
390
|
}, /*#__PURE__*/
|
|
391
|
+
React.createElement(DateRangePickerContext.Provider, {
|
|
392
|
+
value: dateRangePickerContextProps
|
|
393
|
+
}, /*#__PURE__*/
|
|
391
394
|
React.createElement(CommonWrapper, props, /*#__PURE__*/
|
|
392
395
|
React.createElement("div", {
|
|
393
|
-
className: styles.root(theme),
|
|
396
|
+
className: cx(styles.root(theme), styles.inputWrapperWidth(theme), css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n "])), getFontSize(theme, props.size))),
|
|
394
397
|
role: "group",
|
|
395
398
|
"aria-describedby": props['aria-describedby'],
|
|
396
399
|
"aria-label": props['aria-label'],
|
|
397
400
|
"aria-labelledby": props['aria-labelledby'],
|
|
398
401
|
"data-tid": DateRangePickerDataTids.root,
|
|
399
|
-
ref: dateRangePickerRef
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
}, /*#__PURE__*/
|
|
405
|
-
React.createElement("div", {
|
|
406
|
-
className: cx(styles.inputWrapper(), styles.inputWrapperWidth(theme), css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n "])), getFontSize(theme, props.size)))
|
|
407
|
-
}, props.children), props.useMobileNativeDatePicker && isMobile ? renderMobileNativeDateInput() : isCalendarOpen && (isMobile ? renderMobileCalendar(theme) : renderDesktopCalendar(theme))))))
|
|
402
|
+
ref: dateRangePickerRef,
|
|
403
|
+
style: {
|
|
404
|
+
width: props.width
|
|
405
|
+
}
|
|
406
|
+
}, props.children, props.useMobileNativeDatePicker && isMobile ? renderMobileNativeDateInput() : isCalendarOpen && (isMobile ? renderMobileCalendar(theme) : renderDesktopCalendar(theme))))))
|
|
408
407
|
);
|
|
409
408
|
})
|
|
410
409
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useImperativeHandle","useRef","useState","useLayoutEffect","MobilePopup","useLocaleForControl","css","cx","ThemeContext","CommonWrapper","Calendar","CalendarDay","Popup","DateInput","isBetween","isGreater","isGreaterOrEqual","isLess","isLessOrEqual","ZIndex","getRootNode","getMenuPositions","Button","useResponsiveLayout","InternalDate","InternalDateGetter","ArrowAUpIcon16Light","NativeDateInput","forwardRefAndName","LocaleContext","isIOS","getFontSize","styles","DateRangePickerSeparator","DateRangePickerContext","DateRangePickerEnd","DateRangePickerStart","getDateRangePickerTheme","getMobileDateRangePickerTheme","DateRangePickerLocaleHelper","validateDateRangePicker","getStateForValue","DateRangePickerDataTids","root","start","end","popup","calendar","todayButton","startOptionalButton","endOptionalButton","mobileStart","mobileEnd","rangeStart","rangeEnd","DayDateAttribute","DateRangePicker","Object","assign","Start","End","Separator","validate","props","ref","_useResponsiveLayout","isMobile","locale","_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","calendarRef","startRef","endRef","mobileStartRef","mobileEndRef","mobileNativeStartRef","mobileNativeEndRef","isCalendarOpen","updateDateRangeValues","value","currentValues","currentStart","currentEnd","updatedState","isOpen","focus","close","open","inputType","setEmpty","type","_calendarRef$current","scrollToMonth","current","setTimeout","_currentFieldRef$curr4","isStart","currentFieldRef","useMobileNativeDatePicker","_currentFieldRef$curr","_currentFieldRef$curr2","click","_currentFieldRef$curr3","dateRangePickerContextProps","size","renderCalendar","theme","widthAuto","_cx","createElement","Provider","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","renderDay","dayProps","renderCalendarRange","onValueChange","onMonthChange","className","calendarWidthAuto","renderMobileCalendar","_cx2","_cx3","opened","headerChildComponent","inputWrapper","inputWrapperWidthFull","withIcon","width","inputVisuallyFocus","disabled","onFocus","onCloseRequest","footerChildComponent","renderButtons","renderDesktopCalendar","hasShadow","priority","priorities","PopupMenu","positions","menuPos","menuAlign","anchorElement","margin","parseInt","datePickerMenuOffsetY","calendarWrapper","onMouseDown","e","preventDefault","onMouseMove","handleCalendarRangeMouseMove","today","setComponents","getTodayComponents","toString","withPad","withSeparator","hasOptionalButtons","buttonWrap","Fragment","onClick","startDateEmpty","endDateEmpty","enableTodayLink","icon","todayAriaLabel","renderMobileNativeDateInput","Consumer","role","inputWrapperWidth","_templateObject","_taggedTemplateLiteralLoose","children","hoveredElement","target","hasAttribute","date","String","getAttribute","t","renderDayFn","_extends2","_cx4","day","isDayFirst","isDayLast","isDayInPeriod","Boolean","hasHoveredDay","isDayInHoveredPeriod","hasLeftRoundings","hasRightRoundings","isDayBeforeFirstInPeriod","isDayAfterLastInPeriod","isDayHovered","renderDayProps","_extends","dataTid","rangeCalendarDay","_templateObject2","rangeCalendarCellBg","calendarCellBorderRadius","rangeCalendarDayEnd","rangeCalendarDayHoverInPeriod","rangeCalendarDayInHoveredPeriod"],"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' | 'renderDay' | 'menuPos' | 'menuAlign' | 'useMobileNativeDatePicker' | 'enableTodayLink' | '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.inputWrapper(), 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 <CommonWrapper {...props}>\n <div\n className={styles.root(theme)}\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 >\n <DateRangePickerContext.Provider value={dateRangePickerContextProps}>\n <div\n className={cx(\n styles.inputWrapper(),\n styles.inputWrapperWidth(theme),\n css`\n font-size: ${getFontSize(theme, props.size)};\n `,\n )}\n >\n {props.children}\n </div>\n\n {props.useMobileNativeDatePicker && isMobile\n ? renderMobileNativeDateInput()\n : isCalendarOpen && (isMobile ? renderMobileCalendar(theme) : renderDesktopCalendar(theme))}\n </DateRangePickerContext.Provider>\n </div>\n </CommonWrapper>\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","useImperativeHandle","useRef","useState","useLayoutEffect","MobilePopup","useLocaleForControl","css","cx","ThemeContext","CommonWrapper","Calendar","CalendarDay","Popup","DateInput","isBetween","isGreater","isGreaterOrEqual","isLess","isLessOrEqual","ZIndex","getRootNode","getMenuPositions","Button","useResponsiveLayout","InternalDate","InternalDateGetter","ArrowAUpIcon16Light","NativeDateInput","forwardRefAndName","LocaleContext","isIOS","getFontSize","styles","DateRangePickerSeparator","DateRangePickerContext","DateRangePickerEnd","DateRangePickerStart","getDateRangePickerTheme","getMobileDateRangePickerTheme","DateRangePickerLocaleHelper","validateDateRangePicker","getStateForValue","DateRangePickerDataTids","root","start","end","popup","calendar","todayButton","startOptionalButton","endOptionalButton","mobileStart","mobileEnd","rangeStart","rangeEnd","DayDateAttribute","DateRangePicker","Object","assign","Start","End","Separator","validate","props","ref","_useResponsiveLayout","isMobile","locale","_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","calendarRef","startRef","endRef","mobileStartRef","mobileEndRef","mobileNativeStartRef","mobileNativeEndRef","isCalendarOpen","updateDateRangeValues","value","currentValues","currentStart","currentEnd","updatedState","isOpen","focus","close","open","inputType","setEmpty","type","_calendarRef$current","scrollToMonth","current","setTimeout","_currentFieldRef$curr4","isStart","currentFieldRef","useMobileNativeDatePicker","_currentFieldRef$curr","_currentFieldRef$curr2","click","_currentFieldRef$curr3","dateRangePickerContextProps","size","renderCalendar","theme","widthAuto","_cx","createElement","Provider","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","renderDay","dayProps","renderCalendarRange","onValueChange","onMonthChange","className","calendarWidthAuto","renderMobileCalendar","_cx2","_cx3","opened","headerChildComponent","inputWrapperWidthFull","withIcon","width","inputVisuallyFocus","disabled","onFocus","onCloseRequest","footerChildComponent","renderButtons","renderDesktopCalendar","hasShadow","priority","priorities","PopupMenu","positions","menuPos","menuAlign","anchorElement","margin","parseInt","datePickerMenuOffsetY","calendarWrapper","onMouseDown","e","preventDefault","onMouseMove","handleCalendarRangeMouseMove","today","setComponents","getTodayComponents","toString","withPad","withSeparator","hasOptionalButtons","buttonWrap","Fragment","onClick","startDateEmpty","endDateEmpty","enableTodayLink","icon","todayAriaLabel","renderMobileNativeDateInput","Consumer","inputWrapperWidth","_templateObject","_taggedTemplateLiteralLoose","role","style","children","hoveredElement","target","hasAttribute","date","String","getAttribute","t","renderDayFn","_extends2","_cx4","day","isDayFirst","isDayLast","isDayInPeriod","Boolean","hasHoveredDay","isDayInHoveredPeriod","hasLeftRoundings","hasRightRoundings","isDayBeforeFirstInPeriod","isDayAfterLastInPeriod","isDayHovered","renderDayProps","_extends","dataTid","rangeCalendarDay","_templateObject2","rangeCalendarCellBg","calendarCellBorderRadius","rangeCalendarDayEnd","rangeCalendarDayHoverInPeriod","rangeCalendarDayInHoveredPeriod"],"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":[]}
|
|
@@ -17,7 +17,7 @@ export declare const DateRangePickerDataTids: {
|
|
|
17
17
|
readonly rangeStart: "DateRangePicker__rangeStart";
|
|
18
18
|
readonly rangeEnd: "DateRangePicker__rangeEnd";
|
|
19
19
|
};
|
|
20
|
-
export interface DateRangePickerProps extends CommonProps, Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>, Pick<DatePickerProps, 'size' | 'renderDay' | 'menuPos' | 'menuAlign' | 'useMobileNativeDatePicker' | 'enableTodayLink' | 'onMonthChange'> {
|
|
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
21
|
/**
|
|
22
22
|
* Элементы DateRangePicker:
|
|
23
23
|
* `<DateRangePicker.Start />`
|
|
@@ -1,43 +1,40 @@
|
|
|
1
1
|
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11
|
|
2
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
|
|
3
3
|
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
4
4
|
import { CalendarDataTids } from "../../Calendar";
|
|
5
5
|
export var styles = memoizeStyle({
|
|
6
6
|
root: function root(t) {
|
|
7
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: inline-
|
|
8
|
-
},
|
|
9
|
-
inputWrapper: function inputWrapper() {
|
|
10
|
-
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n\n & > * {\n flex: 1 1 50%;\n }\n "])));
|
|
7
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n color: ", ";\n\n & > * {\n flex: 1 1 50%;\n }\n "])), t.textColorDefault);
|
|
11
8
|
},
|
|
12
9
|
inputWrapperWidth: function inputWrapperWidth(t) {
|
|
13
|
-
return css(
|
|
10
|
+
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n min-width: ", "px;\n "])), parseInt(t.calendarCellWidth) * 7 + parseInt(t.calendarPaddingX) * 2);
|
|
14
11
|
},
|
|
15
12
|
inputWrapperWidthFull: function inputWrapperWidthFull() {
|
|
16
|
-
return css(
|
|
13
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n width: 100%;\n "])));
|
|
17
14
|
},
|
|
18
15
|
inputVisuallyFocus: function inputVisuallyFocus(t) {
|
|
19
|
-
return css(
|
|
16
|
+
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n box-shadow: ", ";\n "])), t.inputFocusShadow);
|
|
20
17
|
},
|
|
21
18
|
calendarWrapper: function calendarWrapper(t) {
|
|
22
|
-
return css(
|
|
19
|
+
return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n box-shadow: ", ";\n display: inline-block;\n font-size: 0;\n z-index: 1000;\n touch-action: none;\n "])), t.pickerShadow);
|
|
23
20
|
},
|
|
24
21
|
calendarWidthAuto: function calendarWidthAuto() {
|
|
25
|
-
return css(
|
|
22
|
+
return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n width: auto;\n "])));
|
|
26
23
|
},
|
|
27
24
|
rangeCalendarDay: function rangeCalendarDay() {
|
|
28
|
-
return css(
|
|
25
|
+
return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n width: 100%;\n height: 100%;\n "])));
|
|
29
26
|
},
|
|
30
27
|
rangeCalendarDayEnd: function rangeCalendarDayEnd(t) {
|
|
31
|
-
return css(
|
|
28
|
+
return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n position: relative;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ", ";\n border-radius: ", ";\n }\n\n [data-tid=", "] {\n color: ", ";\n\n @media (hover: hover) {\n &:hover {\n color: ", ";\n background: none;\n }\n }\n }\n "])), t.rangeCalendarCellEndBg, t.calendarCellBorderRadius, CalendarDataTids.dayCell, t.rangeCalendarCellEndColor, t.rangeCalendarCellEndColor);
|
|
32
29
|
},
|
|
33
30
|
rangeCalendarDayInHoveredPeriod: function rangeCalendarDayInHoveredPeriod(t) {
|
|
34
|
-
return css(
|
|
31
|
+
return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n background: ", ";\n "])), t.rangeCalendarCellBg);
|
|
35
32
|
},
|
|
36
33
|
rangeCalendarDayHoverInPeriod: function rangeCalendarDayHoverInPeriod(t) {
|
|
37
|
-
return css(
|
|
34
|
+
return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n @media (hover: hover) {\n &:hover [data-tid=", "] {\n background: ", ";\n }\n }\n "])), CalendarDataTids.dayCell, t.rangeCalendarCellHoverBg);
|
|
38
35
|
},
|
|
39
36
|
buttonWrap: function buttonWrap() {
|
|
40
|
-
return css(
|
|
37
|
+
return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n display: flex;\n margin: 8px;\n\n > * {\n flex-grow: 1;\n }\n\n > *:not(:first-child) {\n margin-left: 8px;\n }\n "])));
|
|
41
38
|
}
|
|
42
39
|
});
|
|
43
40
|
export function getFontSize(t, size) {
|