@innertia-solutions/nuxt-theme-spark 0.1.86 → 0.1.87
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/components/Admin/Base.vue +81 -58
- package/components/Admin/Page.vue +68 -2
- package/components/App/PageLoadingSpinner.vue +1 -1
- package/components/Layout/Admin.vue +51 -2
- package/components/Nav/Tabs.vue +18 -3
- package/components/Table/Database.vue +9 -5
- package/components/Table/DownloadDropdown.vue +4 -4
- package/components/Table/FilterDropdown.vue +3 -3
- package/components/Table/Grid.vue +9 -5
- package/components/Table/Kanban.vue +20 -3
- package/components/Table/List.vue +9 -4
- package/components/Table/Standard.vue +21 -15
- package/components/Table.vue +41 -21
- package/components/TableExportable.vue +147 -127
- package/package.json +1 -1
- package/public/favicon.png +0 -0
- package/public/icon.png +0 -0
- package/public/isologo-dark.png +0 -0
- package/public/isologo-light.png +0 -0
- package/spark.css +25 -20
- package/components/Admin/Header.vue +0 -32
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import { IconSearch, IconAdjustmentsHorizontal, IconLayoutColumns, IconGripVertical } from '@tabler/icons-vue'
|
|
3
3
|
|
|
4
4
|
const props = defineProps({
|
|
5
|
-
|
|
5
|
+
table: { type: Object, default: null }, // TableDefinition — preferred
|
|
6
|
+
endpoint: { type: String, default: undefined },
|
|
6
7
|
columns: { type: Array, required: true },
|
|
7
|
-
name: { type: String,
|
|
8
|
+
name: { type: String, default: undefined },
|
|
8
9
|
params: { type: Object, default: () => ({}) },
|
|
9
10
|
checkable: { type: Boolean, default: false },
|
|
10
11
|
cached: { type: Boolean, default: true },
|
|
@@ -18,7 +19,10 @@ const props = defineProps({
|
|
|
18
19
|
splitRatio: { type: Number, default: 60 },
|
|
19
20
|
})
|
|
20
21
|
|
|
21
|
-
const emit = defineEmits(['row-click', 'loaded'])
|
|
22
|
+
const emit = defineEmits(['row-click', 'loaded', 'preview'])
|
|
23
|
+
|
|
24
|
+
const resolvedEndpoint = computed(() => props.table?.endpoint ?? props.endpoint)
|
|
25
|
+
const resolvedName = computed(() => props.table?.name ?? props.name)
|
|
22
26
|
const slots = useSlots()
|
|
23
27
|
const forwardedSlots = computed(() => {
|
|
24
28
|
const excluded = new Set(['toolbar', 'preview'])
|
|
@@ -60,7 +64,9 @@ const closePreview = () => { previewRow.value = null }
|
|
|
60
64
|
|
|
61
65
|
const handleRowClick = (row) => {
|
|
62
66
|
if (previewEnabled.value) {
|
|
63
|
-
|
|
67
|
+
const toggled = previewRow.value?.id === row.id ? null : row
|
|
68
|
+
previewRow.value = toggled
|
|
69
|
+
if (toggled) emit('preview', toggled)
|
|
64
70
|
} else {
|
|
65
71
|
emit('row-click', row)
|
|
66
72
|
}
|
|
@@ -185,17 +191,17 @@ const reload = () => tableRef.value?.reload()
|
|
|
185
191
|
const clearCache = () => tableRef.value?.clearCache()
|
|
186
192
|
const exportTable = (format, allPages, filteredRows) => tableRef.value?.exportTable(format, allPages, filteredRows)
|
|
187
193
|
|
|
188
|
-
defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef })
|
|
194
|
+
defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef, closePreview })
|
|
189
195
|
</script>
|
|
190
196
|
|
|
191
197
|
<template>
|
|
192
198
|
<div class="relative" ref="containerRef">
|
|
193
199
|
|
|
194
200
|
<!-- Card único -->
|
|
195
|
-
<div class="bg-white dark:bg-slate-
|
|
201
|
+
<div class="bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-2xl shadow-sm overflow-hidden">
|
|
196
202
|
|
|
197
203
|
<!-- Toolbar -->
|
|
198
|
-
<div class="flex flex-wrap items-center gap-3 px-4 py-3 border-b border-slate-200 dark:border-slate-
|
|
204
|
+
<div class="flex flex-wrap items-center gap-3 px-4 py-3 border-b border-slate-200 dark:border-slate-800">
|
|
199
205
|
<div v-if="showSearch" class="flex-1 min-w-48">
|
|
200
206
|
<Forms.Input v-model="search" type="search" :placeholder="searchPlaceholder" :icon-left="IconSearch" />
|
|
201
207
|
</div>
|
|
@@ -208,7 +214,7 @@ defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef })
|
|
|
208
214
|
'py-1.5 px-3 inline-flex items-center gap-2 text-sm font-medium rounded-lg border transition-colors',
|
|
209
215
|
showFilterPanel || activeFilterCount > 0
|
|
210
216
|
? 'border-blue-500 bg-blue-50 text-blue-700 dark:bg-blue-900/20 dark:border-blue-500 dark:text-blue-300'
|
|
211
|
-
: 'border-slate-200 dark:border-slate-
|
|
217
|
+
: 'border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-700'
|
|
212
218
|
]"
|
|
213
219
|
>
|
|
214
220
|
<IconAdjustmentsHorizontal class="size-4" stroke="1.5" />
|
|
@@ -227,7 +233,7 @@ defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef })
|
|
|
227
233
|
<div
|
|
228
234
|
v-if="showFilterPanel"
|
|
229
235
|
ref="filterPanelRef"
|
|
230
|
-
class="absolute top-full left-0 z-50 mt-1.5 bg-white dark:bg-slate-
|
|
236
|
+
class="absolute top-full left-0 z-50 mt-1.5 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl shadow-2xl p-3 min-w-56 max-h-96 overflow-y-auto"
|
|
231
237
|
>
|
|
232
238
|
<p class="text-[10px] font-bold text-slate-400 dark:text-slate-500 uppercase tracking-widest mb-3 px-1">Filtros</p>
|
|
233
239
|
<TableFilter v-model="activeFilters" :columns="filtersConfig" />
|
|
@@ -244,14 +250,14 @@ defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef })
|
|
|
244
250
|
'py-1.5 px-3 inline-flex items-center gap-2 text-sm font-medium rounded-lg border transition-colors',
|
|
245
251
|
showColumnPanel
|
|
246
252
|
? 'border-blue-500 bg-blue-50 text-blue-700 dark:bg-blue-900/20 dark:border-blue-500 dark:text-blue-300'
|
|
247
|
-
: 'border-slate-200 dark:border-slate-
|
|
253
|
+
: 'border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-700'
|
|
248
254
|
]"
|
|
249
255
|
>
|
|
250
256
|
<IconLayoutColumns class="size-4" />
|
|
251
257
|
Columnas
|
|
252
258
|
</button>
|
|
253
259
|
|
|
254
|
-
<TableExportable v-if="showExport" :table-ref="tableRef" :name="
|
|
260
|
+
<TableExportable v-if="showExport" :table-ref="tableRef" :name="resolvedName" :columns="columns" />
|
|
255
261
|
</div>
|
|
256
262
|
|
|
257
263
|
<!-- Contenido: tabla siempre full width + preview overlay -->
|
|
@@ -260,9 +266,9 @@ defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef })
|
|
|
260
266
|
<!-- Tabla -->
|
|
261
267
|
<Table
|
|
262
268
|
ref="tableRef"
|
|
263
|
-
:endpoint="
|
|
269
|
+
:endpoint="resolvedEndpoint"
|
|
264
270
|
:columns="columns"
|
|
265
|
-
:name="
|
|
271
|
+
:name="resolvedName"
|
|
266
272
|
:params="mergedParams"
|
|
267
273
|
:search="search"
|
|
268
274
|
:checkable="checkable"
|
|
@@ -292,7 +298,7 @@ defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef })
|
|
|
292
298
|
>
|
|
293
299
|
<div
|
|
294
300
|
v-if="previewRow && previewEnabled"
|
|
295
|
-
class="absolute top-0 right-0 z-30 flex bg-white dark:bg-slate-
|
|
301
|
+
class="absolute top-0 right-0 z-30 flex bg-white dark:bg-slate-900 border-l border-slate-200 dark:border-slate-800 shadow-[-4px_0_16px_rgba(0,0,0,0.06)]"
|
|
296
302
|
:style="{ width: (100 - currentRatio) + '%', bottom: paginationHeight + 'px' }"
|
|
297
303
|
>
|
|
298
304
|
<!-- Resize handle -->
|
|
@@ -322,7 +328,7 @@ defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef })
|
|
|
322
328
|
<div
|
|
323
329
|
v-if="showColumnPanel"
|
|
324
330
|
ref="columnPanelRef"
|
|
325
|
-
class="absolute top-12 right-0 z-50 bg-white dark:bg-slate-
|
|
331
|
+
class="absolute top-12 right-0 z-50 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl shadow-2xl p-3 min-w-56 max-h-80 overflow-y-auto"
|
|
326
332
|
>
|
|
327
333
|
<p class="text-[10px] font-bold text-slate-400 dark:text-slate-500 uppercase tracking-widest mb-2 px-1">
|
|
328
334
|
Columnas visibles
|
package/components/Table.vue
CHANGED
|
@@ -309,6 +309,26 @@ onBeforeUnmount(() => {
|
|
|
309
309
|
if (props.cached && tableData.value.length > 0) saveToCache()
|
|
310
310
|
})
|
|
311
311
|
|
|
312
|
+
// ─── TanStack Query invalidation signal ───────────────────────────────────────
|
|
313
|
+
// A lightweight query keyed by table name. Calling invalidateQueries(['table', name])
|
|
314
|
+
// from anywhere triggers clearCache + scheduleFetch without a full refactor.
|
|
315
|
+
const queryClient = useQueryClient()
|
|
316
|
+
const { data: _invalidateSignal } = useQuery({
|
|
317
|
+
queryKey: computed(() => ['table', props.name]),
|
|
318
|
+
queryFn: () => Date.now(),
|
|
319
|
+
initialData: 0,
|
|
320
|
+
staleTime: Infinity,
|
|
321
|
+
refetchOnWindowFocus: false,
|
|
322
|
+
refetchOnMount: false,
|
|
323
|
+
})
|
|
324
|
+
let _signalReady = false
|
|
325
|
+
onMounted(() => { _signalReady = true })
|
|
326
|
+
watch(_invalidateSignal, () => {
|
|
327
|
+
if (!_signalReady) return
|
|
328
|
+
clearCache()
|
|
329
|
+
scheduleFetch(0)
|
|
330
|
+
})
|
|
331
|
+
|
|
312
332
|
// ─── Column settings panel ────────────────────────────────────────────────────
|
|
313
333
|
const setColumnOrder = (order) => { columnOrder.value = order }
|
|
314
334
|
|
|
@@ -484,7 +504,7 @@ defineExpose({
|
|
|
484
504
|
<!-- Table view -->
|
|
485
505
|
<div v-if="!isGridView" class="overflow-x-auto relative">
|
|
486
506
|
<table
|
|
487
|
-
class="relative divide-y divide-gray-200 dark:divide-slate-
|
|
507
|
+
class="relative divide-y divide-gray-200 dark:divide-slate-800"
|
|
488
508
|
:style="{ tableLayout: 'fixed', width: table.getTotalSize() + 'px', minWidth: '100%' }"
|
|
489
509
|
>
|
|
490
510
|
<colgroup>
|
|
@@ -494,11 +514,11 @@ defineExpose({
|
|
|
494
514
|
:style="{ width: col.getSize() + 'px' }"
|
|
495
515
|
>
|
|
496
516
|
</colgroup>
|
|
497
|
-
<thead class="relative z-20 bg-white dark:bg-slate-
|
|
517
|
+
<thead class="relative z-20 bg-white dark:bg-slate-900">
|
|
498
518
|
<template v-for="headerGroup in table.getHeaderGroups()" :key="headerGroup.id">
|
|
499
519
|
<!-- Main header row -->
|
|
500
520
|
<tr
|
|
501
|
-
class="divide-x divide-slate-200 dark:divide-slate-
|
|
521
|
+
class="divide-x divide-slate-200 dark:divide-slate-800"
|
|
502
522
|
>
|
|
503
523
|
<th
|
|
504
524
|
v-for="header in headerGroup.headers"
|
|
@@ -524,7 +544,7 @@ defineExpose({
|
|
|
524
544
|
:checked="table.getIsAllRowsSelected()"
|
|
525
545
|
:indeterminate="table.getIsSomeRowsSelected()"
|
|
526
546
|
@change="table.getToggleAllRowsSelectedHandler()($event)"
|
|
527
|
-
class="mx-2 shrink-0 border-gray-300 rounded-sm text-blue-900 focus:ring-0 focus:ring-offset-0 dark:bg-slate-
|
|
547
|
+
class="mx-2 shrink-0 border-gray-300 rounded-sm text-blue-900 focus:ring-0 focus:ring-offset-0 dark:bg-slate-900 dark:border-slate-600"
|
|
528
548
|
/>
|
|
529
549
|
</template>
|
|
530
550
|
<!-- Regular column header -->
|
|
@@ -563,7 +583,7 @@ defineExpose({
|
|
|
563
583
|
<!-- Column filter row -->
|
|
564
584
|
<tr
|
|
565
585
|
v-if="hasFilterableColumns"
|
|
566
|
-
class="divide-x divide-gray-200 dark:divide-slate-
|
|
586
|
+
class="divide-x divide-gray-200 dark:divide-slate-800 border-b border-gray-200 dark:border-slate-800 bg-slate-50/50 dark:bg-slate-900/50"
|
|
567
587
|
>
|
|
568
588
|
<th
|
|
569
589
|
v-for="header in headerGroup.headers"
|
|
@@ -575,20 +595,20 @@ defineExpose({
|
|
|
575
595
|
:value="header.column.getFilterValue() ?? ''"
|
|
576
596
|
@input="(e) => header.column.setFilterValue(e.target.value || undefined)"
|
|
577
597
|
:placeholder="`Filtrar ${header.column.columnDef.meta?.label ?? ''}...`"
|
|
578
|
-
class="w-full bg-white dark:bg-slate-
|
|
598
|
+
class="w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-lg text-xs text-slate-600 dark:text-slate-300 px-2.5 py-1 focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-400 dark:focus:border-indigo-500 outline-none transition-all"
|
|
579
599
|
/>
|
|
580
600
|
</th>
|
|
581
601
|
</tr>
|
|
582
602
|
</template>
|
|
583
603
|
</thead>
|
|
584
604
|
|
|
585
|
-
<tbody ref="tableBodyRef" class="divide-y divide-gray-200 dark:divide-slate-
|
|
605
|
+
<tbody ref="tableBodyRef" class="divide-y divide-gray-200 dark:divide-slate-800">
|
|
586
606
|
<!-- Loading skeleton rows -->
|
|
587
607
|
<tr
|
|
588
608
|
v-if="loading"
|
|
589
609
|
v-for="(_, i) in skeletonRows"
|
|
590
610
|
:key="'sk-' + i"
|
|
591
|
-
class="animate-pulse divide-x divide-gray-200 dark:divide-slate-
|
|
611
|
+
class="animate-pulse divide-x divide-gray-200 dark:divide-slate-800 bg-white dark:bg-slate-900"
|
|
592
612
|
>
|
|
593
613
|
<td
|
|
594
614
|
v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
|
|
@@ -606,7 +626,7 @@ defineExpose({
|
|
|
606
626
|
v-if="loading && skeletonRows.length < pagination.pageSize"
|
|
607
627
|
v-for="i in (pagination.pageSize - skeletonRows.length)"
|
|
608
628
|
:key="'lf-' + i"
|
|
609
|
-
class="divide-x divide-gray-200 dark:divide-slate-
|
|
629
|
+
class="divide-x divide-gray-200 dark:divide-slate-800 bg-white dark:bg-slate-900"
|
|
610
630
|
>
|
|
611
631
|
<td
|
|
612
632
|
v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
|
|
@@ -620,7 +640,7 @@ defineExpose({
|
|
|
620
640
|
v-if="!loading && tableData.length === 0"
|
|
621
641
|
v-for="i in pagination.pageSize"
|
|
622
642
|
:key="'esk-' + i"
|
|
623
|
-
class="divide-x divide-gray-200 dark:divide-slate-
|
|
643
|
+
class="divide-x divide-gray-200 dark:divide-slate-800 bg-white dark:bg-slate-900"
|
|
624
644
|
>
|
|
625
645
|
<td
|
|
626
646
|
v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
|
|
@@ -638,7 +658,7 @@ defineExpose({
|
|
|
638
658
|
@click="(e) => handleRowClick(row, e)"
|
|
639
659
|
@keydown="(e) => handleRowKeydown(row, e)"
|
|
640
660
|
:tabindex="isRowClickEnabled ? 0 : undefined"
|
|
641
|
-
class="divide-x divide-gray-200 dark:divide-slate-
|
|
661
|
+
class="divide-x divide-gray-200 dark:divide-slate-800 bg-white hover:bg-gray-50 dark:bg-slate-900 dark:hover:bg-slate-900 transition-colors"
|
|
642
662
|
:class="{
|
|
643
663
|
'cursor-pointer': isRowClickEnabled,
|
|
644
664
|
'bg-indigo-50/40 dark:bg-indigo-900/10 hover:bg-indigo-50/60': row.getIsSelected(),
|
|
@@ -664,7 +684,7 @@ defineExpose({
|
|
|
664
684
|
:checked="row.getIsSelected()"
|
|
665
685
|
:disabled="!row.getCanSelect()"
|
|
666
686
|
@change="row.getToggleSelectedHandler()($event)"
|
|
667
|
-
class="rounded border-gray-300 focus:ring-0 focus:ring-offset-0 dark:bg-slate-
|
|
687
|
+
class="rounded border-gray-300 focus:ring-0 focus:ring-offset-0 dark:bg-slate-900 dark:border-slate-600"
|
|
668
688
|
/>
|
|
669
689
|
</div>
|
|
670
690
|
</template>
|
|
@@ -682,7 +702,7 @@ defineExpose({
|
|
|
682
702
|
v-if="!loading && tableData.length > 0 && tableData.length < pagination.pageSize"
|
|
683
703
|
v-for="i in (pagination.pageSize - tableData.length)"
|
|
684
704
|
:key="'fill-' + i"
|
|
685
|
-
class="divide-x divide-gray-200 dark:divide-slate-
|
|
705
|
+
class="divide-x divide-gray-200 dark:divide-slate-800 bg-white dark:bg-slate-900"
|
|
686
706
|
>
|
|
687
707
|
<td
|
|
688
708
|
v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
|
|
@@ -696,7 +716,7 @@ defineExpose({
|
|
|
696
716
|
<!-- Empty state overlays -->
|
|
697
717
|
<div
|
|
698
718
|
v-if="!loading && tableData.length === 0 && !search && !columnFilters.length"
|
|
699
|
-
class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-white/60 dark:bg-slate-
|
|
719
|
+
class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-white/60 dark:bg-slate-900/60 rounded-xl"
|
|
700
720
|
>
|
|
701
721
|
<slot name="empty">
|
|
702
722
|
<p class="text-slate-400 dark:text-slate-500 text-lg font-medium italic">No hay registros</p>
|
|
@@ -705,7 +725,7 @@ defineExpose({
|
|
|
705
725
|
|
|
706
726
|
<div
|
|
707
727
|
v-if="!loading && tableData.length === 0 && (search || columnFilters.length)"
|
|
708
|
-
class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-white/60 dark:bg-slate-
|
|
728
|
+
class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-white/60 dark:bg-slate-900/60 rounded-xl"
|
|
709
729
|
>
|
|
710
730
|
<slot name="empty-search">
|
|
711
731
|
<p class="text-slate-400 dark:text-slate-500 text-lg font-medium italic">No hay registros en la búsqueda</p>
|
|
@@ -718,7 +738,7 @@ defineExpose({
|
|
|
718
738
|
<div v-if="loading" :class="gridClass">
|
|
719
739
|
<div v-for="(_, i) in skeletonRows" :key="'gsk-' + i" class="animate-pulse">
|
|
720
740
|
<slot name="grid-skeleton">
|
|
721
|
-
<div class="bg-white dark:bg-slate-
|
|
741
|
+
<div class="bg-white dark:bg-slate-900 rounded-lg border border-gray-200 dark:border-slate-800 p-4">
|
|
722
742
|
<div class="space-y-3">
|
|
723
743
|
<div class="h-4 bg-gray-200 dark:bg-slate-600 rounded w-3/4"></div>
|
|
724
744
|
<div class="h-4 bg-gray-200 dark:bg-slate-600 rounded w-1/2"></div>
|
|
@@ -740,11 +760,11 @@ defineExpose({
|
|
|
740
760
|
:checkable="checkable"
|
|
741
761
|
:toggle-row="() => row.toggleSelected()"
|
|
742
762
|
>
|
|
743
|
-
<div class="bg-white dark:bg-slate-
|
|
763
|
+
<div class="bg-white dark:bg-slate-900 rounded-lg border border-gray-200 dark:border-slate-800 p-4 hover:shadow-md transition-shadow relative"
|
|
744
764
|
:class="{ 'ring-2 ring-indigo-400 dark:ring-indigo-600': row.getIsSelected() }">
|
|
745
765
|
<div v-if="checkable" class="absolute top-2 left-2 z-10">
|
|
746
766
|
<input type="checkbox" :checked="row.getIsSelected()" @change="row.toggleSelected()"
|
|
747
|
-
class="rounded border-gray-300 dark:bg-slate-
|
|
767
|
+
class="rounded border-gray-300 dark:bg-slate-900 dark:border-slate-600" />
|
|
748
768
|
</div>
|
|
749
769
|
<div class="space-y-2" :class="{ 'pt-6': checkable }">
|
|
750
770
|
<div v-for="cell in row.getVisibleCells().filter(c => c.column.id !== 'select')" :key="cell.id" class="flex justify-between">
|
|
@@ -769,7 +789,7 @@ defineExpose({
|
|
|
769
789
|
</div>
|
|
770
790
|
|
|
771
791
|
<!-- Pagination & controls bar -->
|
|
772
|
-
<div ref="paginationBarRef" class="flex flex-col sm:flex-row items-center justify-between gap-y-4 sm:gap-y-0 px-4 py-3 border-t border-slate-200 dark:border-slate-
|
|
792
|
+
<div ref="paginationBarRef" class="flex flex-col sm:flex-row items-center justify-between gap-y-4 sm:gap-y-0 px-4 py-3 border-t border-slate-200 dark:border-slate-800">
|
|
773
793
|
<!-- Left: reload, total, cache, columns button -->
|
|
774
794
|
<div class="flex items-center gap-x-4 flex-wrap gap-y-2">
|
|
775
795
|
<!-- Reload button -->
|
|
@@ -816,7 +836,7 @@ defineExpose({
|
|
|
816
836
|
v-if="!isCustomPerPage"
|
|
817
837
|
:value="pagination.pageSize"
|
|
818
838
|
@change="(e) => handlePerPageChange(e.target.value)"
|
|
819
|
-
class="bg-slate-100 dark:bg-slate-
|
|
839
|
+
class="bg-slate-100 dark:bg-slate-900 border-none text-[11px] font-bold text-slate-600 dark:text-slate-300 rounded-lg focus:ring-0 cursor-pointer py-1 pl-2 pr-8"
|
|
820
840
|
>
|
|
821
841
|
<option :value="10">10</option>
|
|
822
842
|
<option :value="25">25</option>
|
|
@@ -830,7 +850,7 @@ defineExpose({
|
|
|
830
850
|
:value="pagination.pageSize"
|
|
831
851
|
@change="(e) => table.setPageSize(parseInt(e.target.value) || 10)"
|
|
832
852
|
min="1" max="500"
|
|
833
|
-
class="w-14 bg-slate-100 dark:bg-slate-
|
|
853
|
+
class="w-14 bg-slate-100 dark:bg-slate-900 border-none text-[11px] font-bold text-slate-600 dark:text-slate-300 rounded-lg focus:ring-2 focus:ring-indigo-500/20 py-1 px-2"
|
|
834
854
|
/>
|
|
835
855
|
<button @click="resetPerPage" class="text-[10px] text-indigo-500 font-bold hover:underline">Volver</button>
|
|
836
856
|
</div>
|