@a-type/ui 3.0.32 → 3.0.34
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/dist/cjs/components/datePicker/Calendar.d.ts +11 -0
- package/dist/cjs/components/datePicker/Calendar.js +37 -0
- package/dist/cjs/components/datePicker/Calendar.js.map +1 -0
- package/dist/cjs/components/datePicker/DatePicker.d.ts +42 -13
- package/dist/cjs/components/datePicker/DatePicker.js +31 -71
- package/dist/cjs/components/datePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/datePicker/DatePicker.stories.d.ts +36 -1
- package/dist/cjs/components/datePicker/DatePicker.stories.js +19 -2
- package/dist/cjs/components/datePicker/DatePicker.stories.js.map +1 -1
- package/dist/cjs/components/datePicker/DateRangePicker.d.ts +55 -0
- package/dist/cjs/components/datePicker/DateRangePicker.js +89 -0
- package/dist/cjs/components/datePicker/DateRangePicker.js.map +1 -0
- package/dist/cjs/components/datePicker/index.d.ts +2 -0
- package/dist/cjs/components/datePicker/index.js +1 -0
- package/dist/cjs/components/datePicker/index.js.map +1 -1
- package/dist/css/main.css +1 -1
- package/dist/esm/components/datePicker/Calendar.d.ts +11 -0
- package/dist/esm/components/datePicker/Calendar.js +32 -0
- package/dist/esm/components/datePicker/Calendar.js.map +1 -0
- package/dist/esm/components/datePicker/DatePicker.d.ts +42 -13
- package/dist/esm/components/datePicker/DatePicker.js +32 -68
- package/dist/esm/components/datePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/datePicker/DatePicker.stories.d.ts +36 -1
- package/dist/esm/components/datePicker/DatePicker.stories.js +20 -3
- package/dist/esm/components/datePicker/DatePicker.stories.js.map +1 -1
- package/dist/esm/components/datePicker/DateRangePicker.d.ts +55 -0
- package/dist/esm/components/datePicker/DateRangePicker.js +83 -0
- package/dist/esm/components/datePicker/DateRangePicker.js.map +1 -0
- package/dist/esm/components/datePicker/index.d.ts +2 -0
- package/dist/esm/components/datePicker/index.js +1 -0
- package/dist/esm/components/datePicker/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/datePicker/Calendar.tsx +83 -0
- package/src/components/datePicker/DatePicker.stories.tsx +38 -2
- package/src/components/datePicker/DatePicker.tsx +77 -222
- package/src/components/datePicker/DateRangePicker.tsx +161 -0
- package/src/components/datePicker/index.ts +2 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CalendarDaysProps } from 'calendar-blocks';
|
|
2
|
+
export declare const MonthRow: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>>;
|
|
3
|
+
export declare const MonthLabel: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>;
|
|
4
|
+
export declare const MonthButton: import("react").FunctionComponent<import("../button/Button.js").ButtonProps>;
|
|
5
|
+
export declare const CalendarGridRoot: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>>;
|
|
6
|
+
export declare const DayLabel: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>>;
|
|
7
|
+
export declare const DayLabels: () => import("react/jsx-runtime.js").JSX.Element;
|
|
8
|
+
export declare function CalendarGrid({ className, ...props }: CalendarDaysProps & {
|
|
9
|
+
className?: string;
|
|
10
|
+
}): import("react/jsx-runtime.js").JSX.Element;
|
|
11
|
+
export declare const CalendarDay: import("react").FunctionComponent<import("calendar-blocks").CalendarDayProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// @unocss-include
|
|
2
|
+
"use strict";
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CalendarDay = exports.DayLabels = exports.DayLabel = exports.CalendarGridRoot = exports.MonthButton = exports.MonthLabel = exports.MonthRow = void 0;
|
|
16
|
+
exports.CalendarGrid = CalendarGrid;
|
|
17
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
const calendar_blocks_1 = require("calendar-blocks");
|
|
19
|
+
const hooks_js_1 = require("../../hooks.js");
|
|
20
|
+
const index_js_1 = require("../button/index.js");
|
|
21
|
+
exports.MonthRow = (0, hooks_js_1.withClassName)('div', 'flex flex-row justify-between items-center w-full');
|
|
22
|
+
exports.MonthLabel = (0, hooks_js_1.withClassName)('span', 'text-sm font-bold min-w-0 overflow-hidden text-center text-ellipsis', 'self-center');
|
|
23
|
+
exports.MonthButton = (0, hooks_js_1.withClassName)(index_js_1.Button, 'self-center');
|
|
24
|
+
exports.CalendarGridRoot = (0, hooks_js_1.withClassName)('div', 'grid grid-cols-[repeat(7,var(--day-size,32px))] [grid-auto-rows:var(--day-size,32px)]', 'height-[calc(var(--day-size,32px)*7)] rounded overflow-hidden p-2');
|
|
25
|
+
exports.DayLabel = (0, hooks_js_1.withClassName)('div', 'flex items-center justify-center text-sm color-gray-dark');
|
|
26
|
+
const DayLabels = () => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(exports.DayLabel, { children: "S" }), (0, jsx_runtime_1.jsx)(exports.DayLabel, { children: "M" }), (0, jsx_runtime_1.jsx)(exports.DayLabel, { children: "T" }), (0, jsx_runtime_1.jsx)(exports.DayLabel, { children: "W" }), (0, jsx_runtime_1.jsx)(exports.DayLabel, { children: "T" }), (0, jsx_runtime_1.jsx)(exports.DayLabel, { children: "F" }), (0, jsx_runtime_1.jsx)(exports.DayLabel, { children: "S" })] }));
|
|
27
|
+
exports.DayLabels = DayLabels;
|
|
28
|
+
function CalendarGrid(_a) {
|
|
29
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
30
|
+
return ((0, jsx_runtime_1.jsxs)(exports.CalendarGridRoot, { className: className, children: [(0, jsx_runtime_1.jsx)(exports.DayLabels, {}), (0, jsx_runtime_1.jsx)(calendar_blocks_1.CalendarDays, Object.assign({}, props))] }));
|
|
31
|
+
}
|
|
32
|
+
exports.CalendarDay = (0, hooks_js_1.withClassName)(calendar_blocks_1.CalendarDay, 'border border-solid border-transparent bg-white mr--1px mb--1px relative color-black', 'flex items-center justify-center transition cursor-pointer', '[&[data-highlighted]]:z-1 [&[data-highlighted]]:ring-2 [&[data-highlighted]]:ring-accent', 'hover:z-1 hover:ring-2 hover:ring-accent', 'active:bg-main-light active:rounded', '[&[data-selected]]:bg-main [&[data-selected]]:z-2 [&[data-selected]]:rounded', '[&[data-in-range]]:bg-main-light [&[data-in-range]]:rounded-none [&[data-in-range]]:z-1', '[&[data-range-start]]:bg-main [&[data-range-start]]:rounded-l [&[data-range-start]]:rounded-r-none [&[data-range-start]]:z-1', '[&[data-range-end]]:bg-main [&[data-range-end]]:rounded-r [&[data-range-end]]:rounded-l-none [&[data-range-end]]:z-1', '[&[data-disabled=true]]:opacity-50 [&[data-disabled=true]]:cursor-not-allowed',
|
|
33
|
+
// today dot
|
|
34
|
+
"[&[data-today]]:before:content-[''] [&[data-today]]:before:absolute [&[data-today]]:before:left-[1px] [&[data-today]]:before:top-[1px] [&[data-today]]:before:w-[6px] [&[data-today]]:before:h-[6px] [&[data-today]]:before:rounded-lg [&[data-today]]:before:bg-attention [&[data-today]]:before:border-1 [&[data-today]]:before:border-solid [&[data-today]]:before:border-black",
|
|
35
|
+
// calendar edges
|
|
36
|
+
'[&[data-top-edge]]:border-t-gray', '[&[data-bottom-edge]]:border-b-gray', '[&[data-first-column]]:border-l-gray', '[&[data-last-column]]:border-r-gray', '[&[data-day-first]]:border-l-gray [&[data-day-first]]:rounded-tl', '[&[data-day-last]]:border-r-gray [&[data-day-last]]:rounded-br', '[&[data-first-column][data-bottom-edge]]:rounded-bl', '[&[data-last-column][data-bottom-edge]]:rounded-br', '[&[data-first-column][data-top-edge]]:rounded-tl', '[&[data-last-column][data-top-edge]]:rounded-tr', '[&[data-different-month]]:[visibility:hidden]');
|
|
37
|
+
//# sourceMappingURL=Calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../../../src/components/datePicker/Calendar.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AA4CA,oCAUC;;AAtDD,qDAIyB;AACzB,6CAA+C;AAC/C,iDAA4C;AAE/B,QAAA,QAAQ,GAAG,IAAA,wBAAa,EACpC,KAAK,EACL,mDAAmD,CACnD,CAAC;AAEW,QAAA,UAAU,GAAG,IAAA,wBAAa,EACtC,MAAM,EACN,qEAAqE,EACrE,aAAa,CACb,CAAC;AAEW,QAAA,WAAW,GAAG,IAAA,wBAAa,EAAC,iBAAM,EAAE,aAAa,CAAC,CAAC;AAEnD,QAAA,gBAAgB,GAAG,IAAA,wBAAa,EAC5C,KAAK,EACL,uFAAuF,EACvF,mEAAmE,CACnE,CAAC;AAEW,QAAA,QAAQ,GAAG,IAAA,wBAAa,EACpC,KAAK,EACL,0DAA0D,CAC1D,CAAC;AAEK,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAC9B,6DACC,uBAAC,gBAAQ,oBAAa,EACtB,uBAAC,gBAAQ,oBAAa,EACtB,uBAAC,gBAAQ,oBAAa,EACtB,uBAAC,gBAAQ,oBAAa,EACtB,uBAAC,gBAAQ,oBAAa,EACtB,uBAAC,gBAAQ,oBAAa,EACtB,uBAAC,gBAAQ,oBAAa,IACpB,CACH,CAAC;AAVW,QAAA,SAAS,aAUpB;AAEF,SAAgB,YAAY,CAAC,EAGgB;QAHhB,EAC5B,SAAS,OAEmC,EADzC,KAAK,cAFoB,aAG5B,CADQ;IAER,OAAO,CACN,wBAAC,wBAAgB,IAAC,SAAS,EAAE,SAAS,aACrC,uBAAC,iBAAS,KAAG,EACb,uBAAC,8BAAY,oBAAK,KAAK,EAAI,IACT,CACnB,CAAC;AACH,CAAC;AAEY,QAAA,WAAW,GAAG,IAAA,wBAAa,EACvC,6BAAe,EACf,sFAAsF,EACtF,4DAA4D,EAC5D,gDAAgD,EAChD,gCAAgC,EAChC,gCAAgC,EAChC,0CAA0C,EAC1C,qDAAqD,EACrD,8DAA8D,EAC9D,4DAA4D,EAC5D,yDAAyD;AACzD,YAAY;AACZ,gJAAgJ;AAChJ,iBAAiB;AACjB,oCAAoC,EACpC,uCAAuC,EACvC,wCAAwC,EACxC,uCAAuC,EACvC,gDAAgD,EAChD,+CAA+C,EAC/C,qDAAqD,EACrD,oDAAoD,EACpD,kDAAkD,EAClD,iDAAiD,EACjD,+CAA+C,CAC/C,CAAC"}
|
|
@@ -1,20 +1,49 @@
|
|
|
1
|
+
import { CalendarDays } from 'calendar-blocks';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
1
3
|
import { PaletteName } from '../../uno/index.js';
|
|
4
|
+
import { CalendarGrid } from './Calendar.js';
|
|
5
|
+
declare function DatePickerMonthControls({}: {}): import("react/jsx-runtime.js").JSX.Element;
|
|
6
|
+
declare function DatePickerRoot({ className, color, value, onChange, children, ...rest }: DatePickerProps & {
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}): import("react/jsx-runtime.js").JSX.Element;
|
|
2
9
|
export interface DatePickerProps {
|
|
3
10
|
value: Date | null;
|
|
4
11
|
onChange: (date: Date | null) => void;
|
|
5
12
|
className?: string;
|
|
6
13
|
color?: PaletteName;
|
|
7
14
|
}
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
declare function DatePickerDefault(props: DatePickerProps): import("react/jsx-runtime.js").JSX.Element;
|
|
16
|
+
export declare const DatePicker: typeof DatePickerDefault & {
|
|
17
|
+
Root: typeof DatePickerRoot;
|
|
18
|
+
Calendar: import("react").ForwardRefExoticComponent<Omit<import("react").HTMLAttributes<HTMLDivElement>, "onChange" | "value"> & {
|
|
19
|
+
onDisplayChange?: (newValue: {
|
|
20
|
+
month: number;
|
|
21
|
+
year: number;
|
|
22
|
+
}) => any;
|
|
23
|
+
displayYear: number;
|
|
24
|
+
displayMonth: number;
|
|
25
|
+
value?: Date | null;
|
|
26
|
+
onChange?: (value: Date | null) => any;
|
|
27
|
+
rangeValue?: {
|
|
28
|
+
start: Date | null;
|
|
29
|
+
end: Date | null;
|
|
30
|
+
};
|
|
31
|
+
onRangeChange?: (range: {
|
|
32
|
+
start: Date | null;
|
|
33
|
+
end: Date | null;
|
|
34
|
+
}) => any;
|
|
35
|
+
onRangeStartChange?: (range: Date) => any;
|
|
36
|
+
getDateEnabled?: (date: Date) => boolean;
|
|
37
|
+
defaultDate?: Date;
|
|
38
|
+
weekStartsOn?: import("calendar-blocks/dist/constants.js").WeekDay;
|
|
39
|
+
} & import("react").RefAttributes<any>>;
|
|
40
|
+
CalendarDay: import("react").FunctionComponent<import("calendar-blocks").CalendarDayProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
41
|
+
CalendarDays: typeof CalendarDays;
|
|
42
|
+
CalendarGrid: typeof CalendarGrid;
|
|
43
|
+
DayLabels: () => import("react/jsx-runtime.js").JSX.Element;
|
|
44
|
+
MonthControls: typeof DatePickerMonthControls;
|
|
45
|
+
MonthButton: import("react").FunctionComponent<import("../index.js").ButtonProps>;
|
|
46
|
+
MonthLabel: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>;
|
|
47
|
+
MonthRow: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>>;
|
|
48
|
+
};
|
|
49
|
+
export {};
|
|
@@ -11,89 +11,49 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
}
|
|
12
12
|
return t;
|
|
13
13
|
};
|
|
14
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
-
};
|
|
17
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.DatePicker =
|
|
19
|
-
exports.DateRangePicker = DateRangePicker;
|
|
15
|
+
exports.DatePicker = void 0;
|
|
20
16
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
17
|
const calendar_blocks_1 = require("calendar-blocks");
|
|
22
|
-
const clsx_1 =
|
|
18
|
+
const clsx_1 = require("clsx");
|
|
23
19
|
const react_1 = require("react");
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var { value, onChange, className, color } = _a, rest = __rest(_a, ["value", "onChange", "className", "color"]);
|
|
29
|
-
const [{ month, year }, setDisplay] = (0, react_1.useState)(() => ({
|
|
30
|
-
month: new Date().getMonth(),
|
|
31
|
-
year: new Date().getFullYear(),
|
|
32
|
-
}));
|
|
20
|
+
const index_js_1 = require("../icon/index.js");
|
|
21
|
+
const Calendar_js_1 = require("./Calendar.js");
|
|
22
|
+
function DatePickerMonthControls({}) {
|
|
23
|
+
const { setDisplayInfo, month, year } = (0, calendar_blocks_1.useCalendarContext)();
|
|
33
24
|
const monthLabel = new Date(year, month).toLocaleDateString('en-US', {
|
|
34
25
|
month: 'long',
|
|
35
26
|
year: 'numeric',
|
|
36
27
|
});
|
|
37
|
-
return ((0, jsx_runtime_1.jsxs)(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
return ((0, jsx_runtime_1.jsxs)(Calendar_js_1.MonthRow, { children: [(0, jsx_runtime_1.jsx)(Calendar_js_1.MonthButton, { emphasis: "ghost", onClick: () => setDisplayInfo({
|
|
29
|
+
month: month - 1,
|
|
30
|
+
year: year,
|
|
31
|
+
}), children: (0, jsx_runtime_1.jsx)(index_js_1.Icon, { name: "arrowLeft" }) }), (0, jsx_runtime_1.jsx)(Calendar_js_1.MonthLabel, { children: monthLabel }), (0, jsx_runtime_1.jsx)(Calendar_js_1.MonthButton, { emphasis: "ghost", onClick: () => setDisplayInfo({
|
|
32
|
+
month: month + 1,
|
|
33
|
+
year: year,
|
|
34
|
+
}), children: (0, jsx_runtime_1.jsx)(index_js_1.Icon, { name: "arrowRight" }) })] }));
|
|
44
35
|
}
|
|
45
|
-
function
|
|
36
|
+
function DatePickerRoot(_a) {
|
|
37
|
+
var { className, color, value, onChange, children } = _a, rest = __rest(_a, ["className", "color", "value", "onChange", "children"]);
|
|
46
38
|
const [{ month, year }, setDisplay] = (0, react_1.useState)(() => ({
|
|
47
39
|
month: new Date().getMonth(),
|
|
48
40
|
year: new Date().getFullYear(),
|
|
49
41
|
}));
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
});
|
|
54
|
-
const nextMonth = new Date(year, month + 1);
|
|
55
|
-
const nextMonthLabel = nextMonth.toLocaleDateString('en-US', {
|
|
56
|
-
month: 'long',
|
|
57
|
-
year: 'numeric',
|
|
58
|
-
});
|
|
59
|
-
const onDisplayChange = (0, react_1.useCallback)(({ month: newMonth, year: newYear }) => {
|
|
60
|
-
/**
|
|
61
|
-
* Important UX consideration:
|
|
62
|
-
*
|
|
63
|
-
* since we are displaying 2 months at once, we don't
|
|
64
|
-
* always want to change our view if the user's cursor
|
|
65
|
-
* date moves from one month to another. Specifically,
|
|
66
|
-
* if they move from the first visible month to the
|
|
67
|
-
* second visible month, we don't need to change the view,
|
|
68
|
-
* since they are still within the visible range.
|
|
69
|
-
* So, we write logic to ignore that case!
|
|
70
|
-
*/
|
|
71
|
-
if (newMonth === month + 1 && newYear === year) {
|
|
72
|
-
return; // ignore movement from the first to the second frame
|
|
73
|
-
}
|
|
74
|
-
setDisplay({
|
|
75
|
-
month: newMonth,
|
|
76
|
-
year: newYear,
|
|
77
|
-
});
|
|
78
|
-
}, [month, year]);
|
|
79
|
-
return ((0, jsx_runtime_1.jsx)(calendar_blocks_1.Calendar, { displayMonth: month, displayYear: year, rangeValue: value, onRangeChange: (range) => onChange(range), onDisplayChange: onDisplayChange, className: (0, clsx_1.default)('flex justify-center', className), children: (0, jsx_runtime_1.jsxs)(RangeLayout, { children: [(0, jsx_runtime_1.jsx)(MonthButton, { emphasis: "ghost", className: "[grid-area:prevMonth]", onClick: () => setDisplay((cur) => ({
|
|
80
|
-
month: cur.month - 1,
|
|
81
|
-
year: cur.year,
|
|
82
|
-
})), children: (0, jsx_runtime_1.jsx)(index_js_2.Icon, { name: "arrowLeft" }) }), (0, jsx_runtime_1.jsx)(MonthLabel, { className: "[grid-area:leftMonth]", children: monthLabel }), (0, jsx_runtime_1.jsx)(MonthLabel, { className: "[grid-area:rightMonth] !hidden !sm:block", children: nextMonthLabel }), (0, jsx_runtime_1.jsx)(MonthButton, { emphasis: "ghost", className: "[grid-area:nextMonth]", onClick: () => setDisplay((cur) => ({
|
|
83
|
-
month: cur.month + 1,
|
|
84
|
-
year: cur.year,
|
|
85
|
-
})), children: (0, jsx_runtime_1.jsx)(index_js_2.Icon, { name: "arrowRight" }) }), (0, jsx_runtime_1.jsxs)(CalendarGrid, { className: "[grid-area:leftGrid]", children: [(0, jsx_runtime_1.jsx)(DayLabels, {}), (0, jsx_runtime_1.jsx)(calendar_blocks_1.CalendarDays, { children: (value) => (0, jsx_runtime_1.jsx)(CalendarDay, { value: value }, value.key) })] }), (0, jsx_runtime_1.jsxs)(CalendarGrid, { className: "[grid-area:rightGrid] !hidden !sm:grid", children: [(0, jsx_runtime_1.jsx)(DayLabels, {}), (0, jsx_runtime_1.jsx)(calendar_blocks_1.CalendarDays, { monthOffset: 1, children: (value) => (0, jsx_runtime_1.jsx)(CalendarDay, { value: value }, value.key) })] })] }) }));
|
|
42
|
+
return ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, clsx_1.clsx)(color && `palette-${color}`, 'layer-components:flex layer-components:flex-col layer-components:items-center layer-components:justify-center layer-components:w-[calc(var(--day-size,32px)*7)]') }, rest, { children: (0, jsx_runtime_1.jsx)(calendar_blocks_1.Calendar, { displayMonth: month, displayYear: year, value: value, onChange: onChange, onDisplayChange: setDisplay, children: children }) })));
|
|
43
|
+
}
|
|
44
|
+
function DatePickerDefault(props) {
|
|
45
|
+
return ((0, jsx_runtime_1.jsxs)(DatePickerRoot, Object.assign({}, props, { children: [(0, jsx_runtime_1.jsx)(DatePickerMonthControls, {}), (0, jsx_runtime_1.jsx)(Calendar_js_1.CalendarGrid, { children: (value) => (0, jsx_runtime_1.jsx)(Calendar_js_1.CalendarDay, { value: value }, value.key) })] })));
|
|
86
46
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
47
|
+
exports.DatePicker = Object.assign(DatePickerDefault, {
|
|
48
|
+
Root: DatePickerRoot,
|
|
49
|
+
Calendar: calendar_blocks_1.Calendar,
|
|
50
|
+
CalendarDay: Calendar_js_1.CalendarDay,
|
|
51
|
+
CalendarDays: calendar_blocks_1.CalendarDays,
|
|
52
|
+
CalendarGrid: Calendar_js_1.CalendarGrid,
|
|
53
|
+
DayLabels: Calendar_js_1.DayLabels,
|
|
54
|
+
MonthControls: DatePickerMonthControls,
|
|
55
|
+
MonthButton: Calendar_js_1.MonthButton,
|
|
56
|
+
MonthLabel: Calendar_js_1.MonthLabel,
|
|
57
|
+
MonthRow: Calendar_js_1.MonthRow,
|
|
58
|
+
});
|
|
99
59
|
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../../src/components/datePicker/DatePicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../../src/components/datePicker/DatePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qDAA6E;AAC7E,+BAA4B;AAC5B,iCAA4C;AAE5C,+CAAwC;AACxC,+CAOuB;AAEvB,SAAS,uBAAuB,CAAC,EAAM;IACtC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,oCAAkB,GAAE,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACpE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;KACf,CAAC,CAAC;IAEH,OAAO,CACN,wBAAC,sBAAQ,eACR,uBAAC,yBAAW,IACX,QAAQ,EAAC,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CACb,cAAc,CAAC;oBACd,KAAK,EAAE,KAAK,GAAG,CAAC;oBAChB,IAAI,EAAE,IAAI;iBACV,CAAC,YAGH,uBAAC,eAAI,IAAC,IAAI,EAAC,WAAW,GAAG,GACZ,EACd,uBAAC,wBAAU,cAAE,UAAU,GAAc,EACrC,uBAAC,yBAAW,IACX,QAAQ,EAAC,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CACb,cAAc,CAAC;oBACd,KAAK,EAAE,KAAK,GAAG,CAAC;oBAChB,IAAI,EAAE,IAAI;iBACV,CAAC,YAGH,uBAAC,eAAI,IAAC,IAAI,EAAC,YAAY,GAAG,GACb,IACJ,CACX,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EASvB;QATuB,EACvB,SAAS,EACT,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,OAIR,EAHG,IAAI,cANgB,uDAOvB,CADO;IAIP,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,CAAC;QACrD,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;QAC5B,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC9B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACN,8CACC,SAAS,EAAE,IAAA,WAAI,EACd,KAAK,IAAI,WAAW,KAAK,EAAE,EAC3B,+FAA+F,CAC/F,IACG,IAAI,cAER,uBAAC,0BAAQ,IACR,YAAY,EAAE,KAAK,EACnB,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,UAAU,YAE1B,QAAQ,GACC,IACN,CACN,CAAC;AACH,CAAC;AASD,SAAS,iBAAiB,CAAC,KAAsB;IAChD,OAAO,CACN,wBAAC,cAAc,oBAAK,KAAK,eACxB,uBAAC,uBAAuB,KAAG,EAC3B,uBAAC,0BAAY,cACX,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAC,yBAAW,IAAC,KAAK,EAAE,KAAK,IAAO,KAAK,CAAC,GAAG,CAAI,GAC3C,KACC,CACjB,CAAC;AACH,CAAC;AAEY,QAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE;IAC1D,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAR,0BAAQ;IACR,WAAW,EAAX,yBAAW;IACX,YAAY,EAAZ,8BAAY;IACZ,YAAY,EAAZ,0BAAY;IACZ,SAAS,EAAT,uBAAS;IACT,aAAa,EAAE,uBAAuB;IACtC,WAAW,EAAX,yBAAW;IACX,UAAU,EAAV,wBAAU;IACV,QAAQ,EAAR,sBAAQ;CACR,CAAC,CAAC"}
|
|
@@ -2,7 +2,41 @@ import type { StoryObj } from '@storybook/react';
|
|
|
2
2
|
import { DatePicker } from './DatePicker.js';
|
|
3
3
|
declare const meta: {
|
|
4
4
|
title: string;
|
|
5
|
-
component:
|
|
5
|
+
component: ((props: import("./DatePicker.js").DatePickerProps) => import("react/jsx-runtime.js").JSX.Element) & {
|
|
6
|
+
Root: ({ className, color, value, onChange, children, ...rest }: import("./DatePicker.js").DatePickerProps & {
|
|
7
|
+
children?: import("react").ReactNode;
|
|
8
|
+
}) => import("react/jsx-runtime.js").JSX.Element;
|
|
9
|
+
Calendar: import("react").ForwardRefExoticComponent<Omit<import("react").HTMLAttributes<HTMLDivElement>, "onChange" | "value"> & {
|
|
10
|
+
onDisplayChange?: (newValue: {
|
|
11
|
+
month: number;
|
|
12
|
+
year: number;
|
|
13
|
+
}) => any;
|
|
14
|
+
displayYear: number;
|
|
15
|
+
displayMonth: number;
|
|
16
|
+
value?: Date | null;
|
|
17
|
+
onChange?: (value: Date | null) => any;
|
|
18
|
+
rangeValue?: {
|
|
19
|
+
start: Date | null;
|
|
20
|
+
end: Date | null;
|
|
21
|
+
};
|
|
22
|
+
onRangeChange?: (range: {
|
|
23
|
+
start: Date | null;
|
|
24
|
+
end: Date | null;
|
|
25
|
+
}) => any;
|
|
26
|
+
onRangeStartChange?: (range: Date) => any;
|
|
27
|
+
getDateEnabled?: (date: Date) => boolean;
|
|
28
|
+
defaultDate?: Date;
|
|
29
|
+
weekStartsOn?: import("calendar-blocks/dist/constants.js").WeekDay;
|
|
30
|
+
} & import("react").RefAttributes<any>>;
|
|
31
|
+
CalendarDay: import("react").FunctionComponent<import("calendar-blocks").CalendarDayProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
32
|
+
CalendarDays: typeof import("calendar-blocks").CalendarDays;
|
|
33
|
+
CalendarGrid: typeof import("./Calendar.js").CalendarGrid;
|
|
34
|
+
DayLabels: () => import("react/jsx-runtime.js").JSX.Element;
|
|
35
|
+
MonthControls: ({}: {}) => import("react/jsx-runtime.js").JSX.Element;
|
|
36
|
+
MonthButton: import("react").FunctionComponent<import("../index.js").ButtonProps>;
|
|
37
|
+
MonthLabel: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>;
|
|
38
|
+
MonthRow: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>>;
|
|
39
|
+
};
|
|
6
40
|
argTypes: {};
|
|
7
41
|
parameters: {
|
|
8
42
|
controls: {
|
|
@@ -14,3 +48,4 @@ export default meta;
|
|
|
14
48
|
type Story = StoryObj<typeof DatePicker>;
|
|
15
49
|
export declare const Default: Story;
|
|
16
50
|
export declare const Range: Story;
|
|
51
|
+
export declare const CustomComposition: Story;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// @unocss-include
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Range = exports.Default = void 0;
|
|
4
|
+
exports.CustomComposition = exports.Range = exports.Default = void 0;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
const react_1 = require("react");
|
|
7
|
+
const Spinner_js_1 = require("../spinner/Spinner.js");
|
|
7
8
|
const DatePicker_js_1 = require("./DatePicker.js");
|
|
9
|
+
const DateRangePicker_js_1 = require("./DateRangePicker.js");
|
|
8
10
|
const meta = {
|
|
9
11
|
title: 'Components/DatePicker',
|
|
10
12
|
component: DatePicker_js_1.DatePicker,
|
|
@@ -23,7 +25,22 @@ exports.Default = {
|
|
|
23
25
|
exports.Range = {
|
|
24
26
|
render() {
|
|
25
27
|
const [value, setValue] = (0, react_1.useState)({ start: null, end: null });
|
|
26
|
-
return (0, jsx_runtime_1.jsx)(
|
|
28
|
+
return (0, jsx_runtime_1.jsx)(DateRangePicker_js_1.DateRangePicker, { value: value, onChange: setValue });
|
|
27
29
|
},
|
|
28
30
|
};
|
|
31
|
+
exports.CustomComposition = {
|
|
32
|
+
render() {
|
|
33
|
+
const [value, setValue] = (0, react_1.useState)(null);
|
|
34
|
+
return ((0, jsx_runtime_1.jsxs)(DatePicker_js_1.DatePicker.Root, { value: value, onChange: setValue, children: [(0, jsx_runtime_1.jsx)(DatePicker_js_1.DatePicker.MonthControls, {}), (0, jsx_runtime_1.jsx)(DatePicker_js_1.DatePicker.CalendarGrid, { children: (value) => (0, jsx_runtime_1.jsx)(FakeLoadingDay, { value: value }, value.key) })] }));
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
function FakeLoadingDay({ value }) {
|
|
38
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
39
|
+
(0, react_1.useEffect)(() => {
|
|
40
|
+
const timeout = setTimeout(() => setLoading(false), Math.random() * 2000 + 500);
|
|
41
|
+
return () => clearTimeout(timeout);
|
|
42
|
+
}, []);
|
|
43
|
+
const [disabled] = (0, react_1.useState)(() => Math.random() < 0.3);
|
|
44
|
+
return ((0, jsx_runtime_1.jsx)(DatePicker_js_1.DatePicker.CalendarDay, { value: value, disabled: loading || disabled, children: loading ? (0, jsx_runtime_1.jsx)(Spinner_js_1.Spinner, { size: 10 }) : value.date.getDate() }));
|
|
45
|
+
}
|
|
29
46
|
//# sourceMappingURL=DatePicker.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.stories.js","sourceRoot":"","sources":["../../../../src/components/datePicker/DatePicker.stories.tsx"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"DatePicker.stories.js","sourceRoot":"","sources":["../../../../src/components/datePicker/DatePicker.stories.tsx"],"names":[],"mappings":";;;;AAEA,iCAA4C;AAC5C,sDAAgD;AAChD,mDAA6C;AAC7C,6DAAuD;AAEvD,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,0BAAU;IACrB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACiC,CAAC;AAEpC,kBAAe,IAAI,CAAC;AAIP,QAAA,OAAO,GAAU;IAC7B,MAAM;QACL,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAc,IAAI,CAAC,CAAC;QACtD,OAAO,uBAAC,0BAAU,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;IACzD,CAAC;CACD,CAAC;AAEW,QAAA,KAAK,GAAU;IAC3B,MAAM;QACL,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAG/B,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,OAAO,uBAAC,oCAAe,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;IAC9D,CAAC;CACD,CAAC;AAEW,QAAA,iBAAiB,GAAU;IACvC,MAAM;QACL,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAc,IAAI,CAAC,CAAC;QAEtD,OAAO,CACN,wBAAC,0BAAU,CAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,aAChD,uBAAC,0BAAU,CAAC,aAAa,KAAG,EAC5B,uBAAC,0BAAU,CAAC,YAAY,cACtB,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAC,cAAc,IAAC,KAAK,EAAE,KAAK,IAAO,KAAK,CAAC,GAAG,CAAI,GACnC,IACT,CAClB,CAAC;IACH,CAAC;CACD,CAAC;AAEF,SAAS,cAAc,CAAC,EAAE,KAAK,EAA+B;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,MAAM,OAAO,GAAG,UAAU,CACzB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EACvB,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG,CAC1B,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAEvD,OAAO,CACN,uBAAC,0BAAU,CAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,IAAI,QAAQ,YACjE,OAAO,CAAC,CAAC,CAAC,uBAAC,oBAAO,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAC/B,CACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { CalendarDays } from 'calendar-blocks';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { PaletteName } from '../../uno/index.js';
|
|
4
|
+
import { CalendarGrid } from './Calendar.js';
|
|
5
|
+
declare function DateRangePickerMonthControls(): import("react/jsx-runtime.js").JSX.Element;
|
|
6
|
+
declare function DateRangePickerRoot({ children, color, value, onChange, className, ...rest }: DateRangePickerProps & {
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}): import("react/jsx-runtime.js").JSX.Element;
|
|
9
|
+
export interface DateRangePickerProps {
|
|
10
|
+
value: {
|
|
11
|
+
start: Date | null;
|
|
12
|
+
end: Date | null;
|
|
13
|
+
};
|
|
14
|
+
onChange: (value: {
|
|
15
|
+
start: Date | null;
|
|
16
|
+
end: Date | null;
|
|
17
|
+
}) => void;
|
|
18
|
+
className?: string;
|
|
19
|
+
color?: PaletteName;
|
|
20
|
+
}
|
|
21
|
+
declare function DateRangePickerBase(props: DateRangePickerProps): import("react/jsx-runtime.js").JSX.Element;
|
|
22
|
+
export declare const DateRangePicker: typeof DateRangePickerBase & {
|
|
23
|
+
Root: typeof DateRangePickerRoot;
|
|
24
|
+
RangeLayout: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>>;
|
|
25
|
+
DayLabels: () => import("react/jsx-runtime.js").JSX.Element;
|
|
26
|
+
CalendarDay: import("react").FunctionComponent<import("calendar-blocks").CalendarDayProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
27
|
+
Calendar: import("react").ForwardRefExoticComponent<Omit<import("react").HTMLAttributes<HTMLDivElement>, "onChange" | "value"> & {
|
|
28
|
+
onDisplayChange?: (newValue: {
|
|
29
|
+
month: number;
|
|
30
|
+
year: number;
|
|
31
|
+
}) => any;
|
|
32
|
+
displayYear: number;
|
|
33
|
+
displayMonth: number;
|
|
34
|
+
value?: Date | null;
|
|
35
|
+
onChange?: (value: Date | null) => any;
|
|
36
|
+
rangeValue?: {
|
|
37
|
+
start: Date | null;
|
|
38
|
+
end: Date | null;
|
|
39
|
+
};
|
|
40
|
+
onRangeChange?: (range: {
|
|
41
|
+
start: Date | null;
|
|
42
|
+
end: Date | null;
|
|
43
|
+
}) => any;
|
|
44
|
+
onRangeStartChange?: (range: Date) => any;
|
|
45
|
+
getDateEnabled?: (date: Date) => boolean;
|
|
46
|
+
defaultDate?: Date;
|
|
47
|
+
weekStartsOn?: import("calendar-blocks/dist/constants.js").WeekDay;
|
|
48
|
+
} & import("react").RefAttributes<any>>;
|
|
49
|
+
CalendarGrid: typeof CalendarGrid;
|
|
50
|
+
CalendarDays: typeof CalendarDays;
|
|
51
|
+
MonthControls: typeof DateRangePickerMonthControls;
|
|
52
|
+
MonthButton: import("react").FunctionComponent<import("../index.js").ButtonProps>;
|
|
53
|
+
MonthLabel: import("react").FunctionComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>;
|
|
54
|
+
};
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// @unocss-include
|
|
2
|
+
"use strict";
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.DateRangePicker = void 0;
|
|
19
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
20
|
+
const calendar_blocks_1 = require("calendar-blocks");
|
|
21
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
22
|
+
const react_1 = require("react");
|
|
23
|
+
const hooks_js_1 = require("../../hooks.js");
|
|
24
|
+
const Icon_js_1 = require("../icon/Icon.js");
|
|
25
|
+
const Calendar_js_1 = require("./Calendar.js");
|
|
26
|
+
const RangeLayout = (0, hooks_js_1.withClassName)('div', 'grid [grid-template-areas:"prevMonth_leftMonth_nextMonth""leftGrid_leftGrid_leftGrid"] [grid-template-columns:auto_1fr_auto]', '[grid-template-rows:auto_1fr] gap-2', 'sm:grid-areas-[prevMonth_leftMonth_rightMonth_nextMonth]-[leftGrid_leftGrid_rightGrid_rightGrid] sm:[grid-template-columns:auto_1fr_1fr_auto]');
|
|
27
|
+
function DateRangePickerMonthControls() {
|
|
28
|
+
const { setDisplayInfo, month, year } = (0, calendar_blocks_1.useCalendarContext)();
|
|
29
|
+
const monthLabel = new Date(year, month).toLocaleDateString('en-US', {
|
|
30
|
+
month: 'long',
|
|
31
|
+
year: 'numeric',
|
|
32
|
+
});
|
|
33
|
+
const nextMonth = new Date(year, month + 1);
|
|
34
|
+
const nextMonthLabel = nextMonth.toLocaleDateString('en-US', {
|
|
35
|
+
month: 'long',
|
|
36
|
+
year: 'numeric',
|
|
37
|
+
});
|
|
38
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Calendar_js_1.MonthButton, { emphasis: "ghost", className: "[grid-area:prevMonth]", onClick: () => setDisplayInfo({
|
|
39
|
+
month: month - 1,
|
|
40
|
+
year: year,
|
|
41
|
+
}), children: (0, jsx_runtime_1.jsx)(Icon_js_1.Icon, { name: "arrowLeft" }) }), (0, jsx_runtime_1.jsx)(Calendar_js_1.MonthLabel, { className: "[grid-area:leftMonth]", children: monthLabel }), (0, jsx_runtime_1.jsx)(Calendar_js_1.MonthLabel, { className: "[grid-area:rightMonth] !hidden !sm:block", children: nextMonthLabel }), (0, jsx_runtime_1.jsx)(Calendar_js_1.MonthButton, { emphasis: "ghost", className: "[grid-area:nextMonth]", onClick: () => setDisplayInfo({
|
|
42
|
+
month: month + 1,
|
|
43
|
+
year: year,
|
|
44
|
+
}), children: (0, jsx_runtime_1.jsx)(Icon_js_1.Icon, { name: "arrowRight" }) })] }));
|
|
45
|
+
}
|
|
46
|
+
function DateRangePickerRoot(_a) {
|
|
47
|
+
var { children, color, value, onChange, className } = _a, rest = __rest(_a, ["children", "color", "value", "onChange", "className"]);
|
|
48
|
+
const [{ month, year }, setDisplay] = (0, react_1.useState)(() => ({
|
|
49
|
+
month: new Date().getMonth(),
|
|
50
|
+
year: new Date().getFullYear(),
|
|
51
|
+
}));
|
|
52
|
+
const onDisplayChange = (0, react_1.useCallback)(({ month: newMonth, year: newYear }) => {
|
|
53
|
+
/**
|
|
54
|
+
* Important UX consideration:
|
|
55
|
+
*
|
|
56
|
+
* since we are displaying 2 months at once, we don't
|
|
57
|
+
* always want to change our view if the user's cursor
|
|
58
|
+
* date moves from one month to another. Specifically,
|
|
59
|
+
* if they move from the first visible month to the
|
|
60
|
+
* second visible month, we don't need to change the view,
|
|
61
|
+
* since they are still within the visible range.
|
|
62
|
+
* So, we write logic to ignore that case!
|
|
63
|
+
*/
|
|
64
|
+
if (newMonth === month + 1 && newYear === year) {
|
|
65
|
+
return; // ignore movement from the first to the second frame
|
|
66
|
+
}
|
|
67
|
+
setDisplay({
|
|
68
|
+
month: newMonth,
|
|
69
|
+
year: newYear,
|
|
70
|
+
});
|
|
71
|
+
}, [month, year]);
|
|
72
|
+
return ((0, jsx_runtime_1.jsx)(calendar_blocks_1.Calendar, Object.assign({ displayMonth: month, displayYear: year, rangeValue: value, onRangeChange: (range) => onChange(range), onDisplayChange: onDisplayChange, className: (0, clsx_1.default)('flex justify-center', color && `palette-${color}`, className) }, rest, { children: (0, jsx_runtime_1.jsx)(RangeLayout, { children: children }) })));
|
|
73
|
+
}
|
|
74
|
+
function DateRangePickerBase(props) {
|
|
75
|
+
return ((0, jsx_runtime_1.jsxs)(DateRangePickerRoot, Object.assign({}, props, { children: [(0, jsx_runtime_1.jsx)(DateRangePickerMonthControls, {}), (0, jsx_runtime_1.jsx)(Calendar_js_1.CalendarGrid, { className: "[grid-area:leftGrid]", children: (value) => (0, jsx_runtime_1.jsx)(Calendar_js_1.CalendarDay, { value: value }, value.key) }), (0, jsx_runtime_1.jsx)(Calendar_js_1.CalendarGrid, { className: "[grid-area:rightGrid] !hidden !sm:grid", monthOffset: 1, children: (value) => (0, jsx_runtime_1.jsx)(Calendar_js_1.CalendarDay, { value: value }, value.key) })] })));
|
|
76
|
+
}
|
|
77
|
+
exports.DateRangePicker = Object.assign(DateRangePickerBase, {
|
|
78
|
+
Root: DateRangePickerRoot,
|
|
79
|
+
RangeLayout,
|
|
80
|
+
DayLabels: Calendar_js_1.DayLabels,
|
|
81
|
+
CalendarDay: Calendar_js_1.CalendarDay,
|
|
82
|
+
Calendar: calendar_blocks_1.Calendar,
|
|
83
|
+
CalendarGrid: Calendar_js_1.CalendarGrid,
|
|
84
|
+
CalendarDays: calendar_blocks_1.CalendarDays,
|
|
85
|
+
MonthControls: DateRangePickerMonthControls,
|
|
86
|
+
MonthButton: Calendar_js_1.MonthButton,
|
|
87
|
+
MonthLabel: Calendar_js_1.MonthLabel,
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=DateRangePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","sourceRoot":"","sources":["../../../../src/components/datePicker/DateRangePicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
__exportStar(require("./DatePicker.js"), exports);
|
|
19
|
+
__exportStar(require("./DateRangePicker.js"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/datePicker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/datePicker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kDAAgC;AAChC,uDAAqC"}
|