@nova-design-system/nova-react 3.23.0 → 3.25.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 (103) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/dom.utils-CuXVGECR-8VY5SfMZ.js +177 -0
  3. package/dist/cjs/events.utils-B6GgGra--01N__3wY.js +23 -0
  4. package/dist/cjs/generated/components.server.js +124 -58
  5. package/dist/cjs/{grow.animation-CvHGHBL4-DDIEYBK-.js → grow.animation-D7ep_aVl-BuXEDSK-.js} +0 -21
  6. package/dist/cjs/{i18n.utils-DOZbXX2L-BizoXo6c.js → i18n.utils-IlwlcG9l-ku0bScip.js} +14 -18
  7. package/dist/cjs/index-DUlunl9a.js +9696 -0
  8. package/dist/cjs/{nv-dialog.entry-O47Eol_7.js → index.esm-D3eWMME9-CG1TVKfu.js} +1 -296
  9. package/dist/cjs/index.js +5 -1
  10. package/dist/cjs/{nv-accordion-item.entry-B_l0-ux0.js → nv-accordion-item.entry-CqnjIt4R.js} +8 -7
  11. package/dist/cjs/{nv-accordion.entry-BX8_YuZF.js → nv-accordion.entry-Dx7FmGg_.js} +11 -14
  12. package/dist/cjs/{nv-alert.entry-DCWYR0OK.js → nv-alert.entry-BL3Pdcxd.js} +7 -6
  13. package/dist/cjs/nv-avatar.entry-2dFR4I9_.js +68 -0
  14. package/dist/cjs/nv-badge_2.entry-5FShR2Ax.js +218 -0
  15. package/dist/cjs/nv-breadcrumb.entry-Cfi32bBT.js +49 -0
  16. package/dist/cjs/nv-breadcrumbs.entry-BSgn3KUO.js +21 -0
  17. package/dist/cjs/nv-button.entry-BdQQ_LE7.js +166 -0
  18. package/dist/cjs/{nv-buttongroup.entry-BZaTKN_n.js → nv-buttongroup.entry-BM8CwXFK.js} +13 -7
  19. package/dist/cjs/{nv-calendar.entry-D9ESuu7C.js → nv-calendar.entry-CeKsMGOa.js} +39 -32
  20. package/dist/cjs/nv-col.entry-D-h2PGcz.js +38 -0
  21. package/dist/cjs/{nv-datagrid.entry-DcB5q2oC.js → nv-datagrid.entry-nOBIfqOS.js} +113 -255
  22. package/dist/cjs/{nv-datagridcolumn.entry-BhKOzXA6.js → nv-datagridcolumn.entry-BAzTU_KM.js} +2 -2
  23. package/dist/cjs/nv-dialog.entry-Bi2ZVSe2.js +299 -0
  24. package/dist/cjs/{nv-dialogfooter_2.entry-Dn16bI8a.js → nv-dialogfooter_2.entry-D6lzC-3S.js} +11 -29
  25. package/dist/cjs/nv-drawer.entry-Dp4AfBiF.js +445 -0
  26. package/dist/cjs/nv-drawerfooter_2.entry-DpWSsq6d.js +128 -0
  27. package/dist/cjs/nv-fieldcheckbox.entry-COA3LXnX.js +179 -0
  28. package/dist/cjs/{nv-fielddate.entry-B4P0U8QG.js → nv-fielddate.entry-B8r5RFXd.js} +20 -21
  29. package/dist/cjs/{nv-fielddaterange.entry-BORwYJ-k.js → nv-fielddaterange.entry-C6_Kq93P.js} +20 -19
  30. package/dist/cjs/{nv-fielddropdown.entry-DzBAIynY.js → nv-fielddropdown.entry-B2Dr5zHd.js} +51 -58
  31. package/dist/cjs/nv-fielddropdownitem.entry-DapivVnR.js +69 -0
  32. package/dist/cjs/{nv-fieldmultiselect.entry-DiqRreWh.js → nv-fieldmultiselect.entry-DSpQeiPx.js} +45 -49
  33. package/dist/cjs/nv-fieldnumber.entry-BwxR9sRr.js +189 -0
  34. package/dist/cjs/nv-fieldpassword.entry-BOSU-Skh.js +167 -0
  35. package/dist/cjs/nv-fieldradio.entry-ZFafNY5_.js +105 -0
  36. package/dist/cjs/nv-fieldselect.entry-CfWjQAd9.js +405 -0
  37. package/dist/cjs/{nv-fieldslider.entry-CozmnUfN.js → nv-fieldslider.entry-dDPcWUxs.js} +34 -16
  38. package/dist/cjs/nv-fieldtext.entry-Yaa-mkjJ.js +163 -0
  39. package/dist/cjs/{nv-fieldtextarea.entry-7UrKWDHg.js → nv-fieldtextarea.entry-Dp_l2pKZ.js} +18 -13
  40. package/dist/cjs/{nv-fieldtime.entry-DakOlLiO.js → nv-fieldtime.entry-CWxi4Uel.js} +38 -40
  41. package/dist/cjs/{nv-icon.entry-Db00kB2u.js → nv-icon.entry-Dci11W9S.js} +5 -5
  42. package/dist/cjs/nv-iconbutton_2.entry-A6FKFJT_.js +171 -0
  43. package/dist/cjs/{nv-menu.entry-CK2HdmBt.js → nv-menu.entry-BHaYP-9M.js} +11 -16
  44. package/dist/cjs/nv-menuitem.entry-Cm1vvN25.js +59 -0
  45. package/dist/cjs/nv-notification-bullet.entry-DRlS3Ybc.js +76 -0
  46. package/dist/cjs/nv-notification.entry-BeDmR-XC.js +176 -0
  47. package/dist/cjs/nv-notificationcontainer.entry-C3p_87Dg.js +41 -0
  48. package/dist/cjs/nv-paginationtable.entry-BzEqQOBa.js +231 -0
  49. package/dist/cjs/{nv-popover.entry-mLdLSp6n.js → nv-popover.entry-D2oFn9vL.js} +118 -46
  50. package/dist/cjs/nv-row.entry-hV1kxmrr.js +22 -0
  51. package/dist/cjs/{nv-sidebar.entry-inDVNJ4s.js → nv-sidebar.entry-BJrqJ8K7.js} +12 -8
  52. package/dist/cjs/nv-sidebarcontent.entry-CPfGF7nx.js +22 -0
  53. package/dist/cjs/{nv-sidebardivider.entry-D_yern0R.js → nv-sidebardivider.entry-D2wmzHCO.js} +4 -4
  54. package/dist/cjs/{nv-sidebarfooter.entry-Rkkn9TB_.js → nv-sidebarfooter.entry-C7fqCzjH.js} +4 -4
  55. package/dist/cjs/nv-sidebargroup.entry-qkXnxhs_.js +23 -0
  56. package/dist/cjs/{nv-sidebarheader.entry-CYpD_4pI.js → nv-sidebarheader.entry-DBsOmyQ0.js} +4 -4
  57. package/dist/cjs/{nv-sidebarlogo.entry-BgK03M1v.js → nv-sidebarlogo.entry-902Ht3UR.js} +4 -4
  58. package/dist/cjs/{nv-sidebarnavitem.entry-DglvcCOD.js → nv-sidebarnavitem.entry-CICrllp8.js} +11 -10
  59. package/dist/cjs/nv-sidebarnavsubitem.entry-Q9jjU_7D.js +35 -0
  60. package/dist/cjs/{nv-split.entry-mzg2F66T.js → nv-split.entry-BYIsE2wp.js} +51 -45
  61. package/dist/cjs/nv-stack.entry-DgE5ASGH.js +31 -0
  62. package/dist/cjs/{nv-table.entry-DkbNgxtI.js → nv-table.entry-DHXBu2n1.js} +9 -11
  63. package/dist/cjs/{nv-tableheader.entry-CRVFTQA-.js → nv-tableheader.entry-BijgOxcO.js} +5 -5
  64. package/dist/cjs/nv-toggle.entry-CMI1WdvV.js +82 -0
  65. package/dist/cjs/nv-togglebutton.entry-DAPETEmF.js +66 -0
  66. package/dist/cjs/{nv-togglebuttongroup.entry-BYXX5ejg.js → nv-togglebuttongroup.entry-CzDI1XCr.js} +14 -11
  67. package/dist/cjs/nv-tooltip.entry-DPoUP9iL.js +56 -0
  68. package/dist/cjs/slide.animation-CmH5d1of-BZuw607U.js +90 -0
  69. package/dist/components/NvDatatable/NvDatatable.js +69 -32
  70. package/dist/generated/components.js +38 -0
  71. package/dist/generated/components.server.js +120 -58
  72. package/dist/types/components/NvDatatable/NvDatatable.d.ts +1 -1
  73. package/dist/types/components/NvDatatable/types.d.ts +13 -3
  74. package/dist/types/generated/components.d.ts +63 -43
  75. package/dist/types/generated/components.server.d.ts +63 -43
  76. package/package.json +2 -2
  77. package/dist/cjs/index-CtjeeUI-.js +0 -39617
  78. package/dist/cjs/nv-avatar.entry-C_xZD3Lp.js +0 -68
  79. package/dist/cjs/nv-badge_2.entry-JjqANStV.js +0 -213
  80. package/dist/cjs/nv-breadcrumb.entry-DQZDn6cm.js +0 -46
  81. package/dist/cjs/nv-breadcrumbs.entry-Bz0GjhY_.js +0 -21
  82. package/dist/cjs/nv-button.entry-Br1DH9Vj.js +0 -164
  83. package/dist/cjs/nv-col.entry-CfgPMMxS.js +0 -38
  84. package/dist/cjs/nv-fieldcheckbox.entry-Bx6ArV_b.js +0 -177
  85. package/dist/cjs/nv-fielddropdownitem.entry-C_17isWd.js +0 -73
  86. package/dist/cjs/nv-fieldnumber.entry-C9O4UPp3.js +0 -187
  87. package/dist/cjs/nv-fieldpassword.entry-BfVJNT0A.js +0 -165
  88. package/dist/cjs/nv-fieldradio.entry-CG22oETM.js +0 -103
  89. package/dist/cjs/nv-fieldselect.entry-BPQEtrv2.js +0 -397
  90. package/dist/cjs/nv-fieldtext.entry-BD-z01ru.js +0 -163
  91. package/dist/cjs/nv-iconbutton_2.entry-CaKCa8NT.js +0 -168
  92. package/dist/cjs/nv-menuitem.entry-mKMqCAdz.js +0 -60
  93. package/dist/cjs/nv-notification-bullet.entry-DtbjtFxs.js +0 -77
  94. package/dist/cjs/nv-notification.entry-CLb0gNu3.js +0 -262
  95. package/dist/cjs/nv-notificationcontainer.entry-Cijivlm6.js +0 -41
  96. package/dist/cjs/nv-row.entry-C2C94fcv.js +0 -22
  97. package/dist/cjs/nv-sidebarcontent.entry-DxoljE15.js +0 -22
  98. package/dist/cjs/nv-sidebargroup.entry-C1p9qqxr.js +0 -23
  99. package/dist/cjs/nv-sidebarnavsubitem.entry-Dt1jKmC-.js +0 -35
  100. package/dist/cjs/nv-stack.entry-nnvjTrBy.js +0 -31
  101. package/dist/cjs/nv-toggle.entry-oC9TVkr1.js +0 -80
  102. package/dist/cjs/nv-togglebutton.entry-BTWCzbS9.js +0 -67
  103. package/dist/cjs/nv-tooltip.entry-OJGxfJEh.js +0 -55
package/README.md CHANGED
@@ -232,3 +232,4 @@ In your `index.html`:
232
232
  ```
233
233
 
234
234
  The `nova-fonts-pro.css` file includes both font definitions and the `font-family` rule for the `body`, automatically applying the fonts across your React application.
235
+
@@ -0,0 +1,177 @@
1
+ 'use strict';
2
+
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ /**
5
+ * All properties that should be excluded from the deep copy of an HTML element.
6
+ */
7
+ const excludedProps = new Set([
8
+ // Text and content-related properties
9
+ 'textContent',
10
+ 'innerText',
11
+ 'outerText',
12
+ 'innerHTML',
13
+ 'outerHTML',
14
+ 'text',
15
+ // Form element properties
16
+ 'value',
17
+ 'defaultValue',
18
+ 'checked',
19
+ 'defaultChecked',
20
+ 'selectionStart',
21
+ 'selectionEnd',
22
+ 'selectionDirection',
23
+ 'form',
24
+ 'willValidate',
25
+ 'validity',
26
+ 'validationMessage',
27
+ 'labels',
28
+ 'list',
29
+ 'maxLength',
30
+ 'minLength',
31
+ 'valueAsDate',
32
+ 'valueAsNumber',
33
+ // Editability and namespaces
34
+ 'contentEditable',
35
+ 'isContentEditable',
36
+ 'namespaceURI',
37
+ // Child-related properties (handled recursively)
38
+ 'attributes',
39
+ 'children',
40
+ 'childNodes',
41
+ 'firstChild',
42
+ 'lastChild',
43
+ // Blazor-related properties
44
+ 'origin',
45
+ 'dataset',
46
+ 'attributeStyleMap',
47
+ 'prefix',
48
+ 'localName',
49
+ 'tagName',
50
+ 'shadowRoot',
51
+ 'assignedSlot',
52
+ 'scrollWidth',
53
+ 'scrollHeight',
54
+ 'clientTop',
55
+ 'clientLeft',
56
+ 'clientWidth',
57
+ 'clientHeight',
58
+ 'firstElementChild',
59
+ 'lastElementChild',
60
+ 'childElementCount',
61
+ 'previousElementSibling',
62
+ 'nextElementSibling',
63
+ 'currentCSSZoom',
64
+ 'nodeType',
65
+ 'nodeName',
66
+ 'baseURI',
67
+ 'isConnected',
68
+ 'ownerDocument',
69
+ 'parentNode',
70
+ 'parentElement',
71
+ 'previousSibling',
72
+ 'nextSibling',
73
+ 'ELEMENT_NODE',
74
+ 'ATTRIBUTE_NODE',
75
+ 'TEXT_NODE',
76
+ 'CDATA_SECTION_NODE',
77
+ 'ENTITY_REFERENCE_NODE',
78
+ 'ENTITY_NODE',
79
+ 'PROCESSING_INSTRUCTION_NODE',
80
+ 'COMMENT_NODE',
81
+ 'DOCUMENT_NODE',
82
+ 'DOCUMENT_TYPE_NODE',
83
+ 'DOCUMENT_FRAGMENT_NODE',
84
+ 'NOTATION_NODE',
85
+ 'DOCUMENT_POSITION_DISCONNECTED',
86
+ 'DOCUMENT_POSITION_PRECEDING',
87
+ 'DOCUMENT_POSITION_FOLLOWING',
88
+ 'DOCUMENT_POSITION_CONTAINS',
89
+ 'DOCUMENT_POSITION_CONTAINED_BY',
90
+ 'DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC',
91
+ ]);
92
+ /**
93
+ * Casts a node to an element, or returns null if the node is not an element.
94
+ * @param {ChildNode | Element | null} node - The node to cast.
95
+ * @returns {Element | null} - The casted element, or null if the node is not an element.
96
+ */
97
+ function asElement(node) {
98
+ return node instanceof Element ? node : null;
99
+ }
100
+ /**
101
+ * Deep copy an HTML element with all its attributes, properties, and child nodes.
102
+ * This method is useful for creating a clone of an element that can be safely modified without affecting the original.
103
+ * @param {HTMLElement} element - The HTML element to copy.
104
+ * @returns {HTMLElement} - A deep copy of the HTML element.
105
+ * @example const copy = deepCopyElement(document.getElementById('myElement'));
106
+ */
107
+ function deepCopyElement(element) {
108
+ const copy = document.createElement(element.tagName);
109
+ // ✅ Copy attributes
110
+ Array.from(element.attributes).forEach(attr => {
111
+ copy.setAttribute(attr.name, attr.value);
112
+ });
113
+ // ✅ Dynamically extract relevant properties
114
+ const properties = new Set();
115
+ // Collect only own enumerable properties
116
+ Object.keys(element).forEach(key => properties.add(key));
117
+ // Collect inherited properties from prototypes (HTMLElement -> Element -> Node)
118
+ let proto = Object.getPrototypeOf(element);
119
+ while (proto && proto !== HTMLElement.prototype) {
120
+ Object.keys(proto).forEach(key => properties.add(key));
121
+ proto = Object.getPrototypeOf(proto);
122
+ }
123
+ // ✅ Filter and copy only non-function properties (methods are excluded) and non-event listeners
124
+ properties.forEach(prop => {
125
+ if (typeof element[prop] !== 'function' && // Ignore methods
126
+ !prop.startsWith('on') && // Ignore event listeners (onclick, oninput, etc.)
127
+ !excludedProps.has(prop) // 🚨 Prevent text duplication and irrelevant props
128
+ ) {
129
+ try {
130
+ copy[prop] = element[prop];
131
+ }
132
+ catch (error) {
133
+ console.warn(`Could not copy property ${prop}:`, error.message);
134
+ }
135
+ }
136
+ });
137
+ // ✅ Copy dataset separately
138
+ Object.assign(copy.dataset, element.dataset);
139
+ // ✅ Handle form elements specifically
140
+ if (element instanceof HTMLInputElement) {
141
+ copy.value = element.value;
142
+ copy.checked = element.checked;
143
+ copy.defaultValue = element.defaultValue;
144
+ copy.defaultChecked = element.defaultChecked;
145
+ copy.selectionStart = element.selectionStart;
146
+ copy.selectionEnd = element.selectionEnd;
147
+ copy.selectionDirection = element.selectionDirection;
148
+ }
149
+ else if (element instanceof HTMLTextAreaElement) {
150
+ copy.value = element.value;
151
+ copy.defaultValue = element.defaultValue;
152
+ copy.selectionStart = element.selectionStart;
153
+ copy.selectionEnd = element.selectionEnd;
154
+ copy.selectionDirection =
155
+ element.selectionDirection;
156
+ }
157
+ else if (element instanceof HTMLSelectElement) {
158
+ copy.value = element.value;
159
+ copy.selectedIndex = element.selectedIndex;
160
+ }
161
+ // ✅ Recursively copy child nodes (prevent duplicates)
162
+ element.childNodes.forEach(child => {
163
+ let childCopy;
164
+ if (child.nodeType === Node.ELEMENT_NODE) {
165
+ childCopy = deepCopyElement(child);
166
+ }
167
+ else {
168
+ childCopy = child.cloneNode(true);
169
+ }
170
+ copy.appendChild(childCopy);
171
+ });
172
+ return copy;
173
+ }
174
+
175
+ exports.asElement = asElement;
176
+ exports.deepCopyElement = deepCopyElement;
177
+ exports.excludedProps = excludedProps;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Adds a set of event listeners to the given target.
5
+ * @param {EventsAndListeners} events - The events and listeners to add.
6
+ * @param {Element | Window | Document} target - The target element or window to add the event listeners to.
7
+ * @param {T} context - The class context to bind the event listeners to.
8
+ */
9
+ function addEventListeners(events, target, context) {
10
+ events.forEach(([event, listener]) => target.addEventListener(event, listener.bind(context)));
11
+ }
12
+ /**
13
+ * Removes a set of event listeners from the given target.
14
+ * @param {EventsAndListeners} events - The events and listeners to remove.
15
+ * @param {Element | Window | Document} target - The target element or window to remove the event listeners from.
16
+ * @param {T} context - The class context to bind the event listeners to.
17
+ */
18
+ function removeEventListeners(events, target, context) {
19
+ events.forEach(([event, listener]) => target.removeEventListener(event, listener.bind(context)));
20
+ }
21
+
22
+ exports.addEventListeners = addEventListeners;
23
+ exports.removeEventListeners = removeEventListeners;