@nova-design-system/nova-react 3.23.0 → 3.24.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.
- package/dist/cjs/events.utils-B6GgGra--01N__3wY.js +23 -0
- package/dist/cjs/generated/components.server.js +47 -0
- package/dist/cjs/{grow.animation-CvHGHBL4-DDIEYBK-.js → grow.animation-D7ep_aVl-BuXEDSK-.js} +0 -21
- package/dist/cjs/{i18n.utils-DOZbXX2L-BizoXo6c.js → i18n.utils-IlwlcG9l-ku0bScip.js} +14 -18
- package/dist/cjs/{index-CtjeeUI-.js → index-kU2nW5aN.js} +1589 -920
- package/dist/cjs/{nv-dialog.entry-O47Eol_7.js → index.esm-D3eWMME9-CG1TVKfu.js} +1 -296
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/{nv-accordion-item.entry-B_l0-ux0.js → nv-accordion-item.entry-Bu1tAcCq.js} +1 -1
- package/dist/cjs/{nv-accordion.entry-BX8_YuZF.js → nv-accordion.entry-jWjLdX8w.js} +3 -8
- package/dist/cjs/{nv-alert.entry-DCWYR0OK.js → nv-alert.entry-E9ZJay_K.js} +2 -3
- package/dist/cjs/{nv-avatar.entry-C_xZD3Lp.js → nv-avatar.entry-CUX7u0kR.js} +1 -1
- package/dist/cjs/{nv-badge_2.entry-JjqANStV.js → nv-badge_2.entry-bxpV5gxE.js} +2 -2
- package/dist/cjs/{nv-breadcrumb.entry-DQZDn6cm.js → nv-breadcrumb.entry-Cbbb9Qeh.js} +1 -1
- package/dist/cjs/{nv-breadcrumbs.entry-Bz0GjhY_.js → nv-breadcrumbs.entry-BTqnp9zO.js} +1 -1
- package/dist/cjs/{nv-button.entry-Br1DH9Vj.js → nv-button.entry-upWH19y6.js} +4 -6
- package/dist/cjs/{nv-buttongroup.entry-BZaTKN_n.js → nv-buttongroup.entry-CuZCRsnV.js} +1 -1
- package/dist/cjs/{nv-calendar.entry-D9ESuu7C.js → nv-calendar.entry-CT3mASW6.js} +15 -25
- package/dist/cjs/{nv-col.entry-CfgPMMxS.js → nv-col.entry--pCxkaTh.js} +1 -1
- package/dist/cjs/{nv-datagrid.entry-DcB5q2oC.js → nv-datagrid.entry-CGCEhO8C.js} +68 -73
- package/dist/cjs/{nv-datagridcolumn.entry-BhKOzXA6.js → nv-datagridcolumn.entry-Fsqc7CT_.js} +1 -1
- package/dist/cjs/nv-dialog.entry-B6OYcZxQ.js +300 -0
- package/dist/cjs/{nv-dialogfooter_2.entry-Dn16bI8a.js → nv-dialogfooter_2.entry-C4fP_n2-.js} +1 -1
- package/dist/cjs/nv-drawer.entry-C5O4KvHU.js +445 -0
- package/dist/cjs/nv-drawerfooter_2.entry-C-reYJXG.js +146 -0
- package/dist/cjs/{nv-fieldcheckbox.entry-Bx6ArV_b.js → nv-fieldcheckbox.entry-bk7UNQny.js} +7 -7
- package/dist/cjs/{nv-fielddate.entry-B4P0U8QG.js → nv-fielddate.entry-dqZDBVmm.js} +13 -16
- package/dist/cjs/{nv-fielddaterange.entry-BORwYJ-k.js → nv-fielddaterange.entry-wNRasXky.js} +13 -14
- package/dist/cjs/{nv-fielddropdown.entry-DzBAIynY.js → nv-fielddropdown.entry-BA15piWa.js} +40 -49
- package/dist/cjs/{nv-fielddropdownitem.entry-C_17isWd.js → nv-fielddropdownitem.entry-DEWaf9dC.js} +3 -4
- package/dist/cjs/{nv-fieldmultiselect.entry-DiqRreWh.js → nv-fieldmultiselect.entry-BWY5xOAd.js} +35 -43
- package/dist/cjs/{nv-fieldnumber.entry-C9O4UPp3.js → nv-fieldnumber.entry-DoYORd0d.js} +7 -7
- package/dist/cjs/{nv-fieldpassword.entry-BfVJNT0A.js → nv-fieldpassword.entry-CPaLj9aD.js} +7 -7
- package/dist/cjs/{nv-fieldradio.entry-CG22oETM.js → nv-fieldradio.entry-CvUmEaCa.js} +5 -5
- package/dist/cjs/{nv-fieldselect.entry-BPQEtrv2.js → nv-fieldselect.entry-uUIZ6hmN.js} +9 -9
- package/dist/cjs/{nv-fieldslider.entry-CozmnUfN.js → nv-fieldslider.entry-DnvmxxYY.js} +6 -6
- package/dist/cjs/{nv-fieldtext.entry-BD-z01ru.js → nv-fieldtext.entry-BYAJp3n_.js} +7 -7
- package/dist/cjs/{nv-fieldtextarea.entry-7UrKWDHg.js → nv-fieldtextarea.entry-DU2bWYeg.js} +7 -8
- package/dist/cjs/{nv-fieldtime.entry-DakOlLiO.js → nv-fieldtime.entry-DlMNDTht.js} +28 -36
- package/dist/cjs/{nv-icon.entry-Db00kB2u.js → nv-icon.entry-CnUkRzaA.js} +3 -3
- package/dist/cjs/{nv-iconbutton_2.entry-CaKCa8NT.js → nv-iconbutton_2.entry-hqp4AcRq.js} +6 -7
- package/dist/cjs/{nv-menu.entry-CK2HdmBt.js → nv-menu.entry-Dc_FvIx7.js} +4 -5
- package/dist/cjs/{nv-menuitem.entry-mKMqCAdz.js → nv-menuitem.entry-DzMhx6c_.js} +2 -2
- package/dist/cjs/{nv-notification-bullet.entry-DtbjtFxs.js → nv-notification-bullet.entry-BwhHCMQF.js} +2 -3
- package/dist/cjs/{nv-notification.entry-CLb0gNu3.js → nv-notification.entry-C3m5p5BL.js} +11 -97
- package/dist/cjs/{nv-notificationcontainer.entry-Cijivlm6.js → nv-notificationcontainer.entry-DTRNn7VE.js} +2 -2
- package/dist/cjs/{nv-popover.entry-mLdLSp6n.js → nv-popover.entry-B0c-2rO4.js} +15 -15
- package/dist/cjs/{nv-row.entry-C2C94fcv.js → nv-row.entry-CdcjVGZv.js} +2 -2
- package/dist/cjs/{nv-sidebar.entry-inDVNJ4s.js → nv-sidebar.entry-CiN813gQ.js} +4 -4
- package/dist/cjs/{nv-sidebarcontent.entry-DxoljE15.js → nv-sidebarcontent.entry-D9hpAhK8.js} +2 -2
- package/dist/cjs/{nv-sidebardivider.entry-D_yern0R.js → nv-sidebardivider.entry-B4EMyca5.js} +2 -2
- package/dist/cjs/{nv-sidebarfooter.entry-Rkkn9TB_.js → nv-sidebarfooter.entry-CHi4qOFe.js} +2 -2
- package/dist/cjs/{nv-sidebargroup.entry-C1p9qqxr.js → nv-sidebargroup.entry-RVqrsyIU.js} +2 -2
- package/dist/cjs/{nv-sidebarheader.entry-CYpD_4pI.js → nv-sidebarheader.entry-_7ch0O3G.js} +2 -2
- package/dist/cjs/{nv-sidebarlogo.entry-BgK03M1v.js → nv-sidebarlogo.entry-Ch9F-JnT.js} +2 -2
- package/dist/cjs/{nv-sidebarnavitem.entry-DglvcCOD.js → nv-sidebarnavitem.entry-DVrafSMr.js} +5 -6
- package/dist/cjs/{nv-sidebarnavsubitem.entry-Dt1jKmC-.js → nv-sidebarnavsubitem.entry-C0XDAzma.js} +2 -2
- package/dist/cjs/{nv-split.entry-mzg2F66T.js → nv-split.entry-0HTslRAX.js} +44 -42
- package/dist/cjs/{nv-stack.entry-nnvjTrBy.js → nv-stack.entry-CqO7uTQf.js} +2 -2
- package/dist/cjs/{nv-table.entry-DkbNgxtI.js → nv-table.entry-DH85n8Mc.js} +7 -9
- package/dist/cjs/{nv-tableheader.entry-CRVFTQA-.js → nv-tableheader.entry-CKfocdxD.js} +3 -3
- package/dist/cjs/{nv-toggle.entry-oC9TVkr1.js → nv-toggle.entry-BHUl76Im.js} +3 -3
- package/dist/cjs/nv-togglebutton.entry-D_9COjY-.js +67 -0
- package/dist/cjs/{nv-togglebuttongroup.entry-BYXX5ejg.js → nv-togglebuttongroup.entry-C0NLbsq7.js} +4 -5
- package/dist/cjs/{nv-tooltip.entry-OJGxfJEh.js → nv-tooltip.entry-BfViGE_U.js} +2 -2
- package/dist/cjs/slide.animation-CmH5d1of-BZuw607U.js +90 -0
- package/dist/components/NvDatatable/NvDatatable.js +40 -24
- package/dist/generated/components.js +27 -0
- package/dist/generated/components.server.js +44 -0
- package/dist/types/components/NvDatatable/NvDatatable.d.ts +1 -1
- package/dist/types/components/NvDatatable/types.d.ts +8 -3
- package/dist/types/generated/components.d.ts +14 -0
- package/dist/types/generated/components.server.d.ts +14 -0
- package/package.json +1 -1
- package/dist/cjs/nv-togglebutton.entry-BTWCzbS9.js +0 -67
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fade_animationDcRL9lcm = require('./fade.animation-DcRL9lcm-DAZeHoKN.js');
|
|
4
|
+
var styleValueTypes_esXlgmw4x8 = require('./style-value-types.es-xlgmw4x8-B1vLqX9m.js');
|
|
5
|
+
|
|
6
|
+
const useSlide = (node, { duration } = { duration: 200 }) => {
|
|
7
|
+
const nodeStyler = fade_animationDcRL9lcm.index(node);
|
|
8
|
+
/**
|
|
9
|
+
* Will animate the translateX property.
|
|
10
|
+
*
|
|
11
|
+
* @param {object} options - The options for the animation.
|
|
12
|
+
* @param {number} options.from - The starting value for the translateX property.
|
|
13
|
+
* @param {number} options.to - The ending value for the translateX property.
|
|
14
|
+
* @returns {Promise<void>} - A promise that resolves when the animation is
|
|
15
|
+
* complete.
|
|
16
|
+
*/
|
|
17
|
+
const slideX = (options = { from: 0, to: 100 }) => () => {
|
|
18
|
+
return new Promise(resolve => {
|
|
19
|
+
styleValueTypes_esXlgmw4x8.animate({
|
|
20
|
+
from: { x: options.from },
|
|
21
|
+
to: { x: options.to },
|
|
22
|
+
ease: styleValueTypes_esXlgmw4x8.easeOut,
|
|
23
|
+
duration,
|
|
24
|
+
onUpdate(latest) {
|
|
25
|
+
nodeStyler.set({ transform: `translateX(${latest.x}%)` });
|
|
26
|
+
},
|
|
27
|
+
onComplete() {
|
|
28
|
+
resolve();
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Will animate the translateY property.
|
|
35
|
+
*
|
|
36
|
+
* @param {object} options - The options for the animation.
|
|
37
|
+
* @param {number} options.from - The starting value for the translateY property.
|
|
38
|
+
* @param {number} options.to - The ending value for the translateY property.
|
|
39
|
+
* @returns {Promise<void>} - A promise that resolves when the animation is
|
|
40
|
+
* complete.
|
|
41
|
+
*/
|
|
42
|
+
const slideY = (options = { from: 0, to: 100 }) => () => {
|
|
43
|
+
return new Promise(resolve => {
|
|
44
|
+
styleValueTypes_esXlgmw4x8.animate({
|
|
45
|
+
from: { y: options.from },
|
|
46
|
+
to: { y: options.to },
|
|
47
|
+
ease: styleValueTypes_esXlgmw4x8.easeOut,
|
|
48
|
+
duration,
|
|
49
|
+
onUpdate(latest) {
|
|
50
|
+
nodeStyler.set({ transform: `translateY(${latest.y}%)` });
|
|
51
|
+
},
|
|
52
|
+
onComplete() {
|
|
53
|
+
resolve();
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Applies the slideX styles without animating, useful when initial state
|
|
60
|
+
* is slid out.
|
|
61
|
+
*
|
|
62
|
+
* @param {number} amount - The amount to translate the element by.
|
|
63
|
+
* @returns {function} - A function that applies the slideX styles.
|
|
64
|
+
*/
|
|
65
|
+
const setSlideX = (amount = 100) => nodeStyler.set({ transform: `translateX(${amount}%)` });
|
|
66
|
+
/**
|
|
67
|
+
* Applies the slideY styles without animating, useful when initial state
|
|
68
|
+
* is slid out.
|
|
69
|
+
*
|
|
70
|
+
* @param {number} amount - The amount to translate the element by.
|
|
71
|
+
* @returns {function} - A function that applies the slideY styles.
|
|
72
|
+
*/
|
|
73
|
+
const setSlideY = (amount = 100) => nodeStyler.set({ transform: `translateY(${amount}%)` });
|
|
74
|
+
/**
|
|
75
|
+
* Applies the slideIn styles without animating, useful when initial state
|
|
76
|
+
* is slid in.
|
|
77
|
+
*/
|
|
78
|
+
function setSlideReset() {
|
|
79
|
+
nodeStyler.set({ transform: `translateX(${0}%) translateY(${0}%)` });
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
slideX,
|
|
83
|
+
slideY,
|
|
84
|
+
setSlideX,
|
|
85
|
+
setSlideY,
|
|
86
|
+
setSlideReset,
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
exports.useSlide = useSlide;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React, { useMemo, useState, useEffect, useRef, useCallback, } from 'react';
|
|
2
2
|
import { flexRender, getCoreRowModel, getPaginationRowModel, getSortedRowModel, getFilteredRowModel, useReactTable, } from '@tanstack/react-table';
|
|
3
3
|
import { NvTable, NvTableheader } from '../../generated/components';
|
|
4
|
-
function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagination, renderFiltering, stickyHeader, ...htmlProps }) {
|
|
4
|
+
function NvDatatable({ mode = 'client', columns, rows, pagination, sorting, filtering, renderPagination, renderFiltering, stickyHeader, ...htmlProps }) {
|
|
5
|
+
const isInfiniteScroll = pagination?.infinite && mode === 'server';
|
|
5
6
|
const [paginationState, setPaginationState] = useState({
|
|
6
7
|
pageIndex: 0,
|
|
7
8
|
pageSize: pagination?.initialPageSize || 10,
|
|
@@ -17,11 +18,11 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
17
18
|
}
|
|
18
19
|
debouncedSetFilter.current = setTimeout(() => {
|
|
19
20
|
setGlobalFilterState(value);
|
|
20
|
-
if (
|
|
21
|
+
if (mode === 'server' && filtering?.onFilterChange) {
|
|
21
22
|
filtering.onFilterChange(value);
|
|
22
23
|
}
|
|
23
24
|
}, debounceMs);
|
|
24
|
-
}, [filtering]);
|
|
25
|
+
}, [filtering, mode]);
|
|
25
26
|
useEffect(() => {
|
|
26
27
|
return () => {
|
|
27
28
|
if (debouncedSetFilter.current) {
|
|
@@ -37,6 +38,7 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
37
38
|
const tableColumns = useMemo(() => columns
|
|
38
39
|
.filter((col) => !col.hidden)
|
|
39
40
|
.map((col) => {
|
|
41
|
+
const headerName = col.headerName || String(col.field);
|
|
40
42
|
const columnDef = {
|
|
41
43
|
accessorKey: col.field,
|
|
42
44
|
accessorFn: col.valueFormatter
|
|
@@ -49,7 +51,12 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
49
51
|
});
|
|
50
52
|
}
|
|
51
53
|
: undefined,
|
|
52
|
-
header: col.
|
|
54
|
+
header: col.renderHeader
|
|
55
|
+
? () => col.renderHeader({
|
|
56
|
+
headerName,
|
|
57
|
+
field: col.field,
|
|
58
|
+
})
|
|
59
|
+
: headerName,
|
|
53
60
|
size: col.width,
|
|
54
61
|
enableResizing: col.resizable ?? true,
|
|
55
62
|
enableSorting: sorting ? col.sortable ?? true : false,
|
|
@@ -92,7 +99,7 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
92
99
|
sorting: sorting.sortState || sortingState,
|
|
93
100
|
...(filtering && { globalFilter: globalFilterState }),
|
|
94
101
|
},
|
|
95
|
-
onSortingChange:
|
|
102
|
+
onSortingChange: mode === 'server'
|
|
96
103
|
? (updater) => {
|
|
97
104
|
const newSort = typeof updater === 'function'
|
|
98
105
|
? updater(sortingState)
|
|
@@ -101,14 +108,14 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
101
108
|
sorting.onSortingChange?.(newSort);
|
|
102
109
|
}
|
|
103
110
|
: setSortingState,
|
|
104
|
-
manualSorting:
|
|
111
|
+
manualSorting: mode === 'server',
|
|
105
112
|
enableSorting: true,
|
|
106
113
|
enableMultiSort: sorting.enableMultiSort ?? false,
|
|
107
114
|
enableSortingRemoval: sorting.enableSortingRemoval ?? true,
|
|
108
115
|
maxMultiSortColCount: sorting.maxMultiSortColCount,
|
|
109
116
|
sortDescFirst: sorting.sortDescFirst ?? false,
|
|
110
117
|
isMultiSortEvent: sorting.enableMultiSort ? () => true : undefined,
|
|
111
|
-
getSortedRowModel:
|
|
118
|
+
getSortedRowModel: mode === 'client' ? getSortedRowModel() : undefined,
|
|
112
119
|
}),
|
|
113
120
|
...(filtering && {
|
|
114
121
|
state: {
|
|
@@ -120,18 +127,18 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
120
127
|
? updater(globalFilterState)
|
|
121
128
|
: updater;
|
|
122
129
|
setGlobalFilterState(newFilter);
|
|
123
|
-
if (
|
|
130
|
+
if (mode === 'server' && filtering.onFilterChange) {
|
|
124
131
|
filtering.onFilterChange(newFilter);
|
|
125
132
|
}
|
|
126
133
|
},
|
|
127
134
|
globalFilterFn: filtering.globalFilterFn,
|
|
128
|
-
getFilteredRowModel:
|
|
135
|
+
getFilteredRowModel: mode === 'client' ? getFilteredRowModel() : undefined,
|
|
129
136
|
}),
|
|
130
137
|
};
|
|
131
138
|
if (!pagination) {
|
|
132
139
|
return baseConfig;
|
|
133
140
|
}
|
|
134
|
-
if (
|
|
141
|
+
if (mode === 'client' && !pagination.infinite) {
|
|
135
142
|
return {
|
|
136
143
|
...baseConfig,
|
|
137
144
|
getPaginationRowModel: getPaginationRowModel(),
|
|
@@ -143,7 +150,7 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
143
150
|
},
|
|
144
151
|
};
|
|
145
152
|
}
|
|
146
|
-
if (
|
|
153
|
+
if (mode === 'server' && !pagination.infinite) {
|
|
147
154
|
const pageSize = paginationState.pageSize;
|
|
148
155
|
let pageCount = -1;
|
|
149
156
|
if (pagination.totalPageCount !== undefined) {
|
|
@@ -173,27 +180,30 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
173
180
|
sortingState,
|
|
174
181
|
filtering,
|
|
175
182
|
globalFilterState,
|
|
183
|
+
mode,
|
|
176
184
|
]);
|
|
177
185
|
const table = useReactTable(tableConfig);
|
|
178
186
|
useEffect(() => {
|
|
179
|
-
if (
|
|
187
|
+
if (mode === 'server' &&
|
|
188
|
+
!pagination?.infinite &&
|
|
189
|
+
pagination?.onPaginationChange) {
|
|
180
190
|
pagination.onPaginationChange({
|
|
181
191
|
pageIndex: paginationState.pageIndex,
|
|
182
192
|
pageSize: paginationState.pageSize,
|
|
183
193
|
});
|
|
184
194
|
}
|
|
185
|
-
}, [paginationState, pagination]);
|
|
195
|
+
}, [paginationState, pagination, mode]);
|
|
186
196
|
useEffect(() => {
|
|
187
|
-
if (
|
|
197
|
+
if (!isInfiniteScroll || !lastRowRef.current) {
|
|
188
198
|
return;
|
|
189
199
|
}
|
|
190
|
-
const threshold = pagination
|
|
200
|
+
const threshold = pagination?.loadMoreThreshold || 500;
|
|
191
201
|
const observer = new IntersectionObserver((entries) => {
|
|
192
202
|
const entry = entries[0];
|
|
193
203
|
if (entry.isIntersecting &&
|
|
194
|
-
pagination
|
|
195
|
-
!pagination
|
|
196
|
-
pagination
|
|
204
|
+
pagination?.hasMore &&
|
|
205
|
+
!pagination?.isLoading &&
|
|
206
|
+
pagination?.onLoadMore) {
|
|
197
207
|
pagination.onLoadMore();
|
|
198
208
|
}
|
|
199
209
|
}, {
|
|
@@ -204,14 +214,14 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
204
214
|
return () => {
|
|
205
215
|
observer.disconnect();
|
|
206
216
|
};
|
|
207
|
-
}, [rows, pagination]);
|
|
217
|
+
}, [rows, pagination, isInfiniteScroll]);
|
|
208
218
|
const tablePaginationState = table.getState().pagination;
|
|
209
219
|
const paginationAPI = useMemo(() => {
|
|
210
220
|
if (!pagination) {
|
|
211
221
|
return null;
|
|
212
222
|
}
|
|
213
223
|
const pageCount = table.getPageCount();
|
|
214
|
-
const rowCount =
|
|
224
|
+
const rowCount = mode === 'server' && !pagination.infinite
|
|
215
225
|
? pagination.totalRowCount || rows.length
|
|
216
226
|
: rows.length;
|
|
217
227
|
return {
|
|
@@ -227,12 +237,18 @@ function NvDatatable({ columns, rows, pagination, sorting, filtering, renderPagi
|
|
|
227
237
|
setPageSize: (size) => table.setPageSize(size),
|
|
228
238
|
canPreviousPage: table.getCanPreviousPage(),
|
|
229
239
|
canNextPage: table.getCanNextPage(),
|
|
230
|
-
isLoading:
|
|
231
|
-
hasMore:
|
|
240
|
+
isLoading: isInfiniteScroll ? pagination.isLoading : undefined,
|
|
241
|
+
hasMore: isInfiniteScroll ? pagination.hasMore : undefined,
|
|
232
242
|
};
|
|
233
|
-
}, [
|
|
243
|
+
}, [
|
|
244
|
+
pagination,
|
|
245
|
+
table,
|
|
246
|
+
rows.length,
|
|
247
|
+
tablePaginationState,
|
|
248
|
+
mode,
|
|
249
|
+
isInfiniteScroll,
|
|
250
|
+
]);
|
|
234
251
|
const tableRows = table.getRowModel().rows;
|
|
235
|
-
const isInfiniteScroll = pagination?.mode === 'infinite';
|
|
236
252
|
const filteringAPI = useMemo(() => {
|
|
237
253
|
if (!filtering) {
|
|
238
254
|
return null;
|
|
@@ -15,6 +15,9 @@ import { NvDatagridcolumn as NvDatagridcolumnElement, defineCustomElement as def
|
|
|
15
15
|
import { NvDialog as NvDialogElement, defineCustomElement as defineNvDialog } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialog.js";
|
|
16
16
|
import { NvDialogfooter as NvDialogfooterElement, defineCustomElement as defineNvDialogfooter } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogfooter.js";
|
|
17
17
|
import { NvDialogheader as NvDialogheaderElement, defineCustomElement as defineNvDialogheader } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogheader.js";
|
|
18
|
+
import { NvDrawer as NvDrawerElement, defineCustomElement as defineNvDrawer } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawer.js";
|
|
19
|
+
import { NvDrawerfooter as NvDrawerfooterElement, defineCustomElement as defineNvDrawerfooter } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawerfooter.js";
|
|
20
|
+
import { NvDrawerheader as NvDrawerheaderElement, defineCustomElement as defineNvDrawerheader } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawerheader.js";
|
|
18
21
|
import { NvFieldcheckbox as NvFieldcheckboxElement, defineCustomElement as defineNvFieldcheckbox } from "@nova-design-system/nova-webcomponents/dist/components/nv-fieldcheckbox.js";
|
|
19
22
|
import { NvFielddate as NvFielddateElement, defineCustomElement as defineNvFielddate } from "@nova-design-system/nova-webcomponents/dist/components/nv-fielddate.js";
|
|
20
23
|
import { NvFielddaterange as NvFielddaterangeElement, defineCustomElement as defineNvFielddaterange } from "@nova-design-system/nova-webcomponents/dist/components/nv-fielddaterange.js";
|
|
@@ -190,6 +193,30 @@ export const NvDialogheader = createComponent({
|
|
|
190
193
|
events: {},
|
|
191
194
|
defineCustomElement: defineNvDialogheader
|
|
192
195
|
});
|
|
196
|
+
export const NvDrawer = createComponent({
|
|
197
|
+
tagName: 'nv-drawer',
|
|
198
|
+
elementClass: NvDrawerElement,
|
|
199
|
+
react: React,
|
|
200
|
+
events: { onOpenChanged: 'openChanged' },
|
|
201
|
+
defineCustomElement: defineNvDrawer
|
|
202
|
+
});
|
|
203
|
+
export const NvDrawerfooter = createComponent({
|
|
204
|
+
tagName: 'nv-drawerfooter',
|
|
205
|
+
elementClass: NvDrawerfooterElement,
|
|
206
|
+
react: React,
|
|
207
|
+
events: {
|
|
208
|
+
onDrawerCanceled: 'drawerCanceled',
|
|
209
|
+
onDrawerPrimaryClicked: 'drawerPrimaryClicked'
|
|
210
|
+
},
|
|
211
|
+
defineCustomElement: defineNvDrawerfooter
|
|
212
|
+
});
|
|
213
|
+
export const NvDrawerheader = createComponent({
|
|
214
|
+
tagName: 'nv-drawerheader',
|
|
215
|
+
elementClass: NvDrawerheaderElement,
|
|
216
|
+
react: React,
|
|
217
|
+
events: {},
|
|
218
|
+
defineCustomElement: defineNvDrawerheader
|
|
219
|
+
});
|
|
193
220
|
export const NvFieldcheckbox = createComponent({
|
|
194
221
|
tagName: 'nv-fieldcheckbox',
|
|
195
222
|
elementClass: NvFieldcheckboxElement,
|
|
@@ -225,6 +225,50 @@ export const NvDialogheader = createComponent({
|
|
|
225
225
|
clientModule: clientComponents.NvDialogheader,
|
|
226
226
|
serializeShadowRoot,
|
|
227
227
|
});
|
|
228
|
+
export const NvDrawer = createComponent({
|
|
229
|
+
tagName: 'nv-drawer',
|
|
230
|
+
properties: {
|
|
231
|
+
open: 'open',
|
|
232
|
+
undismissable: 'undismissable',
|
|
233
|
+
clickOutside: 'click-outside',
|
|
234
|
+
controlled: 'controlled',
|
|
235
|
+
side: 'side',
|
|
236
|
+
size: 'size',
|
|
237
|
+
width: 'width',
|
|
238
|
+
autofocus: 'autofocus',
|
|
239
|
+
swipeToOpen: 'swipe-to-open'
|
|
240
|
+
},
|
|
241
|
+
hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
|
|
242
|
+
clientModule: clientComponents.NvDrawer,
|
|
243
|
+
serializeShadowRoot,
|
|
244
|
+
});
|
|
245
|
+
export const NvDrawerfooter = createComponent({
|
|
246
|
+
tagName: 'nv-drawerfooter',
|
|
247
|
+
properties: {
|
|
248
|
+
disabled: 'disabled',
|
|
249
|
+
undismissable: 'undismissable',
|
|
250
|
+
leadingIcon: 'leading-icon',
|
|
251
|
+
trailingIcon: 'trailing-icon',
|
|
252
|
+
danger: 'danger',
|
|
253
|
+
cancelLabel: 'cancel-label',
|
|
254
|
+
primaryLabel: 'primary-label',
|
|
255
|
+
primaryButtonType: 'primary-button-type',
|
|
256
|
+
form: 'form'
|
|
257
|
+
},
|
|
258
|
+
hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
|
|
259
|
+
clientModule: clientComponents.NvDrawerfooter,
|
|
260
|
+
serializeShadowRoot,
|
|
261
|
+
});
|
|
262
|
+
export const NvDrawerheader = createComponent({
|
|
263
|
+
tagName: 'nv-drawerheader',
|
|
264
|
+
properties: {
|
|
265
|
+
heading: 'heading',
|
|
266
|
+
subheading: 'subheading'
|
|
267
|
+
},
|
|
268
|
+
hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
|
|
269
|
+
clientModule: clientComponents.NvDrawerheader,
|
|
270
|
+
serializeShadowRoot,
|
|
271
|
+
});
|
|
228
272
|
export const NvFieldcheckbox = createComponent({
|
|
229
273
|
tagName: 'nv-fieldcheckbox',
|
|
230
274
|
properties: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { NvDatatableProps } from './types';
|
|
3
|
-
declare function NvDatatable<T>({ 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, renderPagination, renderFiltering, stickyHeader, ...htmlProps }: NvDatatableProps<T>): React.JSX.Element;
|
|
4
4
|
declare namespace NvDatatable {
|
|
5
5
|
var displayName: string;
|
|
6
6
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { ComponentProps } from 'react';
|
|
2
2
|
import type { SortingFn, NoInfer, SortingState, Row } from '@tanstack/react-table';
|
|
3
|
+
export type NvDatatableMode = 'client' | 'server';
|
|
3
4
|
export type NvDatatableProps<T> = {
|
|
5
|
+
mode?: NvDatatableMode;
|
|
4
6
|
columns: Array<NvDatatableColumn<T>>;
|
|
5
7
|
rows: Array<T>;
|
|
6
8
|
pagination?: NvDatatablePaginationConfig;
|
|
@@ -18,12 +20,17 @@ export interface NvDatatableColumn<Row, K extends keyof Row = keyof Row, F = Row
|
|
|
18
20
|
hidden?: boolean;
|
|
19
21
|
valueFormatter?: (params: NvTableValueFormatterParams<Row, Row[K], K>) => F;
|
|
20
22
|
renderCell?: (params: NvTableRenderCellParams<Row, F, K>) => React.ReactNode;
|
|
23
|
+
renderHeader?: (params: NvTableRenderHeaderParams<K>) => React.ReactNode;
|
|
21
24
|
sortable?: boolean;
|
|
22
25
|
sortingFn?: SortingFn<Row> | string;
|
|
23
26
|
sortDescFirst?: boolean;
|
|
24
27
|
invertSorting?: boolean;
|
|
25
28
|
sortUndefined?: 'first' | 'last' | false | -1 | 1;
|
|
26
29
|
}
|
|
30
|
+
export interface NvTableRenderHeaderParams<Field> {
|
|
31
|
+
headerName: string;
|
|
32
|
+
field: Field;
|
|
33
|
+
}
|
|
27
34
|
export interface NvTableRenderCellParams<Row, Value, Field> {
|
|
28
35
|
value: Value | NoInfer<Value>;
|
|
29
36
|
row: Row;
|
|
@@ -36,7 +43,7 @@ export interface NvTableValueFormatterParams<Row, Value, Field> {
|
|
|
36
43
|
field: Field;
|
|
37
44
|
}
|
|
38
45
|
export interface NvDatatablePaginationConfig {
|
|
39
|
-
|
|
46
|
+
infinite?: boolean;
|
|
40
47
|
initialPageSize?: number;
|
|
41
48
|
pageSizeOptions?: number[];
|
|
42
49
|
totalRowCount?: number;
|
|
@@ -68,7 +75,6 @@ export interface NvDatatableRenderPaginationAPI {
|
|
|
68
75
|
}
|
|
69
76
|
export type NvDataTableSortingState = SortingState;
|
|
70
77
|
export interface NvDatatableSortingConfig {
|
|
71
|
-
mode: 'client' | 'server';
|
|
72
78
|
enableMultiSort?: boolean;
|
|
73
79
|
enableSortingRemoval?: boolean;
|
|
74
80
|
maxMultiSortColCount?: number;
|
|
@@ -77,7 +83,6 @@ export interface NvDatatableSortingConfig {
|
|
|
77
83
|
onSortingChange?: (sorting: SortingState) => void;
|
|
78
84
|
}
|
|
79
85
|
export interface NvDatatableFilteringConfig<T> {
|
|
80
|
-
mode: 'client' | 'server';
|
|
81
86
|
filterState?: unknown;
|
|
82
87
|
onFilterChange?: (filterState: unknown) => void;
|
|
83
88
|
globalFilterFn?: (row: Row<T>, columnId: string, filterValue: unknown) => boolean;
|
|
@@ -15,6 +15,9 @@ import { NvDatagridcolumn as NvDatagridcolumnElement } from "@nova-design-system
|
|
|
15
15
|
import { NvDialog as NvDialogElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialog.js";
|
|
16
16
|
import { NvDialogfooter as NvDialogfooterElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogfooter.js";
|
|
17
17
|
import { NvDialogheader as NvDialogheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogheader.js";
|
|
18
|
+
import { NvDrawer as NvDrawerElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawer.js";
|
|
19
|
+
import { NvDrawerfooter as NvDrawerfooterElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawerfooter.js";
|
|
20
|
+
import { NvDrawerheader as NvDrawerheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawerheader.js";
|
|
18
21
|
import { NvFieldcheckbox as NvFieldcheckboxElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-fieldcheckbox.js";
|
|
19
22
|
import { NvFielddate as NvFielddateElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-fielddate.js";
|
|
20
23
|
import { NvFielddaterange as NvFielddaterangeElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-fielddaterange.js";
|
|
@@ -128,6 +131,17 @@ export type NvDialogfooterEvents = {
|
|
|
128
131
|
export declare const NvDialogfooter: StencilReactComponent<NvDialogfooterElement, NvDialogfooterEvents>;
|
|
129
132
|
export type NvDialogheaderEvents = NonNullable<unknown>;
|
|
130
133
|
export declare const NvDialogheader: StencilReactComponent<NvDialogheaderElement, NvDialogheaderEvents>;
|
|
134
|
+
export type NvDrawerEvents = {
|
|
135
|
+
onOpenChanged: EventName<CustomEvent<boolean>>;
|
|
136
|
+
};
|
|
137
|
+
export declare const NvDrawer: StencilReactComponent<NvDrawerElement, NvDrawerEvents>;
|
|
138
|
+
export type NvDrawerfooterEvents = {
|
|
139
|
+
onDrawerCanceled: EventName<CustomEvent<void>>;
|
|
140
|
+
onDrawerPrimaryClicked: EventName<CustomEvent<void>>;
|
|
141
|
+
};
|
|
142
|
+
export declare const NvDrawerfooter: StencilReactComponent<NvDrawerfooterElement, NvDrawerfooterEvents>;
|
|
143
|
+
export type NvDrawerheaderEvents = NonNullable<unknown>;
|
|
144
|
+
export declare const NvDrawerheader: StencilReactComponent<NvDrawerheaderElement, NvDrawerheaderEvents>;
|
|
131
145
|
export type NvFieldcheckboxEvents = {
|
|
132
146
|
onCheckedChanged: EventName<CustomEvent<boolean>>;
|
|
133
147
|
};
|
|
@@ -15,6 +15,9 @@ import { NvDatagridcolumn as NvDatagridcolumnElement } from "@nova-design-system
|
|
|
15
15
|
import { NvDialog as NvDialogElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialog.js";
|
|
16
16
|
import { NvDialogfooter as NvDialogfooterElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogfooter.js";
|
|
17
17
|
import { NvDialogheader as NvDialogheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-dialogheader.js";
|
|
18
|
+
import { NvDrawer as NvDrawerElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawer.js";
|
|
19
|
+
import { NvDrawerfooter as NvDrawerfooterElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawerfooter.js";
|
|
20
|
+
import { NvDrawerheader as NvDrawerheaderElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-drawerheader.js";
|
|
18
21
|
import { NvFieldcheckbox as NvFieldcheckboxElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-fieldcheckbox.js";
|
|
19
22
|
import { NvFielddate as NvFielddateElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-fielddate.js";
|
|
20
23
|
import { NvFielddaterange as NvFielddaterangeElement } from "@nova-design-system/nova-webcomponents/dist/components/nv-fielddaterange.js";
|
|
@@ -130,6 +133,17 @@ export type NvDialogfooterEvents = {
|
|
|
130
133
|
export declare const NvDialogfooter: StencilReactComponent<NvDialogfooterElement, NvDialogfooterEvents>;
|
|
131
134
|
export type NvDialogheaderEvents = NonNullable<unknown>;
|
|
132
135
|
export declare const NvDialogheader: StencilReactComponent<NvDialogheaderElement, NvDialogheaderEvents>;
|
|
136
|
+
export type NvDrawerEvents = {
|
|
137
|
+
onOpenChanged: EventName<CustomEvent<boolean>>;
|
|
138
|
+
};
|
|
139
|
+
export declare const NvDrawer: StencilReactComponent<NvDrawerElement, NvDrawerEvents>;
|
|
140
|
+
export type NvDrawerfooterEvents = {
|
|
141
|
+
onDrawerCanceled: EventName<CustomEvent<void>>;
|
|
142
|
+
onDrawerPrimaryClicked: EventName<CustomEvent<void>>;
|
|
143
|
+
};
|
|
144
|
+
export declare const NvDrawerfooter: StencilReactComponent<NvDrawerfooterElement, NvDrawerfooterEvents>;
|
|
145
|
+
export type NvDrawerheaderEvents = NonNullable<unknown>;
|
|
146
|
+
export declare const NvDrawerheader: StencilReactComponent<NvDrawerheaderElement, NvDrawerheaderEvents>;
|
|
133
147
|
export type NvFieldcheckboxEvents = {
|
|
134
148
|
onCheckedChanged: EventName<CustomEvent<boolean>>;
|
|
135
149
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nova-design-system/nova-react",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.24.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",
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('./index-CtjeeUI-.js');
|
|
4
|
-
require('@stencil/react-output-target/runtime');
|
|
5
|
-
require('react');
|
|
6
|
-
require('react-dom');
|
|
7
|
-
|
|
8
|
-
const nvTogglebuttonCss = "nv-togglebutton{display:inline-flex;justify-content:center;align-items:center}nv-togglebutton:focus-visible,nv-togglebutton:has(:focus-visible){z-index:1}nv-togglebutton[size=xs]{padding:var(--button-xs-padding-y) var(--button-xs-padding-x);gap:var(--button-xs-gap);border-radius:var(--button-xs-border-radius);line-height:var(--button-xs-line-height);height:var(--button-xs-height);font-size:var(--button-xs-font-size)}nv-togglebutton[size=xs] nv-icon>svg{width:var(--spacing-3);height:var(--spacing-3);stroke-width:1.2px}nv-togglebutton[size=xs]{padding-top:calc(var(--togglegroup-xs-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-xs-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-xs-button-radius));border-width:0}nv-togglebutton[size=sm]{padding:var(--button-sm-padding-y) var(--button-sm-padding-x);gap:var(--button-sm-gap);border-radius:var(--button-sm-border-radius);line-height:var(--button-sm-line-height);height:var(--button-sm-height);font-size:var(--button-sm-font-size)}nv-togglebutton[size=sm] nv-icon>svg{width:var(--spacing-4);height:var(--spacing-4);stroke-width:1.5px}nv-togglebutton[size=sm]{padding-top:calc(var(--togglegroup-sm-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-sm-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-sm-button-radius));border-width:0}nv-togglebutton[size=md]{padding:var(--button-md-padding-y) var(--button-md-padding-x);gap:var(--button-md-gap);border-radius:var(--button-md-border-radius);line-height:var(--button-md-line-height);height:var(--button-md-height);font-size:var(--button-md-font-size)}nv-togglebutton[size=md] nv-icon>svg{width:var(--spacing-5);height:var(--spacing-5);stroke-width:1.6px}nv-togglebutton[size=md]{padding-top:calc(var(--togglegroup-md-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-md-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-md-button-radius));border-width:0}nv-togglebutton[size=lg]{padding:var(--button-lg-padding-y) var(--button-lg-padding-x);gap:var(--button-lg-gap);border-radius:var(--button-lg-border-radius);line-height:var(--button-lg-line-height);height:var(--button-lg-height);font-size:var(--button-lg-font-size)}nv-togglebutton[size=lg] nv-icon>svg{width:var(--spacing-6);height:var(--spacing-6);stroke-width:1.8px}nv-togglebutton[size=lg]{padding-top:calc(var(--togglegroup-lg-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-lg-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-lg-button-radius));border-width:0}nv-togglebutton[emphasis=high]{background:var(--components-button-low-background);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text)}nv-togglebutton[emphasis=high]:hover{background:var(--components-button-low-background-hover);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text-hover)}nv-togglebutton[emphasis=high]:active{background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=high]:focus,nv-togglebutton[emphasis=high]:focus-within{outline:none}nv-togglebutton[emphasis=high]:focus-visible,nv-togglebutton[emphasis=high]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=high]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=high][active]:not([active=false]){background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=low]{background:var(--components-button-lower-background);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text)}nv-togglebutton[emphasis=low]:hover{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-active);border:1px solid var(--components-button-lower-border-active);color:var(--components-button-lower-text-active)}nv-togglebutton[emphasis=low]:focus,nv-togglebutton[emphasis=low]:focus-within{outline:none}nv-togglebutton[emphasis=low]:focus-visible,nv-togglebutton[emphasis=low]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=low]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=low][active]:not([active=false]),nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}";
|
|
9
|
-
|
|
10
|
-
const NvTogglebutton = class {
|
|
11
|
-
constructor(hostRef) {
|
|
12
|
-
index.registerInstance(this, hostRef);
|
|
13
|
-
this.toggled = index.createEvent(this, "toggled", 7);
|
|
14
|
-
/****************************************************************************/
|
|
15
|
-
//#region PROPERTIES
|
|
16
|
-
/**
|
|
17
|
-
* Determines how large or small the togglebutton appears, allowing for
|
|
18
|
-
* customization of the togglebutton's dimensions to fit different design
|
|
19
|
-
* specifications and user needs.
|
|
20
|
-
*/
|
|
21
|
-
this.size = 'md';
|
|
22
|
-
/**
|
|
23
|
-
* Prevents all interaction, rendering the toggle in a non-interactive state.
|
|
24
|
-
*/
|
|
25
|
-
this.disabled = false;
|
|
26
|
-
/**
|
|
27
|
-
* Whether the button is active or not. Will not toggle automatically but
|
|
28
|
-
* needs to be controlled externally.
|
|
29
|
-
*/
|
|
30
|
-
this.active = false;
|
|
31
|
-
/**
|
|
32
|
-
* Make it more or less visually prominent to users.
|
|
33
|
-
*/
|
|
34
|
-
this.emphasis = 'high';
|
|
35
|
-
//#endregion PROPERTIES
|
|
36
|
-
/****************************************************************************/
|
|
37
|
-
//#region METHODS
|
|
38
|
-
this.handleClick = () => {
|
|
39
|
-
if (this.disabled)
|
|
40
|
-
return;
|
|
41
|
-
this.toggled.emit({
|
|
42
|
-
value: this.value,
|
|
43
|
-
active: this.active,
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
//#endregion METHODS
|
|
48
|
-
/****************************************************************************/
|
|
49
|
-
//#region LISTENERS
|
|
50
|
-
handleKeyDown(event) {
|
|
51
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
52
|
-
event.preventDefault();
|
|
53
|
-
this.el.click();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/* eslint-enable nova/event-bubbling */
|
|
57
|
-
//#endregion EVENTS
|
|
58
|
-
/****************************************************************************/
|
|
59
|
-
//#region RENDER
|
|
60
|
-
render() {
|
|
61
|
-
return (index.h(index.Host, { key: '0285637cb14c292c67d767dc83b72f52c5368269', role: "button", tabindex: "0", "aria-pressed": String(this.active), onClick: this.handleClick }, index.h("slot", { key: 'a84f303e76070b99ff2c01e5ec400f2e78503b19' })));
|
|
62
|
-
}
|
|
63
|
-
get el() { return index.getElement(this); }
|
|
64
|
-
};
|
|
65
|
-
NvTogglebutton.style = nvTogglebuttonCss;
|
|
66
|
-
|
|
67
|
-
exports.nv_togglebutton = NvTogglebutton;
|