@cdevhub/ngx-tw 0.2.0
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/LICENSE +21 -0
- package/README.md +134 -0
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs +108 -0
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-alert.mjs +240 -0
- package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs +287 -0
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-badge.mjs +332 -0
- package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +452 -0
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-button.mjs +227 -0
- package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +417 -0
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-calendar-testing.mjs +232 -0
- package/fesm2022/cdevhub-ngx-tw-calendar-testing.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs +4482 -0
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-card.mjs +157 -0
- package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs +1454 -0
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +593 -0
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs +228 -0
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +510 -0
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs +1721 -0
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +721 -0
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-core.mjs +861 -0
- package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +1558 -0
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +1833 -0
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs +693 -0
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +331 -0
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +289 -0
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs +572 -0
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +36 -0
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-icon.mjs +278 -0
- package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-input.mjs +355 -0
- package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-item.mjs +241 -0
- package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-menu.mjs +433 -0
- package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs +691 -0
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-popover.mjs +678 -0
- package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +335 -0
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-radio.mjs +708 -0
- package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +319 -0
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-select.mjs +1722 -0
- package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-separator.mjs +115 -0
- package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs +768 -0
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +149 -0
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-slider.mjs +1147 -0
- package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-sort.mjs +346 -0
- package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs +186 -0
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-split.mjs +1082 -0
- package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-stat.mjs +579 -0
- package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs +443 -0
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-switch.mjs +391 -0
- package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +315 -0
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-table.mjs +994 -0
- package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs +508 -0
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs +147 -0
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-theme.mjs +178 -0
- package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +1344 -0
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs +1136 -0
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-toast.mjs +1311 -0
- package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +533 -0
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw.mjs +61 -0
- package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -0
- package/package.json +265 -0
- package/theme/_base.css +394 -0
- package/theme/_dark.css +510 -0
- package/theme/_high-contrast.css +290 -0
- package/theme/_semantic.css +317 -0
- package/theme/_typography.css +9 -0
- package/theme/index.css +54 -0
- package/types/cdevhub-ngx-tw-accordion.d.ts +48 -0
- package/types/cdevhub-ngx-tw-alert.d.ts +67 -0
- package/types/cdevhub-ngx-tw-avatar.d.ts +79 -0
- package/types/cdevhub-ngx-tw-badge.d.ts +94 -0
- package/types/cdevhub-ngx-tw-breadcrumbs.d.ts +227 -0
- package/types/cdevhub-ngx-tw-button.d.ts +74 -0
- package/types/cdevhub-ngx-tw-calendar-luxon.d.ts +200 -0
- package/types/cdevhub-ngx-tw-calendar-testing.d.ts +113 -0
- package/types/cdevhub-ngx-tw-calendar.d.ts +1704 -0
- package/types/cdevhub-ngx-tw-card.d.ts +48 -0
- package/types/cdevhub-ngx-tw-carousel.d.ts +406 -0
- package/types/cdevhub-ngx-tw-checkbox.d.ts +136 -0
- package/types/cdevhub-ngx-tw-code-block.d.ts +93 -0
- package/types/cdevhub-ngx-tw-collapsible.d.ts +151 -0
- package/types/cdevhub-ngx-tw-combobox.d.ts +389 -0
- package/types/cdevhub-ngx-tw-command-palette.d.ts +215 -0
- package/types/cdevhub-ngx-tw-core.d.ts +719 -0
- package/types/cdevhub-ngx-tw-date-picker.d.ts +317 -0
- package/types/cdevhub-ngx-tw-date-range-picker.d.ts +313 -0
- package/types/cdevhub-ngx-tw-dialog.d.ts +303 -0
- package/types/cdevhub-ngx-tw-empty-state.d.ts +104 -0
- package/types/cdevhub-ngx-tw-flip-card.d.ts +95 -0
- package/types/cdevhub-ngx-tw-form-field.d.ts +210 -0
- package/types/cdevhub-ngx-tw-icon-lucide.d.ts +29 -0
- package/types/cdevhub-ngx-tw-icon.d.ts +134 -0
- package/types/cdevhub-ngx-tw-input.d.ts +110 -0
- package/types/cdevhub-ngx-tw-item.d.ts +70 -0
- package/types/cdevhub-ngx-tw-menu.d.ts +99 -0
- package/types/cdevhub-ngx-tw-paginator.d.ts +305 -0
- package/types/cdevhub-ngx-tw-popover.d.ts +157 -0
- package/types/cdevhub-ngx-tw-progress-bar.d.ts +100 -0
- package/types/cdevhub-ngx-tw-radio.d.ts +174 -0
- package/types/cdevhub-ngx-tw-segmented-control.d.ts +66 -0
- package/types/cdevhub-ngx-tw-select.d.ts +384 -0
- package/types/cdevhub-ngx-tw-separator.d.ts +28 -0
- package/types/cdevhub-ngx-tw-sheet.d.ts +335 -0
- package/types/cdevhub-ngx-tw-skeleton.d.ts +52 -0
- package/types/cdevhub-ngx-tw-slider.d.ts +258 -0
- package/types/cdevhub-ngx-tw-sort.d.ts +136 -0
- package/types/cdevhub-ngx-tw-spinner.d.ts +50 -0
- package/types/cdevhub-ngx-tw-split.d.ts +265 -0
- package/types/cdevhub-ngx-tw-stat.d.ts +140 -0
- package/types/cdevhub-ngx-tw-stepper.d.ts +127 -0
- package/types/cdevhub-ngx-tw-switch.d.ts +88 -0
- package/types/cdevhub-ngx-tw-tab-nav.d.ts +107 -0
- package/types/cdevhub-ngx-tw-table.d.ts +479 -0
- package/types/cdevhub-ngx-tw-tabs.d.ts +121 -0
- package/types/cdevhub-ngx-tw-textarea.d.ts +62 -0
- package/types/cdevhub-ngx-tw-theme.d.ts +106 -0
- package/types/cdevhub-ngx-tw-time-picker.d.ts +303 -0
- package/types/cdevhub-ngx-tw-timeline.d.ts +278 -0
- package/types/cdevhub-ngx-tw-toast.d.ts +388 -0
- package/types/cdevhub-ngx-tw-tooltip.d.ts +95 -0
- package/types/cdevhub-ngx-tw.d.ts +49 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import * as i1 from '@angular/cdk/menu';
|
|
3
|
+
import { CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';
|
|
4
|
+
import { TwSize, TwColor } from '@cdevhub/ngx-tw/core';
|
|
5
|
+
|
|
6
|
+
declare class MenuComponent {
|
|
7
|
+
/** Controls item density and padding. Defaults to `'md'`. */
|
|
8
|
+
readonly size: i0.InputSignal<TwSize>;
|
|
9
|
+
/** Accessible label for the menu panel. Use when no visible heading describes the menu (e.g. a kebab-icon trigger). */
|
|
10
|
+
readonly ariaLabel: i0.InputSignal<string | undefined>;
|
|
11
|
+
/** ID of an element that labels the menu panel. Ignored when `ariaLabel` is set. */
|
|
12
|
+
readonly ariaLabelledBy: i0.InputSignal<string | undefined>;
|
|
13
|
+
readonly classes: i0.Signal<string>;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "tw-menu", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenu; inputs: {}; outputs: { "closed": "closed"; }; }]>;
|
|
16
|
+
}
|
|
17
|
+
declare class MenuTriggerDirective {
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
|
|
19
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[twMenuTrigger]", never, {}, {}, never, never, true, [{ directive: typeof i1.CdkMenuTrigger; inputs: { "cdkMenuTriggerFor": "twMenuTrigger"; "cdkMenuPosition": "position"; "cdkMenuTriggerData": "data"; }; outputs: { "cdkMenuOpened": "opened"; "cdkMenuClosed": "closed"; }; }]>;
|
|
20
|
+
}
|
|
21
|
+
declare class ContextMenuTriggerDirective {
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuTriggerDirective, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ContextMenuTriggerDirective, "[twContextMenuTrigger]", never, {}, {}, never, never, true, [{ directive: typeof i1.CdkContextMenuTrigger; inputs: { "cdkContextMenuTriggerFor": "twContextMenuTrigger"; "cdkContextMenuDisabled": "disabled"; "cdkContextMenuPosition": "position"; "cdkContextMenuTriggerData": "data"; }; outputs: { "cdkContextMenuOpened": "opened"; "cdkContextMenuClosed": "closed"; }; }]>;
|
|
24
|
+
}
|
|
25
|
+
declare class MenuItemDirective {
|
|
26
|
+
/**
|
|
27
|
+
* Semantic role tint applied to the item. Use `'error'` for destructive actions.
|
|
28
|
+
* Defaults to `undefined` — no role tint is applied and the item inherits the
|
|
29
|
+
* base `text-fg` styling at full prominence; `'neutral'` (the explicit muted
|
|
30
|
+
* variant) is a distinct value with `text-fg-muted` + `bg-surface-muted` hovers.
|
|
31
|
+
*/
|
|
32
|
+
readonly color: i0.InputSignal<TwColor | undefined>;
|
|
33
|
+
/** Whether this item is disabled. Defaults to `false`. */
|
|
34
|
+
readonly disabled: i0.InputSignal<boolean>;
|
|
35
|
+
private readonly menu;
|
|
36
|
+
private readonly cdkItem;
|
|
37
|
+
constructor();
|
|
38
|
+
readonly classes: i0.Signal<string>;
|
|
39
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemDirective, never>;
|
|
40
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuItemDirective, "[twMenuItem]", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.CdkMenuItem; inputs: {}; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
|
|
41
|
+
}
|
|
42
|
+
declare class MenuItemCheckboxComponent {
|
|
43
|
+
/** Whether this item is disabled. Defaults to `false`. */
|
|
44
|
+
readonly disabled: i0.InputSignal<boolean>;
|
|
45
|
+
/** Fires when the item is activated, carrying the new `checked` value after CDK toggles it. */
|
|
46
|
+
readonly checkedChange: i0.OutputEmitterRef<boolean>;
|
|
47
|
+
protected readonly cdkCheckbox: CdkMenuItemCheckbox;
|
|
48
|
+
private readonly menu;
|
|
49
|
+
private readonly resolvedSize;
|
|
50
|
+
constructor();
|
|
51
|
+
readonly classes: i0.Signal<string>;
|
|
52
|
+
readonly indicatorClasses: i0.Signal<string>;
|
|
53
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemCheckboxComponent, never>;
|
|
54
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemCheckboxComponent, "[twMenuItemCheckbox]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; }, never, ["*"], true, [{ directive: typeof i1.CdkMenuItemCheckbox; inputs: { "cdkMenuItemChecked": "checked"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
|
|
55
|
+
}
|
|
56
|
+
declare class MenuItemRadioComponent {
|
|
57
|
+
/** Whether this item is disabled. Defaults to `false`. */
|
|
58
|
+
readonly disabled: i0.InputSignal<boolean>;
|
|
59
|
+
/** Fires when the item is activated, carrying the new `checked` value after CDK selects it. */
|
|
60
|
+
readonly checkedChange: i0.OutputEmitterRef<boolean>;
|
|
61
|
+
protected readonly cdkRadio: CdkMenuItemRadio;
|
|
62
|
+
private readonly menu;
|
|
63
|
+
private readonly resolvedSize;
|
|
64
|
+
constructor();
|
|
65
|
+
readonly classes: i0.Signal<string>;
|
|
66
|
+
readonly indicatorClasses: i0.Signal<string>;
|
|
67
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemRadioComponent, never>;
|
|
68
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemRadioComponent, "[twMenuItemRadio]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; }, never, ["*"], true, [{ directive: typeof i1.CdkMenuItemRadio; inputs: { "cdkMenuItemChecked": "checked"; }; outputs: { "cdkMenuItemTriggered": "triggered"; }; }]>;
|
|
69
|
+
}
|
|
70
|
+
declare class MenuGroupDirective {
|
|
71
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuGroupDirective, never>;
|
|
72
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuGroupDirective, "[twMenuGroup]", never, {}, {}, never, never, true, [{ directive: typeof i1.CdkMenuGroup; inputs: {}; outputs: {}; }]>;
|
|
73
|
+
}
|
|
74
|
+
/** Styles a leading icon inside a menu item. */
|
|
75
|
+
declare class MenuItemIconDirective {
|
|
76
|
+
private readonly menu;
|
|
77
|
+
readonly classes: i0.Signal<string>;
|
|
78
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemIconDirective, never>;
|
|
79
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuItemIconDirective, "[twMenuItemIcon]", never, {}, {}, never, never, true, never>;
|
|
80
|
+
}
|
|
81
|
+
/** Styles secondary description text inside a menu item. */
|
|
82
|
+
declare class MenuItemDescriptionDirective {
|
|
83
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemDescriptionDirective, never>;
|
|
84
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuItemDescriptionDirective, "[twMenuItemDescription]", never, {}, {}, never, never, true, never>;
|
|
85
|
+
}
|
|
86
|
+
/** Right-aligns and mutes keyboard shortcut hint text. */
|
|
87
|
+
declare class MenuItemShortcutDirective {
|
|
88
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemShortcutDirective, never>;
|
|
89
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuItemShortcutDirective, "[twMenuItemShortcut]", never, {}, {}, never, never, true, never>;
|
|
90
|
+
}
|
|
91
|
+
/** Styles the trailing chevron for submenu triggers. */
|
|
92
|
+
declare class MenuItemSubmenuIndicatorDirective {
|
|
93
|
+
private readonly menu;
|
|
94
|
+
readonly classes: i0.Signal<string>;
|
|
95
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemSubmenuIndicatorDirective, never>;
|
|
96
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuItemSubmenuIndicatorDirective, "[twMenuItemSubmenuIcon]", never, {}, {}, never, never, true, never>;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { ContextMenuTriggerDirective, MenuComponent, MenuGroupDirective, MenuItemCheckboxComponent, MenuItemDescriptionDirective, MenuItemDirective, MenuItemIconDirective, MenuItemRadioComponent, MenuItemShortcutDirective, MenuItemSubmenuIndicatorDirective, MenuTriggerDirective };
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { TemplateRef, ElementRef } from '@angular/core';
|
|
3
|
+
import { FocusableOption } from '@angular/cdk/a11y';
|
|
4
|
+
import { TwSize, TwColor } from '@cdevhub/ngx-tw/core';
|
|
5
|
+
|
|
6
|
+
/** Rendering type. `'basic'` shows prev/next + page info only. `'numbered'` shows page buttons with ellipsis range. */
|
|
7
|
+
type TwPaginatorType = 'basic' | 'numbered';
|
|
8
|
+
/** Layout density. `'compact'` stacks regions left-to-right. `'spread'` distributes regions across the full container width. */
|
|
9
|
+
type TwPaginatorLayout = 'compact' | 'spread';
|
|
10
|
+
/** Responsive mode. `'auto'` collapses numbered pages to basic visuals on narrow containers via CSS container queries. `'off'` disables collapsing. */
|
|
11
|
+
type TwPaginatorResponsive = 'auto' | 'off';
|
|
12
|
+
/** Named slot accepted by `*twPaginatorLabel`. */
|
|
13
|
+
type TwPaginatorLabelSlot = 'pageInfo' | 'previous' | 'next' | 'first' | 'last' | 'pageSizeLabel';
|
|
14
|
+
/** String labels used throughout the paginator. All are optional on the `labels` input — unset keys fall back to the English defaults. */
|
|
15
|
+
interface TwPaginatorLabels {
|
|
16
|
+
/** Accessible name for the `<nav>` landmark. */
|
|
17
|
+
ariaLabel: string;
|
|
18
|
+
/** Label on the Previous button. */
|
|
19
|
+
previous: string;
|
|
20
|
+
/** Label on the Next button. */
|
|
21
|
+
next: string;
|
|
22
|
+
/** Label on the First-page button. */
|
|
23
|
+
first: string;
|
|
24
|
+
/** Label on the Last-page button. */
|
|
25
|
+
last: string;
|
|
26
|
+
/** Visible label before the current-page indicator. Used as `"{pageInfo} {page}{pageInfoSeparator}{totalPages}"`. */
|
|
27
|
+
pageInfo: string;
|
|
28
|
+
/** Text that joins the current page and total. */
|
|
29
|
+
pageInfoSeparator: string;
|
|
30
|
+
/** Range-style page info template. Variables: `{start}`, `{end}`, `{total}`. */
|
|
31
|
+
pageRange: string;
|
|
32
|
+
/** Visible label next to the page-size selector. */
|
|
33
|
+
pageSizeLabel: string;
|
|
34
|
+
/** `LiveAnnouncer` template used on every page change. Variables: `{page}`, `{totalPages}`, `{start}`, `{end}`, `{total}`. */
|
|
35
|
+
announcement: string;
|
|
36
|
+
/** Accessible label per numbered page button. Variable: `{page}`. */
|
|
37
|
+
pageButtonAriaLabel: string;
|
|
38
|
+
/** Accessible label for the current numbered page button. Variable: `{page}`. */
|
|
39
|
+
currentPageAriaLabel: string;
|
|
40
|
+
/** Accessible label applied to ellipsis items. */
|
|
41
|
+
ellipsis: string;
|
|
42
|
+
/** Rendered when `hideOnEmpty` is `false` and `totalItems === 0`. */
|
|
43
|
+
empty: string;
|
|
44
|
+
}
|
|
45
|
+
/** Emitted by `pageChange`. */
|
|
46
|
+
interface TwPaginatorPageChangeEvent {
|
|
47
|
+
/** The new 1-based page. */
|
|
48
|
+
page: number;
|
|
49
|
+
/** The new items-per-page. */
|
|
50
|
+
pageSize: number;
|
|
51
|
+
/** The previous 1-based page. */
|
|
52
|
+
previousPage: number;
|
|
53
|
+
/** The previous items-per-page. */
|
|
54
|
+
previousPageSize: number;
|
|
55
|
+
/** Total number of items. */
|
|
56
|
+
totalItems: number;
|
|
57
|
+
/** Total number of pages given the current `totalItems` and `pageSize`. */
|
|
58
|
+
totalPages: number;
|
|
59
|
+
/** 1-based index of the first item on the new page (inclusive). */
|
|
60
|
+
start: number;
|
|
61
|
+
/** 1-based index of the last item on the new page (inclusive). */
|
|
62
|
+
end: number;
|
|
63
|
+
/** What triggered the change. */
|
|
64
|
+
source: 'click' | 'keyboard' | 'pageSizeChange' | 'programmatic';
|
|
65
|
+
}
|
|
66
|
+
/** Template context provided to every `*twPaginatorLabel` and `*twPaginatorEmpty` template. */
|
|
67
|
+
interface TwPaginatorLabelContext {
|
|
68
|
+
/** 1-based current page. */
|
|
69
|
+
page: number;
|
|
70
|
+
/** Total pages. */
|
|
71
|
+
totalPages: number;
|
|
72
|
+
/** 1-based index of the first item on the current page (inclusive). */
|
|
73
|
+
start: number;
|
|
74
|
+
/** 1-based index of the last item on the current page (inclusive). */
|
|
75
|
+
end: number;
|
|
76
|
+
/** Total number of items. */
|
|
77
|
+
totalItems: number;
|
|
78
|
+
/** Current items per page. */
|
|
79
|
+
pageSize: number;
|
|
80
|
+
/** Whether the paginator is globally disabled. */
|
|
81
|
+
disabled: boolean;
|
|
82
|
+
}
|
|
83
|
+
/** Template context provided to `*twPaginatorPageSizeSelector`. */
|
|
84
|
+
interface TwPaginatorPageSizeSelectorContext {
|
|
85
|
+
/** Current page size. */
|
|
86
|
+
pageSize: number;
|
|
87
|
+
/** Available page-size options. */
|
|
88
|
+
options: readonly number[];
|
|
89
|
+
/** Updates the page size and re-anchors the current page to keep the same first visible item. */
|
|
90
|
+
setPageSize: (size: number) => void;
|
|
91
|
+
}
|
|
92
|
+
type PaginationRangeItem = number | 'ellipsis-left' | 'ellipsis-right';
|
|
93
|
+
type PageChangeSource = TwPaginatorPageChangeEvent['source'];
|
|
94
|
+
/**
|
|
95
|
+
* Structural directive on an `<ng-template>` that replaces a specific label slot.
|
|
96
|
+
* Usage: `<ng-template twPaginatorLabel slot="pageInfo" let-ctx> … </ng-template>`.
|
|
97
|
+
*/
|
|
98
|
+
declare class PaginatorLabelDirective {
|
|
99
|
+
/** The label slot this template overrides. */
|
|
100
|
+
readonly slot: _angular_core.InputSignal<TwPaginatorLabelSlot>;
|
|
101
|
+
/** @internal */
|
|
102
|
+
readonly templateRef: TemplateRef<any>;
|
|
103
|
+
/** @internal */
|
|
104
|
+
static ngTemplateContextGuard(_dir: PaginatorLabelDirective, _ctx: unknown): _ctx is {
|
|
105
|
+
$implicit: TwPaginatorLabelContext;
|
|
106
|
+
};
|
|
107
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginatorLabelDirective, never>;
|
|
108
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PaginatorLabelDirective, "ng-template[twPaginatorLabel]", never, { "slot": { "alias": "slot"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Structural directive on an `<ng-template>` that renders when `totalItems === 0`
|
|
112
|
+
* and `hideOnEmpty` is `false`. When absent, `labels.empty` renders as fallback.
|
|
113
|
+
*/
|
|
114
|
+
declare class PaginatorEmptyDirective {
|
|
115
|
+
/** @internal */
|
|
116
|
+
readonly templateRef: TemplateRef<any>;
|
|
117
|
+
/** @internal */
|
|
118
|
+
static ngTemplateContextGuard(_dir: PaginatorEmptyDirective, _ctx: unknown): _ctx is {
|
|
119
|
+
$implicit: TwPaginatorLabelContext;
|
|
120
|
+
};
|
|
121
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginatorEmptyDirective, never>;
|
|
122
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PaginatorEmptyDirective, "ng-template[twPaginatorEmpty]", never, {}, {}, never, never, true, never>;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Structural directive on an `<ng-template>` that replaces the default page-size
|
|
126
|
+
* selector UI entirely. Context `$implicit` exposes `{ pageSize, options, setPageSize }`.
|
|
127
|
+
*/
|
|
128
|
+
declare class PaginatorPageSizeSelectorDirective {
|
|
129
|
+
/** @internal */
|
|
130
|
+
readonly templateRef: TemplateRef<any>;
|
|
131
|
+
/** @internal */
|
|
132
|
+
static ngTemplateContextGuard(_dir: PaginatorPageSizeSelectorDirective, _ctx: unknown): _ctx is {
|
|
133
|
+
$implicit: TwPaginatorPageSizeSelectorContext;
|
|
134
|
+
};
|
|
135
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginatorPageSizeSelectorDirective, never>;
|
|
136
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PaginatorPageSizeSelectorDirective, "ng-template[twPaginatorPageSizeSelector]", never, {}, {}, never, never, true, never>;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* @internal Wraps every nav-group focusable (first/prev/page/next/last) as a CDK
|
|
140
|
+
* `FocusableOption` so `FocusKeyManager` can drive roving focus across the group.
|
|
141
|
+
* Applied via attribute selector on the existing `data-tw-paginator-focusable`
|
|
142
|
+
* marker so the spec's button queries continue to match.
|
|
143
|
+
*/
|
|
144
|
+
declare class PaginatorFocusableDirective implements FocusableOption {
|
|
145
|
+
readonly elementRef: ElementRef<any>;
|
|
146
|
+
/** When true, the element is skipped by `FocusKeyManager` roving focus. */
|
|
147
|
+
readonly isDisabled: _angular_core.InputSignal<boolean>;
|
|
148
|
+
focus(): void;
|
|
149
|
+
/**
|
|
150
|
+
* `FocusableOption.disabled` resolver. NOTE: returning the signal function
|
|
151
|
+
* itself would always be truthy, so `FocusKeyManager` would skip every
|
|
152
|
+
* element. Call the signal here so the manager sees the actual value.
|
|
153
|
+
*/
|
|
154
|
+
get disabled(): boolean;
|
|
155
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginatorFocusableDirective, never>;
|
|
156
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PaginatorFocusableDirective, "[data-tw-paginator-focusable]", never, { "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
157
|
+
}
|
|
158
|
+
declare class PaginatorComponent {
|
|
159
|
+
/** Total number of items across all pages. Defaults to `0`. */
|
|
160
|
+
readonly totalItems: _angular_core.InputSignal<number>;
|
|
161
|
+
/** Items per page. Two-way bindable via `[(pageSize)]`. Defaults to `10`. */
|
|
162
|
+
readonly pageSize: _angular_core.ModelSignal<number>;
|
|
163
|
+
/** 1-based current page. Two-way bindable via `[(page)]`. Clamped internally. Defaults to `1`. */
|
|
164
|
+
readonly page: _angular_core.ModelSignal<number>;
|
|
165
|
+
/** Rendering type. Defaults to `'numbered'`. */
|
|
166
|
+
readonly type: _angular_core.InputSignal<TwPaginatorType>;
|
|
167
|
+
/** Layout density. Defaults to `'compact'`. */
|
|
168
|
+
readonly layout: _angular_core.InputSignal<TwPaginatorLayout>;
|
|
169
|
+
/** Controls padding, font size, and icon size. Defaults to `'md'`. */
|
|
170
|
+
readonly size: _angular_core.InputSignal<TwSize>;
|
|
171
|
+
/** Semantic color used for the active page indicator. Defaults to `'primary'`. */
|
|
172
|
+
readonly color: _angular_core.InputSignal<TwColor>;
|
|
173
|
+
/** How many sibling pages to show on each side of the current page. Defaults to `1`. */
|
|
174
|
+
readonly siblingCount: _angular_core.InputSignal<number>;
|
|
175
|
+
/** How many pages to always show at the start and end boundaries. Defaults to `1`. */
|
|
176
|
+
readonly boundaryCount: _angular_core.InputSignal<number>;
|
|
177
|
+
/** When true, renders jump-to-first and jump-to-last buttons. Defaults to `true`. */
|
|
178
|
+
readonly showFirstLastButtons: _angular_core.InputSignal<boolean>;
|
|
179
|
+
/** When true, renders the page-size selector region. Defaults to `false`. */
|
|
180
|
+
readonly showPageSizeSelector: _angular_core.InputSignal<boolean>;
|
|
181
|
+
/** Options for the default page-size selector. Ignored when `*twPaginatorPageSizeSelector` is projected. Defaults to `[10, 25, 50, 100]`. */
|
|
182
|
+
readonly pageSizeOptions: _angular_core.InputSignal<readonly number[]>;
|
|
183
|
+
/** When true, renders the page-info text region. Defaults to `true`. */
|
|
184
|
+
readonly showPageInfo: _angular_core.InputSignal<boolean>;
|
|
185
|
+
/** When true, renders nothing when `totalItems === 0`. Defaults to `true`. */
|
|
186
|
+
readonly hideOnEmpty: _angular_core.InputSignal<boolean>;
|
|
187
|
+
/** When true, renders nothing when `totalPages <= 1`. Defaults to `false`. */
|
|
188
|
+
readonly hideOnSinglePage: _angular_core.InputSignal<boolean>;
|
|
189
|
+
/** Responsive collapse mode. Defaults to `'auto'`. */
|
|
190
|
+
readonly responsive: _angular_core.InputSignal<TwPaginatorResponsive>;
|
|
191
|
+
/** When true, every button is disabled. Defaults to `false`. */
|
|
192
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
193
|
+
/** Partial string labels object for i18n. Unset keys fall back to English defaults. Defaults to `{}`. */
|
|
194
|
+
readonly labels: _angular_core.InputSignal<Partial<TwPaginatorLabels>>;
|
|
195
|
+
/** When provided, buttons render as anchor links using the returned `href`. Defaults to `undefined` (renders as buttons). */
|
|
196
|
+
readonly linkFactory: _angular_core.InputSignal<((page: number) => string) | undefined>;
|
|
197
|
+
/** Overrides `labels.ariaLabel` for the root `<nav>` element. */
|
|
198
|
+
readonly customAriaLabel: _angular_core.InputSignal<string | undefined>;
|
|
199
|
+
/** Fires when `page` or `pageSize` changes. Payload includes derived helpers (`start`, `end`, `totalPages`, `source`). Use `[(page)]` / `[(pageSize)]` for two-way binding; subscribe to this for the rich event payload. */
|
|
200
|
+
readonly paginated: _angular_core.OutputEmitterRef<TwPaginatorPageChangeEvent>;
|
|
201
|
+
/** @internal */
|
|
202
|
+
readonly labelDirectives: _angular_core.Signal<readonly PaginatorLabelDirective[]>;
|
|
203
|
+
/** @internal */
|
|
204
|
+
readonly emptyDirective: _angular_core.Signal<PaginatorEmptyDirective | undefined>;
|
|
205
|
+
/** @internal */
|
|
206
|
+
readonly pageSizeSelectorDirective: _angular_core.Signal<PaginatorPageSizeSelectorDirective | undefined>;
|
|
207
|
+
private readonly _liveAnnouncer;
|
|
208
|
+
private readonly _elementRef;
|
|
209
|
+
/** @internal All nav-group focusables (first/prev/page/next/last) for `FocusKeyManager`. */
|
|
210
|
+
readonly focusableItems: _angular_core.Signal<readonly PaginatorFocusableDirective[]>;
|
|
211
|
+
private readonly _componentId;
|
|
212
|
+
/** @internal */
|
|
213
|
+
readonly pageSizeSelectId: string;
|
|
214
|
+
/** @internal Effective page size, coerced to at least 1. */
|
|
215
|
+
readonly effectivePageSize: _angular_core.Signal<number>;
|
|
216
|
+
/** @internal Total number of pages; always ≥ 1 to keep clamping math well-defined. */
|
|
217
|
+
readonly totalPages: _angular_core.Signal<number>;
|
|
218
|
+
/** @internal Current page clamped into `[1, totalPages]`. */
|
|
219
|
+
readonly clampedPage: _angular_core.Signal<number>;
|
|
220
|
+
/** @internal 1-based start item index on the current page. `0` when empty. */
|
|
221
|
+
readonly startItem: _angular_core.Signal<number>;
|
|
222
|
+
/** @internal 1-based end item index on the current page. `0` when empty. */
|
|
223
|
+
readonly endItem: _angular_core.Signal<number>;
|
|
224
|
+
/** @internal Visible page range for the numbered type. */
|
|
225
|
+
readonly range: _angular_core.Signal<PaginationRangeItem[]>;
|
|
226
|
+
/** @internal Merged labels. */
|
|
227
|
+
readonly resolvedLabels: _angular_core.Signal<TwPaginatorLabels>;
|
|
228
|
+
/** @internal Resolved aria-label for the root. */
|
|
229
|
+
readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
230
|
+
/** @internal `container-name` for the CSS container query (set only when responsive="auto"). */
|
|
231
|
+
readonly containerName: _angular_core.Signal<"paginator" | null>;
|
|
232
|
+
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
233
|
+
readonly isAtFirstPage: _angular_core.Signal<boolean>;
|
|
234
|
+
readonly isAtLastPage: _angular_core.Signal<boolean>;
|
|
235
|
+
/** @internal Target page for the Previous button (clamped to `[1, totalPages]`). */
|
|
236
|
+
readonly previousTarget: _angular_core.Signal<number>;
|
|
237
|
+
/** @internal Target page for the Next button (clamped to `[1, totalPages]`). */
|
|
238
|
+
readonly nextTarget: _angular_core.Signal<number>;
|
|
239
|
+
/** @internal Whether the component should render at all. */
|
|
240
|
+
readonly shouldRender: _angular_core.Signal<boolean>;
|
|
241
|
+
private readonly _variantResult;
|
|
242
|
+
readonly rootClasses: _angular_core.Signal<string>;
|
|
243
|
+
readonly innerClasses: _angular_core.Signal<string>;
|
|
244
|
+
readonly pageSizeGroupClasses: _angular_core.Signal<string>;
|
|
245
|
+
readonly pageSizeLabelClasses: _angular_core.Signal<string>;
|
|
246
|
+
readonly pageSizeSelectClasses: _angular_core.Signal<string>;
|
|
247
|
+
readonly pageInfoClasses: _angular_core.Signal<string>;
|
|
248
|
+
readonly navGroupClasses: _angular_core.Signal<string>;
|
|
249
|
+
readonly pageListClasses: _angular_core.Signal<string>;
|
|
250
|
+
readonly navButtonClasses: _angular_core.Signal<string>;
|
|
251
|
+
readonly ellipsisClasses: _angular_core.Signal<string>;
|
|
252
|
+
readonly emptyStateClasses: _angular_core.Signal<string>;
|
|
253
|
+
readonly iconClasses: _angular_core.Signal<string>;
|
|
254
|
+
/** @internal Applies active-color classes to the current page button. */
|
|
255
|
+
pageButtonClasses(active: boolean): string;
|
|
256
|
+
/** @internal */
|
|
257
|
+
labelTemplateFor(slot: TwPaginatorLabelSlot): TemplateRef<{
|
|
258
|
+
$implicit: TwPaginatorLabelContext;
|
|
259
|
+
}> | null;
|
|
260
|
+
/** @internal Template-context wrapper so projected templates receive `$implicit: TwPaginatorLabelContext`. */
|
|
261
|
+
readonly labelContext: _angular_core.Signal<{
|
|
262
|
+
$implicit: TwPaginatorLabelContext;
|
|
263
|
+
}>;
|
|
264
|
+
/** @internal */
|
|
265
|
+
readonly pageSizeContext: _angular_core.Signal<{
|
|
266
|
+
$implicit: TwPaginatorPageSizeSelectorContext;
|
|
267
|
+
}>;
|
|
268
|
+
/** @internal Default page-info string (type-aware). */
|
|
269
|
+
readonly formattedPageInfo: _angular_core.Signal<string>;
|
|
270
|
+
/** @internal ARIA label for a numbered page button. */
|
|
271
|
+
formatPageButtonLabel(page: number): string;
|
|
272
|
+
/** @internal ARIA label for the current page button. */
|
|
273
|
+
formatCurrentPageLabel(page: number): string;
|
|
274
|
+
/** @internal Returns the anchor href for a page when `linkFactory` is set and the page is navigable. */
|
|
275
|
+
hrefFor(page: number): string | null;
|
|
276
|
+
private _previousPage;
|
|
277
|
+
private _previousPageSize;
|
|
278
|
+
private _pendingSource;
|
|
279
|
+
private _initialized;
|
|
280
|
+
/** @internal */
|
|
281
|
+
private _keyManager;
|
|
282
|
+
constructor();
|
|
283
|
+
/** @internal Navigate to a specific page (click/keyboard handler). */
|
|
284
|
+
goTo(target: number, source: Exclude<PageChangeSource, 'pageSizeChange'>): void;
|
|
285
|
+
/** @internal Click handler for anchor-link mode. Suppresses navigation for disabled targets. */
|
|
286
|
+
onLinkClick(event: MouseEvent, target: number, disabled: boolean, source: Exclude<PageChangeSource, 'pageSizeChange'>): void;
|
|
287
|
+
/** @internal Handler for the default page-size `<select>`. */
|
|
288
|
+
onPageSizeSelectChange(event: Event): void;
|
|
289
|
+
private _setPageSize;
|
|
290
|
+
/**
|
|
291
|
+
* @internal Keyboard navigation inside the nav group. Delegates ArrowLeft /
|
|
292
|
+
* ArrowRight / Home / End to CDK `FocusKeyManager`. The manager skips
|
|
293
|
+
* disabled controls automatically via the `disabled` getter on
|
|
294
|
+
* `PaginatorFocusableDirective`.
|
|
295
|
+
*/
|
|
296
|
+
onKeydown(event: KeyboardEvent): void;
|
|
297
|
+
private _emitChange;
|
|
298
|
+
private _announce;
|
|
299
|
+
private _runDevWarnings;
|
|
300
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginatorComponent, never>;
|
|
301
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginatorComponent, "tw-paginator", ["twPaginator"], { "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "boundaryCount": { "alias": "boundaryCount"; "required": false; "isSignal": true; }; "showFirstLastButtons": { "alias": "showFirstLastButtons"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageInfo": { "alias": "showPageInfo"; "required": false; "isSignal": true; }; "hideOnEmpty": { "alias": "hideOnEmpty"; "required": false; "isSignal": true; }; "hideOnSinglePage": { "alias": "hideOnSinglePage"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "linkFactory": { "alias": "linkFactory"; "required": false; "isSignal": true; }; "customAriaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "pageSize": "pageSizeChange"; "page": "pageChange"; "paginated": "paginated"; }, ["labelDirectives", "emptyDirective", "pageSizeSelectorDirective"], never, true, never>;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export { PaginatorComponent, PaginatorEmptyDirective, PaginatorLabelDirective, PaginatorPageSizeSelectorDirective };
|
|
305
|
+
export type { TwPaginatorLabelContext, TwPaginatorLabelSlot, TwPaginatorLabels, TwPaginatorLayout, TwPaginatorPageChangeEvent, TwPaginatorPageSizeSelectorContext, TwPaginatorResponsive, TwPaginatorType };
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken, TemplateRef, Type, OnInit, OnDestroy } from '@angular/core';
|
|
3
|
+
import { TwSize, TwColor } from '@cdevhub/ngx-tw/core';
|
|
4
|
+
|
|
5
|
+
/** Context object provided to popover template content. */
|
|
6
|
+
interface PopoverTemplateContext<T = unknown> {
|
|
7
|
+
/** The data passed via `twPopoverData` input. */
|
|
8
|
+
$implicit: T;
|
|
9
|
+
/** Closes the popover. */
|
|
10
|
+
close: () => void;
|
|
11
|
+
}
|
|
12
|
+
/** Reference to control the popover from inside component content. */
|
|
13
|
+
interface PopoverRef {
|
|
14
|
+
/** Closes the popover. */
|
|
15
|
+
close(): void;
|
|
16
|
+
/** @internal — used by `PopoverTitleDirective` to register itself with `aria-labelledby`. */
|
|
17
|
+
_addAriaLabelledBy?: (id: string) => void;
|
|
18
|
+
/** @internal — used by `PopoverTitleDirective` to unregister itself. */
|
|
19
|
+
_removeAriaLabelledBy?: (id: string) => void;
|
|
20
|
+
}
|
|
21
|
+
/** Injection token providing arbitrary data to popover component content. */
|
|
22
|
+
declare const POPOVER_DATA: InjectionToken<unknown>;
|
|
23
|
+
/** Injection token providing a `PopoverRef` to popover component content. */
|
|
24
|
+
declare const POPOVER_REF: InjectionToken<PopoverRef>;
|
|
25
|
+
|
|
26
|
+
/** Placement position of the popover relative to its trigger element. */
|
|
27
|
+
type PopoverPosition = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
|
|
28
|
+
/** Scroll strategy for the popover overlay. */
|
|
29
|
+
type PopoverScrollStrategy = 'reposition' | 'close' | 'block' | 'noop';
|
|
30
|
+
/** Backdrop behavior for the popover. */
|
|
31
|
+
type PopoverBackdrop = 'transparent' | 'dimmed' | 'none';
|
|
32
|
+
/** Trigger interaction that opens the popover. */
|
|
33
|
+
type PopoverTrigger = 'click' | 'focus' | 'manual';
|
|
34
|
+
declare class PopoverDirective {
|
|
35
|
+
/** The content to render. An `ng-template` receives context with `$implicit` (data) and `close` (function). A component class receives data and a ref via injection tokens. */
|
|
36
|
+
readonly twPopover: _angular_core.InputSignal<TemplateRef<PopoverTemplateContext<unknown>> | Type<unknown>>;
|
|
37
|
+
/** Preferred placement relative to the trigger. CDK handles fallback when space is insufficient. Defaults to `'bottom'`. */
|
|
38
|
+
readonly twPopoverPosition: _angular_core.InputSignal<PopoverPosition>;
|
|
39
|
+
/** What user interaction opens the popover. `'manual'` means consumers call `open()`/`close()` programmatically. Defaults to `'click'`. */
|
|
40
|
+
readonly twPopoverTriggerOn: _angular_core.InputSignal<PopoverTrigger>;
|
|
41
|
+
/** When true, all trigger interactions are suppressed. Defaults to `false`. */
|
|
42
|
+
readonly twPopoverDisabled: _angular_core.InputSignal<boolean>;
|
|
43
|
+
/** Two-way bindable open state. Setting to `true` opens the popover; the popover sets it to `false` on close. */
|
|
44
|
+
readonly twPopoverOpen: _angular_core.ModelSignal<boolean>;
|
|
45
|
+
/** Controls panel padding using the standard spacing scale. Defaults to `'md'`. */
|
|
46
|
+
readonly twPopoverSize: _angular_core.InputSignal<TwSize>;
|
|
47
|
+
/** Pixel distance between trigger and panel edge. Defaults to `8`. */
|
|
48
|
+
readonly twPopoverOffset: _angular_core.InputSignal<number>;
|
|
49
|
+
/** Whether to render a directional arrow pointing at the trigger. Defaults to `true`. */
|
|
50
|
+
readonly twPopoverArrow: _angular_core.InputSignal<boolean>;
|
|
51
|
+
/** Backdrop behavior. `'transparent'` catches outside clicks invisibly. `'dimmed'` adds a semi-transparent overlay. `'none'` disables the backdrop. Defaults to `'transparent'`. */
|
|
52
|
+
readonly twPopoverBackdrop: _angular_core.InputSignal<PopoverBackdrop>;
|
|
53
|
+
/** Whether clicking outside the panel closes the popover. Only relevant when backdrop is `'none'`. Defaults to `true`. */
|
|
54
|
+
readonly twPopoverCloseOnOutside: _angular_core.InputSignal<boolean>;
|
|
55
|
+
/** Whether pressing Escape closes the popover. Defaults to `true`. */
|
|
56
|
+
readonly twPopoverCloseOnEscape: _angular_core.InputSignal<boolean>;
|
|
57
|
+
/** CDK scroll strategy for the overlay. Defaults to `'reposition'`. */
|
|
58
|
+
readonly twPopoverScrollStrategy: _angular_core.InputSignal<PopoverScrollStrategy>;
|
|
59
|
+
/** Whether to trap focus inside the popover panel using CDK FocusTrapFactory. Defaults to `true`. */
|
|
60
|
+
readonly twPopoverTrapFocus: _angular_core.InputSignal<boolean>;
|
|
61
|
+
/** Arbitrary data passed to template context or component via `POPOVER_DATA` token. */
|
|
62
|
+
readonly twPopoverData: _angular_core.InputSignal<unknown>;
|
|
63
|
+
/** Additional CSS classes applied to the overlay panel for consumer customization. */
|
|
64
|
+
readonly twPopoverPanelClass: _angular_core.InputSignal<string | string[]>;
|
|
65
|
+
/** Optional semantic color. When set, adds a colored top border accent to the panel. */
|
|
66
|
+
readonly twPopoverColor: _angular_core.InputSignal<TwColor | undefined>;
|
|
67
|
+
/** Explicit `aria-label` for the dialog panel. */
|
|
68
|
+
readonly twPopoverAriaLabel: _angular_core.InputSignal<string | undefined>;
|
|
69
|
+
/** Fires after the popover becomes visible. */
|
|
70
|
+
readonly twPopoverOpened: _angular_core.OutputEmitterRef<void>;
|
|
71
|
+
/** Fires after the popover is fully removed. */
|
|
72
|
+
readonly twPopoverClosed: _angular_core.OutputEmitterRef<void>;
|
|
73
|
+
private readonly overlay;
|
|
74
|
+
private readonly elementRef;
|
|
75
|
+
private readonly viewContainerRef;
|
|
76
|
+
private readonly injector;
|
|
77
|
+
private readonly destroyRef;
|
|
78
|
+
private readonly focusTrapFactory;
|
|
79
|
+
private overlayRef;
|
|
80
|
+
private popoverInstance;
|
|
81
|
+
private focusTrap;
|
|
82
|
+
private perOpenSubs;
|
|
83
|
+
private closing;
|
|
84
|
+
private closeTimer;
|
|
85
|
+
/** Tracked focus-blur close timer; cleared on destroy so it can't fire post-teardown. */
|
|
86
|
+
private blurCloseTimer;
|
|
87
|
+
private readonly overlayId;
|
|
88
|
+
/** The overlay component's id for aria-controls binding. */
|
|
89
|
+
protected readonly overlayComponentId: _angular_core.Signal<string | null>;
|
|
90
|
+
constructor();
|
|
91
|
+
/** Programmatically open the popover. */
|
|
92
|
+
open(): void;
|
|
93
|
+
/** Programmatically close the popover. */
|
|
94
|
+
close(): void;
|
|
95
|
+
/** Toggle open/close. */
|
|
96
|
+
toggle(): void;
|
|
97
|
+
/** Force CDK to recalculate overlay position. */
|
|
98
|
+
reposition(): void;
|
|
99
|
+
protected onHostClick(): void;
|
|
100
|
+
protected onHostFocus(): void;
|
|
101
|
+
protected onHostBlur(): void;
|
|
102
|
+
protected onEscape(): void;
|
|
103
|
+
private openPopover;
|
|
104
|
+
private closePopover;
|
|
105
|
+
private currentPositionStrategy;
|
|
106
|
+
private buildPositionStrategy;
|
|
107
|
+
private ensureOverlay;
|
|
108
|
+
private updatePositionStrategy;
|
|
109
|
+
private subscribePerOpen;
|
|
110
|
+
private attachContent;
|
|
111
|
+
private setupFocusTrap;
|
|
112
|
+
private destroyFocusTrap;
|
|
113
|
+
private disposeOverlay;
|
|
114
|
+
private clearCloseTimer;
|
|
115
|
+
private resolveScrollStrategy;
|
|
116
|
+
private resolvePanelClass;
|
|
117
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverDirective, never>;
|
|
118
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverDirective, "[twPopover]", ["twPopover"], { "twPopover": { "alias": "twPopover"; "required": true; "isSignal": true; }; "twPopoverPosition": { "alias": "twPopoverPosition"; "required": false; "isSignal": true; }; "twPopoverTriggerOn": { "alias": "twPopoverTriggerOn"; "required": false; "isSignal": true; }; "twPopoverDisabled": { "alias": "twPopoverDisabled"; "required": false; "isSignal": true; }; "twPopoverOpen": { "alias": "twPopoverOpen"; "required": false; "isSignal": true; }; "twPopoverSize": { "alias": "twPopoverSize"; "required": false; "isSignal": true; }; "twPopoverOffset": { "alias": "twPopoverOffset"; "required": false; "isSignal": true; }; "twPopoverArrow": { "alias": "twPopoverArrow"; "required": false; "isSignal": true; }; "twPopoverBackdrop": { "alias": "twPopoverBackdrop"; "required": false; "isSignal": true; }; "twPopoverCloseOnOutside": { "alias": "twPopoverCloseOnOutside"; "required": false; "isSignal": true; }; "twPopoverCloseOnEscape": { "alias": "twPopoverCloseOnEscape"; "required": false; "isSignal": true; }; "twPopoverScrollStrategy": { "alias": "twPopoverScrollStrategy"; "required": false; "isSignal": true; }; "twPopoverTrapFocus": { "alias": "twPopoverTrapFocus"; "required": false; "isSignal": true; }; "twPopoverData": { "alias": "twPopoverData"; "required": false; "isSignal": true; }; "twPopoverPanelClass": { "alias": "twPopoverPanelClass"; "required": false; "isSignal": true; }; "twPopoverColor": { "alias": "twPopoverColor"; "required": false; "isSignal": true; }; "twPopoverAriaLabel": { "alias": "twPopoverAriaLabel"; "required": false; "isSignal": true; }; }, { "twPopoverOpen": "twPopoverOpenChange"; "twPopoverOpened": "twPopoverOpened"; "twPopoverClosed": "twPopoverClosed"; }, never, never, true, never>;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Convenience directive that closes the enclosing popover when the host element is clicked.
|
|
123
|
+
* Place on any element inside popover content.
|
|
124
|
+
*
|
|
125
|
+
* ```html
|
|
126
|
+
* <button twPopoverClose>Cancel</button>
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
declare class PopoverCloseDirective {
|
|
130
|
+
private readonly popoverRef;
|
|
131
|
+
protected closePopover(): void;
|
|
132
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverCloseDirective, never>;
|
|
133
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverCloseDirective, "[twPopoverClose]", never, {}, {}, never, never, true, never>;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Popover title. Registers its ID with the enclosing popover overlay's
|
|
138
|
+
* `aria-labelledby` queue so screen readers announce it automatically.
|
|
139
|
+
*
|
|
140
|
+
* Mirrors `DialogTitleDirective` and is the recommended way to label a
|
|
141
|
+
* popover whose content has a heading. Use `twPopoverAriaLabel` when no
|
|
142
|
+
* heading is present.
|
|
143
|
+
*/
|
|
144
|
+
declare class PopoverTitleDirective implements OnInit, OnDestroy {
|
|
145
|
+
private readonly generatedId;
|
|
146
|
+
private readonly elementRef;
|
|
147
|
+
private readonly popoverRef;
|
|
148
|
+
/** Custom id for the title element. Defaults to a generated unique id. */
|
|
149
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
150
|
+
ngOnInit(): void;
|
|
151
|
+
ngOnDestroy(): void;
|
|
152
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverTitleDirective, never>;
|
|
153
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverTitleDirective, "[twPopoverTitle], tw-popover-title", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export { POPOVER_DATA, POPOVER_REF, PopoverCloseDirective, PopoverDirective, PopoverTitleDirective };
|
|
157
|
+
export type { PopoverBackdrop, PopoverPosition, PopoverRef, PopoverScrollStrategy, PopoverTemplateContext, PopoverTrigger };
|