@nccirtu/tablefy 0.6.0 → 0.6.2
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/README.md +7 -2
- package/cli/templates/tablefy/data-table-empty.tsx +1 -1
- package/cli/templates/tablefy/data-table-header.tsx +4 -2
- package/cli/templates/tablefy/data-table-pagination.tsx +4 -2
- package/cli/templates/tablefy/data-table.tsx +1 -2
- package/dist/columns/index.esm.js +1 -5
- package/dist/columns/index.esm.js.map +1 -1
- package/dist/columns/index.js +28 -32
- package/dist/columns/index.js.map +1 -1
- package/dist/columns/tablefy/data-table-empty.d.ts +1 -1
- package/dist/columns/tablefy/data-table-header.d.ts +1 -1
- package/dist/columns/tablefy/data-table-pagination.d.ts +1 -1
- package/dist/columns/tablefy/data-table.d.ts +1 -1
- package/dist/index.esm.js +4 -6
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +37 -39
- package/dist/index.js.map +1 -1
- package/dist/tablefy/data-table-empty.d.ts +1 -1
- package/dist/tablefy/data-table-header.d.ts +1 -1
- package/dist/tablefy/data-table-pagination.d.ts +1 -1
- package/dist/tablefy/data-table.d.ts +1 -1
- package/package.json +1 -1
package/dist/columns/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var
|
|
4
|
+
var utils = require('@/lib/utils');
|
|
5
5
|
var badge = require('@/components/ui/badge');
|
|
6
6
|
var button = require('@/components/ui/button');
|
|
7
7
|
var lucideReact = require('lucide-react');
|
|
@@ -17,10 +17,6 @@ const AvatarList = ({ items, maxVisible = 5, size = 32, ...props }) => {
|
|
|
17
17
|
return (jsxRuntime.jsxs("div", { className: "avatar-list", style: { "--avatar-size": `${sizeValue}px` }, ...props, children: [items.slice(0, maxVisible).map((item) => (jsxRuntime.jsx("div", { className: "avatar-item", children: item.src ? (jsxRuntime.jsx("img", { src: item.src, alt: item.alt || "Avatar", style: { width: `${sizeValue}px`, height: `${sizeValue}px` } })) : (jsxRuntime.jsx("div", { className: "avatar-initials", style: { width: `${sizeValue}px`, height: `${sizeValue}px` }, children: item.initials || "?" })) }, item.id))), items.length > maxVisible && (jsxRuntime.jsxs("div", { className: "avatar-count", style: { width: `${sizeValue}px`, height: `${sizeValue}px` }, children: ["+", items.length - maxVisible] }))] }));
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
function cn(...inputs) {
|
|
21
|
-
return clsx(inputs.filter(Boolean));
|
|
22
|
-
}
|
|
23
|
-
|
|
24
20
|
class BaseColumn {
|
|
25
21
|
config;
|
|
26
22
|
constructor(accessor) {
|
|
@@ -164,7 +160,7 @@ class AvatarGroupColumn extends BaseColumn {
|
|
|
164
160
|
const { accessor, label, maxVisible, size, overlap, showTooltip, nameField, srcField, fallbackField, showNames, maxNames, } = config;
|
|
165
161
|
return {
|
|
166
162
|
accessorKey: accessor,
|
|
167
|
-
header: () => (jsxRuntime.jsx("span", { className: cn("text-muted-foreground font-medium", this.getAlignmentClass(), this.config.headerClassName), children: label || String(accessor) })),
|
|
163
|
+
header: () => (jsxRuntime.jsx("span", { className: utils.cn("text-muted-foreground font-medium", this.getAlignmentClass(), this.config.headerClassName), children: label || String(accessor) })),
|
|
168
164
|
cell: ({ getValue, row }) => {
|
|
169
165
|
const rawValue = getValue();
|
|
170
166
|
// Items aus den Daten extrahieren
|
|
@@ -197,7 +193,7 @@ class AvatarGroupColumn extends BaseColumn {
|
|
|
197
193
|
}
|
|
198
194
|
// Konvertiere zu Datenstruktur für AvatarList
|
|
199
195
|
const contacts = this.toContactItems(items);
|
|
200
|
-
return (jsxRuntime.jsx("div", { className: cn("flex items-center", this.config.cellClassName), children: jsxRuntime.jsx(AvatarList, { items: contacts.map((contact) => ({
|
|
196
|
+
return (jsxRuntime.jsx("div", { className: utils.cn("flex items-center", this.config.cellClassName), children: jsxRuntime.jsx(AvatarList, { items: contacts.map((contact) => ({
|
|
201
197
|
id: contact.id,
|
|
202
198
|
src: contact.src,
|
|
203
199
|
alt: contact.alt,
|
|
@@ -245,9 +241,9 @@ class BadgeColumn extends BaseColumn {
|
|
|
245
241
|
header: ({ column }) => {
|
|
246
242
|
const displayLabel = label || String(accessor);
|
|
247
243
|
if (!sortable) {
|
|
248
|
-
return (jsxRuntime.jsx("span", { className: cn("text-muted-foreground font-medium", this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
244
|
+
return (jsxRuntime.jsx("span", { className: utils.cn("text-muted-foreground font-medium", this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
249
245
|
}
|
|
250
|
-
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === "asc"), className: cn("text-muted-foreground font-medium", this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
246
|
+
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === "asc"), className: utils.cn("text-muted-foreground font-medium", this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
251
247
|
},
|
|
252
248
|
cell: ({ getValue }) => {
|
|
253
249
|
const value = String(getValue());
|
|
@@ -260,7 +256,7 @@ class BadgeColumn extends BaseColumn {
|
|
|
260
256
|
variantConfig.variant === "info" ||
|
|
261
257
|
variantConfig.variant === "muted"
|
|
262
258
|
? "default"
|
|
263
|
-
: variantConfig.variant || "default", className: cn(variantConfig.className, this.config.cellClassName), children: [variantConfig.icon, variantConfig.label || value] }));
|
|
259
|
+
: variantConfig.variant || "default", className: utils.cn(variantConfig.className, this.config.cellClassName), children: [variantConfig.icon, variantConfig.label || value] }));
|
|
264
260
|
},
|
|
265
261
|
};
|
|
266
262
|
}
|
|
@@ -372,9 +368,9 @@ class DateColumn extends BaseColumn {
|
|
|
372
368
|
header: ({ column }) => {
|
|
373
369
|
const displayLabel = label || String(accessor);
|
|
374
370
|
if (!sortable) {
|
|
375
|
-
return (jsxRuntime.jsx("span", { className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
371
|
+
return (jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
376
372
|
}
|
|
377
|
-
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
373
|
+
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
378
374
|
},
|
|
379
375
|
cell: ({ getValue }) => {
|
|
380
376
|
const value = getValue();
|
|
@@ -386,7 +382,7 @@ class DateColumn extends BaseColumn {
|
|
|
386
382
|
return jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Ung\u00FCltiges Datum" });
|
|
387
383
|
}
|
|
388
384
|
const formatted = this.formatDate(date, format || 'short', locale || 'de-DE');
|
|
389
|
-
return (jsxRuntime.jsxs("span", { className: cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName), children: [showIcon && jsxRuntime.jsx(lucideReact.Calendar, { className: "text-muted-foreground h-4 w-4" }), formatted] }));
|
|
385
|
+
return (jsxRuntime.jsxs("span", { className: utils.cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName), children: [showIcon && jsxRuntime.jsx(lucideReact.Calendar, { className: "text-muted-foreground h-4 w-4" }), formatted] }));
|
|
390
386
|
},
|
|
391
387
|
};
|
|
392
388
|
}
|
|
@@ -626,9 +622,9 @@ class IconColumn extends BaseColumn {
|
|
|
626
622
|
header: ({ column }) => {
|
|
627
623
|
const displayLabel = label || String(accessor);
|
|
628
624
|
if (!sortable) {
|
|
629
|
-
return (jsxRuntime.jsx("span", { className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
625
|
+
return (jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
630
626
|
}
|
|
631
|
-
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
627
|
+
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
632
628
|
},
|
|
633
629
|
cell: ({ getValue }) => {
|
|
634
630
|
const value = String(getValue());
|
|
@@ -645,7 +641,7 @@ class IconColumn extends BaseColumn {
|
|
|
645
641
|
// Icon als Element rendern (falls LucideIcon übergeben wurde)
|
|
646
642
|
const IconElement = typeof icon === 'function' ? icon : null;
|
|
647
643
|
const renderedIcon = IconElement ? jsxRuntime.jsx(IconElement, { className: "h-full w-full" }) : icon;
|
|
648
|
-
const iconElement = (jsxRuntime.jsxs("div", { className: cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName), children: [withBackground ? (jsxRuntime.jsx("div", { className: cn('inline-flex items-center justify-center rounded-md', bgSizeClasses[size || 'md'], bgColor || 'bg-blue-50'), children: jsxRuntime.jsx("div", { className: cn(iconInBgSizeClasses[size || 'md'], color), children: renderedIcon }) })) : (jsxRuntime.jsx("div", { className: cn(sizeClasses[size || 'md'], color), children: renderedIcon })), showLabel && jsxRuntime.jsx("span", { className: cn('text-sm', color), children: stateLabel })] }));
|
|
644
|
+
const iconElement = (jsxRuntime.jsxs("div", { className: utils.cn('flex items-center gap-2', this.getAlignmentClass(), this.config.cellClassName), children: [withBackground ? (jsxRuntime.jsx("div", { className: utils.cn('inline-flex items-center justify-center rounded-md', bgSizeClasses[size || 'md'], bgColor || 'bg-blue-50'), children: jsxRuntime.jsx("div", { className: utils.cn(iconInBgSizeClasses[size || 'md'], color), children: renderedIcon }) })) : (jsxRuntime.jsx("div", { className: utils.cn(sizeClasses[size || 'md'], color), children: renderedIcon })), showLabel && jsxRuntime.jsx("span", { className: utils.cn('text-sm', color), children: stateLabel })] }));
|
|
649
645
|
if (showTooltip) {
|
|
650
646
|
return (jsxRuntime.jsx(tooltip.TooltipProvider, { children: jsxRuntime.jsxs(tooltip.Tooltip, { children: [jsxRuntime.jsx(tooltip.TooltipTrigger, { asChild: true, children: iconElement }), jsxRuntime.jsx(tooltip.TooltipContent, { children: jsxRuntime.jsx("p", { children: tooltip$1 }) })] }) }));
|
|
651
647
|
}
|
|
@@ -703,11 +699,11 @@ class ImageColumn extends BaseColumn {
|
|
|
703
699
|
};
|
|
704
700
|
return {
|
|
705
701
|
accessorKey: accessor,
|
|
706
|
-
header: () => jsxRuntime.jsx("span", { className: cn('text-muted-foreground font-medium', this.config.headerClassName), children: label || '' }),
|
|
702
|
+
header: () => jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground font-medium', this.config.headerClassName), children: label || '' }),
|
|
707
703
|
cell: ({ getValue, row }) => {
|
|
708
704
|
const src = getValue();
|
|
709
705
|
const altText = alt ? alt(row.original) : 'Bild';
|
|
710
|
-
return (jsxRuntime.jsx("img", { src: src || fallback || '/placeholder.png', alt: altText, className: cn('object-cover', sizeClasses[size || 'md'], roundedClasses[rounded || 'md'], this.config.cellClassName), onError: (e) => {
|
|
706
|
+
return (jsxRuntime.jsx("img", { src: src || fallback || '/placeholder.png', alt: altText, className: utils.cn('object-cover', sizeClasses[size || 'md'], roundedClasses[rounded || 'md'], this.config.cellClassName), onError: (e) => {
|
|
711
707
|
if (fallback) {
|
|
712
708
|
e.target.src = fallback;
|
|
713
709
|
}
|
|
@@ -797,9 +793,9 @@ class LinkColumn extends BaseColumn {
|
|
|
797
793
|
header: ({ column }) => {
|
|
798
794
|
const displayLabel = label || String(accessor);
|
|
799
795
|
if (!sortable) {
|
|
800
|
-
return (jsxRuntime.jsx("span", { className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
796
|
+
return (jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
801
797
|
}
|
|
802
|
-
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
798
|
+
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
803
799
|
},
|
|
804
800
|
cell: ({ getValue, row }) => {
|
|
805
801
|
const value = getValue();
|
|
@@ -816,7 +812,7 @@ class LinkColumn extends BaseColumn {
|
|
|
816
812
|
};
|
|
817
813
|
// Alignment ohne text-muted-foreground für Links
|
|
818
814
|
const alignmentClass = this.config.align === 'center' ? 'text-center' : this.config.align === 'right' ? 'text-right' : 'text-left';
|
|
819
|
-
return (jsxRuntime.jsxs("a", { href: url, target: openInNewTab ? '_blank' : undefined, rel: openInNewTab ? 'noopener noreferrer' : undefined, onClick: onClick ? handleClick : undefined, className: cn('inline-flex items-center gap-1.5 text-sm text-blue-500', underlineClasses[underline || 'hover'], 'hover:text-blue-500/80', alignmentClass, this.config.cellClassName), children: [icon, jsxRuntime.jsx("span", { children: value }), showExternalIcon && jsxRuntime.jsx(lucideReact.ExternalLink, { className: "text-muted-foreground h-3 w-3" })] }));
|
|
815
|
+
return (jsxRuntime.jsxs("a", { href: url, target: openInNewTab ? '_blank' : undefined, rel: openInNewTab ? 'noopener noreferrer' : undefined, onClick: onClick ? handleClick : undefined, className: utils.cn('inline-flex items-center gap-1.5 text-sm text-blue-500', underlineClasses[underline || 'hover'], 'hover:text-blue-500/80', alignmentClass, this.config.cellClassName), children: [icon, jsxRuntime.jsx("span", { children: value }), showExternalIcon && jsxRuntime.jsx(lucideReact.ExternalLink, { className: "text-muted-foreground h-3 w-3" })] }));
|
|
820
816
|
},
|
|
821
817
|
};
|
|
822
818
|
}
|
|
@@ -867,9 +863,9 @@ class NumberColumn extends BaseColumn {
|
|
|
867
863
|
header: ({ column }) => {
|
|
868
864
|
const displayLabel = label || String(accessor);
|
|
869
865
|
if (!sortable) {
|
|
870
|
-
return (jsxRuntime.jsx("span", { className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
866
|
+
return (jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
871
867
|
}
|
|
872
|
-
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
868
|
+
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
873
869
|
},
|
|
874
870
|
cell: ({ getValue }) => {
|
|
875
871
|
const value = getValue();
|
|
@@ -899,7 +895,7 @@ class NumberColumn extends BaseColumn {
|
|
|
899
895
|
}).format(value);
|
|
900
896
|
}
|
|
901
897
|
const displayValue = `${prefix || ''}${formatted}${suffix || ''}`;
|
|
902
|
-
return jsxRuntime.jsx("span", { className: cn('tabular-nums', this.getAlignmentClass(), this.config.cellClassName), children: displayValue });
|
|
898
|
+
return jsxRuntime.jsx("span", { className: utils.cn('tabular-nums', this.getAlignmentClass(), this.config.cellClassName), children: displayValue });
|
|
903
899
|
},
|
|
904
900
|
};
|
|
905
901
|
}
|
|
@@ -1002,9 +998,9 @@ class ProgressColumn extends BaseColumn {
|
|
|
1002
998
|
header: ({ column }) => {
|
|
1003
999
|
const displayLabel = label || String(accessor);
|
|
1004
1000
|
if (!sortable) {
|
|
1005
|
-
return (jsxRuntime.jsx("span", { className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
1001
|
+
return (jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
1006
1002
|
}
|
|
1007
|
-
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
1003
|
+
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
1008
1004
|
},
|
|
1009
1005
|
cell: ({ getValue }) => {
|
|
1010
1006
|
const value = getValue();
|
|
@@ -1026,7 +1022,7 @@ class ProgressColumn extends BaseColumn {
|
|
|
1026
1022
|
else if (showPercentage) {
|
|
1027
1023
|
labelText = `${Math.round(percentage)}%`;
|
|
1028
1024
|
}
|
|
1029
|
-
return (jsxRuntime.jsxs("div", { className: cn('flex min-w-[120px] items-center gap-3', this.config.cellClassName), children: [jsxRuntime.jsx(progress.Progress, { value: percentage, className: cn('flex-1', sizeClasses[size || 'md'], colorClasses[currentColor]) }), labelText && jsxRuntime.jsx("span", { className: "text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums", children: labelText })] }));
|
|
1025
|
+
return (jsxRuntime.jsxs("div", { className: utils.cn('flex min-w-[120px] items-center gap-3', this.config.cellClassName), children: [jsxRuntime.jsx(progress.Progress, { value: percentage, className: utils.cn('flex-1', sizeClasses[size || 'md'], colorClasses[currentColor]) }), labelText && jsxRuntime.jsx("span", { className: "text-muted-foreground min-w-[3rem] text-right text-sm tabular-nums", children: labelText })] }));
|
|
1030
1026
|
},
|
|
1031
1027
|
};
|
|
1032
1028
|
}
|
|
@@ -1099,9 +1095,9 @@ class TextColumn extends BaseColumn {
|
|
|
1099
1095
|
header: ({ column }) => {
|
|
1100
1096
|
const displayLabel = label || String(accessor);
|
|
1101
1097
|
if (!sortable) {
|
|
1102
|
-
return (jsxRuntime.jsx("span", { className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
1098
|
+
return (jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: displayLabel }));
|
|
1103
1099
|
}
|
|
1104
|
-
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
1100
|
+
return (jsxRuntime.jsxs(button.Button, { variant: "table_header", size: "table_header", onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: utils.cn('text-muted-foreground font-medium', this.getAlignmentClass(), this.config.headerClassName), children: [displayLabel, jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: "ml-2 h-4 w-4" })] }));
|
|
1105
1101
|
},
|
|
1106
1102
|
cell: ({ row, getValue }) => {
|
|
1107
1103
|
let value = getValue();
|
|
@@ -1111,11 +1107,11 @@ class TextColumn extends BaseColumn {
|
|
|
1111
1107
|
}
|
|
1112
1108
|
// Placeholder wenn leer
|
|
1113
1109
|
if (value === null || value === undefined || value === '') {
|
|
1114
|
-
return (jsxRuntime.jsx("span", { className: cn('text-muted-foreground', this.getAlignmentClass(), this.config.cellClassName), children: placeholder || '—' }));
|
|
1110
|
+
return (jsxRuntime.jsx("span", { className: utils.cn('text-muted-foreground', this.getAlignmentClass(), this.config.cellClassName), children: placeholder || '—' }));
|
|
1115
1111
|
}
|
|
1116
1112
|
// Prefix/Suffix hinzufügen
|
|
1117
1113
|
const displayValue = `${prefix || ''}${value}${suffix || ''}`;
|
|
1118
|
-
return jsxRuntime.jsx("span", { className: cn(this.getAlignmentClass(), this.config.cellClassName), children: displayValue });
|
|
1114
|
+
return jsxRuntime.jsx("span", { className: utils.cn(this.getAlignmentClass(), this.config.cellClassName), children: displayValue });
|
|
1119
1115
|
},
|
|
1120
1116
|
};
|
|
1121
1117
|
}
|
|
@@ -1176,7 +1172,7 @@ class ActionsColumn {
|
|
|
1176
1172
|
const visibleActions = actions.filter((action) => !action.hidden || !action.hidden(data));
|
|
1177
1173
|
if (visibleActions.length === 0)
|
|
1178
1174
|
return null;
|
|
1179
|
-
return (jsxRuntime.jsxs(dropdownMenu.DropdownMenu, { children: [jsxRuntime.jsx(dropdownMenu.DropdownMenuTrigger, { asChild: true, children: jsxRuntime.jsxs(button.Button, { variant: "ghost", className: "h-10 w-10 p-0", children: [jsxRuntime.jsx("span", { className: "sr-only", children: label }), triggerIcon || jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-8 w-8" })] }) }), jsxRuntime.jsx(dropdownMenu.DropdownMenuContent, { align: "end", children: visibleActions.map((action, index) => (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs(dropdownMenu.DropdownMenuItem, { disabled: action.disabled?.(data), className: cn(action.variant === 'destructive' && 'text-destructive focus:text-destructive'), onClick: () => {
|
|
1175
|
+
return (jsxRuntime.jsxs(dropdownMenu.DropdownMenu, { children: [jsxRuntime.jsx(dropdownMenu.DropdownMenuTrigger, { asChild: true, children: jsxRuntime.jsxs(button.Button, { variant: "ghost", className: "h-10 w-10 p-0", children: [jsxRuntime.jsx("span", { className: "sr-only", children: label }), triggerIcon || jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-8 w-8" })] }) }), jsxRuntime.jsx(dropdownMenu.DropdownMenuContent, { align: "end", children: visibleActions.map((action, index) => (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs(dropdownMenu.DropdownMenuItem, { disabled: action.disabled?.(data), className: utils.cn(action.variant === 'destructive' && 'text-destructive focus:text-destructive'), onClick: () => {
|
|
1180
1176
|
if (action.href) {
|
|
1181
1177
|
window.location.href = action.href(data);
|
|
1182
1178
|
}
|