@astryxdesign/core 0.4.4 → 0.4.5-canary.1dc3e5d
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 +39 -0
- package/dist/BottomSheet/BottomSheet.d.ts +11 -2
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +4 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts +5 -2
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +56 -13
- package/dist/BottomSheet/index.d.ts +1 -1
- package/dist/BottomSheet/index.d.ts.map +1 -1
- package/dist/BottomSheet/snapOffsets.d.ts +57 -20
- package/dist/BottomSheet/snapOffsets.d.ts.map +1 -1
- package/dist/BottomSheet/snapOffsets.js +106 -30
- package/dist/BottomSheet/useSheetGestures.d.ts +13 -8
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +160 -64
- package/dist/Calendar/Calendar.d.ts +17 -0
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +34 -3
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +14 -0
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +1 -0
- package/dist/Calendar/getStandaloneShortWeekdayNames.js +26 -0
- package/dist/Calendar/hooks/useCalendarConstraints.d.ts +22 -1
- package/dist/Calendar/hooks/useCalendarConstraints.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarConstraints.js +26 -4
- package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarDays.js +14 -10
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts +47 -0
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +1 -0
- package/dist/Calendar/standaloneShortWeekdayNames.generated.js +40 -0
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +9 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +6 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +6 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts +23 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +38 -3
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +7 -2
- package/dist/Field/FieldLabel.d.ts +2 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +21 -3
- package/dist/Field/InputClearButton.d.ts +2 -1
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +6 -1
- package/dist/FormLayout/FormLayout.d.ts +24 -2
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/FormLayout/FormLayout.js +7 -2
- package/dist/FormLayout/FormLayoutContext.d.ts +15 -2
- package/dist/FormLayout/FormLayoutContext.d.ts.map +1 -1
- package/dist/FormLayout/FormLayoutContext.js +19 -4
- package/dist/FormLayout/index.d.ts +1 -1
- package/dist/FormLayout/index.d.ts.map +1 -1
- package/dist/Markdown/Markdown.d.ts +8 -0
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +31 -3
- package/dist/Markdown/parser.d.ts +14 -2
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +50 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +6 -1
- package/dist/Outline/parseOutlineFromMarkdown.d.ts +2 -0
- package/dist/Outline/parseOutlineFromMarkdown.d.ts.map +1 -1
- package/dist/Outline/parseOutlineFromMarkdown.js +5 -31
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +12 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +6 -1
- package/dist/StatusDot/StatusDot.d.ts +43 -3
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +42 -5
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +9 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +6 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +6 -1
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +6 -1
- package/dist/hooks/useResolvedRequired.d.ts +19 -0
- package/dist/hooks/useResolvedRequired.d.ts.map +1 -0
- package/dist/hooks/useResolvedRequired.js +40 -0
- package/dist/utils/plainDate.d.ts +6 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +12 -0
- package/locales/af-ZA.json +958 -0
- package/locales/ar-SA.json +998 -0
- package/locales/ca-ES.json +974 -0
- package/locales/cs-CZ.json +990 -0
- package/locales/da-DK.json +966 -0
- package/locales/de-DE.json +966 -0
- package/locales/el-GR.json +990 -0
- package/locales/en.json +4 -0
- package/locales/es-ES.json +978 -0
- package/locales/fi-FI.json +990 -0
- package/locales/fr-FR.json +928 -0
- package/locales/he-IL.json +990 -0
- package/locales/hu-HU.json +990 -0
- package/locales/it-IT.json +978 -0
- package/locales/ja-JP.json +998 -0
- package/locales/ko-KR.json +990 -0
- package/locales/nl-NL.json +954 -0
- package/locales/no-NO.json +978 -0
- package/locales/pl-PL.json +982 -0
- package/locales/pseudo.json +3 -0
- package/locales/pt-BR.json +982 -0
- package/locales/pt-PT.json +982 -0
- package/locales/ro-RO.json +982 -0
- package/locales/ru-RU.json +990 -0
- package/locales/sr-SP.json +990 -0
- package/locales/sv-SE.json +986 -0
- package/locales/tr-TR.json +990 -0
- package/locales/uk-UA.json +990 -0
- package/locales/vi-VN.json +986 -0
- package/locales/zh-CN.json +998 -0
- package/locales/zh-TW.json +998 -0
- package/package.json +3 -3
- package/src/BottomSheet/BottomSheet.doc.mjs +36 -3
- package/src/BottomSheet/BottomSheet.test.tsx +153 -2
- package/src/BottomSheet/BottomSheet.tsx +16 -2
- package/src/BottomSheet/BottomSheetPanel.tsx +67 -13
- package/src/BottomSheet/index.ts +5 -1
- package/src/BottomSheet/snapOffsets.test.ts +114 -47
- package/src/BottomSheet/snapOffsets.ts +119 -33
- package/src/BottomSheet/useSheetGestures.test.ts +113 -15
- package/src/BottomSheet/useSheetGestures.ts +196 -100
- package/src/Calendar/Calendar.doc.mjs +16 -0
- package/src/Calendar/Calendar.test.tsx +137 -0
- package/src/Calendar/Calendar.tsx +65 -2
- package/src/Calendar/getStandaloneShortWeekdayNames.test.ts +54 -0
- package/src/Calendar/getStandaloneShortWeekdayNames.ts +38 -0
- package/src/Calendar/hooks/useCalendarConstraints.ts +54 -3
- package/src/Calendar/hooks/useCalendarDays.ts +13 -10
- package/src/Calendar/standaloneShortWeekdayNames.generated.ts +50 -0
- package/src/CheckboxInput/CheckboxInput.tsx +6 -0
- package/src/ComplexSelector/ComplexSelector.tsx +3 -1
- package/src/DateInput/DateInput.tsx +3 -1
- package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +81 -1
- package/src/DateRangeInput/DateRangeInput.tsx +72 -1
- package/src/DateTimeInput/DateTimeInput.tsx +4 -2
- package/src/Field/Field.doc.mjs +1 -0
- package/src/Field/FieldLabel.tsx +20 -4
- package/src/Field/InputClearButton.test.tsx +25 -0
- package/src/Field/InputClearButton.tsx +4 -1
- package/src/FormLayout/FormLayout.doc.mjs +13 -0
- package/src/FormLayout/FormLayout.test.tsx +181 -4
- package/src/FormLayout/FormLayout.tsx +33 -2
- package/src/FormLayout/FormLayoutContext.ts +22 -7
- package/src/FormLayout/index.ts +1 -1
- package/src/Markdown/Markdown.doc.mjs +3 -0
- package/src/Markdown/Markdown.test.tsx +78 -0
- package/src/Markdown/Markdown.tsx +41 -1
- package/src/Markdown/parser.ts +60 -2
- package/src/MultiSelector/MultiSelector.tsx +3 -1
- package/src/NumberInput/NumberInput.tsx +3 -1
- package/src/Outline/Outline.doc.mjs +2 -0
- package/src/Outline/parseOutlineFromMarkdown.ts +10 -40
- package/src/RadioList/RadioList.tsx +9 -1
- package/src/Selector/Selector.tsx +3 -1
- package/src/StatusDot/StatusDot.doc.mjs +13 -0
- package/src/StatusDot/StatusDot.test.tsx +115 -8
- package/src/StatusDot/StatusDot.tsx +74 -9
- package/src/Switch/Switch.tsx +6 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +20 -2
- package/src/TextArea/TextArea.tsx +3 -1
- package/src/TextInput/TextInput.tsx +3 -1
- package/src/TimeInput/TimeInput.tsx +3 -1
- package/src/hooks/useResolvedRequired.ts +42 -0
- package/src/utils/plainDate.test.ts +50 -0
- package/src/utils/plainDate.ts +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendarConstraints.d.ts","sourceRoot":"","sources":["../../../src/Calendar/hooks/useCalendarConstraints.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"useCalendarConstraints.d.ts","sourceRoot":"","sources":["../../../src/Calendar/hooks/useCalendarConstraints.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IACzD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,uCAAuC;IACvC,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IAC7C,gCAAgC;IAChC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,gCAAgC;IAChC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,6BAA6B,GACrC,4BAA4B,CAoE9B"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - /packages/core/src/Calendar/hooks/index.ts
|
|
13
13
|
*/
|
|
14
14
|
import { useCallback, useMemo } from 'react';
|
|
15
|
-
import { plainDateFromISO, plainDateToDate, plainDateIsBefore, plainDateIsAfter } from "../../utils/plainDate.js";
|
|
15
|
+
import { plainDateFromISO, plainDateToDate, plainDateIsBefore, plainDateIsAfter, plainDateDiffDays } from "../../utils/plainDate.js";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Configuration for date constraints
|
|
@@ -26,13 +26,15 @@ import { plainDateFromISO, plainDateToDate, plainDateIsBefore, plainDateIsAfter
|
|
|
26
26
|
* Hook for managing calendar date validation constraints.
|
|
27
27
|
*
|
|
28
28
|
* Provides a function to check if a date is disabled based on
|
|
29
|
-
* min/max bounds and custom constraint functions.
|
|
29
|
+
* min/max bounds, range-span bounds, and custom constraint functions.
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
32
32
|
* ```
|
|
33
33
|
* const {isDateDisabled} = useCalendarConstraints({
|
|
34
34
|
* min: '2026-01-01',
|
|
35
35
|
* max: '2026-12-31',
|
|
36
|
+
* maxRangeSpan: 7, // once a start is picked, cap the window at 7 days
|
|
37
|
+
* rangeAnchor, // the in-progress start (null before the first click)
|
|
36
38
|
* dateConstraints: [
|
|
37
39
|
* (date) => date.getDay() !== 0, // No Sundays (receives native Date)
|
|
38
40
|
* ],
|
|
@@ -48,7 +50,10 @@ export function useCalendarConstraints(options) {
|
|
|
48
50
|
const {
|
|
49
51
|
min,
|
|
50
52
|
max,
|
|
51
|
-
dateConstraints
|
|
53
|
+
dateConstraints,
|
|
54
|
+
maxRangeSpan,
|
|
55
|
+
minRangeSpan,
|
|
56
|
+
rangeAnchor
|
|
52
57
|
} = options;
|
|
53
58
|
|
|
54
59
|
// Parse min/max dates
|
|
@@ -67,6 +72,23 @@ export function useCalendarConstraints(options) {
|
|
|
67
72
|
return true;
|
|
68
73
|
}
|
|
69
74
|
|
|
75
|
+
// Range-span bounds, measured from the in-progress start. Spans count
|
|
76
|
+
// both endpoints (a span of 7 spans a 7-day window), so the reachable
|
|
77
|
+
// distance from the anchor is `span - 1` days in either direction. Only
|
|
78
|
+
// active once a start is picked — before that, every day stays pickable.
|
|
79
|
+
if (rangeAnchor) {
|
|
80
|
+
const distance = Math.abs(plainDateDiffDays(rangeAnchor, date));
|
|
81
|
+
if (maxRangeSpan != null && distance > maxRangeSpan - 1) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
// The anchor itself (distance 0) is never disabled by minRangeSpan —
|
|
85
|
+
// it is the picked start, and disabling it would render the active
|
|
86
|
+
// selection start as aria-disabled to keyboard and screen-reader users.
|
|
87
|
+
if (minRangeSpan != null && distance > 0 && distance < minRangeSpan - 1) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
70
92
|
// Check custom constraints (convert to Date for public API compatibility)
|
|
71
93
|
if (dateConstraints) {
|
|
72
94
|
for (const constraint of dateConstraints) {
|
|
@@ -76,7 +98,7 @@ export function useCalendarConstraints(options) {
|
|
|
76
98
|
}
|
|
77
99
|
}
|
|
78
100
|
return false;
|
|
79
|
-
}, [minDate, maxDate, dateConstraints]);
|
|
101
|
+
}, [minDate, maxDate, dateConstraints, maxRangeSpan, minRangeSpan, rangeAnchor]);
|
|
80
102
|
return {
|
|
81
103
|
isDateDisabled,
|
|
82
104
|
minDate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendarDays.d.ts","sourceRoot":"","sources":["../../../src/Calendar/hooks/useCalendarDays.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useCalendarDays.d.ts","sourceRoot":"","sources":["../../../src/Calendar/hooks/useCalendarDays.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,uBAAuB,CAAC;AAI/B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,mCAAmC;IACnC,GAAG,EAAE,aAAa,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,8BAA8B;IAC9B,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;IACvB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAgFvB"}
|
|
@@ -4,15 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file useCalendarDays.ts
|
|
7
|
-
* @input Uses React useMemo, PlainDate utilities
|
|
7
|
+
* @input Uses React context via use(), useMemo, PlainDate utilities, generated CLDR weekday data
|
|
8
8
|
* @output Exports useCalendarDays hook for generating calendar day grids
|
|
9
9
|
* @position Calendar-specific hook; used by Calendar
|
|
10
10
|
*
|
|
11
11
|
* SYNC: When modified, update:
|
|
12
12
|
* - /packages/core/src/Calendar/hooks/index.ts
|
|
13
13
|
*/
|
|
14
|
-
import { useMemo } from 'react';
|
|
14
|
+
import { use, useMemo } from 'react';
|
|
15
15
|
import { plainDateToISO, getDaysInMonth, plainDateDayOfWeek, plainDateAddDays } from "../../utils/plainDate.js";
|
|
16
|
+
import { InternationalizationContext } from "../../i18n/InternationalizationContext.js";
|
|
17
|
+
import { getStandaloneShortWeekdayNames } from "../getStandaloneShortWeekdayNames.js";
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* Represents a single day in the calendar grid.
|
|
@@ -49,6 +51,9 @@ export function useCalendarDays(options) {
|
|
|
49
51
|
weekStartsOn = 0,
|
|
50
52
|
hasVariableRowCount = false
|
|
51
53
|
} = options;
|
|
54
|
+
const {
|
|
55
|
+
locale
|
|
56
|
+
} = use(InternationalizationContext);
|
|
52
57
|
|
|
53
58
|
// Calculate grid structure
|
|
54
59
|
const gridInfo = useMemo(() => {
|
|
@@ -75,15 +80,14 @@ export function useCalendarDays(options) {
|
|
|
75
80
|
};
|
|
76
81
|
}, [year, month, weekStartsOn, hasVariableRowCount]);
|
|
77
82
|
|
|
78
|
-
//
|
|
83
|
+
// Generated strings avoid Date anchors, so weekday headers cannot shift with
|
|
84
|
+
// the runtime timezone. Keep numeric indices as the rotation source of truth.
|
|
79
85
|
const dayNames = useMemo(() => {
|
|
80
|
-
const names =
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return rotated;
|
|
86
|
-
}, [weekStartsOn]);
|
|
86
|
+
const names = getStandaloneShortWeekdayNames(locale);
|
|
87
|
+
return Array.from({
|
|
88
|
+
length: 7
|
|
89
|
+
}, (_, index) => names[(index + weekStartsOn) % 7]);
|
|
90
|
+
}, [locale, weekStartsOn]);
|
|
87
91
|
|
|
88
92
|
// Generate days array
|
|
89
93
|
const days = useMemo(() => {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generated by scripts/generate-cldr-weekdays.mjs from Unicode CLDR 48.2.0.
|
|
3
|
+
* Do not edit by hand. Run `pnpm generate:cldr-weekdays` instead.
|
|
4
|
+
*/
|
|
5
|
+
export type StandaloneShortWeekdayNames = readonly [
|
|
6
|
+
string,
|
|
7
|
+
string,
|
|
8
|
+
string,
|
|
9
|
+
string,
|
|
10
|
+
string,
|
|
11
|
+
string,
|
|
12
|
+
string
|
|
13
|
+
];
|
|
14
|
+
export declare const standaloneShortWeekdayNamesByLocale: {
|
|
15
|
+
readonly af: readonly ["So.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Sa."];
|
|
16
|
+
readonly ar: readonly ["أحد", "إثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت"];
|
|
17
|
+
readonly 'ar-SA': readonly ["أحد", "إثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت"];
|
|
18
|
+
readonly ca: readonly ["dg.", "dl.", "dt.", "dc.", "dj.", "dv.", "ds."];
|
|
19
|
+
readonly cs: readonly ["ne", "po", "út", "st", "čt", "pá", "so"];
|
|
20
|
+
readonly da: readonly ["sø.", "ma.", "ti.", "on.", "to.", "fr.", "lø."];
|
|
21
|
+
readonly de: readonly ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."];
|
|
22
|
+
readonly el: readonly ["Κυ", "Δε", "Τρ", "Τε", "Πέ", "Πα", "Σά"];
|
|
23
|
+
readonly en: readonly ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
24
|
+
readonly es: readonly ["DO", "LU", "MA", "MI", "JU", "VI", "SA"];
|
|
25
|
+
readonly fi: readonly ["su", "ma", "ti", "ke", "to", "pe", "la"];
|
|
26
|
+
readonly fr: readonly ["di", "lu", "ma", "me", "je", "ve", "sa"];
|
|
27
|
+
readonly he: readonly ["א׳", "ב׳", "ג׳", "ד׳", "ה׳", "ו׳", "ש׳"];
|
|
28
|
+
readonly hu: readonly ["V", "H", "K", "Sze", "Cs", "P", "Szo"];
|
|
29
|
+
readonly it: readonly ["dom", "lun", "mar", "mer", "gio", "ven", "sab"];
|
|
30
|
+
readonly ja: readonly ["日", "月", "火", "水", "木", "金", "土"];
|
|
31
|
+
readonly ko: readonly ["일", "월", "화", "수", "목", "금", "토"];
|
|
32
|
+
readonly nl: readonly ["zo", "ma", "di", "wo", "do", "vr", "za"];
|
|
33
|
+
readonly no: readonly ["sø.", "ma.", "ti.", "on.", "to.", "fr.", "lø."];
|
|
34
|
+
readonly pl: readonly ["nie", "pon", "wto", "śro", "czw", "pią", "sob"];
|
|
35
|
+
readonly pt: readonly ["dom.", "seg.", "ter.", "qua.", "qui.", "sex.", "sáb."];
|
|
36
|
+
readonly 'pt-PT': readonly ["dom.", "seg.", "ter.", "qua.", "qui.", "sex.", "sáb."];
|
|
37
|
+
readonly ro: readonly ["du.", "lu.", "ma.", "mi.", "joi", "vi.", "sâ."];
|
|
38
|
+
readonly ru: readonly ["вс", "пн", "вт", "ср", "чт", "пт", "сб"];
|
|
39
|
+
readonly sr: readonly ["не", "по", "ут", "ср", "че", "пе", "су"];
|
|
40
|
+
readonly sv: readonly ["sö", "må", "ti", "on", "to", "fr", "lö"];
|
|
41
|
+
readonly tr: readonly ["Pa", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct"];
|
|
42
|
+
readonly uk: readonly ["нд", "пн", "вт", "ср", "чт", "пт", "сб"];
|
|
43
|
+
readonly vi: readonly ["CN", "T2", "T3", "T4", "T5", "T6", "T7"];
|
|
44
|
+
readonly zh: readonly ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
|
|
45
|
+
readonly 'zh-TW': readonly ["日", "一", "二", "三", "四", "五", "六"];
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=standaloneShortWeekdayNames.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standaloneShortWeekdayNames.generated.d.ts","sourceRoot":"","sources":["../../src/Calendar/standaloneShortWeekdayNames.generated.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,MAAM,2BAA2B,GAAG,SAAS;IACjD,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC0B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @generated by scripts/generate-cldr-weekdays.mjs from Unicode CLDR 48.2.0.
|
|
5
|
+
* Do not edit by hand. Run `pnpm generate:cldr-weekdays` instead.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const standaloneShortWeekdayNamesByLocale = {
|
|
9
|
+
af: ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'],
|
|
10
|
+
ar: ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
|
|
11
|
+
'ar-SA': ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
|
|
12
|
+
ca: ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'],
|
|
13
|
+
cs: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
|
|
14
|
+
da: ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'],
|
|
15
|
+
de: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
|
|
16
|
+
el: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'],
|
|
17
|
+
en: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
|
18
|
+
es: ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'],
|
|
19
|
+
fi: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
|
|
20
|
+
fr: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],
|
|
21
|
+
he: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
|
|
22
|
+
hu: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
|
|
23
|
+
it: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],
|
|
24
|
+
ja: ['日', '月', '火', '水', '木', '金', '土'],
|
|
25
|
+
ko: ['일', '월', '화', '수', '목', '금', '토'],
|
|
26
|
+
nl: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
|
|
27
|
+
no: ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'],
|
|
28
|
+
pl: ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'],
|
|
29
|
+
pt: ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'],
|
|
30
|
+
'pt-PT': ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'],
|
|
31
|
+
ro: ['du.', 'lu.', 'ma.', 'mi.', 'joi', 'vi.', 'sâ.'],
|
|
32
|
+
ru: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
|
|
33
|
+
sr: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
|
|
34
|
+
sv: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],
|
|
35
|
+
tr: ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
|
|
36
|
+
uk: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
|
|
37
|
+
vi: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
|
|
38
|
+
zh: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
|
|
39
|
+
'zh-TW': ['日', '一', '二', '三', '四', '五', '六']
|
|
40
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA+EhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,QAAQ,EACR,eAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,kBAAkB,+BAwMpB;yBAjOe,aAAa"}
|
|
@@ -26,6 +26,7 @@ import { useTooltip } from "../Tooltip/index.js";
|
|
|
26
26
|
import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
27
27
|
import { indicatorScope } from "../Indicator/indicator.markers.stylex.js";
|
|
28
28
|
import { useIndicatorFocusRing } from "../hooks/useIndicatorFocusRing.js";
|
|
29
|
+
import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
|
|
29
30
|
import { useIndicator } from "../Indicator/index.js";
|
|
30
31
|
import { themeProps } from "../utils/themeProps.js";
|
|
31
32
|
import { CheckboxListContext } from "../CheckboxList/CheckboxListContext.js";
|
|
@@ -138,6 +139,13 @@ export function CheckboxInput({
|
|
|
138
139
|
const id = useId();
|
|
139
140
|
const descriptionID = useId();
|
|
140
141
|
const statusMessageID = useId();
|
|
142
|
+
// Announce the effective required state (form default included) while the
|
|
143
|
+
// native `required` stays bound to the explicit `isRequired` so a layout
|
|
144
|
+
// default never switches on browser validation.
|
|
145
|
+
const isEffectivelyRequired = useResolvedRequired({
|
|
146
|
+
isRequired,
|
|
147
|
+
isOptional
|
|
148
|
+
});
|
|
141
149
|
const [, startTransition] = useTransition();
|
|
142
150
|
const [optimisticValue, setOptimisticValue] = useOptimistic(value);
|
|
143
151
|
const isBusy = isLoading || optimisticValue !== value;
|
|
@@ -241,6 +249,7 @@ export function CheckboxInput({
|
|
|
241
249
|
form: isFocusableDisabled ? '' : undefined,
|
|
242
250
|
readOnly: isReadOnly,
|
|
243
251
|
required: isRequired,
|
|
252
|
+
"aria-required": isEffectivelyRequired ? 'true' : undefined,
|
|
244
253
|
onChange: e => {
|
|
245
254
|
if (isDisabled || isBusy || isReadOnly) {
|
|
246
255
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAA4B,KAAK,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAI5D,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ import { Spinner } from "../Spinner/index.js";
|
|
|
23
23
|
import { useTranslator } from "../i18n/index.js";
|
|
24
24
|
import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
|
|
25
25
|
import { usePopover } from "../Popover/usePopover.js";
|
|
26
|
+
import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
|
|
26
27
|
import "../theme/tokens.stylex.js";
|
|
27
28
|
import { colorVars, durationVars, easeVars, fontWeightVars, radiusVars, sizeVars, spacingVars, typographyVars, typeScaleVars } from "../theme/tokens.stylex.js";
|
|
28
29
|
import { isRenderable, mergeProps } from "../utils/index.js";
|
|
@@ -212,6 +213,10 @@ export function ComplexSelector({
|
|
|
212
213
|
...props
|
|
213
214
|
}) {
|
|
214
215
|
const t = useTranslator();
|
|
216
|
+
const isEffectivelyRequired = useResolvedRequired({
|
|
217
|
+
isRequired,
|
|
218
|
+
isOptional
|
|
219
|
+
});
|
|
215
220
|
const placeholder = placeholderFromProps ?? t('@astryx.selector.placeholder');
|
|
216
221
|
const effectiveStatusVariant = variant === 'ghost' && statusVariant === 'attached' ? 'detached' : statusVariant;
|
|
217
222
|
const triggerId = useId();
|
|
@@ -318,7 +323,7 @@ export function ComplexSelector({
|
|
|
318
323
|
"aria-controls": contentId,
|
|
319
324
|
"aria-describedby": ariaDescribedBy,
|
|
320
325
|
"aria-labelledby": labelId,
|
|
321
|
-
"aria-required":
|
|
326
|
+
"aria-required": isEffectivelyRequired ? 'true' : undefined,
|
|
322
327
|
"aria-invalid": status?.type === 'error' ? 'true' : undefined,
|
|
323
328
|
"aria-busy": isBusy || undefined,
|
|
324
329
|
disabled: isDisabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../src/DateInput/DateInput.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,EAGL,KAAK,WAAW,EAKhB,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAOlB,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../src/DateInput/DateInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ import { Spinner } from "../Spinner/index.js";
|
|
|
29
29
|
import { Calendar } from "../Calendar/index.js";
|
|
30
30
|
import { useCalendarConstraints } from "../Calendar/hooks/index.js";
|
|
31
31
|
import { useInputStatusIcon } from "../hooks/useInputStatusIcon.js";
|
|
32
|
+
import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
|
|
32
33
|
import { usePopover } from "../Popover/index.js";
|
|
33
34
|
import { useTooltip } from "../Tooltip/index.js";
|
|
34
35
|
import { getInputARIA, isImeKeyEvent, parseDateInput } from "../utils/index.js";
|
|
@@ -137,6 +138,10 @@ export function DateInput({
|
|
|
137
138
|
...rest
|
|
138
139
|
}) {
|
|
139
140
|
const t = useTranslator();
|
|
141
|
+
const isEffectivelyRequired = useResolvedRequired({
|
|
142
|
+
isRequired,
|
|
143
|
+
isOptional
|
|
144
|
+
});
|
|
140
145
|
const placeholder = placeholderFromProps ?? t('@astryx.dateInput.placeholder');
|
|
141
146
|
const size = useSize(sizeProp, 'md');
|
|
142
147
|
const id = useId();
|
|
@@ -419,7 +424,7 @@ export function DateInput({
|
|
|
419
424
|
readOnly: showsDisabledMessage || undefined,
|
|
420
425
|
"aria-labelledby": ariaLabelledBy,
|
|
421
426
|
"aria-describedby": ariaDescribedBy,
|
|
422
|
-
"aria-required":
|
|
427
|
+
"aria-required": isEffectivelyRequired ? 'true' : undefined,
|
|
423
428
|
"aria-invalid": status?.type === 'error' || !isInputValid ? 'true' : undefined,
|
|
424
429
|
"aria-busy": isBusy || undefined,
|
|
425
430
|
"aria-expanded": popover.isOpen,
|
|
@@ -93,6 +93,28 @@ export interface DateRangeInputProps extends Omit<BaseProps, 'onChange' | 'defau
|
|
|
93
93
|
* A date is disabled if ANY function returns false.
|
|
94
94
|
*/
|
|
95
95
|
dateConstraints?: ReadonlyArray<(date: Date) => boolean>;
|
|
96
|
+
/**
|
|
97
|
+
* Maximum number of days the selected range may span, counting both
|
|
98
|
+
* endpoints — `maxRangeSpan={7}` allows a 7-day window (start + 6 days).
|
|
99
|
+
* Once a start date is picked, days beyond this distance from it are
|
|
100
|
+
* disabled, so the user can't stretch the range past the cap. Use for
|
|
101
|
+
* rolling windows like "at most a week from the chosen day"; for fixed
|
|
102
|
+
* calendar bounds use `min`/`max`.
|
|
103
|
+
*
|
|
104
|
+
* This constrains selection only — it never rewrites a `value` that is
|
|
105
|
+
* already wider than the cap. Surface such a value with `status` if you
|
|
106
|
+
* need to flag it. A `preset` whose range violates the cap is disabled
|
|
107
|
+
* (shown but not committable) rather than allowed to override it.
|
|
108
|
+
*/
|
|
109
|
+
maxRangeSpan?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Minimum number of days the selected range must span, counting both
|
|
112
|
+
* endpoints — `minRangeSpan={2}` forbids a single-day range. Once a start
|
|
113
|
+
* date is picked, days closer than this to it are disabled — except the
|
|
114
|
+
* start itself, which stays selectable as the active anchor. Defaults to 1
|
|
115
|
+
* (a same-day start and end is allowed).
|
|
116
|
+
*/
|
|
117
|
+
minRangeSpan?: number;
|
|
96
118
|
/**
|
|
97
119
|
* Preset date ranges shown as quick-select options beside the calendar.
|
|
98
120
|
*/
|
|
@@ -163,7 +185,7 @@ export interface DateRangeInputProps extends Omit<BaseProps, 'onChange' | 'defau
|
|
|
163
185
|
* />
|
|
164
186
|
* ```
|
|
165
187
|
*/
|
|
166
|
-
export declare function DateRangeInput({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, value, onChange, changeAction, isLoading, min, max, dateConstraints, presets, hasClear, placeholder: placeholderFromProps, size: sizeProp, status, statusVariant, labelTooltip, numberOfMonths, weekStartsOn, width, xstyle, className, style, ref, ...rest }: DateRangeInputProps): import("react").JSX.Element;
|
|
188
|
+
export declare function DateRangeInput({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, value, onChange, changeAction, isLoading, min, max, dateConstraints, maxRangeSpan, minRangeSpan, presets, hasClear, placeholder: placeholderFromProps, size: sizeProp, status, statusVariant, labelTooltip, numberOfMonths, weekStartsOn, width, xstyle, className, style, ref, ...rest }: DateRangeInputProps): import("react").JSX.Element;
|
|
167
189
|
export declare namespace DateRangeInput {
|
|
168
190
|
var displayName: string;
|
|
169
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangeInput.d.ts","sourceRoot":"","sources":["../../src/DateRangeInput/DateRangeInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DateRangeInput.d.ts","sourceRoot":"","sources":["../../src/DateRangeInput/DateRangeInput.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAGL,KAAK,WAAW,EAKhB,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAS9C,YAAY,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,SAAS,CAAC;CAC3B;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,YAAY,EACV,WAAW,IAAI,oBAAoB,EACnC,eAAe,IAAI,wBAAwB,GAC5C,MAAM,UAAU,CAAC;AA6JlB,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,EACT,UAAU,GAAG,cAAc,CAC5B;IACC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAEzC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAE1B;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAEnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,GAAG,EACH,GAAG,EACH,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,QAAe,EACf,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EACN,aAA0B,EAC1B,YAAY,EACZ,cAAkB,EAClB,YAAY,EACZ,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,mBAAmB,+BAyRrB;yBAzTe,cAAc"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { useId, useCallback, useMemo, useOptimistic, useTransition } from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
|
-
import { plainDateFromISO, plainDateToday, plainDateFormat, DATE_FORMAT_SHORT, DATE_FORMAT_SHORT_WITH_YEAR } from "../utils/plainDate.js";
|
|
20
|
+
import { plainDateFromISO, plainDateToday, plainDateFormat, plainDateDiffDays, DATE_FORMAT_SHORT, DATE_FORMAT_SHORT_WITH_YEAR } from "../utils/plainDate.js";
|
|
21
21
|
import "../theme/tokens.stylex.js";
|
|
22
22
|
import { colorVars, sizeVars, radiusVars, spacingVars, typographyVars, typeScaleVars, borderVars } from "../theme/tokens.stylex.js";
|
|
23
23
|
import { Field, InputClearButton, inputWrapperStyles, inputStatusBorderStyles, inputStatusHoverShadowStyles, inputStatusFocusWithinStyles } from "../Field/index.js";
|
|
@@ -29,6 +29,7 @@ import { useTooltip } from "../Tooltip/index.js";
|
|
|
29
29
|
import { mergeProps } from "../utils/index.js";
|
|
30
30
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
31
31
|
import { useInputStatusIcon } from "../hooks/useInputStatusIcon.js";
|
|
32
|
+
import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
|
|
32
33
|
import { themeProps } from "../utils/themeProps.js";
|
|
33
34
|
import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
|
|
34
35
|
import { stableClassName } from "../naming.js";
|
|
@@ -73,6 +74,12 @@ const styles = {
|
|
|
73
74
|
kWkggS: "xgcxg3y",
|
|
74
75
|
kMwMTN: "xqwr325",
|
|
75
76
|
$$css: true
|
|
77
|
+
},
|
|
78
|
+
presetButtonDisabled: {
|
|
79
|
+
kMwMTN: "xnbbluu",
|
|
80
|
+
kkrTdU: "x1h6gzvc",
|
|
81
|
+
kWkggS: "xjbqb8w",
|
|
82
|
+
$$css: true
|
|
76
83
|
}
|
|
77
84
|
};
|
|
78
85
|
const sizeStyles = {
|
|
@@ -112,6 +119,24 @@ function isRangeEqual(a, b) {
|
|
|
112
119
|
}
|
|
113
120
|
return a.start === b.start && a.end === b.end;
|
|
114
121
|
}
|
|
122
|
+
|
|
123
|
+
// A preset that would land outside the span bounds is disabled rather than
|
|
124
|
+
// allowed to override them: the cap is authoritative, so an out-of-window
|
|
125
|
+
// preset stays visible (discoverable) but non-committable, mirroring how the
|
|
126
|
+
// calendar disables out-of-window days. Spans count both endpoints.
|
|
127
|
+
function isRangeWithinSpan(range, maxRangeSpan, minRangeSpan) {
|
|
128
|
+
if (maxRangeSpan == null && minRangeSpan == null) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
const span = Math.abs(plainDateDiffDays(plainDateFromISO(range.start), plainDateFromISO(range.end))) + 1;
|
|
132
|
+
if (maxRangeSpan != null && span > maxRangeSpan) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
if (minRangeSpan != null && span < minRangeSpan) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
115
140
|
/**
|
|
116
141
|
* A date range picker with a button trigger that opens a popover
|
|
117
142
|
* containing a dual-month calendar and optional preset ranges.
|
|
@@ -143,6 +168,8 @@ export function DateRangeInput({
|
|
|
143
168
|
min,
|
|
144
169
|
max,
|
|
145
170
|
dateConstraints,
|
|
171
|
+
maxRangeSpan,
|
|
172
|
+
minRangeSpan,
|
|
146
173
|
presets,
|
|
147
174
|
hasClear = true,
|
|
148
175
|
placeholder: placeholderFromProps,
|
|
@@ -160,6 +187,10 @@ export function DateRangeInput({
|
|
|
160
187
|
...rest
|
|
161
188
|
}) {
|
|
162
189
|
const t = useTranslator();
|
|
190
|
+
const isEffectivelyRequired = useResolvedRequired({
|
|
191
|
+
isRequired,
|
|
192
|
+
isOptional
|
|
193
|
+
});
|
|
163
194
|
const placeholder = placeholderFromProps ?? t('@astryx.dateRangeInput.placeholder');
|
|
164
195
|
const size = useSize(sizeProp, 'md');
|
|
165
196
|
const id = useId();
|
|
@@ -293,7 +324,7 @@ export function DateRangeInput({
|
|
|
293
324
|
"aria-disabled": showsDisabledMessage ? 'true' : undefined,
|
|
294
325
|
"aria-label": triggerAriaLabel,
|
|
295
326
|
"aria-describedby": ariaDescribedBy,
|
|
296
|
-
"aria-required":
|
|
327
|
+
"aria-required": isEffectivelyRequired ? 'true' : undefined,
|
|
297
328
|
"aria-invalid": status?.type === 'error' ? 'true' : undefined,
|
|
298
329
|
"aria-busy": isBusy || undefined,
|
|
299
330
|
"aria-expanded": popover.isOpen,
|
|
@@ -336,6 +367,7 @@ export function DateRangeInput({
|
|
|
336
367
|
children: presets.map(preset => {
|
|
337
368
|
const presetRange = preset.getRange();
|
|
338
369
|
const isActive = isRangeEqual(value, presetRange);
|
|
370
|
+
const isPresetDisabled = !isRangeWithinSpan(presetRange, maxRangeSpan, minRangeSpan);
|
|
339
371
|
return /*#__PURE__*/_jsx("button", {
|
|
340
372
|
type: "button"
|
|
341
373
|
// These presets are independent action buttons navigated by
|
|
@@ -345,8 +377,9 @@ export function DateRangeInput({
|
|
|
345
377
|
// concept that contradicted the Tab interaction) (forms-5).
|
|
346
378
|
,
|
|
347
379
|
"aria-current": isActive ? 'true' : undefined,
|
|
380
|
+
disabled: isPresetDisabled,
|
|
348
381
|
onClick: () => handlePresetClick(preset),
|
|
349
|
-
...stylex.props(focusOutlineStyles.focusVisible, styles.presetButton, isActive && styles.presetButtonActive),
|
|
382
|
+
...stylex.props(focusOutlineStyles.focusVisible, styles.presetButton, isActive && styles.presetButtonActive, isPresetDisabled && styles.presetButtonDisabled),
|
|
350
383
|
children: preset.label
|
|
351
384
|
}, preset.label);
|
|
352
385
|
})
|
|
@@ -357,6 +390,8 @@ export function DateRangeInput({
|
|
|
357
390
|
min: min,
|
|
358
391
|
max: max,
|
|
359
392
|
dateConstraints: dateConstraints,
|
|
393
|
+
maxRangeSpan: maxRangeSpan,
|
|
394
|
+
minRangeSpan: minRangeSpan,
|
|
360
395
|
numberOfMonths: numberOfMonths,
|
|
361
396
|
weekStartsOn: weekStartsOn
|
|
362
397
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/DateTimeInput.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAGL,KAAK,WAAW,EAKjB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AA2BrB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/DateTimeInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ import { useInputStatusIcon } from "../hooks/useInputStatusIcon.js";
|
|
|
32
32
|
import { parseDateInput, parseTimeInput, formatDisplayTime12h, formatDisplayTime24h, formatISOTime, isTimeInRange, adjustTime, isImeKeyEvent, mergeProps, mergeRefs, isFocusDetached } from "../utils/index.js";
|
|
33
33
|
import { plainDateFromISO, plainDateToISO, plainDateFormat, DATE_FORMAT_LONG } from "../utils/plainDate.js";
|
|
34
34
|
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
35
|
+
import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
|
|
35
36
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
36
37
|
import { themeProps } from "../utils/themeProps.js";
|
|
37
38
|
import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
|
|
@@ -170,6 +171,10 @@ export function DateTimeInput({
|
|
|
170
171
|
...rest
|
|
171
172
|
}) {
|
|
172
173
|
const t = useTranslator();
|
|
174
|
+
const isEffectivelyRequired = useResolvedRequired({
|
|
175
|
+
isRequired,
|
|
176
|
+
isOptional
|
|
177
|
+
});
|
|
173
178
|
// Speaks arrow-key stepping results through the persistent live regions:
|
|
174
179
|
// stepping programmatically rewrites a plain textbox's value, which screen
|
|
175
180
|
// readers do not announce on their own (WCAG 4.1.2).
|
|
@@ -597,7 +602,7 @@ export function DateTimeInput({
|
|
|
597
602
|
"aria-disabled": showsDisabledMessage ? 'true' : undefined,
|
|
598
603
|
readOnly: showsDisabledMessage || undefined,
|
|
599
604
|
"aria-describedby": ariaDescribedBy,
|
|
600
|
-
"aria-required":
|
|
605
|
+
"aria-required": isEffectivelyRequired ? 'true' : undefined,
|
|
601
606
|
"aria-invalid": status?.type === 'error' || !isDateInputValid ? 'true' : undefined,
|
|
602
607
|
"aria-busy": isBusy || undefined,
|
|
603
608
|
"aria-expanded": popover.isOpen,
|
|
@@ -676,7 +681,7 @@ export function DateTimeInput({
|
|
|
676
681
|
label
|
|
677
682
|
}),
|
|
678
683
|
"aria-describedby": ariaDescribedBy,
|
|
679
|
-
"aria-required":
|
|
684
|
+
"aria-required": isEffectivelyRequired ? 'true' : undefined,
|
|
680
685
|
"aria-invalid": status?.type === 'error' || !isTimeInputValid ? 'true' : undefined,
|
|
681
686
|
"aria-busy": isBusy || undefined,
|
|
682
687
|
...{
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file FieldLabel.tsx
|
|
3
|
-
* @input Uses React, Icon, IconType, useTranslator
|
|
3
|
+
* @input Uses React, Icon, IconType, useTranslator, FormLayoutContext
|
|
4
4
|
* @output Exports FieldLabel component, FieldLabelProps
|
|
5
5
|
* @position Core label implementation; used by Field, CheckboxInput, Switch
|
|
6
6
|
*
|
|
7
7
|
* SYNC: When modified, update these files to stay in sync:
|
|
8
8
|
* - /packages/core/src/Field/Field.doc.mjs (props table, features, implementation notes)
|
|
9
9
|
* - /packages/core/src/Field/index.ts (exports if types change)
|
|
10
|
+
* - /packages/core/src/FormLayout/FormLayoutContext.ts (defaultOptionality drives the indicator)
|
|
10
11
|
* - /packages/cli/assets/templates/blocks/components/Field/ (showcase blocks)
|
|
11
12
|
* - /packages/core/locales/en.json (@astryx.field.required / @astryx.field.optional)
|
|
12
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldLabel.d.ts","sourceRoot":"","sources":["../../src/Field/FieldLabel.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"FieldLabel.d.ts","sourceRoot":"","sources":["../../src/Field/FieldLabel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAuB,KAAK,SAAS,EAAiB,MAAM,OAAO,CAAC;AAE3E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAU5C,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AA0D5D,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IAClE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAoB,EACpB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACR,EAAE,eAAe,+BAsHjB;yBAxIe,UAAU"}
|