@svadmin/ui 0.33.0 → 0.33.1

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.
@@ -3,19 +3,30 @@
3
3
  import { cn } from '../utils.js';
4
4
  import {
5
5
  createTable,
6
+ createCoreRowModel,
7
+ column_getCanSort,
8
+ column_getIsSorted,
9
+ column_toggleSorting,
10
+ column_getIsVisible,
11
+ column_toggleVisibility,
12
+ header_getSize,
13
+ table_getRowModel,
14
+ table_getHeaderGroups,
15
+ table_getAllLeafColumns,
16
+ table_getIsAllRowsSelected,
17
+ table_toggleAllRowsSelected,
18
+ row_getIsSelected,
19
+ row_toggleSelected,
20
+ row_getAllVisibleCells,
21
+ row_getIsExpanded,
22
+ row_toggleExpanded,
23
+ cell_getValue,
6
24
  type ColumnDef,
7
25
  type SortingState,
8
26
  type RowSelectionState,
9
27
  type ColumnVisibilityState,
10
28
  type ExpandedState,
11
29
  } from '@tanstack/svelte-table';
12
- import {
13
- createCoreRowModel,
14
- column_getCanSort,
15
- column_getIsSorted,
16
- column_toggleSorting,
17
- header_getSize
18
- } from '@tanstack/table-core';
19
30
 
20
31
  import { useList, useDelete, useDeleteMany, getResource, notify } from '@svadmin/core';
21
32
  import type { Pagination as PaginationState, Sort, Filter, FieldDefinition } from '@svadmin/core';
@@ -356,7 +367,7 @@
356
367
  confirmMessage = t('common.batchDeleteConfirm', { count: ids.length });
357
368
  confirmAction = async () => {
358
369
  try {
359
- await deleteManyMutation.mutateAsync({ ids, resource: resourceName, successNotification: false });
370
+ await deleteManyMutation.mutateAsync({ ids, resource: resourceName });
360
371
  notify({ type: 'success', message: t('common.batchDeleteSuccess', { count: ids.length }) });
361
372
  } catch {
362
373
  notify({ type: 'error', message: t('common.batchDeletePartialFail', { failed: 1, total: ids.length }) });
@@ -429,10 +440,10 @@
429
440
  {/snippet}
430
441
  </DropdownMenu.Trigger>
431
442
  <DropdownMenu.Content align="end" class="w-48">
432
- {#each tbl.getAllLeafColumns().filter((c: any) => !c.id.startsWith('_')) as column}
443
+ {#each table_getAllLeafColumns(tbl).filter((c: any) => !c.id.startsWith('_')) as column}
433
444
  <DropdownMenu.CheckboxItem
434
- checked={column.getIsVisible()}
435
- onCheckedChange={(v) => column.toggleVisibility(!!v)}
445
+ checked={column_getIsVisible(column)}
446
+ onCheckedChange={(v) => column_toggleVisibility(column, !!v)}
436
447
  >
437
448
  {visibleFields.find(f => f.key === column.id)?.label ?? column.id}
438
449
  </DropdownMenu.CheckboxItem>
@@ -552,7 +563,7 @@
552
563
  <div class="hidden md:block">
553
564
  <Table.Root>
554
565
  <Table.Header>
555
- {#each tbl.getHeaderGroups() as headerGroup}
566
+ {#each table_getHeaderGroups(tbl) as headerGroup}
556
567
  <DraggableHeader
557
568
  columns={headerGroup.headers.map((h: any) => ({ id: h.column.id, header: h }))}
558
569
  resourceName={resourceName}
@@ -567,8 +578,8 @@
567
578
  >
568
579
  {#if header.id === '_select'}
569
580
  <Checkbox
570
- checked={tbl.getIsAllRowsSelected()}
571
- onCheckedChange={() => tbl.toggleAllRowsSelected()}
581
+ checked={table_getIsAllRowsSelected(tbl)}
582
+ onCheckedChange={() => table_toggleAllRowsSelected(tbl)}
572
583
  />
573
584
  {:else if header.id === '_expand'}
574
585
  <!-- empty -->
@@ -598,23 +609,23 @@
598
609
  {/each}
599
610
  </Table.Header>
600
611
  <Table.Body>
601
- {#each tbl.getRowModel().rows as row}
612
+ {#each table_getRowModel(tbl).rows as row}
602
613
  {@const record = row.original}
603
614
  {@const id = record[primaryKey] as string | number}
604
615
  <ContextMenu.Root>
605
616
  <ContextMenu.Trigger>
606
617
  {#snippet child({ props })}
607
- <Table.Row {...props} class="transition-all duration-300 border-b border-border/10 {row.getIsSelected() ? 'bg-primary/5' : 'hover:bg-muted/20'}">
608
- {#each row.getVisibleCells() as cell}
618
+ <Table.Row {...props} class="transition-all duration-300 border-b border-border/10 {row_getIsSelected(row) ? 'bg-primary/5' : 'hover:bg-muted/20'}">
619
+ {#each row_getAllVisibleCells(row) as cell}
609
620
  <Table.Cell>
610
621
  {#if cell.column.id === '_select'}
611
622
  <Checkbox
612
- checked={row.getIsSelected()}
613
- onCheckedChange={() => row.toggleSelected()}
623
+ checked={row_getIsSelected(row)}
624
+ onCheckedChange={() => row_toggleSelected(row)}
614
625
  />
615
626
  {:else if cell.column.id === '_expand'}
616
- <TooltipButton tooltip={row.getIsExpanded() ? t('common.collapse') : t('common.expand')} variant="ghost" size="icon" class="h-7 w-7" onclick={() => row.toggleExpanded()}>
617
- {#if row.getIsExpanded()}
627
+ <TooltipButton tooltip={row_getIsExpanded(row) ? t('common.collapse') : t('common.expand')} variant="ghost" size="icon" class="h-7 w-7" onclick={() => row_toggleExpanded(row)}>
628
+ {#if row_getIsExpanded(row)}
618
629
  <ChevronUp class="h-4 w-4" />
619
630
  {:else}
620
631
  <ChevronDown class="h-4 w-4" />
@@ -640,34 +651,34 @@
640
651
  {:else}
641
652
  {@const field = visibleFields.find(f => f.key === cell.column.id)}
642
653
  {#if customColumns && field && customColumns[field.key]}
643
- {@render customColumns[field.key]({ value: cell.getValue(), record })}
654
+ {@render customColumns[field.key]({ value: cell_getValue(cell), record })}
644
655
  {:else if defaultCellRenderer && field}
645
- {@render defaultCellRenderer({ field, value: cell.getValue(), record })}
656
+ {@render defaultCellRenderer({ field, value: cell_getValue(cell), record })}
646
657
  {:else if field?.type === 'boolean'}
647
- <span class="inline-block h-2 w-2 rounded-full {cell.getValue() ? 'bg-success' : 'bg-muted-foreground/30'}"></span>
648
- {:else if field?.type === 'date' && cell.getValue()}
649
- {new Date(cell.getValue() as string).toLocaleDateString()}
650
- {:else if field?.type === 'tags' && Array.isArray(cell.getValue())}
658
+ <span class="inline-block h-2 w-2 rounded-full {cell_getValue(cell) ? 'bg-success' : 'bg-muted-foreground/30'}"></span>
659
+ {:else if field?.type === 'date' && cell_getValue(cell)}
660
+ {new Date(cell_getValue(cell) as string).toLocaleDateString()}
661
+ {:else if field?.type === 'tags' && Array.isArray(cell_getValue(cell))}
651
662
  <div class="flex flex-wrap gap-1">
652
- {#each (cell.getValue() as string[]).slice(0, 3) as tag}
663
+ {#each (cell_getValue(cell) as string[]).slice(0, 3) as tag}
653
664
  <Badge variant="secondary">{tag}</Badge>
654
665
  {/each}
655
666
  </div>
656
667
  {:else if field?.type === 'select' && field.options}
657
- {@const opt = field.options.find(o => o.value === cell.getValue())}
658
- <Badge variant="outline">{opt?.label ?? cell.getValue() ?? '—'}</Badge>
668
+ {@const opt = field.options.find(o => o.value === cell_getValue(cell))}
669
+ <Badge variant="outline">{opt?.label ?? cell_getValue(cell) ?? '—'}</Badge>
659
670
  {:else if canEdit && field && ['text', 'number', 'email', 'url'].includes(field.type)}
660
671
  <InlineEdit
661
672
  {resourceName}
662
673
  recordId={id}
663
674
  {field}
664
- value={cell.getValue()}
675
+ value={cell_getValue(cell)}
665
676
  onSave={() => listResult.refetch()}
666
677
  />
667
678
  {:else if field?.key === primaryKey}
668
- <span class="font-mono text-xs">{cell.getValue() ?? '—'}</span>
679
+ <span class="font-mono text-xs">{cell_getValue(cell) ?? '—'}</span>
669
680
  {:else}
670
- {cell.getValue() ?? '—'}
681
+ {cell_getValue(cell) ?? '—'}
671
682
  {/if}
672
683
  {/if}
673
684
  </Table.Cell>
@@ -695,9 +706,9 @@
695
706
  {/if}
696
707
  </ContextMenu.Content>
697
708
  </ContextMenu.Root>
698
- {#if expandedRowRender && row.getIsExpanded()}
709
+ {#if expandedRowRender && row_getIsExpanded(row)}
699
710
  <Table.Row class="bg-muted/10 border-b border-border/10 transition-all">
700
- <Table.Cell colspan={row.getVisibleCells().length}>
711
+ <Table.Cell colspan={row_getAllVisibleCells(row).length}>
701
712
  {@render expandedRowRender({ record })}
702
713
  </Table.Cell>
703
714
  </Table.Row>
@@ -731,19 +742,19 @@
731
742
 
732
743
  <!-- Mobile Card View (visible only on small screens) -->
733
744
  <div class="md:hidden space-y-3 p-2">
734
- {#each tbl.getRowModel().rows as row}
745
+ {#each table_getRowModel(tbl).rows as row}
735
746
  {@const record = row.original}
736
747
  {@const id = record[primaryKey] as string | number}
737
748
  <div
738
- class="rounded-[20px] shadow-[0_4px_20px_rgb(0,0,0,0.03)] ring-1 ring-border/20 bg-card p-5 transition-all {row.getIsSelected() ? 'ring-2 ring-primary/50 bg-primary/5' : ''}"
749
+ class="rounded-[20px] shadow-[0_4px_20px_rgb(0,0,0,0.03)] ring-1 ring-border/20 bg-card p-5 transition-all {row_getIsSelected(row) ? 'ring-2 ring-primary/50 bg-primary/5' : ''}"
739
750
  >
740
751
  <!-- Card header: ID + select + actions -->
741
752
  <div class="flex items-center justify-between mb-3">
742
753
  <div class="flex items-center gap-2">
743
754
  {#if selectable && (canDelete || batchActions)}
744
755
  <Checkbox
745
- checked={row.getIsSelected()}
746
- onCheckedChange={() => row.toggleSelected()}
756
+ checked={row_getIsSelected(row)}
757
+ onCheckedChange={() => row_toggleSelected(row)}
747
758
  />
748
759
  {/if}
749
760
  <span class="text-xs font-mono text-muted-foreground">#{id}</span>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@svadmin/ui",
3
- "version": "0.33.0",
3
+ "version": "0.33.1",
4
4
  "description": "Pre-built admin UI components — AdminApp, AutoTable, AutoForm, Sidebar, Layout",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -82,9 +82,7 @@
82
82
  "bugs": {
83
83
  "url": "https://github.com/zuohuadong/svadmin/issues"
84
84
  },
85
- "devDependencies": {
86
- "@tanstack/table-core": "^9.0.0-alpha.32"
87
- },
85
+ "devDependencies": {},
88
86
  "scripts": {
89
87
  "build": "svelte-package -i src -o dist"
90
88
  }