@hh.ru/magritte-ui-date-picker 5.0.7 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/AsyncDataLoader.js +1 -1
  2. package/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +0 -2
  3. package/DatePicker/DatePicker.js +59 -0
  4. package/DatePicker/DatePicker.js.map +1 -0
  5. package/DatePicker/MobileDatePickerWithScroll.d.ts +5 -0
  6. package/DatePicker/MobileDatePickerWithScroll.js +71 -0
  7. package/DatePicker/MobileDatePickerWithScroll.js.map +1 -0
  8. package/DatePicker/UncontrolledDatePicker.d.ts +2 -0
  9. package/DatePicker/UncontrolledDatePicker.js +56 -0
  10. package/DatePicker/UncontrolledDatePicker.js.map +1 -0
  11. package/DayPicker.js +17 -17
  12. package/DayPicker.js.map +1 -1
  13. package/Header.js +1 -1
  14. package/InfiniteScroll.d.ts +4 -2
  15. package/InfiniteScroll.js +208 -28
  16. package/InfiniteScroll.js.map +1 -1
  17. package/InfoDatePicker/InfoDatePicker.d.ts +3 -0
  18. package/InfoDatePicker/InfoDatePicker.js +51 -0
  19. package/InfoDatePicker/InfoDatePicker.js.map +1 -0
  20. package/InfoDatePicker/MobileInfoDatePickerWithScroll.d.ts +7 -0
  21. package/InfoDatePicker/MobileInfoDatePickerWithScroll.js +51 -0
  22. package/InfoDatePicker/MobileInfoDatePickerWithScroll.js.map +1 -0
  23. package/{InfoDatePicker.d.ts → InfoDatePicker/UncontrolledInfoDatePicker.d.ts} +1 -2
  24. package/InfoDatePicker/UncontrolledInfoDatePicker.js +44 -0
  25. package/InfoDatePicker/UncontrolledInfoDatePicker.js.map +1 -0
  26. package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.d.ts +2 -0
  27. package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.js +49 -0
  28. package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.js.map +1 -0
  29. package/{IntervalDatePicker.d.ts → IntervalDatePicker/IntervalDatePicker.d.ts} +0 -1
  30. package/IntervalDatePicker/IntervalDatePicker.js +60 -0
  31. package/IntervalDatePicker/IntervalDatePicker.js.map +1 -0
  32. package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.d.ts +3 -0
  33. package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js +58 -0
  34. package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js.map +1 -0
  35. package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.d.ts +4 -0
  36. package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.js +73 -0
  37. package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.js.map +1 -0
  38. package/IntervalDatePicker/SingleLayoutIntervalDatePicker.d.ts +2 -0
  39. package/IntervalDatePicker/SingleLayoutIntervalDatePicker.js +50 -0
  40. package/IntervalDatePicker/SingleLayoutIntervalDatePicker.js.map +1 -0
  41. package/IntervalDatePicker/UncontrolledIntervalDatePicker.d.ts +3 -0
  42. package/IntervalDatePicker/UncontrolledIntervalDatePicker.js +63 -0
  43. package/IntervalDatePicker/UncontrolledIntervalDatePicker.js.map +1 -0
  44. package/MonthPicker.js +5 -5
  45. package/MonthPicker.js.map +1 -1
  46. package/Weekdays.js +1 -1
  47. package/YearPicker.js +5 -5
  48. package/YearPicker.js.map +1 -1
  49. package/date-picker-1kIH437q.js +5 -0
  50. package/date-picker-1kIH437q.js.map +1 -0
  51. package/index.css +132 -90
  52. package/index.d.ts +6 -3
  53. package/index.js +24 -13
  54. package/index.js.map +1 -1
  55. package/package.json +2 -2
  56. package/types.d.ts +18 -0
  57. package/useDatePickerControls.js +7 -14
  58. package/useDatePickerControls.js.map +1 -1
  59. package/useMobileHorizontalScroll.d.ts +11 -0
  60. package/useMobileHorizontalScroll.js +33 -0
  61. package/useMobileHorizontalScroll.js.map +1 -0
  62. package/utils.d.ts +1 -1
  63. package/utils.js +9 -3
  64. package/utils.js.map +1 -1
  65. package/DatePicker.js +0 -61
  66. package/DatePicker.js.map +0 -1
  67. package/InfoDatePicker.js +0 -48
  68. package/InfoDatePicker.js.map +0 -1
  69. package/IntervalDatePicker.js +0 -126
  70. package/IntervalDatePicker.js.map +0 -1
  71. package/date-picker-BV10jbxZ.js +0 -5
  72. package/date-picker-BV10jbxZ.js.map +0 -1
@@ -4,7 +4,7 @@ import { useContext, useState, useMemo } from 'react';
4
4
  import classnames from 'classnames';
5
5
  import { AsyncDataContext } from './AsyncDataContext.js';
6
6
  import { Loader } from '@hh.ru/magritte-ui-loader';
7
- import { s as styles } from './date-picker-BV10jbxZ.js';
7
+ import { s as styles } from './date-picker-1kIH437q.js';
8
8
 
9
9
  /**
10
10
  * Отображает лоадер поверх контента во время загрузки асинхронных данных.
@@ -1,4 +1,2 @@
1
- import { FC } from 'react';
2
1
  import { DatePickerProps } from '@hh.ru/magritte-ui-date-picker/types';
3
2
  export declare const DatePicker: import("react").ComponentType<DatePickerProps & import("react").RefAttributes<HTMLDivElement>>;
4
- export declare const UncontrolledDatePicker: FC<DatePickerProps>;
@@ -0,0 +1,59 @@
1
+ import './../index.css';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
5
+ import { AsyncDataLoader } from '../AsyncDataLoader.js';
6
+ import { AsyncDataStore } from '../AsyncDataStore.js';
7
+ import MobileDatePickerWithScroll from './MobileDatePickerWithScroll.js';
8
+ import { DayPicker } from '../DayPicker.js';
9
+ import { Header } from '../Header.js';
10
+ import { MonthPicker } from '../MonthPicker.js';
11
+ import { Weekdays } from '../Weekdays.js';
12
+ import { WithArrowNavigationHOC } from '../WithArrowNavigationHOC.js';
13
+ import { YearPicker } from '../YearPicker.js';
14
+ import { useDatePickerControls } from '../useDatePickerControls.js';
15
+ import { useDisplayDate } from '../utils.js';
16
+ import { Divider } from '@hh.ru/magritte-ui-divider';
17
+ import { s as styles } from '../date-picker-1kIH437q.js';
18
+ import 'classnames';
19
+ import '../AsyncDataContext.js';
20
+ import '@hh.ru/magritte-ui-loader';
21
+ import 'date-fns';
22
+ import '../InfiniteScroll.js';
23
+ import '@hh.ru/magritte-common-func-utils';
24
+ import '@hh.ru/magritte-internal-custom-scroll';
25
+ import '../useMobileHorizontalScroll.js';
26
+ import 'date-fns/constants';
27
+ import '@hh.ru/magritte-common-use-disabled';
28
+ import '@hh.ru/magritte-ui-bottom-sheet';
29
+ import '../useDisabledDatesFunc.js';
30
+ import '../useIntervalPicker.js';
31
+ import '@hh.ru/magritte-ui-icon/icon';
32
+ import '@hh.ru/magritte-ui-navigation-bar';
33
+ import '@hh.ru/magritte-ui-spacing';
34
+ import '@hh.ru/magritte-ui-tooltip';
35
+ import '@hh.ru/magritte-ui-typography';
36
+ import '@hh.ru/magritte-common-keyboard';
37
+ import '@hh.ru/magritte-common-use-multiple-refs';
38
+
39
+ const DatePickerRenderFunc = forwardRef((props, ref) => {
40
+ const {
41
+ // настройки функциональности
42
+ disabledDates, disabledDatesFunc, displayDate: _displayDate, enabledCalendars, minDate, maxDate, selectedDate,
43
+ // колбеки
44
+ onDisplayDateChange, onDateSelect,
45
+ // настройки внешнего вида
46
+ activeHeader, alignHeader, headerMonthFormat, locale, showAdjacentDays = true, showControls, showHeader = true, showHeaderDate, showDivider = true, showWeekdays = true, fixedWeeks, mobileScrollHorizontal, } = props;
47
+ const displayDate = useDisplayDate(_displayDate, selectedDate);
48
+ const { calendar, switchCalendar, zoomIntoMonth, zoomIntoYear, goToNextPeriod, goToPrevPeriod } = useDatePickerControls(enabledCalendars, displayDate, onDisplayDateChange);
49
+ const { isMobile } = useBreakpoint();
50
+ if (isMobile && mobileScrollHorizontal) {
51
+ return jsx(MobileDatePickerWithScroll, { ...props, displayDate: displayDate, ref: ref });
52
+ }
53
+ return (jsx("div", { className: styles.layout, ref: ref, children: jsx(AsyncDataStore, { disabledDatesFunc: disabledDatesFunc, children: jsxs(AsyncDataLoader, { children: [showHeader && (jsx(Header, { calendar: calendar, displayDate: displayDate, activeHeader: activeHeader, alignHeader: alignHeader, goToNextPeriod: goToNextPeriod, goToPrevPeriod: goToPrevPeriod, headerMonthFormat: headerMonthFormat, locale: locale, showControls: showControls, showHeaderDate: showHeaderDate, switchCalendar: switchCalendar })), showWeekdays && calendar === 'day' && jsx(Weekdays, { locale: locale }), showDivider && (showHeader || showWeekdays) && jsx(Divider, {}), calendar === 'day' && (jsx(DayPicker, { disabledDates: disabledDates, displayDate: displayDate, selectedDate: selectedDate, onDateSelect: onDateSelect, showAdjacentDays: showAdjacentDays, minDate: minDate, maxDate: maxDate, fixedWeeks: fixedWeeks })), calendar === 'month' && (jsx(MonthPicker, { locale: locale, displayDate: displayDate, selectedDate: selectedDate, onDateSelect: enabledCalendars.startsWith('dd') ? zoomIntoMonth : onDateSelect })), calendar === 'year' && (jsx(YearPicker, { displayDate: displayDate, selectedDate: selectedDate, onDateSelect: zoomIntoYear }))] }) }) }));
54
+ });
55
+ DatePickerRenderFunc.displayName = 'DatePickerRenderFunc';
56
+ const DatePicker = WithArrowNavigationHOC(DatePickerRenderFunc);
57
+
58
+ export { DatePicker };
59
+ //# sourceMappingURL=DatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.js","sources":["../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { AsyncDataLoader } from '@hh.ru/magritte-ui-date-picker/AsyncDataLoader';\nimport { AsyncDataStore } from '@hh.ru/magritte-ui-date-picker/AsyncDataStore';\nimport MobileDatePickerWithScroll from '@hh.ru/magritte-ui-date-picker/DatePicker/MobileDatePickerWithScroll';\nimport { DayPicker } from '@hh.ru/magritte-ui-date-picker/DayPicker';\nimport { Header } from '@hh.ru/magritte-ui-date-picker/Header';\nimport { MonthPicker } from '@hh.ru/magritte-ui-date-picker/MonthPicker';\nimport { Weekdays } from '@hh.ru/magritte-ui-date-picker/Weekdays';\nimport { WithArrowNavigationHOC } from '@hh.ru/magritte-ui-date-picker/WithArrowNavigationHOC';\nimport { YearPicker } from '@hh.ru/magritte-ui-date-picker/YearPicker';\nimport { DatePickerProps } from '@hh.ru/magritte-ui-date-picker/types';\nimport { useDatePickerControls } from '@hh.ru/magritte-ui-date-picker/useDatePickerControls';\nimport { useDisplayDate } from '@hh.ru/magritte-ui-date-picker/utils';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\n\nimport styles from '../date-picker.less';\n\nconst DatePickerRenderFunc = forwardRef<HTMLDivElement, DatePickerProps>((props, ref) => {\n const {\n // настройки функциональности\n disabledDates,\n disabledDatesFunc,\n displayDate: _displayDate,\n enabledCalendars,\n minDate,\n maxDate,\n selectedDate,\n // колбеки\n onDisplayDateChange,\n onDateSelect,\n // настройки внешнего вида\n activeHeader,\n alignHeader,\n headerMonthFormat,\n locale,\n showAdjacentDays = true,\n showControls,\n showHeader = true,\n showHeaderDate,\n showDivider = true,\n showWeekdays = true,\n fixedWeeks,\n mobileScrollHorizontal,\n } = props;\n const displayDate = useDisplayDate(_displayDate, selectedDate);\n const { calendar, switchCalendar, zoomIntoMonth, zoomIntoYear, goToNextPeriod, goToPrevPeriod } =\n useDatePickerControls(enabledCalendars, displayDate, onDisplayDateChange);\n const { isMobile } = useBreakpoint();\n\n if (isMobile && mobileScrollHorizontal) {\n return <MobileDatePickerWithScroll {...props} displayDate={displayDate} ref={ref} />;\n }\n\n return (\n <div className={styles.layout} ref={ref}>\n <AsyncDataStore disabledDatesFunc={disabledDatesFunc}>\n <AsyncDataLoader>\n {showHeader && (\n <Header\n calendar={calendar}\n displayDate={displayDate}\n activeHeader={activeHeader}\n alignHeader={alignHeader}\n goToNextPeriod={goToNextPeriod}\n goToPrevPeriod={goToPrevPeriod}\n headerMonthFormat={headerMonthFormat}\n locale={locale}\n showControls={showControls}\n showHeaderDate={showHeaderDate}\n switchCalendar={switchCalendar}\n />\n )}\n {showWeekdays && calendar === 'day' && <Weekdays locale={locale} />}\n {showDivider && (showHeader || showWeekdays) && <Divider />}\n {calendar === 'day' && (\n <DayPicker\n disabledDates={disabledDates}\n displayDate={displayDate}\n selectedDate={selectedDate}\n onDateSelect={onDateSelect}\n showAdjacentDays={showAdjacentDays}\n minDate={minDate}\n maxDate={maxDate}\n fixedWeeks={fixedWeeks}\n />\n )}\n {calendar === 'month' && (\n <MonthPicker\n locale={locale}\n displayDate={displayDate}\n selectedDate={selectedDate}\n onDateSelect={enabledCalendars.startsWith('dd') ? zoomIntoMonth : onDateSelect}\n />\n )}\n {calendar === 'year' && (\n <YearPicker displayDate={displayDate} selectedDate={selectedDate} onDateSelect={zoomIntoYear} />\n )}\n </AsyncDataLoader>\n </AsyncDataStore>\n </div>\n );\n});\n\nDatePickerRenderFunc.displayName = 'DatePickerRenderFunc';\n\nexport const DatePicker = WithArrowNavigationHOC(DatePickerRenderFunc);\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { DatePickerProps, DateType } from '@hh.ru/magritte-ui-date-picker/types';
2
+ declare const MobileDatePickerWithScroll: import("react").ForwardRefExoticComponent<Omit<DatePickerProps, "displayDate" | "mobileScrollHorizontal"> & {
3
+ displayDate: DateType;
4
+ } & import("react").RefAttributes<HTMLDivElement>>;
5
+ export default MobileDatePickerWithScroll;
@@ -0,0 +1,71 @@
1
+ import './../index.css';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useCallback } from 'react';
4
+ import { add } from 'date-fns';
5
+ import { AsyncDataLoader } from '../AsyncDataLoader.js';
6
+ import { AsyncDataStore } from '../AsyncDataStore.js';
7
+ import { DayPicker } from '../DayPicker.js';
8
+ import { Header } from '../Header.js';
9
+ import { InfiniteScroll } from '../InfiniteScroll.js';
10
+ import { MonthPicker } from '../MonthPicker.js';
11
+ import { Weekdays } from '../Weekdays.js';
12
+ import { YearPicker } from '../YearPicker.js';
13
+ import { useDatePickerControls } from '../useDatePickerControls.js';
14
+ import { useMobileHorizontalScroll } from '../useMobileHorizontalScroll.js';
15
+ import { Divider } from '@hh.ru/magritte-ui-divider';
16
+ import { s as styles } from '../date-picker-1kIH437q.js';
17
+ import 'classnames';
18
+ import '../AsyncDataContext.js';
19
+ import '@hh.ru/magritte-ui-loader';
20
+ import 'date-fns/constants';
21
+ import '@hh.ru/magritte-common-use-disabled';
22
+ import '@hh.ru/magritte-ui-bottom-sheet';
23
+ import '../useDisabledDatesFunc.js';
24
+ import '../useIntervalPicker.js';
25
+ import '../utils.js';
26
+ import '@hh.ru/magritte-ui-icon/icon';
27
+ import '@hh.ru/magritte-ui-navigation-bar';
28
+ import '@hh.ru/magritte-ui-spacing';
29
+ import '@hh.ru/magritte-ui-tooltip';
30
+ import '@hh.ru/magritte-ui-typography';
31
+ import '@hh.ru/magritte-common-func-utils';
32
+ import '@hh.ru/magritte-internal-custom-scroll';
33
+
34
+ const MobileDatePickerWithScroll = forwardRef((props, ref) => {
35
+ const { disabledDates, disabledDatesFunc, displayDate, enabledCalendars, minDate, maxDate, selectedDate,
36
+ // колбеки
37
+ onDisplayDateChange, onDateSelect,
38
+ // настройки внешнего вида
39
+ activeHeader, alignHeader, headerMonthFormat, locale, showAdjacentDays = true, showControls, showHeader = true, showHeaderDate, showDivider = true, showWeekdays = true, } = props;
40
+ const { visibleDate, changeDate, onVisibleItemChange, onTouchEnd } = useMobileHorizontalScroll(displayDate, onDisplayDateChange);
41
+ const { calendar, switchCalendar, zoomIntoMonth, zoomIntoYear, goToNextPeriod, goToPrevPeriod } = useDatePickerControls(enabledCalendars, visibleDate, changeDate);
42
+ const makeDate = useCallback((index) => {
43
+ if (calendar === 'day') {
44
+ return add(displayDate, { months: index });
45
+ }
46
+ if (calendar === 'month') {
47
+ return add(displayDate, { years: index });
48
+ }
49
+ return add(displayDate, { years: 12 * index });
50
+ }, [displayDate, calendar]);
51
+ const renderDate = useCallback((date, isFocusAvailable) => {
52
+ return (jsxs(AsyncDataLoader, { children: [calendar === 'day' && (jsx(DayPicker, { disabledDates: disabledDates, displayDate: date, selectedDate: selectedDate, onDateSelect: onDateSelect, showAdjacentDays: showAdjacentDays, minDate: minDate, maxDate: maxDate, isFocusAvailable: isFocusAvailable, fixedWeeks: true })), calendar === 'month' && (jsx(MonthPicker, { locale: locale, displayDate: date, selectedDate: selectedDate, onDateSelect: enabledCalendars.startsWith('dd') ? zoomIntoMonth : onDateSelect, isFocusAvailable: isFocusAvailable })), calendar === 'year' && (jsx(YearPicker, { displayDate: date, selectedDate: selectedDate, onDateSelect: zoomIntoYear, isFocusAvailable: isFocusAvailable }))] }));
53
+ }, [
54
+ disabledDates,
55
+ onDateSelect,
56
+ showAdjacentDays,
57
+ selectedDate,
58
+ calendar,
59
+ zoomIntoMonth,
60
+ zoomIntoYear,
61
+ enabledCalendars,
62
+ locale,
63
+ minDate,
64
+ maxDate,
65
+ ]);
66
+ return (jsxs("div", { className: styles.layoutVertical, ref: ref, children: [showHeader && (jsx(Header, { calendar: calendar, displayDate: visibleDate, activeHeader: activeHeader, alignHeader: alignHeader, goToNextPeriod: goToNextPeriod, goToPrevPeriod: goToPrevPeriod, headerMonthFormat: headerMonthFormat, locale: locale, showControls: showControls, showHeaderDate: showHeaderDate, switchCalendar: switchCalendar })), showWeekdays && calendar === 'day' && jsx(Weekdays, { locale: locale }), showDivider && (showHeader || showWeekdays) && jsx(Divider, {}), jsx(AsyncDataStore, { disabledDatesFunc: disabledDatesFunc, parallelLoadersLimit: 1, children: jsx(InfiniteScroll, { axis: "horizontal", initialRenderedItems: 5, invisibleThreshold: 100, visibleThreshold: 50, makeItemFunc: makeDate, renderItemFunc: renderDate, onTouchEnd: onTouchEnd, onVisibleItemChange: onVisibleItemChange }) })] }));
67
+ });
68
+ MobileDatePickerWithScroll.displayName = 'MobileDatePickerWithScroll';
69
+
70
+ export { MobileDatePickerWithScroll as default };
71
+ //# sourceMappingURL=MobileDatePickerWithScroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileDatePickerWithScroll.js","sources":["../../src/DatePicker/MobileDatePickerWithScroll.tsx"],"sourcesContent":["import { forwardRef, useCallback } from 'react';\nimport { add } from 'date-fns';\n\nimport { AsyncDataLoader } from '@hh.ru/magritte-ui-date-picker/AsyncDataLoader';\nimport { AsyncDataStore } from '@hh.ru/magritte-ui-date-picker/AsyncDataStore';\nimport { DayPicker } from '@hh.ru/magritte-ui-date-picker/DayPicker';\nimport { Header } from '@hh.ru/magritte-ui-date-picker/Header';\nimport { InfiniteScroll } from '@hh.ru/magritte-ui-date-picker/InfiniteScroll';\nimport { MonthPicker } from '@hh.ru/magritte-ui-date-picker/MonthPicker';\nimport { Weekdays } from '@hh.ru/magritte-ui-date-picker/Weekdays';\nimport { YearPicker } from '@hh.ru/magritte-ui-date-picker/YearPicker';\nimport { DatePickerProps, DateType } from '@hh.ru/magritte-ui-date-picker/types';\nimport { useDatePickerControls } from '@hh.ru/magritte-ui-date-picker/useDatePickerControls';\nimport { useMobileHorizontalScroll } from '@hh.ru/magritte-ui-date-picker/useMobileHorizontalScroll';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\n\nimport styles from '../date-picker.less';\n\ntype MobileDatePickerWithScrollProps = Omit<DatePickerProps, 'mobileScrollHorizontal' | 'displayDate'> & {\n displayDate: DateType;\n};\n\nconst MobileDatePickerWithScroll = forwardRef<HTMLDivElement, MobileDatePickerWithScrollProps>((props, ref) => {\n const {\n disabledDates,\n disabledDatesFunc,\n displayDate,\n enabledCalendars,\n minDate,\n maxDate,\n selectedDate,\n // колбеки\n onDisplayDateChange,\n onDateSelect,\n // настройки внешнего вида\n activeHeader,\n alignHeader,\n headerMonthFormat,\n locale,\n showAdjacentDays = true,\n showControls,\n showHeader = true,\n showHeaderDate,\n showDivider = true,\n showWeekdays = true,\n } = props;\n\n const { visibleDate, changeDate, onVisibleItemChange, onTouchEnd } = useMobileHorizontalScroll(\n displayDate,\n onDisplayDateChange\n );\n\n const { calendar, switchCalendar, zoomIntoMonth, zoomIntoYear, goToNextPeriod, goToPrevPeriod } =\n useDatePickerControls(enabledCalendars, visibleDate, changeDate);\n\n const makeDate = useCallback(\n (index: number) => {\n if (calendar === 'day') {\n return add(displayDate, { months: index });\n }\n if (calendar === 'month') {\n return add(displayDate, { years: index });\n }\n\n return add(displayDate, { years: 12 * index });\n },\n [displayDate, calendar]\n );\n\n const renderDate = useCallback(\n (date: DateType, isFocusAvailable?: boolean) => {\n return (\n <AsyncDataLoader>\n {calendar === 'day' && (\n <DayPicker\n disabledDates={disabledDates}\n displayDate={date}\n selectedDate={selectedDate}\n onDateSelect={onDateSelect}\n showAdjacentDays={showAdjacentDays}\n minDate={minDate}\n maxDate={maxDate}\n isFocusAvailable={isFocusAvailable}\n fixedWeeks\n />\n )}\n {calendar === 'month' && (\n <MonthPicker\n locale={locale}\n displayDate={date}\n selectedDate={selectedDate}\n onDateSelect={enabledCalendars.startsWith('dd') ? zoomIntoMonth : onDateSelect}\n isFocusAvailable={isFocusAvailable}\n />\n )}\n {calendar === 'year' && (\n <YearPicker\n displayDate={date}\n selectedDate={selectedDate}\n onDateSelect={zoomIntoYear}\n isFocusAvailable={isFocusAvailable}\n />\n )}\n </AsyncDataLoader>\n );\n },\n [\n disabledDates,\n onDateSelect,\n showAdjacentDays,\n selectedDate,\n calendar,\n zoomIntoMonth,\n zoomIntoYear,\n enabledCalendars,\n locale,\n minDate,\n maxDate,\n ]\n );\n\n return (\n <div className={styles.layoutVertical} ref={ref}>\n {showHeader && (\n <Header\n calendar={calendar}\n displayDate={visibleDate}\n activeHeader={activeHeader}\n alignHeader={alignHeader}\n goToNextPeriod={goToNextPeriod}\n goToPrevPeriod={goToPrevPeriod}\n headerMonthFormat={headerMonthFormat}\n locale={locale}\n showControls={showControls}\n showHeaderDate={showHeaderDate}\n switchCalendar={switchCalendar}\n />\n )}\n {showWeekdays && calendar === 'day' && <Weekdays locale={locale} />}\n {showDivider && (showHeader || showWeekdays) && <Divider />}\n <AsyncDataStore disabledDatesFunc={disabledDatesFunc} parallelLoadersLimit={1}>\n <InfiniteScroll\n axis=\"horizontal\"\n initialRenderedItems={5}\n invisibleThreshold={100}\n visibleThreshold={50}\n makeItemFunc={makeDate}\n renderItemFunc={renderDate}\n onTouchEnd={onTouchEnd}\n onVisibleItemChange={onVisibleItemChange}\n />\n </AsyncDataStore>\n </div>\n );\n});\n\nMobileDatePickerWithScroll.displayName = 'MobileDatePickerWithScroll';\n\nexport default MobileDatePickerWithScroll;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DatePickerProps } from '@hh.ru/magritte-ui-date-picker';
2
+ export declare const UncontrolledDatePicker: import("react").ForwardRefExoticComponent<DatePickerProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,56 @@
1
+ import './../index.css';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useState, useCallback } from 'react';
4
+ import { useDisplayDate } from '../utils.js';
5
+ import { DatePicker } from './DatePicker.js';
6
+ import 'date-fns';
7
+ import 'date-fns/constants';
8
+ import '@hh.ru/magritte-ui-breakpoint';
9
+ import '../AsyncDataLoader.js';
10
+ import 'classnames';
11
+ import '../AsyncDataContext.js';
12
+ import '@hh.ru/magritte-ui-loader';
13
+ import '../date-picker-1kIH437q.js';
14
+ import '../AsyncDataStore.js';
15
+ import './MobileDatePickerWithScroll.js';
16
+ import '../DayPicker.js';
17
+ import '@hh.ru/magritte-common-use-disabled';
18
+ import '@hh.ru/magritte-ui-bottom-sheet';
19
+ import '../useDisabledDatesFunc.js';
20
+ import '../useIntervalPicker.js';
21
+ import '@hh.ru/magritte-ui-icon/icon';
22
+ import '@hh.ru/magritte-ui-navigation-bar';
23
+ import '@hh.ru/magritte-ui-spacing';
24
+ import '@hh.ru/magritte-ui-tooltip';
25
+ import '@hh.ru/magritte-ui-typography';
26
+ import '../Header.js';
27
+ import '../InfiniteScroll.js';
28
+ import '@hh.ru/magritte-common-func-utils';
29
+ import '@hh.ru/magritte-internal-custom-scroll';
30
+ import '../MonthPicker.js';
31
+ import '../Weekdays.js';
32
+ import '../YearPicker.js';
33
+ import '../useDatePickerControls.js';
34
+ import '../useMobileHorizontalScroll.js';
35
+ import '@hh.ru/magritte-ui-divider';
36
+ import '../WithArrowNavigationHOC.js';
37
+ import '@hh.ru/magritte-common-keyboard';
38
+ import '@hh.ru/magritte-common-use-multiple-refs';
39
+
40
+ const UncontrolledDatePicker = forwardRef(({ displayDate: initialDisplayDate, selectedDate: initialSelectedDate, onDisplayDateChange, onDateSelect, ...props }, ref) => {
41
+ const [displayDate, setDisplayDate] = useState(useDisplayDate(initialDisplayDate, initialSelectedDate));
42
+ const [selectedDate, setSelectedDate] = useState(initialSelectedDate ?? null);
43
+ const handleDisplayDateChange = useCallback((value) => {
44
+ onDisplayDateChange?.(value);
45
+ setDisplayDate(value);
46
+ }, [onDisplayDateChange, setDisplayDate]);
47
+ const handleDateSelect = useCallback((value) => {
48
+ onDateSelect?.(value);
49
+ setSelectedDate(value);
50
+ }, [onDateSelect, setSelectedDate]);
51
+ return (jsx(DatePicker, { ...props, displayDate: displayDate, selectedDate: selectedDate, onDisplayDateChange: handleDisplayDateChange, onDateSelect: handleDateSelect, ref: ref }));
52
+ });
53
+ UncontrolledDatePicker.displayName = 'UncontrolledDatePicker';
54
+
55
+ export { UncontrolledDatePicker };
56
+ //# sourceMappingURL=UncontrolledDatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UncontrolledDatePicker.js","sources":["../../src/DatePicker/UncontrolledDatePicker.tsx"],"sourcesContent":["import { useCallback, useState, forwardRef } from 'react';\n\nimport { DatePicker, DatePickerProps, DateType } from '@hh.ru/magritte-ui-date-picker';\nimport { useDisplayDate } from '@hh.ru/magritte-ui-date-picker/utils';\n\nexport const UncontrolledDatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n displayDate: initialDisplayDate,\n selectedDate: initialSelectedDate,\n onDisplayDateChange,\n onDateSelect,\n ...props\n },\n ref\n ) => {\n const [displayDate, setDisplayDate] = useState<DateType>(\n useDisplayDate(initialDisplayDate, initialSelectedDate)\n );\n const [selectedDate, setSelectedDate] = useState<DateType | null>(initialSelectedDate ?? null);\n\n const handleDisplayDateChange = useCallback(\n (value: DateType) => {\n onDisplayDateChange?.(value);\n setDisplayDate(value);\n },\n [onDisplayDateChange, setDisplayDate]\n );\n\n const handleDateSelect = useCallback(\n (value: DateType) => {\n onDateSelect?.(value);\n setSelectedDate(value);\n },\n [onDateSelect, setSelectedDate]\n );\n\n return (\n <DatePicker\n {...props}\n displayDate={displayDate}\n selectedDate={selectedDate}\n onDisplayDateChange={handleDisplayDateChange}\n onDateSelect={handleDateSelect}\n ref={ref}\n />\n );\n }\n);\n\nUncontrolledDatePicker.displayName = 'UncontrolledDatePicker';\n"],"names":["_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKa,MAAA,sBAAsB,GAAG,UAAU,CAC5C,CACI,EACI,WAAW,EAAE,kBAAkB,EAC/B,YAAY,EAAE,mBAAmB,EACjC,mBAAmB,EACnB,YAAY,EACZ,GAAG,KAAK,EACX,EACD,GAAG,KACH;AACA,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAC1C,cAAc,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAC1D,CAAC;AACF,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAkB,mBAAmB,IAAI,IAAI,CAAC,CAAC;AAE/F,IAAA,MAAM,uBAAuB,GAAG,WAAW,CACvC,CAAC,KAAe,KAAI;AAChB,QAAA,mBAAmB,GAAG,KAAK,CAAC,CAAC;QAC7B,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,EACD,CAAC,mBAAmB,EAAE,cAAc,CAAC,CACxC,CAAC;AAEF,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAChC,CAAC,KAAe,KAAI;AAChB,QAAA,YAAY,GAAG,KAAK,CAAC,CAAC;QACtB,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAC,EACD,CAAC,YAAY,EAAE,eAAe,CAAC,CAClC,CAAC;IAEF,QACIA,GAAC,CAAA,UAAU,EACH,EAAA,GAAA,KAAK,EACT,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,uBAAuB,EAC5C,YAAY,EAAE,gBAAgB,EAC9B,GAAG,EAAE,GAAG,EACV,CAAA,EACJ;AACN,CAAC,EACH;AAEF,sBAAsB,CAAC,WAAW,GAAG,wBAAwB;;;;"}
package/DayPicker.js CHANGED
@@ -14,11 +14,11 @@ import { NavigationBar } from '@hh.ru/magritte-ui-navigation-bar';
14
14
  import { VSpacing } from '@hh.ru/magritte-ui-spacing';
15
15
  import { TooltipHover } from '@hh.ru/magritte-ui-tooltip';
16
16
  import { Text } from '@hh.ru/magritte-ui-typography';
17
- import { s as styles } from './date-picker-BV10jbxZ.js';
17
+ import { s as styles } from './date-picker-1kIH437q.js';
18
18
  import './AsyncDataContext.js';
19
19
 
20
- const DayPicker = ({ disabledDates, minDate, maxDate, displayDate, selectedDate, showAdjacentDays, onDateSelect, }) => {
21
- const dates = useDayPickerDates(displayDate);
20
+ const DayPicker = ({ disabledDates, minDate, maxDate, displayDate, selectedDate, showAdjacentDays, onDateSelect, fixedWeeks, isFocusAvailable = true, }) => {
21
+ const dates = useDayPickerDates(displayDate, fixedWeeks);
22
22
  const disabledDatesFunc = useDisabledDatesFunc(dates[0], dates[dates.length - 1], disabledDates, minDate, maxDate);
23
23
  const forceDisabled = useDisabled();
24
24
  const onClickHandlers = useMemo(() => {
@@ -31,20 +31,20 @@ const DayPicker = ({ disabledDates, minDate, maxDate, displayDate, selectedDate,
31
31
  const isDisabled = isAdjacent || forceDisabled || disabledDatesFunc(date);
32
32
  const isSelected = !!selectedDate && isSameDay(date, selectedDate);
33
33
  const display = !isAdjacent || showAdjacentDays;
34
- return (jsx("div", { className: styles.item, children: display && (jsx("button", { className: classnames(styles.text, {
34
+ return (jsx("div", { className: styles.item, children: display ? (jsx("button", { className: classnames(styles.text, {
35
35
  [styles.textDisabled]: isDisabled,
36
36
  [styles.textSelected]: isSelected,
37
37
  [styles.textToday]: isToday(date),
38
38
  [styles.textUnselected]: !isDisabled && !isSelected,
39
- }), disabled: isDisabled || isSelected, onClick: onClickHandlers[index], "data-date": format(date, 'yyyy-MM-dd'), "data-qa": classnames('date-picker-day', {
39
+ }), tabIndex: isFocusAvailable ? undefined : -1, disabled: isDisabled || isSelected, onClick: onClickHandlers[index], "data-date": format(date, 'yyyy-MM-dd'), "data-qa": classnames('date-picker-day', {
40
40
  'date-picker-day-disabled': isDisabled,
41
41
  'date-picker-day-selected': isSelected,
42
42
  'date-picker-day-today': isToday(date),
43
- }), children: format(date, 'dd') })) }, `${date}`));
43
+ }), children: format(date, 'd') })) : (jsx("div", { className: styles.textEmpty })) }, `${date}`));
44
44
  }) }));
45
45
  };
46
- const IntervalDayPicker = ({ disabledDates, minDate, maxDate, displayDate, selectionStart, selectionEnd, hoveredDate, dragState, onStartSelect, onEndSelect, onDateHover, onDateDrag, showAdjacentDays, }) => {
47
- const dates = useDayPickerDates(displayDate);
46
+ const IntervalDayPicker = ({ disabledDates, minDate, maxDate, displayDate, selectionStart, selectionEnd, hoveredDate, dragState, onStartSelect, onEndSelect, onDateHover, onDateDrag, showAdjacentDays, fixedWeeks, isFocusAvailable = true, }) => {
47
+ const dates = useDayPickerDates(displayDate, fixedWeeks);
48
48
  const disabledDatesFunc = useDisabledDatesFunc(dates[0], dates[dates.length - 1], disabledDates, minDate, maxDate);
49
49
  const datesProps = useIntervalPicker({
50
50
  dates,
@@ -76,7 +76,7 @@ const IntervalDayPicker = ({ disabledDates, minDate, maxDate, displayDate, selec
76
76
  [styles.itemIntervalEnd]: isIntervalEnd,
77
77
  [styles.itemIntervalRowStart]: isIntervalRowStart,
78
78
  [styles.itemIntervalRowEnd]: isIntervalRowEnd,
79
- }), children: display && (jsxs(Fragment, { children: [jsx("button", { ...mouseHandlers, ...(!isDisabled ? dragSourceHandlers : {}), ...(!isDisabled ? dropTargetHandlers : {}), className: classnames(styles.text, {
79
+ }), children: display ? (jsxs(Fragment, { children: [jsx("button", { ...mouseHandlers, ...(!isDisabled ? dragSourceHandlers : {}), ...(!isDisabled ? dropTargetHandlers : {}), className: classnames(styles.text, {
80
80
  [styles.textDisabled]: isDisabled,
81
81
  [styles.textSelected]: isSelected,
82
82
  [styles.textDraggable]: !isDisabled && isDraggable,
@@ -84,19 +84,19 @@ const IntervalDayPicker = ({ disabledDates, minDate, maxDate, displayDate, selec
84
84
  [styles.textDropTarget]: isDropTarget,
85
85
  [styles.textToday]: isToday(date),
86
86
  [styles.textUnselected]: !isDisabled && !isSelected && !isDragSource && !isDropTarget,
87
- }), disabled: isDisabled || isSelected || isDragSource, draggable: !isDisabled && isDraggable, "data-date": format(date, 'yyyy-MM-dd'), "data-qa": classnames('date-picker-day', {
87
+ }), disabled: isDisabled || isDragSource, draggable: !isDisabled && isDraggable, "data-date": format(date, 'yyyy-MM-dd'), tabIndex: isFocusAvailable ? undefined : -1, "data-qa": classnames('date-picker-day', {
88
88
  'date-picker-day-disabled': isDisabled,
89
89
  'date-picker-day-selected': isSelected,
90
90
  'date-picker-day-today': isToday(date),
91
- }), children: format(date, 'dd') }), isWithinInterval && jsx("div", { className: styles.substrate })] })) }, `${date}`));
91
+ }), children: format(date, 'd') }), isWithinInterval && jsx("div", { className: styles.substrate })] })) : (jsx("div", { className: styles.textEmpty })) }, `${date}`));
92
92
  }) }));
93
93
  };
94
94
  const InfoDayTooltipWrapper = ({ children, tooltip }) => {
95
95
  const activatorRef = useRef(null);
96
96
  return (jsxs(Fragment$1, { children: [jsx("div", { className: styles.item, ref: activatorRef, children: children }), tooltip && (jsx(TooltipHover, { placement: "top-center", activatorRef: activatorRef, children: tooltip }))] }));
97
97
  };
98
- const InfoDayPicker = ({ displayDate, holidays: _holidays, shortWorkdays: _shortWorkdays, }) => {
99
- const dates = useDayPickerDates(displayDate);
98
+ const InfoDayPicker = ({ displayDate, holidays: _holidays, shortWorkdays: _shortWorkdays, fixedWeeks, isFocusAvailable = true, }) => {
99
+ const dates = useDayPickerDates(displayDate, fixedWeeks);
100
100
  const [bottomSheetState, setBottomSheetState] = useState({ show: false, text: '', header: '' });
101
101
  const onCloseBottomSheet = () => setBottomSheetState({ show: false, text: '', header: '' });
102
102
  const holidays = useMemo(() => _holidays && flatten(_holidays), [_holidays]);
@@ -108,7 +108,7 @@ const InfoDayPicker = ({ displayDate, holidays: _holidays, shortWorkdays: _short
108
108
  const isWorkDay = !holiday && !shortWorkday;
109
109
  const info = getInfoByDateType(holiday, shortWorkday);
110
110
  const display = !isAdjacent;
111
- return (jsx(InfoDayTooltipWrapper, { tooltip: info?.text, children: display && (jsxs(Fragment, { children: [jsx("button", { className: classnames(styles.text, {
111
+ return (jsx(InfoDayTooltipWrapper, { tooltip: info?.text, children: display ? (jsxs(Fragment, { children: [jsx("button", { className: classnames(styles.text, {
112
112
  [styles.textHoliday]: holiday,
113
113
  [styles.textShortWorkday]: shortWorkday,
114
114
  [styles.textWorkday]: isWorkDay,
@@ -116,13 +116,13 @@ const InfoDayPicker = ({ displayDate, holidays: _holidays, shortWorkdays: _short
116
116
  if (info) {
117
117
  setBottomSheetState({ show: true, ...info });
118
118
  }
119
- }, disabled: !info, "data-date": format(date, 'yyyy-MM-dd'), "data-qa": classnames('date-picker-day', {
119
+ }, tabIndex: isFocusAvailable ? undefined : -1, disabled: !info, "data-date": format(date, 'yyyy-MM-dd'), "data-qa": classnames('date-picker-day', {
120
120
  'date-picker-day-workday': isWorkDay,
121
121
  'date-picker-day-short-workday': shortWorkday,
122
122
  'date-picker-day-holyday': holiday,
123
123
  'date-picker-day-today': isToday(date),
124
- }), children: format(date, 'dd') }), jsx("div", { className: styles.substrate })] })) }, `${date}`));
125
- }), jsxs(BottomSheet, { visible: bottomSheetState.show, header: jsx(NavigationBar, { title: bottomSheetState.header, right: jsx(CrossOutlinedSize24, { onClick: onCloseBottomSheet }), showDivider: "always" }), onClose: onCloseBottomSheet, children: [jsx(Text, { Element: "span", typography: "label-2-regular", children: bottomSheetState.text }), jsx(VSpacing, { default: 48 })] })] }));
124
+ }), children: format(date, 'd') }), jsx("div", { className: styles.substrate })] })) : (jsx("div", { className: styles.textEmpty })) }, `${date}`));
125
+ }), jsxs(BottomSheet, { visible: bottomSheetState.show, header: jsx(NavigationBar, { title: bottomSheetState.header, right: jsx(CrossOutlinedSize24, { onClick: onCloseBottomSheet, "data-qa": "date-picker-bs-close" }), showDivider: "always" }), onClose: onCloseBottomSheet, children: [jsx(Text, { Element: "span", typography: "label-2-regular", children: bottomSheetState.text }), jsx(VSpacing, { default: 48 })] })] }));
126
126
  };
127
127
 
128
128
  export { DayPicker, InfoDayPicker, IntervalDayPicker };
package/DayPicker.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"DayPicker.js","sources":["../src/DayPicker.tsx"],"sourcesContent":["import { Fragment, FC, useMemo, useState, useRef, ReactNode } from 'react';\nimport classnames from 'classnames';\nimport { format, isFirstDayOfMonth, isLastDayOfMonth, isSameDay, isSameMonth, isToday } from 'date-fns';\nimport { daysInWeek as DAYS_IN_WEEK } from 'date-fns/constants';\n\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';\nimport { DayPickerProps, IntervalDayPickerProps, InfoDayPickerProps } from '@hh.ru/magritte-ui-date-picker/types';\nimport { useDisabledDatesFunc } from '@hh.ru/magritte-ui-date-picker/useDisabledDatesFunc';\nimport { useIntervalPicker } from '@hh.ru/magritte-ui-date-picker/useIntervalPicker';\nimport { flatten, useDayPickerDates, InfoDay, getInfoByDateType } from '@hh.ru/magritte-ui-date-picker/utils';\nimport { CrossOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { NavigationBar } from '@hh.ru/magritte-ui-navigation-bar';\nimport { VSpacing } from '@hh.ru/magritte-ui-spacing';\nimport { TooltipHover } from '@hh.ru/magritte-ui-tooltip';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './date-picker.less';\n\nexport const DayPicker: FC<DayPickerProps> = ({\n disabledDates,\n minDate,\n maxDate,\n displayDate,\n selectedDate,\n showAdjacentDays,\n onDateSelect,\n}) => {\n const dates = useDayPickerDates(displayDate);\n const disabledDatesFunc = useDisabledDatesFunc(dates[0], dates[dates.length - 1], disabledDates, minDate, maxDate);\n const forceDisabled = useDisabled();\n\n const onClickHandlers = useMemo(() => {\n return dates.map((date) => {\n return () => onDateSelect?.(date);\n });\n }, [dates, onDateSelect]);\n\n return (\n <div className={classnames(styles.calendar, styles.calendarDays)} data-qa=\"date-picker-days\">\n {dates.map((date, index) => {\n const isAdjacent = !isSameMonth(date, displayDate);\n const isDisabled = isAdjacent || forceDisabled || disabledDatesFunc(date);\n const isSelected = !!selectedDate && isSameDay(date, selectedDate);\n const display = !isAdjacent || showAdjacentDays;\n\n return (\n <div className={styles.item} key={`${date}`}>\n {display && (\n <button\n className={classnames(styles.text, {\n [styles.textDisabled]: isDisabled,\n [styles.textSelected]: isSelected,\n [styles.textToday]: isToday(date),\n [styles.textUnselected]: !isDisabled && !isSelected,\n })}\n disabled={isDisabled || isSelected}\n onClick={onClickHandlers[index]}\n data-date={format(date, 'yyyy-MM-dd')}\n data-qa={classnames('date-picker-day', {\n 'date-picker-day-disabled': isDisabled,\n 'date-picker-day-selected': isSelected,\n 'date-picker-day-today': isToday(date),\n })}\n >\n {format(date, 'dd')}\n </button>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport const IntervalDayPicker: FC<IntervalDayPickerProps> = ({\n disabledDates,\n minDate,\n maxDate,\n displayDate,\n selectionStart,\n selectionEnd,\n hoveredDate,\n dragState,\n onStartSelect,\n onEndSelect,\n onDateHover,\n onDateDrag,\n showAdjacentDays,\n}) => {\n const dates = useDayPickerDates(displayDate);\n const disabledDatesFunc = useDisabledDatesFunc(dates[0], dates[dates.length - 1], disabledDates, minDate, maxDate);\n\n const datesProps = useIntervalPicker({\n dates,\n disabledDatesFunc,\n selectionStart,\n selectionEnd,\n hoveredDate,\n dragState,\n onStartSelect,\n onEndSelect,\n onDateHover,\n onDateDrag,\n isEqual: isSameDay,\n });\n\n return (\n <div className={classnames(styles.calendar, styles.calendarDays)} data-qa=\"date-picker-days\">\n {dates.map((date, index) => {\n const isAdjacent = !isSameMonth(date, displayDate);\n const {\n isDisabled: _isDisabled,\n isIntervalStart,\n isIntervalEnd,\n isSelected,\n isDraggable,\n isDragSource,\n isDropTarget,\n isWithinInterval,\n mouseHandlers,\n dragSourceHandlers,\n dropTargetHandlers,\n } = datesProps[index];\n const isDisabled = isAdjacent || _isDisabled;\n const isIntervalRowStart =\n isWithinInterval &&\n !isIntervalStart &&\n (index % DAYS_IN_WEEK === 0 || (!showAdjacentDays && isFirstDayOfMonth(date)));\n const isIntervalRowEnd =\n isWithinInterval &&\n !isIntervalEnd &&\n (index % DAYS_IN_WEEK === DAYS_IN_WEEK - 1 || (!showAdjacentDays && isLastDayOfMonth(date)));\n const display = !isAdjacent || showAdjacentDays;\n\n return (\n <div\n className={classnames(styles.item, {\n [styles.itemInterval]: isWithinInterval,\n [styles.itemIntervalStart]: isIntervalStart,\n [styles.itemIntervalEnd]: isIntervalEnd,\n [styles.itemIntervalRowStart]: isIntervalRowStart,\n [styles.itemIntervalRowEnd]: isIntervalRowEnd,\n })}\n key={`${date}`}\n >\n {display && (\n <Fragment>\n <button\n {...mouseHandlers}\n {...(!isDisabled ? dragSourceHandlers : {})}\n {...(!isDisabled ? dropTargetHandlers : {})}\n className={classnames(styles.text, {\n [styles.textDisabled]: isDisabled,\n [styles.textSelected]: isSelected,\n [styles.textDraggable]: !isDisabled && isDraggable,\n [styles.textDragSource]: isDragSource,\n [styles.textDropTarget]: isDropTarget,\n [styles.textToday]: isToday(date),\n [styles.textUnselected]:\n !isDisabled && !isSelected && !isDragSource && !isDropTarget,\n })}\n disabled={isDisabled || isSelected || isDragSource}\n draggable={!isDisabled && isDraggable}\n data-date={format(date, 'yyyy-MM-dd')}\n data-qa={classnames('date-picker-day', {\n 'date-picker-day-disabled': isDisabled,\n 'date-picker-day-selected': isSelected,\n 'date-picker-day-today': isToday(date),\n })}\n >\n {format(date, 'dd')}\n </button>\n {isWithinInterval && <div className={styles.substrate} />}\n </Fragment>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\ninterface BottomSheetState extends InfoDay {\n show: boolean;\n}\n\nconst InfoDayTooltipWrapper: FC<{ children: ReactNode; tooltip: ReactNode }> = ({ children, tooltip }) => {\n const activatorRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <>\n <div className={styles.item} ref={activatorRef}>\n {children}\n </div>\n {tooltip && (\n <TooltipHover placement=\"top-center\" activatorRef={activatorRef}>\n {tooltip}\n </TooltipHover>\n )}\n </>\n );\n};\n\nexport const InfoDayPicker: FC<InfoDayPickerProps> = ({\n displayDate,\n holidays: _holidays,\n shortWorkdays: _shortWorkdays,\n}) => {\n const dates = useDayPickerDates(displayDate);\n const [bottomSheetState, setBottomSheetState] = useState<BottomSheetState>({ show: false, text: '', header: '' });\n const onCloseBottomSheet = () => setBottomSheetState({ show: false, text: '', header: '' });\n\n const holidays = useMemo(() => _holidays && flatten(_holidays), [_holidays]);\n const shortWorkdays = useMemo(() => _shortWorkdays && flatten(_shortWorkdays), [_shortWorkdays]);\n\n return (\n <div className={classnames(styles.calendar, styles.calendarDays)} data-qa=\"date-picker-days\">\n {dates.map((date) => {\n const isAdjacent = !isSameMonth(date, displayDate);\n const holiday = holidays?.find((holiday) => isSameDay(date, holiday.date));\n const shortWorkday = shortWorkdays?.find((shortWorkday) => isSameDay(date, shortWorkday.date));\n const isWorkDay = !holiday && !shortWorkday;\n const info = getInfoByDateType(holiday, shortWorkday);\n const display = !isAdjacent;\n\n return (\n <InfoDayTooltipWrapper key={`${date}`} tooltip={info?.text}>\n {display && (\n <Fragment>\n <button\n className={classnames(styles.text, {\n [styles.textHoliday]: holiday,\n [styles.textShortWorkday]: shortWorkday,\n [styles.textWorkday]: isWorkDay,\n })}\n onClick={() => {\n if (info) {\n setBottomSheetState({ show: true, ...info });\n }\n }}\n disabled={!info}\n data-date={format(date, 'yyyy-MM-dd')}\n data-qa={classnames('date-picker-day', {\n 'date-picker-day-workday': isWorkDay,\n 'date-picker-day-short-workday': shortWorkday,\n 'date-picker-day-holyday': holiday,\n 'date-picker-day-today': isToday(date),\n })}\n >\n {format(date, 'dd')}\n </button>\n <div className={styles.substrate} />\n </Fragment>\n )}\n </InfoDayTooltipWrapper>\n );\n })}\n\n <BottomSheet\n visible={bottomSheetState.show}\n header={\n <NavigationBar\n title={bottomSheetState.header}\n right={<CrossOutlinedSize24 onClick={onCloseBottomSheet} />}\n showDivider=\"always\"\n />\n }\n onClose={onCloseBottomSheet}\n >\n <Text Element=\"span\" typography=\"label-2-regular\">\n {bottomSheetState.text}\n </Text>\n <VSpacing default={48} />\n </BottomSheet>\n </div>\n );\n};\n"],"names":["_jsx","DAYS_IN_WEEK","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"DayPicker.js","sources":["../src/DayPicker.tsx"],"sourcesContent":["import { Fragment, FC, useMemo, useState, useRef, ReactNode } from 'react';\nimport classnames from 'classnames';\nimport { format, isFirstDayOfMonth, isLastDayOfMonth, isSameDay, isSameMonth, isToday } from 'date-fns';\nimport { daysInWeek as DAYS_IN_WEEK } from 'date-fns/constants';\n\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';\nimport { DayPickerProps, IntervalDayPickerProps, InfoDayPickerProps } from '@hh.ru/magritte-ui-date-picker/types';\nimport { useDisabledDatesFunc } from '@hh.ru/magritte-ui-date-picker/useDisabledDatesFunc';\nimport { useIntervalPicker } from '@hh.ru/magritte-ui-date-picker/useIntervalPicker';\nimport { flatten, useDayPickerDates, InfoDay, getInfoByDateType } from '@hh.ru/magritte-ui-date-picker/utils';\nimport { CrossOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { NavigationBar } from '@hh.ru/magritte-ui-navigation-bar';\nimport { VSpacing } from '@hh.ru/magritte-ui-spacing';\nimport { TooltipHover } from '@hh.ru/magritte-ui-tooltip';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './date-picker.less';\n\nexport const DayPicker: FC<DayPickerProps> = ({\n disabledDates,\n minDate,\n maxDate,\n displayDate,\n selectedDate,\n showAdjacentDays,\n onDateSelect,\n fixedWeeks,\n isFocusAvailable = true,\n}) => {\n const dates = useDayPickerDates(displayDate, fixedWeeks);\n const disabledDatesFunc = useDisabledDatesFunc(dates[0], dates[dates.length - 1], disabledDates, minDate, maxDate);\n const forceDisabled = useDisabled();\n\n const onClickHandlers = useMemo(() => {\n return dates.map((date) => {\n return () => onDateSelect?.(date);\n });\n }, [dates, onDateSelect]);\n\n return (\n <div className={classnames(styles.calendar, styles.calendarDays)} data-qa=\"date-picker-days\">\n {dates.map((date, index) => {\n const isAdjacent = !isSameMonth(date, displayDate);\n const isDisabled = isAdjacent || forceDisabled || disabledDatesFunc(date);\n const isSelected = !!selectedDate && isSameDay(date, selectedDate);\n const display = !isAdjacent || showAdjacentDays;\n\n return (\n <div className={styles.item} key={`${date}`}>\n {display ? (\n <button\n className={classnames(styles.text, {\n [styles.textDisabled]: isDisabled,\n [styles.textSelected]: isSelected,\n [styles.textToday]: isToday(date),\n [styles.textUnselected]: !isDisabled && !isSelected,\n })}\n tabIndex={isFocusAvailable ? undefined : -1}\n disabled={isDisabled || isSelected}\n onClick={onClickHandlers[index]}\n data-date={format(date, 'yyyy-MM-dd')}\n data-qa={classnames('date-picker-day', {\n 'date-picker-day-disabled': isDisabled,\n 'date-picker-day-selected': isSelected,\n 'date-picker-day-today': isToday(date),\n })}\n >\n {format(date, 'd')}\n </button>\n ) : (\n <div className={styles.textEmpty} />\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport const IntervalDayPicker: FC<IntervalDayPickerProps> = ({\n disabledDates,\n minDate,\n maxDate,\n displayDate,\n selectionStart,\n selectionEnd,\n hoveredDate,\n dragState,\n onStartSelect,\n onEndSelect,\n onDateHover,\n onDateDrag,\n showAdjacentDays,\n fixedWeeks,\n isFocusAvailable = true,\n}) => {\n const dates = useDayPickerDates(displayDate, fixedWeeks);\n const disabledDatesFunc = useDisabledDatesFunc(dates[0], dates[dates.length - 1], disabledDates, minDate, maxDate);\n\n const datesProps = useIntervalPicker({\n dates,\n disabledDatesFunc,\n selectionStart,\n selectionEnd,\n hoveredDate,\n dragState,\n onStartSelect,\n onEndSelect,\n onDateHover,\n onDateDrag,\n isEqual: isSameDay,\n });\n\n return (\n <div className={classnames(styles.calendar, styles.calendarDays)} data-qa=\"date-picker-days\">\n {dates.map((date, index) => {\n const isAdjacent = !isSameMonth(date, displayDate);\n const {\n isDisabled: _isDisabled,\n isIntervalStart,\n isIntervalEnd,\n isSelected,\n isDraggable,\n isDragSource,\n isDropTarget,\n isWithinInterval,\n mouseHandlers,\n dragSourceHandlers,\n dropTargetHandlers,\n } = datesProps[index];\n const isDisabled = isAdjacent || _isDisabled;\n const isIntervalRowStart =\n isWithinInterval &&\n !isIntervalStart &&\n (index % DAYS_IN_WEEK === 0 || (!showAdjacentDays && isFirstDayOfMonth(date)));\n const isIntervalRowEnd =\n isWithinInterval &&\n !isIntervalEnd &&\n (index % DAYS_IN_WEEK === DAYS_IN_WEEK - 1 || (!showAdjacentDays && isLastDayOfMonth(date)));\n const display = !isAdjacent || showAdjacentDays;\n\n return (\n <div\n className={classnames(styles.item, {\n [styles.itemInterval]: isWithinInterval,\n [styles.itemIntervalStart]: isIntervalStart,\n [styles.itemIntervalEnd]: isIntervalEnd,\n [styles.itemIntervalRowStart]: isIntervalRowStart,\n [styles.itemIntervalRowEnd]: isIntervalRowEnd,\n })}\n key={`${date}`}\n >\n {display ? (\n <Fragment>\n <button\n {...mouseHandlers}\n {...(!isDisabled ? dragSourceHandlers : {})}\n {...(!isDisabled ? dropTargetHandlers : {})}\n className={classnames(styles.text, {\n [styles.textDisabled]: isDisabled,\n [styles.textSelected]: isSelected,\n [styles.textDraggable]: !isDisabled && isDraggable,\n [styles.textDragSource]: isDragSource,\n [styles.textDropTarget]: isDropTarget,\n [styles.textToday]: isToday(date),\n [styles.textUnselected]:\n !isDisabled && !isSelected && !isDragSource && !isDropTarget,\n })}\n disabled={isDisabled || isDragSource}\n draggable={!isDisabled && isDraggable}\n data-date={format(date, 'yyyy-MM-dd')}\n tabIndex={isFocusAvailable ? undefined : -1}\n data-qa={classnames('date-picker-day', {\n 'date-picker-day-disabled': isDisabled,\n 'date-picker-day-selected': isSelected,\n 'date-picker-day-today': isToday(date),\n })}\n >\n {format(date, 'd')}\n </button>\n {isWithinInterval && <div className={styles.substrate} />}\n </Fragment>\n ) : (\n <div className={styles.textEmpty} />\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\ninterface BottomSheetState extends InfoDay {\n show: boolean;\n}\n\nconst InfoDayTooltipWrapper: FC<{ children: ReactNode; tooltip: ReactNode }> = ({ children, tooltip }) => {\n const activatorRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <>\n <div className={styles.item} ref={activatorRef}>\n {children}\n </div>\n {tooltip && (\n <TooltipHover placement=\"top-center\" activatorRef={activatorRef}>\n {tooltip}\n </TooltipHover>\n )}\n </>\n );\n};\n\nexport const InfoDayPicker: FC<InfoDayPickerProps> = ({\n displayDate,\n holidays: _holidays,\n shortWorkdays: _shortWorkdays,\n fixedWeeks,\n isFocusAvailable = true,\n}) => {\n const dates = useDayPickerDates(displayDate, fixedWeeks);\n const [bottomSheetState, setBottomSheetState] = useState<BottomSheetState>({ show: false, text: '', header: '' });\n const onCloseBottomSheet = () => setBottomSheetState({ show: false, text: '', header: '' });\n\n const holidays = useMemo(() => _holidays && flatten(_holidays), [_holidays]);\n const shortWorkdays = useMemo(() => _shortWorkdays && flatten(_shortWorkdays), [_shortWorkdays]);\n\n return (\n <div className={classnames(styles.calendar, styles.calendarDays)} data-qa=\"date-picker-days\">\n {dates.map((date) => {\n const isAdjacent = !isSameMonth(date, displayDate);\n const holiday = holidays?.find((holiday) => isSameDay(date, holiday.date));\n const shortWorkday = shortWorkdays?.find((shortWorkday) => isSameDay(date, shortWorkday.date));\n const isWorkDay = !holiday && !shortWorkday;\n const info = getInfoByDateType(holiday, shortWorkday);\n const display = !isAdjacent;\n\n return (\n <InfoDayTooltipWrapper key={`${date}`} tooltip={info?.text}>\n {display ? (\n <Fragment>\n <button\n className={classnames(styles.text, {\n [styles.textHoliday]: holiday,\n [styles.textShortWorkday]: shortWorkday,\n [styles.textWorkday]: isWorkDay,\n })}\n onClick={() => {\n if (info) {\n setBottomSheetState({ show: true, ...info });\n }\n }}\n tabIndex={isFocusAvailable ? undefined : -1}\n disabled={!info}\n data-date={format(date, 'yyyy-MM-dd')}\n data-qa={classnames('date-picker-day', {\n 'date-picker-day-workday': isWorkDay,\n 'date-picker-day-short-workday': shortWorkday,\n 'date-picker-day-holyday': holiday,\n 'date-picker-day-today': isToday(date),\n })}\n >\n {format(date, 'd')}\n </button>\n <div className={styles.substrate} />\n </Fragment>\n ) : (\n <div className={styles.textEmpty} />\n )}\n </InfoDayTooltipWrapper>\n );\n })}\n\n <BottomSheet\n visible={bottomSheetState.show}\n header={\n <NavigationBar\n title={bottomSheetState.header}\n right={<CrossOutlinedSize24 onClick={onCloseBottomSheet} data-qa=\"date-picker-bs-close\" />}\n showDivider=\"always\"\n />\n }\n onClose={onCloseBottomSheet}\n >\n <Text Element=\"span\" typography=\"label-2-regular\">\n {bottomSheetState.text}\n </Text>\n <VSpacing default={48} />\n </BottomSheet>\n </div>\n );\n};\n"],"names":["_jsx","DAYS_IN_WEEK","_jsxs","_Fragment"],"mappings":"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"}
package/Header.js CHANGED
@@ -6,7 +6,7 @@ import { format } from 'date-fns';
6
6
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
7
7
  import { makeYearsInterval } from './utils.js';
8
8
  import { ChevronLeftOutlinedSize24, ChevronDownOutlinedSize16, ChevronRightOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';
9
- import { s as styles } from './date-picker-BV10jbxZ.js';
9
+ import { s as styles } from './date-picker-1kIH437q.js';
10
10
  import 'date-fns/constants';
11
11
 
12
12
  const Header = ({ calendar, displayDate, activeHeader: _activeHeader = true, alignHeader = 'center', goToNextPeriod, goToPrevPeriod, headerMonthFormat = 'mm', locale, showControls = true, showHeaderDate = true, showNextControl = true, showPrevControl = true, switchCalendar, }) => {
@@ -6,8 +6,10 @@ interface InfiniteScrollProps<ItemType> {
6
6
  /** Высота видимой части айтема, при достижении которой вызывается колбек onVisibleItemChange с этим айтемом в параметрах */
7
7
  visibleThreshold: number;
8
8
  makeItemFunc: (key: number) => ItemType;
9
- renderItemFunc: (item: ItemType) => ReactElement;
9
+ renderItemFunc: (item: ItemType, isFocusAvailable: boolean) => ReactElement;
10
10
  onVisibleItemChange: (item: ItemType, key: number) => void;
11
+ axis?: 'horizontal' | 'vertical';
12
+ onTouchEnd?: (item: ItemType) => void;
11
13
  }
12
- export declare const InfiniteScroll: <ItemType>({ initialRenderedItems, invisibleThreshold, visibleThreshold, makeItemFunc, renderItemFunc, onVisibleItemChange, }: InfiniteScrollProps<ItemType>) => ReactElement;
14
+ export declare const InfiniteScroll: <ItemType>({ initialRenderedItems, invisibleThreshold, visibleThreshold, makeItemFunc, renderItemFunc, onVisibleItemChange, axis, onTouchEnd, }: InfiniteScrollProps<ItemType>) => ReactElement;
13
15
  export {};