@innertia-solutions/innertia-nuxt 0.1.23 → 0.1.24

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.
@@ -20,6 +20,10 @@ const props = defineProps({
20
20
  /** Mostrar selector "Filas por página" en el footer. Default false. */
21
21
  showPerPage: { type: Boolean, default: false },
22
22
 
23
+ /** Modo lista: sin paginación. Carga todas las filas (server-side: ?list=true) y
24
+ * el área de la tabla se vuelve scrolleable en vez de crecer indefinidamente. */
25
+ list: { type: Boolean, default: false },
26
+
23
27
  // Tamaño visible (wrap + overflow auto). 'sm' | 'md' (default) | 'lg' | 'fit'.
24
28
  size: { type: String, default: 'md' },
25
29
  filters: { type: Array, default: () => [] },
@@ -758,6 +762,7 @@ defineExpose({ getSelectedRows, reload, clearCache, exportTable, tableRef, close
758
762
  :show-reload-button="showReloadButton"
759
763
  :info-position="infoPosition"
760
764
  :show-per-page="showPerPage"
765
+ :list="list"
761
766
  :click-row-to-open="clickRowToOpen"
762
767
  :preview-row-id="previewRow?.id ?? null"
763
768
  :preview-mode="!!previewEnabled"
@@ -21,6 +21,8 @@ const props = defineProps({
21
21
  infoPosition: { type: String, default: 'bottom' },
22
22
  /** Mostrar el selector "Filas: 10/25/50/100/Otro...". Default false. */
23
23
  showPerPage: { type: Boolean, default: false },
24
+ /** Modo lista: sin paginación (envía ?list=true, carga todas las filas y scrollea). */
25
+ list: { type: Boolean, default: false },
24
26
  /** 'table' | 'cards' | 'database' | 'grid' (legacy → maps to cards) */
25
27
  viewMode: { type: String, default: 'table' },
26
28
  gridClass: { type: String, default: 'grid grid-cols-2 lg:grid-cols-3 gap-4' },
@@ -244,6 +246,8 @@ const buildRequestParams = () => {
244
246
  perPage: pagination.value.pageSize,
245
247
  sortColumns: sorting.value.map(s => ({ column: s.id, direction: s.desc ? 'desc' : 'asc' })),
246
248
  columnFilters: Object.fromEntries(columnFilters.value.map(f => [f.id, f.value])),
249
+ // Modo lista: sin paginación, el backend devuelve todas las filas (search/sort/filtros igual).
250
+ ...(props.list ? { list: true } : {}),
247
251
  ...otherParams,
248
252
  }
249
253
  }
@@ -596,6 +600,9 @@ defineExpose({
596
600
  <template>
597
601
  <div class="relative flex flex-col">
598
602
 
603
+ <!-- Modo lista: contenedor scrolleable (todas las filas cargadas, sin paginación) -->
604
+ <div :class="list ? 'max-h-[70vh] overflow-y-auto' : 'contents'">
605
+
599
606
  <!-- Table view -->
600
607
  <ViewTable
601
608
  v-if="currentView === 'table'"
@@ -664,6 +671,8 @@ defineExpose({
664
671
  </template>
665
672
  </ViewDatabase>
666
673
 
674
+ </div><!-- /scroll lista -->
675
+
667
676
  <!-- Pagination & controls bar -->
668
677
  <div
669
678
  v-if="infoPosition !== 'none'"
@@ -709,8 +718,8 @@ defineExpose({
709
718
  </div>
710
719
  </div>
711
720
 
712
- <!-- Right: per-page + pagination -->
713
- <div class="flex items-center gap-x-8">
721
+ <!-- Right: per-page + pagination (oculto en modo lista) -->
722
+ <div v-if="!list" class="flex items-center gap-x-8">
714
723
  <!-- Per page selector -->
715
724
  <div v-if="showPerPage" class="flex items-center gap-x-2">
716
725
  <label class="text-[10px] font-bold text-muted-foreground uppercase tracking-widest">Filas:</label>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innertia-solutions/innertia-nuxt",
3
- "version": "0.1.23",
3
+ "version": "0.1.24",
4
4
  "description": "Innertia Solutions — Nuxt layer unificada: core, auth, multitenancy, theme y app contexts",
5
5
  "keywords": [
6
6
  "nuxt",