nntc-ui 0.0.37 → 0.0.39
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/index.css +9 -0
- package/index.d.ts +10 -0
- package/index.js +47 -10
- package/package.json +1 -1
package/index.css
CHANGED
|
@@ -1775,7 +1775,9 @@
|
|
|
1775
1775
|
border-color: var(--theme-error);
|
|
1776
1776
|
}
|
|
1777
1777
|
.virtualTable_viewSpan {
|
|
1778
|
+
width: calc(100% - 20px);
|
|
1778
1779
|
margin: 4px 10px;
|
|
1780
|
+
overflow-wrap: break-word;
|
|
1779
1781
|
}
|
|
1780
1782
|
.virtualTable_showInModal {
|
|
1781
1783
|
position: relative;
|
|
@@ -1798,6 +1800,13 @@
|
|
|
1798
1800
|
background: var(--theme-table-even-row);
|
|
1799
1801
|
background: linear-gradient(rgba(0, 0, 0, 0) 0%, var(--theme-table-even-row) 65%);
|
|
1800
1802
|
}
|
|
1803
|
+
.virtualTable_clickable {
|
|
1804
|
+
text-decoration: underline;
|
|
1805
|
+
text-decoration-thickness: 1px;
|
|
1806
|
+
text-decoration-style: dashed;
|
|
1807
|
+
text-underline-offset: 2px;
|
|
1808
|
+
cursor: pointer;
|
|
1809
|
+
}
|
|
1801
1810
|
.virtualTable_modalContent {
|
|
1802
1811
|
width: 500px;
|
|
1803
1812
|
}
|
package/index.d.ts
CHANGED
|
@@ -241,6 +241,9 @@ declare function Tabs<T>(props: UiProps<Props$8<T>>): react_jsx_runtime.JSX.Elem
|
|
|
241
241
|
|
|
242
242
|
interface TableCell {
|
|
243
243
|
value?: string | number;
|
|
244
|
+
payload?: {
|
|
245
|
+
[key: string]: string;
|
|
246
|
+
};
|
|
244
247
|
error?: string;
|
|
245
248
|
}
|
|
246
249
|
|
|
@@ -263,6 +266,8 @@ interface FilterBy {
|
|
|
263
266
|
|
|
264
267
|
type ColumnAlign = 'Left' | 'Right' | 'Center';
|
|
265
268
|
|
|
269
|
+
type SortType = 'alphanumeric' | 'locale';
|
|
270
|
+
|
|
266
271
|
type VerticalAlign = 'FlexStart' | 'Center' | 'FlexEnd';
|
|
267
272
|
|
|
268
273
|
interface TableColumn {
|
|
@@ -272,6 +277,7 @@ interface TableColumn {
|
|
|
272
277
|
columns?: TableColumn[];
|
|
273
278
|
editable?: boolean;
|
|
274
279
|
sortable?: boolean;
|
|
280
|
+
sortType?: SortType;
|
|
275
281
|
sortAnotherName?: string;
|
|
276
282
|
filtrationByNumber?: boolean;
|
|
277
283
|
filtrationByDate?: boolean;
|
|
@@ -281,6 +287,9 @@ interface TableColumn {
|
|
|
281
287
|
rowsAlign?: ColumnAlign;
|
|
282
288
|
valueFormat?: (value: string) => string;
|
|
283
289
|
showInModal?: boolean;
|
|
290
|
+
onClick?: (payload: {
|
|
291
|
+
[key: string]: string;
|
|
292
|
+
}) => void;
|
|
284
293
|
verticalAlign?: VerticalAlign;
|
|
285
294
|
toFixed?: number;
|
|
286
295
|
}
|
|
@@ -315,6 +324,7 @@ declare function VirtualTable(props: UiProps<Props$7>): react_jsx_runtime.JSX.El
|
|
|
315
324
|
interface SortBy {
|
|
316
325
|
columnName: string;
|
|
317
326
|
direction: 'asc' | 'desc';
|
|
327
|
+
sortType?: SortType;
|
|
318
328
|
}
|
|
319
329
|
|
|
320
330
|
interface Item {
|
package/index.js
CHANGED
|
@@ -419,7 +419,7 @@ import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
|
419
419
|
function Popover(props) {
|
|
420
420
|
const {
|
|
421
421
|
description,
|
|
422
|
-
clickable,
|
|
422
|
+
clickable: clickable2,
|
|
423
423
|
initialOpen,
|
|
424
424
|
placement,
|
|
425
425
|
wrapTrigger,
|
|
@@ -442,8 +442,8 @@ function Popover(props) {
|
|
|
442
442
|
{
|
|
443
443
|
placement,
|
|
444
444
|
initialOpen,
|
|
445
|
-
open: open !== void 0 ? open :
|
|
446
|
-
onOpenChange: onOpenChange !== void 0 ? onOpenChange :
|
|
445
|
+
open: open !== void 0 ? open : clickable2 ? showTooltip : void 0,
|
|
446
|
+
onOpenChange: onOpenChange !== void 0 ? onOpenChange : clickable2 ? setShowTooltip : void 0,
|
|
447
447
|
containerOffset,
|
|
448
448
|
root: root22,
|
|
449
449
|
children: [
|
|
@@ -451,7 +451,7 @@ function Popover(props) {
|
|
|
451
451
|
PopoverTrigger,
|
|
452
452
|
{
|
|
453
453
|
wrapTrigger,
|
|
454
|
-
onClick:
|
|
454
|
+
onClick: clickable2 ? () => setShowTooltip((prev) => !prev) : void 0,
|
|
455
455
|
className: classnames4(wrapTrigger ? trigger : void 0, classes?.trigger),
|
|
456
456
|
children: children2
|
|
457
457
|
}
|
|
@@ -2262,7 +2262,7 @@ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
|
2262
2262
|
function Tooltip(props) {
|
|
2263
2263
|
const {
|
|
2264
2264
|
label: label7,
|
|
2265
|
-
clickable,
|
|
2265
|
+
clickable: clickable2,
|
|
2266
2266
|
initialOpen,
|
|
2267
2267
|
placement,
|
|
2268
2268
|
withoutArrow,
|
|
@@ -2285,8 +2285,8 @@ function Tooltip(props) {
|
|
|
2285
2285
|
{
|
|
2286
2286
|
placement,
|
|
2287
2287
|
initialOpen,
|
|
2288
|
-
open:
|
|
2289
|
-
onOpenChange:
|
|
2288
|
+
open: clickable2 ? showTooltip : void 0,
|
|
2289
|
+
onOpenChange: clickable2 ? setShowTooltip : void 0,
|
|
2290
2290
|
withoutArrow,
|
|
2291
2291
|
arrowRef,
|
|
2292
2292
|
root: root22,
|
|
@@ -2295,7 +2295,7 @@ function Tooltip(props) {
|
|
|
2295
2295
|
TooltipTrigger,
|
|
2296
2296
|
{
|
|
2297
2297
|
wrapTrigger,
|
|
2298
|
-
onClick:
|
|
2298
|
+
onClick: clickable2 ? () => setShowTooltip((prev) => !prev) : void 0,
|
|
2299
2299
|
className: wrapTrigger ? classnames16(trigger2, classes?.trigger) : void 0,
|
|
2300
2300
|
children: children2
|
|
2301
2301
|
}
|
|
@@ -2567,6 +2567,7 @@ __export(virtualTable_exports, {
|
|
|
2567
2567
|
bordersHorizontal: () => bordersHorizontal,
|
|
2568
2568
|
bordersVertical: () => bordersVertical,
|
|
2569
2569
|
bottomBorder: () => bottomBorder,
|
|
2570
|
+
clickable: () => clickable,
|
|
2570
2571
|
default: () => virtualTable_default,
|
|
2571
2572
|
error: () => error2,
|
|
2572
2573
|
evenRow: () => evenRow,
|
|
@@ -2627,6 +2628,7 @@ var viewCell = "virtualTable_viewCell";
|
|
|
2627
2628
|
var error2 = "virtualTable_error";
|
|
2628
2629
|
var viewSpan = "virtualTable_viewSpan";
|
|
2629
2630
|
var showInModal = "virtualTable_showInModal";
|
|
2631
|
+
var clickable = "virtualTable_clickable";
|
|
2630
2632
|
var modalContent = "virtualTable_modalContent";
|
|
2631
2633
|
var verticalAlignFlexStart = "virtualTable_verticalAlignFlexStart";
|
|
2632
2634
|
var verticalAlignCenter = "virtualTable_verticalAlignCenter";
|
|
@@ -2663,6 +2665,7 @@ var virtualTable_default = {
|
|
|
2663
2665
|
error: error2,
|
|
2664
2666
|
viewSpan,
|
|
2665
2667
|
showInModal,
|
|
2668
|
+
clickable,
|
|
2666
2669
|
modalContent,
|
|
2667
2670
|
verticalAlignFlexStart,
|
|
2668
2671
|
verticalAlignCenter,
|
|
@@ -2706,6 +2709,7 @@ var DefaultColumn = {
|
|
|
2706
2709
|
viewCell,
|
|
2707
2710
|
!!meta?.rowsAlign ? virtualTable_exports[`align${meta?.rowsAlign}`] : void 0,
|
|
2708
2711
|
meta?.showInModal ? showInModal : void 0,
|
|
2712
|
+
meta?.onClick && original[id]?.payload ? clickable : void 0,
|
|
2709
2713
|
original[id]?.error ? error2 : void 0,
|
|
2710
2714
|
!!meta?.verticalAlign ? virtualTable_exports[`verticalAlign${meta?.verticalAlign}`] : void 0
|
|
2711
2715
|
),
|
|
@@ -2713,7 +2717,7 @@ var DefaultColumn = {
|
|
|
2713
2717
|
setIsEdit(true);
|
|
2714
2718
|
} : meta?.showInModal ? () => {
|
|
2715
2719
|
setShowModal(true);
|
|
2716
|
-
} : void 0,
|
|
2720
|
+
} : meta?.onClick && original[id]?.payload ? () => meta?.onClick?.(original[id]?.payload ?? {}) : void 0,
|
|
2717
2721
|
children: [
|
|
2718
2722
|
/* @__PURE__ */ jsx30("span", { className: viewSpan, children: shownValue }),
|
|
2719
2723
|
showModal && /* @__PURE__ */ jsx30(Modal, { open: showModal, onClose: () => closeModalRef.current?.(), children: /* @__PURE__ */ jsx30(Surface, { type: "panel", children: /* @__PURE__ */ jsx30("div", { className: modalContent, children: shownValue }) }) })
|
|
@@ -2897,6 +2901,7 @@ function HeaderDropdown(props) {
|
|
|
2897
2901
|
const {
|
|
2898
2902
|
headerMeta: {
|
|
2899
2903
|
sortable = false,
|
|
2904
|
+
sortType,
|
|
2900
2905
|
sortAnotherName,
|
|
2901
2906
|
filtrationByNumber = false,
|
|
2902
2907
|
filtrationByDate = false,
|
|
@@ -2951,7 +2956,7 @@ function HeaderDropdown(props) {
|
|
|
2951
2956
|
if (prev.some((p) => p.columnName === headerResultName)) {
|
|
2952
2957
|
return prev.map((p) => p.columnName === headerResultName ? { ...p, direction } : { ...p });
|
|
2953
2958
|
} else {
|
|
2954
|
-
return prev.concat([{ columnName: headerResultName, direction }]);
|
|
2959
|
+
return prev.concat([{ columnName: headerResultName, direction, sortType }]);
|
|
2955
2960
|
}
|
|
2956
2961
|
}
|
|
2957
2962
|
});
|
|
@@ -3080,6 +3085,7 @@ var createMeta = (column) => {
|
|
|
3080
3085
|
return {
|
|
3081
3086
|
editable: column.editable,
|
|
3082
3087
|
sortable: column.sortable,
|
|
3088
|
+
sortType: column.sortType,
|
|
3083
3089
|
sortAnotherName: column.sortAnotherName,
|
|
3084
3090
|
filtrationByNumber: column.filtrationByNumber,
|
|
3085
3091
|
filtrationByDate: column.filtrationByDate,
|
|
@@ -3089,6 +3095,7 @@ var createMeta = (column) => {
|
|
|
3089
3095
|
rowsAlign: column.rowsAlign,
|
|
3090
3096
|
valueFormat: column.valueFormat,
|
|
3091
3097
|
showInModal: column.showInModal,
|
|
3098
|
+
onClick: column.onClick,
|
|
3092
3099
|
label: column.label,
|
|
3093
3100
|
verticalAlign: column.verticalAlign,
|
|
3094
3101
|
toFixed: column.toFixed
|
|
@@ -3158,6 +3165,32 @@ var recursiveFilter = (rows, filterBy) => {
|
|
|
3158
3165
|
return rows;
|
|
3159
3166
|
};
|
|
3160
3167
|
|
|
3168
|
+
// src/components/view/VirtualTable/utils/alphanumericCompare.ts
|
|
3169
|
+
var alphanumericCompare = (a, b) => {
|
|
3170
|
+
const aParts = a.match(/(\d+|\D+)/g) || [];
|
|
3171
|
+
const bParts = b.match(/(\d+|\D+)/g) || [];
|
|
3172
|
+
const maxLength = Math.max(aParts.length, bParts.length);
|
|
3173
|
+
for (let i = 0; i < maxLength; i++) {
|
|
3174
|
+
const aPart = aParts[i] || "";
|
|
3175
|
+
const bPart = bParts[i] || "";
|
|
3176
|
+
const aIsNumber = /^\d+$/.test(aPart);
|
|
3177
|
+
const bIsNumber = /^\d+$/.test(bPart);
|
|
3178
|
+
if (aIsNumber && bIsNumber) {
|
|
3179
|
+
const numA = parseInt(aPart, 10);
|
|
3180
|
+
const numB = parseInt(bPart, 10);
|
|
3181
|
+
if (numA !== numB) {
|
|
3182
|
+
return numA - numB;
|
|
3183
|
+
}
|
|
3184
|
+
} else {
|
|
3185
|
+
const comparison = aPart.localeCompare(bPart);
|
|
3186
|
+
if (comparison !== 0) {
|
|
3187
|
+
return comparison;
|
|
3188
|
+
}
|
|
3189
|
+
}
|
|
3190
|
+
}
|
|
3191
|
+
return 0;
|
|
3192
|
+
};
|
|
3193
|
+
|
|
3161
3194
|
// src/components/view/VirtualTable/utils/recursiveSort.ts
|
|
3162
3195
|
var recursiveSort = (items2, sortBy) => {
|
|
3163
3196
|
if (sortBy.length) {
|
|
@@ -3165,6 +3198,10 @@ var recursiveSort = (items2, sortBy) => {
|
|
|
3165
3198
|
const sorted = items2.sort((a, b) => {
|
|
3166
3199
|
const aValue = a[sortByItem.columnName]?.value?.toString() ?? "";
|
|
3167
3200
|
const bValue = b[sortByItem.columnName]?.value?.toString() ?? "";
|
|
3201
|
+
if (sortByItem.sortType === "alphanumeric") {
|
|
3202
|
+
const compare2 = alphanumericCompare(aValue, bValue);
|
|
3203
|
+
return sortByItem.direction === "asc" ? compare2 : -compare2;
|
|
3204
|
+
}
|
|
3168
3205
|
const compare = aValue.localeCompare(bValue);
|
|
3169
3206
|
return sortByItem.direction === "asc" ? compare : -compare;
|
|
3170
3207
|
});
|