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.
Files changed (47) hide show
  1. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +2 -3
  2. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +2 -3
  3. package/dist/components/data-display/calendar/calendar-config.js +1 -1
  4. package/dist/components/data-display/calendar/calendar-day-picker-components.js +205 -146
  5. package/dist/components/data-display/calendar/calendar-fiscal-day-cell.d.ts +9 -0
  6. package/dist/components/data-display/calendar/calendar-fiscal-day-cell.js +45 -0
  7. package/dist/components/data-display/calendar/calendar-footer.js +21 -21
  8. package/dist/components/data-display/calendar/calendar-injected-week-row.d.ts +5 -0
  9. package/dist/components/data-display/calendar/calendar-injected-week-row.js +92 -0
  10. package/dist/components/data-display/calendar/calendar-leading-week.utils.d.ts +16 -0
  11. package/dist/components/data-display/calendar/calendar-leading-week.utils.js +51 -0
  12. package/dist/components/data-display/calendar/calendar-month-picker-panel.js +50 -49
  13. package/dist/components/data-display/calendar/calendar-orphan-week.d.ts +23 -0
  14. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +3 -1
  15. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +7 -5
  16. package/dist/components/data-display/calendar/calendar-period-cell.js +45 -46
  17. package/dist/components/data-display/calendar/calendar-quarter-panes.js +33 -31
  18. package/dist/components/data-display/calendar/calendar-selection-appearance.d.ts +9 -0
  19. package/dist/components/data-display/calendar/calendar-selection-appearance.js +56 -43
  20. package/dist/components/data-display/calendar/calendar-selection.d.ts +25 -0
  21. package/dist/components/data-display/calendar/calendar-selection.js +52 -23
  22. package/dist/components/data-display/calendar/calendar-week-number-cell.js +33 -33
  23. package/dist/components/data-display/calendar/calendar-week-utils.d.ts +13 -3
  24. package/dist/components/data-display/calendar/calendar-week-utils.js +59 -50
  25. package/dist/components/data-display/calendar/calendar-year-panes.d.ts +1 -0
  26. package/dist/components/data-display/calendar/calendar-year-panes.js +53 -51
  27. package/dist/components/feedback/tooltip/tab-tooltip-render.js +2 -3
  28. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  29. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  30. package/dist/components/forms/date-picker/fiscal-picker-fixtures.d.ts +17 -0
  31. package/dist/components/forms/date-picker/multi-quarter-picker.js +51 -49
  32. package/dist/components/forms/date-picker/multi-year-picker.js +53 -51
  33. package/dist/components/forms/date-picker/quarter-picker.js +51 -49
  34. package/dist/components/forms/date-picker/quarter-range-picker.js +50 -48
  35. package/dist/components/forms/date-picker/year-picker.js +52 -50
  36. package/dist/components/forms/date-picker/year-range-picker.js +52 -50
  37. package/dist/components/forms/select/components/SelectTriggerValue.js +2 -3
  38. package/dist/components/forms/select/components/Submenu.js +2 -3
  39. package/dist/form-react/Fields/MultiWeekPickerField.js +33 -26
  40. package/dist/form-react/Fields/WeekRangePicker.js +16 -16
  41. package/dist/form-react/types/fields.types.d.ts +2 -0
  42. package/dist/impact-nova-components.css +13 -6
  43. package/dist/impact-nova.css +1 -1
  44. package/dist/lib/fiscal-calendar/week-selection.js +2 -2
  45. package/dist/llms/rules/installation.js +1 -1
  46. package/dist/llms/rules/requirements.js +1 -1
  47. 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 Z, CalendarMonth as _ } from "impact-nova-icons";
4
- import { cn as $ } from "../../../lib/utils.js";
5
- import { Input as ee } from "../input/input.js";
6
- import { Calendar as re } from "../../data-display/calendar/calendar.js";
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 te } from "../../../i18n/use-impact-nova-i18n.js";
9
- import { buildDateBoundsMatcher as ne } from "../../../lib/date-bounds-matcher.js";
10
- import { fiscalCalendarPassThrough as oe } from "./fiscal-pass-through.js";
11
- import { DatePickerShell as ae } from "./date-picker-shell.js";
12
- import { usePickerDismissActionsRef as ie, usePickerFooterDismissNudge as ce, handleReadonlyPickerKeyDown as se, handlePickerSurfacePointerDown as le } from "./date-input-behavior.js";
13
- import { formatYearInput as pe } from "../../data-display/calendar/calendar-fiscal-labels.js";
14
- import { viewMonthFromYear as fe } from "../../data-display/calendar/calendar-year-utils.js";
15
- const de = t.forwardRef(
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
- showPresets: j,
34
- showPeriodBoundaries: F,
35
- autoNavigateToAvailable: L,
36
- showIntervalCaption: z = !1,
37
- ...E
38
- }, H) => {
39
- const { t: a } = te(), V = Y ?? a("datePicker.selectYear"), m = t.useRef(null), P = t.useRef(null);
40
- t.useImperativeHandle(H, () => m.current);
41
- const [i, c] = t.useState(!1), u = t.useRef(!1), g = ie(), { footerFlashKey: B, footerFlashTarget: q, popoverHandlers: G } = ce(s, i, g, P), [C, l] = t.useState(n), [J, Q] = t.useState(fe(n));
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), []), U = oe({
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
- showPresets: j,
53
- showPeriodBoundaries: F,
54
- autoNavigateToAvailable: L
55
- }), W = (e) => {
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
- }, X = () => {
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
- ae,
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: G,
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) => le({
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
- ee,
95
+ re,
94
96
  {
95
97
  ref: m,
96
- value: n ? pe(n, k?.fyLabel ?? "fy-long") : "",
98
+ value: n ? fe(n, k?.fyLabel ?? "fy-long") : "",
97
99
  readOnly: !0,
98
- onKeyDown: (e) => se(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: V,
110
+ placeholder: B,
109
111
  disabled: o,
110
112
  "data-form-control": "input",
111
- className: $("cursor-pointer", I),
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(Z, { className: "size-3 hover:text-content" })
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(_, { className: "h-4 w-4 text-secondary-foreground" })
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
- ...E
149
+ ...H
148
150
  }
149
151
  )
150
152
  }
151
153
  ),
152
154
  children: /* @__PURE__ */ r(
153
- re,
155
+ te,
154
156
  {
155
157
  pickerType: "year",
156
158
  selectedYear: C,
157
- footerFlashKey: B,
158
- footerFlashTarget: q,
159
- onYearSelect: W,
160
- month: J,
161
- onMonthChange: Q,
162
- disabled: ne(v, N),
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: X,
168
+ onApply: Z,
167
169
  onCancel: h,
168
170
  onClear: b,
169
- showIntervalCaption: z,
170
- ...U
171
+ showIntervalCaption: E,
172
+ ...W
171
173
  }
172
174
  )
173
175
  }
174
176
  );
175
177
  }
176
178
  );
177
- de.displayName = "YearPicker";
179
+ me.displayName = "YearPicker";
178
180
  export {
179
- de as YearPicker
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 ee, CalendarMonth as re } from "impact-nova-icons";
4
- import { cn as te } from "../../../lib/utils.js";
5
- import { Input as ne } from "../input/input.js";
6
- import { Calendar as oe } from "../../data-display/calendar/calendar.js";
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 ae } from "../../../i18n/use-impact-nova-i18n.js";
9
- import { buildDateBoundsMatcher as ie } from "../../../lib/date-bounds-matcher.js";
10
- import { fiscalCalendarPassThrough as ce } from "./fiscal-pass-through.js";
11
- import { DatePickerShell as se } from "./date-picker-shell.js";
12
- import { usePickerDismissActionsRef as le, usePickerFooterDismissNudge as fe, handleReadonlyPickerKeyDown as pe, handlePickerSurfacePointerDown as de } from "./date-input-behavior.js";
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 me } from "../../data-display/calendar/calendar-year-utils.js";
15
- const ue = t.forwardRef(
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
- showPresets: L,
34
- showPeriodBoundaries: $,
35
- autoNavigateToAvailable: z,
36
- showIntervalCaption: E = !1,
37
- ...H
38
- }, V) => {
39
- const { t: a } = ae(), B = S ?? a("datePicker.selectYearRange"), k = y?.fyLabel ?? "fy-long", m = t.useRef(null), P = t.useRef(null);
40
- t.useImperativeHandle(V, () => m.current);
41
- const [i, c] = t.useState(!1), u = t.useRef(!1), R = le(), { footerFlashKey: q, footerFlashTarget: G, popoverHandlers: J } = fe(l, i, R, P), [C, f] = t.useState(n), [Q, U] = t.useState(me(n?.from));
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), []), W = ce({
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
- showPresets: L,
53
- showPeriodBoundaries: $,
54
- autoNavigateToAvailable: z
55
- }), X = (e) => {
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
- }, Z = () => {
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 _ = n?.from ? `${N(n.from, k)}${n.to ? ` – ${N(n.to, k)}` : ""}` : "";
70
+ const ee = n?.from ? `${N(n.from, k)}${n.to ? ` – ${N(n.to, k)}` : ""}` : "";
69
71
  return /* @__PURE__ */ r(
70
- se,
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: J,
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) => de({
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
- ne,
97
+ oe,
96
98
  {
97
99
  ref: m,
98
- value: _,
100
+ value: ee,
99
101
  readOnly: !0,
100
- onKeyDown: (e) => pe(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: B,
112
+ placeholder: q,
111
113
  disabled: o,
112
114
  "data-form-control": "input",
113
- className: te("cursor-pointer", O),
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(ee, { className: "size-3 hover:text-content" })
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(re, { className: "h-4 w-4 text-secondary-foreground" })
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
- ...H
151
+ ...V
150
152
  }
151
153
  )
152
154
  }
153
155
  ),
154
156
  children: /* @__PURE__ */ r(
155
- oe,
157
+ ae,
156
158
  {
157
159
  pickerType: "year",
158
160
  yearMode: "range",
159
161
  selectedYear: C,
160
- footerFlashKey: q,
161
- footerFlashTarget: G,
162
- onYearSelect: X,
163
- month: Q,
164
- onMonthChange: U,
165
- disabled: ie(v, A),
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: Z,
171
+ onApply: _,
170
172
  onCancel: h,
171
173
  onClear: b,
172
- showIntervalCaption: E,
173
- ...W
174
+ showIntervalCaption: H,
175
+ ...X
174
176
  }
175
177
  )
176
178
  }
177
179
  );
178
180
  }
179
181
  );
180
- ue.displayName = "YearRangePicker";
182
+ he.displayName = "YearRangePicker";
181
183
  export {
182
- ue as YearRangePicker
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 C({
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
- C as SelectTriggerValue
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 R = ({
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
- R as Submenu
108
+ G as Submenu
110
109
  };
@@ -1,42 +1,49 @@
1
1
  import { jsx as a } from "react/jsx-runtime";
2
- import { Controller as p } from "react-hook-form";
3
- import { MultiWeekPicker as h } from "../../components/forms/date-picker/multi-week-picker.js";
4
- import { getFieldTestId as k } from "../utils/fieldTestIds.js";
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 D = ({
7
+ const x = ({
7
8
  field: e,
8
- validationRules: m,
9
- isDisabled: s,
10
- formHelpers: u
9
+ validationRules: s,
10
+ isDisabled: u,
11
+ formHelpers: c
11
12
  }) => {
12
- const c = u.form.control, r = e.fieldType === "multi_week_picker" ? e : null;
13
+ const d = c.form.control, r = e.fieldType === "multi_week_picker" ? e : null;
13
14
  return r ? /* @__PURE__ */ a(
14
- p,
15
+ h,
15
16
  {
16
17
  name: e.id,
17
- control: c,
18
- rules: m,
19
- render: ({ field: o, fieldState: t }) => {
20
- const l = !!t.error, i = o.value;
21
- return /* @__PURE__ */ a("div", { "data-testid": k(e.id), children: /* @__PURE__ */ a(
22
- h,
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(i) ? i : void 0,
26
- onChange: (d) => {
27
- o.onChange(d ?? []);
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: s,
32
- error: l,
33
- helperText: l ? t.error?.message : e.helpText,
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
- autoNavigateToAvailable: r.autoNavigateToAvailable
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
- D as MultiWeekPickerField
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 f } from "../utils/calendar-boundary.js";
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 S = (e, a) => Y(e, {
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: p,
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: u, maxDate: m, startMonth: D, endMonth: k } = $(t), v = d.form.control;
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: h }) => {
30
- const g = !!h.error, r = w.value, s = r?.start ? f(r.start) ?? null : null, i = r?.end ? f(r.end) ?? null : null, F = !!(s && i);
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: S(s, t),
37
- to: S(i, t)
36
+ from: f(s, t),
37
+ to: f(i, t)
38
38
  } : void 0,
39
39
  onChange: (o) => {
40
- const M = o?.from ? { from: o.from, to: o.to ?? o.from } : void 0, n = M?.from?.startDate, l = M?.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;
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: u ?? D,
45
- endMonth: m ?? k,
44
+ startMonth: D,
45
+ endMonth: u ?? k,
46
46
  required: e.isRequired,
47
- disabled: p,
48
- error: g,
49
- helperText: g ? h.error?.message : e.helpText,
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: u,
54
- maxDate: m,
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;