orbiq-neural-ui-kit 1.0.33 → 1.0.35
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.
|
@@ -12209,6 +12209,8 @@ class NeuralDataTableComponent {
|
|
|
12209
12209
|
...(ngDevMode ? [undefined, { debugName: "count" }] : /* istanbul ignore next */ []));
|
|
12210
12210
|
hasInfo = input(false, /* @ts-ignore */
|
|
12211
12211
|
...(ngDevMode ? [{ debugName: "hasInfo" }] : /* istanbul ignore next */ []));
|
|
12212
|
+
newLabel = input('Nuevo', /* @ts-ignore */
|
|
12213
|
+
...(ngDevMode ? [{ debugName: "newLabel" }] : /* istanbul ignore next */ []));
|
|
12212
12214
|
searchPlaceholder = input('Search', /* @ts-ignore */
|
|
12213
12215
|
...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
|
|
12214
12216
|
allColumns = input([], /* @ts-ignore */
|
|
@@ -12233,6 +12235,11 @@ class NeuralDataTableComponent {
|
|
|
12233
12235
|
onRefreshClick = new EventEmitter();
|
|
12234
12236
|
onViewChange = new EventEmitter();
|
|
12235
12237
|
onFilterClick = new EventEmitter();
|
|
12238
|
+
onSortChangeClick = new EventEmitter();
|
|
12239
|
+
onMoreClick = new EventEmitter();
|
|
12240
|
+
onImportClick = new EventEmitter();
|
|
12241
|
+
onExportClick = new EventEmitter();
|
|
12242
|
+
onNewClick = new EventEmitter();
|
|
12236
12243
|
cellTemplate;
|
|
12237
12244
|
isPreferencesOpen = signal(false, /* @ts-ignore */
|
|
12238
12245
|
...(ngDevMode ? [{ debugName: "isPreferencesOpen" }] : /* istanbul ignore next */ []));
|
|
@@ -12264,62 +12271,78 @@ class NeuralDataTableComponent {
|
|
|
12264
12271
|
this.sortChange.emit(key);
|
|
12265
12272
|
}
|
|
12266
12273
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NeuralDataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12267
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: NeuralDataTableComponent, isStandalone: true, selector: "neural-data-table", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, hasInfo: { classPropertyName: "hasInfo", publicName: "hasInfo", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, allColumns: { classPropertyName: "allColumns", publicName: "allColumns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowKey: { classPropertyName: "rowKey", publicName: "rowKey", isSignal: true, isRequired: true, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, totalPages: { classPropertyName: "totalPages", publicName: "totalPages", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTitle: { classPropertyName: "emptyStateTitle", publicName: "emptyStateTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyStateDesc: { classPropertyName: "emptyStateDesc", publicName: "emptyStateDesc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSearch: "onSearch", onPageChange: "onPageChange", sortChange: "sortChange", onInfoClick: "onInfoClick", onRefreshClick: "onRefreshClick", onViewChange: "onViewChange", onFilterClick: "onFilterClick" }, queries: [{ propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }], ngImport: i0, template: `
|
|
12274
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: NeuralDataTableComponent, isStandalone: true, selector: "neural-data-table", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, hasInfo: { classPropertyName: "hasInfo", publicName: "hasInfo", isSignal: true, isRequired: false, transformFunction: null }, newLabel: { classPropertyName: "newLabel", publicName: "newLabel", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, allColumns: { classPropertyName: "allColumns", publicName: "allColumns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowKey: { classPropertyName: "rowKey", publicName: "rowKey", isSignal: true, isRequired: true, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, totalPages: { classPropertyName: "totalPages", publicName: "totalPages", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTitle: { classPropertyName: "emptyStateTitle", publicName: "emptyStateTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyStateDesc: { classPropertyName: "emptyStateDesc", publicName: "emptyStateDesc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSearch: "onSearch", onPageChange: "onPageChange", sortChange: "sortChange", onInfoClick: "onInfoClick", onRefreshClick: "onRefreshClick", onViewChange: "onViewChange", onFilterClick: "onFilterClick", onSortChangeClick: "onSortChangeClick", onMoreClick: "onMoreClick", onImportClick: "onImportClick", onExportClick: "onExportClick", onNewClick: "onNewClick" }, queries: [{ propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }], ngImport: i0, template: `
|
|
12268
12275
|
<div class="flex flex-col w-full h-full bg-white rounded-md border border-outline-gray-2 shadow-sm overflow-hidden">
|
|
12269
12276
|
|
|
12270
12277
|
<!-- Top Header Area -->
|
|
12271
|
-
<div class="flex items-center justify-between px-4 py-
|
|
12278
|
+
<div class="flex items-center justify-between px-4 py-2 border-b border-outline-gray-2 bg-white">
|
|
12272
12279
|
<!-- Left: Title & Info -->
|
|
12273
12280
|
<div class="flex items-center gap-3">
|
|
12274
|
-
<h2 class="text-[
|
|
12281
|
+
<h2 class="text-[13px] font-semibold text-ink-gray-9">{{ title() }}</h2>
|
|
12275
12282
|
@if (count() !== undefined) {
|
|
12276
|
-
<span class="text-[
|
|
12283
|
+
<span class="text-[11px] font-medium text-ink-gray-5 px-1.5 py-0.5 rounded-full bg-surface-gray-2">{{ count() }}</span>
|
|
12277
12284
|
}
|
|
12278
12285
|
@if (hasInfo()) {
|
|
12279
|
-
<button class="text-[
|
|
12286
|
+
<button class="text-[11px] font-medium text-blue-600 hover:underline cursor-pointer flex items-center gap-1" (click)="onInfoClick.emit()">
|
|
12280
12287
|
Información
|
|
12281
12288
|
</button>
|
|
12282
12289
|
}
|
|
12283
12290
|
</div>
|
|
12284
12291
|
|
|
12285
12292
|
<!-- Right: Actions Toolbar -->
|
|
12286
|
-
<div class="flex items-center gap-
|
|
12293
|
+
<div class="flex items-center gap-1">
|
|
12287
12294
|
|
|
12288
|
-
<!-- Built-in Actions Group -->
|
|
12289
|
-
<div class="flex items-center
|
|
12290
|
-
<neural-button variant="ghost" size="sm" icon="lucide-list" [iconLeft]="true" class="!px-
|
|
12291
|
-
<
|
|
12292
|
-
<neural-button variant="ghost" size="sm" icon="lucide-
|
|
12293
|
-
<div class="w-px h-4 bg-outline-gray-3 mx-0.5"></div>
|
|
12294
|
-
<neural-button variant="ghost" size="sm" icon="lucide-arrow-up-down" [iconLeft]="true" class="!px-2 !text-[13px] !text-ink-gray-7 hover:!text-ink-gray-9" title="Orden">Orden</neural-button>
|
|
12295
|
+
<!-- Built-in Actions Group (Clean, no background) -->
|
|
12296
|
+
<div class="flex items-center gap-0.5">
|
|
12297
|
+
<neural-button variant="ghost" size="sm" icon="lucide-list" [iconLeft]="true" class="!px-1.5 !text-[12px] !font-medium !text-ink-gray-6 hover:!text-ink-gray-9" (click)="onViewChange.emit('report')">Vista</neural-button>
|
|
12298
|
+
<neural-button variant="ghost" size="sm" icon="lucide-filter" [iconLeft]="true" class="!px-1.5 !text-[12px] !font-medium !text-ink-gray-6 hover:!text-ink-gray-9" (click)="onFilterClick.emit()">Filtrar</neural-button>
|
|
12299
|
+
<neural-button variant="ghost" size="sm" icon="lucide-arrow-up-down" [iconLeft]="true" class="!px-1.5 !text-[12px] !font-medium !text-ink-gray-6 hover:!text-ink-gray-9" (click)="onSortChangeClick.emit()">Orden</neural-button>
|
|
12295
12300
|
</div>
|
|
12296
12301
|
|
|
12297
|
-
<div class="
|
|
12298
|
-
|
|
12299
|
-
|
|
12302
|
+
<div class="w-px h-3.5 bg-outline-gray-2 mx-1.5"></div>
|
|
12303
|
+
|
|
12304
|
+
<div class="flex items-center gap-0.5">
|
|
12305
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Actualizar" (click)="onRefreshClick.emit()">
|
|
12306
|
+
<i class="lucide-refresh-cw size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12307
|
+
</button>
|
|
12308
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Importar" (click)="onImportClick.emit()">
|
|
12309
|
+
<i class="lucide-upload size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12310
|
+
</button>
|
|
12311
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Exportar" (click)="onExportClick.emit()">
|
|
12312
|
+
<i class="lucide-download size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12300
12313
|
</button>
|
|
12301
|
-
<button class="flex items-center justify-center size-
|
|
12302
|
-
<i class="lucide-more-horizontal size-
|
|
12314
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Más acciones" (click)="onMoreClick.emit()">
|
|
12315
|
+
<i class="lucide-more-horizontal size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12303
12316
|
</button>
|
|
12304
12317
|
</div>
|
|
12305
12318
|
|
|
12306
|
-
<div class="w-px h-
|
|
12319
|
+
<div class="w-px h-3.5 bg-outline-gray-2 mx-1.5"></div>
|
|
12307
12320
|
|
|
12308
|
-
<!-- External Actions
|
|
12321
|
+
<!-- External Actions -->
|
|
12309
12322
|
<ng-content select="[header-actions]"></ng-content>
|
|
12323
|
+
|
|
12324
|
+
<!-- + Nuevo Button -->
|
|
12325
|
+
<neural-button variant="solid" theme="blue" size="sm" icon="lucide-plus" [iconLeft]="true" class="!px-2.5 !text-[12px]" (click)="onNewClick.emit()">
|
|
12326
|
+
{{ newLabel() }}
|
|
12327
|
+
</neural-button>
|
|
12310
12328
|
</div>
|
|
12311
12329
|
</div>
|
|
12312
12330
|
|
|
12313
12331
|
<!-- Search Area -->
|
|
12314
|
-
<div class="px-4 py-
|
|
12332
|
+
<div class="flex items-center justify-between px-4 py-1.5 border-b border-outline-gray-1 bg-surface-base">
|
|
12315
12333
|
<div class="w-full max-w-sm">
|
|
12316
12334
|
<neural-text-input
|
|
12317
12335
|
[placeholder]="searchPlaceholder()"
|
|
12318
12336
|
icon="lucide-search"
|
|
12319
|
-
size="
|
|
12337
|
+
size="xs"
|
|
12320
12338
|
(valueModelChange)="onSearch.emit($event)"
|
|
12321
12339
|
></neural-text-input>
|
|
12322
12340
|
</div>
|
|
12341
|
+
|
|
12342
|
+
<!-- Preferences / Columns Dialog Trigger -->
|
|
12343
|
+
<button class="flex items-center justify-center size-6 rounded-md bg-transparent hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" (click)="isPreferencesOpen.set(true)" title="Configurar columnas">
|
|
12344
|
+
<i class="lucide-settings size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12345
|
+
</button>
|
|
12323
12346
|
</div>
|
|
12324
12347
|
|
|
12325
12348
|
<!-- Table Content -->
|
|
@@ -12329,13 +12352,13 @@ class NeuralDataTableComponent {
|
|
|
12329
12352
|
<tr class="border-b border-outline-gray-2 bg-white">
|
|
12330
12353
|
@for (col of visibleColumns(); track col.key) {
|
|
12331
12354
|
<th
|
|
12332
|
-
class="px-4 py-
|
|
12355
|
+
class="px-4 py-2 text-[11px] font-medium text-ink-gray-6 truncate border-r border-outline-gray-2 last:border-r-0"
|
|
12333
12356
|
[style.width]="col.width || 'auto'"
|
|
12334
12357
|
>
|
|
12335
12358
|
<div class="flex items-center justify-between group cursor-pointer hover:text-ink-gray-9" (click)="col.sortable ? onSort(col.key) : null">
|
|
12336
12359
|
<span class="truncate">{{ col.label }}</span>
|
|
12337
12360
|
@if (col.sortable) {
|
|
12338
|
-
<i class="lucide-caret-down size-3
|
|
12361
|
+
<i class="lucide-caret-down size-3 text-ink-gray-4 opacity-0 group-hover:opacity-100 transition-opacity"></i>
|
|
12339
12362
|
}
|
|
12340
12363
|
</div>
|
|
12341
12364
|
</th>
|
|
@@ -12348,7 +12371,7 @@ class NeuralDataTableComponent {
|
|
|
12348
12371
|
<tr class="border-b border-outline-gray-1 hover:bg-surface-gray-1 transition-colors group">
|
|
12349
12372
|
@for (col of visibleColumns(); track col.key) {
|
|
12350
12373
|
<td
|
|
12351
|
-
class="px-4 py-
|
|
12374
|
+
class="px-4 py-2.5 text-[12px] font-medium text-ink-gray-9"
|
|
12352
12375
|
[class.truncate]="!wrapLines()"
|
|
12353
12376
|
[class.whitespace-nowrap]="!wrapLines()"
|
|
12354
12377
|
>
|
|
@@ -12375,38 +12398,31 @@ class NeuralDataTableComponent {
|
|
|
12375
12398
|
</div>
|
|
12376
12399
|
|
|
12377
12400
|
<!-- Footer / Pagination Area -->
|
|
12378
|
-
<div class="flex items-center justify-between px-4 py-
|
|
12401
|
+
<div class="flex items-center justify-between px-4 py-2 border-t border-outline-gray-2 bg-white">
|
|
12379
12402
|
<!-- Left Footer -->
|
|
12380
|
-
<div class="text-[
|
|
12403
|
+
<div class="text-[12px] text-ink-gray-5">
|
|
12381
12404
|
<!-- Espacio para contadores de selección -->
|
|
12382
12405
|
</div>
|
|
12383
12406
|
|
|
12384
12407
|
<!-- Right Footer: Pagination & Settings -->
|
|
12385
12408
|
<div class="flex items-center gap-4">
|
|
12386
|
-
<div class="flex items-center gap-
|
|
12409
|
+
<div class="flex items-center gap-0.5 text-[12px] text-ink-gray-7 font-medium">
|
|
12387
12410
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() === 1" (click)="onPageChange.emit(1)" title="Primera página">
|
|
12388
|
-
<i class="lucide-chevrons-left size-
|
|
12411
|
+
<i class="lucide-chevrons-left size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12389
12412
|
</button>
|
|
12390
12413
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() === 1" (click)="onPageChange.emit(page() - 1)" title="Anterior">
|
|
12391
|
-
<i class="lucide-chevron-left size-
|
|
12414
|
+
<i class="lucide-chevron-left size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12392
12415
|
</button>
|
|
12393
12416
|
|
|
12394
|
-
<span class="px-2
|
|
12417
|
+
<span class="px-2 min-w-[70px] text-center">{{ page() }} <span class="text-ink-gray-4 mx-1">/</span> {{ totalPages() }}</span>
|
|
12395
12418
|
|
|
12396
12419
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() >= totalPages()" (click)="onPageChange.emit(page() + 1)" title="Siguiente">
|
|
12397
|
-
<i class="lucide-chevron-right size-
|
|
12420
|
+
<i class="lucide-chevron-right size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12398
12421
|
</button>
|
|
12399
12422
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() >= totalPages()" (click)="onPageChange.emit(totalPages())" title="Última página">
|
|
12400
|
-
<i class="lucide-chevrons-right size-
|
|
12423
|
+
<i class="lucide-chevrons-right size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12401
12424
|
</button>
|
|
12402
12425
|
</div>
|
|
12403
|
-
|
|
12404
|
-
<div class="w-px h-5 bg-outline-gray-2"></div>
|
|
12405
|
-
|
|
12406
|
-
<!-- Preferences / Columns Dialog Trigger -->
|
|
12407
|
-
<button class="p-1.5 rounded-md border border-outline-gray-2 bg-white hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" (click)="isPreferencesOpen.set(true)" title="Configurar columnas">
|
|
12408
|
-
<i class="lucide-settings size-4"></i>
|
|
12409
|
-
</button>
|
|
12410
12426
|
</div>
|
|
12411
12427
|
</div>
|
|
12412
12428
|
|
|
@@ -12472,58 +12488,74 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
12472
12488
|
<div class="flex flex-col w-full h-full bg-white rounded-md border border-outline-gray-2 shadow-sm overflow-hidden">
|
|
12473
12489
|
|
|
12474
12490
|
<!-- Top Header Area -->
|
|
12475
|
-
<div class="flex items-center justify-between px-4 py-
|
|
12491
|
+
<div class="flex items-center justify-between px-4 py-2 border-b border-outline-gray-2 bg-white">
|
|
12476
12492
|
<!-- Left: Title & Info -->
|
|
12477
12493
|
<div class="flex items-center gap-3">
|
|
12478
|
-
<h2 class="text-[
|
|
12494
|
+
<h2 class="text-[13px] font-semibold text-ink-gray-9">{{ title() }}</h2>
|
|
12479
12495
|
@if (count() !== undefined) {
|
|
12480
|
-
<span class="text-[
|
|
12496
|
+
<span class="text-[11px] font-medium text-ink-gray-5 px-1.5 py-0.5 rounded-full bg-surface-gray-2">{{ count() }}</span>
|
|
12481
12497
|
}
|
|
12482
12498
|
@if (hasInfo()) {
|
|
12483
|
-
<button class="text-[
|
|
12499
|
+
<button class="text-[11px] font-medium text-blue-600 hover:underline cursor-pointer flex items-center gap-1" (click)="onInfoClick.emit()">
|
|
12484
12500
|
Información
|
|
12485
12501
|
</button>
|
|
12486
12502
|
}
|
|
12487
12503
|
</div>
|
|
12488
12504
|
|
|
12489
12505
|
<!-- Right: Actions Toolbar -->
|
|
12490
|
-
<div class="flex items-center gap-
|
|
12506
|
+
<div class="flex items-center gap-1">
|
|
12491
12507
|
|
|
12492
|
-
<!-- Built-in Actions Group -->
|
|
12493
|
-
<div class="flex items-center
|
|
12494
|
-
<neural-button variant="ghost" size="sm" icon="lucide-list" [iconLeft]="true" class="!px-
|
|
12495
|
-
<
|
|
12496
|
-
<neural-button variant="ghost" size="sm" icon="lucide-
|
|
12497
|
-
<div class="w-px h-4 bg-outline-gray-3 mx-0.5"></div>
|
|
12498
|
-
<neural-button variant="ghost" size="sm" icon="lucide-arrow-up-down" [iconLeft]="true" class="!px-2 !text-[13px] !text-ink-gray-7 hover:!text-ink-gray-9" title="Orden">Orden</neural-button>
|
|
12508
|
+
<!-- Built-in Actions Group (Clean, no background) -->
|
|
12509
|
+
<div class="flex items-center gap-0.5">
|
|
12510
|
+
<neural-button variant="ghost" size="sm" icon="lucide-list" [iconLeft]="true" class="!px-1.5 !text-[12px] !font-medium !text-ink-gray-6 hover:!text-ink-gray-9" (click)="onViewChange.emit('report')">Vista</neural-button>
|
|
12511
|
+
<neural-button variant="ghost" size="sm" icon="lucide-filter" [iconLeft]="true" class="!px-1.5 !text-[12px] !font-medium !text-ink-gray-6 hover:!text-ink-gray-9" (click)="onFilterClick.emit()">Filtrar</neural-button>
|
|
12512
|
+
<neural-button variant="ghost" size="sm" icon="lucide-arrow-up-down" [iconLeft]="true" class="!px-1.5 !text-[12px] !font-medium !text-ink-gray-6 hover:!text-ink-gray-9" (click)="onSortChangeClick.emit()">Orden</neural-button>
|
|
12499
12513
|
</div>
|
|
12500
12514
|
|
|
12501
|
-
<div class="
|
|
12502
|
-
|
|
12503
|
-
|
|
12515
|
+
<div class="w-px h-3.5 bg-outline-gray-2 mx-1.5"></div>
|
|
12516
|
+
|
|
12517
|
+
<div class="flex items-center gap-0.5">
|
|
12518
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Actualizar" (click)="onRefreshClick.emit()">
|
|
12519
|
+
<i class="lucide-refresh-cw size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12520
|
+
</button>
|
|
12521
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Importar" (click)="onImportClick.emit()">
|
|
12522
|
+
<i class="lucide-upload size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12504
12523
|
</button>
|
|
12505
|
-
<button class="flex items-center justify-center size-
|
|
12506
|
-
<i class="lucide-
|
|
12524
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Exportar" (click)="onExportClick.emit()">
|
|
12525
|
+
<i class="lucide-download size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12526
|
+
</button>
|
|
12527
|
+
<button class="flex items-center justify-center size-6 rounded-md hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" title="Más acciones" (click)="onMoreClick.emit()">
|
|
12528
|
+
<i class="lucide-more-horizontal size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12507
12529
|
</button>
|
|
12508
12530
|
</div>
|
|
12509
12531
|
|
|
12510
|
-
<div class="w-px h-
|
|
12532
|
+
<div class="w-px h-3.5 bg-outline-gray-2 mx-1.5"></div>
|
|
12511
12533
|
|
|
12512
|
-
<!-- External Actions
|
|
12534
|
+
<!-- External Actions -->
|
|
12513
12535
|
<ng-content select="[header-actions]"></ng-content>
|
|
12536
|
+
|
|
12537
|
+
<!-- + Nuevo Button -->
|
|
12538
|
+
<neural-button variant="solid" theme="blue" size="sm" icon="lucide-plus" [iconLeft]="true" class="!px-2.5 !text-[12px]" (click)="onNewClick.emit()">
|
|
12539
|
+
{{ newLabel() }}
|
|
12540
|
+
</neural-button>
|
|
12514
12541
|
</div>
|
|
12515
12542
|
</div>
|
|
12516
12543
|
|
|
12517
12544
|
<!-- Search Area -->
|
|
12518
|
-
<div class="px-4 py-
|
|
12545
|
+
<div class="flex items-center justify-between px-4 py-1.5 border-b border-outline-gray-1 bg-surface-base">
|
|
12519
12546
|
<div class="w-full max-w-sm">
|
|
12520
12547
|
<neural-text-input
|
|
12521
12548
|
[placeholder]="searchPlaceholder()"
|
|
12522
12549
|
icon="lucide-search"
|
|
12523
|
-
size="
|
|
12550
|
+
size="xs"
|
|
12524
12551
|
(valueModelChange)="onSearch.emit($event)"
|
|
12525
12552
|
></neural-text-input>
|
|
12526
12553
|
</div>
|
|
12554
|
+
|
|
12555
|
+
<!-- Preferences / Columns Dialog Trigger -->
|
|
12556
|
+
<button class="flex items-center justify-center size-6 rounded-md bg-transparent hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" (click)="isPreferencesOpen.set(true)" title="Configurar columnas">
|
|
12557
|
+
<i class="lucide-settings size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12558
|
+
</button>
|
|
12527
12559
|
</div>
|
|
12528
12560
|
|
|
12529
12561
|
<!-- Table Content -->
|
|
@@ -12533,13 +12565,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
12533
12565
|
<tr class="border-b border-outline-gray-2 bg-white">
|
|
12534
12566
|
@for (col of visibleColumns(); track col.key) {
|
|
12535
12567
|
<th
|
|
12536
|
-
class="px-4 py-
|
|
12568
|
+
class="px-4 py-2 text-[11px] font-medium text-ink-gray-6 truncate border-r border-outline-gray-2 last:border-r-0"
|
|
12537
12569
|
[style.width]="col.width || 'auto'"
|
|
12538
12570
|
>
|
|
12539
12571
|
<div class="flex items-center justify-between group cursor-pointer hover:text-ink-gray-9" (click)="col.sortable ? onSort(col.key) : null">
|
|
12540
12572
|
<span class="truncate">{{ col.label }}</span>
|
|
12541
12573
|
@if (col.sortable) {
|
|
12542
|
-
<i class="lucide-caret-down size-3
|
|
12574
|
+
<i class="lucide-caret-down size-3 text-ink-gray-4 opacity-0 group-hover:opacity-100 transition-opacity"></i>
|
|
12543
12575
|
}
|
|
12544
12576
|
</div>
|
|
12545
12577
|
</th>
|
|
@@ -12552,7 +12584,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
12552
12584
|
<tr class="border-b border-outline-gray-1 hover:bg-surface-gray-1 transition-colors group">
|
|
12553
12585
|
@for (col of visibleColumns(); track col.key) {
|
|
12554
12586
|
<td
|
|
12555
|
-
class="px-4 py-
|
|
12587
|
+
class="px-4 py-2.5 text-[12px] font-medium text-ink-gray-9"
|
|
12556
12588
|
[class.truncate]="!wrapLines()"
|
|
12557
12589
|
[class.whitespace-nowrap]="!wrapLines()"
|
|
12558
12590
|
>
|
|
@@ -12579,38 +12611,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
12579
12611
|
</div>
|
|
12580
12612
|
|
|
12581
12613
|
<!-- Footer / Pagination Area -->
|
|
12582
|
-
<div class="flex items-center justify-between px-4 py-
|
|
12614
|
+
<div class="flex items-center justify-between px-4 py-2 border-t border-outline-gray-2 bg-white">
|
|
12583
12615
|
<!-- Left Footer -->
|
|
12584
|
-
<div class="text-[
|
|
12616
|
+
<div class="text-[12px] text-ink-gray-5">
|
|
12585
12617
|
<!-- Espacio para contadores de selección -->
|
|
12586
12618
|
</div>
|
|
12587
12619
|
|
|
12588
12620
|
<!-- Right Footer: Pagination & Settings -->
|
|
12589
12621
|
<div class="flex items-center gap-4">
|
|
12590
|
-
<div class="flex items-center gap-
|
|
12622
|
+
<div class="flex items-center gap-0.5 text-[12px] text-ink-gray-7 font-medium">
|
|
12591
12623
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() === 1" (click)="onPageChange.emit(1)" title="Primera página">
|
|
12592
|
-
<i class="lucide-chevrons-left size-
|
|
12624
|
+
<i class="lucide-chevrons-left size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12593
12625
|
</button>
|
|
12594
12626
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() === 1" (click)="onPageChange.emit(page() - 1)" title="Anterior">
|
|
12595
|
-
<i class="lucide-chevron-left size-
|
|
12627
|
+
<i class="lucide-chevron-left size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12596
12628
|
</button>
|
|
12597
12629
|
|
|
12598
|
-
<span class="px-2
|
|
12630
|
+
<span class="px-2 min-w-[70px] text-center">{{ page() }} <span class="text-ink-gray-4 mx-1">/</span> {{ totalPages() }}</span>
|
|
12599
12631
|
|
|
12600
12632
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() >= totalPages()" (click)="onPageChange.emit(page() + 1)" title="Siguiente">
|
|
12601
|
-
<i class="lucide-chevron-right size-
|
|
12633
|
+
<i class="lucide-chevron-right size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12602
12634
|
</button>
|
|
12603
12635
|
<button class="p-1 hover:bg-surface-gray-2 rounded text-ink-gray-5 hover:text-ink-gray-8 disabled:opacity-30 disabled:hover:bg-transparent" [disabled]="page() >= totalPages()" (click)="onPageChange.emit(totalPages())" title="Última página">
|
|
12604
|
-
<i class="lucide-chevrons-right size-
|
|
12636
|
+
<i class="lucide-chevrons-right size-3.5" style="stroke-width: 1.5px;"></i>
|
|
12605
12637
|
</button>
|
|
12606
12638
|
</div>
|
|
12607
|
-
|
|
12608
|
-
<div class="w-px h-5 bg-outline-gray-2"></div>
|
|
12609
|
-
|
|
12610
|
-
<!-- Preferences / Columns Dialog Trigger -->
|
|
12611
|
-
<button class="p-1.5 rounded-md border border-outline-gray-2 bg-white hover:bg-surface-gray-1 text-ink-gray-6 hover:text-ink-gray-9 transition-colors" (click)="isPreferencesOpen.set(true)" title="Configurar columnas">
|
|
12612
|
-
<i class="lucide-settings size-4"></i>
|
|
12613
|
-
</button>
|
|
12614
12639
|
</div>
|
|
12615
12640
|
</div>
|
|
12616
12641
|
|
|
@@ -12659,7 +12684,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
12659
12684
|
</div>
|
|
12660
12685
|
`
|
|
12661
12686
|
}]
|
|
12662
|
-
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], count: [{ type: i0.Input, args: [{ isSignal: true, alias: "count", required: false }] }], hasInfo: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasInfo", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], allColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "allColumns", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], rowKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowKey", required: true }] }], page: [{ type: i0.Input, args: [{ isSignal: true, alias: "page", required: false }] }], totalPages: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPages", required: false }] }], emptyStateTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyStateTitle", required: false }] }], emptyStateDesc: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyStateDesc", required: false }] }], onSearch: [{
|
|
12687
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], count: [{ type: i0.Input, args: [{ isSignal: true, alias: "count", required: false }] }], hasInfo: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasInfo", required: false }] }], newLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "newLabel", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], allColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "allColumns", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], rowKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowKey", required: true }] }], page: [{ type: i0.Input, args: [{ isSignal: true, alias: "page", required: false }] }], totalPages: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPages", required: false }] }], emptyStateTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyStateTitle", required: false }] }], emptyStateDesc: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyStateDesc", required: false }] }], onSearch: [{
|
|
12663
12688
|
type: Output
|
|
12664
12689
|
}], onPageChange: [{
|
|
12665
12690
|
type: Output
|
|
@@ -12673,6 +12698,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
12673
12698
|
type: Output
|
|
12674
12699
|
}], onFilterClick: [{
|
|
12675
12700
|
type: Output
|
|
12701
|
+
}], onSortChangeClick: [{
|
|
12702
|
+
type: Output
|
|
12703
|
+
}], onMoreClick: [{
|
|
12704
|
+
type: Output
|
|
12705
|
+
}], onImportClick: [{
|
|
12706
|
+
type: Output
|
|
12707
|
+
}], onExportClick: [{
|
|
12708
|
+
type: Output
|
|
12709
|
+
}], onNewClick: [{
|
|
12710
|
+
type: Output
|
|
12676
12711
|
}], cellTemplate: [{
|
|
12677
12712
|
type: ContentChild,
|
|
12678
12713
|
args: ['cellTemplate']
|