impact-nova 2.5.11 → 2.5.12
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/components/data/expandable-list-item/expandable-list-item-attributes.js +2 -3
- package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +2 -3
- package/dist/components/data-display/calendar/calendar-config.js +1 -1
- package/dist/components/data-display/calendar/calendar-day-picker-components.js +205 -146
- package/dist/components/data-display/calendar/calendar-fiscal-day-cell.d.ts +9 -0
- package/dist/components/data-display/calendar/calendar-fiscal-day-cell.js +45 -0
- package/dist/components/data-display/calendar/calendar-footer.js +21 -21
- package/dist/components/data-display/calendar/calendar-injected-week-row.d.ts +5 -0
- package/dist/components/data-display/calendar/calendar-injected-week-row.js +92 -0
- package/dist/components/data-display/calendar/calendar-leading-week.utils.d.ts +16 -0
- package/dist/components/data-display/calendar/calendar-leading-week.utils.js +51 -0
- package/dist/components/data-display/calendar/calendar-month-picker-panel.js +50 -49
- package/dist/components/data-display/calendar/calendar-orphan-week.d.ts +23 -0
- package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +3 -1
- package/dist/components/data-display/calendar/calendar-padding-week.utils.js +7 -5
- package/dist/components/data-display/calendar/calendar-period-cell.js +45 -46
- package/dist/components/data-display/calendar/calendar-quarter-panes.js +33 -31
- package/dist/components/data-display/calendar/calendar-selection-appearance.d.ts +9 -0
- package/dist/components/data-display/calendar/calendar-selection-appearance.js +56 -43
- package/dist/components/data-display/calendar/calendar-selection.d.ts +25 -0
- package/dist/components/data-display/calendar/calendar-selection.js +52 -23
- package/dist/components/data-display/calendar/calendar-week-number-cell.js +33 -33
- package/dist/components/data-display/calendar/calendar-week-utils.d.ts +13 -3
- package/dist/components/data-display/calendar/calendar-week-utils.js +59 -50
- package/dist/components/data-display/calendar/calendar-year-panes.d.ts +1 -0
- package/dist/components/data-display/calendar/calendar-year-panes.js +53 -51
- package/dist/components/feedback/tooltip/tab-tooltip-render.js +2 -3
- package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
- package/dist/components/flows/filter-panel/filter-panel.js +4 -4
- package/dist/components/forms/date-picker/fiscal-picker-fixtures.d.ts +17 -0
- package/dist/components/forms/date-picker/multi-quarter-picker.js +51 -49
- package/dist/components/forms/date-picker/multi-year-picker.js +53 -51
- package/dist/components/forms/date-picker/quarter-picker.js +51 -49
- package/dist/components/forms/date-picker/quarter-range-picker.js +50 -48
- package/dist/components/forms/date-picker/year-picker.js +52 -50
- package/dist/components/forms/date-picker/year-range-picker.js +52 -50
- package/dist/components/forms/select/components/SelectTriggerValue.js +2 -3
- package/dist/components/forms/select/components/Submenu.js +2 -3
- package/dist/form-react/Fields/MultiWeekPickerField.js +33 -26
- package/dist/form-react/Fields/WeekRangePicker.js +16 -16
- package/dist/form-react/types/fields.types.d.ts +2 -0
- package/dist/impact-nova-components.css +13 -6
- package/dist/impact-nova.css +1 -1
- package/dist/lib/fiscal-calendar/week-selection.js +2 -2
- package/dist/llms/rules/installation.js +1 -1
- package/dist/llms/rules/requirements.js +1 -1
- package/package.json +1 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { jsx as r, jsxs as y } from "react/jsx-runtime";
|
|
2
2
|
import * as t from "react";
|
|
3
|
-
import { Cross as
|
|
4
|
-
import { cn as
|
|
5
|
-
import { Input as
|
|
6
|
-
import { Calendar as
|
|
3
|
+
import { Cross as _, CalendarMonth as $ } from "impact-nova-icons";
|
|
4
|
+
import { cn as ee } from "../../../lib/utils.js";
|
|
5
|
+
import { Input as re } from "../input/input.js";
|
|
6
|
+
import { Calendar as te } from "../../data-display/calendar/calendar.js";
|
|
7
7
|
import { Tooltip as x, TooltipTrigger as R, TooltipContent as D } from "../../feedback/tooltip/tooltip.js";
|
|
8
|
-
import { useImpactNovaI18n as
|
|
9
|
-
import { buildDateBoundsMatcher as
|
|
10
|
-
import { fiscalCalendarPassThrough as
|
|
11
|
-
import { DatePickerShell as
|
|
12
|
-
import { usePickerDismissActionsRef as
|
|
13
|
-
import { formatYearInput as
|
|
14
|
-
import { viewMonthFromYear as
|
|
15
|
-
const
|
|
8
|
+
import { useImpactNovaI18n as ne } from "../../../i18n/use-impact-nova-i18n.js";
|
|
9
|
+
import { buildDateBoundsMatcher as oe } from "../../../lib/date-bounds-matcher.js";
|
|
10
|
+
import { fiscalCalendarPassThrough as ae } from "./fiscal-pass-through.js";
|
|
11
|
+
import { DatePickerShell as ie } from "./date-picker-shell.js";
|
|
12
|
+
import { usePickerDismissActionsRef as ce, usePickerFooterDismissNudge as se, handleReadonlyPickerKeyDown as le, handlePickerSurfacePointerDown as pe } from "./date-input-behavior.js";
|
|
13
|
+
import { formatYearInput as fe } from "../../data-display/calendar/calendar-fiscal-labels.js";
|
|
14
|
+
import { viewMonthFromYear as de } from "../../data-display/calendar/calendar-year-utils.js";
|
|
15
|
+
const me = t.forwardRef(
|
|
16
16
|
({
|
|
17
17
|
value: n,
|
|
18
18
|
onChange: d,
|
|
@@ -30,32 +30,34 @@ const de = t.forwardRef(
|
|
|
30
30
|
fiscalMonthPattern: M,
|
|
31
31
|
fiscalYearStartMonth: K,
|
|
32
32
|
fiscalConfig: k,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
t
|
|
41
|
-
|
|
33
|
+
weekStartsOn: j,
|
|
34
|
+
showPresets: F,
|
|
35
|
+
showPeriodBoundaries: L,
|
|
36
|
+
autoNavigateToAvailable: z,
|
|
37
|
+
showIntervalCaption: E = !1,
|
|
38
|
+
...H
|
|
39
|
+
}, V) => {
|
|
40
|
+
const { t: a } = ne(), B = Y ?? a("datePicker.selectYear"), m = t.useRef(null), P = t.useRef(null);
|
|
41
|
+
t.useImperativeHandle(V, () => m.current);
|
|
42
|
+
const [i, c] = t.useState(!1), u = t.useRef(!1), g = ce(), { footerFlashKey: q, footerFlashTarget: G, popoverHandlers: J } = se(s, i, g, P), [C, l] = t.useState(n), [Q, U] = t.useState(de(n));
|
|
42
43
|
t.useEffect(() => {
|
|
43
44
|
i || l(n);
|
|
44
45
|
}, [i, n]);
|
|
45
|
-
const p = t.useCallback(() => c(!1), []),
|
|
46
|
+
const p = t.useCallback(() => c(!1), []), W = ae({
|
|
46
47
|
calendarKind: O,
|
|
47
48
|
fiscalMode: T,
|
|
48
49
|
granularity: w,
|
|
49
50
|
fiscalMonthPattern: M,
|
|
50
51
|
fiscalYearStartMonth: K,
|
|
51
52
|
fiscalConfig: k,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
weekStartsOn: j,
|
|
54
|
+
showPresets: F,
|
|
55
|
+
showPeriodBoundaries: L,
|
|
56
|
+
autoNavigateToAvailable: z
|
|
57
|
+
}), X = (e) => {
|
|
56
58
|
const f = e && !Array.isArray(e) && !("from" in e) && !("to" in e) ? e : void 0;
|
|
57
59
|
l(f), s || (d?.(f), p());
|
|
58
|
-
},
|
|
60
|
+
}, Z = () => {
|
|
59
61
|
d?.(C), p();
|
|
60
62
|
}, h = () => {
|
|
61
63
|
l(n), p();
|
|
@@ -65,7 +67,7 @@ const de = t.forwardRef(
|
|
|
65
67
|
return t.useLayoutEffect(() => {
|
|
66
68
|
g.current = { onDismiss: h, resolveFlash: () => "cancel" };
|
|
67
69
|
}), /* @__PURE__ */ r(
|
|
68
|
-
|
|
70
|
+
ie,
|
|
69
71
|
{
|
|
70
72
|
open: i,
|
|
71
73
|
disabled: o,
|
|
@@ -76,26 +78,26 @@ const de = t.forwardRef(
|
|
|
76
78
|
onOpenAutoFocus: (e) => {
|
|
77
79
|
u.current || e.preventDefault(), u.current = !1;
|
|
78
80
|
},
|
|
79
|
-
popoverHandlers:
|
|
81
|
+
popoverHandlers: J,
|
|
80
82
|
trigger: /* @__PURE__ */ r(
|
|
81
83
|
"div",
|
|
82
84
|
{
|
|
83
85
|
ref: P,
|
|
84
86
|
"data-component": "year-picker",
|
|
85
87
|
"data-state": i ? "open" : "closed",
|
|
86
|
-
onPointerDown: (e) =>
|
|
88
|
+
onPointerDown: (e) => pe({
|
|
87
89
|
disabled: o,
|
|
88
90
|
event: e,
|
|
89
91
|
onOpen: () => c(!0),
|
|
90
92
|
focusField: () => m.current?.focus()
|
|
91
93
|
}),
|
|
92
94
|
children: /* @__PURE__ */ r(
|
|
93
|
-
|
|
95
|
+
re,
|
|
94
96
|
{
|
|
95
97
|
ref: m,
|
|
96
|
-
value: n ?
|
|
98
|
+
value: n ? fe(n, k?.fyLabel ?? "fy-long") : "",
|
|
97
99
|
readOnly: !0,
|
|
98
|
-
onKeyDown: (e) =>
|
|
100
|
+
onKeyDown: (e) => le(e, {
|
|
99
101
|
disabled: o,
|
|
100
102
|
open: i,
|
|
101
103
|
onOpen: () => c(!0),
|
|
@@ -105,10 +107,10 @@ const de = t.forwardRef(
|
|
|
105
107
|
}
|
|
106
108
|
}),
|
|
107
109
|
onClick: () => !o && c(!0),
|
|
108
|
-
placeholder:
|
|
110
|
+
placeholder: B,
|
|
109
111
|
disabled: o,
|
|
110
112
|
"data-form-control": "input",
|
|
111
|
-
className:
|
|
113
|
+
className: ee("cursor-pointer", I),
|
|
112
114
|
suffix: /* @__PURE__ */ y("div", { className: "flex items-center gap-1", children: [
|
|
113
115
|
n && !o ? /* @__PURE__ */ y(x, { children: [
|
|
114
116
|
/* @__PURE__ */ r(R, { asChild: !0, children: /* @__PURE__ */ r(
|
|
@@ -121,7 +123,7 @@ const de = t.forwardRef(
|
|
|
121
123
|
e.stopPropagation(), b();
|
|
122
124
|
},
|
|
123
125
|
className: "inline-flex size-4 items-center justify-center border-none bg-transparent p-0",
|
|
124
|
-
children: /* @__PURE__ */ r(
|
|
126
|
+
children: /* @__PURE__ */ r(_, { className: "size-3 hover:text-content" })
|
|
125
127
|
}
|
|
126
128
|
) }),
|
|
127
129
|
/* @__PURE__ */ r(D, { variant: "tertiary", side: "top", children: a("calendar.clear") })
|
|
@@ -138,43 +140,43 @@ const de = t.forwardRef(
|
|
|
138
140
|
e.stopPropagation(), o || c((f) => !f);
|
|
139
141
|
},
|
|
140
142
|
className: "inline-flex items-center justify-center border-none bg-transparent p-0",
|
|
141
|
-
children: /* @__PURE__ */ r(
|
|
143
|
+
children: /* @__PURE__ */ r($, { className: "h-4 w-4 text-secondary-foreground" })
|
|
142
144
|
}
|
|
143
145
|
) }),
|
|
144
146
|
/* @__PURE__ */ r(D, { variant: "tertiary", side: "top", children: a("datePicker.selectYear") })
|
|
145
147
|
] })
|
|
146
148
|
] }),
|
|
147
|
-
...
|
|
149
|
+
...H
|
|
148
150
|
}
|
|
149
151
|
)
|
|
150
152
|
}
|
|
151
153
|
),
|
|
152
154
|
children: /* @__PURE__ */ r(
|
|
153
|
-
|
|
155
|
+
te,
|
|
154
156
|
{
|
|
155
157
|
pickerType: "year",
|
|
156
158
|
selectedYear: C,
|
|
157
|
-
footerFlashKey:
|
|
158
|
-
footerFlashTarget:
|
|
159
|
-
onYearSelect:
|
|
160
|
-
month:
|
|
161
|
-
onMonthChange:
|
|
162
|
-
disabled:
|
|
159
|
+
footerFlashKey: q,
|
|
160
|
+
footerFlashTarget: G,
|
|
161
|
+
onYearSelect: X,
|
|
162
|
+
month: Q,
|
|
163
|
+
onMonthChange: U,
|
|
164
|
+
disabled: oe(v, N),
|
|
163
165
|
startMonth: S,
|
|
164
166
|
endMonth: A,
|
|
165
167
|
showFooter: s,
|
|
166
|
-
onApply:
|
|
168
|
+
onApply: Z,
|
|
167
169
|
onCancel: h,
|
|
168
170
|
onClear: b,
|
|
169
|
-
showIntervalCaption:
|
|
170
|
-
...
|
|
171
|
+
showIntervalCaption: E,
|
|
172
|
+
...W
|
|
171
173
|
}
|
|
172
174
|
)
|
|
173
175
|
}
|
|
174
176
|
);
|
|
175
177
|
}
|
|
176
178
|
);
|
|
177
|
-
|
|
179
|
+
me.displayName = "YearPicker";
|
|
178
180
|
export {
|
|
179
|
-
|
|
181
|
+
me as YearPicker
|
|
180
182
|
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { jsx as r, jsxs as g } from "react/jsx-runtime";
|
|
2
2
|
import * as t from "react";
|
|
3
|
-
import { Cross as
|
|
4
|
-
import { cn as
|
|
5
|
-
import { Input as
|
|
6
|
-
import { Calendar as
|
|
3
|
+
import { Cross as re, CalendarMonth as te } from "impact-nova-icons";
|
|
4
|
+
import { cn as ne } from "../../../lib/utils.js";
|
|
5
|
+
import { Input as oe } from "../input/input.js";
|
|
6
|
+
import { Calendar as ae } from "../../data-display/calendar/calendar.js";
|
|
7
7
|
import { Tooltip as x, TooltipTrigger as D, TooltipContent as Y } from "../../feedback/tooltip/tooltip.js";
|
|
8
|
-
import { useImpactNovaI18n as
|
|
9
|
-
import { buildDateBoundsMatcher as
|
|
10
|
-
import { fiscalCalendarPassThrough as
|
|
11
|
-
import { DatePickerShell as
|
|
12
|
-
import { usePickerDismissActionsRef as
|
|
8
|
+
import { useImpactNovaI18n as ie } from "../../../i18n/use-impact-nova-i18n.js";
|
|
9
|
+
import { buildDateBoundsMatcher as ce } from "../../../lib/date-bounds-matcher.js";
|
|
10
|
+
import { fiscalCalendarPassThrough as se } from "./fiscal-pass-through.js";
|
|
11
|
+
import { DatePickerShell as le } from "./date-picker-shell.js";
|
|
12
|
+
import { usePickerDismissActionsRef as fe, usePickerFooterDismissNudge as pe, handleReadonlyPickerKeyDown as de, handlePickerSurfacePointerDown as me } from "./date-input-behavior.js";
|
|
13
13
|
import { formatYearInput as N } from "../../data-display/calendar/calendar-fiscal-labels.js";
|
|
14
|
-
import { viewMonthFromYear as
|
|
15
|
-
const
|
|
14
|
+
import { viewMonthFromYear as ue } from "../../data-display/calendar/calendar-year-utils.js";
|
|
15
|
+
const he = t.forwardRef(
|
|
16
16
|
({
|
|
17
17
|
value: n,
|
|
18
18
|
onChange: d,
|
|
@@ -30,32 +30,34 @@ const ue = t.forwardRef(
|
|
|
30
30
|
fiscalMonthPattern: j,
|
|
31
31
|
fiscalYearStartMonth: F,
|
|
32
32
|
fiscalConfig: y,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
t
|
|
41
|
-
|
|
33
|
+
weekStartsOn: L,
|
|
34
|
+
showPresets: $,
|
|
35
|
+
showPeriodBoundaries: z,
|
|
36
|
+
autoNavigateToAvailable: E,
|
|
37
|
+
showIntervalCaption: H = !1,
|
|
38
|
+
...V
|
|
39
|
+
}, B) => {
|
|
40
|
+
const { t: a } = ie(), q = S ?? a("datePicker.selectYearRange"), k = y?.fyLabel ?? "fy-long", m = t.useRef(null), P = t.useRef(null);
|
|
41
|
+
t.useImperativeHandle(B, () => m.current);
|
|
42
|
+
const [i, c] = t.useState(!1), u = t.useRef(!1), R = fe(), { footerFlashKey: G, footerFlashTarget: J, popoverHandlers: Q } = pe(l, i, R, P), [C, f] = t.useState(n), [U, W] = t.useState(ue(n?.from));
|
|
42
43
|
t.useEffect(() => {
|
|
43
44
|
i || f(n);
|
|
44
45
|
}, [i, n]);
|
|
45
|
-
const p = t.useCallback(() => c(!1), []),
|
|
46
|
+
const p = t.useCallback(() => c(!1), []), X = se({
|
|
46
47
|
calendarKind: T,
|
|
47
48
|
fiscalMode: w,
|
|
48
49
|
granularity: K,
|
|
49
50
|
fiscalMonthPattern: j,
|
|
50
51
|
fiscalYearStartMonth: F,
|
|
51
52
|
fiscalConfig: y,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
weekStartsOn: L,
|
|
54
|
+
showPresets: $,
|
|
55
|
+
showPeriodBoundaries: z,
|
|
56
|
+
autoNavigateToAvailable: E
|
|
57
|
+
}), Z = (e) => {
|
|
56
58
|
const s = e && !Array.isArray(e) && ("from" in e || "to" in e) ? e : void 0;
|
|
57
59
|
f(s), l || (d?.(s), s?.to && p());
|
|
58
|
-
},
|
|
60
|
+
}, _ = () => {
|
|
59
61
|
d?.(C), p();
|
|
60
62
|
}, h = () => {
|
|
61
63
|
f(n), p();
|
|
@@ -65,9 +67,9 @@ const ue = t.forwardRef(
|
|
|
65
67
|
t.useLayoutEffect(() => {
|
|
66
68
|
R.current = { onDismiss: h, resolveFlash: () => "cancel" };
|
|
67
69
|
});
|
|
68
|
-
const
|
|
70
|
+
const ee = n?.from ? `${N(n.from, k)}${n.to ? ` – ${N(n.to, k)}` : ""}` : "";
|
|
69
71
|
return /* @__PURE__ */ r(
|
|
70
|
-
|
|
72
|
+
le,
|
|
71
73
|
{
|
|
72
74
|
open: i,
|
|
73
75
|
disabled: o,
|
|
@@ -78,26 +80,26 @@ const ue = t.forwardRef(
|
|
|
78
80
|
onOpenAutoFocus: (e) => {
|
|
79
81
|
u.current || e.preventDefault(), u.current = !1;
|
|
80
82
|
},
|
|
81
|
-
popoverHandlers:
|
|
83
|
+
popoverHandlers: Q,
|
|
82
84
|
trigger: /* @__PURE__ */ r(
|
|
83
85
|
"div",
|
|
84
86
|
{
|
|
85
87
|
ref: P,
|
|
86
88
|
"data-component": "year-range-picker",
|
|
87
89
|
"data-state": i ? "open" : "closed",
|
|
88
|
-
onPointerDown: (e) =>
|
|
90
|
+
onPointerDown: (e) => me({
|
|
89
91
|
disabled: o,
|
|
90
92
|
event: e,
|
|
91
93
|
onOpen: () => c(!0),
|
|
92
94
|
focusField: () => m.current?.focus()
|
|
93
95
|
}),
|
|
94
96
|
children: /* @__PURE__ */ r(
|
|
95
|
-
|
|
97
|
+
oe,
|
|
96
98
|
{
|
|
97
99
|
ref: m,
|
|
98
|
-
value:
|
|
100
|
+
value: ee,
|
|
99
101
|
readOnly: !0,
|
|
100
|
-
onKeyDown: (e) =>
|
|
102
|
+
onKeyDown: (e) => de(e, {
|
|
101
103
|
disabled: o,
|
|
102
104
|
open: i,
|
|
103
105
|
onOpen: () => c(!0),
|
|
@@ -107,10 +109,10 @@ const ue = t.forwardRef(
|
|
|
107
109
|
}
|
|
108
110
|
}),
|
|
109
111
|
onClick: () => !o && c(!0),
|
|
110
|
-
placeholder:
|
|
112
|
+
placeholder: q,
|
|
111
113
|
disabled: o,
|
|
112
114
|
"data-form-control": "input",
|
|
113
|
-
className:
|
|
115
|
+
className: ne("cursor-pointer", O),
|
|
114
116
|
suffix: /* @__PURE__ */ g("div", { className: "flex items-center gap-1", children: [
|
|
115
117
|
n?.from && !o ? /* @__PURE__ */ g(x, { children: [
|
|
116
118
|
/* @__PURE__ */ r(D, { asChild: !0, children: /* @__PURE__ */ r(
|
|
@@ -123,7 +125,7 @@ const ue = t.forwardRef(
|
|
|
123
125
|
e.stopPropagation(), b();
|
|
124
126
|
},
|
|
125
127
|
className: "inline-flex size-4 items-center justify-center border-none bg-transparent p-0",
|
|
126
|
-
children: /* @__PURE__ */ r(
|
|
128
|
+
children: /* @__PURE__ */ r(re, { className: "size-3 hover:text-content" })
|
|
127
129
|
}
|
|
128
130
|
) }),
|
|
129
131
|
/* @__PURE__ */ r(Y, { variant: "tertiary", side: "top", children: a("calendar.clear") })
|
|
@@ -140,44 +142,44 @@ const ue = t.forwardRef(
|
|
|
140
142
|
e.stopPropagation(), o || c((s) => !s);
|
|
141
143
|
},
|
|
142
144
|
className: "inline-flex items-center justify-center border-none bg-transparent p-0",
|
|
143
|
-
children: /* @__PURE__ */ r(
|
|
145
|
+
children: /* @__PURE__ */ r(te, { className: "h-4 w-4 text-secondary-foreground" })
|
|
144
146
|
}
|
|
145
147
|
) }),
|
|
146
148
|
/* @__PURE__ */ r(Y, { variant: "tertiary", side: "top", children: a("datePicker.selectYearRange") })
|
|
147
149
|
] })
|
|
148
150
|
] }),
|
|
149
|
-
...
|
|
151
|
+
...V
|
|
150
152
|
}
|
|
151
153
|
)
|
|
152
154
|
}
|
|
153
155
|
),
|
|
154
156
|
children: /* @__PURE__ */ r(
|
|
155
|
-
|
|
157
|
+
ae,
|
|
156
158
|
{
|
|
157
159
|
pickerType: "year",
|
|
158
160
|
yearMode: "range",
|
|
159
161
|
selectedYear: C,
|
|
160
|
-
footerFlashKey:
|
|
161
|
-
footerFlashTarget:
|
|
162
|
-
onYearSelect:
|
|
163
|
-
month:
|
|
164
|
-
onMonthChange:
|
|
165
|
-
disabled:
|
|
162
|
+
footerFlashKey: G,
|
|
163
|
+
footerFlashTarget: J,
|
|
164
|
+
onYearSelect: Z,
|
|
165
|
+
month: U,
|
|
166
|
+
onMonthChange: W,
|
|
167
|
+
disabled: ce(v, A),
|
|
166
168
|
startMonth: I,
|
|
167
169
|
endMonth: M,
|
|
168
170
|
showFooter: l,
|
|
169
|
-
onApply:
|
|
171
|
+
onApply: _,
|
|
170
172
|
onCancel: h,
|
|
171
173
|
onClear: b,
|
|
172
|
-
showIntervalCaption:
|
|
173
|
-
...
|
|
174
|
+
showIntervalCaption: H,
|
|
175
|
+
...X
|
|
174
176
|
}
|
|
175
177
|
)
|
|
176
178
|
}
|
|
177
179
|
);
|
|
178
180
|
}
|
|
179
181
|
);
|
|
180
|
-
|
|
182
|
+
he.displayName = "YearRangePicker";
|
|
181
183
|
export {
|
|
182
|
-
|
|
184
|
+
he as YearRangePicker
|
|
183
185
|
};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { cn as x } from "../../../../lib/utils.js";
|
|
3
|
-
import "react";
|
|
4
3
|
import { OverflowTooltip as m } from "../../../feedback/tooltip/overflow-tooltip.js";
|
|
5
4
|
import { isInvertedSelection as h, isOptionArray as d } from "../utils/select.js";
|
|
6
|
-
function
|
|
5
|
+
function w({
|
|
7
6
|
isMulti: u,
|
|
8
7
|
isDisabled: p,
|
|
9
8
|
internalValue: o,
|
|
@@ -53,5 +52,5 @@ function C({
|
|
|
53
52
|
);
|
|
54
53
|
}
|
|
55
54
|
export {
|
|
56
|
-
|
|
55
|
+
w as SelectTriggerValue
|
|
57
56
|
};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { jsxs as s, jsx as t } from "react/jsx-runtime";
|
|
2
2
|
import * as i from "@radix-ui/react-popover";
|
|
3
3
|
import { Checkbox as P } from "../../checkbox/checkbox.js";
|
|
4
|
-
import "react";
|
|
5
4
|
import { OverflowTooltip as y } from "../../../feedback/tooltip/overflow-tooltip.js";
|
|
6
5
|
import { ChevronRight as A, Checkmark as O } from "impact-nova-icons";
|
|
7
6
|
import { cn as v } from "../../../../lib/utils.js";
|
|
8
7
|
import { useOverlayPortalContainer as T } from "../../../../lib/overlay/overlay-portal-context.js";
|
|
9
8
|
import { OVERLAY_NESTED_FLOATING_INSTANT_HIDE_CLASS as _ } from "../../../../lib/overlay/overlay-host.constants.js";
|
|
10
9
|
import { useSuppressOptionClickForTextSelection as E } from "../hooks/useSuppressOptionClickForTextSelection.js";
|
|
11
|
-
const
|
|
10
|
+
const G = ({
|
|
12
11
|
parentOption: n,
|
|
13
12
|
isMulti: u,
|
|
14
13
|
isReadOnly: l,
|
|
@@ -106,5 +105,5 @@ const R = ({
|
|
|
106
105
|
] });
|
|
107
106
|
};
|
|
108
107
|
export {
|
|
109
|
-
|
|
108
|
+
G as Submenu
|
|
110
109
|
};
|
|
@@ -1,42 +1,49 @@
|
|
|
1
1
|
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import { Controller as
|
|
3
|
-
import { MultiWeekPicker as
|
|
4
|
-
import {
|
|
2
|
+
import { Controller as h } from "react-hook-form";
|
|
3
|
+
import { MultiWeekPicker as p } from "../../components/forms/date-picker/multi-week-picker.js";
|
|
4
|
+
import { fiscalCalendarPassThrough as f } from "../../components/forms/date-picker/fiscal-pass-through.js";
|
|
5
|
+
import { getFieldTestId as g } from "../utils/fieldTestIds.js";
|
|
5
6
|
import { toLocalDate as n } from "../utils/calendar-boundary.js";
|
|
6
|
-
const
|
|
7
|
+
const x = ({
|
|
7
8
|
field: e,
|
|
8
|
-
validationRules:
|
|
9
|
-
isDisabled:
|
|
10
|
-
formHelpers:
|
|
9
|
+
validationRules: s,
|
|
10
|
+
isDisabled: u,
|
|
11
|
+
formHelpers: c
|
|
11
12
|
}) => {
|
|
12
|
-
const
|
|
13
|
+
const d = c.form.control, r = e.fieldType === "multi_week_picker" ? e : null;
|
|
13
14
|
return r ? /* @__PURE__ */ a(
|
|
14
|
-
|
|
15
|
+
h,
|
|
15
16
|
{
|
|
16
17
|
name: e.id,
|
|
17
|
-
control:
|
|
18
|
-
rules:
|
|
19
|
-
render: ({ field:
|
|
20
|
-
const
|
|
21
|
-
return /* @__PURE__ */ a("div", { "data-testid":
|
|
22
|
-
|
|
18
|
+
control: d,
|
|
19
|
+
rules: s,
|
|
20
|
+
render: ({ field: t, fieldState: o }) => {
|
|
21
|
+
const i = !!o.error, l = t.value;
|
|
22
|
+
return /* @__PURE__ */ a("div", { "data-testid": g(e.id), children: /* @__PURE__ */ a(
|
|
23
|
+
p,
|
|
23
24
|
{
|
|
24
25
|
label: e.label,
|
|
25
|
-
value: Array.isArray(
|
|
26
|
-
onChange: (
|
|
27
|
-
|
|
26
|
+
value: Array.isArray(l) ? l : void 0,
|
|
27
|
+
onChange: (m) => {
|
|
28
|
+
t.onChange(m ?? []);
|
|
28
29
|
},
|
|
29
30
|
placeholder: e.placeholder,
|
|
30
31
|
required: e.isRequired,
|
|
31
|
-
disabled:
|
|
32
|
-
error:
|
|
33
|
-
helperText:
|
|
34
|
-
calendarKind: r.calendarKind,
|
|
35
|
-
fiscalMode: r.fiscalMode,
|
|
36
|
-
weekStartsOn: r.weekStartsOn,
|
|
32
|
+
disabled: u,
|
|
33
|
+
error: i,
|
|
34
|
+
helperText: i ? o.error?.message : e.helpText,
|
|
37
35
|
minDate: n(r.minDate),
|
|
38
36
|
maxDate: n(r.maxDate),
|
|
39
|
-
|
|
37
|
+
...f({
|
|
38
|
+
calendarKind: r.calendarKind,
|
|
39
|
+
fiscalMode: r.fiscalMode,
|
|
40
|
+
granularity: r.granularity,
|
|
41
|
+
fiscalMonthPattern: r.fiscalMonthPattern,
|
|
42
|
+
fiscalYearStartMonth: r.fiscalYearStartMonth,
|
|
43
|
+
weekStartsOn: r.weekStartsOn,
|
|
44
|
+
showPeriodBoundaries: r.showPeriodBoundaries,
|
|
45
|
+
autoNavigateToAvailable: r.autoNavigateToAvailable
|
|
46
|
+
})
|
|
40
47
|
}
|
|
41
48
|
) });
|
|
42
49
|
}
|
|
@@ -44,5 +51,5 @@ const D = ({
|
|
|
44
51
|
) : null;
|
|
45
52
|
};
|
|
46
53
|
export {
|
|
47
|
-
|
|
54
|
+
x as MultiWeekPickerField
|
|
48
55
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as c } from "react/jsx-runtime";
|
|
2
2
|
import { Controller as b } from "react-hook-form";
|
|
3
3
|
import { WeekRangePicker as x } from "../../components/forms/date-picker/week-range-picker.js";
|
|
4
|
-
import { toLocalDate as
|
|
4
|
+
import { toLocalDate as M } from "../utils/calendar-boundary.js";
|
|
5
5
|
import { resolveWeekSelection as Y } from "../../lib/fiscal-calendar/week-selection.js";
|
|
6
6
|
import { resolveWeekRangeMinMax as $ } from "../utils/date.utils.js";
|
|
7
|
-
const
|
|
7
|
+
const f = (e, a) => Y(e, {
|
|
8
8
|
calendarKind: a.calendarKind,
|
|
9
9
|
fiscalMode: a.fiscalMode ?? "basic",
|
|
10
10
|
granularity: a.granularity,
|
|
@@ -14,44 +14,44 @@ const S = (e, a) => Y(e, {
|
|
|
14
14
|
}), C = ({
|
|
15
15
|
field: e,
|
|
16
16
|
validationRules: a,
|
|
17
|
-
isDisabled:
|
|
17
|
+
isDisabled: S,
|
|
18
18
|
formHelpers: d
|
|
19
19
|
}) => {
|
|
20
20
|
const t = e.fieldType === "week_range" ? e : null;
|
|
21
21
|
if (!t) return null;
|
|
22
|
-
const { minDate:
|
|
22
|
+
const { minDate: p, maxDate: u, startMonth: D, endMonth: k } = $(t), v = d.form.control;
|
|
23
23
|
return /* @__PURE__ */ c(
|
|
24
24
|
b,
|
|
25
25
|
{
|
|
26
26
|
name: e.id,
|
|
27
27
|
control: v,
|
|
28
28
|
rules: a,
|
|
29
|
-
render: ({ field: w, fieldState:
|
|
30
|
-
const
|
|
29
|
+
render: ({ field: w, fieldState: m }) => {
|
|
30
|
+
const h = !!m.error, r = w.value, s = r?.start ? M(r.start) ?? null : null, i = r?.end ? M(r.end) ?? null : null, F = !!(s && i);
|
|
31
31
|
return /* @__PURE__ */ c("div", { children: /* @__PURE__ */ c(
|
|
32
32
|
x,
|
|
33
33
|
{
|
|
34
34
|
label: e.label,
|
|
35
35
|
value: F && s && i ? {
|
|
36
|
-
from:
|
|
37
|
-
to:
|
|
36
|
+
from: f(s, t),
|
|
37
|
+
to: f(i, t)
|
|
38
38
|
} : void 0,
|
|
39
39
|
onChange: (o) => {
|
|
40
|
-
const
|
|
40
|
+
const g = o?.from ? { from: o.from, to: o.to ?? o.from } : void 0, n = g?.from?.startDate, l = g?.to?.endDate, P = n ? `${n.getFullYear()}-${String(n.getMonth() + 1).padStart(2, "0")}-${String(n.getDate()).padStart(2, "0")}` : null, T = l ? `${l.getFullYear()}-${String(l.getMonth() + 1).padStart(2, "0")}-${String(l.getDate()).padStart(2, "0")}` : null;
|
|
41
41
|
d.setValue(e.id, { start: P, end: T });
|
|
42
42
|
},
|
|
43
43
|
placeholder: t.placeholder,
|
|
44
|
-
startMonth:
|
|
45
|
-
endMonth:
|
|
44
|
+
startMonth: D,
|
|
45
|
+
endMonth: u ?? k,
|
|
46
46
|
required: e.isRequired,
|
|
47
|
-
disabled:
|
|
48
|
-
error:
|
|
49
|
-
helperText:
|
|
47
|
+
disabled: S,
|
|
48
|
+
error: h,
|
|
49
|
+
helperText: h ? m.error?.message : e.helpText,
|
|
50
50
|
calendarKind: t.calendarKind,
|
|
51
51
|
fiscalMode: t.fiscalMode,
|
|
52
52
|
weekStartsOn: t.weekStartsOn,
|
|
53
|
-
minDate:
|
|
54
|
-
maxDate:
|
|
53
|
+
minDate: p,
|
|
54
|
+
maxDate: u,
|
|
55
55
|
granularity: t.granularity,
|
|
56
56
|
fiscalMonthPattern: t.fiscalMonthPattern,
|
|
57
57
|
fiscalYearStartMonth: t.fiscalYearStartMonth,
|
|
@@ -240,6 +240,8 @@ export type MultiWeekRangeField = BaseField & {
|
|
|
240
240
|
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
241
241
|
granularity?: "day" | "week" | "period" | "quarter" | "year";
|
|
242
242
|
fiscalMonthPattern?: number[];
|
|
243
|
+
fiscalYearStartMonth?: number;
|
|
244
|
+
showPeriodBoundaries?: boolean;
|
|
243
245
|
/** When true, open on the first enabled week. Navigate only. */
|
|
244
246
|
autoNavigateToAvailable?: boolean;
|
|
245
247
|
};
|
|
@@ -91,11 +91,24 @@
|
|
|
91
91
|
contain: inline-size;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
[data-component=calendar]:has([data-slot=year-panes]) {
|
|
95
|
+
width: 320px;
|
|
96
|
+
max-width: 320px;
|
|
97
|
+
}
|
|
98
|
+
|
|
94
99
|
[data-component=calendar][data-month-layout=dual] [data-slot=month-panes],
|
|
95
100
|
[data-component=calendar][data-month-layout=dual] [data-slot=quarter-panes] {
|
|
96
101
|
flex-direction: row;
|
|
97
102
|
}
|
|
98
103
|
|
|
104
|
+
[data-component=calendar][data-month-layout=dual] [data-slot=quarter-panes] {
|
|
105
|
+
width: auto;
|
|
106
|
+
min-width: 0;
|
|
107
|
+
max-width: none;
|
|
108
|
+
overflow: visible;
|
|
109
|
+
contain: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
99
112
|
/* Fiscal period: one vertical gutter track + outer Sunday corners, not stacked left-pills. */
|
|
100
113
|
.calendar-interval-cap-start:not(.calendar-interval-cap-end) {
|
|
101
114
|
background-color: transparent;
|
|
@@ -440,12 +453,6 @@
|
|
|
440
453
|
border-bottom-right-radius: calc(var(--radius) + 4px);
|
|
441
454
|
}
|
|
442
455
|
|
|
443
|
-
[data-component=calendar][data-month-layout=dual] [data-slot=quarter-panes] {
|
|
444
|
-
width: auto;
|
|
445
|
-
min-width: 0;
|
|
446
|
-
max-width: none;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
456
|
[data-component=calendar] [data-slot=month-pane-divider-group],
|
|
450
457
|
[data-component=calendar] [data-slot=quarter-pane-divider-group] {
|
|
451
458
|
display: flex;
|