@nova-design-system/nova-react 3.9.1 → 3.10.0

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 (51) hide show
  1. package/dist/cjs/{constants-4faa1fae-BzFAKCkR.js → constants-23aaef7b-Cj2b-su0.js} +12 -0
  2. package/dist/cjs/{index-BtjpbnUr.js → index-Cm4m8MM1.js} +1396 -432
  3. package/dist/cjs/index.js +4 -1
  4. package/dist/cjs/{nv-accordion-item.entry-Dr_2iHhQ.js → nv-accordion-item.entry-CnpS6CGa.js} +2 -2
  5. package/dist/cjs/{nv-accordion.entry-CYVpcwuY.js → nv-accordion.entry-8UIjQG0P.js} +1 -1
  6. package/dist/cjs/{nv-alert.entry-C_H-R9wb.js → nv-alert.entry-96FaJ9yM.js} +8 -8
  7. package/dist/cjs/{nv-avatar.entry-BeSOqGvb.js → nv-avatar.entry-BcLkxe35.js} +7 -7
  8. package/dist/cjs/nv-badge_2.entry-CzDec_7j.js +206 -0
  9. package/dist/cjs/{nv-breadcrumb.entry-yQozUTFi.js → nv-breadcrumb.entry-BvnO7tGb.js} +2 -2
  10. package/dist/cjs/{nv-breadcrumbs.entry-Qar1fOI7.js → nv-breadcrumbs.entry-Du98f0lC.js} +1 -1
  11. package/dist/cjs/{nv-button.entry-M_c4r8PX.js → nv-button.entry-D8Ob5YDg.js} +8 -8
  12. package/dist/cjs/nv-buttongroup.entry-BGpQpMD_.js +195 -0
  13. package/dist/cjs/{nv-calendar.entry-DFE372aB.js → nv-calendar.entry-CAINTAPB.js} +120 -43
  14. package/dist/cjs/{nv-col.entry-Bi8pH33J.js → nv-col.entry-5trkPEIg.js} +2 -2
  15. package/dist/cjs/{nv-datagrid.entry-B-blFDg-.js → nv-datagrid.entry-DqbLtkI4.js} +9 -9
  16. package/dist/cjs/{nv-datagridcolumn.entry-CAzB7NtB.js → nv-datagridcolumn.entry-Dn1u3PFr.js} +2 -2
  17. package/dist/cjs/{nv-dialog.entry-Bdw3O22w.js → nv-dialog.entry-pibB_NBe.js} +3 -3
  18. package/dist/cjs/{nv-dialogfooter_2.entry-BTUrxVzn.js → nv-dialogfooter_2.entry-0MTTK7Y2.js} +5 -5
  19. package/dist/cjs/{nv-fieldcheckbox.entry-DNzC8s-J.js → nv-fieldcheckbox.entry-DBSUOWI_.js} +6 -6
  20. package/dist/cjs/{nv-fielddate.entry-BI8REINj.js → nv-fielddate.entry-DM6ap-c_.js} +7 -7
  21. package/dist/cjs/{nv-fielddaterange.entry-B7mtEV97.js → nv-fielddaterange.entry-DJEbpwlV.js} +7 -7
  22. package/dist/cjs/{nv-fielddropdown.entry-Cz7yuHTj.js → nv-fielddropdown.entry-COGswgIv.js} +4 -4
  23. package/dist/cjs/{nv-fielddropdownitem.entry-CH_C4Dr-.js → nv-fielddropdownitem.entry-m6TjyMp3.js} +2 -2
  24. package/dist/cjs/{nv-fieldmultiselect.entry-BqEdEUR0.js → nv-fieldmultiselect.entry-PhmD9JYp.js} +378 -28
  25. package/dist/cjs/{nv-fieldnumber.entry-BhRb8v1L.js → nv-fieldnumber.entry-dR0KzTa9.js} +4 -4
  26. package/dist/cjs/{nv-fieldpassword.entry-BL4T90zr.js → nv-fieldpassword.entry-CuQO_qjq.js} +4 -4
  27. package/dist/cjs/{nv-fieldradio.entry-D-x10Pri.js → nv-fieldradio.entry-UvL5fKFQ.js} +5 -5
  28. package/dist/cjs/{nv-fieldselect.entry-B-kynHlw.js → nv-fieldselect.entry-DKMYBCaJ.js} +6 -6
  29. package/dist/cjs/{nv-fieldslider.entry-D6X0LJKJ.js → nv-fieldslider.entry-tOUuTb46.js} +4 -4
  30. package/dist/cjs/{nv-fieldtext.entry-xR41AQcM.js → nv-fieldtext.entry-m9XbYLZW.js} +4 -4
  31. package/dist/cjs/{nv-fieldtextarea.entry-4mqhSSHM.js → nv-fieldtextarea.entry-DQpfF5ME.js} +4 -4
  32. package/dist/cjs/{nv-fieldtime.entry-S3r7RYwN.js → nv-fieldtime.entry-Pmt1E_Hm.js} +66 -66
  33. package/dist/cjs/{nv-icon.entry-C2t6pj-B.js → nv-icon.entry-C4VmFtRW.js} +9 -9
  34. package/dist/cjs/{nv-iconbutton_2.entry-Cv1d6ktl.js → nv-iconbutton_2.entry-Cc2xKJb5.js} +4 -4
  35. package/dist/cjs/{nv-menu.entry-J_Ytq1Kn.js → nv-menu.entry-B6kxLiip.js} +2 -2
  36. package/dist/cjs/{nv-menuitem.entry-DpOO9tMo.js → nv-menuitem.entry-rYbCnY7o.js} +2 -2
  37. package/dist/cjs/{nv-popover.entry-BZJHJXSA.js → nv-popover.entry-CJJjW4Pv.js} +2 -2
  38. package/dist/cjs/{nv-row.entry-D4qBjtBv.js → nv-row.entry-BMMoJvjb.js} +2 -2
  39. package/dist/cjs/{nv-stack.entry-DOc6ZvMZ.js → nv-stack.entry-DI6QCSbS.js} +2 -2
  40. package/dist/cjs/{nv-table.entry-7-TxQSlH.js → nv-table.entry-BPWQIWyg.js} +3 -3
  41. package/dist/cjs/{nv-tablecolumn.entry-Bd4xWDYD.js → nv-tablecolumn.entry-De81f1e9.js} +1 -1
  42. package/dist/cjs/{nv-toggle.entry-DJmXXavz.js → nv-toggle.entry-BTNtBXGR.js} +4 -4
  43. package/dist/cjs/nv-togglebutton.entry-vWKwWiQe.js +55 -0
  44. package/dist/cjs/nv-togglebuttongroup.entry-BmpHIXnd.js +169 -0
  45. package/dist/cjs/{nv-tooltip.entry-D9nl_ejz.js → nv-tooltip.entry-BJHXydMC.js} +2 -2
  46. package/dist/generated/components.js +24 -0
  47. package/dist/generated/components.server.js +41 -4
  48. package/dist/types/generated/components.d.ts +16 -0
  49. package/dist/types/generated/components.server.d.ts +16 -0
  50. package/package.json +1 -1
  51. package/dist/cjs/nv-badge_2.entry-BGWUswPo.js +0 -206
@@ -0,0 +1,195 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-Cm4m8MM1.js');
4
+ require('react');
5
+
6
+ /**
7
+ * Utility functions for nv-buttongroup.
8
+ */
9
+ /**
10
+ * Recursively finds the first button or link element within a container
11
+ * @param {HTMLElement} element - The HTML element to search within
12
+ * @returns {HTMLElement | null} The first button or link element found, or null if none exists
13
+ */
14
+ function findFirstButtonOrLink(element) {
15
+ // Check if the element itself is a button or link
16
+ const tagName = element.tagName.toLowerCase();
17
+ if (tagName === 'nv-button' ||
18
+ tagName === 'nv-iconbutton' ||
19
+ tagName === 'a') {
20
+ return element;
21
+ }
22
+ // Recursively search through children
23
+ for (const child of Array.from(element.children)) {
24
+ const found = findFirstButtonOrLink(child);
25
+ if (found) {
26
+ return found;
27
+ }
28
+ }
29
+ return null;
30
+ }
31
+ /**
32
+ * Forwards the buttongroup properties to all child elements
33
+ * @param {HTMLElement} containerElement - The container element containing the buttons
34
+ * @param {object} props - The properties to forward to children
35
+ * @param {string} props.size - The size property to apply
36
+ * @param {string} props.emphasis - The emphasis property to apply
37
+ * @param {boolean} props.fluid - Whether the buttons should be fluid
38
+ */
39
+ function forwardPropsToChildren(containerElement, props) {
40
+ const children = Array.from(containerElement.children);
41
+ const buttonElements = [];
42
+ // Find the first button or link in each direct child
43
+ children.forEach(child => {
44
+ const buttonOrLink = findFirstButtonOrLink(child);
45
+ if (buttonOrLink) {
46
+ buttonElements.push(buttonOrLink);
47
+ }
48
+ });
49
+ buttonElements.forEach(element => {
50
+ element.classList.remove('first', 'last', 'group-item');
51
+ });
52
+ // Apply properties and positional classes to found elements
53
+ buttonElements.forEach((element, index) => {
54
+ const isFirst = index === 0;
55
+ const isLast = index === buttonElements.length - 1;
56
+ const tagName = element.tagName.toLowerCase();
57
+ // Add positional classes
58
+ if (isFirst) {
59
+ element.classList.add('first');
60
+ }
61
+ if (isLast) {
62
+ element.classList.add('last');
63
+ }
64
+ // Add group item classes
65
+ element.classList.add('group-item');
66
+ // Forward props to nv-button elements
67
+ if (tagName === 'nv-button' || tagName === 'nv-iconbutton') {
68
+ element.setAttribute('size', props.size);
69
+ element.setAttribute('emphasis', props.emphasis);
70
+ if (props.fluid) {
71
+ element.setAttribute('fluid', '');
72
+ }
73
+ else {
74
+ element.removeAttribute('fluid');
75
+ }
76
+ }
77
+ // Forward props to anchor elements by adding CSS classes
78
+ if (tagName === 'a') {
79
+ element.classList.add('nv-button');
80
+ element.classList.add(`size-${props.size}`);
81
+ element.classList.add(`emphasis-${props.emphasis}`);
82
+ if (props.fluid) {
83
+ element.classList.add('fluid');
84
+ }
85
+ else {
86
+ element.classList.remove('fluid');
87
+ }
88
+ }
89
+ });
90
+ }
91
+
92
+ const nvButtongroupCss = "nv-buttongroup{display:flex}nv-buttongroup[emphasis=high]{gap:1px}nv-buttongroup[emphasis=low] .group-item,nv-buttongroup[emphasis=low] .group-item:hover{border:1px solid var(--components-button-low-text)}nv-buttongroup[emphasis=lower] .group-item,nv-buttongroup[emphasis=lower] .group-item:hover{border:1px solid var(--components-button-lower-text)}nv-buttongroup:not([orientation=vertical]) .group-item:not(.last):not(.first){border-radius:0}nv-buttongroup:not([orientation=vertical]) .group-item.first{border-top-right-radius:0;border-bottom-right-radius:0}nv-buttongroup:not([orientation=vertical]) .group-item.last{border-top-left-radius:0;border-bottom-left-radius:0}nv-buttongroup:not([orientation=vertical])[emphasis=medium] .group-item:not(.last){border-right:none}nv-buttongroup:not([orientation=vertical])[emphasis=low] .group-item:not(.last){border-right:none}nv-buttongroup:not([orientation=vertical])[emphasis=low] .group-item:not(.first){border-left:none}nv-buttongroup:not([orientation=vertical])[emphasis=lower] .group-item:not(.last){border-right:none}nv-buttongroup:not([orientation=vertical])[emphasis=lower] .group-item:not(.first){border-left:none}nv-buttongroup[orientation=vertical]{flex-direction:column;align-items:stretch;width:fit-content}nv-buttongroup[orientation=vertical] .group-item{width:unset;display:flex}nv-buttongroup[orientation=vertical] .group-item:not(.last):not(.first){border-radius:0}nv-buttongroup[orientation=vertical] .group-item.first{border-bottom-left-radius:0;border-bottom-right-radius:0}nv-buttongroup[orientation=vertical] .group-item.last{border-top-left-radius:0;border-top-right-radius:0}nv-buttongroup[orientation=vertical][emphasis=medium] .group-item:not(.last){border-bottom:none}nv-buttongroup[orientation=vertical][emphasis=low] .group-item:not(.last){border-bottom:none}nv-buttongroup[orientation=vertical][emphasis=low] .group-item:not(.first){border-top:none}nv-buttongroup[orientation=vertical][emphasis=lower] .group-item:not(.last){border-bottom:none}nv-buttongroup[orientation=vertical][emphasis=lower] .group-item:not(.first){border-top:none}";
93
+ const NvButtongroupStyle0 = nvButtongroupCss;
94
+
95
+ const NvButtongroup = class {
96
+ constructor(hostRef) {
97
+ index.registerInstance(this, hostRef);
98
+ /****************************************************************************/
99
+ //#region PROPERTIES
100
+ /**
101
+ * Determines how large or small all the buttons appear, allowing for
102
+ * customization of the button's dimensions to fit different design
103
+ * specifications and user needs.
104
+ */
105
+ this.size = 'md';
106
+ /**
107
+ * Adjusts the emphasis of all the buttons to make it more or less visually
108
+ * prominent to users. Use this to draw attention to important actions or
109
+ * reduce focus on less critical ones
110
+ */
111
+ this.emphasis = 'medium';
112
+ /**
113
+ * Allows the button group to stretch and fill the entire width of its
114
+ * container.
115
+ */
116
+ this.fluid = false;
117
+ /**
118
+ * Determines the orientation of the button group. When enabled, the buttons
119
+ * are stacked vertically rather than aligned side by side.
120
+ */
121
+ this.orientation = 'horizontal';
122
+ //#endregion PROPERTIES
123
+ /****************************************************************************/
124
+ //#region METHODS
125
+ /**
126
+ * Forwards the buttongroup properties to all child elements
127
+ */
128
+ this.forwardPropsToChildren = () => {
129
+ forwardPropsToChildren(this.el, {
130
+ size: this.size,
131
+ emphasis: this.emphasis,
132
+ fluid: this.fluid,
133
+ });
134
+ };
135
+ /**
136
+ * Sets up the MutationObserver to watch for changes in child elements
137
+ */
138
+ this.setupMutationObserver = () => {
139
+ this.mutationObserver = new MutationObserver(mutations => {
140
+ mutations.forEach(mutation => {
141
+ if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
142
+ // Forward props to all children when changes occur
143
+ this.forwardPropsToChildren();
144
+ }
145
+ });
146
+ });
147
+ this.mutationObserver.observe(this.el, {
148
+ childList: true,
149
+ subtree: true,
150
+ });
151
+ };
152
+ }
153
+ //#endregion METHODS
154
+ /****************************************************************************/
155
+ //#region WATCHERS
156
+ onEmphasisChange() {
157
+ this.forwardPropsToChildren();
158
+ }
159
+ onSizeChange() {
160
+ this.forwardPropsToChildren();
161
+ }
162
+ onFluidChange() {
163
+ this.forwardPropsToChildren();
164
+ }
165
+ //#endregion WATCHERS
166
+ /****************************************************************************/
167
+ //#region LIFECYCLE
168
+ componentWillLoad() {
169
+ this.forwardPropsToChildren();
170
+ this.setupMutationObserver();
171
+ }
172
+ disconnectedCallback() {
173
+ if (this.mutationObserver) {
174
+ this.mutationObserver.disconnect();
175
+ }
176
+ }
177
+ //#endregion LIFECYCLE
178
+ /****************************************************************************/
179
+ //#region EVENTS
180
+ //#endregion EVENTS
181
+ /****************************************************************************/
182
+ //#region RENDER
183
+ render() {
184
+ return (index.h(index.Host, { key: 'd0322897a0312e7b55b087e4abfc94fcaf9f7747' }, index.h("slot", { key: '70afccf10fe728482096d3fce42083e9931e06bd' })));
185
+ }
186
+ get el() { return index.getElement(this); }
187
+ static get watchers() { return {
188
+ "emphasis": ["onEmphasisChange"],
189
+ "size": ["onSizeChange"],
190
+ "fluid": ["onFluidChange"]
191
+ }; }
192
+ };
193
+ NvButtongroup.style = NvButtongroupStyle0;
194
+
195
+ exports.nv_buttongroup = NvButtongroup;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BtjpbnUr.js');
4
- var constants4faa1fae = require('./constants-4faa1fae-BzFAKCkR.js');
3
+ var index = require('./index-Cm4m8MM1.js');
4
+ var constants23aaef7b = require('./constants-23aaef7b-Cj2b-su0.js');
5
5
  var _commonjsHelpers1789f0cf = require('./_commonjsHelpers-1789f0cf-BJu3ubxk.js');
6
6
  require('react');
7
7
 
@@ -239,6 +239,74 @@ function parseDate(dateInput, dateFormat) {
239
239
  }
240
240
  return parsed.toDate();
241
241
  }
242
+ /**
243
+ * Checks if a date is disabled.
244
+ * @param {Date} date - Date to check
245
+ * @param {string} min - Minimum date
246
+ * @param {string} max - Maximum date
247
+ * @param {Date[]} parsedDisabledDates - Parsed disabled dates
248
+ * @param {string} dateFormat - Date format
249
+ * @param {boolean} isUTCMode - Whether the dates are in UTC mode
250
+ * @returns {boolean} true if the date is disabled
251
+ */
252
+ function isDateDisabledUtil(date, min, max, parsedDisabledDates, dateFormat, isUTCMode) {
253
+ if (!date)
254
+ return true;
255
+ if (min) {
256
+ const minDate = parseDate(min, dateFormat);
257
+ if (minDate && date < minDate) {
258
+ return true;
259
+ }
260
+ }
261
+ if (max) {
262
+ const maxDate = parseDate(max, dateFormat);
263
+ if (maxDate && date > maxDate) {
264
+ return true;
265
+ }
266
+ }
267
+ return parsedDisabledDates.some(disabledDate => isSameDate(date, disabledDate, { isUTCMode }));
268
+ }
269
+ /**
270
+ * Checks if a date is within the hover range.
271
+ * @param {Date} date - The date to check.
272
+ * @param {Date} startDate - The start of the range.
273
+ * @param {Date | null} hoverDate - The hovered date.
274
+ * @returns {boolean} True if the date is in the hover range.
275
+ */
276
+ const isInHoverRange = (date, startDate, hoverDate) => {
277
+ if (!hoverDate || !startDate || !date) {
278
+ return false;
279
+ }
280
+ const start = startDate < hoverDate ? startDate : hoverDate;
281
+ const end = startDate < hoverDate ? hoverDate : startDate;
282
+ return date > start && date < end;
283
+ };
284
+ /**
285
+ * Checks if the hover range is valid (does not contain disabled dates).
286
+ * @param {Date} startDate - The start of the range.
287
+ * @param {Date | null} hoverDate - The hovered date.
288
+ * @param {string} min - The minimum allowed date.
289
+ * @param {string} max - The maximum allowed date.
290
+ * @param {Date[]} parsedDisabledDates - An array of disabled dates.
291
+ * @param {string} dateFormat - The date format for parsing.
292
+ * @param {boolean} isUTCMode - Flag for UTC mode.
293
+ * @returns {boolean} True if the hover range is valid.
294
+ */
295
+ const isHoverRangeValid = (startDate, hoverDate, min, max, parsedDisabledDates, dateFormat, isUTCMode) => {
296
+ if (!hoverDate || !startDate) {
297
+ return true;
298
+ }
299
+ const start = startDate < hoverDate ? startDate : hoverDate;
300
+ const end = startDate < hoverDate ? hoverDate : startDate;
301
+ const current = new Date(start);
302
+ while (current <= end) {
303
+ if (isDateDisabledUtil(current, min, max, parsedDisabledDates, dateFormat, isUTCMode)) {
304
+ return false;
305
+ }
306
+ current.setDate(current.getDate() + 1);
307
+ }
308
+ return true;
309
+ };
242
310
 
243
311
  /**
244
312
  * Renders a single day cell in the calendar grid
@@ -246,7 +314,7 @@ function parseDate(dateInput, dateFormat) {
246
314
  * @returns {JSX.Element} JSX element representing a day cell
247
315
  */
248
316
  const DayCell = props => {
249
- const { date, dayOfMonth, isCurrentMonth, isSelected, isInRange, isStart, isEnd, isToday, isDisabled, onClick, } = props;
317
+ const { date, dayOfMonth, isCurrentMonth, isSelected, isInRange, isStart, isEnd, isToday, isDisabled, onClick, onDayHover, isInHoverRange, isHoverRangeValid, } = props;
250
318
  // Build CSS classes for the day cell
251
319
  const dayClasses = [
252
320
  'day',
@@ -257,17 +325,12 @@ const DayCell = props => {
257
325
  isDisabled ? 'disabled' : '',
258
326
  !isCurrentMonth ? 'outside-month' : '',
259
327
  isToday ? 'is-today' : '',
328
+ isInHoverRange && isHoverRangeValid ? 'hover-range' : '',
329
+ isInHoverRange && !isHoverRangeValid ? 'hover-blocked' : '',
260
330
  ]
261
331
  .filter(Boolean)
262
332
  .join(' ');
263
- const handleClick = () => {
264
- if (!isDisabled && onClick) {
265
- onClick(date);
266
- }
267
- };
268
- return (
269
- // eslint-disable-next-line react/jsx-no-bind
270
- index.h("div", { class: dayClasses, onClick: handleClick, "aria-disabled": isDisabled }, dayOfMonth));
333
+ return (index.h("div", { class: dayClasses, "data-date": date.toISOString(), onClick: !isDisabled ? onClick : undefined, onMouseEnter: onDayHover, "aria-disabled": isDisabled }, dayOfMonth));
271
334
  };
272
335
 
273
336
  /**
@@ -392,10 +455,10 @@ const CalendarHeader = props => {
392
455
  * @returns {JSX.Element} JSX element representing the calendar grid
393
456
  */
394
457
  const CalendarGrid = props => {
395
- const { days, dayNames, selectionType, selectedDate, startDate, endDate, isUTCMode, onDayClick, isDateInRange, isToday, } = props;
458
+ const { days, dayNames, selectionType, selectedDate, startDate, endDate, isUTCMode, onDayClick, isDateInRange, isToday, onDayHover, onMouseLeave, hoverDate, isInHoverRange, isHoverRangeValid, } = props;
396
459
  return (index.h("div", { class: "days-container" },
397
460
  index.h("div", { class: "days-header" }, dayNames.map((day, index$1) => (index.h("div", { class: "day-header", key: `day-header-${index$1}` }, day)))),
398
- index.h("div", { class: "days-grid" }, days.map(day => {
461
+ index.h("div", { class: "days-grid", onMouseLeave: onMouseLeave }, days.map(day => {
399
462
  if (day.isBlank) {
400
463
  return index.h("div", { class: "day day-blank" });
401
464
  }
@@ -409,11 +472,13 @@ const CalendarGrid = props => {
409
472
  const isStart = isSameDate(date, startDate, { isUTCMode });
410
473
  const isEnd = isSameDate(date, endDate, { isUTCMode });
411
474
  const isTodayDate = isToday(date);
412
- return (index.h(DayCell, { date: date, dayOfMonth: day.dayOfMonth, isCurrentMonth: day.isCurrentMonth, isSelected: isSelected, isInRange: isInRange, isStart: isStart, isEnd: isEnd, isToday: isTodayDate, isDisabled: day.isDisabled, selectionType: selectionType, onClick: onDayClick }));
475
+ const inHoverRange = isInHoverRange(date, startDate, hoverDate);
476
+ const hoverRangeValid = isHoverRangeValid(startDate, hoverDate);
477
+ return (index.h(DayCell, { date: date, dayOfMonth: day.dayOfMonth, isCurrentMonth: day.isCurrentMonth, isSelected: isSelected, isInRange: isInRange, isStart: isStart, isEnd: isEnd, isToday: isTodayDate, isDisabled: day.isDisabled, selectionType: selectionType, onClick: onDayClick, onDayHover: onDayHover, isInHoverRange: inHoverRange, isHoverRangeValid: hoverRangeValid }));
413
478
  }))));
414
479
  };
415
480
 
416
- const nvCalendarCss = "nv-calendar{display:block}.datepicker-root{display:flex;justify-content:center;align-items:flex-start;width:auto}.datepicker-container{font-family:system-ui, sans-serif;display:flex;flex-direction:column;align-items:stretch;background:var(--components-calendar-background);border-radius:var(--calendar-radius);padding:var(--calendar-padding);box-shadow:0px var(--shadow-y-axis-md-1) var(--shadow-blur-md-1) var(--shadow-spread-md, 0) var(--shadow-color-opacity-0), 0px var(--shadow-y-axis-md-2) var(--shadow-blur-md-2) var(--shadow-spread-md, 0) var(--shadow-color-opacity-2);border:1px solid var(--components-calendar-border);width:auto;max-width:100%}.datepicker-container-single{max-width:300px}.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-left),.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-container-single:has(.shortcuts-placement-left),.datepicker-container-single:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-wrapper{display:flex;justify-content:center;align-items:flex-start;gap:var(--calendar-gap-x);width:auto;overflow-x:hidden}.datepicker-wrapper::-webkit-scrollbar{width:6px;height:6px}.datepicker-wrapper::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}.datepicker-wrapper::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}.datepicker-wrapper.single{justify-content:center}.calendar-container{display:flex;flex-direction:column;align-items:center;padding:var(--calendar-padding);width:auto;position:relative}.calendar-separator{width:1px;background:var(--components-calendar-border);height:auto;min-height:100%;margin:0 10px}.header{display:flex;justify-content:start;align-items:center;margin-bottom:var(--calendar-header-margin-bottom);width:100%}.header nv-iconbutton{width:var(--calendar-header-button-size);height:var(--calendar-header-button-size)}.nav-buttons{display:flex;gap:var(--spacing-0);margin-left:auto}.nav-left{order:-1}.date-controls{display:flex;gap:var(--spacing-1);align-items:center;min-height:34px;justify-content:center}.datepicker-container-single .date-controls{justify-content:flex-start}.datepicker-container:not(.datepicker-container-single) .date-controls{justify-content:start;flex-grow:1}.date-controls .month-select,.date-controls .year-input{background:transparent !important}.calendar-wrapper:nth-child(n+2) .datepicker-container{margin-left:42px}.calendar-grid{display:grid;grid-template-columns:auto 1fr;column-gap:var(--calendar-weeks-calendar-gap-x);position:relative}.calendar-grid.slide-left{animation:slideLeft 0.3s ease-out}.calendar-grid.slide-right{animation:slideRight 0.3s ease-out}.week-numbers{display:grid;grid-template-rows:var(--calendar-cell-size) repeat(6, var(--calendar-cell-size));background:var(--components-calendar-weeks-background);color:var(--components-calendar-weeks-text);border-radius:var(--calendar-weeks-radius);width:var(--calendar-weeks-size);row-gap:var(--calendar-grid-gap-y)}.week-numbers .clickable{cursor:pointer}.week-numbers .clickable:hover{background-color:var(--components-calendar-weeks-background-hover);color:var(--components-calendar-weeks-text-hover);border-radius:var(--calendar-radius)}.week-header,.week-number{display:grid;place-items:center;font-size:var(--calendar-cell-font-size)}.week-header{font-weight:700;color:var(--components-calendar-weeks-text)}.week-number{color:var(--components-calendar-cell-text)}.days-container{display:grid;grid-template-rows:auto 1fr;row-gap:var(--calendar-grid-gap-y)}.days-header{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));height:var(--calendar-cell-size)}.day-header{display:grid;place-items:center;font-size:var(--calendar-cell-font-size);color:var(--components-calendar-cell-text)}.days-grid{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));grid-template-rows:repeat(6, var(--calendar-cell-size));animation:fadeIn 0.2s ease-in;row-gap:var(--calendar-grid-gap-y);z-index:0}.day{display:grid;place-items:center;width:var(--calendar-cell-size);height:var(--calendar-cell-size);font-size:var(--calendar-cell-font-size);border-radius:var(--calendar-cell-radius);cursor:pointer;border:none;background:transparent;transition:all 0.2s ease;text-align:center;animation:scaleIn 0.2s ease-out}.day:hover:not(.disabled,.empty,.selected){background:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}.day.selected,.day.selected:hover .day.is-today.selected,.day.is-today.selected:hover{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected) !important}.day.disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.day.is-empty{pointer-events:none;background-color:transparent;border-color:transparent}.day.day-blank{pointer-events:none;background-color:transparent;border-color:transparent}.day.outside-month{color:var(--components-calendar-cell-text);opacity:var(--opacity-disabled)}.day.outside-month.selected{opacity:1 !important;color:var(--components-calendar-cell-text-selected)}.day.outside-month.in-range{opacity:0.5 !important;background-color:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range)}.day.outside-month.in-range:hover{opacity:0.7 !important;background-color:var(--components-calendar-cell-background-in-range)}.day.in-range{background:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range);border-radius:0;position:relative}.day.range-start,.day.range-start:focus,.day.range-start:hover,.day.range-end,.day.range-end:focus,.day.range-end:hover{background-color:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected) !important}.day.range-start,.day.range-end,.day.range-start.is-today,.day.range-end.is-today{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected);position:relative;border-radius:var(--radius-rounded-full)}.day.range-start:hover,.day.range-end:hover,.day.range-start.is-today:hover,.day.range-end.is-today:hover{color:var(--components-calendar-cell-text-today)}.day.range-start:before,.day.range-end:before,.day.range-start.is-today:before,.day.range-end.is-today:before{content:\"\";position:absolute;bottom:0;left:0;right:0;top:0;z-index:-1;background-color:var(--components-calendar-cell-background-in-range);border-radius:var(--radius-rounded-full);width:auto;height:auto}.day.range-start:has(~.range-end):before,.day.range-start:has(+.in-range):before{border-top-right-radius:0;border-bottom-right-radius:0}.day.range-end:before{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.day.outside-month.range-start,.day.outside-month.range-end{opacity:1 !important;background:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected)}.day.is-today{font-weight:700;position:relative;color:var(--components-calendar-cell-text-today)}.day.is-today.range-start,.day.is-today.range-end{color:var(--components-calendar-cell-text-selected)}.day.is-today.range-start:hover,.day.is-today.range-end:hover{color:var(--components-calendar-cell-text-today)}.day.is-today::after{content:\"\";position:absolute;bottom:var(--spacing-1);left:50%;transform:translateX(-50%);width:var(--calendar-cell-dot-size);height:var(--calendar-cell-dot-size);background-color:currentColor;border-radius:50%}.day.is-today.selected::after{color:var(--components-calendar-cell-text-selected)}.day.is-today.selected::after::after{background-color:var(--components-calendar-cell-dot-selected)}.calendar-footer{display:flex;gap:var(--spacing-1);justify-content:flex-start;width:100%;flex-wrap:wrap}.footer-placement-left{justify-content:flex-start}.footer-placement-right{justify-content:flex-end}.footer-placement-center{justify-content:center}.datepicker-controls{display:flex;flex-direction:column;border-top:1px solid var(--components-calendar-border);padding:var(--calendar-controls-padding-top) var(--calendar-padding) var(--calendar-padding);gap:var(--calendar-grid-gap-y);margin-top:var(--calendar-controls-margin-top)}.datepicker-actions{display:flex;justify-content:flex-end;gap:var(--spacing-1);width:100%}.datepicker-actions slot-fb{display:contents !important}.calendar-footer+.datepicker-actions{margin-top:0}.shortcuts-placement-left,.shortcuts-placement-right{display:flex;flex-direction:column;gap:var(--spacing-1);margin-top:var(--spacing-4)}.shortcuts-placement-left{align-items:flex-end}.shortcuts-placement-right{align-items:flex-start}@keyframes slideLeft{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideRight{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}";
481
+ const nvCalendarCss = "nv-calendar{display:block}.datepicker-root{display:flex;justify-content:center;align-items:flex-start;width:auto}.datepicker-container{font-family:system-ui, sans-serif;display:flex;flex-direction:column;align-items:stretch;background:var(--components-calendar-background);border-radius:var(--calendar-radius);padding:var(--calendar-padding);box-shadow:0px var(--shadow-y-axis-md-1) var(--shadow-blur-md-1) var(--shadow-spread-md, 0) var(--shadow-color-opacity-0), 0px var(--shadow-y-axis-md-2) var(--shadow-blur-md-2) var(--shadow-spread-md, 0) var(--shadow-color-opacity-2);border:1px solid var(--components-calendar-border);width:auto;max-width:100%}.datepicker-container-single{max-width:300px}.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-left),.datepicker-container-single .datepicker-wrapper:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-container-single:has(.shortcuts-placement-left),.datepicker-container-single:has(.shortcuts-placement-right){max-width:410px !important}.datepicker-wrapper{display:flex;justify-content:center;align-items:flex-start;gap:var(--calendar-gap-x);width:auto;overflow-x:hidden}.datepicker-wrapper::-webkit-scrollbar{width:6px;height:6px}.datepicker-wrapper::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}.datepicker-wrapper::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}.datepicker-wrapper.single{justify-content:center}.calendar-container{display:flex;flex-direction:column;align-items:center;padding:var(--calendar-padding);width:auto;position:relative}.calendar-separator{width:1px;background:var(--components-calendar-border);height:auto;min-height:100%;margin:0 10px}.header{display:flex;justify-content:start;align-items:center;margin-bottom:var(--calendar-header-margin-bottom);width:100%}.header nv-iconbutton{width:var(--calendar-header-button-size);height:var(--calendar-header-button-size)}.nav-buttons{display:flex;gap:var(--spacing-0);margin-left:auto}.nav-left{order:-1}.date-controls{display:flex;gap:var(--spacing-1);align-items:center;min-height:34px;justify-content:center}.datepicker-container-single .date-controls{justify-content:flex-start}.datepicker-container:not(.datepicker-container-single) .date-controls{justify-content:start;flex-grow:1}.date-controls .month-select,.date-controls .year-input{background:transparent !important}.calendar-wrapper:nth-child(n+2) .datepicker-container{margin-left:42px}.calendar-grid{display:grid;grid-template-columns:auto 1fr;column-gap:var(--calendar-weeks-calendar-gap-x);position:relative}.calendar-grid.slide-left{animation:slideLeft 0.3s ease-out}.calendar-grid.slide-right{animation:slideRight 0.3s ease-out}.week-numbers{display:grid;grid-template-rows:var(--calendar-cell-size) repeat(6, var(--calendar-cell-size));background:var(--components-calendar-weeks-background);color:var(--components-calendar-weeks-text);border-radius:var(--calendar-weeks-radius);width:var(--calendar-weeks-size);row-gap:var(--calendar-grid-gap-y)}.week-numbers .clickable{cursor:pointer}.week-numbers .clickable:hover{background-color:var(--components-calendar-weeks-background-hover);color:var(--components-calendar-weeks-text-hover);border-radius:var(--calendar-radius)}.week-header,.week-number{display:grid;place-items:center;font-size:var(--calendar-cell-font-size)}.week-header{font-weight:700;color:var(--components-calendar-weeks-text)}.week-number{color:var(--components-calendar-cell-text)}.days-container{display:grid;grid-template-rows:auto 1fr;row-gap:var(--calendar-grid-gap-y)}.days-header{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));height:var(--calendar-cell-size)}.day-header{display:grid;place-items:center;font-size:var(--calendar-cell-font-size);color:var(--components-calendar-cell-text)}.days-grid{display:grid;grid-template-columns:repeat(7, var(--calendar-cell-size));grid-template-rows:repeat(6, var(--calendar-cell-size));animation:fadeIn 0.2s ease-in;row-gap:var(--calendar-grid-gap-y);z-index:0}.day{display:grid;place-items:center;width:var(--calendar-cell-size);height:var(--calendar-cell-size);font-size:var(--calendar-cell-font-size);border-radius:var(--calendar-cell-radius);cursor:pointer;border:none;background:transparent;transition:all 0.2s ease;text-align:center;animation:scaleIn 0.2s ease-out}.day:hover:not(.disabled,.empty,.selected){background:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}.day.selected,.day.selected:hover .day.is-today.selected,.day.is-today.selected:hover{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected) !important}.day.disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.day.is-empty{pointer-events:none;background-color:transparent;border-color:transparent}.day.day-blank{pointer-events:none;background-color:transparent;border-color:transparent}.day.outside-month{color:var(--components-calendar-cell-text);opacity:var(--opacity-disabled)}.day.outside-month.selected{opacity:1 !important;color:var(--components-calendar-cell-text-selected)}.day.outside-month.in-range{opacity:0.5 !important;background-color:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range)}.day.outside-month.in-range:hover{opacity:0.7 !important;background-color:var(--components-calendar-cell-background-in-range)}.day.in-range{background:var(--components-calendar-cell-background-in-range);color:var(--components-calendar-cell-text-in-range);border-radius:0;position:relative}.day.range-start,.day.range-start:focus,.day.range-start:hover,.day.range-end,.day.range-end:focus,.day.range-end:hover{background-color:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected) !important}.day.range-start,.day.range-end,.day.range-start.is-today,.day.range-end.is-today{background:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected);position:relative;border-radius:var(--radius-rounded-full)}.day.range-start:hover,.day.range-end:hover,.day.range-start.is-today:hover,.day.range-end.is-today:hover{color:var(--components-calendar-cell-text-today)}.day.range-start:before,.day.range-end:before,.day.range-start.is-today:before,.day.range-end.is-today:before{content:\"\";position:absolute;bottom:0;left:0;right:0;top:0;z-index:-1;background-color:var(--components-calendar-cell-background-in-range);border-radius:var(--radius-rounded-full);width:auto;height:auto}.day.range-start:has(~.range-end):before,.day.range-start:has(+.in-range):before{border-top-right-radius:0;border-bottom-right-radius:0}.day.range-end:before{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.day.outside-month.range-start,.day.outside-month.range-end{opacity:1 !important;background:var(--components-calendar-cell-background-selected) !important;color:var(--components-calendar-cell-text-selected)}.day.is-today{font-weight:700;position:relative;color:var(--components-calendar-cell-text-today)}.day.is-today.range-start,.day.is-today.range-end{color:var(--components-calendar-cell-text-selected)}.day.is-today.range-start:hover,.day.is-today.range-end:hover{color:var(--components-calendar-cell-text-today)}.day.is-today::after{content:\"\";position:absolute;bottom:var(--spacing-1);left:50%;transform:translateX(-50%);width:var(--calendar-cell-dot-size);height:var(--calendar-cell-dot-size);background-color:currentColor;border-radius:50%}.day.is-today.selected::after{color:var(--components-calendar-cell-text-selected)}.day.is-today.selected::after::after{background-color:var(--components-calendar-cell-dot-selected)}.day.hover-range{background-color:var(--components-calendar-cell-background-hover)}.day.hover-blocked{background-color:var(--components-calendar-cell-background-hover)}.day.disabled.hover-blocked{background-color:transparent}.calendar-footer{display:flex;gap:var(--spacing-1);justify-content:flex-start;width:100%;flex-wrap:wrap}.footer-placement-left{justify-content:flex-start}.footer-placement-right{justify-content:flex-end}.footer-placement-center{justify-content:center}.datepicker-controls{display:flex;flex-direction:column;border-top:1px solid var(--components-calendar-border);padding:var(--calendar-controls-padding-top) var(--calendar-padding) var(--calendar-padding);gap:var(--calendar-grid-gap-y);margin-top:var(--calendar-controls-margin-top)}.datepicker-actions{display:flex;justify-content:flex-end;gap:var(--spacing-1);width:100%}.datepicker-actions slot-fb{display:contents !important}.calendar-footer+.datepicker-actions{margin-top:0}.shortcuts-placement-left,.shortcuts-placement-right{display:flex;flex-direction:column;gap:var(--spacing-1);margin-top:var(--spacing-4)}.shortcuts-placement-left{align-items:flex-end}.shortcuts-placement-right{align-items:flex-start}@keyframes slideLeft{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideRight{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}";
417
482
  const NvCalendarStyle0 = nvCalendarCss;
418
483
 
419
484
  const NvCalendar = class {
@@ -480,6 +545,7 @@ const NvCalendar = class {
480
545
  this.selectedDate = null;
481
546
  this.startDate = null;
482
547
  this.endDate = null;
548
+ this.hoverDate = null;
483
549
  /** List of formatted months for the selector */
484
550
  this.months = [];
485
551
  /**
@@ -574,11 +640,29 @@ const NvCalendar = class {
574
640
  });
575
641
  this.currentDate = newDate;
576
642
  };
643
+ this.handleMouseLeave = () => {
644
+ this.hoverDate = null;
645
+ };
646
+ this.handleDayHover = (event) => {
647
+ const target = event.target;
648
+ const dateStr = target.getAttribute('data-date');
649
+ if (dateStr &&
650
+ this.selectionType === 'range' &&
651
+ this.startDate &&
652
+ !this.endDate) {
653
+ this.hoverDate = new Date(dateStr);
654
+ }
655
+ };
577
656
  /**
578
657
  * Handles date selection based on the mode
579
- * @param {Date} date - Selected date
658
+ * @param {MouseEvent} event - The mouse event from the click.
580
659
  */
581
- this.handleDateSelection = (date) => {
660
+ this.handleDateSelection = (event) => {
661
+ const target = event.target;
662
+ const dateStr = target.getAttribute('data-date');
663
+ if (!dateStr)
664
+ return;
665
+ const date = new Date(dateStr);
582
666
  if (this.isDateDisabled(date)) {
583
667
  return;
584
668
  }
@@ -624,6 +708,7 @@ const NvCalendar = class {
624
708
  else {
625
709
  // Complete range selection
626
710
  this.endDate = date;
711
+ this.hoverDate = null;
627
712
  // Ensure correct order
628
713
  if (this.startDate > this.endDate) {
629
714
  [this.startDate, this.endDate] = [this.endDate, this.startDate];
@@ -655,24 +740,7 @@ const NvCalendar = class {
655
740
  * @returns {boolean} true if the date is disabled
656
741
  */
657
742
  this.isDateDisabled = (date) => {
658
- if (!date)
659
- return true;
660
- // Minimum bound check
661
- if (this.min) {
662
- const minDate = parseDate(this.min, this.dateFormat);
663
- if (minDate && date < minDate) {
664
- return true;
665
- }
666
- }
667
- // Maximum bound check
668
- if (this.max) {
669
- const maxDate = parseDate(this.max, this.dateFormat);
670
- if (maxDate && date > maxDate) {
671
- return true;
672
- }
673
- }
674
- // Check disabled dates
675
- return this.parsedDisabledDates.some(disabledDate => isSameDate(date, disabledDate, { isUTCMode: this.isUTCMode }));
743
+ return isDateDisabledUtil(date, this.min, this.max, this.parsedDisabledDates, this.dateFormat, this.isUTCMode);
676
744
  };
677
745
  /**
678
746
  * Checks if a date is in the selected range
@@ -703,9 +771,9 @@ const NvCalendar = class {
703
771
  this.getDayNames = () => {
704
772
  let days;
705
773
  // If we have custom day names for this locale
706
- if (constants4faa1fae.CUSTOM_DAY_NAMES[this.locale]) {
774
+ if (constants23aaef7b.CUSTOM_DAY_NAMES[this.locale]) {
707
775
  // Custom day names are expected to start with Monday (index 0 = Monday)
708
- days = [...constants4faa1fae.CUSTOM_DAY_NAMES[this.locale]];
776
+ days = [...constants23aaef7b.CUSTOM_DAY_NAMES[this.locale]];
709
777
  }
710
778
  else {
711
779
  // Generate days using Intl.DateTimeFormat, starting from Monday
@@ -795,8 +863,8 @@ const NvCalendar = class {
795
863
  /** Initializes the list of formatted months according to the locale */
796
864
  this.initializeMonths = () => {
797
865
  // If we have custom month names for this locale
798
- if (constants4faa1fae.CUSTOM_MONTH_NAMES[this.locale]) {
799
- this.months = constants4faa1fae.CUSTOM_MONTH_NAMES[this.locale].map((label, value) => ({
866
+ if (constants23aaef7b.CUSTOM_MONTH_NAMES[this.locale]) {
867
+ this.months = constants23aaef7b.CUSTOM_MONTH_NAMES[this.locale].map((label, value) => ({
800
868
  value,
801
869
  label,
802
870
  }));
@@ -814,7 +882,7 @@ const NvCalendar = class {
814
882
  * @returns {string} Localized abbreviation for "week"
815
883
  */
816
884
  this.getLocalizedWeekText = () => {
817
- return constants4faa1fae.WEEK_ABBREVIATIONS[this.locale] || 'W';
885
+ return constants23aaef7b.WEEK_ABBREVIATIONS[this.locale] || 'W';
818
886
  };
819
887
  /**
820
888
  * Handles month change in the selector
@@ -1069,6 +1137,15 @@ const NvCalendar = class {
1069
1137
  index$1) => {
1070
1138
  return (index.h(WeekNumbers, { weeks: weeks, localizedWeekText: this.getLocalizedWeekText(), selectionType: this.selectionType, onWeekSelect: this.handleWeekSelection, calendarIndex: index$1 }));
1071
1139
  };
1140
+ /**
1141
+ * Checks if the hover range is valid
1142
+ * @param {Date} startDate - Start date
1143
+ * @param {Date | null} hoverDate - Hovered date
1144
+ * @returns {boolean} true if the hover range is valid
1145
+ */
1146
+ this.isHoverRangeValidFn = (startDate, hoverDate) => {
1147
+ return isHoverRangeValid(startDate, hoverDate, this.min, this.max, this.parsedDisabledDates, this.dateFormat, this.isUTCMode);
1148
+ };
1072
1149
  /**
1073
1150
  * Renders the calendar
1074
1151
  * @param {number} index - Calendar index
@@ -1091,7 +1168,7 @@ const NvCalendar = class {
1091
1168
  targetDate.setUTCMonth(targetDate.getUTCMonth() + offset);
1092
1169
  const year = targetDate.getUTCFullYear();
1093
1170
  const month = targetDate.getUTCMonth();
1094
- return (index.h("div", { class: "calendar-wrapper" }, index.h("div", { class: "calendar-container", key: `calendar-${index$1}-${year}-${month}` }, this.renderHeader(offset, index$1), index.h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index$1), index.h(CalendarGrid, { days: days, dayNames: this.getDayNames(), selectionType: this.selectionType, selectedDate: this.selectedDate, startDate: this.startDate, endDate: this.endDate, isUTCMode: this.isUTCMode, onDayClick: this.handleDateSelection, isDateInRange: this.isDateInRange, isToday: this.isToday }))), index$1 < this.numberOfCalendars - 1 && (index.h("div", { class: "calendar-separator" }))));
1171
+ return (index.h("div", { class: "calendar-wrapper" }, index.h("div", { class: "calendar-container", key: `calendar-${index$1}-${year}-${month}` }, this.renderHeader(offset, index$1), index.h("div", { class: "calendar-grid" }, this.showWeekNumbers && this.renderWeekNumbers(weeks, index$1), index.h(CalendarGrid, { days: days, dayNames: this.getDayNames(), selectionType: this.selectionType, selectedDate: this.selectedDate, startDate: this.startDate, endDate: this.endDate, isUTCMode: this.isUTCMode, onDayClick: this.handleDateSelection, isDateInRange: this.isDateInRange, isToday: this.isToday, onDayHover: this.handleDayHover, onMouseLeave: this.handleMouseLeave, hoverDate: this.hoverDate, isInHoverRange: isInHoverRange, isHoverRangeValid: this.isHoverRangeValidFn }))), index$1 < this.numberOfCalendars - 1 && (index.h("div", { class: "calendar-separator" }))));
1095
1172
  };
1096
1173
  /**
1097
1174
  * Renders the shortcuts
@@ -1311,8 +1388,8 @@ const NvCalendar = class {
1311
1388
  * @slot default - Child content of the component.
1312
1389
  */
1313
1390
  render() {
1314
- return (index.h(index.Host, { key: '492526a4a9ed114aba804db45f49847b1db58c9f' }, index.h("div", { key: '632759b4eb6c65c3b082b707fba75568ed351e49', class: "datepicker-root" }, index.h("div", { key: '8dc6160dec8ed46e2d2f70e3154cd73cbaeee586', class: `datepicker-container ${this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''}` }, index.h("div", { key: '55b1c7f8bcda0785ca63a1572bfebc628a3971d5', class: `datepicker-wrapper ${this.numberOfCalendars === 1 ? 'single' : ''}` }, this.shortcutsPlacement === 'left' && this.renderShortcuts(), Array.from({ length: this.numberOfCalendars }, (_, index) => this.renderCalendar(index, index)), this.shortcutsPlacement === 'right' && this.renderShortcuts()), ((this.hasShortcuts && this.shortcutsPlacement === 'bottom') ||
1315
- this.hasActions) && (index.h("div", { key: '7234a6d497fccdcab8923b5235f591f24061c92d', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), index.h("slot", { key: '1a23c6e92ffbc8ca64b42ff41ed6d106a3697e7f' })));
1391
+ return (index.h(index.Host, { key: '15aa3c2afb51ea1fbd16de597889d687fb8d1982' }, index.h("div", { key: '6492b58cb2b5c9bb7fd6c40e8f37e9c2142b5827', class: "datepicker-root" }, index.h("div", { key: '3cb216c3af4900b48c2dcd09a0a0034c7ebf622d', class: `datepicker-container ${this.numberOfCalendars === 1 ? 'datepicker-container-single' : ''}` }, index.h("div", { key: '0663841721d5db871e7ede0ec396affa560ea99d', class: `datepicker-wrapper ${this.numberOfCalendars === 1 ? 'single' : ''}` }, this.shortcutsPlacement === 'left' && this.renderShortcuts(), Array.from({ length: this.numberOfCalendars }, (_, index) => this.renderCalendar(index, index)), this.shortcutsPlacement === 'right' && this.renderShortcuts()), ((this.hasShortcuts && this.shortcutsPlacement === 'bottom') ||
1392
+ this.hasActions) && (index.h("div", { key: '0a17a627cb1e4a4cb2b91aa104403b00d055bce5', class: "datepicker-controls" }, this.shortcutsPlacement === 'bottom' && this.renderShortcuts(), this.hasActions && this.renderActions())))), index.h("slot", { key: '3104795c8cc9c81a6aca7e426a145e3966a4361e' })));
1316
1393
  }
1317
1394
  get el() { return index.getElement(this); }
1318
1395
  static get watchers() { return {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BtjpbnUr.js');
3
+ var index = require('./index-Cm4m8MM1.js');
4
4
  var clsx297c1ffe = require('./clsx-297c1ffe-BtxeOLZW.js');
5
5
  require('react');
6
6
 
@@ -29,7 +29,7 @@ const NvCol = class {
29
29
  /****************************************************************************/
30
30
  //#region RENDER
31
31
  render() {
32
- return (index.h(index.Host, { key: 'e258bc3e01d3bd35bf64f14241c70ae044fac132', class: clsx297c1ffe.clsx(this.getColSize()) }, index.h("slot", { key: 'd36caf0fde38eae6cd37b62fb4c02e3de6b7225e' })));
32
+ return (index.h(index.Host, { key: '4fe90a1d020de9e85d32a52ccb39c8b6d8c1fc25', class: clsx297c1ffe.clsx(this.getColSize()) }, index.h("slot", { key: '5a6ad624fd7c6251b2f555c0e3bc828c0e048761' })));
33
33
  }
34
34
  };
35
35
  NvCol.style = NvColStyle0;
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BtjpbnUr.js');
3
+ var index = require('./index-Cm4m8MM1.js');
4
4
  var dom_utilsAc71e0ef = require('./dom.utils-ac71e0ef-CmIwRr6O.js');
5
- var constants4faa1fae = require('./constants-4faa1fae-BzFAKCkR.js');
5
+ var constants23aaef7b = require('./constants-23aaef7b-Cj2b-su0.js');
6
6
  require('react');
7
7
 
8
8
  /**
@@ -3309,7 +3309,7 @@ function debounce(func, wait) {
3309
3309
  };
3310
3310
  }
3311
3311
 
3312
- const nvDatagridCss = "nv-datagrid{--nv-datagrid-border-default:var(\n --components-form-field-border-default\n );--nv-datagrid-border-hover:var(--components-form-field-border-hover);--nv-datagrid-border-focus:var(--components-form-field-border-default);--nv-datagrid-background-default:var(\n --components-form-field-background-default\n );--nv-datagrid-background-checked:var(\n --components-form-field-background-checked\n );--nv-datagrid-background-disabled:var(\n --components-form-field-background-disabled\n );--nv-datagrid-color-checked:var(\n --components-form-shape-foreground-default\n );--nv-datagrid-color-disabled:var(\n --components-form-shape-foreground-disabled\n );--nv-datagrid-outline-color:var(--color-focus-brand);display:block}nv-datagrid .hidden{display:none}nv-datagrid table{border-collapse:collapse;border-color:inherit;text-indent:0;width:100%}nv-datagrid th{text-align:left;border-bottom:1px solid var(--components-datagrid-header-border);height:var(--spacing-12);padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-md);font-weight:700;color:var(--components-datagrid-header-text)}nv-datagrid td{border-bottom:1px solid var(--components-datagrid-body-border);height:var(--spacing-12);max-height:var(--spacing-14);padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-md);font-weight:400;color:var(--components-datagrid-body-text);white-space:nowrap;text-overflow:ellipsis}nv-datagrid tbody>tr:hover{background:var(--color-interaction-container-neutral-background-hover)}nv-datagrid .cursor-pointer{cursor:pointer}nv-datagrid .select-none{-webkit-user-select:none;user-select:none}nv-datagrid .search-container{display:flex}nv-datagrid .checkbox-container{position:relative;color:var(--nv-datagrid-color-checked)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--nv-datagrid-color-disabled)}nv-datagrid .checkbox-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-checkbox-size);height:var(--form-checkbox-size);flex-direction:column;align-items:flex-start;border-radius:var(--form-checkbox-radius);border-width:var(--form-checkbox-border-width);border-style:solid;border-color:var(--nv-datagrid-border-default);background:var(--nv-datagrid-background-default)}nv-datagrid .checkbox-container input[type=checkbox]:hover{border-color:var(--nv-datagrid-border-hover)}nv-datagrid .checkbox-container input[type=checkbox]:focus{border-color:var(--nv-datagrid-border-focus)}nv-datagrid .checkbox-container input[type=checkbox]:focus,nv-datagrid .checkbox-container input[type=checkbox]:focus-within{outline:none}nv-datagrid .checkbox-container input[type=checkbox]:focus-visible,nv-datagrid .checkbox-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--nv-datagrid-outline-color);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-datagrid .checkbox-container input[type=checkbox]:checked,nv-datagrid .checkbox-container input[type=checkbox]:indeterminate{background:var(--nv-datagrid-background-checked);border-color:var(--nv-datagrid-background-checked)}nv-datagrid .checkbox-container input[type=checkbox]:disabled:not([readonly]){background:var(--nv-datagrid-background-disabled);border-color:var(--nv-datagrid-border-default)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container .icon{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}nv-datagrid .checkbox-container .icon svg{width:var(--form-checkbox-icon-size);height:var(--form-checkbox-icon-size);fill:none;stroke:currentcolor;stroke-width:var(--form-checkbox-icon-stroke);flex-shrink:0}";
3312
+ const nvDatagridCss = "nv-datagrid{--nv-datagrid-border-default:var(\n --components-form-field-border-default\n );--nv-datagrid-border-hover:var(--components-form-field-border-hover);--nv-datagrid-border-focus:var(--components-form-field-border-default);--nv-datagrid-background-default:var(\n --components-form-field-background-default\n );--nv-datagrid-background-checked:var(\n --components-form-field-background-checked\n );--nv-datagrid-background-disabled:var(\n --components-form-field-background-disabled\n );--nv-datagrid-color-checked:var(\n --components-form-shape-foreground-default\n );--nv-datagrid-color-disabled:var(\n --components-form-shape-foreground-disabled\n );--nv-datagrid-outline-color:var(--color-focus-brand);display:block}nv-datagrid .hidden{display:none}nv-datagrid table{border-collapse:collapse;border-color:inherit;text-indent:0;width:100%}nv-datagrid th{text-align:left;border-bottom:1px solid var(--components-datagrid-header-border);height:var(--spacing-12);padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-md);font-weight:700;color:var(--components-datagrid-header-text)}nv-datagrid td{border-bottom:1px solid var(--components-datagrid-body-border);height:var(--spacing-12);max-height:var(--spacing-14);padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-md);font-weight:400;color:var(--components-datagrid-body-text);white-space:nowrap;text-overflow:ellipsis}nv-datagrid tbody>tr:hover{background:var(--color-interaction-container-neutral-background-hover)}nv-datagrid .cursor-pointer{cursor:pointer}nv-datagrid .select-none{-webkit-user-select:none;user-select:none}nv-datagrid .search-container{display:flex}nv-datagrid .checkbox-container{position:relative;color:var(--nv-datagrid-color-checked)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--nv-datagrid-color-disabled)}nv-datagrid .checkbox-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-checkbox-size);height:var(--form-checkbox-size);flex-direction:column;align-items:flex-start;border-radius:var(--form-checkbox-radius);border-width:var(--form-checkbox-border-width);border-style:solid;border-color:var(--nv-datagrid-border-default);background:var(--nv-datagrid-background-default)}nv-datagrid .checkbox-container input[type=checkbox]:hover{border-color:var(--nv-datagrid-border-hover)}nv-datagrid .checkbox-container input[type=checkbox]:focus{border-color:var(--nv-datagrid-border-focus)}nv-datagrid .checkbox-container input[type=checkbox]:focus,nv-datagrid .checkbox-container input[type=checkbox]:focus-within{outline:none}nv-datagrid .checkbox-container input[type=checkbox]:focus-visible,nv-datagrid .checkbox-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--nv-datagrid-outline-color);outline-offset:calc(var(--focus-outline-offset) * 1);z-index:111}nv-datagrid .checkbox-container input[type=checkbox]:checked,nv-datagrid .checkbox-container input[type=checkbox]:indeterminate{background:var(--nv-datagrid-background-checked);border-color:var(--nv-datagrid-background-checked)}nv-datagrid .checkbox-container input[type=checkbox]:disabled:not([readonly]){background:var(--nv-datagrid-background-disabled);border-color:var(--nv-datagrid-border-default)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container .icon{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}nv-datagrid .checkbox-container .icon svg{width:var(--form-checkbox-icon-size);height:var(--form-checkbox-icon-size);fill:none;stroke:currentcolor;stroke-width:var(--form-checkbox-icon-stroke);flex-shrink:0}";
3313
3313
  const NvDatagridStyle0 = nvDatagridCss;
3314
3314
 
3315
3315
  const NvDatagrid = class {
@@ -3464,9 +3464,9 @@ const NvDatagrid = class {
3464
3464
  return;
3465
3465
  const nextOrder = header.column.getNextSortingOrder();
3466
3466
  switch (nextOrder) {
3467
- case constants4faa1fae.SortingPossibility.Asc:
3467
+ case constants23aaef7b.SortingPossibility.Asc:
3468
3468
  return 'Sort ascending';
3469
- case constants4faa1fae.SortingPossibility.Desc:
3469
+ case constants23aaef7b.SortingPossibility.Desc:
3470
3470
  return 'Sort descending';
3471
3471
  default:
3472
3472
  return 'Clear sort';
@@ -4158,10 +4158,10 @@ const NvDatagrid = class {
4158
4158
  if (!header.column.getCanSort())
4159
4159
  return null;
4160
4160
  const sortState = header.column.getIsSorted();
4161
- if (sortState === constants4faa1fae.SortingPossibility.Asc) {
4161
+ if (sortState === constants23aaef7b.SortingPossibility.Asc) {
4162
4162
  return (index.h("div", { class: "inline-flex align-middle" }, index.h("nv-icon", { name: "arrow-up" })));
4163
4163
  }
4164
- if (sortState === constants4faa1fae.SortingPossibility.Desc) {
4164
+ if (sortState === constants23aaef7b.SortingPossibility.Desc) {
4165
4165
  return (index.h("div", { class: "inline-flex align-middle" }, index.h("nv-icon", { name: "arrow-down" })));
4166
4166
  }
4167
4167
  return null;
@@ -4321,7 +4321,7 @@ const NvDatagrid = class {
4321
4321
  const rows = !this.table || this.table === undefined || this.parsedData.length === 0
4322
4322
  ? []
4323
4323
  : (_c = (_b = this.table) === null || _b === void 0 ? void 0 : _b.getRowModel()) === null || _c === void 0 ? void 0 : _c.rows;
4324
- return (index.h(index.Host, { key: 'b149279b85a3138e5be62b2f431a82fe5056b996' }, index.h("div", { key: '84ffd6a613a7e51539f0bc7e5ddff16a1769af5a', class: "hidden" }, index.h("slot", { key: 'cabafd2aab117816742972bd4eb6e7122c333ee9' })), index.h("slot", { key: '17a26ba154ddc2dea82f7576878107ede55a2043', name: "before" }), this.enableGlobalFilter && this.table && (index.h("div", { key: '822bb793cad6266810571dbb2c087c9e2b68958d', class: `search-container justify-${this.globalFilterPosition}` }, index.h("nv-fieldtext", { key: 'b9fd668a09b602ded195e4d10b79ae3d06c9a0f6', value: this.globalFilterSearchTerm, onInput: this.handleGlobalFilteringOnInput, placeholder: "Search all columns..." }))), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (index.h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (index.h("div", null, index.h("table", null, this.parsedColumns.length > 0 && headerGroups.length > 0 && (index.h("thead", null, this.parsedColumns.length > 0 && headerGroups
4324
+ return (index.h(index.Host, { key: '12113da221c66835cbd3c9c6f84d386b01a6cd3d' }, index.h("div", { key: '81e429e22f928758c413e295d431b9b5e989304f', class: "hidden" }, index.h("slot", { key: '12a21e3793f14ae1b47df812bf6d4c4d0d6c02f3' })), index.h("slot", { key: '372beaeea9fec7014a372961c6fabfae485c4cdc', name: "before" }), this.enableGlobalFilter && this.table && (index.h("div", { key: 'ca2589c327c23d4e4155d716f7d92c463ff36ab9', class: `search-container justify-${this.globalFilterPosition}` }, index.h("nv-fieldtext", { key: '749336787db4601d30d9b96d3f0db7f1cffe545f', value: this.globalFilterSearchTerm, onInput: this.handleGlobalFilteringOnInput, placeholder: "Search all columns..." }))), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (index.h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (index.h("div", null, index.h("table", null, this.parsedColumns.length > 0 && headerGroups.length > 0 && (index.h("thead", null, this.parsedColumns.length > 0 && headerGroups
4325
4325
  ? headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups.map(headerGroup => (index.h("tr", { key: headerGroup.id }, headerGroup.headers.map(header => {
4326
4326
  return this.getHeaderCell(header);
4327
4327
  }))))
@@ -4332,7 +4332,7 @@ const NvDatagrid = class {
4332
4332
  return (index.h("td", { key: cell.id, "data-row-id": rowId }, this.flexRender(cell.column.columnDef.cell, cell.getContext())));
4333
4333
  })));
4334
4334
  }))), this.table && this.enableRowSelection ? (index.h("tfoot", null, index.h("tr", null, index.h("td", { colSpan: 20 }, this.enableRowSelection && this.table ? (index.h("div", null, this.rowSelectionState &&
4335
- Object.keys(this.rowSelectionState).length > 0 ? (index.h("span", null, Object.keys(this.rowSelectionState).length, " of", ' ', ((_e = (_d = this.table.getPreFilteredRowModel()) === null || _d === void 0 ? void 0 : _d.rows) === null || _e === void 0 ? void 0 : _e.length) || 0, ' ', "Total Rows Selected")) : (index.h("span", null, "No rows selected")))) : null)))) : null), this.getPagination())), index.h("slot", { key: 'f509745423857527f2983c5cce1289441cc1f7c7', name: "after" })));
4335
+ Object.keys(this.rowSelectionState).length > 0 ? (index.h("span", null, Object.keys(this.rowSelectionState).length, " of", ' ', ((_e = (_d = this.table.getPreFilteredRowModel()) === null || _d === void 0 ? void 0 : _d.rows) === null || _e === void 0 ? void 0 : _e.length) || 0, ' ', "Total Rows Selected")) : (index.h("span", null, "No rows selected")))) : null)))) : null), this.getPagination())), index.h("slot", { key: 'd7dbad31543cb111f4137fd1a0430f9a2803bfdd', name: "after" })));
4336
4336
  }
4337
4337
  get el() { return index.getElement(this); }
4338
4338
  static get watchers() { return {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BtjpbnUr.js');
3
+ var index = require('./index-Cm4m8MM1.js');
4
4
  require('react');
5
5
 
6
6
  const NvDatagridcolumn = class {
@@ -15,7 +15,7 @@ const NvDatagridcolumn = class {
15
15
  /****************************************************************************/
16
16
  //#region RENDER
17
17
  render() {
18
- return (index.h(index.Host, { key: '49c4b8807b26a76cf26e9ac9567a5bca7de0aee7' }, index.h("slot", { key: '9e6c8b69a92fe4caec10025c941e39f1266b4f93', name: "header" }), index.h("slot", { key: '992fa9c1d00fe8ed65df5ad2157b78140d2794a0', name: "cell" })));
18
+ return (index.h(index.Host, { key: 'd93cf7234c22d08319d2e4157945ece0b9e5f7b1' }, index.h("slot", { key: 'd4530c7f6854773716e7494e0379bc21f446ca53', name: "header" }), index.h("slot", { key: '60e2933f219f48c0567fd0e01a137a694ae1c1c9', name: "cell" })));
19
19
  }
20
20
  };
21
21