@nova-design-system/nova-react 3.0.0-beta.41 → 3.0.0-beta.43

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 (89) hide show
  1. package/dist/cjs/_commonjsHelpers-1789f0cf-BJu3ubxk.js +10 -0
  2. package/dist/cjs/clsx-297c1ffe-BtxeOLZW.js +5 -0
  3. package/dist/cjs/constants-98e2dcc2-C0SBCapP.js +250 -0
  4. package/dist/cjs/dom.utils-ac71e0ef-CmIwRr6O.js +168 -0
  5. package/dist/cjs/events.utils-fe1d907f-01N__3wY.js +23 -0
  6. package/dist/cjs/fade.animation-2a077983-aKN0EDTo.js +1832 -0
  7. package/dist/cjs/index-C8UfzrMI.js +26405 -0
  8. package/dist/cjs/index-CinzsZ8D.js +26405 -0
  9. package/dist/cjs/index.js +48 -0
  10. package/dist/cjs/inputmask-edcad3c1-B9Omti4z.js +3749 -0
  11. package/dist/cjs/nv-alert.entry-8esWDUyU.js +173 -0
  12. package/dist/cjs/nv-alert.entry-BVY_rxey.js +173 -0
  13. package/dist/cjs/nv-avatar.entry-CO6bt4k6.js +67 -0
  14. package/dist/cjs/nv-avatar.entry-pREKtiv2.js +67 -0
  15. package/dist/cjs/nv-badge_2.entry-wDuiCwys.js +195 -0
  16. package/dist/cjs/nv-badge_2.entry-xfXsesV0.js +195 -0
  17. package/dist/cjs/nv-base.entry-BO-6krwg.js +71 -0
  18. package/dist/cjs/nv-base.entry-DwtTXK_n.js +71 -0
  19. package/dist/cjs/nv-breadcrumb.entry-B0hIeE83.js +45 -0
  20. package/dist/cjs/nv-breadcrumb.entry-DTwjCmMI.js +45 -0
  21. package/dist/cjs/nv-breadcrumbs.entry-Cq0LsIFs.js +20 -0
  22. package/dist/cjs/nv-breadcrumbs.entry-jn5hRjpQ.js +20 -0
  23. package/dist/cjs/nv-button.entry-DaSGnB1L.js +162 -0
  24. package/dist/cjs/nv-button.entry-DxzA6-My.js +162 -0
  25. package/dist/cjs/nv-calendar.entry-BC6NDsVl.js +1036 -0
  26. package/dist/cjs/nv-calendar.entry-DKz-iBnp.js +1036 -0
  27. package/dist/cjs/nv-col.entry-DNUY559i.js +37 -0
  28. package/dist/cjs/nv-col.entry-X7jkNThH.js +37 -0
  29. package/dist/cjs/nv-datagrid.entry-Cp8RCSEv.js +3671 -0
  30. package/dist/cjs/nv-datagrid.entry-DL-Fyo4l.js +3671 -0
  31. package/dist/cjs/nv-datagridcolumn.entry-CR9_1fsZ.js +18 -0
  32. package/dist/cjs/nv-datagridcolumn.entry-CyTG5E7M.js +18 -0
  33. package/dist/cjs/nv-dialog.entry-BjTJ5FFL.js +784 -0
  34. package/dist/cjs/nv-dialog.entry-Do_uALC6.js +784 -0
  35. package/dist/cjs/nv-dialogfooter_2.entry-DJ8qS9q6.js +134 -0
  36. package/dist/cjs/nv-dialogfooter_2.entry-DJkKzEgO.js +134 -0
  37. package/dist/cjs/nv-fieldcheckbox.entry-C0DmeqXD.js +137 -0
  38. package/dist/cjs/nv-fieldcheckbox.entry-DoGQX-5D.js +137 -0
  39. package/dist/cjs/nv-fielddate.entry-D-PjbYaA.js +278 -0
  40. package/dist/cjs/nv-fielddate.entry-DRX2mfZL.js +278 -0
  41. package/dist/cjs/nv-fielddaterange.entry-BrC5jKLp.js +355 -0
  42. package/dist/cjs/nv-fielddaterange.entry-ka3JiDvT.js +355 -0
  43. package/dist/cjs/nv-fielddropdown.entry-DUAKFYgw.js +391 -0
  44. package/dist/cjs/nv-fielddropdown.entry-MsUR1kVe.js +391 -0
  45. package/dist/cjs/nv-fielddropdownitem.entry-BsbvJERH.js +70 -0
  46. package/dist/cjs/nv-fielddropdownitem.entry-DRM-Zljt.js +70 -0
  47. package/dist/cjs/nv-fieldmultiselect.entry-DFr-ZICs.js +1060 -0
  48. package/dist/cjs/nv-fieldmultiselect.entry-Dr8FfT_W.js +1060 -0
  49. package/dist/cjs/nv-fieldnumber.entry-DZsM1vmO.js +126 -0
  50. package/dist/cjs/nv-fieldnumber.entry-ezdDvJh_.js +126 -0
  51. package/dist/cjs/nv-fieldpassword.entry-Biw__M2W.js +115 -0
  52. package/dist/cjs/nv-fieldpassword.entry-D4a8SnGr.js +115 -0
  53. package/dist/cjs/nv-fieldradio.entry-Co7WX2vI.js +102 -0
  54. package/dist/cjs/nv-fieldradio.entry-ZL7KgEZ7.js +102 -0
  55. package/dist/cjs/nv-fieldselect.entry-D6eRsM9T.js +365 -0
  56. package/dist/cjs/nv-fieldselect.entry-sTbv_flF.js +365 -0
  57. package/dist/cjs/nv-fieldtext.entry-DKdxC2cG.js +119 -0
  58. package/dist/cjs/nv-fieldtext.entry-DRPCH6Sf.js +119 -0
  59. package/dist/cjs/nv-fieldtextarea.entry-BwJCUiVW.js +194 -0
  60. package/dist/cjs/nv-fieldtextarea.entry-Dc_TGlmI.js +194 -0
  61. package/dist/cjs/nv-fieldtime.entry-CXRtpWt1.js +1011 -0
  62. package/dist/cjs/nv-fieldtime.entry-uU-IET2k.js +1011 -0
  63. package/dist/cjs/nv-icon.entry-iipuvT3D.js +79 -0
  64. package/dist/cjs/nv-icon.entry-xltjoSa2.js +79 -0
  65. package/dist/cjs/nv-iconbutton_2.entry-BsXvYbCi.js +163 -0
  66. package/dist/cjs/nv-iconbutton_2.entry-Dx4usGkY.js +163 -0
  67. package/dist/cjs/nv-menu.entry-D3qvf_0H.js +227 -0
  68. package/dist/cjs/nv-menu.entry-DFEYw_KZ.js +227 -0
  69. package/dist/cjs/nv-menuitem.entry-3t6TixM7.js +58 -0
  70. package/dist/cjs/nv-menuitem.entry-BeTXOtir.js +58 -0
  71. package/dist/cjs/nv-popover.entry-Bv6kuTK_.js +1960 -0
  72. package/dist/cjs/nv-popover.entry-Zt25YeAv.js +1960 -0
  73. package/dist/cjs/nv-row.entry-BPK1Li7w.js +21 -0
  74. package/dist/cjs/nv-row.entry-Bwzlub3i.js +21 -0
  75. package/dist/cjs/nv-stack.entry-ByaO-0TJ.js +30 -0
  76. package/dist/cjs/nv-stack.entry-bhess4lQ.js +30 -0
  77. package/dist/cjs/nv-table.entry-C7Hd57Iq.js +338 -0
  78. package/dist/cjs/nv-table.entry-D3U4dFcw.js +338 -0
  79. package/dist/cjs/nv-tablecolumn.entry-BDCw_45v.js +18 -0
  80. package/dist/cjs/nv-tablecolumn.entry-BzwWPlLf.js +18 -0
  81. package/dist/cjs/nv-toggle.entry-BTqGH_H0.js +79 -0
  82. package/dist/cjs/nv-toggle.entry-DXpNGkbz.js +79 -0
  83. package/dist/cjs/nv-tooltip.entry-BDZfrLHv.js +44 -0
  84. package/dist/cjs/nv-tooltip.entry-CvCZZV88.js +44 -0
  85. package/dist/cjs/timeline.animation-1b88f052-B8-vCVrY.js +105 -0
  86. package/dist/cjs/v4-a79185f4-2n0dOd_Y.js +56 -0
  87. package/dist/generated/components.js +16 -0
  88. package/dist/types/generated/components.d.ts +19 -3
  89. package/package.json +1 -1
@@ -0,0 +1,355 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-CinzsZ8D.js');
4
+ var inputmaskEdcad3c1 = require('./inputmask-edcad3c1-B9Omti4z.js');
5
+ var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
6
+ require('react');
7
+ require('./_commonjsHelpers-1789f0cf-BJu3ubxk.js');
8
+
9
+ const nvFielddaterangeCss = "nv-fielddaterange{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box}nv-fielddaterange[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fielddaterange[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive)}nv-fielddaterange[success]:not([success=false]){--nv-field-border-default:var(--components-form-field-border-success);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-success)}nv-fielddaterange[required]:not([required=false]) label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fielddaterange label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fielddaterange nv-popover{width:100%;display:block}nv-fielddaterange nv-popover [data-scope=popover]{padding:0;background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border);width:auto}nv-fielddaterange nv-popover [slot=content]{display:block;width:100%}nv-fielddaterange .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;display:flex;align-items:center;gap:8px}nv-fielddaterange .input-wrapper .input-container{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;position:relative;flex:1;min-width:0;padding-right:32px}nv-fielddaterange .input-wrapper .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fielddaterange .input-wrapper .input-container:focus-within,nv-fielddaterange .input-wrapper .input-container:focus-within:hover,nv-fielddaterange .input-wrapper .input-container:focus,nv-fielddaterange .input-wrapper .input-container:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fielddaterange .input-wrapper .input-container:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fielddaterange .input-wrapper .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fielddaterange .input-wrapper .input-container input{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%}nv-fielddaterange .input-wrapper .input-container input:focus{outline:none}nv-fielddaterange .input-wrapper .input-container input::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fielddaterange .input-wrapper .input-container nv-icon.validation{color:var(--nv-field-border-default)}nv-fielddaterange .input-wrapper .input-container .toggle-calendar-icon{position:absolute;right:0;top:50%;transform:translateY(-50%)}nv-fielddaterange .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fielddaterange .error-description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fielddaterange .range-inputs{display:flex;align-items:center;gap:8px;flex:1}nv-fielddaterange .range-inputs input{flex:1;border:none;outline:none;padding:0;font-size:var(--form-field-font-size);color:var(--components-form-field-content-text);background:transparent;min-width:0;text-align:center}nv-fielddaterange .range-inputs input::placeholder{color:var(--components-form-field-content-placeholder)}nv-fielddaterange .range-inputs input:disabled{cursor:not-allowed;color:var(--components-form-field-content-text);background-color:var(--components-form-field-background-disabled)}";
10
+ const NvFielddaterangeStyle0 = nvFielddaterangeCss;
11
+
12
+ const NvFielddaterange = class {
13
+ constructor(hostRef) {
14
+ index.registerInstance(this, hostRef);
15
+ this.dateRangeChange = index.createEvent(this, "dateRangeChange");
16
+ this.popoverId = v4A79185f4.v4();
17
+ /****************************************************************************/
18
+ //#region PROPERTIES
19
+ /**
20
+ * Sets the ID for the start input element and the for attribute of the associated
21
+ * label. If no ID is provided, a random one will be automatically generated.
22
+ */
23
+ this.startInputId = v4A79185f4.v4();
24
+ /**
25
+ * Sets the ID for the end input element and the for attribute of the associated
26
+ * label. If no ID is provided, a random one will be automatically generated.
27
+ */
28
+ this.endInputId = v4A79185f4.v4();
29
+ /**
30
+ * Disables both input fields.
31
+ */
32
+ this.disabled = false;
33
+ /**
34
+ * Sets both input fields as read-only.
35
+ */
36
+ this.readonly = false;
37
+ /**
38
+ * Marks both input fields as required.
39
+ */
40
+ this.required = false;
41
+ /**
42
+ * Indicates an error state.
43
+ */
44
+ this.error = false;
45
+ /**
46
+ * Indicates a success state.
47
+ */
48
+ this.success = false;
49
+ /**
50
+ * Autofocus the start input when the component is mounted.
51
+ */
52
+ this.shouldAutoFocus = false;
53
+ /**
54
+ * The initial value of the date range (in string format).
55
+ */
56
+ this.value = '';
57
+ /**
58
+ * The current value of the start date in string format.
59
+ */
60
+ this.startValue = '';
61
+ /**
62
+ * The current value of the end date in string format.
63
+ */
64
+ this.endValue = '';
65
+ /**
66
+ * Controls the opening of the popover.
67
+ */
68
+ this.open = false;
69
+ /**
70
+ * First day of the week 0 = Sunday, 1 = Monday, etc.
71
+ * @default 1
72
+ */
73
+ this.firstDayOfWeek = 1;
74
+ /**
75
+ * Number of calendars to display
76
+ * @default 2
77
+ */
78
+ this.numberOfCalendars = 2;
79
+ /**
80
+ * Minimum date for selection ISO string format, ex: 2025-01-01
81
+ */
82
+ this.min = '';
83
+ /**
84
+ * Maximum date for selection ISO string format, ex: 2025-12-31
85
+ */
86
+ this.max = '';
87
+ /** Locale for date formatting
88
+ * @default 'en-BE'
89
+ */
90
+ this.locale = 'en-BE';
91
+ /** Date format ex: YYYY-MM-DD, DD-MM-YYYY, etc.
92
+ * @default 'YYYY-MM-DD'
93
+ */
94
+ this.dateFormat = 'YYYY-MM-DD';
95
+ /**
96
+ * Footer placement
97
+ * @default 'bottom'
98
+ */
99
+ this.shortcutsPlacement = 'bottom';
100
+ /**
101
+ * Show action buttons
102
+ * @default false
103
+ */
104
+ this.showActions = false;
105
+ /**
106
+ * Custom actions to display in the footer
107
+ * JSON array of objects with the following properties:
108
+ * - label: string
109
+ * - onClick: function
110
+ * @default '[]'
111
+ */
112
+ this.shortcuts = '[]';
113
+ /**
114
+ * Show week numbers
115
+ * @default true
116
+ */
117
+ // eslint-disable-next-line @stencil-community/ban-default-true
118
+ this.showWeekNumbers = true;
119
+ /**
120
+ * Disabled dates ISO string array
121
+ * @default '[]'
122
+ */
123
+ this.disabledDates = '[]';
124
+ /**
125
+ * Closes the popover when a click is detected outside the component.
126
+ * @param {MouseEvent} event - The mouse event
127
+ */
128
+ this.handleClickOutside = (event) => {
129
+ if (this.open && this.el && !this.el.contains(event.target)) {
130
+ this.open = false;
131
+ }
132
+ };
133
+ /**
134
+ * Handles the input event on the start input element.
135
+ * @param {Event} event - The input event
136
+ */
137
+ this.handleStartInput = (event) => {
138
+ if (this.readonly || this.disabled) {
139
+ event.preventDefault();
140
+ return;
141
+ }
142
+ const input = event.target;
143
+ this.startValue = input.value;
144
+ this.dateRangeChange.emit({ start: input.value, end: this.endValue });
145
+ };
146
+ /**
147
+ * Handles the input event on the end input element.
148
+ * @param {Event} event - The input event
149
+ */
150
+ this.handleEndInput = (event) => {
151
+ if (this.readonly || this.disabled) {
152
+ event.preventDefault();
153
+ return;
154
+ }
155
+ const input = event.target;
156
+ this.endValue = input.value;
157
+ this.dateRangeChange.emit({ start: this.startValue, end: input.value });
158
+ };
159
+ /**
160
+ * Handles focus events on the input elements.
161
+ * @param {FocusEvent} event - The focus event
162
+ */
163
+ this.handleFocus = (event) => {
164
+ if (this.readonly || this.disabled) {
165
+ event.preventDefault();
166
+ event.target.blur();
167
+ return;
168
+ }
169
+ // Open the popover when an input is focused
170
+ this.open = true;
171
+ };
172
+ /**
173
+ * Toggles the opening/closing of the popover.
174
+ */
175
+ this.toggleCalendar = () => {
176
+ if (this.readonly || this.disabled) {
177
+ return;
178
+ }
179
+ this.open = !this.open;
180
+ };
181
+ }
182
+ //#endregion PROPERTIES
183
+ /****************************************************************************/
184
+ //#region METHODS
185
+ /**
186
+ * Converts the nv-calendar date format to the format expected by Inputmask.
187
+ * @param {string} format - The date format to convert
188
+ * @returns {string} The converted format for Inputmask
189
+ */
190
+ convertToInputmaskFormat(format) {
191
+ // Si le format n'est pas spécifié, utiliser le format par défaut YYYY-MM-DD
192
+ if (!format) {
193
+ return 'dd/mm/yyyy';
194
+ }
195
+ // Conversion des formats
196
+ const formatMap = {
197
+ 'YYYY-MM-DD': 'yyyy-mm-dd',
198
+ 'DD/MM/YYYY': 'dd/mm/yyyy',
199
+ 'MM/DD/YYYY': 'mm/dd/yyyy',
200
+ 'DD.MM.YYYY': 'dd.mm.yyyy',
201
+ 'YYYYMMDD': 'yyyymmdd',
202
+ };
203
+ return formatMap[format] || 'dd/mm/yyyy';
204
+ }
205
+ //#endregion METHODS
206
+ /****************************************************************************/
207
+ //#region LIFECYCLE
208
+ connectedCallback() {
209
+ document.addEventListener('click', this.handleClickOutside);
210
+ }
211
+ componentWillLoad() {
212
+ if (this.value) {
213
+ try {
214
+ const range = JSON.parse(this.value);
215
+ this.startValue = range.start || '';
216
+ this.endValue = range.end || '';
217
+ }
218
+ catch (error) {
219
+ console.error('Invalid JSON for value:');
220
+ console.error(error);
221
+ }
222
+ }
223
+ }
224
+ componentDidLoad() {
225
+ const inputs = this.el.querySelectorAll('.input-wrapper input');
226
+ inputs.forEach((input) => {
227
+ const inputMask = new inputmaskEdcad3c1.Inputmask({
228
+ alias: 'datetime',
229
+ inputFormat: this.convertToInputmaskFormat(this.dateFormat),
230
+ placeholder: '_',
231
+ clearIncomplete: false,
232
+ showMaskOnHover: false,
233
+ showMaskOnFocus: false,
234
+ clearMaskOnLostFocus: false,
235
+ insertMode: true,
236
+ rightAlign: false,
237
+ oncomplete: function (e) {
238
+ const input = e.target;
239
+ const event = new CustomEvent('input', { bubbles: true });
240
+ input.dispatchEvent(event);
241
+ },
242
+ });
243
+ inputMask.mask(input);
244
+ // Set the value after applying the mask
245
+ if (input.name === this.startName && this.startValue) {
246
+ requestAnimationFrame(() => {
247
+ input.value = this.startValue;
248
+ const event = new CustomEvent('input', { bubbles: true });
249
+ input.dispatchEvent(event);
250
+ });
251
+ }
252
+ else if (input.name === this.endName && this.endValue) {
253
+ requestAnimationFrame(() => {
254
+ input.value = this.endValue;
255
+ const event = new CustomEvent('input', { bubbles: true });
256
+ input.dispatchEvent(event);
257
+ });
258
+ }
259
+ });
260
+ }
261
+ componentDidRender() {
262
+ const inputs = this.el.querySelectorAll('.input-wrapper input');
263
+ inputs.forEach((input) => {
264
+ const value = input.name === this.startName
265
+ ? this.startValue
266
+ : this.endName
267
+ ? this.endValue
268
+ : '';
269
+ if (value) {
270
+ // Make sure the value is defined both as a property and attribute
271
+ requestAnimationFrame(() => {
272
+ input.value = value;
273
+ input.setAttribute('value', value);
274
+ });
275
+ }
276
+ });
277
+ }
278
+ disconnectedCallback() {
279
+ document.removeEventListener('click', this.handleClickOutside);
280
+ }
281
+ /**
282
+ * Handles the range date selection event from nv-calendar.
283
+ * @param {CustomEvent<DateRange>} event - The custom event
284
+ */
285
+ handleRangeDateChange(event) {
286
+ const { start, end } = event.detail || {};
287
+ // Check that both dates are defined
288
+ if (start && end) {
289
+ this.startValue = start;
290
+ this.endValue = end;
291
+ this.dateRangeChange.emit({
292
+ start: this.startValue,
293
+ end: this.endValue,
294
+ });
295
+ if (!this.showActions) {
296
+ this.open = false;
297
+ }
298
+ }
299
+ }
300
+ handleClosePopover() {
301
+ this.open = false;
302
+ }
303
+ handleApplyDateRange() {
304
+ this.open = false;
305
+ }
306
+ /**
307
+ * Handles keyboard events.
308
+ * @param {KeyboardEvent} event - The keyboard event
309
+ */
310
+ handleKeyDown(event) {
311
+ if (!this.open) {
312
+ if (event.key === 'ArrowDown') {
313
+ this.open = true;
314
+ event.preventDefault();
315
+ return;
316
+ }
317
+ return;
318
+ }
319
+ if (!this.popoverElement) {
320
+ console.warn('nv-fielddaterange -> Popover element is not defined');
321
+ return;
322
+ }
323
+ }
324
+ handleValueChange(newValue) {
325
+ try {
326
+ const range = JSON.parse(newValue);
327
+ this.startValue = range.start || '';
328
+ this.endValue = range.end || '';
329
+ }
330
+ catch (error) {
331
+ console.error('Invalid JSON for value:', error);
332
+ }
333
+ }
334
+ //#endregion EVENTS
335
+ /****************************************************************************/
336
+ //#region RENDER
337
+ render() {
338
+ return (index.h(index.Host, { key: '47a61852ed7771a2248727193570aa2c4654b3bc' }, ((this.label && this.label.length > 0) ||
339
+ this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'a32f8796a15c40712bc0b751ab89fcf84c81dfa3', htmlFor: this.startInputId }, index.h("slot", { key: '549420faa870d7e8f37c4c864de00aae1682f1f9', name: "label" }, this.label))), index.h("nv-popover", { key: 'c93290824f1e7179f7777ef2d9d42146015ec10a', ref: el => (this.popoverElement = el), id: this.popoverId, triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { key: '67d798f2c57bf7cd979386fa2c3d0eb836253af6', slot: "trigger", class: "input-wrapper" }, index.h("slot", { key: '53f700e97f16b40cb3e077460d41ab955cf4e86e', name: "before-input" }), index.h("div", { key: '5829a9716c09fc65b8300b0fe5d590a3e4d1af40', class: "input-container" }, index.h("slot", { key: '401508780bbac13d792d62d8368c47b4fe9fb0c1', name: "leading-input" }), index.h("div", { key: '2e29bd53c161d7bdf5a20e17f7b114f421bf2684', class: "range-inputs" }, index.h("input", { key: 'd1fed6969b96a950e6c73779ac31e7f197cdf122', id: this.startInputId, type: "text", placeholder: this.startPlaceholder, name: this.startName, disabled: this.disabled, readOnly: this.readonly, required: this.required, autofocus: this.shouldAutoFocus, value: this.startValue, onInput: this.handleStartInput, onFocus: this.handleFocus }), index.h("svg", { key: '04aefcadb20a07f023c973a8ee0ce1c90e2eecd4', xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", class: "icon icon-tabler icons-tabler-outline icon-tabler-arrows-move-horizontal" }, index.h("path", { key: '372bb4b2ea27cf6aba7d9753dc25b3c9217a05c0', stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), index.h("path", { key: 'ae5d178f8d00efc52317b8e44df3225c48f50571', d: "M18 9l3 3l-3 3" }), index.h("path", { key: '2669cb7bca3c10769fa8b7907d722e6892744dce', d: "M15 12h6" }), index.h("path", { key: '835d2de77d676af9806d93f9ec0e9a4a451b2463', d: "M6 9l-3 3l3 3" }), index.h("path", { key: '8aef1d99e102825729c4466bf57166529e927c09', d: "M3 12h6" })), index.h("input", { key: 'e40d1202015132524aa3d485641b9cd34d8a20a6', id: this.endInputId, type: "text", placeholder: this.endPlaceholder, name: this.endName, disabled: this.disabled, readOnly: this.readonly, required: this.required, value: this.endValue, onInput: this.handleEndInput, onFocus: this.handleFocus })), index.h("nv-iconbutton", { key: '8ec3ebfb4647e5fb9d89ea9f1e6a60eaa5bb1214', class: "toggle-calendar-icon", name: "calendar", size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide calendar' : 'Show calendar', "aria-pressed": this.open.toString(), onClick: this.toggleCalendar, tabIndex: this.disabled ? -1 : 0 })), index.h("slot", { key: 'e6ff4ed90757947d58dfde04c7063d123a3fd9e2', name: "after-input" })), index.h("div", { key: 'cf7a11988d84dac287b2c524e6005aee29f05ca3', slot: "content" }, index.h("nv-calendar", { key: '3c896e58ba52b0dd82f73f37beb8f70b6ac3f426', dateFormat: this.dateFormat, rangeValue: this.startValue && this.endValue
340
+ ? JSON.stringify({
341
+ start: this.startValue,
342
+ end: this.endValue,
343
+ })
344
+ : '', firstDayOfWeek: this.firstDayOfWeek, numberOfCalendars: this.numberOfCalendars, min: this.min, max: this.max, locale: this.locale, shortcutsPlacement: this.shortcutsPlacement, showActions: this.showActions, shortcuts: this.shortcuts, showWeekNumbers: this.showWeekNumbers, disabledDates: this.disabledDates, selectionType: "range" }))), ((this.description && this.description.length > 0) ||
345
+ this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'f3a968ed2314ec6b0b8f1f5fed8e901e3df10402', class: "description" }, index.h("slot", { key: 'bdfb89b5f462046c1bcbcffdbe46b067868bb077', name: "description" }, this.description))), (this.errorDescription ||
346
+ this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: 'b7a01679e7d1315e3040c8b166f79affbe74d409', hidden: !this.error, class: "error-description" }, this.el.querySelector('[slot="error-description"]') ? (index.h("slot", { name: "error-description" })) : (this.errorDescription))), index.h("slot", { key: 'b318420f0dba209ec8dcebc06f37d94ade46ccea' })));
347
+ }
348
+ get el() { return index.getElement(this); }
349
+ static get watchers() { return {
350
+ "value": ["handleValueChange"]
351
+ }; }
352
+ };
353
+ NvFielddaterange.style = NvFielddaterangeStyle0;
354
+
355
+ exports.nv_fielddaterange = NvFielddaterange;