impact-nova 2.5.6 → 2.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +2 -2
  2. package/dist/components/data/ag-grid-react/headers/components/date-filter-picker.d.ts +4 -2
  3. package/dist/components/data/ag-grid-react/headers/header-search-input.js +65 -65
  4. package/dist/components/data/ag-grid-react/headers/utils/date-utils.js +55 -48
  5. package/dist/components/data-display/calendar/calendar-apply-validation.d.ts +4 -2
  6. package/dist/components/data-display/calendar/calendar-apply-validation.js +82 -51
  7. package/dist/components/data-display/calendar/calendar-config.d.ts +13 -5
  8. package/dist/components/data-display/calendar/calendar-config.js +31 -20
  9. package/dist/components/data-display/calendar/calendar-day-button.js +43 -35
  10. package/dist/components/data-display/calendar/calendar-day-hover.d.ts +8 -0
  11. package/dist/components/data-display/calendar/calendar-day-hover.js +20 -0
  12. package/dist/components/data-display/calendar/calendar-day-picker-classnames.d.ts +8 -1
  13. package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +40 -20
  14. package/dist/components/data-display/calendar/calendar-day-picker-components.d.ts +12 -1
  15. package/dist/components/data-display/calendar/calendar-day-picker-components.js +199 -98
  16. package/dist/components/data-display/calendar/calendar-day-picker-view.d.ts +12 -4
  17. package/dist/components/data-display/calendar/calendar-day-picker-view.js +139 -92
  18. package/dist/components/data-display/calendar/calendar-fiscal-labels.d.ts +38 -0
  19. package/dist/components/data-display/calendar/calendar-fiscal-labels.js +90 -0
  20. package/dist/components/data-display/calendar/calendar-footer-summary.d.ts +13 -4
  21. package/dist/components/data-display/calendar/calendar-footer-summary.js +101 -50
  22. package/dist/components/data-display/calendar/calendar-footer.d.ts +16 -7
  23. package/dist/components/data-display/calendar/calendar-footer.js +88 -66
  24. package/dist/components/data-display/calendar/calendar-gregorian-presets.d.ts +2 -0
  25. package/dist/components/data-display/calendar/calendar-gregorian-presets.js +26 -0
  26. package/dist/components/data-display/calendar/calendar-interval-caption.d.ts +1 -0
  27. package/dist/components/data-display/calendar/calendar-interval-caption.js +10 -0
  28. package/dist/components/data-display/calendar/calendar-interval-utils.d.ts +23 -0
  29. package/dist/components/data-display/calendar/calendar-interval-utils.js +154 -0
  30. package/dist/components/data-display/calendar/calendar-month-panes.d.ts +5 -1
  31. package/dist/components/data-display/calendar/calendar-month-panes.js +9 -7
  32. package/dist/components/data-display/calendar/calendar-month-picker-panel.d.ts +5 -1
  33. package/dist/components/data-display/calendar/calendar-month-picker-panel.js +76 -77
  34. package/dist/components/data-display/calendar/calendar-month-utils.d.ts +2 -0
  35. package/dist/components/data-display/calendar/calendar-month-utils.js +69 -60
  36. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +15 -0
  37. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +22 -3
  38. package/dist/components/data-display/calendar/calendar-panel-context.d.ts +1 -1
  39. package/dist/components/data-display/calendar/calendar-period-cell.d.ts +18 -0
  40. package/dist/components/data-display/calendar/calendar-period-cell.js +89 -0
  41. package/dist/components/data-display/calendar/calendar-period-keyboard.d.ts +2 -0
  42. package/dist/components/data-display/calendar/calendar-period-keyboard.js +18 -0
  43. package/dist/components/data-display/calendar/calendar-preset-strip.d.ts +6 -0
  44. package/dist/components/data-display/calendar/calendar-preset-strip.js +26 -0
  45. package/dist/components/data-display/calendar/calendar-quarter-panes.d.ts +24 -0
  46. package/dist/components/data-display/calendar/calendar-quarter-panes.js +115 -0
  47. package/dist/components/data-display/calendar/calendar-quarter-utils.d.ts +19 -0
  48. package/dist/components/data-display/calendar/calendar-quarter-utils.js +95 -0
  49. package/dist/components/data-display/calendar/calendar-selection-appearance.d.ts +38 -0
  50. package/dist/components/data-display/calendar/calendar-selection-appearance.js +72 -0
  51. package/dist/components/data-display/calendar/calendar-selection.d.ts +20 -0
  52. package/dist/components/data-display/calendar/calendar-selection.js +31 -0
  53. package/dist/components/data-display/calendar/calendar-week-number-cell.d.ts +6 -1
  54. package/dist/components/data-display/calendar/calendar-week-number-cell.js +53 -38
  55. package/dist/components/data-display/calendar/calendar-week-number-header.d.ts +4 -0
  56. package/dist/components/data-display/calendar/calendar-week-number-header.js +15 -0
  57. package/dist/components/data-display/calendar/calendar-week-utils.d.ts +11 -3
  58. package/dist/components/data-display/calendar/calendar-week-utils.js +50 -42
  59. package/dist/components/data-display/calendar/calendar-year-panes.d.ts +18 -0
  60. package/dist/components/data-display/calendar/calendar-year-panes.js +98 -0
  61. package/dist/components/data-display/calendar/calendar-year-utils.d.ts +17 -0
  62. package/dist/components/data-display/calendar/calendar-year-utils.js +75 -0
  63. package/dist/components/data-display/calendar/calendar.d.ts +1 -1
  64. package/dist/components/data-display/calendar/calendar.js +303 -181
  65. package/dist/components/data-display/calendar/calendar.types.d.ts +53 -16
  66. package/dist/components/data-display/calendar/fiscal-period-caption-select.d.ts +7 -0
  67. package/dist/components/data-display/calendar/fiscal-period-caption-select.js +63 -0
  68. package/dist/components/data-display/calendar/index.d.ts +1 -1
  69. package/dist/components/data-display/calendar/use-calendar-day-picker-config.d.ts +12 -2
  70. package/dist/components/data-display/calendar/use-calendar-day-picker-config.js +92 -62
  71. package/dist/components/data-display/calendar/use-calendar-state.d.ts +32 -12
  72. package/dist/components/data-display/calendar/use-calendar-state.js +371 -164
  73. package/dist/components/data-display/calendar/use-fiscal-calendar.d.ts +5 -0
  74. package/dist/components/data-display/calendar/use-fiscal-calendar.js +24 -0
  75. package/dist/components/feedback/tooltip/overflow-tooltip.js +57 -57
  76. package/dist/components/flows/guidance/guidance-error-boundary.js +22 -14
  77. package/dist/components/flows/guidance/guidance-layer.js +34 -32
  78. package/dist/components/flows/guidance/help-center/assets/whats-new-guide-icon.svg.js +4 -0
  79. package/dist/components/flows/guidance/help-center/filter-help-center-guides.js +10 -7
  80. package/dist/components/flows/guidance/help-center/guide-catalog-section.d.ts +7 -0
  81. package/dist/components/flows/guidance/help-center/guide-catalog-section.js +24 -0
  82. package/dist/components/flows/guidance/help-center/guide-catalog-utils.d.ts +3 -0
  83. package/dist/components/flows/guidance/help-center/guide-catalog-utils.js +19 -0
  84. package/dist/components/flows/guidance/help-center/guide-catalog.d.ts +1 -1
  85. package/dist/components/flows/guidance/help-center/guide-catalog.js +89 -79
  86. package/dist/components/flows/guidance/help-center/help-center-guide-labels.d.ts +6 -0
  87. package/dist/components/flows/guidance/help-center/help-center-guide-labels.js +33 -0
  88. package/dist/components/flows/guidance/help-center/help-center-guide-row.d.ts +12 -0
  89. package/dist/components/flows/guidance/help-center/help-center-guide-row.js +57 -0
  90. package/dist/components/flows/guidance/help-center/help-center-guide-type-icons.d.ts +9 -0
  91. package/dist/components/flows/guidance/help-center/help-center-guide-type-icons.js +114 -0
  92. package/dist/components/flows/guidance/help-center/help-center-header.d.ts +1 -1
  93. package/dist/components/flows/guidance/help-center/help-center-header.js +20 -16
  94. package/dist/components/flows/guidance/help-center/help-center.constants.d.ts +1 -1
  95. package/dist/components/flows/guidance/help-center/help-center.constants.js +1 -1
  96. package/dist/components/flows/guidance/help-center/help-center.d.ts +3 -1
  97. package/dist/components/flows/guidance/help-center/help-center.js +74 -51
  98. package/dist/components/flows/guidance/help-center/help-center.types.d.ts +9 -1
  99. package/dist/components/flows/guidance/help-center/renderHelpCenterGuideTypeIcon.d.ts +4 -0
  100. package/dist/components/flows/guidance/help-center/renderHelpCenterGuideTypeIcon.js +18 -0
  101. package/dist/components/flows/guidance/help-center.d.ts +4 -2
  102. package/dist/components/flows/guidance/help-center.js +23 -14
  103. package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.js +19 -17
  104. package/dist/components/flows/guidance/index.d.ts +1 -1
  105. package/dist/components/flows/guidance/renderers/announcement-renderer.d.ts +1 -1
  106. package/dist/components/flows/guidance/renderers/announcement-renderer.js +20 -12
  107. package/dist/components/flows/guidance/renderers/guidance-card-shared.d.ts +9 -11
  108. package/dist/components/flows/guidance/renderers/guidance-card-shared.js +124 -177
  109. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.d.ts +1 -1
  110. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.js +57 -72
  111. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.js +23 -23
  112. package/dist/components/flows/wizard/wizard.js +41 -38
  113. package/dist/components/forms/date-picker/date-input-behavior.d.ts +7 -0
  114. package/dist/components/forms/date-picker/date-input-behavior.js +28 -24
  115. package/dist/components/forms/date-picker/date-picker-shell.d.ts +13 -0
  116. package/dist/components/forms/date-picker/date-picker-shell.js +31 -0
  117. package/dist/components/forms/date-picker/date-picker.js +187 -167
  118. package/dist/components/forms/date-picker/date-picker.types.d.ts +90 -43
  119. package/dist/components/forms/date-picker/date-range-picker.js +273 -224
  120. package/dist/components/forms/date-picker/fiscal-pass-through.d.ts +13 -0
  121. package/dist/components/forms/date-picker/fiscal-pass-through.js +17 -0
  122. package/dist/components/forms/date-picker/fiscal-period-format.d.ts +9 -0
  123. package/dist/components/forms/date-picker/fiscal-period-format.js +50 -0
  124. package/dist/components/forms/date-picker/index.d.ts +12 -0
  125. package/dist/components/forms/date-picker/index.js +19 -7
  126. package/dist/components/forms/date-picker/month-picker.js +225 -182
  127. package/dist/components/forms/date-picker/month-range-picker.js +134 -110
  128. package/dist/components/forms/date-picker/multi-date-picker.js +77 -56
  129. package/dist/components/forms/date-picker/multi-month-picker.js +78 -57
  130. package/dist/components/forms/date-picker/multi-quarter-picker.d.ts +3 -0
  131. package/dist/components/forms/date-picker/multi-quarter-picker.js +177 -0
  132. package/dist/components/forms/date-picker/multi-week-picker.js +81 -70
  133. package/dist/components/forms/date-picker/multi-year-picker.d.ts +3 -0
  134. package/dist/components/forms/date-picker/multi-year-picker.js +179 -0
  135. package/dist/components/forms/date-picker/quarter-picker.d.ts +3 -0
  136. package/dist/components/forms/date-picker/quarter-picker.js +176 -0
  137. package/dist/components/forms/date-picker/quarter-range-picker.d.ts +3 -0
  138. package/dist/components/forms/date-picker/quarter-range-picker.js +177 -0
  139. package/dist/components/forms/date-picker/week-picker.js +148 -137
  140. package/dist/components/forms/date-picker/week-range-picker.js +216 -205
  141. package/dist/components/forms/date-picker/year-picker.d.ts +3 -0
  142. package/dist/components/forms/date-picker/year-picker.js +176 -0
  143. package/dist/components/forms/date-picker/year-range-picker.d.ts +3 -0
  144. package/dist/components/forms/date-picker/year-range-picker.js +179 -0
  145. package/dist/components/layout/horizontal-scroller/horizontal-scroller.js +35 -53
  146. package/dist/form-react/Fields/DateInputField.js +63 -58
  147. package/dist/form-react/Fields/DateRangeField.js +42 -37
  148. package/dist/form-react/Fields/MonthRangeField.js +50 -45
  149. package/dist/form-react/Fields/MultiWeekPickerField.js +7 -7
  150. package/dist/form-react/Fields/WeekRangePicker.js +44 -45
  151. package/dist/form-react/components/FieldRenderer.js +21 -23
  152. package/dist/form-react/registry/defaultFieldRegistrations.d.ts +9 -1
  153. package/dist/form-react/registry/defaultFieldRegistrations.js +11 -12
  154. package/dist/form-react/registry/resolveFieldComponent.d.ts +3 -2
  155. package/dist/form-react/registry/resolveFieldComponent.js +9 -133
  156. package/dist/form-react/types/fields.types.d.ts +22 -7
  157. package/dist/form-react/utils/date.utils.d.ts +3 -1
  158. package/dist/form-react/utils/date.utils.js +82 -53
  159. package/dist/i18n/defaultMessages.d.ts +29 -1
  160. package/dist/i18n/defaultMessages.js +54 -27
  161. package/dist/i18n/locales/de.js +31 -4
  162. package/dist/i18n/locales/es.js +31 -4
  163. package/dist/i18n/locales/hi.js +31 -4
  164. package/dist/i18n/locales/kn.js +31 -4
  165. package/dist/impact-nova-components.css +379 -3
  166. package/dist/impact-nova.css +1 -1
  167. package/dist/index.js +528 -516
  168. package/dist/lib/fiscal-calendar/build-year.d.ts +8 -0
  169. package/dist/lib/fiscal-calendar/build-year.js +173 -0
  170. package/dist/lib/fiscal-calendar/civil-date.d.ts +21 -0
  171. package/dist/lib/fiscal-calendar/civil-date.js +94 -0
  172. package/dist/lib/fiscal-calendar/index.d.ts +10 -0
  173. package/dist/lib/fiscal-calendar/index.js +40 -0
  174. package/dist/lib/fiscal-calendar/lookup.d.ts +4 -0
  175. package/dist/lib/fiscal-calendar/lookup.js +70 -0
  176. package/dist/lib/fiscal-calendar/presets.d.ts +8 -0
  177. package/dist/lib/fiscal-calendar/presets.js +99 -0
  178. package/dist/lib/fiscal-calendar/selection.d.ts +18 -0
  179. package/dist/lib/fiscal-calendar/selection.js +32 -0
  180. package/dist/lib/fiscal-calendar/types.d.ts +145 -0
  181. package/dist/lib/fiscal-calendar/types.js +10 -0
  182. package/dist/lib/fiscal-calendar/week-selection.d.ts +22 -0
  183. package/dist/lib/fiscal-calendar/week-selection.js +107 -0
  184. package/dist/lib/guidance/engine/guidance-engine.d.ts +7 -5
  185. package/dist/lib/guidance/engine/guidance-engine.js +115 -47
  186. package/dist/lib/guidance/triggers/trigger-registry.js +6 -6
  187. package/dist/lib/guidance/types/guidance.types.d.ts +11 -1
  188. package/dist/llms/rules/installation.js +1 -1
  189. package/dist/llms/rules/requirements.js +1 -1
  190. package/package.json +5 -1
  191. package/dist/lib/fiscal-calendar.d.ts +0 -62
  192. package/dist/lib/fiscal-calendar.js +0 -99
@@ -0,0 +1,17 @@
1
+ function n(a) {
2
+ return {
3
+ calendarKind: a.calendarKind,
4
+ fiscalMode: a.fiscalMode,
5
+ granularity: a.granularity,
6
+ fiscalMonthPattern: a.fiscalMonthPattern,
7
+ fiscalYearStartMonth: a.fiscalYearStartMonth,
8
+ fiscalConfig: a.fiscalConfig,
9
+ ...a.weekStartsOn !== void 0 ? { weekStartsOn: a.weekStartsOn } : {},
10
+ showPresets: a.showPresets,
11
+ comparison: a.comparison,
12
+ onComparisonChange: a.onComparisonChange
13
+ };
14
+ }
15
+ export {
16
+ n as fiscalCalendarPassThrough
17
+ };
@@ -0,0 +1,9 @@
1
+ import { FiscalCalendarConfig } from '../../../lib/fiscal-calendar';
2
+ import { MonthSelection } from '../../data-display/calendar';
3
+ export declare function formatFiscalPeriod(month: MonthSelection): string | undefined;
4
+ export declare function looksLikeFiscalPeriodInput(raw: string): boolean;
5
+ export declare function parseFiscalPeriodInput(raw: string): {
6
+ period: number;
7
+ fy: number;
8
+ } | null;
9
+ export declare function monthSelectionFromFiscalInput(raw: string, fiscalConfig?: FiscalCalendarConfig): MonthSelection | null;
@@ -0,0 +1,50 @@
1
+ import { parseCivilDate as d, localDateFromCivil as l } from "../../../lib/fiscal-calendar/civil-date.js";
2
+ import { buildFiscalYear as a } from "../../../lib/fiscal-calendar/build-year.js";
3
+ import { formatFiscalPeriodInput as f } from "../../data-display/calendar/calendar-fiscal-labels.js";
4
+ const p = /^P(\d{1,2})\s+FY(\d{2}|\d{4})$/i;
5
+ function F(t) {
6
+ if (!(t.period == null || t.fy == null))
7
+ return f(t.period, t.fy);
8
+ }
9
+ function P(t) {
10
+ return /^P/i.test(t.trim());
11
+ }
12
+ function s(t) {
13
+ const e = t.trim().match(p);
14
+ if (!e) return null;
15
+ const r = Number(e[1]);
16
+ let o = Number(e[2]);
17
+ return o < 100 && (o += 2e3), r < 1 || r > 13 ? null : { period: r, fy: o };
18
+ }
19
+ function I(t, e) {
20
+ const r = s(t);
21
+ if (!r) return null;
22
+ if (!e)
23
+ return {
24
+ year: r.fy,
25
+ month: Math.min(11, r.period - 1),
26
+ fy: r.fy,
27
+ period: r.period
28
+ };
29
+ try {
30
+ const i = a(e, r.fy).periods.find((u) => u.period === r.period);
31
+ if (!i) return null;
32
+ const n = d(i.start);
33
+ return {
34
+ year: n.y,
35
+ month: n.m - 1,
36
+ fy: i.fy,
37
+ period: i.period,
38
+ start: l(i.start),
39
+ end: l(i.end)
40
+ };
41
+ } catch {
42
+ return null;
43
+ }
44
+ }
45
+ export {
46
+ F as formatFiscalPeriod,
47
+ P as looksLikeFiscalPeriodInput,
48
+ I as monthSelectionFromFiscalInput,
49
+ s as parseFiscalPeriodInput
50
+ };
@@ -16,3 +16,15 @@ export { MultiMonthPicker } from './multi-month-picker';
16
16
  export type { MultiMonthPickerProps } from './date-picker.types';
17
17
  export { MultiWeekPicker } from './multi-week-picker';
18
18
  export type { MultiWeekPickerProps } from './date-picker.types';
19
+ export { QuarterPicker } from './quarter-picker';
20
+ export type { QuarterPickerProps } from './date-picker.types';
21
+ export { QuarterRangePicker } from './quarter-range-picker';
22
+ export type { QuarterRangePickerProps } from './date-picker.types';
23
+ export { MultiQuarterPicker } from './multi-quarter-picker';
24
+ export type { MultiQuarterPickerProps } from './date-picker.types';
25
+ export { YearPicker } from './year-picker';
26
+ export type { YearPickerProps } from './date-picker.types';
27
+ export { YearRangePicker } from './year-range-picker';
28
+ export type { YearRangePickerProps } from './date-picker.types';
29
+ export { MultiYearPicker } from './multi-year-picker';
30
+ export type { MultiYearPickerProps } from './date-picker.types';
@@ -4,17 +4,29 @@ import { MonthRangePicker as c } from "./month-range-picker.js";
4
4
  import { DateRangePicker as m } from "./date-range-picker.js";
5
5
  import { WeekPicker as x } from "./week-picker.js";
6
6
  import { WeekRangePicker as a } from "./week-range-picker.js";
7
- import { MultiDatePicker as M } from "./multi-date-picker.js";
8
- import { MultiMonthPicker as h } from "./multi-month-picker.js";
9
- import { MultiWeekPicker as u } from "./multi-week-picker.js";
7
+ import { MultiDatePicker as u } from "./multi-date-picker.js";
8
+ import { MultiMonthPicker as g } from "./multi-month-picker.js";
9
+ import { MultiWeekPicker as R } from "./multi-week-picker.js";
10
+ import { QuarterPicker as D } from "./quarter-picker.js";
11
+ import { QuarterRangePicker as W } from "./quarter-range-picker.js";
12
+ import { MultiQuarterPicker as b } from "./multi-quarter-picker.js";
13
+ import { YearPicker as j } from "./year-picker.js";
14
+ import { YearRangePicker as s } from "./year-range-picker.js";
15
+ import { MultiYearPicker as w } from "./multi-year-picker.js";
10
16
  export {
11
17
  o as DatePicker,
12
18
  m as DateRangePicker,
13
19
  i as MonthPicker,
14
20
  c as MonthRangePicker,
15
- M as MultiDatePicker,
16
- h as MultiMonthPicker,
17
- u as MultiWeekPicker,
21
+ u as MultiDatePicker,
22
+ g as MultiMonthPicker,
23
+ b as MultiQuarterPicker,
24
+ R as MultiWeekPicker,
25
+ w as MultiYearPicker,
26
+ D as QuarterPicker,
27
+ W as QuarterRangePicker,
18
28
  x as WeekPicker,
19
- a as WeekRangePicker
29
+ a as WeekRangePicker,
30
+ j as YearPicker,
31
+ s as YearRangePicker
20
32
  };
@@ -1,224 +1,267 @@
1
- import { jsxs as P, jsx as s } from "react/jsx-runtime";
1
+ import { jsx as l, jsxs as w } from "react/jsx-runtime";
2
2
  import * as o from "react";
3
- import { Cross as ne, CalendarMonth as re } from "impact-nova-icons";
4
- import { cn as oe } from "../../../lib/utils.js";
5
- import { usePickerDismissActionsRef as se, usePickerFooterDismissNudge as ie, isDateInputInvalid as ae, resolveSingleValueDismissFlash as ce, compareMonthSelection as le, handlePickerSurfacePointerDown as pe, maskDateInput as fe, parseDateInput as ue, resolveDateInputOnEnter as de, resolveDateInputOnBlur as me } from "./date-input-behavior.js";
6
- import { Input as he } from "../input/input.js";
7
- import { Popover as ye, PopoverAnchor as ge, PopoverContent as Me } from "../../feedback/popover/popover.js";
8
- import { Calendar as De } from "../../data-display/calendar/calendar.js";
9
- import { Tooltip as T, TooltipTrigger as O, TooltipContent as V } from "../../feedback/tooltip/tooltip.js";
10
- import { useImpactNovaI18n as ke } from "../../../i18n/use-impact-nova-i18n.js";
11
- import { coerceSingleMonthApply as Pe, coerceSingleMonth as Ie } from "./calendar-selection-adapters.js";
12
- import { buildDateBoundsMatcher as Ce } from "../../../lib/date-bounds-matcher.js";
13
- const h = (t) => `${(t.month + 1).toString().padStart(2, "0")}/${t.year}`, Se = o.forwardRef(
3
+ import { Cross as ye, CalendarMonth as ge } from "impact-nova-icons";
4
+ import { cn as ke } from "../../../lib/utils.js";
5
+ import { usePickerDismissActionsRef as De, usePickerFooterDismissNudge as Me, isDateInputInvalid as K, resolveSingleValueDismissFlash as Pe, compareMonthSelection as Ie, handlePickerSurfacePointerDown as Se, maskDateInput as Ce, parseDateInput as xe, resolveDateInputOnEnter as Re, resolveDateInputOnBlur as be } from "./date-input-behavior.js";
6
+ import { Input as Fe } from "../input/input.js";
7
+ import { Calendar as we } from "../../data-display/calendar/calendar.js";
8
+ import { Tooltip as $, TooltipTrigger as q, TooltipContent as G } from "../../feedback/tooltip/tooltip.js";
9
+ import { useImpactNovaI18n as Ne } from "../../../i18n/use-impact-nova-i18n.js";
10
+ import { coerceSingleMonthApply as Te, coerceSingleMonth as Ae } from "./calendar-selection-adapters.js";
11
+ import { buildDateBoundsMatcher as Ee } from "../../../lib/date-bounds-matcher.js";
12
+ import { fiscalCalendarPassThrough as Oe } from "./fiscal-pass-through.js";
13
+ import { DatePickerShell as Ve } from "./date-picker-shell.js";
14
+ import { looksLikeFiscalPeriodInput as N, monthSelectionFromFiscalInput as T, formatFiscalPeriod as Be } from "./fiscal-period-format.js";
15
+ import { resolveFiscalConfig as je } from "../../data-display/calendar/calendar-config.js";
16
+ const y = (t) => {
17
+ const s = Be(t);
18
+ return s || `${(t.month + 1).toString().padStart(2, "0")}/${t.year}`;
19
+ }, Le = o.forwardRef(
14
20
  ({
15
21
  value: t,
16
- onChange: p,
17
- placeholder: B,
18
- minDate: F,
19
- maxDate: j,
20
- startMonth: v,
21
- endMonth: K,
22
- showFooter: c = !0,
23
- disabled: i,
24
- className: Y,
25
- onBlur: z,
26
- ...H
27
- }, $) => {
28
- const { t: u } = ke(), L = B ?? u("datePicker.selectMonth"), I = o.useRef(null), x = o.useRef(null);
29
- o.useImperativeHandle($, () => I.current);
30
- const [r, R] = o.useState(!1), f = o.useCallback(() => {
31
- R(!1);
32
- }, []), d = (e) => {
33
- if (!i) {
22
+ onChange: s,
23
+ placeholder: A,
24
+ minDate: J,
25
+ maxDate: Q,
26
+ startMonth: U,
27
+ endMonth: W,
28
+ showFooter: p = !0,
29
+ disabled: f,
30
+ className: X,
31
+ onBlur: Z,
32
+ calendarKind: S,
33
+ fiscalMode: E,
34
+ granularity: _,
35
+ fiscalMonthPattern: O,
36
+ fiscalYearStartMonth: V,
37
+ fiscalConfig: B,
38
+ showPresets: ee,
39
+ ...te
40
+ }, ne) => {
41
+ const { t: d } = Ne(), re = A ?? d("datePicker.selectMonth"), C = o.useRef(null), j = o.useRef(null);
42
+ o.useImperativeHandle(ne, () => C.current);
43
+ const [r, L] = o.useState(!1), u = o.useCallback(() => {
44
+ L(!1);
45
+ }, []), h = (e) => {
46
+ if (!f) {
34
47
  if (e) {
35
- R(!0);
48
+ L(!0);
36
49
  return;
37
50
  }
38
- f();
51
+ u();
39
52
  }
40
- }, b = se(), { footerFlashKey: q, footerFlashTarget: G, popoverHandlers: J } = ie(c, r, b, x), [M, a] = o.useState(t), [m, l] = o.useState(t ? h(t) : ""), [Q, C] = o.useState(t ? new Date(t.year, t.month) : /* @__PURE__ */ new Date());
53
+ }, Y = De(), { footerFlashKey: oe, footerFlashTarget: ie, popoverHandlers: se } = Me(p, r, Y, j), [M, i] = o.useState(t), [c, a] = o.useState(t ? y(t) : ""), [ce, P] = o.useState(t ? new Date(t.year, t.month) : /* @__PURE__ */ new Date());
41
54
  o.useEffect(() => {
42
- r || (l(t ? h(t) : ""), a(t));
55
+ r || (a(t ? y(t) : ""), i(t));
43
56
  }, [r, t]), o.useEffect(() => {
44
- r && (a(t), C(t ? new Date(t.year, t.month) : /* @__PURE__ */ new Date()), l(t ? h(t) : ""));
57
+ r && (i(t), P(t ? new Date(t.year, t.month) : /* @__PURE__ */ new Date()), a(t ? y(t) : ""));
45
58
  }, [r, t]);
46
- const U = (e) => {
47
- const n = Ie(e);
48
- a(n), n && l(h(n)), c || (p?.(n), f());
49
- }, w = (e) => {
50
- const n = Pe(e, M);
51
- p?.(n), f();
52
- }, S = () => {
53
- a(t), l(t ? h(t) : ""), f();
54
- }, N = () => {
55
- a(void 0), l(""), p?.(void 0), c || f();
56
- }, y = "MM/yyyy", D = t ? h(t) : "", g = o.useRef(!1), W = (e) => {
57
- const n = fe(e.target.value, y, m);
58
- if (l(n), n === "") {
59
- a(void 0), c || p?.(void 0);
59
+ const ae = (e) => {
60
+ const n = Ae(e);
61
+ i(n), n && a(y(n)), p || (s?.(n), u());
62
+ }, v = (e) => {
63
+ const n = Te(e, M);
64
+ s?.(n), u();
65
+ }, x = () => {
66
+ i(t), a(t ? y(t) : ""), u();
67
+ }, z = () => {
68
+ i(void 0), a(""), s?.(void 0), p || u();
69
+ }, le = Oe({
70
+ calendarKind: S,
71
+ fiscalMode: E,
72
+ granularity: _,
73
+ fiscalMonthPattern: O,
74
+ fiscalYearStartMonth: V,
75
+ fiscalConfig: B,
76
+ showPresets: ee
77
+ }), R = je({
78
+ fiscalConfig: B,
79
+ calendarKind: S,
80
+ fiscalMode: E,
81
+ fiscalMonthPattern: O,
82
+ fiscalYearStartMonth: V
83
+ }), b = S === "fiscal", g = "MM/yyyy", k = t ? y(t) : "", D = o.useRef(!1), pe = (e) => {
84
+ const n = e.target.value;
85
+ if (b && N(n)) {
86
+ a(n);
87
+ const m = T(n, R);
88
+ m && (i(m), P(new Date(m.year, m.month, 1)), p || s?.(m));
60
89
  return;
61
90
  }
62
- const { parsed: k, isValid: te } = ue(n, y);
63
- if (te && k) {
64
- const E = { month: k.getMonth(), year: k.getFullYear() };
65
- a(E), C(k), c || p?.(E);
91
+ const F = Ce(n, g, c);
92
+ if (a(F), F === "") {
93
+ i(void 0), p || s?.(void 0);
94
+ return;
95
+ }
96
+ const { parsed: I, isValid: he } = xe(F, g);
97
+ if (he && I) {
98
+ const m = { month: I.getMonth(), year: I.getFullYear() };
99
+ i(m), P(I), p || s?.(m);
66
100
  }
67
- }, X = () => {
101
+ }, fe = () => {
68
102
  if (r) return;
69
- const e = me(m, y, D);
103
+ if (b && N(c)) {
104
+ const n = T(c, R);
105
+ if (n) {
106
+ a(y(n)), i(n), p || s?.(n);
107
+ return;
108
+ }
109
+ a(k), i(t);
110
+ return;
111
+ }
112
+ const e = be(c, g, k);
70
113
  if (e.resetToCommitted) {
71
- l(D), a(t);
114
+ a(k), i(t);
72
115
  return;
73
116
  }
74
117
  if (e.parsed) {
75
118
  const n = { month: e.parsed.getMonth(), year: e.parsed.getFullYear() };
76
- l(e.display), a(n), c || p?.(n);
119
+ a(e.display), i(n), p || s?.(n);
77
120
  return;
78
121
  }
79
- l(D), a(t);
80
- }, Z = () => {
81
- if (r && c) {
82
- w();
122
+ a(k), i(t);
123
+ }, ue = () => {
124
+ if (r && p) {
125
+ v();
83
126
  return;
84
127
  }
85
- const e = de(m, y);
128
+ const e = Re(c, g);
86
129
  if (e.parsed) {
87
130
  const n = {
88
131
  month: e.parsed.getMonth(),
89
132
  year: e.parsed.getFullYear()
90
133
  };
91
- c && (p?.(n), f());
134
+ p && (s?.(n), u());
92
135
  return;
93
136
  }
94
- r || (g.current = !0, d(!0));
95
- }, A = D !== m, _ = ae(m, y), ee = o.useCallback(
96
- () => ce(
137
+ r || (D.current = !0, h(!0));
138
+ }, H = k !== c, me = b ? N(c) ? T(c, R) == null && c !== "" : K(c, g) : K(c, g), de = o.useCallback(
139
+ () => Pe(
97
140
  M,
98
141
  t,
99
- (e, n) => le(e, n) === 0
142
+ (e, n) => Ie(e, n) === 0
100
143
  ),
101
144
  [M, t]
102
145
  );
103
146
  return o.useLayoutEffect(() => {
104
- b.current = {
105
- onDismiss: S,
106
- resolveFlash: ee
147
+ Y.current = {
148
+ onDismiss: x,
149
+ resolveFlash: de
107
150
  };
108
- }), /* @__PURE__ */ P(ye, { open: i ? !1 : r, onOpenChange: d, children: [
109
- /* @__PURE__ */ s(ge, { asChild: !0, children: /* @__PURE__ */ s(
110
- "div",
111
- {
112
- ref: x,
113
- "data-component": "month-picker",
114
- "data-state": r ? "open" : "closed",
115
- "data-pending": A || void 0,
116
- onPointerDown: (e) => pe({
117
- disabled: i,
118
- event: e,
119
- onOpen: () => d(!0),
120
- focusField: () => I.current?.focus()
121
- }),
122
- children: /* @__PURE__ */ s(
123
- he,
124
- {
125
- ref: I,
126
- value: m,
127
- onChange: W,
128
- onBlur: (e) => {
129
- X(), z?.(e);
130
- },
131
- onClick: () => !i && d(!0),
132
- onKeyDown: (e) => {
133
- e.key === "Enter" && !i && (e.preventDefault(), Z()), e.key === "ArrowDown" && !r && !i && (e.preventDefault(), g.current = !0, d(!0)), e.key === "Escape" && r && (e.preventDefault(), S());
134
- },
135
- placeholder: r ? u("datePicker.monthYearFormat") : L,
136
- disabled: i,
137
- "data-form-control": "input",
138
- className: oe(
139
- "cursor-pointer",
140
- _ ? "text-destructive" : A ? "text-content-placeholder" : "",
141
- Y
142
- ),
143
- suffix: /* @__PURE__ */ P("div", { className: "flex items-center gap-1", children: [
144
- t && !i && /* @__PURE__ */ P(T, { children: [
145
- /* @__PURE__ */ s(O, { asChild: !0, children: /* @__PURE__ */ s(
146
- "button",
147
- {
148
- type: "button",
149
- tabIndex: 0,
150
- "aria-label": u("calendar.clear"),
151
- onClick: (e) => {
152
- e.stopPropagation(), N();
153
- },
154
- className: "inline-flex size-4 items-center justify-center bg-transparent border-none p-0 cursor-pointer",
155
- children: /* @__PURE__ */ s(ne, { className: "size-3 hover:text-content" })
156
- }
157
- ) }),
158
- /* @__PURE__ */ s(V, { variant: "tertiary", side: "top", children: u("calendar.clear") })
151
+ }), /* @__PURE__ */ l(
152
+ Ve,
153
+ {
154
+ open: r,
155
+ disabled: f,
156
+ ariaLabel: d("datePicker.selectMonth"),
157
+ onOpenChange: h,
158
+ onOpenAutoFocus: (e) => {
159
+ D.current || e.preventDefault(), D.current = !1;
160
+ },
161
+ popoverHandlers: se,
162
+ trigger: /* @__PURE__ */ l(
163
+ "div",
164
+ {
165
+ ref: j,
166
+ "data-component": "month-picker",
167
+ "data-state": r ? "open" : "closed",
168
+ "data-pending": H || void 0,
169
+ onPointerDown: (e) => Se({
170
+ disabled: f,
171
+ event: e,
172
+ onOpen: () => h(!0),
173
+ focusField: () => C.current?.focus()
174
+ }),
175
+ children: /* @__PURE__ */ l(
176
+ Fe,
177
+ {
178
+ ref: C,
179
+ value: c,
180
+ onChange: pe,
181
+ onBlur: (e) => {
182
+ fe(), Z?.(e);
183
+ },
184
+ onClick: () => !f && h(!0),
185
+ onKeyDown: (e) => {
186
+ e.key === "Enter" && !f && (e.preventDefault(), ue()), e.key === "ArrowDown" && !r && !f && (e.preventDefault(), D.current = !0, h(!0)), e.key === "Escape" && r && (e.preventDefault(), x());
187
+ },
188
+ placeholder: r ? d("datePicker.monthYearFormat") : re,
189
+ disabled: f,
190
+ "data-form-control": "input",
191
+ className: ke(
192
+ "cursor-pointer",
193
+ me ? "text-destructive" : H ? "text-content-placeholder" : "",
194
+ X
195
+ ),
196
+ suffix: /* @__PURE__ */ w("div", { className: "flex items-center gap-1", children: [
197
+ t && !f && /* @__PURE__ */ w($, { children: [
198
+ /* @__PURE__ */ l(q, { asChild: !0, children: /* @__PURE__ */ l(
199
+ "button",
200
+ {
201
+ type: "button",
202
+ tabIndex: 0,
203
+ "aria-label": d("calendar.clear"),
204
+ onClick: (e) => {
205
+ e.stopPropagation(), z();
206
+ },
207
+ className: "inline-flex size-4 items-center justify-center bg-transparent border-none p-0 cursor-pointer",
208
+ children: /* @__PURE__ */ l(ye, { className: "size-3 hover:text-content" })
209
+ }
210
+ ) }),
211
+ /* @__PURE__ */ l(G, { variant: "tertiary", side: "top", children: d("calendar.clear") })
212
+ ] }),
213
+ /* @__PURE__ */ w($, { children: [
214
+ /* @__PURE__ */ l(q, { asChild: !0, children: /* @__PURE__ */ l(
215
+ "button",
216
+ {
217
+ type: "button",
218
+ tabIndex: 0,
219
+ "data-component": "calendar-trigger",
220
+ "aria-label": d("datePicker.selectMonth"),
221
+ onClick: (e) => {
222
+ e.stopPropagation(), f || (r ? u() : h(!0));
223
+ },
224
+ onKeyDown: (e) => {
225
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), e.stopPropagation(), f || (D.current = !0, r ? u() : h(!0)));
226
+ },
227
+ className: "inline-flex items-center justify-center bg-transparent border-none p-0 cursor-pointer",
228
+ children: /* @__PURE__ */ l(ge, { className: "h-4 w-4 text-secondary-foreground" })
229
+ }
230
+ ) }),
231
+ /* @__PURE__ */ l(G, { variant: "tertiary", side: "top", children: d("datePicker.selectMonth") })
232
+ ] })
159
233
  ] }),
160
- /* @__PURE__ */ P(T, { children: [
161
- /* @__PURE__ */ s(O, { asChild: !0, children: /* @__PURE__ */ s(
162
- "button",
163
- {
164
- type: "button",
165
- tabIndex: 0,
166
- "data-component": "calendar-trigger",
167
- "aria-label": u("datePicker.selectMonth"),
168
- onClick: (e) => {
169
- e.stopPropagation(), i || (r ? f() : d(!0));
170
- },
171
- onKeyDown: (e) => {
172
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), e.stopPropagation(), i || (g.current = !0, r ? f() : d(!0)));
173
- },
174
- className: "inline-flex items-center justify-center bg-transparent border-none p-0 cursor-pointer",
175
- children: /* @__PURE__ */ s(re, { className: "h-4 w-4 text-secondary-foreground" })
176
- }
177
- ) }),
178
- /* @__PURE__ */ s(V, { variant: "tertiary", side: "top", children: u("datePicker.selectMonth") })
179
- ] })
180
- ] }),
181
- ...H
182
- }
183
- )
184
- }
185
- ) }),
186
- /* @__PURE__ */ s(
187
- Me,
188
- {
189
- className: "w-auto p-0",
190
- align: "start",
191
- "aria-label": u("datePicker.selectMonth"),
192
- onOpenAutoFocus: (e) => {
193
- g.current || e.preventDefault(), g.current = !1;
194
- },
195
- ...J,
196
- children: /* @__PURE__ */ s(
197
- De,
198
- {
199
- pickerType: "month",
200
- monthMode: "single",
201
- selectedMonths: M,
202
- footerFlashKey: q,
203
- footerFlashTarget: G,
204
- onMonthSelect: U,
205
- month: Q,
206
- onMonthChange: C,
207
- disabled: Ce(F, j),
208
- startMonth: v,
209
- endMonth: K,
210
- showFooter: c,
211
- onApply: w,
212
- onCancel: S,
213
- onClear: N
214
- }
215
- )
216
- }
217
- )
218
- ] });
234
+ ...te
235
+ }
236
+ )
237
+ }
238
+ ),
239
+ children: /* @__PURE__ */ l(
240
+ we,
241
+ {
242
+ pickerType: "month",
243
+ monthMode: "single",
244
+ selectedMonths: M,
245
+ footerFlashKey: oe,
246
+ footerFlashTarget: ie,
247
+ onMonthSelect: ae,
248
+ month: ce,
249
+ onMonthChange: P,
250
+ disabled: Ee(J, Q),
251
+ startMonth: U,
252
+ endMonth: W,
253
+ showFooter: p,
254
+ onApply: v,
255
+ onCancel: x,
256
+ onClear: z,
257
+ ...le
258
+ }
259
+ )
260
+ }
261
+ );
219
262
  }
220
263
  );
221
- Se.displayName = "MonthPicker";
264
+ Le.displayName = "MonthPicker";
222
265
  export {
223
- Se as MonthPicker
266
+ Le as MonthPicker
224
267
  };