angular-tailwind-components 1.2.2 → 1.3.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-tailwind-components",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "files": [
5
5
  "fesm2022",
6
6
  "types",
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnDestroy, ElementRef, AfterViewInit, OnInit, Type, InjectionToken } from '@angular/core';
2
+ import { OnDestroy, TemplateRef, ElementRef, AfterViewInit, OnInit, Signal, Type, InjectionToken } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
 
5
5
  /** Common types used across all components */
@@ -65,6 +65,39 @@ declare class TailwindTooltipDirective implements OnDestroy {
65
65
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TailwindTooltipDirective, "[tooltip]", never, { "text": { "alias": "tooltip"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; }, {}, never, never, true, never>;
66
66
  }
67
67
 
68
+ /**
69
+ * Row definition for `TailwindTable`. Prefer structural syntax on `<tbody>`:
70
+ * `<tbody *tailwindTableRow="let row">...</tbody>` — each rendered fragment is one `<tbody>` per data row.
71
+ *
72
+ * Legacy: `<ng-template tailwindTableRow let-row>` with only `<td>` cells still works.
73
+ */
74
+ declare class TailwindTableRowDirective {
75
+ readonly templateRef: TemplateRef<any>;
76
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TailwindTableRowDirective, never>;
77
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TailwindTableRowDirective, "[tailwindTableRow]", never, {}, {}, never, never, true, never>;
78
+ }
79
+
80
+ /** Host attributes on `<tailwind-table>`; kept in sync for sort-header observers. */
81
+ declare const TW_TABLE_SORT_KEY_ATTR = "data-tw-sort-key";
82
+ declare const TW_TABLE_SORT_DIR_ATTR = "data-tw-sort-dir";
83
+ /**
84
+ * Sortable column header: put on `<th>` (plain header text + directive). Not sortable columns omit this directive.
85
+ * Sorting is handled by the nearest `tailwind-table` host (event delegation); do not pass a table reference.
86
+ */
87
+ declare class TailwindSortHeaderDirective {
88
+ /** Property key on each row used for sorting. */
89
+ readonly sortKey: _angular_core.InputSignal<string>;
90
+ private readonly host;
91
+ private readonly renderer;
92
+ private svg?;
93
+ constructor();
94
+ private createSvg;
95
+ private updateSvg;
96
+ private setPathHidden;
97
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TailwindSortHeaderDirective, never>;
98
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TailwindSortHeaderDirective, "[tailwindSortHeader]", never, { "sortKey": { "alias": "sortKey"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
99
+ }
100
+
68
101
  declare abstract class TailwindComponent {
69
102
  /** Optional ID for the component */
70
103
  readonly id: _angular_core.InputSignal<string | undefined>;
@@ -503,8 +536,6 @@ declare class TailwindAlert extends TailwindComponent {
503
536
  readonly severity: _angular_core.InputSignal<TailwindSeverity>;
504
537
  /** Alert title */
505
538
  readonly title: _angular_core.InputSignal<string>;
506
- /** Alert message */
507
- readonly message: _angular_core.InputSignal<string>;
508
539
  /** Whether the alert can be dismissed */
509
540
  readonly dismissible: _angular_core.InputSignal<boolean>;
510
541
  /** Whether to show a border on the left */
@@ -516,7 +547,7 @@ declare class TailwindAlert extends TailwindComponent {
516
547
  readonly computedClasses: _angular_core.Signal<string>;
517
548
  dismiss(): void;
518
549
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TailwindAlert, never>;
519
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindAlert, "tailwind-alert", never, { "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; }, { "onDismiss": "onDismiss"; }, never, never, true, never>;
550
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindAlert, "tailwind-alert", never, { "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; }, { "onDismiss": "onDismiss"; }, never, ["*"], true, never>;
520
551
  }
521
552
 
522
553
  declare class TailwindSpinner extends TailwindComponent {
@@ -714,9 +745,10 @@ interface TailwindBreadcrumbItem {
714
745
 
715
746
  declare class TailwindBreadcrumb extends TailwindComponent {
716
747
  readonly items: _angular_core.InputSignal<TailwindBreadcrumbItem[]>;
748
+ readonly separator: _angular_core.InputSignal<string>;
717
749
  readonly ariaLabel: _angular_core.InputSignal<string>;
718
750
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TailwindBreadcrumb, never>;
719
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindBreadcrumb, "tailwind-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
751
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindBreadcrumb, "tailwind-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
720
752
  }
721
753
 
722
754
  interface Pagination {
@@ -749,21 +781,21 @@ declare class TailwindTag extends TailwindComponent {
749
781
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindTag, "tailwind-tag", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
750
782
  }
751
783
 
752
- interface TailwindTableColumn<T = any> {
753
- key: string;
754
- label: string;
755
- sortable?: boolean;
756
- width?: string;
757
- align?: 'left' | 'center' | 'right';
784
+ /** Implemented by `TailwindTable`; used for typing when calling `sort()` from TypeScript. */
785
+ interface TailwindTableSortHost {
786
+ sort(key: string): void;
787
+ readonly sortKey: Signal<string>;
788
+ readonly sortDir: Signal<'asc' | 'desc'>;
758
789
  }
759
790
 
760
- declare class TailwindTable extends TailwindComponent {
761
- readonly columns: _angular_core.InputSignal<TailwindTableColumn<any>[]>;
762
- readonly data: _angular_core.InputSignal<Record<string, any>[]>;
791
+ declare class TailwindTable extends TailwindComponent implements TailwindTableSortHost {
792
+ readonly data: _angular_core.InputSignal<Record<string, unknown>[]>;
763
793
  readonly selectable: _angular_core.InputSignal<boolean>;
764
794
  readonly striped: _angular_core.InputSignal<boolean>;
765
795
  readonly loading: _angular_core.InputSignal<boolean>;
766
796
  readonly emptyMessage: _angular_core.InputSignal<string>;
797
+ /** Match your column count so the empty state spans the full table width. */
798
+ readonly emptyColspan: _angular_core.InputSignal<number>;
767
799
  readonly paginated: _angular_core.InputSignal<boolean>;
768
800
  readonly pagination: _angular_core.InputSignal<Pagination | undefined>;
769
801
  readonly onSortChange: _angular_core.OutputEmitterRef<{
@@ -771,17 +803,22 @@ declare class TailwindTable extends TailwindComponent {
771
803
  direction: "asc" | "desc";
772
804
  }>;
773
805
  readonly onSelectionChange: _angular_core.OutputEmitterRef<Set<number>>;
806
+ readonly rowTemplate: _angular_core.Signal<TailwindTableRowDirective>;
807
+ rowContext(row: Record<string, unknown>, index: number): Record<string, unknown>;
774
808
  readonly sortKey: _angular_core.WritableSignal<string>;
775
- readonly sortDir: _angular_core.WritableSignal<"asc" | "desc">;
809
+ readonly sortDir: _angular_core.WritableSignal<"desc" | "asc">;
776
810
  readonly selectedRows: _angular_core.WritableSignal<Set<number>>;
777
811
  readonly currentPage: _angular_core.WritableSignal<number>;
778
812
  constructor();
779
- readonly sortedData: _angular_core.Signal<Record<string, any>[]>;
780
- readonly displayedData: _angular_core.Signal<Record<string, any>[]>;
813
+ readonly sortedData: _angular_core.Signal<Record<string, unknown>[]>;
814
+ readonly displayedData: _angular_core.Signal<Record<string, unknown>[]>;
781
815
  sort(key: string): void;
782
816
  toggleSelection(index: number): void;
817
+ protected onSortZoneClick(ev: Event): void;
818
+ protected onSortZoneKeydown(ev: KeyboardEvent): void;
819
+ private delegateSortFromEvent;
783
820
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TailwindTable, never>;
784
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindTable, "tailwind-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; }, { "onSortChange": "onSortChange"; "onSelectionChange": "onSelectionChange"; }, never, never, true, never>;
821
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindTable, "tailwind-table", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyColspan": { "alias": "emptyColspan"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; }, { "onSortChange": "onSortChange"; "onSelectionChange": "onSelectionChange"; }, ["rowTemplate"], ["thead"], true, never>;
785
822
  }
786
823
 
787
824
  declare class TailwindDatePicker extends TailwindComponent implements ControlValueAccessor {
@@ -1066,10 +1103,14 @@ declare class TailwindToolbar extends TailwindComponent {
1066
1103
  readonly menu: _angular_core.InputSignal<TailwindMenuItem[]>;
1067
1104
  /** Emitted when a non-disabled, non-divider menu entry is activated. */
1068
1105
  readonly onMenuSelect: _angular_core.OutputEmitterRef<TailwindMenuItem>;
1069
- readonly menuContainerClasses: _angular_core.Signal<"min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1" | "min-w-0 flex-1 flex flex-col gap-1 overflow-y-auto min-h-0">;
1070
- readonly menuItemButtonClasses: _angular_core.Signal<"shrink-0 rounded-md px-3 py-1.5 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent" | "w-full text-left rounded-md px-2 py-2 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent">;
1106
+ readonly menuContainerClasses: _angular_core.Signal<"min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1" | "min-w-0 flex-1 flex flex-col gap-1.5 overflow-y-auto min-h-0">;
1107
+ readonly menuItemButtonClasses: _angular_core.Signal<"inline-flex shrink-0 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent" | "inline-flex w-full items-center gap-2 rounded-md px-3 py-3 text-left text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent">;
1071
1108
  readonly rootClasses: _angular_core.Signal<string>;
1072
1109
  selectMenuItem(item: TailwindMenuItem): void;
1110
+ /** True when `label` is a non-empty string after trim (icon-only entries omit or blank `label`). */
1111
+ menuItemHasVisibleLabel(item: TailwindMenuItem): boolean;
1112
+ /** Accessible name when there is no visible label (`value`, trimmed). */
1113
+ menuItemAriaLabel(item: TailwindMenuItem): string | null;
1073
1114
  menuTrackKey(index: number, item: TailwindMenuItem): string;
1074
1115
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TailwindToolbar, never>;
1075
1116
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TailwindToolbar, "tailwind-toolbar", never, { "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "menu": { "alias": "menu"; "required": false; "isSignal": true; }; }, { "onMenuSelect": "onMenuSelect"; }, never, ["[tailwind-toolbar-logo]", "[tailwind-toolbar-end]"], true, never>;
@@ -1216,5 +1257,5 @@ declare class TailwindModalRef<R = any> {
1216
1257
  _getResult(): R | undefined;
1217
1258
  }
1218
1259
 
1219
- export { TAILWIND_COMPONENTS_SIZE, TAILWIND_DATETIME_LANGUAGE, TAILWIND_ICON_SIZE, TAILWIND_MODAL_DATA, TAILWIND_SOLAR_ICON_NAMES, TailwindAccordion, TailwindAccordionItem, TailwindAlert, TailwindBadge, TailwindBreadcrumb, TailwindButton, TailwindCard, TailwindCheckbox, TailwindDatePicker, TailwindDateTimePicker, TailwindDivider, TailwindDrawer, TailwindIcon, TailwindInput, TailwindInputOtp, TailwindMenu, TailwindMessage, TailwindMeter, TailwindModal, TailwindModalRef, TailwindModalService, TailwindNotification, TailwindPagination, TailwindProgressBar, TailwindRadioGroup, TailwindSelect, TailwindSkeleton, TailwindSlider, TailwindSpinner, TailwindStep, TailwindStepper, TailwindTab, TailwindTabGroup, TailwindTable, TailwindTag, TailwindTextarea, TailwindTimePicker, TailwindTitle, TailwindToast, TailwindToastService, TailwindToggle, TailwindToolbar, TailwindTooltip, TailwindTooltipDirective, TailwindUpload };
1220
- export type { Pagination, TailwindBreadcrumbItem, TailwindButtonKind, TailwindColor, TailwindIconSize, TailwindMenuItem, TailwindMeterSegment, TailwindModalConfig, TailwindOption, TailwindOptionGroup, TailwindPosition, TailwindSeverity, TailwindShape, TailwindSize, TailwindSliderValue, TailwindSolarIcon, TailwindTableColumn, TailwindTitleTag, TailwindToastConfig, TailwindToastItem };
1260
+ export { TAILWIND_COMPONENTS_SIZE, TAILWIND_DATETIME_LANGUAGE, TAILWIND_ICON_SIZE, TAILWIND_MODAL_DATA, TAILWIND_SOLAR_ICON_NAMES, TW_TABLE_SORT_DIR_ATTR, TW_TABLE_SORT_KEY_ATTR, TailwindAccordion, TailwindAccordionItem, TailwindAlert, TailwindBadge, TailwindBreadcrumb, TailwindButton, TailwindCard, TailwindCheckbox, TailwindDatePicker, TailwindDateTimePicker, TailwindDivider, TailwindDrawer, TailwindIcon, TailwindInput, TailwindInputOtp, TailwindMenu, TailwindMessage, TailwindMeter, TailwindModal, TailwindModalRef, TailwindModalService, TailwindNotification, TailwindPagination, TailwindProgressBar, TailwindRadioGroup, TailwindSelect, TailwindSkeleton, TailwindSlider, TailwindSortHeaderDirective, TailwindSpinner, TailwindStep, TailwindStepper, TailwindTab, TailwindTabGroup, TailwindTable, TailwindTableRowDirective, TailwindTableRowDirective as TailwindTableRowTemplateDirective, TailwindTag, TailwindTextarea, TailwindTimePicker, TailwindTitle, TailwindToast, TailwindToastService, TailwindToggle, TailwindToolbar, TailwindTooltip, TailwindTooltipDirective, TailwindUpload };
1261
+ export type { Pagination, TailwindBreadcrumbItem, TailwindButtonKind, TailwindColor, TailwindIconSize, TailwindMenuItem, TailwindMeterSegment, TailwindModalConfig, TailwindOption, TailwindOptionGroup, TailwindPosition, TailwindSeverity, TailwindShape, TailwindSize, TailwindSliderValue, TailwindSolarIcon, TailwindTableSortHost, TailwindTitleTag, TailwindToastConfig, TailwindToastItem };