@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.
- package/AsyncDataLoader.js +1 -1
- package/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +0 -2
- package/DatePicker/DatePicker.js +59 -0
- package/DatePicker/DatePicker.js.map +1 -0
- package/DatePicker/MobileDatePickerWithScroll.d.ts +5 -0
- package/DatePicker/MobileDatePickerWithScroll.js +71 -0
- package/DatePicker/MobileDatePickerWithScroll.js.map +1 -0
- package/DatePicker/UncontrolledDatePicker.d.ts +2 -0
- package/DatePicker/UncontrolledDatePicker.js +56 -0
- package/DatePicker/UncontrolledDatePicker.js.map +1 -0
- package/DayPicker.js +17 -17
- package/DayPicker.js.map +1 -1
- package/Header.js +1 -1
- package/InfiniteScroll.d.ts +4 -2
- package/InfiniteScroll.js +208 -28
- package/InfiniteScroll.js.map +1 -1
- package/InfoDatePicker/InfoDatePicker.d.ts +3 -0
- package/InfoDatePicker/InfoDatePicker.js +51 -0
- package/InfoDatePicker/InfoDatePicker.js.map +1 -0
- package/InfoDatePicker/MobileInfoDatePickerWithScroll.d.ts +7 -0
- package/InfoDatePicker/MobileInfoDatePickerWithScroll.js +51 -0
- package/InfoDatePicker/MobileInfoDatePickerWithScroll.js.map +1 -0
- package/{InfoDatePicker.d.ts → InfoDatePicker/UncontrolledInfoDatePicker.d.ts} +1 -2
- package/InfoDatePicker/UncontrolledInfoDatePicker.js +44 -0
- package/InfoDatePicker/UncontrolledInfoDatePicker.js.map +1 -0
- package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.d.ts +2 -0
- package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.js +49 -0
- package/IntervalDatePicker/DesktopMultiLayoutIntervalDatePicker.js.map +1 -0
- package/{IntervalDatePicker.d.ts → IntervalDatePicker/IntervalDatePicker.d.ts} +0 -1
- package/IntervalDatePicker/IntervalDatePicker.js +60 -0
- package/IntervalDatePicker/IntervalDatePicker.js.map +1 -0
- package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.d.ts +3 -0
- package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js +58 -0
- package/IntervalDatePicker/MobileMultiLayoutIntervalDatePicker.js.map +1 -0
- package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.d.ts +4 -0
- package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.js +73 -0
- package/IntervalDatePicker/MobileSingleLayoutIntervalDatePicker.js.map +1 -0
- package/IntervalDatePicker/SingleLayoutIntervalDatePicker.d.ts +2 -0
- package/IntervalDatePicker/SingleLayoutIntervalDatePicker.js +50 -0
- package/IntervalDatePicker/SingleLayoutIntervalDatePicker.js.map +1 -0
- package/IntervalDatePicker/UncontrolledIntervalDatePicker.d.ts +3 -0
- package/IntervalDatePicker/UncontrolledIntervalDatePicker.js +63 -0
- package/IntervalDatePicker/UncontrolledIntervalDatePicker.js.map +1 -0
- package/MonthPicker.js +5 -5
- package/MonthPicker.js.map +1 -1
- package/Weekdays.js +1 -1
- package/YearPicker.js +5 -5
- package/YearPicker.js.map +1 -1
- package/date-picker-1kIH437q.js +5 -0
- package/date-picker-1kIH437q.js.map +1 -0
- package/index.css +132 -90
- package/index.d.ts +6 -3
- package/index.js +24 -13
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/types.d.ts +18 -0
- package/useDatePickerControls.js +7 -14
- package/useDatePickerControls.js.map +1 -1
- package/useMobileHorizontalScroll.d.ts +11 -0
- package/useMobileHorizontalScroll.js +33 -0
- package/useMobileHorizontalScroll.js.map +1 -0
- package/utils.d.ts +1 -1
- package/utils.js +9 -3
- package/utils.js.map +1 -1
- package/DatePicker.js +0 -61
- package/DatePicker.js.map +0 -1
- package/InfoDatePicker.js +0 -48
- package/InfoDatePicker.js.map +0 -1
- package/IntervalDatePicker.js +0 -126
- package/IntervalDatePicker.js.map +0 -1
- package/date-picker-BV10jbxZ.js +0 -5
- package/date-picker-BV10jbxZ.js.map +0 -1
package/AsyncDataLoader.js
CHANGED
|
@@ -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-
|
|
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,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-
|
|
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
|
|
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, '
|
|
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
|
|
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 ||
|
|
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, '
|
|
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
|
|
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, '
|
|
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-
|
|
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, }) => {
|
package/InfiniteScroll.d.ts
CHANGED
|
@@ -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 {};
|