impact-nova 2.5.9 → 2.5.11

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 (73) hide show
  1. package/dist/components/data/data-table/column-runtime-state-guard.js +42 -42
  2. package/dist/components/data/data-table/data-table-column-tree-cache.d.ts +15 -0
  3. package/dist/components/data/data-table/data-table-column-tree-cache.js +109 -80
  4. package/dist/components/data/data-table/use-data-table-column-list-sync.js +65 -62
  5. package/dist/components/data-display/calendar/calendar-apply-validation.d.ts +2 -0
  6. package/dist/components/data-display/calendar/calendar-apply-validation.js +64 -67
  7. package/dist/components/data-display/calendar/calendar-available-view.d.ts +27 -0
  8. package/dist/components/data-display/calendar/calendar-available-view.js +85 -0
  9. package/dist/components/data-display/calendar/calendar-day-picker-classnames.d.ts +6 -1
  10. package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +31 -23
  11. package/dist/components/data-display/calendar/calendar-day-picker-components.d.ts +5 -2
  12. package/dist/components/data-display/calendar/calendar-day-picker-components.js +210 -167
  13. package/dist/components/data-display/calendar/calendar-day-picker-view.d.ts +3 -2
  14. package/dist/components/data-display/calendar/calendar-day-picker-view.js +126 -124
  15. package/dist/components/data-display/calendar/calendar-fiscal-period-nav.d.ts +6 -0
  16. package/dist/components/data-display/calendar/calendar-fiscal-period-nav.js +34 -18
  17. package/dist/components/data-display/calendar/calendar-month-utils.d.ts +5 -0
  18. package/dist/components/data-display/calendar/calendar-month-utils.js +85 -64
  19. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +5 -1
  20. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +20 -16
  21. package/dist/components/data-display/calendar/calendar-selection-appearance.d.ts +1 -0
  22. package/dist/components/data-display/calendar/calendar-selection-appearance.js +31 -30
  23. package/dist/components/data-display/calendar/calendar-week-number-cell.d.ts +3 -1
  24. package/dist/components/data-display/calendar/calendar-week-number-cell.js +68 -53
  25. package/dist/components/data-display/calendar/calendar-week-utils.d.ts +6 -0
  26. package/dist/components/data-display/calendar/calendar-week-utils.js +51 -47
  27. package/dist/components/data-display/calendar/calendar-year-panes.d.ts +2 -0
  28. package/dist/components/data-display/calendar/calendar-year-panes.js +3 -1
  29. package/dist/components/data-display/calendar/calendar.js +170 -165
  30. package/dist/components/data-display/calendar/calendar.types.d.ts +7 -0
  31. package/dist/components/data-display/calendar/use-calendar-day-picker-config.d.ts +5 -2
  32. package/dist/components/data-display/calendar/use-calendar-day-picker-config.js +86 -76
  33. package/dist/components/data-display/calendar/use-calendar-state.d.ts +3 -1
  34. package/dist/components/data-display/calendar/use-calendar-state.js +403 -325
  35. package/dist/components/feedback/dialog/dialog.js +12 -12
  36. package/dist/components/feedback/sheet/sheet.js +22 -22
  37. package/dist/components/forms/date-picker/calendar-selection-adapters.d.ts +2 -0
  38. package/dist/components/forms/date-picker/calendar-selection-adapters.js +36 -31
  39. package/dist/components/forms/date-picker/date-input-behavior.d.ts +10 -0
  40. package/dist/components/forms/date-picker/date-input-behavior.js +111 -90
  41. package/dist/components/forms/date-picker/date-picker.js +74 -70
  42. package/dist/components/forms/date-picker/date-picker.types.d.ts +7 -0
  43. package/dist/components/forms/date-picker/date-range-picker.js +148 -144
  44. package/dist/components/forms/date-picker/fiscal-pass-through.d.ts +2 -0
  45. package/dist/components/forms/date-picker/fiscal-pass-through.js +4 -2
  46. package/dist/components/forms/date-picker/month-picker.js +84 -80
  47. package/dist/components/forms/date-picker/month-range-picker.js +147 -143
  48. package/dist/components/forms/date-picker/multi-date-picker.js +53 -49
  49. package/dist/components/forms/date-picker/multi-month-picker.js +51 -47
  50. package/dist/components/forms/date-picker/multi-quarter-picker.js +48 -44
  51. package/dist/components/forms/date-picker/multi-week-picker.js +55 -51
  52. package/dist/components/forms/date-picker/multi-year-picker.js +50 -46
  53. package/dist/components/forms/date-picker/picker-story-layout.d.ts +2 -0
  54. package/dist/components/forms/date-picker/quarter-picker.js +48 -44
  55. package/dist/components/forms/date-picker/quarter-range-picker.js +47 -43
  56. package/dist/components/forms/date-picker/week-picker.js +86 -82
  57. package/dist/components/forms/date-picker/week-range-picker.js +171 -164
  58. package/dist/components/forms/date-picker/year-picker.js +49 -45
  59. package/dist/components/forms/date-picker/year-range-picker.js +49 -45
  60. package/dist/components/forms/select/components/SelectMenuPanel.js +3 -2
  61. package/dist/components/forms/select/select.js +1 -0
  62. package/dist/form-react/Fields/DateInputField.js +51 -50
  63. package/dist/form-react/Fields/DateRangeField.js +14 -13
  64. package/dist/form-react/Fields/MonthRangeField.js +29 -28
  65. package/dist/form-react/Fields/MultiMonthPickerField.js +13 -12
  66. package/dist/form-react/Fields/MultiWeekPickerField.js +18 -17
  67. package/dist/form-react/Fields/WeekRangePicker.js +48 -48
  68. package/dist/form-react/types/fields.types.d.ts +14 -0
  69. package/dist/impact-nova.css +1 -1
  70. package/dist/lib/overlay/overlay-portal-context.js +16 -16
  71. package/dist/llms/rules/installation.js +1 -1
  72. package/dist/llms/rules/requirements.js +1 -1
  73. package/package.json +1 -1
@@ -1,22 +1,24 @@
1
1
  import "react-day-picker";
2
2
  import { cn as e } from "../../../lib/utils.js";
3
- import { previewCapEndCellClassName as m, previewCapStartCellClassName as f, previewCellClassName as p, rangeEndCellClassName as w, rangeMiddleCellClassName as u, rangeStartCellClassName as b, dayCellBaseClassName as h, weekNumberInteractiveClassName as k, weekNumberSelectedFillClassName as x, weekNumberBaseClassName as s, DAY_MONTH_MIN_WIDTH as _ } from "./calendar-selection-appearance.js";
4
- function v(l) {
3
+ import { previewCapEndCellClassName as m, previewCapStartCellClassName as p, previewCellClassName as w, rangeEndCellClassName as b, rangeMiddleCellClassName as u, rangeStartCellClassName as x, dayCellBaseClassName as h, weekNumberInteractiveClassName as k, weekNumberSelectedFillClassName as _, weekNumberBaseClassName as s, DAY_MONTH_MIN_WIDTH as y } from "./calendar-selection-appearance.js";
4
+ function N(l) {
5
5
  const {
6
6
  defaultClassNames: t,
7
- pickerType: o,
8
- calendarKind: i,
7
+ pickerType: i,
8
+ calendarKind: f,
9
9
  showOutsideDays: d,
10
10
  periodRowHover: c = !1,
11
- classNames: r
12
- } = l, a = o === "week", n = a && !c;
11
+ showWeekNumber: a = !0,
12
+ classNames: o
13
+ } = l, r = i === "week", n = r && !c;
13
14
  return {
14
15
  root: e("w-fit", t.root),
15
16
  months: e("relative", t.months),
16
17
  month: e(
17
18
  "relative flex flex-1",
18
- _,
19
- "flex-col gap-2 after:absolute after:top-[5.5rem] after:bottom-0 after:left-9 after:w-[1px] after:bg-stroke-hairline",
19
+ y,
20
+ "flex-col gap-2",
21
+ a && "after:absolute after:top-[5.5rem] after:bottom-0 after:left-9 after:w-[1px] after:bg-stroke-hairline",
20
22
  t.month
21
23
  ),
22
24
  button_previous: e(
@@ -37,18 +39,20 @@ function v(l) {
37
39
  ),
38
40
  caption_label: e("select-none font-medium text-sm", t.caption_label),
39
41
  table: "w-full border-collapse",
42
+ weeks: e("flex flex-col", t.weeks),
40
43
  weekdays: e(
41
- "flex w-full relative after:absolute after:bottom-0 after:right-0 after:h-[1px] after:bg-stroke-hairline after:left-9",
44
+ "flex w-full relative after:absolute after:bottom-0 after:right-0 after:h-[1px] after:bg-stroke-hairline",
45
+ a ? "after:left-9" : "after:left-0",
42
46
  t.weekdays
43
47
  ),
44
48
  weekday: e(
45
49
  "flex-1 select-none rounded-md font-normal text-center",
46
50
  "text-[11px] text-secondary-foreground pb-2",
47
- "[&:nth-child(2)]:pl-2",
51
+ a && "[&:nth-child(2)]:pl-2",
48
52
  t.weekday
49
53
  ),
50
54
  week: e(
51
- a ? "flex w-full items-stretch group/week" : "mt-1 flex w-full items-stretch group/week",
55
+ r ? "flex w-full items-stretch group/week" : "mt-1 flex w-full items-stretch group/week",
52
56
  t.week
53
57
  ),
54
58
  week_number_header: e(
@@ -60,34 +64,38 @@ function v(l) {
60
64
  s,
61
65
  "whitespace-nowrap transition-colors",
62
66
  n && "group-hover/week:bg-accent",
63
- a && x,
64
- a && k,
67
+ r && _,
68
+ r && k,
65
69
  t.week_number
66
70
  ),
67
71
  day: e(
68
72
  h,
69
73
  n && "group-hover/week:bg-accent",
70
- r?.day
74
+ o?.day
71
75
  ),
72
- range_start: e(b, t.range_start),
76
+ range_start: e(x, t.range_start),
73
77
  range_middle: e(u, t.range_middle),
74
- range_end: e(w, t.range_end),
78
+ range_end: e(b, t.range_end),
75
79
  today: e("text-brand", t.today),
76
80
  outside: e(
77
- i === "fiscal" || d ? "text-secondary-foreground opacity-50" : "invisible",
81
+ f === "fiscal" || d ? "text-secondary-foreground opacity-50" : "invisible",
78
82
  t.outside
79
83
  ),
80
84
  disabled: e("text-secondary-foreground opacity-50", t.disabled),
81
85
  hidden: e("invisible", t.hidden),
82
- ...r
86
+ ...o
83
87
  };
84
88
  }
85
- const N = {
86
- preview: p,
87
- preview_cap_start: f,
89
+ const j = {
90
+ preview: w,
91
+ preview_cap_start: p,
88
92
  preview_cap_end: m
93
+ }, D = {
94
+ fiscal_period_start: "before:pointer-events-none before:absolute before:left-0 before:top-1/2 before:-translate-y-1/2 before:content-['('] before:text-sm before:font-normal before:text-brand",
95
+ fiscal_period_end: "after:pointer-events-none after:absolute after:right-0 after:top-1/2 after:-translate-y-1/2 after:content-[')'] after:text-sm after:font-normal after:text-brand"
89
96
  };
90
97
  export {
91
- v as getCalendarDayPickerClassNames,
92
- N as previewModifierClassNames
98
+ D as fiscalPeriodBoundaryClassNames,
99
+ N as getCalendarDayPickerClassNames,
100
+ j as previewModifierClassNames
93
101
  };
@@ -1,13 +1,14 @@
1
1
  import { DayPicker } from 'react-day-picker';
2
2
  import { Button } from '../../primitives/button/button';
3
3
  import { Option } from '../../forms/select';
4
- import { FiscalCalendarConfig, FiscalPeriod, CalendarKind } from '../../../lib/fiscal-calendar';
4
+ import { FiscalCalendarConfig, FiscalPeriod, CalendarKind, Granularity } from '../../../lib/fiscal-calendar';
5
5
  import { WeekPickerInput } from './calendar-week-utils';
6
6
  import * as React from "react";
7
7
  export interface BuildCalendarDayPickerComponentsParams {
8
8
  buttonVariant: React.ComponentProps<typeof Button>["variant"];
9
9
  pickerType: "date" | "week" | "month";
10
10
  calendarKind: CalendarKind;
11
+ granularity?: Granularity;
11
12
  currentMonth: Date;
12
13
  monthsFull: string[];
13
14
  monthsShort: string[];
@@ -31,6 +32,8 @@ export interface BuildCalendarDayPickerComponentsParams {
31
32
  onWeekSelect: (input: WeekPickerInput) => void;
32
33
  periodRowHover?: boolean;
33
34
  weekMode?: "single" | "multiple" | "range" | "multi-range";
35
+ showPeriodBoundaries?: boolean;
36
+ disabled?: unknown;
34
37
  components?: React.ComponentProps<typeof DayPicker>["components"];
35
38
  }
36
- export declare function buildCalendarDayPickerComponents({ buttonVariant, pickerType, calendarKind, currentMonth, monthsFull, monthsShort, resolvedStartMonth, resolvedEndMonth, availableYears, fiscalPeriods, fiscalConfig, weekStartsOn, previousMonthLabel, nextMonthLabel, monthPlaceholder, yearPlaceholder, weekNumberLabel, weekNumberHeader, weekLabel, fiscalWeekNumberLabel, fiscalWeekAriaLabel, getCellMeta, onMonthChange, onWeekSelect, periodRowHover, weekMode, components, }: BuildCalendarDayPickerComponentsParams): React.ComponentProps<typeof DayPicker>["components"];
39
+ export declare function buildCalendarDayPickerComponents({ buttonVariant, pickerType, calendarKind, granularity, currentMonth, monthsFull, monthsShort, resolvedStartMonth, resolvedEndMonth, availableYears, fiscalPeriods, fiscalConfig, weekStartsOn, previousMonthLabel, nextMonthLabel, monthPlaceholder, yearPlaceholder, weekNumberLabel, weekNumberHeader, weekLabel, fiscalWeekNumberLabel, fiscalWeekAriaLabel, getCellMeta, onMonthChange, onWeekSelect, periodRowHover, weekMode, showPeriodBoundaries, disabled, components, }: BuildCalendarDayPickerComponentsParams): React.ComponentProps<typeof DayPicker>["components"];
@@ -1,263 +1,306 @@
1
- import { jsx as i, jsxs as z } from "react/jsx-runtime";
2
- import * as x from "react";
3
- import { useDayPicker as V } from "react-day-picker";
4
- import { ChevronRight as B } from "impact-nova-icons";
5
- import { cn as k } from "../../../lib/utils.js";
6
- import { Button as M } from "../../primitives/button/button.js";
7
- import { Select as R } from "../../forms/select/select.js";
8
- import { CalendarCaptionHeader as ee } from "./calendar-caption-header.js";
9
- import { CalendarDayButton as te } from "./calendar-day-button.js";
10
- import { PanelIndexContext as N } from "./calendar-panel-context.js";
11
- import { CalendarWeekNumberCell as re } from "./calendar-week-number-cell.js";
12
- import { paneCivilMonthIndex as ne } from "./calendar-week-number-header.js";
13
- import { buildFiscalYear as oe } from "../../../lib/fiscal-calendar/build-year.js";
14
- import { civilMonthAtOffset as _, midMonthDate as E, visibleMonthForPeriod as G, periodForCivilMonth as ie } from "./calendar-fiscal-period-nav.js";
15
- import { getAvailableMonths as ae } from "./calendar-month-utils.js";
16
- import { isCalendarPaddingWeek as se, weekHasInMonthSelection as le, weekIntervalContinues as de } from "./calendar-padding-week.utils.js";
17
- import { fiscalPeriodForWeek as ce } from "./calendar-week-utils.js";
18
- import { FiscalPeriodCaptionSelect as me } from "./fiscal-period-caption-select.js";
19
- function H(y, m, u) {
20
- if (m != null && y)
1
+ import { jsx as i, jsxs as M } from "react/jsx-runtime";
2
+ import * as k from "react";
3
+ import { useDayPicker as ue } from "react-day-picker";
4
+ import { ChevronRight as Q } from "impact-nova-icons";
5
+ import { cn as y } from "../../../lib/utils.js";
6
+ import { Button as U } from "../../primitives/button/button.js";
7
+ import { Select as X } from "../../forms/select/select.js";
8
+ import { CalendarCaptionHeader as me } from "./calendar-caption-header.js";
9
+ import { CalendarDayButton as pe } from "./calendar-day-button.js";
10
+ import { PanelIndexContext as D } from "./calendar-panel-context.js";
11
+ import { CalendarWeekNumberCell as he } from "./calendar-week-number-cell.js";
12
+ import { paneCivilMonthIndex as ve } from "./calendar-week-number-header.js";
13
+ import { buildFiscalYear as xe } from "../../../lib/fiscal-calendar/build-year.js";
14
+ import { civilMonthAtOffset as N, midMonthDate as g, periodForFiscalYearChange as ke, visibleMonthForPeriod as Z, periodsAvailableInBounds as Pe, periodForCivilMonth as $ } from "./calendar-fiscal-period-nav.js";
15
+ import { getAvailableMonths as ye, isWeekSelectableInBounds as De } from "./calendar-month-utils.js";
16
+ import { isCalendarPaddingWeek as L, weekHasInMonthSelection as Se, weekIntervalContinues as We } from "./calendar-padding-week.utils.js";
17
+ import { isForeignFiscalWeekRow as T, fiscalPeriodForWeek as V } from "./calendar-week-utils.js";
18
+ import { FiscalPeriodCaptionSelect as be } from "./fiscal-period-caption-select.js";
19
+ function C(h, f, l) {
20
+ if (f != null && h)
21
21
  try {
22
- return oe(y, m).periods;
22
+ return xe(h, f).periods;
23
23
  } catch {
24
24
  }
25
- return u ?? [];
25
+ return l ?? [];
26
26
  }
27
- function Ie({
28
- buttonVariant: y,
29
- pickerType: m,
30
- calendarKind: u,
31
- currentMonth: h,
32
- monthsFull: b,
33
- monthsShort: q,
34
- resolvedStartMonth: J,
35
- resolvedEndMonth: Q,
36
- availableYears: g,
37
- fiscalPeriods: C,
38
- fiscalConfig: w,
39
- weekStartsOn: U,
40
- previousMonthLabel: P,
41
- nextMonthLabel: W,
42
- monthPlaceholder: I,
43
- yearPlaceholder: X,
44
- weekNumberLabel: Z,
45
- weekNumberHeader: F,
46
- weekLabel: $,
47
- fiscalWeekNumberLabel: L,
48
- fiscalWeekAriaLabel: T,
49
- getCellMeta: f,
50
- onMonthChange: v,
51
- onWeekSelect: A,
52
- periodRowHover: Y = !1,
53
- weekMode: O = "single",
54
- components: K
27
+ function K(h, f, l) {
28
+ const S = h.days[0]?.date, m = h.days[h.days.length - 1]?.date;
29
+ return !S || !m ? !1 : De(S, m, f, l);
30
+ }
31
+ function Je({
32
+ buttonVariant: h,
33
+ pickerType: f,
34
+ calendarKind: l,
35
+ granularity: S,
36
+ currentMonth: m,
37
+ monthsFull: A,
38
+ monthsShort: ee,
39
+ resolvedStartMonth: te,
40
+ resolvedEndMonth: oe,
41
+ availableYears: Y,
42
+ fiscalPeriods: F,
43
+ fiscalConfig: W,
44
+ weekStartsOn: ne,
45
+ previousMonthLabel: B,
46
+ nextMonthLabel: j,
47
+ monthPlaceholder: O,
48
+ yearPlaceholder: re,
49
+ weekNumberLabel: ie,
50
+ weekNumberHeader: R,
51
+ weekLabel: se,
52
+ fiscalWeekNumberLabel: ae,
53
+ fiscalWeekAriaLabel: le,
54
+ getCellMeta: d,
55
+ onMonthChange: P,
56
+ onWeekSelect: z,
57
+ periodRowHover: _ = !1,
58
+ weekMode: E = "single",
59
+ showPeriodBoundaries: ce = !1,
60
+ disabled: w,
61
+ components: de
55
62
  }) {
63
+ function G(e) {
64
+ if (l !== "fiscal") return;
65
+ const t = N(m, e);
66
+ return $(
67
+ C(
68
+ W,
69
+ d?.(g(t))?.fy ?? d?.(t)?.fy,
70
+ F
71
+ ),
72
+ t.getFullYear(),
73
+ t.getMonth()
74
+ )?.period;
75
+ }
56
76
  return {
57
- Root: ({ className: e, rootRef: r, ...t }) => /* @__PURE__ */ i("div", { "data-slot": "calendar", ref: r, className: k(e), ...t }),
58
- Chevron: ({ className: e, orientation: r, ...t }) => r === "left" ? /* @__PURE__ */ i(
59
- B,
77
+ Root: ({ className: e, rootRef: t, ...o }) => /* @__PURE__ */ i("div", { "data-slot": "calendar", ref: t, className: y(e), ...o }),
78
+ Chevron: ({ className: e, orientation: t, ...o }) => t === "left" ? /* @__PURE__ */ i(
79
+ Q,
60
80
  {
61
81
  size: 16,
62
- className: k("rotate-180 text-content", e),
63
- ...t
82
+ className: y("rotate-180 text-content", e),
83
+ ...o
64
84
  }
65
- ) : r === "right" ? /* @__PURE__ */ i(B, { size: 16, className: k("text-content", e), ...t }) : /* @__PURE__ */ i("span", {}),
85
+ ) : t === "right" ? /* @__PURE__ */ i(Q, { size: 16, className: y("text-content", e), ...o }) : /* @__PURE__ */ i("span", {}),
66
86
  PreviousMonthButton: (e) => /* @__PURE__ */ i(
67
- M,
87
+ U,
68
88
  {
69
- variant: y,
89
+ variant: h,
70
90
  size: "icon",
71
91
  className: "h-7 w-7",
72
- "aria-label": P,
73
- title: P,
92
+ "aria-label": B,
93
+ title: B,
74
94
  ...e
75
95
  }
76
96
  ),
77
97
  NextMonthButton: (e) => /* @__PURE__ */ i(
78
- M,
98
+ U,
79
99
  {
80
- variant: y,
100
+ variant: h,
81
101
  size: "icon",
82
102
  className: "h-7 w-7",
83
- "aria-label": W,
84
- title: W,
103
+ "aria-label": j,
104
+ title: j,
85
105
  ...e
86
106
  }
87
107
  ),
88
- MonthCaption: ({ displayIndex: e, calendarMonth: r, ...t }) => /* @__PURE__ */ i("div", { ...t }),
89
- Month: ({ calendarMonth: e, displayIndex: r, className: t, children: o, ...a }) => {
90
- const d = x.Children.toArray(o), l = d[d.length - 1], s = d.slice(0, -1);
91
- return /* @__PURE__ */ i(N.Provider, { value: r, children: /* @__PURE__ */ z("div", { className: k(t), ...a, children: [
92
- s.length > 0 ? /* @__PURE__ */ i(ee, { children: s }) : null,
93
- l
108
+ MonthCaption: ({ displayIndex: e, calendarMonth: t, ...o }) => /* @__PURE__ */ i("div", { ...o }),
109
+ Month: ({ calendarMonth: e, displayIndex: t, className: o, children: r, ...s }) => {
110
+ const c = k.Children.toArray(r), p = c[c.length - 1], a = c.slice(0, -1);
111
+ return /* @__PURE__ */ i(D.Provider, { value: t, children: /* @__PURE__ */ M("div", { className: y(o), ...s, children: [
112
+ a.length > 0 ? /* @__PURE__ */ i(me, { children: a }) : null,
113
+ p
94
114
  ] }) });
95
115
  },
96
- Months: ({ className: e, children: r, ...t }) => /* @__PURE__ */ i(
116
+ Months: ({ className: e, children: t, ...o }) => /* @__PURE__ */ i(
97
117
  "div",
98
118
  {
99
119
  "data-slot": "day-months",
100
- "data-period-row-hover": Y ? "true" : void 0,
101
- "data-week-gutter-track": m === "week" ? "true" : void 0,
102
- className: k(e),
103
- ...t,
104
- children: r
120
+ "data-period-row-hover": _ ? "true" : void 0,
121
+ "data-week-gutter-track": f === "week" ? "true" : void 0,
122
+ className: y(e),
123
+ ...o,
124
+ children: t
105
125
  }
106
126
  ),
107
- DropdownNav: ({ children: e, className: r, ...t }) => {
108
- if (u !== "fiscal")
109
- return /* @__PURE__ */ i("div", { className: r, ...t, children: e });
110
- const o = x.Children.toArray(e), a = (n) => x.isValidElement(n) && n.key != null ? String(n.key) : "", d = o.find((n) => a(n).endsWith("year")), l = o.find((n) => a(n).endsWith("month")), s = o.filter((n) => {
111
- const c = a(n);
112
- return !c.endsWith("year") && !c.endsWith("month");
127
+ DropdownNav: ({ children: e, className: t, ...o }) => {
128
+ if (l !== "fiscal")
129
+ return /* @__PURE__ */ i("div", { className: t, ...o, children: e });
130
+ const r = k.Children.toArray(e), s = (n) => k.isValidElement(n) && n.key != null ? String(n.key) : "", c = r.find((n) => s(n).endsWith("year")), p = r.find((n) => s(n).endsWith("month")), a = r.filter((n) => {
131
+ const u = s(n);
132
+ return !u.endsWith("year") && !u.endsWith("month");
113
133
  });
114
- return /* @__PURE__ */ z("div", { className: r, ...t, children: [
115
- d,
116
- l,
117
- s
134
+ return /* @__PURE__ */ M("div", { className: t, ...o, children: [
135
+ c,
136
+ p,
137
+ a
118
138
  ] });
119
139
  },
120
140
  MonthsDropdown: ({ value: e }) => {
121
- const r = x.useContext(N), t = r > 0, o = _(h, r), a = o.getFullYear();
122
- if (u === "fiscal" && w) {
123
- const s = f?.(E(o)) ?? f?.(o), n = H(w, s?.fy, C), c = ie(
141
+ const t = k.useContext(D), o = t > 0, r = N(m, t), s = r.getFullYear();
142
+ if (l === "fiscal" && W) {
143
+ const a = d?.(g(r)) ?? d?.(r), n = C(W, a?.fy, F), u = Pe(n, w), v = $(
124
144
  n,
125
- o.getFullYear(),
126
- o.getMonth()
145
+ r.getFullYear(),
146
+ r.getMonth()
127
147
  );
128
148
  return /* @__PURE__ */ i(
129
- me,
149
+ be,
130
150
  {
131
- periods: n,
132
- selectedPeriod: c,
133
- placeholder: I,
134
- onPeriodChange: (p) => {
135
- v(G(p, t));
151
+ periods: u,
152
+ selectedPeriod: v,
153
+ placeholder: O,
154
+ onPeriodChange: (x) => {
155
+ P(Z(x, o));
136
156
  }
137
157
  }
138
158
  );
139
159
  }
140
- const l = ae(
141
- a,
142
- b,
143
- J,
144
- Q
160
+ const p = ye(
161
+ s,
162
+ A,
163
+ te,
164
+ oe
145
165
  );
146
166
  return /* @__PURE__ */ i(
147
- R,
167
+ X,
148
168
  {
149
- value: l.find((s) => s.value === e?.toString()),
150
- onChange: (s) => {
151
- if (s && "value" in s) {
152
- const n = parseInt(s.value);
153
- v(t ? new Date(a, n - 1, 1) : new Date(a, n, 1));
169
+ value: p.find((a) => a.value === e?.toString()),
170
+ onChange: (a) => {
171
+ if (a && "value" in a) {
172
+ const n = parseInt(a.value);
173
+ P(o ? new Date(s, n - 1, 1) : new Date(s, n, 1));
154
174
  }
155
175
  },
156
176
  scrollToSelectedOnOpen: !0,
157
- options: l,
177
+ options: p,
158
178
  className: "w-[116px] shrink-0",
159
179
  menuWidth: "160px",
160
180
  isSearchable: !0,
161
181
  isClearable: !1,
162
- placeholder: I
182
+ placeholder: O
163
183
  }
164
184
  );
165
185
  },
166
186
  YearsDropdown: ({ value: e }) => {
167
- const r = x.useContext(N), t = r > 0, o = u === "fiscal" && w, a = _(h, r), d = o ? f?.(E(a)) ?? f?.(a) : void 0, l = o && d?.fy != null ? String(d.fy) : e?.toString();
187
+ const t = k.useContext(D), o = t > 0, r = l === "fiscal" && W, s = N(m, t), c = r ? d?.(g(s)) ?? d?.(s) : void 0, p = r && c?.fy != null ? String(c.fy) : e?.toString();
168
188
  return /* @__PURE__ */ i(
169
- R,
189
+ X,
170
190
  {
171
- value: g.find((n) => n.value === l),
191
+ value: Y.find((n) => n.value === p),
172
192
  onChange: (n) => {
173
193
  if (n && "value" in n) {
174
- const c = parseInt(n.value);
175
- if (o) {
176
- const p = H(w, c, C), D = p.find((S) => S.period === d?.fiscalPeriod) ?? p[0];
177
- D && v(G(D, t));
194
+ const u = parseInt(n.value);
195
+ if (r) {
196
+ const v = ke({
197
+ periods: C(W, u, F),
198
+ preferredPeriod: c?.fiscalPeriod,
199
+ disabled: w
200
+ });
201
+ v && P(Z(v, o));
178
202
  return;
179
203
  }
180
- if (t) {
181
- const p = new Date(
182
- h.getFullYear(),
183
- h.getMonth() + 1,
204
+ if (o) {
205
+ const v = new Date(
206
+ m.getFullYear(),
207
+ m.getMonth() + 1,
184
208
  1
185
209
  ).getMonth();
186
- v(new Date(c, p - 1, 1));
210
+ P(new Date(u, v - 1, 1));
187
211
  } else
188
- v(new Date(c, h.getMonth(), 1));
212
+ P(new Date(u, m.getMonth(), 1));
189
213
  }
190
214
  },
191
215
  scrollToSelectedOnOpen: !0,
192
- options: g,
216
+ options: Y,
193
217
  className: "w-[116px] shrink-0",
194
218
  menuWidth: "140px",
195
219
  isSearchable: !0,
196
220
  isClearable: !1,
197
- placeholder: X
221
+ placeholder: re
198
222
  }
199
223
  );
200
224
  },
201
225
  DayButton: (e) => /* @__PURE__ */ i(
202
- te,
226
+ pe,
203
227
  {
204
228
  ...e,
205
- pickerType: m,
229
+ pickerType: f,
206
230
  modifiers: {
207
231
  ...e.modifiers,
208
- fiscal_period_start: !!f?.(e.day.date)?.isPeriodStart,
209
- fiscal_period_end: !!f?.(e.day.date)?.isPeriodEnd
232
+ ...ce ? {
233
+ fiscal_period_start: !!d?.(e.day.date)?.isPeriodStart,
234
+ fiscal_period_end: !!d?.(e.day.date)?.isPeriodEnd
235
+ } : {}
210
236
  }
211
237
  }
212
238
  ),
213
- Week: ({ week: e, className: r, children: t, onClick: o, ...a }) => {
214
- const { isSelected: d } = V(), l = se(e), s = m === "week", n = Y && !l ? ce(e, f) : void 0, c = !l && le(e, d), D = m === "week" && O !== "multiple" && O !== "multi-range" && c ? de(e, d) : { prev: !1, next: !1 };
239
+ Week: ({ week: e, className: t, children: o, onClick: r, ...s }) => {
240
+ const { isSelected: c } = ue(), p = k.useContext(D), a = L(e), n = f === "week", u = V(e, d), v = G(p), x = a || T({
241
+ calendarKind: l,
242
+ weekPeriod: u,
243
+ panePeriod: v
244
+ }), fe = _ && !x ? u : void 0, I = n && !x && !K(e, w, S), H = !x && !I && Se(e, c), q = f === "week" && E !== "multiple" && E !== "multi-range" && H ? We(e, c, {
245
+ joinAdjacentWeek: l === "fiscal",
246
+ panePeriod: v,
247
+ periodForDate: (b) => d?.(b)?.fiscalPeriod
248
+ }) : { prev: !1, next: !1 };
215
249
  return /* @__PURE__ */ i(
216
250
  "tr",
217
251
  {
218
- className: k(
219
- r,
220
- l && "invisible",
221
- s && !l && "cursor-pointer"
252
+ className: y(
253
+ t,
254
+ x && "invisible order-last",
255
+ n && !x && !I && "cursor-pointer"
222
256
  ),
223
- ...a,
224
- "aria-hidden": l || void 0,
225
- "data-fiscal-period": n,
226
- "data-week-selected": c ? !0 : void 0,
227
- "data-week-continues-next": D.next || void 0,
228
- "data-week-continues-prev": D.prev || void 0,
229
- onClick: s && !l ? (S) => {
230
- if (o?.(S), S.defaultPrevented) return;
231
- const j = S.target;
232
- j.closest("button") || j.closest("[data-week-number]") || A(e);
233
- } : o,
234
- children: t
257
+ ...s,
258
+ "aria-hidden": x || void 0,
259
+ "data-fiscal-period": fe,
260
+ "data-week-selected": H ? !0 : void 0,
261
+ "data-week-continues-next": q.next || void 0,
262
+ "data-week-continues-prev": q.prev || void 0,
263
+ onClick: n && !x && !I ? (b) => {
264
+ if (r?.(b), b.defaultPrevented) return;
265
+ const J = b.target;
266
+ J.closest("button") || J.closest("[data-week-number]") || z(e);
267
+ } : r,
268
+ children: o
269
+ }
270
+ );
271
+ },
272
+ WeekNumber: ({ week: e, ...t }) => {
273
+ const o = k.useContext(D), r = L(e) || T({
274
+ calendarKind: l,
275
+ weekPeriod: V(e, d),
276
+ panePeriod: G(o)
277
+ });
278
+ return /* @__PURE__ */ i(
279
+ he,
280
+ {
281
+ week: e,
282
+ weekStartsOn: ne,
283
+ pickerType: f,
284
+ calendarKind: l,
285
+ weekNumberLabel: ie,
286
+ weekLabel: se,
287
+ fiscalWeekNumberLabel: ae,
288
+ fiscalWeekAriaLabel: le,
289
+ getCellMeta: d,
290
+ onWeekSelect: z,
291
+ ...t,
292
+ blank: r,
293
+ blocked: f === "week" && !K(e, w, S)
235
294
  }
236
295
  );
237
296
  },
238
- WeekNumber: ({ week: e, ...r }) => /* @__PURE__ */ i(
239
- re,
240
- {
241
- week: e,
242
- weekStartsOn: U,
243
- pickerType: m,
244
- calendarKind: u,
245
- weekNumberLabel: Z,
246
- weekLabel: $,
247
- fiscalWeekNumberLabel: L,
248
- fiscalWeekAriaLabel: T,
249
- getCellMeta: f,
250
- onWeekSelect: A,
251
- ...r
252
- }
253
- ),
254
297
  WeekNumberHeader: (e) => {
255
- const r = x.useContext(N), t = ne(u, h, r), o = t === void 0 ? F : q[t], a = t === void 0 ? F : b[t];
256
- return /* @__PURE__ */ i("th", { ...e, "aria-label": a, children: o });
298
+ const t = k.useContext(D), o = ve(l, m, t), r = o === void 0 ? R : ee[o], s = o === void 0 ? R : A[o];
299
+ return /* @__PURE__ */ i("th", { ...e, "aria-label": s, children: r });
257
300
  },
258
- ...K
301
+ ...de
259
302
  };
260
303
  }
261
304
  export {
262
- Ie as buildCalendarDayPickerComponents
305
+ Je as buildCalendarDayPickerComponents
263
306
  };
@@ -6,7 +6,7 @@ import { CalendarProps } from './calendar.types';
6
6
  import { WeekPickerInput } from './calendar-week-utils';
7
7
  import * as React from "react";
8
8
  type DayPickerProps = React.ComponentProps<typeof DayPicker>;
9
- export interface CalendarDayPickerViewProps extends Omit<CalendarProps, "showFooter" | "disableApply" | "onApply" | "onCancel" | "onClear" | "pickerType" | "weekMode" | "selectedWeeks" | "onWeekSelect" | "monthMode" | "selectedMonths" | "onMonthSelect" | "defaultMonth" | "fiscalMode" | "fiscalMonthPattern" | "fiscalYearStartMonth" | "buttonVariant" | "components" | "classNames" | "formatters" | "captionLayout" | "showOutsideDays" | "fixedWeeks" | "calendarKind" | "fiscalConfig" | "granularity" | "showPresets" | "comparison" | "onComparisonChange" | "onSelectionChange" | "selectedQuarters" | "onQuarterSelect" | "selectedYear" | "onYearSelect" | "weekStartsOn" | "startMonth" | "endMonth" | "month" | "onMonthChange" | "selected" | "onSelect" | "mode"> {
9
+ export interface CalendarDayPickerViewProps extends Omit<CalendarProps, "showFooter" | "showPeriodBoundaries" | "disableApply" | "onApply" | "onCancel" | "onClear" | "pickerType" | "weekMode" | "selectedWeeks" | "onWeekSelect" | "monthMode" | "selectedMonths" | "onMonthSelect" | "defaultMonth" | "fiscalMode" | "fiscalMonthPattern" | "fiscalYearStartMonth" | "buttonVariant" | "components" | "classNames" | "formatters" | "captionLayout" | "showOutsideDays" | "fixedWeeks" | "calendarKind" | "fiscalConfig" | "granularity" | "showPresets" | "comparison" | "onComparisonChange" | "onSelectionChange" | "selectedQuarters" | "onQuarterSelect" | "selectedYear" | "onYearSelect" | "weekStartsOn" | "startMonth" | "endMonth" | "month" | "onMonthChange" | "selected" | "onSelect" | "mode"> {
10
10
  pickerType: "date" | "week";
11
11
  mode: NonNullable<CalendarProps["mode"]>;
12
12
  weekMode: NonNullable<CalendarProps["weekMode"]>;
@@ -22,6 +22,7 @@ export interface CalendarDayPickerViewProps extends Omit<CalendarProps, "showFoo
22
22
  components?: CalendarProps["components"];
23
23
  selected?: Date | Date[] | DateRange;
24
24
  showFooter: boolean;
25
+ showPeriodBoundaries: boolean;
25
26
  pendingSelection?: Date | Date[] | DateRange;
26
27
  selectedDaysFromWeeks?: Date[];
27
28
  currentMonth: Date;
@@ -49,5 +50,5 @@ export interface CalendarDayPickerViewProps extends Omit<CalendarProps, "showFoo
49
50
  getCellMeta?: (date: Date) => import('../../../lib/fiscal-calendar').DateCellMeta | undefined;
50
51
  formatWeekNumber: (weekNumber: number) => string;
51
52
  }
52
- export declare function CalendarDayPickerView({ className, pickerType, mode, weekMode, calendarKind, granularity, showOutsideDays, fixedWeeks, captionLayout, buttonVariant, weekStartsOn, formatters, classNames, components, selected, showFooter, pendingSelection, selectedDaysFromWeeks, currentMonth, monthsFull, monthsShort, weekNumberHeader, resolvedStartMonth, resolvedEndMonth, availableYears, fiscalPeriods, fiscalConfig, dateFnsLocale, intlLocale, weekRangeModifiers, onSelect, onMonthChange, onWeekSelect, previousMonthLabel, nextMonthLabel, monthPlaceholder, yearPlaceholder, weekNumberLabel, weekLabel, fiscalWeekAriaLabel, getCellMeta, formatWeekNumber, disabled, ...props }: CalendarDayPickerViewProps): import("react/jsx-runtime").JSX.Element;
53
+ export declare function CalendarDayPickerView({ className, pickerType, mode, weekMode, calendarKind, granularity, showOutsideDays, fixedWeeks, captionLayout, buttonVariant, weekStartsOn, formatters, classNames, components, selected, showFooter, showPeriodBoundaries, pendingSelection, selectedDaysFromWeeks, currentMonth, monthsFull, monthsShort, weekNumberHeader, resolvedStartMonth, resolvedEndMonth, availableYears, fiscalPeriods, fiscalConfig, dateFnsLocale, intlLocale, weekRangeModifiers, onSelect, onMonthChange, onWeekSelect, previousMonthLabel, nextMonthLabel, monthPlaceholder, yearPlaceholder, weekNumberLabel, weekLabel, fiscalWeekAriaLabel, getCellMeta, formatWeekNumber, disabled, showWeekNumber, ...props }: CalendarDayPickerViewProps): import("react/jsx-runtime").JSX.Element;
53
54
  export {};