@nova-design-system/nova-react 3.14.0 → 3.16.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/{collapse.animation-acda1bf5-BuORVmQv.js → collapse.animation-6e0b08df-AHWzNGm_.js} +4 -1
- package/dist/cjs/{constants-d0f19e7b-s0SCO_vi.js → constants-69bafca2-DpB_ghPF.js} +9 -0
- package/dist/cjs/{fade.animation-eb454088-Bma0SpTf.js → fade.animation-9b939939-DV--bM4S.js} +2 -2
- package/dist/cjs/{index-CKAZvszR.js → index-7K7BV1CP.js} +4676 -1345
- package/dist/cjs/index.js +10 -2
- package/dist/cjs/{nv-accordion-item.entry-CjBcmF8t.js → nv-accordion-item.entry-C-9tYw-c.js} +6 -5
- package/dist/cjs/{nv-accordion.entry-CRk2Wvt3.js → nv-accordion.entry-BA3mTIdj.js} +7 -6
- package/dist/cjs/{nv-alert.entry-D5qB5xZg.js → nv-alert.entry-Bic-YGW1.js} +13 -12
- package/dist/cjs/nv-avatar.entry-C-yd0YlD.js +68 -0
- package/dist/cjs/{nv-badge_2.entry-BDuX1qOQ.js → nv-badge_2.entry-B_8yvNXL.js} +11 -10
- package/dist/cjs/{nv-breadcrumb.entry-BE9U6AF_.js → nv-breadcrumb.entry-BCTbG942.js} +3 -2
- package/dist/cjs/{nv-breadcrumbs.entry-DJXqtmMR.js → nv-breadcrumbs.entry-C9B5Baf7.js} +2 -1
- package/dist/cjs/nv-button.entry-DgX8Bwmq.js +165 -0
- package/dist/cjs/{nv-buttongroup.entry-C0Zc2lOi.js → nv-buttongroup.entry-CKhZN_Yf.js} +2 -1
- package/dist/cjs/{nv-calendar.entry-NbVLStMN.js → nv-calendar.entry-E6Pk83WA.js} +8 -7
- package/dist/cjs/{nv-col.entry-ahFf8a1Z.js → nv-col.entry-CkZpukX9.js} +2 -1
- package/dist/cjs/{nv-datagrid.entry-C-MJXEdi.js → nv-datagrid.entry-RsfP7vbC.js} +183 -15
- package/dist/cjs/{nv-datagridcolumn.entry-CxU7soW7.js → nv-datagridcolumn.entry-D4VrDWo9.js} +2 -1
- package/dist/cjs/{nv-dialog.entry-WlnaC-w2.js → nv-dialog.entry-BhtWpYHl.js} +34 -30
- package/dist/cjs/{nv-dialogfooter_2.entry-CEWmTnJc.js → nv-dialogfooter_2.entry-BXLYmzYl.js} +6 -5
- package/dist/cjs/{nv-fieldcheckbox.entry-BYhFVrYb.js → nv-fieldcheckbox.entry-D96Nm6DZ.js} +3 -2
- package/dist/cjs/{nv-fielddate.entry-DVVnRiOT.js → nv-fielddate.entry-ty37R9jF.js} +52 -26
- package/dist/cjs/{nv-fielddaterange.entry-Cb4X5Q-C.js → nv-fielddaterange.entry-BSIRu_mq.js} +69 -42
- package/dist/cjs/{nv-fielddropdown.entry-D2PKGkpx.js → nv-fielddropdown.entry-CUzvIoZZ.js} +34 -7
- package/dist/cjs/{nv-fielddropdownitem.entry-BqgMRnIc.js → nv-fielddropdownitem.entry-D-GTxLNk.js} +2 -1
- package/dist/cjs/{nv-fieldmultiselect.entry-Dzw4c9wO.js → nv-fieldmultiselect.entry-DFY2bf6s.js} +188 -156
- package/dist/cjs/{nv-fieldnumber.entry-Cm5g6tw7.js → nv-fieldnumber.entry-CILclJ7Q.js} +3 -2
- package/dist/cjs/{nv-fieldpassword.entry-BMI5M4RR.js → nv-fieldpassword.entry-CdR-NM8e.js} +3 -2
- package/dist/cjs/{nv-fieldradio.entry-BrCJvkMR.js → nv-fieldradio.entry-lC4scIvU.js} +3 -2
- package/dist/cjs/{nv-fieldselect.entry-Cz76Y4Fb.js → nv-fieldselect.entry-CYu6870F.js} +3 -2
- package/dist/cjs/{nv-fieldslider.entry-C2ynnMK8.js → nv-fieldslider.entry-DOuJAR6P.js} +3 -2
- package/dist/cjs/{nv-fieldtext.entry-B6ciu2fU.js → nv-fieldtext.entry-BFLUiPa4.js} +3 -2
- package/dist/cjs/{nv-fieldtextarea.entry-BL_gMvTp.js → nv-fieldtextarea.entry-BeI0k97G.js} +3 -2
- package/dist/cjs/{nv-fieldtime.entry-Be5fujXA.js → nv-fieldtime.entry-C28EAKki.js} +82 -68
- package/dist/cjs/nv-icon.entry-BXgjUpe_.js +80 -0
- package/dist/cjs/{nv-iconbutton_2.entry-Dlk96yHi.js → nv-iconbutton_2.entry-CpIkxrp9.js} +3 -2
- package/dist/cjs/{nv-menu.entry-CDn1Tk9J.js → nv-menu.entry-as-NOsF-.js} +25 -9
- package/dist/cjs/{nv-menuitem.entry-DIkQnha9.js → nv-menuitem.entry-D8KAh6nr.js} +2 -1
- package/dist/cjs/nv-notification.entry-C-_jV-DL.js +262 -0
- package/dist/cjs/nv-notificationcontainer.entry-CMn42loT.js +41 -0
- package/dist/cjs/{nv-popover.entry-Bz9ZWGlN.js → nv-popover.entry--BhEBSir.js} +72 -65
- package/dist/cjs/{nv-row.entry-iJGXINmZ.js → nv-row.entry-BxhcK9aY.js} +3 -2
- package/dist/cjs/{nv-stack.entry-CifEjR2g.js → nv-stack.entry-C3DF9jJZ.js} +3 -2
- package/dist/cjs/nv-table.entry-pfEGt2KH.js +245 -0
- package/dist/cjs/nv-toggle.entry-ChpqtQtn.js +80 -0
- package/dist/cjs/{nv-togglebutton.entry-X4eLeP-C.js → nv-togglebutton.entry-DE7CKmeN.js} +3 -2
- package/dist/cjs/{nv-togglebuttongroup.entry-BYO58vql.js → nv-togglebuttongroup.entry-BJPjdmHD.js} +3 -2
- package/dist/cjs/{nv-tooltip.entry-DaxjQSt1.js → nv-tooltip.entry-D9-Fga6C.js} +3 -2
- package/dist/components/NvDatatable.js +45 -0
- package/dist/generated/components.js +10 -10
- package/dist/generated/components.server.js +9 -17
- package/dist/index.js +2 -0
- package/dist/providers/NotificationProvider.js +83 -0
- package/dist/types/components/NvDatatable.d.ts +25 -0
- package/dist/types/generated/components.d.ts +5 -12
- package/dist/types/generated/components.server.d.ts +5 -12
- package/dist/types/index.d.ts +2 -0
- package/dist/types/providers/NotificationProvider.d.ts +36 -0
- package/package.json +7 -3
- package/dist/cjs/dom.utils-ac71e0ef-CmIwRr6O.js +0 -168
- package/dist/cjs/nv-avatar.entry-CuNYdZl_.js +0 -67
- package/dist/cjs/nv-button.entry-CF5IDcG3.js +0 -164
- package/dist/cjs/nv-icon.entry-C-wbfOy3.js +0 -79
- package/dist/cjs/nv-notification.entry-BiwnZCkF.js +0 -178
- package/dist/cjs/nv-table.entry-Dxg0j3fe.js +0 -338
- package/dist/cjs/nv-tablecolumn.entry--29MFEe9.js +0 -18
- package/dist/cjs/nv-toggle.entry-D0eQoEqf.js +0 -79
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-7K7BV1CP.js');
|
|
4
4
|
var clsx297c1ffe = require('./clsx-297c1ffe-BtxeOLZW.js');
|
|
5
5
|
require('react');
|
|
6
|
+
require('react-dom');
|
|
6
7
|
|
|
7
8
|
const nvStackCss = "nv-stack{display:flex;align-items:center;justify-content:flex-start;flex-direction:row}nv-stack nv-col{display:flex}nv-stack:not(nv-row){flex-wrap:nowrap}nv-stack>.nv-stack-item-flex{flex-shrink:1;flex-grow:1}nv-stack>.nv-stack-item-lead{margin-right:auto}nv-stack>.nv-stack-item-lead+*{margin-left:0}nv-stack>.nv-stack-item-center{margin-right:auto;margin-left:auto}nv-stack>.nv-stack-item-tail{margin-left:auto}nv-stack>.nv-stack-nowrap{white-space:nowrap}nv-stack.nv-stack-vertical{align-items:stretch;flex-direction:column}nv-stack.nv-stack-vertical>.nv-stack-item-lead{margin-right:0;margin-bottom:auto}nv-stack.nv-stack-vertical>.nv-stack-item-lead+*{margin-top:0}nv-stack.nv-stack-vertical>.nv-stack-item-tail{margin-left:0;margin-top:auto}nv-stack.nv-stack-vertical>.nv-stack-item-center{margin:auto 0}nv-stack.nv-stack-flex>*{flex-shrink:1;flex-grow:1}nv-stack.nv-stack-fill>*{height:100%}nv-stack.nv-stack-fill.nv-stack-vertical>*{height:auto;width:100%}";
|
|
8
9
|
const NvStackStyle0 = nvStackCss;
|
|
@@ -22,7 +23,7 @@ const NvStack = class {
|
|
|
22
23
|
/****************************************************************************/
|
|
23
24
|
//#region RENDER
|
|
24
25
|
render() {
|
|
25
|
-
return (index.h(index.Host, { key: '
|
|
26
|
+
return (index.h(index.Host, { key: '8f771805224c769b5a87f5c550ddbcb8f888d002', class: clsx297c1ffe.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: '6fcd46cfd74415d2f07c762b065e3aa0f0194764' })));
|
|
26
27
|
}
|
|
27
28
|
};
|
|
28
29
|
NvStack.style = NvStackStyle0;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-7K7BV1CP.js');
|
|
4
|
+
require('react');
|
|
5
|
+
require('react-dom');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Table utility functions and constants for nv-table component
|
|
9
|
+
*
|
|
10
|
+
* This module contains pure utility functions for table column resizing logic,
|
|
11
|
+
* pointer event handling calculations, and related helper functions.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Constants for table column resizing behavior
|
|
15
|
+
*/
|
|
16
|
+
const TABLE_CONSTANTS = Object.freeze({
|
|
17
|
+
/** Handle width for fine pointers (mouse) in pixels */
|
|
18
|
+
HANDLE_W: 12,
|
|
19
|
+
/** Handle width for coarse pointers (touch) in pixels */
|
|
20
|
+
HANDLE_W_TOUCH: 24,
|
|
21
|
+
/** Minimum column width in pixels */
|
|
22
|
+
MIN_W: 40,
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Determines the appropriate handle width based on the current pointer type
|
|
26
|
+
* @returns {number} Handle width in pixels (10px for fine pointers, 24px for coarse/touch)
|
|
27
|
+
*/
|
|
28
|
+
function getHandleWidthForCurrentPointer() {
|
|
29
|
+
// Match the CSS media query: wider handle on coarse pointers (touch)
|
|
30
|
+
return matchMedia('(pointer: coarse)').matches
|
|
31
|
+
? TABLE_CONSTANTS.HANDLE_W_TOUCH
|
|
32
|
+
: TABLE_CONSTANTS.HANDLE_W;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Calculates the pointer's horizontal offset within a table cell
|
|
36
|
+
* @param {PointerEvent} event - The pointer event
|
|
37
|
+
* @param {HTMLTableCellElement} cell - The table cell element
|
|
38
|
+
* @returns {number} The horizontal offset from the left edge of the cell
|
|
39
|
+
*/
|
|
40
|
+
function getPointerOffsetInCell(event, cell) {
|
|
41
|
+
const rect = cell.getBoundingClientRect();
|
|
42
|
+
return event.clientX - rect.left;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Determines if the pointer is within the resize handle area of a table cell
|
|
46
|
+
* @param {number} offsetX - Horizontal offset within the cell
|
|
47
|
+
* @param {number} cellWidth - Total width of the cell
|
|
48
|
+
* @param {number} handleWidth - Width of the resize handle area
|
|
49
|
+
* @returns {boolean} True if the pointer is in the resize handle area
|
|
50
|
+
*/
|
|
51
|
+
function isInResizeHandle(offsetX, cellWidth, handleWidth) {
|
|
52
|
+
return offsetX >= cellWidth - handleWidth;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Calculates the new column width based on resize delta and constraints
|
|
56
|
+
* @param {number} startWidth - Original width of the column
|
|
57
|
+
* @param {number} delta - Change in pixels from the start position
|
|
58
|
+
* @param {number} minWidth - Minimum allowed width for the column
|
|
59
|
+
* @returns {number} The calculated new width, constrained by minimum
|
|
60
|
+
*/
|
|
61
|
+
function calculateNewWidth(startWidth, delta, minWidth = TABLE_CONSTANTS.MIN_W) {
|
|
62
|
+
return Math.max(minWidth, startWidth + delta);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Validates that a table cell element is suitable for resizing
|
|
66
|
+
* @param {HTMLElement | null} element - The element to check
|
|
67
|
+
* @returns {element is HTMLTableCellElement} Type guard for table cell elements
|
|
68
|
+
*/
|
|
69
|
+
function isValidTableCell(element) {
|
|
70
|
+
return (element === null || element === void 0 ? void 0 : element.tagName) === 'TH' || (element === null || element === void 0 ? void 0 : element.tagName) === 'TD';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Finds the closest table cell element from an event target
|
|
74
|
+
* @param {EventTarget | null} target - The event target
|
|
75
|
+
* @returns {HTMLTableCellElement | null} The closest table cell or null
|
|
76
|
+
*/
|
|
77
|
+
function getClosestTableCell(target) {
|
|
78
|
+
if (!(target instanceof HTMLElement))
|
|
79
|
+
return null;
|
|
80
|
+
const cell = target.closest('th, td');
|
|
81
|
+
return isValidTableCell(cell) ? cell : null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Sets up pointer capture for consistent drag behavior across browsers
|
|
85
|
+
* @param {HTMLTableCellElement} cell - The table cell element
|
|
86
|
+
* @param {number} pointerId - The pointer ID from the pointer event
|
|
87
|
+
* @returns {boolean} True if capture was successfully set
|
|
88
|
+
*/
|
|
89
|
+
function setPointerCapture(cell, pointerId) {
|
|
90
|
+
var _a;
|
|
91
|
+
try {
|
|
92
|
+
(_a = cell.setPointerCapture) === null || _a === void 0 ? void 0 : _a.call(cell, pointerId);
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
catch (_b) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Releases pointer capture
|
|
101
|
+
* @param {HTMLTableCellElement} cell - The table cell element
|
|
102
|
+
* @param {number} pointerId - The pointer ID from the pointer event
|
|
103
|
+
* @returns {boolean} True if release was successful
|
|
104
|
+
*/
|
|
105
|
+
function releasePointerCapture(cell, pointerId) {
|
|
106
|
+
var _a;
|
|
107
|
+
try {
|
|
108
|
+
(_a = cell.releasePointerCapture) === null || _a === void 0 ? void 0 : _a.call(cell, pointerId);
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
catch (_b) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Prevents text selection during drag operations
|
|
117
|
+
* @param {boolean} prevent - Whether to prevent selection
|
|
118
|
+
*/
|
|
119
|
+
function setUserSelectPrevention(prevent) {
|
|
120
|
+
document.body.style.userSelect = prevent ? 'none' : '';
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Gets the current width of a table cell element
|
|
124
|
+
* @param {HTMLTableCellElement} cell - The table cell element
|
|
125
|
+
* @returns {number} The current width in pixels
|
|
126
|
+
*/
|
|
127
|
+
function getCellWidth(cell) {
|
|
128
|
+
return cell.offsetWidth;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Applies a width to a table cell element
|
|
132
|
+
* @param {HTMLTableCellElement} cell - The table cell element
|
|
133
|
+
* @param {number} width - The width to apply in pixels
|
|
134
|
+
*/
|
|
135
|
+
function setCellWidth(cell, width) {
|
|
136
|
+
cell.style.width = `${width}px`;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Calculates the delta (change) in horizontal position between two pointer events
|
|
140
|
+
* @param {number} currentX - Current clientX position
|
|
141
|
+
* @param {number} startX - Starting clientX position
|
|
142
|
+
* @returns {number} The horizontal delta
|
|
143
|
+
*/
|
|
144
|
+
function calculatePointerDelta(currentX, startX) {
|
|
145
|
+
return currentX - startX;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Creates a new resize state object
|
|
149
|
+
* @param {HTMLTableCellElement} cell - The cell being resized
|
|
150
|
+
* @param {PointerEvent} event - The initiating pointer event
|
|
151
|
+
* @returns {ResizeState} A new resize state object
|
|
152
|
+
*/
|
|
153
|
+
function createResizeState(cell, event) {
|
|
154
|
+
return {
|
|
155
|
+
resizingCell: cell,
|
|
156
|
+
pointerId: event.pointerId,
|
|
157
|
+
startX: event.clientX,
|
|
158
|
+
startWidth: getCellWidth(cell),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Validates that a resize state is active and matches the given pointer event
|
|
163
|
+
* @param {ResizeState | null} state - The current resize state
|
|
164
|
+
* @param {PointerEvent} event - The pointer event to validate against
|
|
165
|
+
* @returns {boolean} True if the state is valid for this event
|
|
166
|
+
*/
|
|
167
|
+
function isValidResizeState(state, event) {
|
|
168
|
+
return state !== null && state.pointerId === event.pointerId;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Updates the width of a cell during a resize operation
|
|
172
|
+
* @param {ResizeState} state - The current resize state
|
|
173
|
+
* @param {PointerEvent} event - The current pointer event
|
|
174
|
+
* @param {number} minWidth - Minimum width constraint
|
|
175
|
+
*/
|
|
176
|
+
function updateCellWidthFromResize(state, event, minWidth = TABLE_CONSTANTS.MIN_W) {
|
|
177
|
+
const delta = calculatePointerDelta(event.clientX, state.startX);
|
|
178
|
+
const newWidth = calculateNewWidth(state.startWidth, delta, minWidth);
|
|
179
|
+
setCellWidth(state.resizingCell, newWidth);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const nvTableCss = "nv-table table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:max-content;min-width:100%;background:var(--color-level-00-background)}nv-table table thead{background:var(--components-datagrid-header-background)}nv-table table tbody tr:hover td{background:var(--components-datagrid-body-background-hover)}nv-table table tbody tr[data-selected]{background:var(--components-datagrid-body-background-active)}nv-table table td{height:var(--spacing-16);padding:var(--datagrid-cell-body-padding-y) var(--datagrid-cell-body-padding-x) var(--spacing-2) var(--datagrid-cell-body-padding-x);font-size:var(--font-size-md);font-style:normal;font-weight:var(--font-weight-low-emphasis);line-height:var(--line-height-base);background:var(--components-datagrid-body-background-default);border-bottom:1px solid var(--components-datagrid-body-border)}nv-table table th{position:relative;text-align:left;padding:var(--datagrid-cell-header-padding-y) var(--datagrid-cell-header-padding-right) var(--datagrid-cell-header-padding-y) var(--datagrid-cell-header-padding-x);padding-right:calc(var(--datagrid-cell-header-padding-right) + 12px);color:var(--color-content-low-text);font-variant-numeric:lining-nums tabular-nums slashed-zero;font-size:var(--font-size-md);font-style:normal;font-weight:var(--font-weight-high-emphasis);line-height:var(--line-height-base);min-width:40px;border-bottom:1px solid var(--components-datagrid-header-border);background:var(--components-datagrid-header-background)}nv-table table th::after{content:\"\";position:absolute;top:0;right:0;width:12px;height:50%;transform:translateY(50%);cursor:col-resize;background:linear-gradient(90deg, transparent 0%, transparent calc(50% - 1px), var(--components-datagrid-header-border), calc(50% - 1px), var(--components-datagrid-header-border) calc(50% + 1px), transparent calc(50% + 1px), transparent 100%);opacity:0;transition:opacity 0.05s ease-in-out}nv-table table th[data-grow]{width:unset}nv-table table th:hover::after{opacity:1}nv-table table th[data-no-resize]::after{display:none}nv-table [data-sticky-left]{position:sticky;z-index:1;background:var(--color-level-00-background);left:0;top:0}nv-table [data-sticky-right]{position:sticky;z-index:1;background:var(--color-level-00-background);right:0;top:0}nv-table [data-sticky-top] th{position:sticky;z-index:1;background:var(--color-level-00-background);top:0}";
|
|
183
|
+
const NvTableStyle0 = nvTableCss;
|
|
184
|
+
|
|
185
|
+
const NvTable = class {
|
|
186
|
+
constructor(hostRef) {
|
|
187
|
+
index.registerInstance(this, hostRef);
|
|
188
|
+
this.resizeState = null;
|
|
189
|
+
}
|
|
190
|
+
/****************************************************************************/
|
|
191
|
+
//#region PROPERTIES
|
|
192
|
+
//#endregion PROPERTIES
|
|
193
|
+
/****************************************************************************/
|
|
194
|
+
//#region METHODS
|
|
195
|
+
//#endregion METHODS
|
|
196
|
+
/****************************************************************************/
|
|
197
|
+
//#region LISTENERS
|
|
198
|
+
onPointerDown(ev) {
|
|
199
|
+
const th = getClosestTableCell(ev.target);
|
|
200
|
+
if (!th)
|
|
201
|
+
return;
|
|
202
|
+
// Skip resize if the cell has data-no-resize attribute
|
|
203
|
+
if (th.hasAttribute('data-no-resize'))
|
|
204
|
+
return;
|
|
205
|
+
const offsetX = getPointerOffsetInCell(ev, th);
|
|
206
|
+
const handleWidth = getHandleWidthForCurrentPointer();
|
|
207
|
+
const cellWidth = getCellWidth(th);
|
|
208
|
+
// Start only if we're in the resize handle area
|
|
209
|
+
if (!isInResizeHandle(offsetX, cellWidth, handleWidth))
|
|
210
|
+
return;
|
|
211
|
+
this.resizeState = createResizeState(th, ev);
|
|
212
|
+
// Capture so move/up still fire even if the finger leaves the th
|
|
213
|
+
setPointerCapture(th, ev.pointerId);
|
|
214
|
+
// Prevent scrolling/selection during drag
|
|
215
|
+
setUserSelectPrevention(true);
|
|
216
|
+
}
|
|
217
|
+
onPointerMove(ev) {
|
|
218
|
+
if (!isValidResizeState(this.resizeState, ev))
|
|
219
|
+
return;
|
|
220
|
+
updateCellWidthFromResize(this.resizeState, ev, TABLE_CONSTANTS.MIN_W);
|
|
221
|
+
}
|
|
222
|
+
onPointerUp(ev) {
|
|
223
|
+
if (!isValidResizeState(this.resizeState, ev))
|
|
224
|
+
return;
|
|
225
|
+
releasePointerCapture(this.resizeState.resizingCell, this.resizeState.pointerId);
|
|
226
|
+
this.resizeState = null;
|
|
227
|
+
setUserSelectPrevention(false);
|
|
228
|
+
}
|
|
229
|
+
//#endregion LISTENERS
|
|
230
|
+
/****************************************************************************/
|
|
231
|
+
//#region LIFECYCLE
|
|
232
|
+
//#endregion LIFECYCLE
|
|
233
|
+
/****************************************************************************/
|
|
234
|
+
//#region EVENTS
|
|
235
|
+
//#endregion EVENTS
|
|
236
|
+
/****************************************************************************/
|
|
237
|
+
//#region RENDER
|
|
238
|
+
render() {
|
|
239
|
+
return (index.h(index.Host, { key: 'b63510e2da93a1b98eb3813ba7ac9bed97b81c1f' }, index.h("slot", { key: '14fb76c397db4da5dfba94bce599d1e4d8992a6b' })));
|
|
240
|
+
}
|
|
241
|
+
get host() { return index.getElement(this); }
|
|
242
|
+
};
|
|
243
|
+
NvTable.style = NvTableStyle0;
|
|
244
|
+
|
|
245
|
+
exports.nv_table = NvTable;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-7K7BV1CP.js');
|
|
4
|
+
var clsx297c1ffe = require('./clsx-297c1ffe-BtxeOLZW.js');
|
|
5
|
+
var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('react-dom');
|
|
8
|
+
|
|
9
|
+
const nvToggleCss = "nv-toggle{display:inline-flex;align-items:flex-start;gap:var(--form-gap-x);position:relative}nv-toggle:not([disabled],[readonly]) input,nv-toggle:not([disabled],[readonly]) label{cursor:pointer}nv-toggle.label-placement-before{flex-direction:row-reverse}nv-toggle[disabled]{opacity:0.5}nv-toggle label{align-self:stretch;color:var(--components-form-text-label-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:var(--font-weight-medium-emphasis);line-height:var(--form-label-line-height)}nv-toggle label.visually-hidden{position:absolute;padding:0;border:0;overflow:hidden;white-space:nowrap;width:1px;height:1px;margin:-1px;clip:rect(0, 0, 0, 0)}nv-toggle .input-container{position:relative;color:var(--components-form-shape-foreground-default)}nv-toggle .input-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--components-form-shape-foreground-disabled)}nv-toggle .input-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-toggle-width);height:var(--form-toggle-height);flex-direction:column;align-items:flex-start;border-radius:var(--form-toggle-radius);border-width:var(--form-toggle-border-width);border-style:solid;border-color:var(--components-toggle-border-default);background:var(--components-toggle-background-default)}nv-toggle .input-container input[type=checkbox]::after{content:\"\";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-toggle-shape-default);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:25%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:hover{border-color:var(--components-toggle-border-hover)}nv-toggle .input-container input[type=checkbox]:hover::after{background-color:var(--components-toggle-shape-hover)}nv-toggle .input-container input[type=checkbox]:focus{border-color:var(--components-toggle-border-default)}nv-toggle .input-container input[type=checkbox]:focus::after{background-color:var(--components-toggle-shape-default)}nv-toggle .input-container input[type=checkbox]:focus,nv-toggle .input-container input[type=checkbox]:focus-within{outline:none}nv-toggle .input-container input[type=checkbox]:focus-visible,nv-toggle .input-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-toggle .input-container input[type=checkbox]:checked{background:var(--components-toggle-background-default-checked);border-color:var(--components-toggle-border-default-checked)}nv-toggle .input-container input[type=checkbox]:checked::after{content:\"\";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-toggle-shape-default-checked);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:75%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:checked:focus{background:var(--components-toggle-background-default-checked);border-color:var(--components-toggle-border-default-checked)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]){box-shadow:unset;background:var(--components-toggle-background-disabled);border-color:var(--components-toggle-border-default)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]):checked{background:var(--components-toggle-background-disabled-checked);border-color:var(--components-toggle-border-disabled-checked)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]):checked::after{background-color:var(--components-toggle-shape-disabled-checked)}nv-toggle .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:var(--font-family-default), var(--font-family-fallback), sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:450;line-height:var(--form-description-line-height)}nv-toggle .text-container{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}";
|
|
10
|
+
const NvToggleStyle0 = nvToggleCss;
|
|
11
|
+
|
|
12
|
+
const NvToggle = class {
|
|
13
|
+
constructor(hostRef) {
|
|
14
|
+
index.registerInstance(this, hostRef);
|
|
15
|
+
this.checkedChanged = index.createEvent(this, "checkedChanged");
|
|
16
|
+
/****************************************************************************/
|
|
17
|
+
//#region PROPERTIES
|
|
18
|
+
/**
|
|
19
|
+
* Sets the ID for the radio button’s input element and the for attribute of
|
|
20
|
+
* the associated label. If no ID is provided, a random one will be
|
|
21
|
+
* automatically generated to ensure unique identification, facilitating
|
|
22
|
+
* proper label association and accessibility.
|
|
23
|
+
*/
|
|
24
|
+
this.inputId = v4A79185f4.v4();
|
|
25
|
+
/**
|
|
26
|
+
* Hides the label visually while still keeping it available for screen
|
|
27
|
+
* readers.
|
|
28
|
+
*/
|
|
29
|
+
this.hideLabel = false;
|
|
30
|
+
/** Indicates whether the toggle is checked or not. */
|
|
31
|
+
this.checked = false;
|
|
32
|
+
/** Disables the toggle, preventing user interaction. */
|
|
33
|
+
this.disabled = false;
|
|
34
|
+
/**
|
|
35
|
+
* Sets the toggle to read-only, preventing user changes but still allowing
|
|
36
|
+
* focus and selection of text.
|
|
37
|
+
*/
|
|
38
|
+
this.readonly = false;
|
|
39
|
+
}
|
|
40
|
+
//#endregion EVENTS
|
|
41
|
+
/****************************************************************************/
|
|
42
|
+
//#region WATCHERS
|
|
43
|
+
/**
|
|
44
|
+
* Watches for changes to the checked state and emits the new value.
|
|
45
|
+
* @param {boolean} checked - The new value of the checked state.
|
|
46
|
+
*/
|
|
47
|
+
onCheckedChanged(checked) {
|
|
48
|
+
this.checkedChanged.emit(checked);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Listens for the change event on the toggle input element and updates the checked state.
|
|
52
|
+
* the checked state of the host elements.
|
|
53
|
+
* @param {Event} event - The change event.
|
|
54
|
+
*/
|
|
55
|
+
handleChange(event) {
|
|
56
|
+
const target = event.target;
|
|
57
|
+
if (target.type === 'checkbox' && target.id === this.inputId) {
|
|
58
|
+
if (this.readonly || this.disabled) {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.checked = target.checked;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//#endregion WATCHERS
|
|
66
|
+
/****************************************************************************/
|
|
67
|
+
//#region RENDER
|
|
68
|
+
render() {
|
|
69
|
+
return (index.h(index.Host, { key: '65222149af4edb9f8fd2da7efe9a01e15dec4722', class: clsx297c1ffe.clsx(this.labelPlacement === 'before' && 'label-placement-before') }, index.h("div", { key: '7edd5587281b5610269f1ac09826ce379abfae24', class: "input-container" }, index.h("input", { key: '30d3db3cbdc263259a5ba1bf8e637225c4db3b4a', 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: 'a8a6d3c2774560b7d43cda75882d90cc564f4c54', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (index.h("label", { key: 'fe980a07df4901081fda42df758236da0b8a11d0', htmlFor: this.inputId, class: clsx297c1ffe.clsx(this.hideLabel && 'visually-hidden') }, index.h("slot", { key: '723cec5914c6c0bed7e14e61e2f64e83c8e8b7b8', name: "label" }, this.label))), (this.description ||
|
|
70
|
+
this.el.querySelector('[slot="description"]')) && (index.h("div", { key: 'f811065ed06f0816d8f0f1f65d4c659cbde3f683', class: "description" }, index.h("slot", { key: '541946e3f33a315bf667999c30a44fd93fc5f07f', name: "description" }, this.description))))));
|
|
71
|
+
}
|
|
72
|
+
static get formAssociated() { return true; }
|
|
73
|
+
get el() { return index.getElement(this); }
|
|
74
|
+
static get watchers() { return {
|
|
75
|
+
"checked": ["onCheckedChanged"]
|
|
76
|
+
}; }
|
|
77
|
+
};
|
|
78
|
+
NvToggle.style = NvToggleStyle0;
|
|
79
|
+
|
|
80
|
+
exports.nv_toggle = NvToggle;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-7K7BV1CP.js');
|
|
4
4
|
require('react');
|
|
5
|
+
require('react-dom');
|
|
5
6
|
|
|
6
7
|
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);font-size:var(--button-xs-font-size);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=xs] nv-icon>svg{width:var(--spacing-3);height:var(--spacing-3);stroke-width:1.2px}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);font-size:var(--button-sm-font-size);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=sm] nv-icon>svg{width:var(--spacing-4);height:var(--spacing-4);stroke-width:1.5px}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);font-size:var(--button-md-font-size);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=md] nv-icon>svg{width:var(--spacing-5);height:var(--spacing-5);stroke-width:1.6px}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);font-size:var(--button-lg-font-size);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[size=lg] nv-icon>svg{width:var(--spacing-6);height:var(--spacing-6);stroke-width:1.8px}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)}";
|
|
7
8
|
const NvTogglebuttonStyle0 = nvTogglebuttonCss;
|
|
@@ -47,7 +48,7 @@ const NvTogglebutton = class {
|
|
|
47
48
|
/****************************************************************************/
|
|
48
49
|
//#region RENDER
|
|
49
50
|
render() {
|
|
50
|
-
return (index.h(index.Host, { key: '
|
|
51
|
+
return (index.h(index.Host, { key: 'c4b698b1fb80f0dcca5d7a77bc20d22db1cbf538', role: "button", tabindex: "0", "aria-pressed": String(this.active), onClick: this.handleClick }, index.h("slot", { key: '605385f07f32b989685983cfd1a082525741fba4' })));
|
|
51
52
|
}
|
|
52
53
|
};
|
|
53
54
|
NvTogglebutton.style = NvTogglebuttonStyle0;
|
package/dist/cjs/{nv-togglebuttongroup.entry-BYO58vql.js → nv-togglebuttongroup.entry-BJPjdmHD.js}
RENAMED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-7K7BV1CP.js');
|
|
4
4
|
require('react');
|
|
5
|
+
require('react-dom');
|
|
5
6
|
|
|
6
7
|
const nvTogglebuttongroupCss = "nv-togglebuttongroup{display:flex;gap:var(--togglegroup-lg-gap);border-radius:var(--togglegroup-lg-radius);width:fit-content;padding:var(--togglegroup-lg-gap)}nv-togglebuttongroup[emphasis=high]{border:1px solid var(--components-togglegroup-high-border)}nv-togglebuttongroup[emphasis=low]{border:1px solid var(--components-togglegroup-low-border)}nv-togglebuttongroup[size=xs]{padding:calc(var(--togglegroup-xs-padding) - 1px);gap:var(--togglegroup-xs-gap);border-radius:var(--togglegroup-xs-radius)}nv-togglebuttongroup[size=sm]{padding:calc(var(--togglegroup-sm-padding) - 1px);gap:var(--togglegroup-sm-gap);border-radius:var(--togglegroup-sm-radius)}nv-togglebuttongroup[size=md]{padding:calc(var(--togglegroup-md-padding) - 1px);gap:var(--togglegroup-md-gap);border-radius:var(--togglegroup-md-radius)}nv-togglebuttongroup[size=lg]{padding:calc(var(--togglegroup-lg-padding) - 1px);gap:var(--togglegroup-lg-gap);border-radius:var(--togglegroup-lg-radius)}";
|
|
7
8
|
const NvTogglebuttongroupStyle0 = nvTogglebuttongroupCss;
|
|
@@ -155,7 +156,7 @@ const NvTogglebuttongroup = class {
|
|
|
155
156
|
/****************************************************************************/
|
|
156
157
|
//#region RENDER
|
|
157
158
|
render() {
|
|
158
|
-
return (index.h(index.Host, { key: '
|
|
159
|
+
return (index.h(index.Host, { key: 'ab91ff1817e3388508ed1da7a9ed57a79cf8c4bc' }, index.h("slot", { key: '4a3280db78c1f0cd120a0cb32d95eabaf69995a6' })));
|
|
159
160
|
}
|
|
160
161
|
get el() { return index.getElement(this); }
|
|
161
162
|
static get watchers() { return {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-7K7BV1CP.js');
|
|
4
4
|
require('react');
|
|
5
|
+
require('react-dom');
|
|
5
6
|
|
|
6
7
|
const nvTooltipCss = "nv-tooltip{display:inline-block;position:relative;user-select:none}nv-tooltip:has([fluid]:not([fluid=false])){display:block}nv-tooltip nv-popover>[data-scope=popover]{background:var(--components-tooltip-background);color:var(--components-tooltip-text);font-weight:var(--font-weight-medium-emphasis);padding:var(--tooltip-padding-y) var(--tooltip-padding-x);font-size:var(--tooltip-font-size);border-radius:var(--tooltip-radius);border:none;box-shadow:0px var(--shadow-y-axis-lg-1) var(--shadow-blur-lg-1) var(--shadow-spread-lg-1) var(--shadow-color-opacity-1), 0px var(--shadow-y-axis-lg-2) var(--shadow-blur-lg-2) var(--shadow-spread-lg-2) var(--shadow-color-opacity-2)}nv-tooltip nv-popover>[data-scope=popover] [data-scope=arrow]{background:var(--components-tooltip-background);box-shadow:none;border:none}";
|
|
7
8
|
const NvTooltipStyle0 = nvTooltipCss;
|
|
@@ -45,7 +46,7 @@ const NvTooltip = class {
|
|
|
45
46
|
/****************************************************************************/
|
|
46
47
|
//#region RENDER
|
|
47
48
|
render() {
|
|
48
|
-
return (index.h(index.Host, { key: '
|
|
49
|
+
return (index.h(index.Host, { key: 'c2fdcd47be909554e31a3a7d77cd94dcb07c0d6e' }, index.h("slot", { key: '2305f6b7175d0ba84819351f60f2a4d76d117df9' }), index.h("nv-popover", { key: 'e388730b5858671d08981c6bbf72588a5084edbf', triggerMode: "hover", hasArrow: true, placement: this.placement, strategy: this.strategy, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, index.h("p", { key: '73f548a1c822f7c6d5a97bb4ef8da0d335cf049e', slot: "content" }, this.message), index.h("slot", { key: 'abb7a2dfa6a327122732802a867c5d4057fd1616', name: "content" }))));
|
|
49
50
|
}
|
|
50
51
|
get el() { return index.getElement(this); }
|
|
51
52
|
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { flexRender, getCoreRowModel, useReactTable, } from '@tanstack/react-table';
|
|
3
|
+
import { NvTable } from '../generated/components';
|
|
4
|
+
const NvDatatable = ({ columns, rows, ...htmlProps }) => {
|
|
5
|
+
const tableColumns = useMemo(() => columns
|
|
6
|
+
.filter((col) => !col.hidden)
|
|
7
|
+
.map((col) => ({
|
|
8
|
+
accessorKey: col.field,
|
|
9
|
+
header: col.headerName || String(col.field),
|
|
10
|
+
size: col.width,
|
|
11
|
+
enableResizing: col.resizable ?? true,
|
|
12
|
+
cell: (context) => {
|
|
13
|
+
const value = context.getValue();
|
|
14
|
+
const row = context.row.original;
|
|
15
|
+
const rowIndex = context.row.index;
|
|
16
|
+
if (col.renderCell) {
|
|
17
|
+
return col.renderCell({
|
|
18
|
+
value,
|
|
19
|
+
row,
|
|
20
|
+
field: col.field,
|
|
21
|
+
rowIndex,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
},
|
|
26
|
+
})), [columns]);
|
|
27
|
+
const table = useReactTable({
|
|
28
|
+
data: rows,
|
|
29
|
+
columns: tableColumns,
|
|
30
|
+
getCoreRowModel: getCoreRowModel(),
|
|
31
|
+
});
|
|
32
|
+
return (React.createElement(NvTable, { ...htmlProps },
|
|
33
|
+
React.createElement("table", null,
|
|
34
|
+
React.createElement("thead", null, table.getHeaderGroups().map((headerGroup) => (React.createElement("tr", { key: headerGroup.id }, headerGroup.headers.map((header) => (React.createElement("th", { key: header.id, "data-testid": `datatable-header-${header.id}`, style: {
|
|
35
|
+
width: header.column.columnDef.size + 'px',
|
|
36
|
+
}, "data-no-resize": header.column.columnDef.enableResizing ? null : true }, header.isPlaceholder
|
|
37
|
+
? null
|
|
38
|
+
: flexRender(header.column.columnDef.header, header.getContext())))))))),
|
|
39
|
+
React.createElement("tbody", null, table.getRowModel().rows.map((row) => (React.createElement("tr", { key: row.id, "data-testid": `datatable-row-${row.id}` }, row.getVisibleCells().map((cell) => (React.createElement("td", { key: cell.id, "data-testid": `datatable-cell-${cell.id}`, style: {
|
|
40
|
+
padding: '8px',
|
|
41
|
+
borderBottom: '1px solid #eee',
|
|
42
|
+
} }, flexRender(cell.column.columnDef.cell, cell.getContext())))))))))));
|
|
43
|
+
};
|
|
44
|
+
NvDatatable.displayName = 'NvDatatable';
|
|
45
|
+
export { NvDatatable };
|
|
@@ -36,11 +36,11 @@ import { NvLoader as NvLoaderElement, defineCustomElement as defineNvLoader } fr
|
|
|
36
36
|
import { NvMenu as NvMenuElement, defineCustomElement as defineNvMenu } from "@nova-design-system/nova-webcomponents/dist/components/nv-menu.js";
|
|
37
37
|
import { NvMenuitem as NvMenuitemElement, defineCustomElement as defineNvMenuitem } from "@nova-design-system/nova-webcomponents/dist/components/nv-menuitem.js";
|
|
38
38
|
import { NvNotification as NvNotificationElement, defineCustomElement as defineNvNotification } from "@nova-design-system/nova-webcomponents/dist/components/nv-notification.js";
|
|
39
|
+
import { NvNotificationcontainer as NvNotificationcontainerElement, defineCustomElement as defineNvNotificationcontainer } from "@nova-design-system/nova-webcomponents/dist/components/nv-notificationcontainer.js";
|
|
39
40
|
import { NvPopover as NvPopoverElement, defineCustomElement as defineNvPopover } from "@nova-design-system/nova-webcomponents/dist/components/nv-popover.js";
|
|
40
41
|
import { NvRow as NvRowElement, defineCustomElement as defineNvRow } from "@nova-design-system/nova-webcomponents/dist/components/nv-row.js";
|
|
41
42
|
import { NvStack as NvStackElement, defineCustomElement as defineNvStack } from "@nova-design-system/nova-webcomponents/dist/components/nv-stack.js";
|
|
42
43
|
import { NvTable as NvTableElement, defineCustomElement as defineNvTable } from "@nova-design-system/nova-webcomponents/dist/components/nv-table.js";
|
|
43
|
-
import { NvTablecolumn as NvTablecolumnElement, defineCustomElement as defineNvTablecolumn } from "@nova-design-system/nova-webcomponents/dist/components/nv-tablecolumn.js";
|
|
44
44
|
import { NvToggle as NvToggleElement, defineCustomElement as defineNvToggle } from "@nova-design-system/nova-webcomponents/dist/components/nv-toggle.js";
|
|
45
45
|
import { NvTogglebutton as NvTogglebuttonElement, defineCustomElement as defineNvTogglebutton } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebutton.js";
|
|
46
46
|
import { NvTogglebuttongroup as NvTogglebuttongroupElement, defineCustomElement as defineNvTogglebuttongroup } from "@nova-design-system/nova-webcomponents/dist/components/nv-togglebuttongroup.js";
|
|
@@ -51,7 +51,7 @@ export const NvAccordion = createComponent({
|
|
|
51
51
|
tagName: 'nv-accordion',
|
|
52
52
|
elementClass: NvAccordionElement,
|
|
53
53
|
react: React,
|
|
54
|
-
events: {
|
|
54
|
+
events: { onOpenIndexesChanged: 'openIndexesChanged' },
|
|
55
55
|
defineCustomElement: defineNvAccordion
|
|
56
56
|
});
|
|
57
57
|
export const NvAccordionItem = createComponent({
|
|
@@ -334,6 +334,13 @@ export const NvNotification = createComponent({
|
|
|
334
334
|
events: { onHiddenChanged: 'hiddenChanged' },
|
|
335
335
|
defineCustomElement: defineNvNotification
|
|
336
336
|
});
|
|
337
|
+
export const NvNotificationcontainer = createComponent({
|
|
338
|
+
tagName: 'nv-notificationcontainer',
|
|
339
|
+
elementClass: NvNotificationcontainerElement,
|
|
340
|
+
react: React,
|
|
341
|
+
events: {},
|
|
342
|
+
defineCustomElement: defineNvNotificationcontainer
|
|
343
|
+
});
|
|
337
344
|
export const NvPopover = createComponent({
|
|
338
345
|
tagName: 'nv-popover',
|
|
339
346
|
elementClass: NvPopoverElement,
|
|
@@ -359,15 +366,8 @@ export const NvTable = createComponent({
|
|
|
359
366
|
tagName: 'nv-table',
|
|
360
367
|
elementClass: NvTableElement,
|
|
361
368
|
react: React,
|
|
362
|
-
events: { onAction: 'action' },
|
|
363
|
-
defineCustomElement: defineNvTable
|
|
364
|
-
});
|
|
365
|
-
export const NvTablecolumn = createComponent({
|
|
366
|
-
tagName: 'nv-tablecolumn',
|
|
367
|
-
elementClass: NvTablecolumnElement,
|
|
368
|
-
react: React,
|
|
369
369
|
events: {},
|
|
370
|
-
defineCustomElement:
|
|
370
|
+
defineCustomElement: defineNvTable
|
|
371
371
|
});
|
|
372
372
|
export const NvToggle = createComponent({
|
|
373
373
|
tagName: 'nv-toggle',
|
|
@@ -658,11 +658,18 @@ export const NvNotification = createComponent({
|
|
|
658
658
|
message: 'message',
|
|
659
659
|
icon: 'icon',
|
|
660
660
|
dismissible: 'dismissible',
|
|
661
|
-
hidden: 'hidden'
|
|
661
|
+
hidden: 'hidden',
|
|
662
|
+
initiallyHidden: 'initially-hidden'
|
|
662
663
|
},
|
|
663
664
|
hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
|
|
664
665
|
serializeShadowRoot
|
|
665
666
|
});
|
|
667
|
+
export const NvNotificationcontainer = createComponent({
|
|
668
|
+
tagName: 'nv-notificationcontainer',
|
|
669
|
+
properties: { position: 'position' },
|
|
670
|
+
hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
|
|
671
|
+
serializeShadowRoot
|
|
672
|
+
});
|
|
666
673
|
export const NvPopover = createComponent({
|
|
667
674
|
tagName: 'nv-popover',
|
|
668
675
|
properties: {
|
|
@@ -701,22 +708,7 @@ export const NvStack = createComponent({
|
|
|
701
708
|
});
|
|
702
709
|
export const NvTable = createComponent({
|
|
703
710
|
tagName: 'nv-table',
|
|
704
|
-
properties: {
|
|
705
|
-
dataJson: 'data-json',
|
|
706
|
-
columnsConfigJson: 'columns-config-json',
|
|
707
|
-
fallbackValue: 'fallback-value',
|
|
708
|
-
noDataMessage: 'no-data-message',
|
|
709
|
-
noColumnsNoDataMessage: 'no-columns-no-data-message'
|
|
710
|
-
},
|
|
711
|
-
hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
|
|
712
|
-
serializeShadowRoot
|
|
713
|
-
});
|
|
714
|
-
export const NvTablecolumn = createComponent({
|
|
715
|
-
tagName: 'nv-tablecolumn',
|
|
716
|
-
properties: {
|
|
717
|
-
name: 'name',
|
|
718
|
-
header: 'header'
|
|
719
|
-
},
|
|
711
|
+
properties: {},
|
|
720
712
|
hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
|
|
721
713
|
serializeShadowRoot
|
|
722
714
|
});
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export * from './generated/components';
|
|
2
2
|
export * from '@nova-design-system/nova-webcomponents/constants';
|
|
3
3
|
export { defineCustomElements } from '@nova-design-system/nova-webcomponents/loader';
|
|
4
|
+
export { useNotifications, NotificationProvider, } from './providers/NotificationProvider';
|
|
5
|
+
export * from './components/NvDatatable';
|