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 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 : clickable ? showTooltip : void 0,
446
- onOpenChange: onOpenChange !== void 0 ? onOpenChange : clickable ? setShowTooltip : void 0,
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: clickable ? () => setShowTooltip((prev) => !prev) : void 0,
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: clickable ? showTooltip : void 0,
2289
- onOpenChange: clickable ? setShowTooltip : void 0,
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: clickable ? () => setShowTooltip((prev) => !prev) : void 0,
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
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nntc-ui",
3
- "version": "0.0.37",
3
+ "version": "0.0.39",
4
4
  "author": "NNTC",
5
5
  "description": "React UI-kit for NNTC",
6
6
  "type": "module",