@nova-design-system/nova-react 3.2.0 → 3.4.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 (49) hide show
  1. package/dist/cjs/{index-B2jv2KXv.js → index-CrgVjOZF.js} +1121 -1100
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/{nv-alert.entry-pxBJfmIm.js → nv-alert.entry-CW72ajnD.js} +7 -7
  4. package/dist/cjs/{nv-avatar.entry-CHtVctSK.js → nv-avatar.entry-D9wUCu5K.js} +7 -7
  5. package/dist/cjs/{nv-badge_2.entry-BO88KO1O.js → nv-badge_2.entry-CQs2Sf6G.js} +1 -1
  6. package/dist/cjs/{nv-breadcrumb.entry-7azRtyl5.js → nv-breadcrumb.entry-CGrSsjAL.js} +1 -1
  7. package/dist/cjs/{nv-breadcrumbs.entry-DfZVMKpY.js → nv-breadcrumbs.entry-HStUGnwu.js} +1 -1
  8. package/dist/cjs/{nv-button.entry-DW9SblsY.js → nv-button.entry-BJfYc4Ow.js} +7 -7
  9. package/dist/cjs/{nv-calendar.entry-BeayRRor.js → nv-calendar.entry-Co8f_3E5.js} +396 -147
  10. package/dist/cjs/{nv-col.entry-C6oEkSbI.js → nv-col.entry-PJML3P46.js} +1 -1
  11. package/dist/cjs/{nv-datagrid.entry-xhQP6JJP.js → nv-datagrid.entry-Bpwt9yDb.js} +50 -17
  12. package/dist/cjs/{nv-datagridcolumn.entry-CjYmo4fM.js → nv-datagridcolumn.entry-Dfifeiia.js} +1 -1
  13. package/dist/cjs/{nv-dialog.entry-mxETaZbc.js → nv-dialog.entry-eUEzDdrS.js} +3 -3
  14. package/dist/cjs/{nv-dialogfooter_2.entry-DnLg2DHy.js → nv-dialogfooter_2.entry-HQyyE6VN.js} +3 -3
  15. package/dist/cjs/{nv-fieldcheckbox.entry-Be9__i15.js → nv-fieldcheckbox.entry-C5AMgttR.js} +1 -1
  16. package/dist/cjs/nv-fielddate.entry-Dkqz-UqJ.js +303 -0
  17. package/dist/cjs/nv-fielddaterange.entry-D6QmyWHp.js +462 -0
  18. package/dist/cjs/{nv-fielddropdown.entry-BPwviyCp.js → nv-fielddropdown.entry-BpZz90ob.js} +2 -2
  19. package/dist/cjs/{nv-fielddropdownitem.entry-BGuUR9KP.js → nv-fielddropdownitem.entry-BbJ9SKGo.js} +1 -1
  20. package/dist/cjs/{nv-fieldmultiselect.entry-Lrxr1gsi.js → nv-fieldmultiselect.entry-mnYvhkj0.js} +2 -2
  21. package/dist/cjs/nv-fieldnumber.entry-B5ED8fCU.js +130 -0
  22. package/dist/cjs/nv-fieldpassword.entry-ohASip15.js +121 -0
  23. package/dist/cjs/{nv-fieldradio.entry-CDu8xs0p.js → nv-fieldradio.entry-BPipemAC.js} +4 -4
  24. package/dist/cjs/{nv-fieldselect.entry-NEdv8bQK.js → nv-fieldselect.entry-BWZX6L-B.js} +7 -7
  25. package/dist/cjs/{nv-fieldslider.entry-51gF9XPz.js → nv-fieldslider.entry-nmE8TjBA.js} +28 -23
  26. package/dist/cjs/nv-fieldtext.entry-DxoznMYV.js +123 -0
  27. package/dist/cjs/nv-fieldtextarea.entry-BccBiMKe.js +198 -0
  28. package/dist/cjs/{nv-fieldtime.entry-MbaWbVtc.js → nv-fieldtime.entry-BmQ5DFbN.js} +67 -67
  29. package/dist/cjs/{nv-icon.entry-BSSHr-ud.js → nv-icon.entry-DE-sMmDp.js} +8 -8
  30. package/dist/cjs/{nv-iconbutton_2.entry-DMaO-JWz.js → nv-iconbutton_2.entry-DguqeTa3.js} +3 -3
  31. package/dist/cjs/{nv-menu.entry-D5_lj9XB.js → nv-menu.entry-UTPRtlti.js} +2 -2
  32. package/dist/cjs/{nv-menuitem.entry-fhnYI91K.js → nv-menuitem.entry-CaRqhVtk.js} +2 -2
  33. package/dist/cjs/{nv-popover.entry-CYqBaVbr.js → nv-popover.entry-ByFhVB2j.js} +3 -3
  34. package/dist/cjs/{nv-row.entry-BUheLufV.js → nv-row.entry-BIwxIl3Q.js} +2 -2
  35. package/dist/cjs/{nv-stack.entry-DNPce51E.js → nv-stack.entry-xDwyG0Xr.js} +2 -2
  36. package/dist/cjs/{nv-table.entry-DXQM8l3t.js → nv-table.entry-DCMcpbpc.js} +3 -3
  37. package/dist/cjs/{nv-tablecolumn.entry-DROQK_0c.js → nv-tablecolumn.entry-D_kTZ7Mp.js} +1 -1
  38. package/dist/cjs/{nv-toggle.entry-fMzTrdte.js → nv-toggle.entry-tds7tIzF.js} +3 -3
  39. package/dist/cjs/{nv-tooltip.entry-yB2Ek1Cz.js → nv-tooltip.entry-PfQ2HgFG.js} +2 -2
  40. package/dist/generated/components.js +9 -4
  41. package/dist/types/generated/components.d.ts +15 -4
  42. package/package.json +2 -2
  43. package/dist/cjs/nv-fielddate.entry-BlNily-X.js +0 -269
  44. package/dist/cjs/nv-fielddaterange.entry-CycpKoJd.js +0 -408
  45. package/dist/cjs/nv-fieldnumber.entry-B1VySoWj.js +0 -130
  46. package/dist/cjs/nv-fieldpassword.entry-D7Qlx7Bh.js +0 -121
  47. package/dist/cjs/nv-fieldtext.entry-Bug9zMgo.js +0 -123
  48. package/dist/cjs/nv-fieldtextarea.entry-D44HbsVQ.js +0 -198
  49. /package/dist/cjs/{constants-b97e736d-BzFAKCkR.js → constants-4faa1fae-BzFAKCkR.js} +0 -0
@@ -97,7 +97,8 @@ export const NvCalendar = createComponent({
97
97
  react: React,
98
98
  events: {
99
99
  onSingleDateChange: 'singleDateChange',
100
- onRangeDateChange: 'rangeDateChange'
100
+ onRangeDateChange: 'rangeDateChange',
101
+ onValueChanged: 'valueChanged'
101
102
  },
102
103
  defineCustomElement: defineNvCalendar
103
104
  });
@@ -114,7 +115,8 @@ export const NvDatagrid = createComponent({
114
115
  react: React,
115
116
  events: {
116
117
  onAction: 'action',
117
- onSelectedRows: 'selectedRows'
118
+ onSelectedRows: 'selectedRows',
119
+ onStateChanged: 'stateChanged'
118
120
  },
119
121
  defineCustomElement: defineNvDatagrid
120
122
  });
@@ -160,14 +162,17 @@ export const NvFielddate = createComponent({
160
162
  tagName: 'nv-fielddate',
161
163
  elementClass: NvFielddateElement,
162
164
  react: React,
163
- events: { onDateChange: 'dateChange' },
165
+ events: { onValueChanged: 'valueChanged' },
164
166
  defineCustomElement: defineNvFielddate
165
167
  });
166
168
  export const NvFielddaterange = createComponent({
167
169
  tagName: 'nv-fielddaterange',
168
170
  elementClass: NvFielddaterangeElement,
169
171
  react: React,
170
- events: { onDateRangeChange: 'dateRangeChange' },
172
+ events: {
173
+ onDateRangeChange: 'dateRangeChange',
174
+ onValueChanged: 'valueChanged'
175
+ },
171
176
  defineCustomElement: defineNvFielddaterange
172
177
  });
173
178
  export const NvFielddropdown = createComponent({
@@ -63,6 +63,7 @@ export declare const NvButton: StencilReactComponent<NvButtonElement, NvButtonEv
63
63
  type NvCalendarEvents = {
64
64
  onSingleDateChange: EventName<CustomEvent<string>>;
65
65
  onRangeDateChange: EventName<NvCalendarCustomEvent<HTMLNvCalendarElement['rangeValue']>>;
66
+ onValueChanged: EventName<CustomEvent<string>>;
66
67
  };
67
68
  export declare const NvCalendar: StencilReactComponent<NvCalendarElement, NvCalendarEvents>;
68
69
  type NvColEvents = NonNullable<unknown>;
@@ -73,6 +74,17 @@ type NvDatagridEvents = {
73
74
  details: any;
74
75
  }>>;
75
76
  onSelectedRows: EventName<CustomEvent<any[]>>;
77
+ onStateChanged: EventName<CustomEvent<{
78
+ globalFilterSearchTerm: string;
79
+ paginationState: {
80
+ pageIndex: number;
81
+ pageSize: number;
82
+ };
83
+ sortingState: {
84
+ desc: boolean;
85
+ id: string;
86
+ }[];
87
+ }>>;
76
88
  };
77
89
  export declare const NvDatagrid: StencilReactComponent<NvDatagridElement, NvDatagridEvents>;
78
90
  type NvDatagridcolumnEvents = NonNullable<unknown>;
@@ -93,13 +105,12 @@ type NvFieldcheckboxEvents = {
93
105
  };
94
106
  export declare const NvFieldcheckbox: StencilReactComponent<NvFieldcheckboxElement, NvFieldcheckboxEvents>;
95
107
  type NvFielddateEvents = {
96
- onDateChange: EventName<CustomEvent<{
97
- value: string;
98
- }>>;
108
+ onValueChanged: EventName<CustomEvent<string>>;
99
109
  };
100
110
  export declare const NvFielddate: StencilReactComponent<NvFielddateElement, NvFielddateEvents>;
101
111
  type NvFielddaterangeEvents = {
102
112
  onDateRangeChange: EventName<NvFielddaterangeCustomEvent<HTMLNvCalendarElementEventMap['rangeDateChange']>>;
113
+ onValueChanged: EventName<CustomEvent<string>>;
103
114
  };
104
115
  export declare const NvFielddaterange: StencilReactComponent<NvFielddaterangeElement, NvFielddaterangeEvents>;
105
116
  type NvFielddropdownEvents = {
@@ -144,7 +155,7 @@ type NvFieldselectEvents = {
144
155
  };
145
156
  export declare const NvFieldselect: StencilReactComponent<NvFieldselectElement, NvFieldselectEvents>;
146
157
  type NvFieldsliderEvents = {
147
- onValueChanged: EventName<CustomEvent<string>>;
158
+ onValueChanged: EventName<CustomEvent<number[]>>;
148
159
  };
149
160
  export declare const NvFieldslider: StencilReactComponent<NvFieldsliderElement, NvFieldsliderEvents>;
150
161
  type NvFieldtextEvents = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nova-design-system/nova-react",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "description": "Nova is a design system created by Elia Group to empower creators to efficiently build solutions that people love to use.",
5
5
  "author": "Elia Group",
6
6
  "homepage": "https://nova.eliagroup.io",
@@ -30,7 +30,7 @@
30
30
  "tsc": "tsc -p . --outDir ./dist --declarationDir ./dist/types --declaration true",
31
31
  "storybook": "storybook dev -p 6006",
32
32
  "storybook.build": "storybook build -o ../../storybook-static/react",
33
- "clean": "rimraf dist lib/generated lib/stories",
33
+ "clean": "rimraf dist lib/generated",
34
34
  "typecheck": "tsc --emitDeclarationOnly false --noEmit"
35
35
  },
36
36
  "devDependencies": {
@@ -1,269 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('./index-B2jv2KXv.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 nvFielddateCss = "nv-fielddate{--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;max-width:480px}nv-fielddate[fluid]:not([fluid=false]){max-width:unset}nv-fielddate[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-fielddate[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-in-field)}nv-fielddate[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-fielddate[required]:not([required=false]) label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fielddate 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-fielddate nv-popover{width:100%;display:block}nv-fielddate 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-fielddate nv-popover [slot=content]{display:block;width:100%}nv-fielddate nv-popover .datepicker-container{border:none}nv-fielddate .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-fielddate .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}nv-fielddate .input-wrapper .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fielddate .input-wrapper .input-container:focus-within,nv-fielddate .input-wrapper .input-container:focus-within:hover,nv-fielddate .input-wrapper .input-container:focus,nv-fielddate .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-fielddate .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-fielddate .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-fielddate .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-fielddate .input-wrapper .input-container input:focus{outline:none}nv-fielddate .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-fielddate .input-wrapper .input-container>nv-iconbutton{border:0px;border-radius:0px}nv-fielddate .input-wrapper .input-container>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fielddate .input-wrapper .input-container nv-icon.validation{color:var(--nv-field-border-default)}nv-fielddate .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);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-fielddate .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);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)}";
10
- const NvFielddateStyle0 = nvFielddateCss;
11
-
12
- const NvFielddate = class {
13
- constructor(hostRef) {
14
- index.registerInstance(this, hostRef);
15
- this.dateChange = index.createEvent(this, "dateChange");
16
- this.popoverId = v4A79185f4.v4();
17
- /****************************************************************************/
18
- //#region PROPERTIES
19
- /**
20
- * Sets the ID for the 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.inputId = v4A79185f4.v4();
24
- /**
25
- * Disables the input field.
26
- */
27
- this.disabled = false;
28
- /**
29
- * Sets the input field as read-only.
30
- */
31
- this.readonly = false;
32
- /**
33
- * Marks the input field as required.
34
- */
35
- this.required = false;
36
- /**
37
- * Indicates an error state.
38
- */
39
- this.error = false;
40
- /**
41
- * Indicates a success state.
42
- */
43
- this.success = false;
44
- /**
45
- * Autofocus the input when the component is mounted.
46
- */
47
- this.autofocus = false;
48
- /**
49
- * The initial value of the input (date in string format).
50
- */
51
- this.value = '';
52
- /**
53
- * The current value of the input date in string format.
54
- */
55
- this.singleValue = '';
56
- /**
57
- * Controls the opening of the popover.
58
- */
59
- this.open = false;
60
- /**
61
- * First day of the week 0 = Sunday, 1 = Monday, etc.
62
- * @default 1
63
- */
64
- this.firstDayOfWeek = 1;
65
- /**
66
- * Number of calendars to display
67
- * @default 1
68
- */
69
- this.numberOfCalendars = 1;
70
- /**
71
- * Minimum date for selection ISO string format, ex: 2025-01-01
72
- */
73
- this.min = '';
74
- /**
75
- * Maximum date for selection ISO string format, ex: 2025-12-31
76
- */
77
- this.max = '';
78
- /** Locale for date formatting
79
- * @default 'en-BE'
80
- */
81
- this.locale = 'en-BE';
82
- /** Date format ex: YYYY-MM-DD, DD-MM-YYYY, etc.
83
- * @default 'YYYY-MM-DD'
84
- * @note If the date format is in UTC mode, the date will be displayed in UTC time.
85
- * @note If the date format is not in UTC mode, the date will be displayed in the local time.
86
- */
87
- this.dateFormat = 'YYYY-MM-DD';
88
- /**
89
- * Footer placement
90
- * @default 'bottom'
91
- */
92
- this.shortcutsPlacement = 'bottom';
93
- /**
94
- * Show action buttons
95
- * @default false
96
- */
97
- this.showActions = false;
98
- /**
99
- * Allows the field to stretch and fill the entire width of its container.
100
- */
101
- this.fluid = false;
102
- /**
103
- * Closes the popover when a click is detected outside the component.
104
- * @param {MouseEvent} event - The click event.
105
- */
106
- this.handleClickOutside = (event) => {
107
- if (this.open && this.el && !this.el.contains(event.target)) {
108
- this.open = false;
109
- }
110
- };
111
- /**
112
- * Focuses the input when the input container is clicked.
113
- * @param {MouseEvent} event - The click event.
114
- */
115
- this.handleInputContainerClick = (event) => {
116
- if (this.readonly || this.disabled) {
117
- event.preventDefault();
118
- event.stopPropagation();
119
- return;
120
- }
121
- this.inputElement.focus();
122
- // Select the first characters based on the date format
123
- const format = this.dateFormat;
124
- if (format.startsWith('DD')) {
125
- this.inputElement.setSelectionRange(0, 2);
126
- }
127
- else if (format.startsWith('MM')) {
128
- this.inputElement.setSelectionRange(0, 2);
129
- }
130
- else if (format.startsWith('YYYY')) {
131
- this.inputElement.setSelectionRange(0, 4);
132
- }
133
- };
134
- /**
135
- * Handles the input event on the input element.
136
- * Updates the singleValue and emits the dateChange event.
137
- * @param {Event} event - The input event.
138
- */
139
- this.handleInput = (event) => {
140
- if (this.readonly || this.disabled) {
141
- event.preventDefault();
142
- return;
143
- }
144
- const input = event.target;
145
- this.singleValue = input.value;
146
- this.dateChange.emit({ value: input.value });
147
- };
148
- /**
149
- * Toggles the opening/closing of the popover.
150
- */
151
- this.toggleCalendar = () => {
152
- if (this.readonly || this.disabled) {
153
- return;
154
- }
155
- this.open = !this.open;
156
- };
157
- /**
158
- * Handles focus events on the input element.
159
- * @param {FocusEvent} event - The focus event.
160
- */
161
- this.handleFocus = (event) => {
162
- if (this.readonly || this.disabled) {
163
- event.preventDefault();
164
- event.target.blur();
165
- return;
166
- }
167
- };
168
- }
169
- //#endregion PROPERTIES
170
- /****************************************************************************/
171
- //#region METHODS
172
- /**
173
- * Converts the nv-calendar date format to the format expected by Inputmask.
174
- * @param {string} format - The date format.
175
- * @returns {string} Format adapted for Inputmask.
176
- */
177
- convertToInputmaskFormat(format) {
178
- switch (format) {
179
- case 'DD/MM/YYYY':
180
- return 'dd/mm/yyyy';
181
- case 'MM/DD/YYYY':
182
- return 'mm/dd/yyyy';
183
- case 'YYYY-MM-DD':
184
- return 'yyyy-mm-dd';
185
- case 'DD.MM.YYYY':
186
- return 'dd.mm.yyyy';
187
- case 'YYYYMMDD':
188
- return 'yyyymmdd';
189
- default:
190
- return format;
191
- }
192
- }
193
- //#endregion METHODS
194
- /****************************************************************************/
195
- //#region LIFECYCLE
196
- connectedCallback() {
197
- document.addEventListener('click', this.handleClickOutside);
198
- }
199
- componentWillLoad() {
200
- if (this.value) {
201
- this.singleValue = this.value;
202
- }
203
- }
204
- componentDidLoad() {
205
- const inputs = this.el.querySelectorAll('.input-wrapper input');
206
- inputs.forEach((input) => {
207
- inputmaskEdcad3c1.Inputmask({
208
- alias: 'datetime',
209
- inputFormat: this.convertToInputmaskFormat(this.dateFormat),
210
- placeholder: '_'.repeat(this.dateFormat.length),
211
- }).mask(input);
212
- });
213
- }
214
- disconnectedCallback() {
215
- document.removeEventListener('click', this.handleClickOutside);
216
- }
217
- /**
218
- * Handles the single date selection event from nv-calendar.
219
- * Updates the input value and closes the popover.
220
- * @param {CustomEvent} event - The event from nv-calendar.
221
- */
222
- handleSingleDateChange(event) {
223
- const value = event.detail;
224
- this.singleValue = value;
225
- this.dateChange.emit({ value });
226
- if (!this.showActions) {
227
- this.open = false;
228
- }
229
- }
230
- handleClosePopover() {
231
- this.open = false;
232
- }
233
- handleKeyDown(event) {
234
- if (!this.open) {
235
- if (event.key === 'ArrowDown') {
236
- this.open = true;
237
- event.preventDefault();
238
- return;
239
- }
240
- return;
241
- }
242
- // Verify if the popover element is defined
243
- if (!this.popoverElement) {
244
- console.warn('nv-fielddate -> Popover element is not defined');
245
- return;
246
- }
247
- }
248
- handleValueChange(newValue) {
249
- this.singleValue = newValue;
250
- }
251
- //#endregion EVENTS
252
- /****************************************************************************/
253
- //#region RENDER
254
- render() {
255
- return (index.h(index.Host, { key: 'e59d967d20d9f1ab584058795f30a52e50ec2933' }, ((this.label && this.label.length > 0) ||
256
- this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'e159c6731265e73b436093b1aceaf354451245c9', htmlFor: this.inputId }, index.h("slot", { key: '9fc823ee41ec9fc7c8f9a42021277b4729ff0544', name: "label" }, this.label))), index.h("nv-popover", { key: 'cd0e133d5c62b00d4ade7a08184942e0bacc54fe', ref: el => (this.popoverElement = el), id: this.popoverId, triggerMode: "controlled", placement: "bottom-start", open: this.open }, index.h("div", { key: '66b96d21779fd6a8f335af3d2d2bc4df117516d8', slot: "trigger", class: "input-wrapper" }, index.h("slot", { key: 'e2c0e7c249cc4b213afc858281db0a84ab9c4827', name: "before-input" }), index.h("div", { key: '585283bf8880c4d8be911167d27abe34c2f4e21f', class: "input-container", onClick: this.handleInputContainerClick }, index.h("slot", { key: '9c15ffe741369e54fca3a8aeb844e4fbcc93fd5d', name: "leading-input" }), index.h("input", { key: 'bca0e7c19b1081a2849a2a36843628c6f65a4eb2', id: this.inputId, ref: e => (this.inputElement = e), placeholder: this.placeholder, name: this.name, disabled: this.disabled, readOnly: this.readonly, required: this.required, autofocus: this.autofocus, value: this.singleValue, onInput: this.handleInput, onFocus: this.handleFocus, "data-scope": "date" }), this.error && (index.h("nv-icon", { key: 'd610fdea33086a737ef99ab4e4ed69f09dd40045', name: "alert-circle", class: "validation", size: "md" })), this.success && (index.h("nv-icon", { key: 'cce665f259ef8134cc8737f8077c05915b4f7dcc', name: "circle-check", class: "validation", size: "md" })), index.h("nv-iconbutton", { key: 'd27bcd437f35f5445fb9994fd7283c2339bc7ea8', class: "toggle-calendar-icon", name: "calendar" //{this.open ? 'chevron-top' : 'chevron-down'}
257
- ,
258
- 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: '7708b24f9f569094b6f4f850413edd46e210b7e8', name: "after-input" })), index.h("div", { key: '194a99a83c9978691130d17e981c61be742315cf', slot: "content" }, index.h("nv-calendar", { key: '4dc6b2afb3890c5bfb08f070f5b5daac07a76929', dateFormat: this.dateFormat, singleValue: this.singleValue, 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 }))), ((this.description && this.description.length > 0) ||
259
- this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '623af8e048bfb7aef8919fa64a0f1baf04608b69', class: "description" }, index.h("slot", { key: 'cd3eecb2488e19ba1faf139ab4546e6db10468d2', name: "description" }, this.description))), (this.errorDescription ||
260
- this.el.querySelector('[slot="error-description"]')) && (index.h("div", { key: 'eafcfc3c9bb584c78d7f8d6437bbfab269fdaca9', hidden: !this.error, class: "error-description" }, this.el.querySelector('[slot="error-description"]') ? (index.h("slot", { name: "error-description" })) : (this.errorDescription))), index.h("slot", { key: '4b5c23e00f8edb7c0d0d40a5ae89bbb322190c5d' })));
261
- }
262
- get el() { return index.getElement(this); }
263
- static get watchers() { return {
264
- "value": ["handleValueChange"]
265
- }; }
266
- };
267
- NvFielddate.style = NvFielddateStyle0;
268
-
269
- exports.nv_fielddate = NvFielddate;