cleanplate 0.2.7 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/components/form-controls/Date.d.ts +27 -7
- package/dist/components/form-controls/Date.d.ts.map +1 -1
- package/dist/components/form-controls/date/DatePickerFooter.d.ts +8 -0
- package/dist/components/form-controls/date/DatePickerFooter.d.ts.map +1 -0
- package/dist/components/form-controls/date/DatePickerGrid.d.ts +18 -0
- package/dist/components/form-controls/date/DatePickerGrid.d.ts.map +1 -0
- package/dist/components/form-controls/date/DatePickerHeader.d.ts +21 -0
- package/dist/components/form-controls/date/DatePickerHeader.d.ts.map +1 -0
- package/dist/components/form-controls/date/DatePickerPanel.d.ts +15 -0
- package/dist/components/form-controls/date/DatePickerPanel.d.ts.map +1 -0
- package/dist/components/form-controls/date/ScrollPicker.d.ts +16 -0
- package/dist/components/form-controls/date/ScrollPicker.d.ts.map +1 -0
- package/dist/components/form-controls/date/calendar-matrix.d.ts +6 -0
- package/dist/components/form-controls/date/calendar-matrix.d.ts.map +1 -0
- package/dist/components/form-controls/date/date-constraints.d.ts +7 -0
- package/dist/components/form-controls/date/date-constraints.d.ts.map +1 -0
- package/dist/components/form-controls/date/date-types.d.ts +8 -0
- package/dist/components/form-controls/date/date-types.d.ts.map +1 -0
- package/dist/components/form-controls/date/normalize-date.d.ts +13 -0
- package/dist/components/form-controls/date/normalize-date.d.ts.map +1 -0
- package/dist/components/form-controls/date/use-date-picker-state.d.ts +27 -0
- package/dist/components/form-controls/date/use-date-picker-state.d.ts.map +1 -0
- package/dist/components/form-controls/date/use-media-query.d.ts +2 -0
- package/dist/components/form-controls/date/use-media-query.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.es.css +1 -1
- package/dist/index.es.js +4 -4
- package/dist/index.js +4 -4
- package/docs/FormControls.md +19 -4
- package/docs/superpowers/plans/2026-05-10-date-picker.md +955 -0
- package/docs/superpowers/specs/2026-05-10-date-picker-design.md +196 -0
- package/llms.txt +2 -2
- package/package.json +21 -8
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
### Breaking
|
|
6
|
+
|
|
7
|
+
- **`FormControls.Date`**: replaces the legacy three-dropdown (day/month/year) field with a **calendar date picker**.
|
|
8
|
+
- `value` / `defaultValue` are now **`Date | null`** (not `string` / `"dd-mm-yyyy"` format).
|
|
9
|
+
- `onChange` is now **`(date: Date | null) => void`**.
|
|
10
|
+
- When `name` is set, a hidden input submits **`yyyy-MM-dd`**.
|
|
@@ -1,16 +1,36 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { type Placement } from "@floating-ui/react";
|
|
3
|
+
import type { Locale } from "date-fns";
|
|
2
4
|
export interface DateProps {
|
|
5
|
+
/** Controlled value. Omit for uncontrolled (use `defaultValue`). */
|
|
6
|
+
value?: Date | null;
|
|
7
|
+
/** Uncontrolled starting value when `value` is omitted. */
|
|
8
|
+
defaultValue?: Date | null;
|
|
9
|
+
onChange?: (date: Date | null) => void;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
dateFormat?: string;
|
|
3
12
|
id?: string;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
13
|
+
name?: string;
|
|
14
|
+
minDate?: Date;
|
|
15
|
+
maxDate?: Date;
|
|
16
|
+
disabledDates?: Date[];
|
|
17
|
+
disabledDaysOfWeek?: number[];
|
|
18
|
+
locale?: Locale;
|
|
19
|
+
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
20
|
+
clearable?: boolean;
|
|
7
21
|
isDisabled?: boolean;
|
|
8
|
-
|
|
9
|
-
|
|
22
|
+
/** When true, value cannot change and the picker does not open. */
|
|
23
|
+
readOnly?: boolean;
|
|
24
|
+
label?: string;
|
|
10
25
|
error?: string;
|
|
11
26
|
isFluid?: boolean;
|
|
12
27
|
dataTestId?: string;
|
|
28
|
+
isRequired?: boolean;
|
|
29
|
+
popoverPlacement?: Placement;
|
|
30
|
+
onOpen?: () => void;
|
|
31
|
+
onClose?: () => void;
|
|
32
|
+
className?: string;
|
|
13
33
|
}
|
|
14
|
-
declare const
|
|
15
|
-
export default
|
|
34
|
+
declare const DatePicker: React.FC<DateProps>;
|
|
35
|
+
export default DatePicker;
|
|
16
36
|
//# sourceMappingURL=Date.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Date.d.ts","sourceRoot":"","sources":["../../../src/components/form-controls/Date.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Date.d.ts","sourceRoot":"","sources":["../../../src/components/form-controls/Date.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA+BvC,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAwUnC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface DatePickerFooterProps {
|
|
3
|
+
onCancel: () => void;
|
|
4
|
+
onOk: () => void;
|
|
5
|
+
}
|
|
6
|
+
declare const DatePickerFooter: React.FC<DatePickerFooterProps>;
|
|
7
|
+
export default DatePickerFooter;
|
|
8
|
+
//# sourceMappingURL=DatePickerFooter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerFooter.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/DatePickerFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA0BrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Locale } from "date-fns";
|
|
3
|
+
import type { CalendarCell } from "./calendar-matrix";
|
|
4
|
+
export interface DatePickerGridProps {
|
|
5
|
+
weeks: CalendarCell[][];
|
|
6
|
+
weekLabels: string[];
|
|
7
|
+
locale: Locale;
|
|
8
|
+
staged: Date | null;
|
|
9
|
+
today: Date;
|
|
10
|
+
isDayUnavailable: (d: Date) => boolean;
|
|
11
|
+
onSelectDay: (d: Date) => void;
|
|
12
|
+
onRequestPrevMonth?: () => void;
|
|
13
|
+
onRequestNextMonth?: () => void;
|
|
14
|
+
gridLabelId?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const DatePickerGrid: React.FC<DatePickerGridProps>;
|
|
17
|
+
export default DatePickerGrid;
|
|
18
|
+
//# sourceMappingURL=DatePickerGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerGrid.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/DatePickerGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,gBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwOjD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Locale } from "date-fns";
|
|
3
|
+
export interface DatePickerHeaderProps {
|
|
4
|
+
displayedMonth: Date;
|
|
5
|
+
locale: Locale;
|
|
6
|
+
monthLabelShort: string;
|
|
7
|
+
yearLabel: string;
|
|
8
|
+
prevMonthDisabled: boolean;
|
|
9
|
+
nextMonthDisabled: boolean;
|
|
10
|
+
prevYearDisabled: boolean;
|
|
11
|
+
nextYearDisabled: boolean;
|
|
12
|
+
onPrevMonth: () => void;
|
|
13
|
+
onNextMonth: () => void;
|
|
14
|
+
onPrevYear: () => void;
|
|
15
|
+
onNextYear: () => void;
|
|
16
|
+
onOpenMonth: () => void;
|
|
17
|
+
onOpenYear: () => void;
|
|
18
|
+
}
|
|
19
|
+
declare const DatePickerHeader: React.FC<DatePickerHeaderProps>;
|
|
20
|
+
export default DatePickerHeader;
|
|
21
|
+
//# sourceMappingURL=DatePickerHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/DatePickerHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKvC,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA8FrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { Locale } from "date-fns";
|
|
3
|
+
import type { Constraints } from "./date-types";
|
|
4
|
+
import type { UseDatePickerStateReturn } from "./use-date-picker-state";
|
|
5
|
+
export interface DatePickerPanelProps {
|
|
6
|
+
panelId: string;
|
|
7
|
+
gridLabelId: string;
|
|
8
|
+
locale?: Locale;
|
|
9
|
+
weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
10
|
+
constraints: Constraints;
|
|
11
|
+
picker: UseDatePickerStateReturn;
|
|
12
|
+
}
|
|
13
|
+
declare const DatePickerPanel: React.FC<DatePickerPanelProps>;
|
|
14
|
+
export default DatePickerPanel;
|
|
15
|
+
//# sourceMappingURL=DatePickerPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/DatePickerPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAWhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAIxE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA8OnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface ScrollPickItem<T> {
|
|
3
|
+
value: T;
|
|
4
|
+
label: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ScrollPickerProps<T> {
|
|
8
|
+
items: ScrollPickItem<T>[];
|
|
9
|
+
onPick: (value: T) => void;
|
|
10
|
+
activePredicate?: (value: T) => boolean;
|
|
11
|
+
/** When set, labels the listbox (preferred over `aria-label`). */
|
|
12
|
+
ariaLabelledBy?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const ScrollPicker: <T>({ items, onPick, activePredicate, ariaLabelledBy, }: ScrollPickerProps<T>) => React.ReactElement;
|
|
15
|
+
export default ScrollPicker;
|
|
16
|
+
//# sourceMappingURL=ScrollPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollPicker.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/ScrollPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,YAAY,GAAI,CAAC,EAAG,qDAKvB,iBAAiB,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,YAkC/B,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-matrix.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/calendar-matrix.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,IAAI,EACpB,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACtC,YAAY,EAAE,EAAE,CAiClB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Constraints } from "./date-types";
|
|
2
|
+
/** True if selecting this calendar date is forbidden. */
|
|
3
|
+
export declare function isDateUnavailable(d: Date, c: Constraints): boolean;
|
|
4
|
+
export declare function clampDateToConstraints(d: Date, c: Constraints): Date;
|
|
5
|
+
export declare function isMonthFullyBeforeMin(month: Date, minDate?: Date): boolean;
|
|
6
|
+
export declare function isMonthFullyAfterMax(month: Date, maxDate?: Date): boolean;
|
|
7
|
+
//# sourceMappingURL=date-constraints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-constraints.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/date-constraints.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAWhD,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAoBlE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI,CASpE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,CAI1E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,CAIzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-types.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/date-types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Local calendar midnight for comparisons and hidden-field values. */
|
|
2
|
+
export declare function toCalendarDate(d: Date): Date;
|
|
3
|
+
export declare function calendarDatesEqual(a: Date | null, b: Date | null): boolean;
|
|
4
|
+
export declare function formatISODate(d: Date): string;
|
|
5
|
+
/**
|
|
6
|
+
* Bounds and lists often arrive as plain `Date` at runtime — but Storybook Controls
|
|
7
|
+
* `date` knobs and serialized props may pass milliseconds (`number`) or ISO strings.
|
|
8
|
+
* Returns `undefined` when the value cannot be parsed.
|
|
9
|
+
*/
|
|
10
|
+
export declare function coerceToCalendarDate(input: unknown): Date | undefined;
|
|
11
|
+
/** Coerces each entry; drops unparseable items. Returns `undefined` if the array is empty/omitted. */
|
|
12
|
+
export declare function coerceToCalendarDates(inputs: unknown[] | undefined): Date[] | undefined;
|
|
13
|
+
//# sourceMappingURL=normalize-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-date.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/normalize-date.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAE5C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAK1E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAuBrE;AAED,sGAAsG;AACtG,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,IAAI,EAAE,GAAG,SAAS,CAQvF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Constraints } from "./date-types";
|
|
2
|
+
export type PanelView = "calendar" | "month" | "year";
|
|
3
|
+
export interface UseDatePickerStateArgs {
|
|
4
|
+
value: Date | null | undefined;
|
|
5
|
+
defaultValue: Date | null | undefined;
|
|
6
|
+
onChange?: (d: Date | null) => void;
|
|
7
|
+
constraints: Constraints;
|
|
8
|
+
}
|
|
9
|
+
export interface UseDatePickerStateReturn {
|
|
10
|
+
isOpen: boolean;
|
|
11
|
+
panelView: PanelView;
|
|
12
|
+
setPanelView: (v: PanelView) => void;
|
|
13
|
+
committed: Date | null;
|
|
14
|
+
staged: Date | null;
|
|
15
|
+
displayedMonth: Date;
|
|
16
|
+
open: () => void;
|
|
17
|
+
close: () => void;
|
|
18
|
+
cancel: () => void;
|
|
19
|
+
confirm: () => void;
|
|
20
|
+
selectDay: (d: Date) => void;
|
|
21
|
+
clearCommitted: () => void;
|
|
22
|
+
goPrevMonth: () => void;
|
|
23
|
+
goNextMonth: () => void;
|
|
24
|
+
setDisplayedMonthFromYearMonth: (year: number, monthIndex: number) => void;
|
|
25
|
+
}
|
|
26
|
+
export declare function useDatePickerState(args: UseDatePickerStateArgs): UseDatePickerStateReturn;
|
|
27
|
+
//# sourceMappingURL=use-date-picker-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-date-picker-state.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/use-date-picker-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAShD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,8BAA8B,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5E;AAsBD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,GAC3B,wBAAwB,CAuJ1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-media-query.d.ts","sourceRoot":"","sources":["../../../../src/components/form-controls/date/use-media-query.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CA4B3D"}
|