@nova-design-system/nova-react 3.27.0 → 3.29.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 (83) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/generated/components.server.js +24 -0
  3. package/dist/cjs/index-DgKzi_Pd.js +10208 -0
  4. package/dist/cjs/index.js +4 -1
  5. package/dist/cjs/nova-datetime-CyL2J6O4-0Y9g3rfI.js +10531 -0
  6. package/dist/cjs/{nv-accordion-item.entry-Gn0QFETn.js → nv-accordion-item.entry-D1o0gC5w.js} +3 -3
  7. package/dist/cjs/{nv-accordion.entry-BooppL5C.js → nv-accordion.entry-DYJtq9Az.js} +1 -1
  8. package/dist/cjs/{nv-alert.entry-CDmHhq86.js → nv-alert.entry-CMtCdHmk.js} +2 -2
  9. package/dist/cjs/{nv-avatar.entry-pYMjQvxK.js → nv-avatar.entry-B6e7aG4W.js} +1 -1
  10. package/dist/cjs/{nv-badge_2.entry-BneUUyR7.js → nv-badge_2.entry-RD3j0bJM.js} +8 -7
  11. package/dist/cjs/{nv-breadcrumb.entry-B7CGcJ_l.js → nv-breadcrumb.entry-DgpqY2fr.js} +1 -1
  12. package/dist/cjs/{nv-breadcrumbs.entry-BNKz4ehX.js → nv-breadcrumbs.entry-CZgcDUw5.js} +1 -1
  13. package/dist/cjs/{nv-button.entry-DDCkNY_S.js → nv-button.entry-DR9NaRxG.js} +1 -1
  14. package/dist/cjs/{nv-buttongroup.entry-Bio-SWcx.js → nv-buttongroup.entry-qO8r7WqG.js} +1 -1
  15. package/dist/cjs/{nv-calendar.entry-BoNFEz6W.js → nv-calendar.entry-DRlv3Xph.js} +1 -1
  16. package/dist/cjs/{nv-col.entry-BHTqFTHl.js → nv-col.entry-B7utJttP.js} +2 -2
  17. package/dist/cjs/{nv-datagrid.entry-Bw_sqaMu.js → nv-datagrid.entry-digYmlnA.js} +1 -1
  18. package/dist/cjs/{nv-datagridcolumn.entry-Z-RXn3ak.js → nv-datagridcolumn.entry-UwaDi-Hr.js} +1 -1
  19. package/dist/cjs/nv-datetest.entry-BJtWaM2T.js +69 -0
  20. package/dist/cjs/nv-datetimetest.entry-WaNPcHxh.js +57 -0
  21. package/dist/cjs/{nv-dialog.entry-ByZkK4F9.js → nv-dialog.entry-BI_mFT2G.js} +2 -2
  22. package/dist/cjs/{nv-dialogfooter_2.entry-Bddcz6HA.js → nv-dialogfooter_2.entry-DU2ClBUR.js} +7 -5
  23. package/dist/cjs/{nv-drawer.entry-660dihzy.js → nv-drawer.entry-BKF4CyOt.js} +2 -2
  24. package/dist/cjs/{nv-drawerfooter_2.entry-D6EA-3-u.js → nv-drawerfooter_2.entry-BSyUs7_4.js} +5 -3
  25. package/dist/cjs/{nv-fieldcheckbox.entry-Bm6qurcS.js → nv-fieldcheckbox.entry-l5FWToQi.js} +5 -5
  26. package/dist/cjs/{nv-fielddate.entry-DW9RQ_dD.js → nv-fielddate.entry-BfviesNp.js} +8 -8
  27. package/dist/cjs/{nv-fielddaterange.entry-m3dY0P2v.js → nv-fielddaterange.entry-BvDkPLXG.js} +8 -8
  28. package/dist/cjs/{nv-fielddropdown.entry-DkARzQix.js → nv-fielddropdown.entry-B-nYjuMt.js} +6 -6
  29. package/dist/cjs/{nv-fielddropdownitem.entry-DKG1bO2H.js → nv-fielddropdownitem.entry-Dxqyb9DN.js} +2 -2
  30. package/dist/cjs/{nv-fieldmultiselect.entry-B4As0NxI.js → nv-fieldmultiselect.entry-CgO1RP0W.js} +115 -86
  31. package/dist/cjs/{nv-fieldnumber.entry-DHBPKUcr.js → nv-fieldnumber.entry-stgdLi7x.js} +6 -6
  32. package/dist/cjs/{nv-fieldpassword.entry-DxEaIvRh.js → nv-fieldpassword.entry-CHA3JAUd.js} +6 -6
  33. package/dist/cjs/{nv-fieldradio.entry-MSrPlSzv.js → nv-fieldradio.entry-DHavVjB-.js} +4 -4
  34. package/dist/cjs/{nv-fieldselect.entry-qMAtqdcr.js → nv-fieldselect.entry-Dq5AsOFt.js} +7 -7
  35. package/dist/cjs/{nv-fieldslider.entry-CHdMG-lt.js → nv-fieldslider.entry-SlF3BBUW.js} +4 -4
  36. package/dist/cjs/{nv-fieldtext.entry-tbYFUJP9.js → nv-fieldtext.entry-BYCc8SyD.js} +6 -6
  37. package/dist/cjs/{nv-fieldtextarea.entry-D7b3-4Ar.js → nv-fieldtextarea.entry-96JCOb9L.js} +5 -5
  38. package/dist/cjs/{nv-fieldtime.entry-TSPljEeW.js → nv-fieldtime.entry-BdzjxkaK.js} +15 -12
  39. package/dist/cjs/nv-icon.entry-CSRxi6BH.js +80 -0
  40. package/dist/cjs/{nv-iconbutton_2.entry-Ch0rfD12.js → nv-iconbutton_2.entry-BtDxwMFD.js} +3 -3
  41. package/dist/cjs/{nv-menu.entry-BKLyCbyy.js → nv-menu.entry-aX39SPH8.js} +2 -2
  42. package/dist/cjs/{nv-menuitem.entry-BBK6uQav.js → nv-menuitem.entry-DzSp52G2.js} +2 -2
  43. package/dist/cjs/{nv-notification-bullet.entry-Dk0oaUTe.js → nv-notification-bullet.entry-D2yOXj46.js} +1 -1
  44. package/dist/cjs/{nv-notification.entry-DVUXuj9T.js → nv-notification.entry-BRXHbtT8.js} +2 -2
  45. package/dist/cjs/{nv-notificationcontainer.entry-BQbB0vJ8.js → nv-notificationcontainer.entry-YNIM2_ah.js} +2 -14
  46. package/dist/cjs/{nv-pagination-nav.entry-BON8ve70.js → nv-pagination-nav.entry-uY1nT9aT.js} +2 -2
  47. package/dist/cjs/{nv-paginationtable.entry-pT2Qx3xY.js → nv-paginationtable.entry-mr5KYXVC.js} +2 -2
  48. package/dist/cjs/{nv-popover.entry-91VegZzi.js → nv-popover.entry-_9ARKM70.js} +2 -2
  49. package/dist/cjs/{nv-row.entry-C_75GYAm.js → nv-row.entry-BMQvcqlU.js} +2 -2
  50. package/dist/cjs/{nv-sidebar.entry-XIcDybjF.js → nv-sidebar.entry-C4HTjJmz.js} +2 -2
  51. package/dist/cjs/{nv-sidebarcontent.entry-JSf1Mb0x.js → nv-sidebarcontent.entry-llnRwVuj.js} +2 -2
  52. package/dist/cjs/{nv-sidebardivider.entry-XZ1hYAgj.js → nv-sidebardivider.entry--rQv8d5T.js} +2 -2
  53. package/dist/cjs/{nv-sidebarfooter.entry-BHO9gh6y.js → nv-sidebarfooter.entry-C5R0sUI_.js} +2 -2
  54. package/dist/cjs/{nv-sidebargroup.entry-DAb7dWFF.js → nv-sidebargroup.entry-DdrpLbU7.js} +2 -2
  55. package/dist/cjs/{nv-sidebarheader.entry-BksZP_km.js → nv-sidebarheader.entry-HuBPIsyf.js} +2 -2
  56. package/dist/cjs/{nv-sidebarlogo.entry-BntEWmH_.js → nv-sidebarlogo.entry-TZNPoqnA.js} +2 -2
  57. package/dist/cjs/{nv-sidebarnavitem.entry-DSu34C34.js → nv-sidebarnavitem.entry-BWc3mF5I.js} +3 -3
  58. package/dist/cjs/{nv-sidebarnavsubitem.entry-Y8Ex0_Lr.js → nv-sidebarnavsubitem.entry-DekANwO8.js} +2 -2
  59. package/dist/cjs/{nv-split.entry-BDr6FxCd.js → nv-split.entry-BOwOB8FW.js} +2 -2
  60. package/dist/cjs/{nv-stack.entry-CChjKrA3.js → nv-stack.entry-CaTiSLGN.js} +2 -2
  61. package/dist/cjs/{nv-table.entry-CfqHpj1L.js → nv-table.entry-LFZaS0Dy.js} +3 -3
  62. package/dist/cjs/{nv-tableheader.entry-C61xO9Ra.js → nv-tableheader.entry-CK50S8xW.js} +2 -2
  63. package/dist/cjs/nv-timetest.entry-A9elKwkf.js +75 -0
  64. package/dist/cjs/{nv-toggle.entry-B0HofO36.js → nv-toggle.entry-BGu-6rEs.js} +3 -3
  65. package/dist/cjs/{nv-togglebutton.entry-CzyNiZyK.js → nv-togglebutton.entry-BzAcBOgN.js} +2 -2
  66. package/dist/cjs/{nv-togglebuttongroup.entry-TizvIVlB.js → nv-togglebuttongroup.entry-CIWp7IXc.js} +2 -2
  67. package/dist/cjs/{nv-tooltip.entry-0kcGcQZo.js → nv-tooltip.entry-CoGkSHpv.js} +9 -4
  68. package/dist/components/NvDatatable/NvDatatable.js +384 -65
  69. package/dist/components/NvDatatable/selectionState.js +45 -0
  70. package/dist/components/NvDatatable/selectionState.test.js +74 -0
  71. package/dist/generated/components.js +38 -0
  72. package/dist/generated/components.server.js +21 -0
  73. package/dist/types/components/NvDatatable/NvDatatable.d.ts +1 -1
  74. package/dist/types/components/NvDatatable/selectionState.d.ts +21 -0
  75. package/dist/types/components/NvDatatable/selectionState.test.d.ts +1 -0
  76. package/dist/types/components/NvDatatable/types.d.ts +22 -0
  77. package/dist/types/generated/components.d.ts +51 -1
  78. package/dist/types/generated/components.server.d.ts +51 -1
  79. package/dist/types/index.d.ts +1 -0
  80. package/dist/types/providers/NotificationProvider.d.ts +2 -2
  81. package/package.json +6 -4
  82. package/dist/cjs/index-clzdrCkN.js +0 -9713
  83. package/dist/cjs/nv-icon.entry-BtmsouTL.js +0 -80
@@ -0,0 +1,74 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { applyRowSelection, applySelectAllSelection, shouldIgnoreSelectAllEvent, } from './selectionState';
3
+ describe('selectionState', () => {
4
+ it('single row selection replaces existing selection', () => {
5
+ const selected = new Set(['1']);
6
+ const next = applyRowSelection({
7
+ currentSelectedIds: selected,
8
+ rowId: '2',
9
+ isChecked: true,
10
+ selectionMode: 'single',
11
+ });
12
+ expect(Array.from(next)).toEqual(['2']);
13
+ });
14
+ it('single row uncheck removes currently selected row', () => {
15
+ const selected = new Set(['2']);
16
+ const next = applyRowSelection({
17
+ currentSelectedIds: selected,
18
+ rowId: '2',
19
+ isChecked: false,
20
+ selectionMode: 'single',
21
+ });
22
+ expect(Array.from(next)).toEqual([]);
23
+ });
24
+ it('multiple row selection toggles add/remove correctly', () => {
25
+ const selected = new Set(['1']);
26
+ const afterAdd = applyRowSelection({
27
+ currentSelectedIds: selected,
28
+ rowId: '2',
29
+ isChecked: true,
30
+ selectionMode: 'multiple',
31
+ });
32
+ const afterRemove = applyRowSelection({
33
+ currentSelectedIds: afterAdd,
34
+ rowId: '1',
35
+ isChecked: false,
36
+ selectionMode: 'multiple',
37
+ });
38
+ expect(Array.from(afterAdd).sort((a, b) => a.localeCompare(b))).toEqual([
39
+ '1',
40
+ '2',
41
+ ]);
42
+ expect(Array.from(afterRemove)).toEqual(['2']);
43
+ });
44
+ it('ignores synthetic select-all events for checked/unchecked/indeterminate noise', () => {
45
+ expect(shouldIgnoreSelectAllEvent({
46
+ isChecked: true,
47
+ selectAllState: 'checked',
48
+ })).toBe(true);
49
+ expect(shouldIgnoreSelectAllEvent({
50
+ isChecked: false,
51
+ selectAllState: 'unchecked',
52
+ })).toBe(true);
53
+ expect(shouldIgnoreSelectAllEvent({
54
+ isChecked: false,
55
+ selectAllState: 'indeterminate',
56
+ })).toBe(true);
57
+ });
58
+ it('select-all then deselect-all clears visible rows', () => {
59
+ const selected = new Set(['1']);
60
+ const visibleRowIds = ['1', '2'];
61
+ const afterSelectAll = applySelectAllSelection({
62
+ currentSelectedIds: selected,
63
+ visibleRowIds,
64
+ isChecked: true,
65
+ });
66
+ const afterDeselectAll = applySelectAllSelection({
67
+ currentSelectedIds: afterSelectAll,
68
+ visibleRowIds,
69
+ isChecked: false,
70
+ });
71
+ expect(Array.from(afterSelectAll).sort((a, b) => a.localeCompare(b))).toEqual(['1', '2']);
72
+ expect(Array.from(afterDeselectAll)).toEqual([]);
73
+ });
74
+ });
@@ -12,6 +12,8 @@ import { NvCalendar as NvCalendarElement, defineCustomElement as defineNvCalenda
12
12
  import { NvCol as NvColElement, defineCustomElement as defineNvCol } from "@nova-design-system/nova-webcomponents/dist/components/nv-col.js";
13
13
  import { NvDatagrid as NvDatagridElement, defineCustomElement as defineNvDatagrid } from "@nova-design-system/nova-webcomponents/dist/components/nv-datagrid.js";
14
14
  import { NvDatagridcolumn as NvDatagridcolumnElement, defineCustomElement as defineNvDatagridcolumn } from "@nova-design-system/nova-webcomponents/dist/components/nv-datagridcolumn.js";
15
+ import { NvDatetest as NvDatetestElement, defineCustomElement as defineNvDatetest } from "@nova-design-system/nova-webcomponents/dist/components/nv-datetest.js";
16
+ import { NvDatetimetest as NvDatetimetestElement, defineCustomElement as defineNvDatetimetest } from "@nova-design-system/nova-webcomponents/dist/components/nv-datetimetest.js";
15
17
  import { NvDialog as NvDialogElement, defineCustomElement as defineNvDialog } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialog.js";
16
18
  import { NvDialogfooter as NvDialogfooterElement, defineCustomElement as defineNvDialogfooter } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogfooter.js";
17
19
  import { NvDialogheader as NvDialogheaderElement, defineCustomElement as defineNvDialogheader } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogheader.js";
@@ -58,6 +60,7 @@ import { NvSplit as NvSplitElement, defineCustomElement as defineNvSplit } from
58
60
  import { NvStack as NvStackElement, defineCustomElement as defineNvStack } from "@nova-design-system/nova-webcomponents/dist/components/nv-stack.js";
59
61
  import { NvTable as NvTableElement, defineCustomElement as defineNvTable } from "@nova-design-system/nova-webcomponents/dist/components/nv-table.js";
60
62
  import { NvTableheader as NvTableheaderElement, defineCustomElement as defineNvTableheader } from "@nova-design-system/nova-webcomponents/dist/components/nv-tableheader.js";
63
+ import { NvTimetest as NvTimetestElement, defineCustomElement as defineNvTimetest } from "@nova-design-system/nova-webcomponents/dist/components/nv-timetest.js";
61
64
  import { NvToggle as NvToggleElement, defineCustomElement as defineNvToggle } from "@nova-design-system/nova-webcomponents/dist/components/nv-toggle.js";
62
65
  import { NvTogglebutton as NvTogglebuttonElement, defineCustomElement as defineNvTogglebutton } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebutton.js";
63
66
  import { NvTogglebuttongroup as NvTogglebuttongroupElement, defineCustomElement as defineNvTogglebuttongroup } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebuttongroup.js";
@@ -171,6 +174,29 @@ export const NvDatagridcolumn = createComponent({
171
174
  events: {},
172
175
  defineCustomElement: defineNvDatagridcolumn
173
176
  });
177
+ export const NvDatetest = createComponent({
178
+ tagName: 'nv-datetest',
179
+ elementClass: NvDatetestElement,
180
+ react: React,
181
+ events: {
182
+ onValueChanged: 'valueChanged',
183
+ onLastChanged: 'lastChanged',
184
+ onHistoryChanged: 'historyChanged',
185
+ onValueDateChanged: 'valueDateChanged'
186
+ },
187
+ defineCustomElement: defineNvDatetest
188
+ });
189
+ export const NvDatetimetest = createComponent({
190
+ tagName: 'nv-datetimetest',
191
+ elementClass: NvDatetimetestElement,
192
+ react: React,
193
+ events: {
194
+ onValueChanged: 'valueChanged',
195
+ onLastChanged: 'lastChanged',
196
+ onHistoryChanged: 'historyChanged'
197
+ },
198
+ defineCustomElement: defineNvDatetimetest
199
+ });
174
200
  export const NvDialog = createComponent({
175
201
  tagName: 'nv-dialog',
176
202
  elementClass: NvDialogElement,
@@ -513,6 +539,18 @@ export const NvTableheader = createComponent({
513
539
  events: { onSortDirectionChanged: 'sortDirectionChanged' },
514
540
  defineCustomElement: defineNvTableheader
515
541
  });
542
+ export const NvTimetest = createComponent({
543
+ tagName: 'nv-timetest',
544
+ elementClass: NvTimetestElement,
545
+ react: React,
546
+ events: {
547
+ onValueChanged: 'valueChanged',
548
+ onLastChanged: 'lastChanged',
549
+ onHistoryChanged: 'historyChanged',
550
+ onValueDateChanged: 'valueDateChanged'
551
+ },
552
+ defineCustomElement: defineNvTimetest
553
+ });
516
554
  export const NvToggle = createComponent({
517
555
  tagName: 'nv-toggle',
518
556
  elementClass: NvToggleElement,
@@ -184,6 +184,20 @@ export const NvDatagridcolumn = createComponent({
184
184
  clientModule: clientComponents.NvDatagridcolumn,
185
185
  serializeShadowRoot
186
186
  });
187
+ export const NvDatetest = createComponent({
188
+ tagName: 'nv-datetest',
189
+ properties: { lastChange: 'last-change' },
190
+ hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
191
+ clientModule: clientComponents.NvDatetest,
192
+ serializeShadowRoot
193
+ });
194
+ export const NvDatetimetest = createComponent({
195
+ tagName: 'nv-datetimetest',
196
+ properties: {},
197
+ hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
198
+ clientModule: clientComponents.NvDatetimetest,
199
+ serializeShadowRoot
200
+ });
187
201
  export const NvDialog = createComponent({
188
202
  tagName: 'nv-dialog',
189
203
  properties: {
@@ -977,6 +991,13 @@ export const NvTableheader = createComponent({
977
991
  clientModule: clientComponents.NvTableheader,
978
992
  serializeShadowRoot
979
993
  });
994
+ export const NvTimetest = createComponent({
995
+ tagName: 'nv-timetest',
996
+ properties: { lastChange: 'last-change' },
997
+ hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
998
+ clientModule: clientComponents.NvTimetest,
999
+ serializeShadowRoot
1000
+ });
980
1001
  export const NvToggle = createComponent({
981
1002
  tagName: 'nv-toggle',
982
1003
  properties: {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { NvDatatableProps } from './types';
3
- declare function NvDatatable<T>({ mode, columns, rows, pagination, sorting, filtering, renderPagination, renderFiltering, stickyHeader, ...htmlProps }: NvDatatableProps<T>): React.JSX.Element;
3
+ declare function NvDatatable<T>({ mode, columns, rows, pagination, sorting, filtering, selection, renderPagination, renderFiltering, onRowClick, stickyHeader, ...htmlProps }: NvDatatableProps<T>): React.JSX.Element;
4
4
  declare namespace NvDatatable {
5
5
  var displayName: string;
6
6
  }
@@ -0,0 +1,21 @@
1
+ import type { NvDatatableSelectionMode } from './types';
2
+ export type NvDatatableSelectAllState = 'checked' | 'indeterminate' | 'unchecked';
3
+ interface ApplyRowSelectionParams {
4
+ currentSelectedIds: Set<string>;
5
+ rowId: string;
6
+ isChecked: boolean;
7
+ selectionMode: NvDatatableSelectionMode;
8
+ }
9
+ interface ShouldIgnoreSelectAllEventParams {
10
+ isChecked: boolean;
11
+ selectAllState: NvDatatableSelectAllState;
12
+ }
13
+ interface ApplySelectAllSelectionParams {
14
+ currentSelectedIds: Set<string>;
15
+ visibleRowIds: string[];
16
+ isChecked: boolean;
17
+ }
18
+ export declare function applyRowSelection(params: ApplyRowSelectionParams): Set<string>;
19
+ export declare function shouldIgnoreSelectAllEvent(params: ShouldIgnoreSelectAllEventParams): boolean;
20
+ export declare function applySelectAllSelection(params: ApplySelectAllSelectionParams): Set<string>;
21
+ export {};
@@ -8,11 +8,33 @@ export type NvDatatableProps<T> = {
8
8
  pagination?: NvDatatablePaginationConfig;
9
9
  sorting?: NvDatatableSortingConfig;
10
10
  filtering?: NvDatatableFilteringConfig<T>;
11
+ selection?: NvDatatableSelectionConfigWithMode<T>;
12
+ onRowClick?: (args: NvDatatableRowClickEventArgs<T>) => void;
11
13
  renderPagination?: (api: NvDatatableRenderPaginationAPI) => React.ReactNode;
12
14
  renderFiltering?: (api: NvDatatableRenderFilteringAPI) => React.ReactNode;
13
15
  stickyHeader?: boolean;
14
16
  suppressHydrationWarning?: boolean;
15
17
  } & Pick<ComponentProps<'div'>, 'className' | 'style'>;
18
+ export interface NvDatatableRowClickEventArgs<T> {
19
+ row: T;
20
+ rowIndex: number;
21
+ }
22
+ export type NvDatatableSelectionMode = 'none' | 'single' | 'multiple';
23
+ export interface NvDatatableSelectionConfig<T> {
24
+ mode?: NvDatatableSelectionMode;
25
+ getRowId?: (row: T) => string;
26
+ selectedRowIds?: Set<string>;
27
+ onSelectionChange?: (selectedRowIds: Set<string>) => void;
28
+ enableSelectAll?: boolean;
29
+ deselectOnFilter?: boolean;
30
+ checkboxColumnWidth?: number;
31
+ }
32
+ export type NvDatatableSelectionConfigWithMode<T> = (NvDatatableSelectionConfig<T> & {
33
+ mode?: 'none';
34
+ }) | (NvDatatableSelectionConfig<T> & {
35
+ mode: Exclude<NvDatatableSelectionMode, 'none'>;
36
+ getRowId: (row: T) => string;
37
+ });
16
38
  export interface NvDatatableColumn<Row, K extends keyof Row = keyof Row, F = Row[K]> {
17
39
  field: K;
18
40
  headerName?: string;
@@ -1,4 +1,4 @@
1
- import { type NvAccordionCustomEvent, type NvAccordionItemCustomEvent, type NvAlertCustomEvent, type NvBadgeCustomEvent, type NvCalendarCustomEvent, type NvDatagridCustomEvent, type NvDialogCustomEvent, type NvDialogfooterCustomEvent, type NvDrawerCustomEvent, type NvDrawerfooterCustomEvent, type NvFieldcheckboxCustomEvent, type NvFielddateCustomEvent, type NvFielddaterangeCustomEvent, type NvFielddropdownCustomEvent, type NvFielddropdownitemCustomEvent, type NvFielddropdownitemcheckCustomEvent, type NvFieldmultiselectCustomEvent, type NvFieldnumberCustomEvent, type NvFieldpasswordCustomEvent, type NvFieldradioCustomEvent, type NvFieldselectCustomEvent, type NvFieldsliderCustomEvent, type NvFieldtextCustomEvent, type NvFieldtextareaCustomEvent, type NvFieldtimeCustomEvent, type NvMenuCustomEvent, type NvMenuitemCustomEvent, type NvNotificationCustomEvent, type NvPaginationNavCustomEvent, type NvPaginationtableCustomEvent, type NvPopoverCustomEvent, type NvSidebarCustomEvent, type NvSplitCustomEvent, type NvTableheaderCustomEvent, type NvToggleCustomEvent, type NvTogglebuttonCustomEvent, type NvTogglebuttongroupCustomEvent, type NvTooltipCustomEvent } from "@nova-design-system/nova-webcomponents";
1
+ import { type DateOnly, type NvAccordionCustomEvent, type NvAccordionItemCustomEvent, type NvAlertCustomEvent, type NvBadgeCustomEvent, type NvCalendarCustomEvent, type NvDatagridCustomEvent, type NvDatetestCustomEvent, type NvDatetimetestCustomEvent, type NvDialogCustomEvent, type NvDialogfooterCustomEvent, type NvDrawerCustomEvent, type NvDrawerfooterCustomEvent, type NvFieldcheckboxCustomEvent, type NvFielddateCustomEvent, type NvFielddaterangeCustomEvent, type NvFielddropdownCustomEvent, type NvFielddropdownitemCustomEvent, type NvFielddropdownitemcheckCustomEvent, type NvFieldmultiselectCustomEvent, type NvFieldnumberCustomEvent, type NvFieldpasswordCustomEvent, type NvFieldradioCustomEvent, type NvFieldselectCustomEvent, type NvFieldsliderCustomEvent, type NvFieldtextCustomEvent, type NvFieldtextareaCustomEvent, type NvFieldtimeCustomEvent, type NvMenuCustomEvent, type NvMenuitemCustomEvent, type NvNotificationCustomEvent, type NvPaginationNavCustomEvent, type NvPaginationtableCustomEvent, type NvPopoverCustomEvent, type NvSidebarCustomEvent, type NvSplitCustomEvent, type NvTableheaderCustomEvent, type NvTimetestCustomEvent, type NvToggleCustomEvent, type NvTogglebuttonCustomEvent, type NvTogglebuttongroupCustomEvent, type NvTooltipCustomEvent, type TimeOnly } from "@nova-design-system/nova-webcomponents";
2
2
  import { NvAccordionItem as NvAccordionItemElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-accordion-item.js";
3
3
  import { NvAccordion as NvAccordionElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-accordion.js";
4
4
  import { NvAlert as NvAlertElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-alert.js";
@@ -12,6 +12,8 @@ import { NvCalendar as NvCalendarElement } from "@nova-design-system/nova-webcom
12
12
  import { NvCol as NvColElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-col.js";
13
13
  import { NvDatagrid as NvDatagridElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datagrid.js";
14
14
  import { NvDatagridcolumn as NvDatagridcolumnElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datagridcolumn.js";
15
+ import { NvDatetest as NvDatetestElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datetest.js";
16
+ import { NvDatetimetest as NvDatetimetestElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datetimetest.js";
15
17
  import { NvDialog as NvDialogElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialog.js";
16
18
  import { NvDialogfooter as NvDialogfooterElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogfooter.js";
17
19
  import { NvDialogheader as NvDialogheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogheader.js";
@@ -58,6 +60,7 @@ import { NvSplit as NvSplitElement } from "@nova-design-system/nova-webcomponent
58
60
  import { NvStack as NvStackElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-stack.js";
59
61
  import { NvTable as NvTableElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-table.js";
60
62
  import { NvTableheader as NvTableheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-tableheader.js";
63
+ import { NvTimetest as NvTimetestElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-timetest.js";
61
64
  import { NvToggle as NvToggleElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-toggle.js";
62
65
  import { NvTogglebutton as NvTogglebuttonElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebutton.js";
63
66
  import { NvTogglebuttongroup as NvTogglebuttongroupElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebuttongroup.js";
@@ -122,6 +125,36 @@ export type NvDatagridEvents = {
122
125
  export declare const NvDatagrid: StencilReactComponent<NvDatagridElement, NvDatagridEvents>;
123
126
  export type NvDatagridcolumnEvents = NonNullable<unknown>;
124
127
  export declare const NvDatagridcolumn: StencilReactComponent<NvDatagridcolumnElement, NvDatagridcolumnEvents>;
128
+ export type NvDatetestEvents = {
129
+ onValueChanged: EventName<NvDatetestCustomEvent<{
130
+ start?: DateOnly;
131
+ end?: DateOnly;
132
+ }>>;
133
+ onLastChanged: EventName<NvDatetestCustomEvent<{
134
+ date: DateOnly;
135
+ }>>;
136
+ onHistoryChanged: EventName<NvDatetestCustomEvent<{
137
+ dates: DateOnly[];
138
+ }>>;
139
+ onValueDateChanged: EventName<NvDatetestCustomEvent<{
140
+ start?: Date;
141
+ end?: Date;
142
+ }>>;
143
+ };
144
+ export declare const NvDatetest: StencilReactComponent<NvDatetestElement, NvDatetestEvents>;
145
+ export type NvDatetimetestEvents = {
146
+ onValueChanged: EventName<NvDatetimetestCustomEvent<{
147
+ start?: Date;
148
+ end?: Date;
149
+ }>>;
150
+ onLastChanged: EventName<NvDatetimetestCustomEvent<{
151
+ date: Date;
152
+ }>>;
153
+ onHistoryChanged: EventName<NvDatetimetestCustomEvent<{
154
+ dates: Date[];
155
+ }>>;
156
+ };
157
+ export declare const NvDatetimetest: StencilReactComponent<NvDatetimetestElement, NvDatetimetestEvents>;
125
158
  export type NvDialogEvents = {
126
159
  onOpenChanged: EventName<NvDialogCustomEvent<boolean>>;
127
160
  };
@@ -290,6 +323,23 @@ export type NvTableheaderEvents = {
290
323
  onSortDirectionChanged: EventName<NvTableheaderCustomEvent<string>>;
291
324
  };
292
325
  export declare const NvTableheader: StencilReactComponent<NvTableheaderElement, NvTableheaderEvents>;
326
+ export type NvTimetestEvents = {
327
+ onValueChanged: EventName<NvTimetestCustomEvent<{
328
+ start?: TimeOnly;
329
+ end?: TimeOnly;
330
+ }>>;
331
+ onLastChanged: EventName<NvTimetestCustomEvent<{
332
+ time: TimeOnly;
333
+ }>>;
334
+ onHistoryChanged: EventName<NvTimetestCustomEvent<{
335
+ times: TimeOnly[];
336
+ }>>;
337
+ onValueDateChanged: EventName<NvTimetestCustomEvent<{
338
+ start?: Date;
339
+ end?: Date;
340
+ }>>;
341
+ };
342
+ export declare const NvTimetest: StencilReactComponent<NvTimetestElement, NvTimetestEvents>;
293
343
  export type NvToggleEvents = {
294
344
  onCheckedChanged: EventName<NvToggleCustomEvent<boolean>>;
295
345
  };
@@ -1,4 +1,4 @@
1
- import { type NvAccordionCustomEvent, type NvAccordionItemCustomEvent, type NvAlertCustomEvent, type NvBadgeCustomEvent, type NvCalendarCustomEvent, type NvDatagridCustomEvent, type NvDialogCustomEvent, type NvDialogfooterCustomEvent, type NvDrawerCustomEvent, type NvDrawerfooterCustomEvent, type NvFieldcheckboxCustomEvent, type NvFielddateCustomEvent, type NvFielddaterangeCustomEvent, type NvFielddropdownCustomEvent, type NvFielddropdownitemCustomEvent, type NvFielddropdownitemcheckCustomEvent, type NvFieldmultiselectCustomEvent, type NvFieldnumberCustomEvent, type NvFieldpasswordCustomEvent, type NvFieldradioCustomEvent, type NvFieldselectCustomEvent, type NvFieldsliderCustomEvent, type NvFieldtextCustomEvent, type NvFieldtextareaCustomEvent, type NvFieldtimeCustomEvent, type NvMenuCustomEvent, type NvMenuitemCustomEvent, type NvNotificationCustomEvent, type NvPaginationNavCustomEvent, type NvPaginationtableCustomEvent, type NvPopoverCustomEvent, type NvSidebarCustomEvent, type NvSplitCustomEvent, type NvTableheaderCustomEvent, type NvToggleCustomEvent, type NvTogglebuttonCustomEvent, type NvTogglebuttongroupCustomEvent, type NvTooltipCustomEvent } from "@nova-design-system/nova-webcomponents";
1
+ import { type DateOnly, type NvAccordionCustomEvent, type NvAccordionItemCustomEvent, type NvAlertCustomEvent, type NvBadgeCustomEvent, type NvCalendarCustomEvent, type NvDatagridCustomEvent, type NvDatetestCustomEvent, type NvDatetimetestCustomEvent, type NvDialogCustomEvent, type NvDialogfooterCustomEvent, type NvDrawerCustomEvent, type NvDrawerfooterCustomEvent, type NvFieldcheckboxCustomEvent, type NvFielddateCustomEvent, type NvFielddaterangeCustomEvent, type NvFielddropdownCustomEvent, type NvFielddropdownitemCustomEvent, type NvFielddropdownitemcheckCustomEvent, type NvFieldmultiselectCustomEvent, type NvFieldnumberCustomEvent, type NvFieldpasswordCustomEvent, type NvFieldradioCustomEvent, type NvFieldselectCustomEvent, type NvFieldsliderCustomEvent, type NvFieldtextCustomEvent, type NvFieldtextareaCustomEvent, type NvFieldtimeCustomEvent, type NvMenuCustomEvent, type NvMenuitemCustomEvent, type NvNotificationCustomEvent, type NvPaginationNavCustomEvent, type NvPaginationtableCustomEvent, type NvPopoverCustomEvent, type NvSidebarCustomEvent, type NvSplitCustomEvent, type NvTableheaderCustomEvent, type NvTimetestCustomEvent, type NvToggleCustomEvent, type NvTogglebuttonCustomEvent, type NvTogglebuttongroupCustomEvent, type NvTooltipCustomEvent, type TimeOnly } from "@nova-design-system/nova-webcomponents";
2
2
  import { NvAccordionItem as NvAccordionItemElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-accordion-item.js";
3
3
  import { NvAccordion as NvAccordionElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-accordion.js";
4
4
  import { NvAlert as NvAlertElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-alert.js";
@@ -12,6 +12,8 @@ import { NvCalendar as NvCalendarElement } from "@nova-design-system/nova-webcom
12
12
  import { NvCol as NvColElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-col.js";
13
13
  import { NvDatagrid as NvDatagridElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datagrid.js";
14
14
  import { NvDatagridcolumn as NvDatagridcolumnElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datagridcolumn.js";
15
+ import { NvDatetest as NvDatetestElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datetest.js";
16
+ import { NvDatetimetest as NvDatetimetestElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-datetimetest.js";
15
17
  import { NvDialog as NvDialogElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialog.js";
16
18
  import { NvDialogfooter as NvDialogfooterElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogfooter.js";
17
19
  import { NvDialogheader as NvDialogheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogheader.js";
@@ -58,6 +60,7 @@ import { NvSplit as NvSplitElement } from "@nova-design-system/nova-webcomponent
58
60
  import { NvStack as NvStackElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-stack.js";
59
61
  import { NvTable as NvTableElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-table.js";
60
62
  import { NvTableheader as NvTableheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-tableheader.js";
63
+ import { NvTimetest as NvTimetestElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-timetest.js";
61
64
  import { NvToggle as NvToggleElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-toggle.js";
62
65
  import { NvTogglebutton as NvTogglebuttonElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebutton.js";
63
66
  import { NvTogglebuttongroup as NvTogglebuttongroupElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebuttongroup.js";
@@ -124,6 +127,36 @@ export type NvDatagridEvents = {
124
127
  export declare const NvDatagrid: StencilReactComponent<NvDatagridElement, NvDatagridEvents>;
125
128
  export type NvDatagridcolumnEvents = NonNullable<unknown>;
126
129
  export declare const NvDatagridcolumn: StencilReactComponent<NvDatagridcolumnElement, NvDatagridcolumnEvents>;
130
+ export type NvDatetestEvents = {
131
+ onValueChanged: EventName<NvDatetestCustomEvent<{
132
+ start?: DateOnly;
133
+ end?: DateOnly;
134
+ }>>;
135
+ onLastChanged: EventName<NvDatetestCustomEvent<{
136
+ date: DateOnly;
137
+ }>>;
138
+ onHistoryChanged: EventName<NvDatetestCustomEvent<{
139
+ dates: DateOnly[];
140
+ }>>;
141
+ onValueDateChanged: EventName<NvDatetestCustomEvent<{
142
+ start?: Date;
143
+ end?: Date;
144
+ }>>;
145
+ };
146
+ export declare const NvDatetest: StencilReactComponent<NvDatetestElement, NvDatetestEvents>;
147
+ export type NvDatetimetestEvents = {
148
+ onValueChanged: EventName<NvDatetimetestCustomEvent<{
149
+ start?: Date;
150
+ end?: Date;
151
+ }>>;
152
+ onLastChanged: EventName<NvDatetimetestCustomEvent<{
153
+ date: Date;
154
+ }>>;
155
+ onHistoryChanged: EventName<NvDatetimetestCustomEvent<{
156
+ dates: Date[];
157
+ }>>;
158
+ };
159
+ export declare const NvDatetimetest: StencilReactComponent<NvDatetimetestElement, NvDatetimetestEvents>;
127
160
  export type NvDialogEvents = {
128
161
  onOpenChanged: EventName<NvDialogCustomEvent<boolean>>;
129
162
  };
@@ -292,6 +325,23 @@ export type NvTableheaderEvents = {
292
325
  onSortDirectionChanged: EventName<NvTableheaderCustomEvent<string>>;
293
326
  };
294
327
  export declare const NvTableheader: StencilReactComponent<NvTableheaderElement, NvTableheaderEvents>;
328
+ export type NvTimetestEvents = {
329
+ onValueChanged: EventName<NvTimetestCustomEvent<{
330
+ start?: TimeOnly;
331
+ end?: TimeOnly;
332
+ }>>;
333
+ onLastChanged: EventName<NvTimetestCustomEvent<{
334
+ time: TimeOnly;
335
+ }>>;
336
+ onHistoryChanged: EventName<NvTimetestCustomEvent<{
337
+ times: TimeOnly[];
338
+ }>>;
339
+ onValueDateChanged: EventName<NvTimetestCustomEvent<{
340
+ start?: Date;
341
+ end?: Date;
342
+ }>>;
343
+ };
344
+ export declare const NvTimetest: StencilReactComponent<NvTimetestElement, NvTimetestEvents>;
295
345
  export type NvToggleEvents = {
296
346
  onCheckedChanged: EventName<NvToggleCustomEvent<boolean>>;
297
347
  };
@@ -1,5 +1,6 @@
1
1
  export * from './generated/components';
2
2
  export * from '@nova-design-system/nova-webcomponents/constants';
3
+ export { type IconName } from '@nova-design-system/nova-webcomponents';
3
4
  export { defineCustomElements } from '@nova-design-system/nova-webcomponents/loader';
4
5
  export { useNotifications, NotificationProvider, type NotificationOptions, type NotificationContextValue, type NotificationProviderProps, type Notification, } from './providers/NotificationProvider';
5
6
  export * from './components/NvDatatable';
@@ -1,5 +1,5 @@
1
1
  import React, { ReactNode } from 'react';
2
- import { type NotificationPosition, type NotificationEmphasis, FeedbackColors } from '../index';
2
+ import { type NotificationPosition, type NotificationEmphasis, type IconName, FeedbackColors } from '../index';
3
3
  export interface NotificationAction {
4
4
  label: string;
5
5
  onClick: () => void;
@@ -11,7 +11,7 @@ export interface NotificationOptions {
11
11
  dismissible?: boolean;
12
12
  emphasis?: `${NotificationEmphasis}`;
13
13
  feedback?: `${FeedbackColors}`;
14
- icon?: string;
14
+ icon?: `${IconName}`;
15
15
  actions?: NotificationAction[];
16
16
  actionSlot?: React.ReactElement;
17
17
  duration?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nova-design-system/nova-react",
3
- "version": "3.27.0",
3
+ "version": "3.29.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",
@@ -51,8 +51,8 @@
51
51
  "@tanstack/react-table": "8.21.3"
52
52
  },
53
53
  "devDependencies": {
54
- "react": "^18.3.1",
55
- "react-dom": "^18.3.1",
54
+ "react": "18.3.1",
55
+ "react-dom": "18.3.1",
56
56
  "nova-utils": "*",
57
57
  "nova-storybook-utils": "*",
58
58
  "@rollup/plugin-commonjs": "28.0.2",
@@ -60,6 +60,8 @@
60
60
  "@rollup/plugin-typescript": "12.1.2"
61
61
  },
62
62
  "peerDependencies": {
63
- "@stencil/react-output-target": "1.2.0"
63
+ "@stencil/react-output-target": "1.2.0",
64
+ "react": "^18 || ^19",
65
+ "react-dom": "^18 || ^19"
64
66
  }
65
67
  }