@nova-design-system/nova-webcomponents 3.3.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 (222) hide show
  1. package/dist/cjs/index-c56424e5.js +8 -8
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/native.cjs.js +1 -1
  4. package/dist/cjs/nv-calendar.cjs.entry.js +20 -4
  5. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  6. package/dist/cjs/nv-datagrid.cjs.entry.js +44 -11
  7. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nv-fielddaterange.cjs.entry.js +28 -5
  9. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  11. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  13. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  14. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  15. package/dist/cjs/nv-fieldslider.cjs.entry.js +7 -7
  16. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  18. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  19. package/dist/cjs/nv-fieldtime.cjs.entry.js +9 -9
  20. package/dist/cjs/nv-icon.cjs.entry.js +1 -1
  21. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  22. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-popover.cjs.entry.js +2 -2
  25. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  28. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  29. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  30. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  31. package/dist/collection/components/nv-calendar/nv-calendar.utils.js +20 -4
  32. package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
  33. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +88 -2
  34. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  35. package/dist/collection/components/nv-datagrid/nv-datagrid.js +89 -10
  36. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  37. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js +0 -1
  38. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js.map +1 -1
  39. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +31 -4
  40. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  41. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +8 -0
  42. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
  43. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +4 -3
  44. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  45. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  46. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  47. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  48. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  49. package/dist/collection/components/nv-fieldslider/partials/field-input.js +1 -1
  50. package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +1 -1
  51. package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +9 -1
  52. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  53. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  54. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  55. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  56. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  57. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  58. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  59. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  60. package/dist/collection/components/nv-popover/nv-popover.js +3 -3
  61. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  62. package/dist/collection/components/nv-row/nv-row.js +1 -1
  63. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  64. package/dist/collection/components/nv-table/nv-table.js +2 -2
  65. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  66. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  67. package/dist/collection/templates/navigation.docs.js +1 -1
  68. package/dist/collection/templates/navigation.docs.js.map +1 -1
  69. package/dist/components/nv-alert.js +1 -1
  70. package/dist/components/nv-avatar.js +1 -1
  71. package/dist/components/nv-badge.js +1 -1
  72. package/dist/components/nv-breadcrumb.js +2 -2
  73. package/dist/components/nv-button.js +1 -1
  74. package/dist/components/nv-calendar.js +1 -1
  75. package/dist/components/nv-datagrid.js +53 -18
  76. package/dist/components/nv-datagrid.js.map +1 -1
  77. package/dist/components/nv-dialog.js +4 -4
  78. package/dist/components/nv-dialogfooter.js +1 -1
  79. package/dist/components/nv-fielddate.js +6 -6
  80. package/dist/components/nv-fielddaterange.js +36 -12
  81. package/dist/components/nv-fielddaterange.js.map +1 -1
  82. package/dist/components/nv-fielddropdown.js +5 -5
  83. package/dist/components/nv-fielddropdownitem.js +1 -1
  84. package/dist/components/nv-fieldmultiselect.js +5 -5
  85. package/dist/components/nv-fieldnumber.js +1 -180
  86. package/dist/components/nv-fieldnumber.js.map +1 -1
  87. package/dist/components/nv-fieldpassword.js +6 -6
  88. package/dist/components/nv-fieldradio.js +3 -3
  89. package/dist/components/nv-fieldselect.js +8 -8
  90. package/dist/components/nv-fieldslider.js +27 -9
  91. package/dist/components/nv-fieldslider.js.map +1 -1
  92. package/dist/components/nv-fieldtext.js +1 -1
  93. package/dist/components/nv-fieldtextarea.js +3 -3
  94. package/dist/components/nv-fieldtime.js +13 -13
  95. package/dist/components/nv-icon.js +1 -1
  96. package/dist/components/nv-iconbutton.js +1 -1
  97. package/dist/components/nv-loader.js +1 -1
  98. package/dist/components/nv-menu.js +4 -4
  99. package/dist/components/nv-menuitem.js +1 -1
  100. package/dist/components/nv-popover.js +1 -1
  101. package/dist/components/nv-row.js +1 -1
  102. package/dist/components/nv-stack.js +1 -1
  103. package/dist/components/nv-table.js +2 -2
  104. package/dist/components/nv-toggle.js +2 -2
  105. package/dist/components/nv-tooltip.js +1 -1
  106. package/dist/components/{p-eabbc885.js → p-131e5140.js} +3 -3
  107. package/dist/components/{p-eabbc885.js.map → p-131e5140.js.map} +1 -1
  108. package/dist/components/{p-95a7581c.js → p-3f567fde.js} +4 -4
  109. package/dist/components/{p-95a7581c.js.map → p-3f567fde.js.map} +1 -1
  110. package/dist/components/{p-7935c1cb.js → p-3f58525b.js} +5 -5
  111. package/dist/components/{p-7935c1cb.js.map → p-3f58525b.js.map} +1 -1
  112. package/dist/components/{p-e28c4707.js → p-953d8b4d.js} +2 -2
  113. package/dist/components/{p-e28c4707.js.map → p-953d8b4d.js.map} +1 -1
  114. package/dist/components/{p-b6d858b2.js → p-9f1e8ef3.js} +2 -2
  115. package/dist/components/{p-b6d858b2.js.map → p-9f1e8ef3.js.map} +1 -1
  116. package/dist/components/{p-5e90b9b8.js → p-a0d7e0cd.js} +21 -5
  117. package/dist/components/p-a0d7e0cd.js.map +1 -0
  118. package/dist/components/{p-8d92f0e1.js → p-a1438b39.js} +3 -3
  119. package/dist/components/{p-8d92f0e1.js.map → p-a1438b39.js.map} +1 -1
  120. package/dist/components/{p-c9006520.js → p-a189d074.js} +4 -4
  121. package/dist/components/{p-c9006520.js.map → p-a189d074.js.map} +1 -1
  122. package/dist/components/p-a29a9396.js +184 -0
  123. package/dist/components/p-a29a9396.js.map +1 -0
  124. package/dist/components/{p-9fa0de38.js → p-b207be02.js} +2 -2
  125. package/dist/components/{p-9fa0de38.js.map → p-b207be02.js.map} +1 -1
  126. package/dist/components/{p-5ee4015d.js → p-dcaf9010.js} +2 -2
  127. package/dist/components/{p-5ee4015d.js.map → p-dcaf9010.js.map} +1 -1
  128. package/dist/components/{p-bb6d1e4e.js → p-dec6fc68.js} +2 -2
  129. package/dist/components/{p-bb6d1e4e.js.map → p-dec6fc68.js.map} +1 -1
  130. package/dist/components/{p-2ae214d2.js → p-df465ef2.js} +2 -2
  131. package/dist/components/{p-2ae214d2.js.map → p-df465ef2.js.map} +1 -1
  132. package/dist/components/{p-3e32b5a1.js → p-f7c7a406.js} +3 -3
  133. package/dist/components/{p-3e32b5a1.js.map → p-f7c7a406.js.map} +1 -1
  134. package/dist/esm/index-a1936cd0.js +8 -8
  135. package/dist/esm/loader.js +1 -1
  136. package/dist/esm/native.js +1 -1
  137. package/dist/esm/nv-calendar.entry.js +20 -4
  138. package/dist/esm/nv-calendar.entry.js.map +1 -1
  139. package/dist/esm/nv-datagrid.entry.js +44 -11
  140. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  141. package/dist/esm/nv-fielddaterange.entry.js +28 -5
  142. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  143. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  144. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  145. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  146. package/dist/esm/nv-fieldradio.entry.js +3 -3
  147. package/dist/esm/nv-fieldselect.entry.js +5 -5
  148. package/dist/esm/nv-fieldslider.entry.js +7 -7
  149. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  150. package/dist/esm/nv-fieldtext.entry.js +3 -3
  151. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  152. package/dist/esm/nv-fieldtime.entry.js +9 -9
  153. package/dist/esm/nv-icon.entry.js +1 -1
  154. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  155. package/dist/esm/nv-menu.entry.js +1 -1
  156. package/dist/esm/nv-menuitem.entry.js +1 -1
  157. package/dist/esm/nv-popover.entry.js +2 -2
  158. package/dist/esm/nv-popover.entry.js.map +1 -1
  159. package/dist/esm/nv-row.entry.js +1 -1
  160. package/dist/esm/nv-stack.entry.js +1 -1
  161. package/dist/esm/nv-table.entry.js +2 -2
  162. package/dist/esm/nv-toggle.entry.js +2 -2
  163. package/dist/esm/nv-tooltip.entry.js +1 -1
  164. package/dist/native/native.esm.js +1 -1
  165. package/dist/native/native.esm.js.map +1 -1
  166. package/dist/native/{p-45459dbb.entry.js → p-01164e86.entry.js} +2 -2
  167. package/dist/native/{p-dc7dd7f3.entry.js → p-0410facd.entry.js} +2 -2
  168. package/dist/native/p-0410facd.entry.js.map +1 -0
  169. package/dist/native/{p-58bb90ad.entry.js → p-0ec2d430.entry.js} +2 -2
  170. package/dist/native/{p-58bb90ad.entry.js.map → p-0ec2d430.entry.js.map} +1 -1
  171. package/dist/native/{p-ed6019fe.entry.js → p-14895e84.entry.js} +2 -2
  172. package/dist/native/p-14895e84.entry.js.map +1 -0
  173. package/dist/native/{p-fdea17ce.entry.js → p-24659a85.entry.js} +2 -2
  174. package/dist/native/{p-838f7842.entry.js → p-2b1e7675.entry.js} +2 -2
  175. package/dist/native/{p-d040bd61.entry.js → p-2bc7d66a.entry.js} +2 -2
  176. package/dist/native/{p-26cf4938.entry.js → p-2c3fb8cc.entry.js} +2 -2
  177. package/dist/native/p-2c3fb8cc.entry.js.map +1 -0
  178. package/dist/native/{p-83288db0.entry.js → p-55df8bf9.entry.js} +2 -2
  179. package/dist/native/{p-5b6c59e0.entry.js → p-7ba03c5d.entry.js} +2 -2
  180. package/dist/native/p-82c4bf56.entry.js +2 -0
  181. package/dist/native/p-82c4bf56.entry.js.map +1 -0
  182. package/dist/native/{p-8fb4e5c0.entry.js → p-9850c1d7.entry.js} +2 -2
  183. package/dist/native/{p-b8f2c1e7.entry.js → p-a0505695.entry.js} +2 -2
  184. package/dist/native/p-a0505695.entry.js.map +1 -0
  185. package/dist/native/{p-f94d7054.entry.js → p-a30206c1.entry.js} +2 -2
  186. package/dist/native/{p-3817efb2.entry.js → p-c7b8b7ba.entry.js} +2 -2
  187. package/dist/native/p-c92d55f9.entry.js +2 -0
  188. package/dist/native/{p-64a76565.entry.js → p-c9d3de9c.entry.js} +2 -2
  189. package/dist/native/{p-e2c1992e.entry.js → p-cbca9326.entry.js} +2 -2
  190. package/dist/native/{p-60c64f2b.entry.js → p-ec87200a.entry.js} +2 -2
  191. package/dist/native/{p-d53e8795.entry.js → p-f377b285.entry.js} +2 -2
  192. package/dist/native/{p-050d6c6c.entry.js → p-ff0f3794.entry.js} +2 -2
  193. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +106 -2
  194. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +2 -0
  195. package/dist/types/components/nv-fieldnumber/nv-fieldnumber.d.ts +1 -0
  196. package/dist/types/components.d.ts +138 -0
  197. package/hydrate/index.js +145 -71
  198. package/hydrate/index.mjs +145 -71
  199. package/package.json +10 -2
  200. package/dist/components/p-5e90b9b8.js.map +0 -1
  201. package/dist/native/p-26cf4938.entry.js.map +0 -1
  202. package/dist/native/p-4f9cdf0b.entry.js +0 -2
  203. package/dist/native/p-abc251aa.entry.js +0 -2
  204. package/dist/native/p-abc251aa.entry.js.map +0 -1
  205. package/dist/native/p-b8f2c1e7.entry.js.map +0 -1
  206. package/dist/native/p-dc7dd7f3.entry.js.map +0 -1
  207. package/dist/native/p-ed6019fe.entry.js.map +0 -1
  208. /package/dist/native/{p-45459dbb.entry.js.map → p-01164e86.entry.js.map} +0 -0
  209. /package/dist/native/{p-fdea17ce.entry.js.map → p-24659a85.entry.js.map} +0 -0
  210. /package/dist/native/{p-838f7842.entry.js.map → p-2b1e7675.entry.js.map} +0 -0
  211. /package/dist/native/{p-d040bd61.entry.js.map → p-2bc7d66a.entry.js.map} +0 -0
  212. /package/dist/native/{p-83288db0.entry.js.map → p-55df8bf9.entry.js.map} +0 -0
  213. /package/dist/native/{p-5b6c59e0.entry.js.map → p-7ba03c5d.entry.js.map} +0 -0
  214. /package/dist/native/{p-8fb4e5c0.entry.js.map → p-9850c1d7.entry.js.map} +0 -0
  215. /package/dist/native/{p-f94d7054.entry.js.map → p-a30206c1.entry.js.map} +0 -0
  216. /package/dist/native/{p-3817efb2.entry.js.map → p-c7b8b7ba.entry.js.map} +0 -0
  217. /package/dist/native/{p-4f9cdf0b.entry.js.map → p-c92d55f9.entry.js.map} +0 -0
  218. /package/dist/native/{p-64a76565.entry.js.map → p-c9d3de9c.entry.js.map} +0 -0
  219. /package/dist/native/{p-e2c1992e.entry.js.map → p-cbca9326.entry.js.map} +0 -0
  220. /package/dist/native/{p-60c64f2b.entry.js.map → p-ec87200a.entry.js.map} +0 -0
  221. /package/dist/native/{p-d53e8795.entry.js.map → p-f377b285.entry.js.map} +0 -0
  222. /package/dist/native/{p-050d6c6c.entry.js.map → p-ff0f3794.entry.js.map} +0 -0
@@ -14,7 +14,7 @@ const NvRow = class {
14
14
  /****************************************************************************/
15
15
  //#region RENDER
16
16
  render() {
17
- return (index.h(index.Host, { key: 'f5e01b297dcede0d11045bc52f7f75278bc66c43' }, index.h("slot", { key: '158a47218c5edff393c19207dbb7987a25779e6d' })));
17
+ return (index.h(index.Host, { key: '5cd3c7b2db57e433f37a086d0cda9bb0335c84fc' }, index.h("slot", { key: 'ca4003ec7100ee2979ba7b00352c19ecf1d62e05' })));
18
18
  }
19
19
  };
20
20
  NvRow.style = NvRowStyle0;
@@ -23,7 +23,7 @@ const NvStack = class {
23
23
  /****************************************************************************/
24
24
  //#region RENDER
25
25
  render() {
26
- return (index.h(index.Host, { key: 'bc18faae4116df9b3a2f944b97c5e5cf096654ae', class: clsx.clsx(this.fill && 'nv-stack-fill', this.flex && 'nv-stack-flex', this.full && 'w-full', this.gutter && !this.vertical && `gap-x-${this.gutter}`, this.gutter && this.vertical && `gap-y-${this.gutter}`, this.vertical && 'nv-stack-vertical') }, index.h("slot", { key: 'fe3a07a01bd3a5898bcd1533c7966241cff21b44' })));
26
+ return (index.h(index.Host, { key: '61662dda82c5191e4d90098e10d01bad6524e8c7', class: clsx.clsx(this.fill && 'nv-stack-fill', this.flex && 'nv-stack-flex', this.full && 'w-full', this.gutter && !this.vertical && `gap-x-${this.gutter}`, this.gutter && this.vertical && `gap-y-${this.gutter}`, this.vertical && 'nv-stack-vertical') }, index.h("slot", { key: '7ee777cdebbfe9d4f6438a2a79407d9f670f2885' })));
27
27
  }
28
28
  };
29
29
  NvStack.style = NvStackStyle0;
@@ -315,14 +315,14 @@ const NvTable = class {
315
315
  const rows = !this.table || this.table === undefined || this.parsedData.length === 0
316
316
  ? []
317
317
  : this.table.data;
318
- return (index.h(index.Host, { key: 'b1df9cabce9289f174177a6b28851c3fa4788529' }, index.h("div", { key: '5e27d3ad0d34f64c9e9b5c9f43ac025603c08530', class: "hidden" }, index.h("slot", { key: 'aaef162487498f64c21fb1071b2863e8fa4e5a5c' })), index.h("slot", { key: '34325af8079d76a7599c1c4516fa8f371ce2fe75', name: "before" }), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (index.h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (index.h("table", { class: "table" }, this.parsedColumns.length > 0 && headerGroups.length > 0 && (index.h("thead", { class: "table-header" }, index.h("tr", null, headerGroups &&
318
+ return (index.h(index.Host, { key: '510ea0b8404254faa7b2add62884da77232bf13d' }, index.h("div", { key: '482a3cfb6fb948d7280b7c0ea70035a9c6385615', class: "hidden" }, index.h("slot", { key: 'da7aa706d453676212e260e9454ed4e5143f2ccc' })), index.h("slot", { key: '78054c9a10623c82d7cc7fef5619053c89b70944', name: "before" }), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (index.h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (index.h("table", { class: "table" }, this.parsedColumns.length > 0 && headerGroups.length > 0 && (index.h("thead", { class: "table-header" }, index.h("tr", null, headerGroups &&
319
319
  headerGroups.map(col => {
320
320
  return (index.h("th", { key: col.name }, this.renderTemplate(this.headerTemplateCache.get(col.name), {}) || col.header));
321
321
  })))), index.h("tbody", { class: "table-body" }, !rows || rows.length === 0 ? (index.h("tr", null, index.h("td", { colSpan: headerGroups.length || 12, class: "no-data" }, this.noDataMessage))) : (rows.map(row => (index.h("tr", { key: JSON.stringify(row) }, headerGroups.map(col => {
322
322
  var _a;
323
323
  return (index.h("td", null, this.renderTemplate(this.templateCache.get(col.name), row) ||
324
324
  ((_a = row[col.name]) !== null && _a !== void 0 ? _a : this.fallbackValue)));
325
- })))))))), index.h("slot", { key: '49cdd7614ab002f5a3de09d414df6bb46c72a28f', name: "after" })));
325
+ })))))))), index.h("slot", { key: '8e5b8eee3870e0d38944370a3d9500f641914935', name: "after" })));
326
326
  }
327
327
  get el() { return index.getElement(this); }
328
328
  static get watchers() { return {
@@ -66,8 +66,8 @@ const NvToggle = class {
66
66
  /****************************************************************************/
67
67
  //#region RENDER
68
68
  render() {
69
- return (index.h(index.Host, { key: 'cb88cfea301859b05adedf15690027b21cd4837e', class: clsx.clsx(this.labelPlacement === 'before' && 'label-placement-before') }, index.h("div", { key: '307011c7dcbbe5a6dfc9b2bc1a5bd9842b99f68c', class: "input-container" }, index.h("input", { key: 'ff87395a3a737a1daaae243176975856a571cac1', type: "checkbox", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: Boolean(this.checked), disabled: this.disabled || this.readonly, readonly: this.readonly })), index.h("div", { key: 'c190ac33b861a5f92869c83249b441e243b2ee21', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'cfd87cc4e3c68bedf4729a0b62f192077c4b4813', htmlFor: this.inputId, class: clsx.clsx(this.hideLabel && 'visually-hidden') }, index.h("slot", { key: '81de13cc0e98b4bdb494cc20fb1af59be66952b0', name: "label" }, this.label))), (this.description ||
70
- this.el.querySelector('[slot="description"]')) && (index.h("div", { key: '69647c010b34a94afb215f9e56b5fba0bd114581', class: "description" }, index.h("slot", { key: 'ecf7b68b862976907c2d4605a65ee24875b926d3', name: "description" }, this.description))))));
69
+ return (index.h(index.Host, { key: '4c1b964876714244584d1dd4e949cf920312d0bf', class: clsx.clsx(this.labelPlacement === 'before' && 'label-placement-before') }, index.h("div", { key: 'b593008916115afefa8eebeaffde07c3a576089b', class: "input-container" }, index.h("input", { key: '20783b13ea6e1b427fd79db1ff46d5685e7c7d89', type: "checkbox", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: Boolean(this.checked), disabled: this.disabled || this.readonly, readonly: this.readonly })), index.h("div", { key: 'b2c9e1d17dbf53a42fdd0612c1ba507ea15c2775', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'd5ac7d57befa88f4b1fa752d95dce9ea50db577c', htmlFor: this.inputId, class: clsx.clsx(this.hideLabel && 'visually-hidden') }, index.h("slot", { key: '63817f8322de43590bd2052d3695a3e090c466bc', name: "label" }, this.label))), (this.description ||
70
+ this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'f33e45707f6cde570f7d4e3f44aece36413cf7c8', class: "description" }, index.h("slot", { key: '3dcbe64426121cd2541fc545606f1b1381d51fdf', name: "description" }, this.description))))));
71
71
  }
72
72
  static get formAssociated() { return true; }
73
73
  get el() { return index.getElement(this); }
@@ -36,7 +36,7 @@ const NvTooltip = class {
36
36
  /****************************************************************************/
37
37
  //#region RENDER
38
38
  render() {
39
- return (index.h(index.Host, { key: '893071a64f973b33dccbf3acec95db46e592b717' }, index.h("slot", { key: '010776550ed5f942c02540b12756f0c0f64e31c4' }), index.h("nv-popover", { key: '21a669333da9e55b697f8a0b0962a8328beac55a', triggerMode: "hover", hasArrow: true, placement: this.placement, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, index.h("p", { key: 'ed89d0bfe1e9e8d12e33e3d7fb0f5b7f2685bbb9', slot: "content" }, this.message), index.h("slot", { key: 'fa2d9602e003f1da5c3d23156db7b2ac482966bd', name: "content" }))));
39
+ return (index.h(index.Host, { key: '34431c56ab8f0d9581d7bae170eea34972594a3c' }, index.h("slot", { key: '0e9b3492b07b23e3eb5e7475d174aca7f3d18cdb' }), index.h("nv-popover", { key: '2a3eccd8a928114ad8df6ce67a19948fab772654', triggerMode: "hover", hasArrow: true, placement: this.placement, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, index.h("p", { key: '286fad171703def16f9a1b95f2e8dc01afc062a0', slot: "content" }, this.message), index.h("slot", { key: '502d9abb156d4a40f36f442a6629e08b754a983f', name: "content" }))));
40
40
  }
41
41
  get el() { return index.getElement(this); }
42
42
  };
@@ -200,10 +200,26 @@ export function parseDate(dateInput, dateFormat) {
200
200
  parsed = dayjs(dateInput, dateFormat, true);
201
201
  }
202
202
  if (!parsed.isValid()) {
203
- console.error(`Parsing error:`, {
204
- dateInput,
205
- dateFormat: dateFormat,
206
- });
203
+ // Check if the date input contains placeholder characters (incomplete input from Inputmask)
204
+ // This specifically targets partial dates being typed with placeholder characters
205
+ const hasPlaceholderChars = typeof dateInput === 'string' &&
206
+ (dateInput.includes('_') ||
207
+ dateInput.includes('-_') ||
208
+ dateInput.includes('/_') ||
209
+ dateInput.includes('._'));
210
+ // Check if it looks like a partial date being typed (starts with valid pattern)
211
+ const looksLikePartialDate = typeof dateInput === 'string' &&
212
+ dateInput.length < dateFormat.length &&
213
+ /^[\d\-/.]*$/.test(dateInput) && // Only contains digits and date separators
214
+ dateInput.length > 0;
215
+ const isIncompleteInput = hasPlaceholderChars || looksLikePartialDate;
216
+ // Only log error if it's not an incomplete input (to avoid spam during typing)
217
+ if (!isIncompleteInput) {
218
+ console.error(`Parsing error:`, {
219
+ dateInput,
220
+ dateFormat: dateFormat,
221
+ });
222
+ }
207
223
  return null;
208
224
  }
209
225
  return parsed.toDate();
@@ -1 +1 @@
1
- {"version":3,"file":"nv-calendar.utils.js","sourceRoot":"","sources":["../../../src/components/nv-calendar/nv-calendar.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,UAAU,MAAM,yBAAyB,CAAC;AAEjD,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,IAAU,EACV,OAGC;IAED,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,KAAK,0BAA0B,CAAC;IAE1E,4BAA4B;IAC5B,IAAI,eAAe,EAAE,CAAC;QACpB,wEAAwE;QACxE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,kBAAkB,CAAC;QAC1D,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED,yDAAyD;IACzD,OAAO,SAAS;QACd,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QAC9C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,IAAiB,EACjB,WAAwB,EACxB,OAGC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CACL,IAAI,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,cAAc,EAAE;YACtD,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;YAChD,IAAI,CAAC,UAAU,EAAE,KAAK,WAAW,CAAC,UAAU,EAAE,CAC/C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CACL,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;YAChD,IAAI,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,QAAQ,EAAE;YAC1C,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,OAAO,EAAE,CACzC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,WAAiB,EACjB,OAGC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CACL,IAAI,CAAC,cAAc,EAAE,GAAG,WAAW,CAAC,cAAc,EAAE;YACpD,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,cAAc,EAAE;gBACrD,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;YACjD,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,cAAc,EAAE;gBACrD,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;gBAChD,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,CACjD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CACL,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE;YAC9C,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;gBAC/C,IAAI,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;gBAC/C,IAAI,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,QAAQ,EAAE;gBAC1C,IAAI,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAU,EACV,WAAiB,EACjB,OAGC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CACL,IAAI,CAAC,cAAc,EAAE,GAAG,WAAW,CAAC,cAAc,EAAE;YACpD,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,cAAc,EAAE;gBACrD,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;YACjD,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,WAAW,CAAC,cAAc,EAAE;gBACrD,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;gBAChD,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,CACjD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CACL,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE;YAC9C,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;gBAC/C,IAAI,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;gBAC/C,IAAI,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,QAAQ,EAAE;gBAC1C,IAAI,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,4DAA4D;IAC5D,MAAM,CAAC,GAAG,IAAI,IAAI,CAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAC9D,CAAC;IAEF,8CAA8C;IAC9C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE7D,2CAA2C;IAC3C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3D,4BAA4B;IAC5B,OAAO,CACL,CAAC;QACD,IAAI,CAAC,KAAK,CACR,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ;YACzC,CAAC;YACD,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,CAAC,CACJ,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,SAAwB,EACxB,UAAkB;IAElB,IAAI,SAAS,YAAY,IAAI;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE3C,+EAA+E;IAC/E,qEAAqE;IACrE,IACE,OAAO,SAAS,KAAK,QAAQ;QAC7B,8CAA8C,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9D,CAAC;QACD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACjC,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2CAA2C;YAC3C,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,SAAS;YACd,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE;YACxC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,2CAA2C;IAC3C,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,gBAAgB,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,SAAS;YACd,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE;YACxC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,2BAA2B;IAC3B,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9B,4DAA4D;QAC5D,MAAM,gBAAgB,GAAG,CAAC,KAAK,GAAG,kBAAkB,CAAC,GAAG,KAAK,CAAC;QAC9D,OAAO,SAAS;YACd,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE;YACxC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,8DAA8D;IAC9D,IAAI,MAAM,CAAC;IACX,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC9B,SAAS;YACT,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC","sourcesContent":["import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport utc from 'dayjs/plugin/utc';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\n\ndayjs.extend(customParseFormat);\ndayjs.extend(utc);\ndayjs.extend(weekOfYear);\n\n/**\n * Formats a date to a string according to the format\n * @param {Date} date - Date to format\n * @returns {string} Formatted date\n * @param {Object} options - Additional options\n * @param {string} options.dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n */\nexport function formatDate(\n date: Date,\n options: {\n /** Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.) */\n dateFormat: string;\n },\n): string {\n if (!date) return '';\n\n const isUTCMode = options.dateFormat.includes('Z');\n const isISO8601Format = options.dateFormat === 'YYYY-MM-DD[T]HH:mm:ss[Z]';\n\n // Special case for ISO 8601\n if (isISO8601Format) {\n // For the ISO 8601 format, use directly toISOString() which is standard\n return date.toISOString();\n }\n\n // If the format is \"Ticks\", convert the time to C# ticks\n if (options.dateFormat === 'Ticks') {\n const ticks = date.getTime() * 10000 + 621355968000000000;\n return ticks.toString();\n }\n\n // If the format is \"X\" (Unix Seconds)\n if (options.dateFormat === 'X') {\n return dayjs(date).unix().toString();\n }\n\n // If the format is \"x\" (Unix Milliseconds)\n if (options.dateFormat === 'x') {\n return date.getTime().toString();\n }\n\n // Otherwise, format according to the mode (UTC or local)\n return isUTCMode\n ? dayjs(date).utc().format(options.dateFormat)\n : dayjs(date).format(options.dateFormat);\n}\n\n/**\n * Checks if two dates are identical\n * @param {Date | null} date - First date\n * @param {Date | null} compareDate - Second date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if the dates are identical\n */\nexport function isSameDate(\n date: Date | null,\n compareDate: Date | null,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() === compareDate.getUTCDate()\n );\n } else {\n return (\n date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() === compareDate.getDate()\n );\n }\n}\n\n/**\n * Checks if a date is identical or before another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` <= `compareDate`\n */\nexport function isSameOrBefore(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() < compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() < compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() <= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() < compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() < compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() <= compareDate.getDate())\n );\n }\n}\n\n/**\n * Checks if a date is identical or after another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` >= `compareDate`\n */\nexport function isSameOrAfter(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() > compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() > compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() >= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() > compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() > compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() >= compareDate.getDate())\n );\n }\n}\n\n/**\n * Calculates the ISO week number\n * @param {Date} date - Date to calculate\n * @returns {number} Week number\n */\nexport function getWeekNumber(date: Date): number {\n // Create a copy of the date to avoid modifying the original\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n\n // Adjust to the same week Thursday (ISO 8601)\n d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));\n\n // Calculate the first Thursday of the year\n const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));\n\n // Calculate the week number\n return (\n 1 +\n Math.round(\n ((d.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getUTCDay() + 6) % 7)) /\n 7,\n )\n );\n}\n\n/**\n * Convert a date string/Date to a Date without timezone offset\n * @param {string | Date} dateInput - Date under string or Date object form\n * @param {string} dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n * @returns {Date} Date in Date form without timezone offset\n */\nexport function parseDate(\n dateInput: string | Date,\n dateFormat: string,\n): Date | null {\n if (dateInput instanceof Date) return dateInput;\n const isUTCMode = dateFormat.includes('Z');\n\n // Attempt to automatically detect ISO 8601 format (generated by toISOString())\n // The regex checks the standard ISO format: YYYY-MM-DDTHH:mm:ss.sssZ\n if (\n typeof dateInput === 'string' &&\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z$/.test(dateInput)\n ) {\n try {\n const parsedDate = new Date(dateInput);\n if (!isNaN(parsedDate.getTime())) {\n return parsedDate;\n }\n } catch (error) {\n // If it fails, continue with other methods\n console.error('Error parsing ISO date:', error);\n }\n }\n\n // Handling Unix Seconds (\"X\") formats\n if (dateFormat === 'X') {\n const unixSeconds = Number(dateInput);\n if (isNaN(unixSeconds)) return null;\n return isUTCMode\n ? dayjs.unix(unixSeconds).utc().toDate()\n : dayjs.unix(unixSeconds).toDate();\n }\n\n // Handling Unix Milliseconds (\"x\") formats\n if (dateFormat === 'x') {\n const unixMilliseconds = Number(dateInput);\n if (isNaN(unixMilliseconds)) return null;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // Handling C# Ticks format\n if (dateFormat === 'Ticks') {\n const ticks = Number(dateInput);\n if (isNaN(ticks)) return null;\n // Conversion of .NET ticks to milliseconds since Unix epoch\n const unixMilliseconds = (ticks - 621355968000000000) / 10000;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // For all other formats, use customParseFormat in strict mode\n let parsed;\n if (isUTCMode) {\n parsed = dayjs.utc(dateInput, dateFormat, true);\n } else {\n parsed = dayjs(dateInput, dateFormat, true);\n }\n if (!parsed.isValid()) {\n console.error(`Parsing error:`, {\n dateInput,\n dateFormat: dateFormat,\n });\n return null;\n }\n return parsed.toDate();\n}\n"]}
1
+ {"version":3,"file":"nv-calendar.utils.js","sourceRoot":"","sources":["../../../src/components/nv-calendar/nv-calendar.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport utc from 'dayjs/plugin/utc';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\n\ndayjs.extend(customParseFormat);\ndayjs.extend(utc);\ndayjs.extend(weekOfYear);\n\n/**\n * Formats a date to a string according to the format\n * @param {Date} date - Date to format\n * @returns {string} Formatted date\n * @param {Object} options - Additional options\n * @param {string} options.dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n */\nexport function formatDate(\n date: Date,\n options: {\n /** Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.) */\n dateFormat: string;\n },\n): string {\n if (!date) return '';\n\n const isUTCMode = options.dateFormat.includes('Z');\n const isISO8601Format = options.dateFormat === 'YYYY-MM-DD[T]HH:mm:ss[Z]';\n\n // Special case for ISO 8601\n if (isISO8601Format) {\n // For the ISO 8601 format, use directly toISOString() which is standard\n return date.toISOString();\n }\n\n // If the format is \"Ticks\", convert the time to C# ticks\n if (options.dateFormat === 'Ticks') {\n const ticks = date.getTime() * 10000 + 621355968000000000;\n return ticks.toString();\n }\n\n // If the format is \"X\" (Unix Seconds)\n if (options.dateFormat === 'X') {\n return dayjs(date).unix().toString();\n }\n\n // If the format is \"x\" (Unix Milliseconds)\n if (options.dateFormat === 'x') {\n return date.getTime().toString();\n }\n\n // Otherwise, format according to the mode (UTC or local)\n return isUTCMode\n ? dayjs(date).utc().format(options.dateFormat)\n : dayjs(date).format(options.dateFormat);\n}\n\n/**\n * Checks if two dates are identical\n * @param {Date | null} date - First date\n * @param {Date | null} compareDate - Second date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if the dates are identical\n */\nexport function isSameDate(\n date: Date | null,\n compareDate: Date | null,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() === compareDate.getUTCDate()\n );\n } else {\n return (\n date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() === compareDate.getDate()\n );\n }\n}\n\n/**\n * Checks if a date is identical or before another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` <= `compareDate`\n */\nexport function isSameOrBefore(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() < compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() < compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() <= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() < compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() < compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() <= compareDate.getDate())\n );\n }\n}\n\n/**\n * Checks if a date is identical or after another date\n * @param {Date} date - Date to check\n * @param {Date} compareDate - Reference date\n * @param {Object} options - Additional options\n * @param {boolean} options.isUTCMode - Whether the dates are in UTC mode\n * @returns {boolean} true if `date` >= `compareDate`\n */\nexport function isSameOrAfter(\n date: Date,\n compareDate: Date,\n options: {\n /** Whether the dates are in UTC mode */\n isUTCMode: boolean;\n },\n): boolean {\n if (!date || !compareDate) return false;\n\n if (options.isUTCMode) {\n return (\n date.getUTCFullYear() > compareDate.getUTCFullYear() ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() > compareDate.getUTCMonth()) ||\n (date.getUTCFullYear() === compareDate.getUTCFullYear() &&\n date.getUTCMonth() === compareDate.getUTCMonth() &&\n date.getUTCDate() >= compareDate.getUTCDate())\n );\n } else {\n return (\n date.getFullYear() > compareDate.getFullYear() ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() > compareDate.getMonth()) ||\n (date.getFullYear() === compareDate.getFullYear() &&\n date.getMonth() === compareDate.getMonth() &&\n date.getDate() >= compareDate.getDate())\n );\n }\n}\n\n/**\n * Calculates the ISO week number\n * @param {Date} date - Date to calculate\n * @returns {number} Week number\n */\nexport function getWeekNumber(date: Date): number {\n // Create a copy of the date to avoid modifying the original\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n\n // Adjust to the same week Thursday (ISO 8601)\n d.setUTCDate(d.getUTCDate() + 3 - ((d.getUTCDay() + 6) % 7));\n\n // Calculate the first Thursday of the year\n const week1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 4));\n\n // Calculate the week number\n return (\n 1 +\n Math.round(\n ((d.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getUTCDay() + 6) % 7)) /\n 7,\n )\n );\n}\n\n/**\n * Convert a date string/Date to a Date without timezone offset\n * @param {string | Date} dateInput - Date under string or Date object form\n * @param {string} dateFormat - Date format (ex: 'YYYY-MM-DD', 'DD-MM-YYYY', etc.)\n * @returns {Date} Date in Date form without timezone offset\n */\nexport function parseDate(\n dateInput: string | Date,\n dateFormat: string,\n): Date | null {\n if (dateInput instanceof Date) return dateInput;\n const isUTCMode = dateFormat.includes('Z');\n\n // Attempt to automatically detect ISO 8601 format (generated by toISOString())\n // The regex checks the standard ISO format: YYYY-MM-DDTHH:mm:ss.sssZ\n if (\n typeof dateInput === 'string' &&\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z$/.test(dateInput)\n ) {\n try {\n const parsedDate = new Date(dateInput);\n if (!isNaN(parsedDate.getTime())) {\n return parsedDate;\n }\n } catch (error) {\n // If it fails, continue with other methods\n console.error('Error parsing ISO date:', error);\n }\n }\n\n // Handling Unix Seconds (\"X\") formats\n if (dateFormat === 'X') {\n const unixSeconds = Number(dateInput);\n if (isNaN(unixSeconds)) return null;\n return isUTCMode\n ? dayjs.unix(unixSeconds).utc().toDate()\n : dayjs.unix(unixSeconds).toDate();\n }\n\n // Handling Unix Milliseconds (\"x\") formats\n if (dateFormat === 'x') {\n const unixMilliseconds = Number(dateInput);\n if (isNaN(unixMilliseconds)) return null;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // Handling C# Ticks format\n if (dateFormat === 'Ticks') {\n const ticks = Number(dateInput);\n if (isNaN(ticks)) return null;\n // Conversion of .NET ticks to milliseconds since Unix epoch\n const unixMilliseconds = (ticks - 621355968000000000) / 10000;\n return isUTCMode\n ? dayjs(unixMilliseconds).utc().toDate()\n : dayjs(unixMilliseconds).toDate();\n }\n\n // For all other formats, use customParseFormat in strict mode\n let parsed;\n if (isUTCMode) {\n parsed = dayjs.utc(dateInput, dateFormat, true);\n } else {\n parsed = dayjs(dateInput, dateFormat, true);\n }\n if (!parsed.isValid()) {\n // Check if the date input contains placeholder characters (incomplete input from Inputmask)\n // This specifically targets partial dates being typed with placeholder characters\n const hasPlaceholderChars =\n typeof dateInput === 'string' &&\n (dateInput.includes('_') ||\n dateInput.includes('-_') ||\n dateInput.includes('/_') ||\n dateInput.includes('._'));\n\n // Check if it looks like a partial date being typed (starts with valid pattern)\n const looksLikePartialDate =\n typeof dateInput === 'string' &&\n dateInput.length < dateFormat.length &&\n /^[\\d\\-/.]*$/.test(dateInput) && // Only contains digits and date separators\n dateInput.length > 0;\n\n const isIncompleteInput = hasPlaceholderChars || looksLikePartialDate;\n\n // Only log error if it's not an incomplete input (to avoid spam during typing)\n if (!isIncompleteInput) {\n console.error(`Parsing error:`, {\n dateInput,\n dateFormat: dateFormat,\n });\n }\n return null;\n }\n return parsed.toDate();\n}\n"]}
@@ -216,7 +216,7 @@ const NvDatagridDocs = {
216
216
  },
217
217
  ],
218
218
  },
219
- template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { class: "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
219
+ template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { "data-class": "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
220
220
  },
221
221
  {
222
222
  name: 'WithDataAndTemplateComplexDataAndColumnGroup',
@@ -260,7 +260,7 @@ const NvDatagridDocs = {
260
260
  },
261
261
  ],
262
262
  },
263
- template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "firstName", header: "FirstName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "FirstName")), h("div", { slot: "cell" }, h("strong", null, "__firstName__"))), h("nv-datagridcolumn", { accessor: "lastName", header: "LastName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "LastName")), h("div", { slot: "cell" }, h("strong", null, "__lastName__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address", group: "Contact" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address", group: "Contact" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { class: "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
263
+ template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "firstName", header: "FirstName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "FirstName")), h("div", { slot: "cell" }, h("strong", null, "__firstName__"))), h("nv-datagridcolumn", { accessor: "lastName", header: "LastName", group: "Name" }, h("div", { slot: "header" }, h("strong", null, "LastName")), h("div", { slot: "cell" }, h("strong", null, "__lastName__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address", group: "Contact" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "address", header: "Address", group: "Contact" }, h("div", { slot: "cell" }, h("span", null, "__address.city__, __address.country__"))), h("nv-datagridcolumn", { accessor: "status", header: "Status" }, h("div", { slot: "header" }, h("span", { "data-class": "text-md font-bold text-low" }, "Status")), h("div", { slot: "cell" }, h("nv-badge", { color: "__status.color__", "lead-icon": "__status.icon__" }, "__status.label__"))), h("nv-datagridcolumn", { accessor: "actions" }, h("div", { slot: "header" }), h("div", { slot: "cell" }, h("nv-iconbutton", { size: "xs", name: "pencil", "data-bind-event": "click:edit:id" }), h("nv-iconbutton", { size: "xs", name: "trash", "data-bind-event": "click:delete:id" }), h("nv-iconbutton", { size: "xs", name: "mail", "data-bind-event": "click:sendEmail:id,email" }))))),
264
264
  },
265
265
  {
266
266
  name: nameof(x => x.enableGlobalFilter),
@@ -881,6 +881,92 @@ const NvDatagridDocs = {
881
881
  },
882
882
  template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Mail Address" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "roles", header: "Role(s)", "repeat-template": true }, h("div", { slot: "cell" }, h("nv-badge", { label: "__roles.name__" }))))),
883
883
  },
884
+ {
885
+ name: 'StateBinding',
886
+ description: 'Demonstrates the state binding functionality of the datagrid component, showing how to maintain grid state (pagination, sorting, filtering) across component re-renders.',
887
+ args: {
888
+ data: [
889
+ {
890
+ id: 1,
891
+ name: 'Alice',
892
+ age: 25,
893
+ email: 'alice@mail.com',
894
+ role: 'Admin',
895
+ },
896
+ { id: 2, name: 'Bob', age: 30, email: 'bob@mail.com', role: 'User' },
897
+ {
898
+ id: 3,
899
+ name: 'Charlie',
900
+ age: 35,
901
+ email: 'charlie@mail.com',
902
+ role: 'User',
903
+ },
904
+ {
905
+ id: 4,
906
+ name: 'David',
907
+ age: 40,
908
+ email: 'david@mail.com',
909
+ role: 'Admin',
910
+ },
911
+ { id: 5, name: 'Eve', age: 45, email: 'eve@mail.com', role: 'User' },
912
+ {
913
+ id: 6,
914
+ name: 'Frank',
915
+ age: 50,
916
+ email: 'frank@mail.com',
917
+ role: 'Guest',
918
+ },
919
+ {
920
+ id: 7,
921
+ name: 'Grace',
922
+ age: 55,
923
+ email: 'grace@mail.com',
924
+ role: 'Admin',
925
+ },
926
+ {
927
+ id: 8,
928
+ name: 'Helen',
929
+ age: 60,
930
+ email: 'helen@mail.com',
931
+ role: 'User',
932
+ },
933
+ { id: 9, name: 'Ivy', age: 65, email: 'ivy@mail.com', role: 'Guest' },
934
+ {
935
+ id: 10,
936
+ name: 'Jack',
937
+ age: 70,
938
+ email: 'jack@mail.com',
939
+ role: 'User',
940
+ },
941
+ {
942
+ id: 11,
943
+ name: 'Kate',
944
+ age: 75,
945
+ email: 'kate@mail.com',
946
+ role: 'Admin',
947
+ },
948
+ {
949
+ id: 12,
950
+ name: 'Liam',
951
+ age: 80,
952
+ email: 'liam@mail.com',
953
+ role: 'User',
954
+ },
955
+ ],
956
+ enablePagination: true,
957
+ enableSorting: true,
958
+ enableGlobalFilter: true,
959
+ state: {
960
+ globalFilterSearchTerm: '',
961
+ paginationState: {
962
+ pageIndex: 1,
963
+ pageSize: 10,
964
+ },
965
+ sortingState: [{ id: 'name', desc: false }],
966
+ },
967
+ },
968
+ template: (h("nv-datagrid", { "data-storybook-args": true }, h("nv-datagridcolumn", { accessor: "name", header: "Name" }, h("div", { slot: "header" }, h("strong", null, "Name")), h("div", { slot: "cell" }, h("strong", null, "__name__"))), h("nv-datagridcolumn", { accessor: "age", header: "Age" }, h("div", { slot: "header" }, h("em", null, "Age")), h("div", { slot: "cell" }, h("span", null, "__age__ years old"))), h("nv-datagridcolumn", { accessor: "email", header: "Email" }, h("div", { slot: "cell" }, h("a", { href: "mailto:__email__" }, "__email__"))), h("nv-datagridcolumn", { accessor: "role", header: "Role" }, h("div", { slot: "cell" }, h("nv-badge", { color: "2", label: "__role__" }))))),
969
+ },
884
970
  ],
885
971
  };
886
972
  export default NvDatagridDocs;