yukit-web 0.4.0 → 0.5.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/.npm/_cacache/content-v2/sha512/{54/b3/104ffedca14195165b683358b39926758669fa3f3e1edecefdb520be52a21b9c52fe92c2b105d5cef557726c53358b0715604eb6839b354e1b743b3daa36 → f5/0f/c95629c7a5090af7589754ee4f0b5a0a42d7d8f3615f869adbc711b7d161ed87b0f0741fba118e90ff6de60e75e9ac321789ed5109ee12633f17342adad8} +1 -1
- package/.npm/_cacache/index-v5/64/dc/73c7a26f2e6eb0c711133d96c247da5ecf0eba708cd37c450a7b3c7cb488 +1 -1
- package/.npm/_logs/{2026-10-14T08_53_59_059Z-debug-0.log → 2026-10-15T07_38_00_822Z-debug-0.log} +10 -10
- package/.npm/_logs/{2026-10-14T08_53_59_560Z-debug-0.log → 2026-10-15T07_38_01_247Z-debug-0.log} +2 -2
- package/fesm2022/yukit-web.mjs +3125 -2184
- package/fesm2022/yukit-web.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/theme/components/button-group.css +5 -0
- package/types/yukit-web.d.ts +930 -355
package/types/yukit-web.d.ts
CHANGED
|
@@ -78,6 +78,95 @@ declare class YuwClassDirective {
|
|
|
78
78
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwClassDirective, "[yuwClass]", never, { "yuwClass": { "alias": "yuwClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
/** Scroll axes the mouse-scroll directives drag along. */
|
|
82
|
+
type YuwScrollAxisDto = 'x' | 'y';
|
|
83
|
+
/**
|
|
84
|
+
* Click-and-drag scrolling for a mouse along one axis, shared by `yuwMouseScrollX` and `yuwMouseScrollY`.
|
|
85
|
+
* Touch and pen input are left to the browser's native scrolling, and nothing happens while the host
|
|
86
|
+
* does not overflow along the axis.
|
|
87
|
+
*
|
|
88
|
+
* Pressing the primary button and moving past `DRAG_THRESHOLD_PX` scrolls the host with the pointer,
|
|
89
|
+
* captured so it keeps following outside the host. The click that ends a drag is swallowed in the
|
|
90
|
+
* capture phase, so the control under the pointer is not activated; a shorter press is a normal click.
|
|
91
|
+
* The pointer is only captured once the drag starts, so a press that leaves the host before then is
|
|
92
|
+
* released outside unseen: it is dropped on the next move that arrives with the button up, and never
|
|
93
|
+
* turns into a drag the user is no longer holding.
|
|
94
|
+
* While dragging the host gets `data-dragging`, a `grabbing` cursor and no text selection.
|
|
95
|
+
*
|
|
96
|
+
* Built to cost nothing while idle, since it sits inside data-heavy views: every listener is a native one
|
|
97
|
+
* registered outside Angular, so no event ever schedules change detection, and the drag state lives in
|
|
98
|
+
* plain fields written straight to the DOM instead of signals bound to the host. At rest the host only
|
|
99
|
+
* listens to `pointerdown` (plus `wheel` in `yuwMouseScrollX`); the move, release and `dragstart`
|
|
100
|
+
* listeners exist only during a press, and the click-swallowing one only between a drag and its click.
|
|
101
|
+
* Each group hangs off an `AbortController`, so ending a press or destroying the directive drops it at once.
|
|
102
|
+
*
|
|
103
|
+
* Subclasses provide `_axis`, the axis they scroll along, and register extra host listeners with `_listen`.
|
|
104
|
+
*/
|
|
105
|
+
declare abstract class YuwMouseDragScrollBase {
|
|
106
|
+
protected readonly _element: HTMLElement;
|
|
107
|
+
private readonly _zone;
|
|
108
|
+
protected abstract readonly _axis: YuwScrollAxisDto;
|
|
109
|
+
private _clickGuard;
|
|
110
|
+
private _dragging;
|
|
111
|
+
private readonly _lifetime;
|
|
112
|
+
private readonly _onPointerDown;
|
|
113
|
+
private readonly _onPointerEnd;
|
|
114
|
+
private readonly _onPointerMove;
|
|
115
|
+
private _press;
|
|
116
|
+
constructor();
|
|
117
|
+
/** Adds a native host listener outside Angular, removed when the directive is destroyed. */
|
|
118
|
+
protected _listen<K extends keyof HTMLElementEventMap>(type: K, listener: (event: HTMLElementEventMap[K]) => void, options?: AddEventListenerOptions): void;
|
|
119
|
+
private _endPress;
|
|
120
|
+
/**
|
|
121
|
+
* Swallows the click a drag ends with. The listener is dropped after that click, or on the next press
|
|
122
|
+
* when the release produced none.
|
|
123
|
+
*/
|
|
124
|
+
private _guardNextClick;
|
|
125
|
+
private _setDragging;
|
|
126
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwMouseDragScrollBase, never>;
|
|
127
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwMouseDragScrollBase, never, never, {}, {}, never, never, true, never>;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Lets a mouse scroll a horizontally overflowing element, which otherwise only a touch swipe, a trackpad
|
|
132
|
+
* or Shift+wheel can move.
|
|
133
|
+
*
|
|
134
|
+
* - Wheel: a mostly vertical step scrolls sideways while the element can still move that way; at either
|
|
135
|
+
* end, or when nothing overflows, the event is left alone so the page keeps scrolling. Horizontal input
|
|
136
|
+
* (trackpads, tilt wheels) and Ctrl+wheel zoom pass through untouched.
|
|
137
|
+
* - Drag: click and drag scrolls sideways, as described in `YuwMouseDragScrollBase`.
|
|
138
|
+
*
|
|
139
|
+
* The wheel listener is native, registered outside Angular and non-passive, since it must be able to
|
|
140
|
+
* `preventDefault`; it only reads four numbers before returning, so it never delays the page's scrolling.
|
|
141
|
+
*
|
|
142
|
+
* Usage:
|
|
143
|
+
* ```html
|
|
144
|
+
* <div class="overflow-x-auto" yuwMouseScrollX>...</div>
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
declare class YuwMouseScrollXDirective extends YuwMouseDragScrollBase {
|
|
148
|
+
protected readonly _axis = "x";
|
|
149
|
+
private readonly _onWheel;
|
|
150
|
+
constructor();
|
|
151
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwMouseScrollXDirective, never>;
|
|
152
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwMouseScrollXDirective, "[yuwMouseScrollX]", never, {}, {}, never, never, true, never>;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Lets a mouse scroll a vertically overflowing element by click and drag, as described in
|
|
157
|
+
* `YuwMouseDragScrollBase`. The wheel already scrolls vertically, so it is left to the browser.
|
|
158
|
+
*
|
|
159
|
+
* Usage:
|
|
160
|
+
* ```html
|
|
161
|
+
* <div class="overflow-y-auto" yuwMouseScrollY>...</div>
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
declare class YuwMouseScrollYDirective extends YuwMouseDragScrollBase {
|
|
165
|
+
protected readonly _axis = "y";
|
|
166
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwMouseScrollYDirective, never>;
|
|
167
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwMouseScrollYDirective, "[yuwMouseScrollY]", never, {}, {}, never, never, true, never>;
|
|
168
|
+
}
|
|
169
|
+
|
|
81
170
|
/**
|
|
82
171
|
* Registers a component as a form control, so `formControlName`/`formControl`/`ngModel` bind to it.
|
|
83
172
|
*
|
|
@@ -528,7 +617,7 @@ declare class YuwButtonComponent {
|
|
|
528
617
|
readonly size: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
|
|
529
618
|
readonly target: _angular_core.InputSignal<string | undefined>;
|
|
530
619
|
readonly transparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
531
|
-
readonly type: _angular_core.InputSignal<"
|
|
620
|
+
readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
|
|
532
621
|
readonly userClass: _angular_core.InputSignal<string>;
|
|
533
622
|
readonly variant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
|
|
534
623
|
readonly yuwDropdownMenuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
|
|
@@ -665,7 +754,7 @@ declare class YuwButtonGroupComponent {
|
|
|
665
754
|
color: YuwColorDto;
|
|
666
755
|
transparent: boolean;
|
|
667
756
|
disabled: boolean;
|
|
668
|
-
type: "
|
|
757
|
+
type: "reset" | "submit" | "button";
|
|
669
758
|
class: string;
|
|
670
759
|
id: string;
|
|
671
760
|
label?: string;
|
|
@@ -869,95 +958,6 @@ type YuwPaginationRangeItem = number | 'ellipsis';
|
|
|
869
958
|
*/
|
|
870
959
|
declare function getPaginationRange(page: number, totalPages: number): YuwPaginationRangeItem[];
|
|
871
960
|
|
|
872
|
-
/** Text of the page size selector and its range message. */
|
|
873
|
-
interface YuwPageSizeLabels {
|
|
874
|
-
readonly label: string;
|
|
875
|
-
readonly empty: string;
|
|
876
|
-
readonly range: (range: YuwPageRange) => string;
|
|
877
|
-
}
|
|
878
|
-
/** Text of the standalone pagination footer. */
|
|
879
|
-
interface YuwListPaginationLabels {
|
|
880
|
-
readonly pageSize: YuwPageSizeLabels;
|
|
881
|
-
readonly ariaLabel: string;
|
|
882
|
-
readonly previous: string;
|
|
883
|
-
readonly next: string;
|
|
884
|
-
readonly ellipsis: string;
|
|
885
|
-
}
|
|
886
|
-
|
|
887
|
-
/**
|
|
888
|
-
* Page size selector and range message of a `YuwPagedList`; in a datatable it takes the pagination slot.
|
|
889
|
-
*
|
|
890
|
-
* Inputs:
|
|
891
|
-
* - `disabled`: Disables the page size selector. Default is `false`.
|
|
892
|
-
* - `labels`: Required `YuwPageSizeLabels` with the selector label, the text for an empty list and the function that builds the range message.
|
|
893
|
-
* - `list`: Required `YuwPagedList` whose page size is chosen and whose range is shown in the message.
|
|
894
|
-
*/
|
|
895
|
-
declare class YuwPageSizeComponent {
|
|
896
|
-
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
897
|
-
readonly labels: _angular_core.InputSignal<YuwPageSizeLabels>;
|
|
898
|
-
readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
|
|
899
|
-
protected readonly message: _angular_core.Signal<string>;
|
|
900
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPageSizeComponent, never>;
|
|
901
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPageSizeComponent, "yuw-page-size", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
/**
|
|
905
|
-
* Pagination footer for lists without a datatable: the page size selector with its range message
|
|
906
|
-
* and the page navigation, both driven by one `YuwPagedList`. A disabled `fieldset` blocks its buttons.
|
|
907
|
-
*
|
|
908
|
-
* Inputs:
|
|
909
|
-
* - `disabled`: Disables the page size selector and the page buttons. Default is `false`.
|
|
910
|
-
* - `labels`: Required `YuwListPaginationLabels` with the consumer's text for the page size selector, the navigation aria label and the previous, next and ellipsis texts.
|
|
911
|
-
* - `list`: Required `YuwPagedList` holding the current page, page size, total pages and range; changes made in the footer are written back to it.
|
|
912
|
-
*/
|
|
913
|
-
declare class YuwListPaginationComponent {
|
|
914
|
-
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
915
|
-
readonly labels: _angular_core.InputSignal<YuwListPaginationLabels>;
|
|
916
|
-
readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
|
|
917
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwListPaginationComponent, never>;
|
|
918
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwListPaginationComponent, "yuw-list-pagination", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
919
|
-
}
|
|
920
|
-
|
|
921
|
-
/**
|
|
922
|
-
* Page title, optional description and up to two actions, each rendered when its label is set.
|
|
923
|
-
* On mobile the primary action shows only its icon, or `primaryMobileLabel`. Icons are `@ng-icons`
|
|
924
|
-
* names; the consumer registers any beyond `lucidePlus` with `provideIcons`.
|
|
925
|
-
*
|
|
926
|
-
* Inputs:
|
|
927
|
-
* - `backLabel`: Text of the back button, which renders only when set; on small screens only its arrow shows.
|
|
928
|
-
* - `description`: Optional subtitle under the title.
|
|
929
|
-
* - `primaryDisabled`: Disables the primary action, which stays visible but ignores clicks, e.g. while the list it creates items for is loading.
|
|
930
|
-
* - `primaryIcon`: Icon name shown in the primary action.
|
|
931
|
-
* - `primaryLabel`: Text of the primary action, which renders only when set.
|
|
932
|
-
* - `primaryMobileLabel`: Text the primary action shows on small screens instead of its label.
|
|
933
|
-
* - `secondaryIcon`: Icon name shown in the secondary action.
|
|
934
|
-
* - `secondaryLabel`: Text of the secondary action, which renders only when set; hidden on small screens, leaving its icon.
|
|
935
|
-
* - `title`: Required page title.
|
|
936
|
-
*
|
|
937
|
-
* Outputs:
|
|
938
|
-
* - `backClicked`: Emits the `MouseEvent` of the back button.
|
|
939
|
-
* - `primaryClicked`: Emits the `MouseEvent` of the primary action.
|
|
940
|
-
* - `secondaryClicked`: Emits the `MouseEvent` of the secondary action.
|
|
941
|
-
*/
|
|
942
|
-
declare class YuwPageHeaderComponent {
|
|
943
|
-
readonly backLabel: _angular_core.InputSignal<string | undefined>;
|
|
944
|
-
readonly description: _angular_core.InputSignal<string | undefined>;
|
|
945
|
-
readonly primaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
946
|
-
readonly primaryIcon: _angular_core.InputSignal<string | undefined>;
|
|
947
|
-
readonly primaryLabel: _angular_core.InputSignal<string | undefined>;
|
|
948
|
-
readonly primaryMobileLabel: _angular_core.InputSignal<string | undefined>;
|
|
949
|
-
readonly secondaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
950
|
-
readonly secondaryIcon: _angular_core.InputSignal<string | undefined>;
|
|
951
|
-
readonly secondaryLabel: _angular_core.InputSignal<string | undefined>;
|
|
952
|
-
readonly title: _angular_core.InputSignal<string>;
|
|
953
|
-
readonly backClicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
954
|
-
readonly primaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
955
|
-
readonly secondaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
956
|
-
protected readonly isMobile: _angular_core.Signal<boolean>;
|
|
957
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPageHeaderComponent, never>;
|
|
958
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPageHeaderComponent, "yuw-page-header", never, { "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; "isSignal": true; }; "primaryIcon": { "alias": "primaryIcon"; "required": false; "isSignal": true; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; "isSignal": true; }; "primaryMobileLabel": { "alias": "primaryMobileLabel"; "required": false; "isSignal": true; }; "secondaryDisabled": { "alias": "secondaryDisabled"; "required": false; "isSignal": true; }; "secondaryIcon": { "alias": "secondaryIcon"; "required": false; "isSignal": true; }; "secondaryLabel": { "alias": "secondaryLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "backClicked": "backClicked"; "primaryClicked": "primaryClicked"; "secondaryClicked": "secondaryClicked"; }, never, never, true, never>;
|
|
959
|
-
}
|
|
960
|
-
|
|
961
961
|
/**
|
|
962
962
|
* Container directive for collapsible accordion items.
|
|
963
963
|
*
|
|
@@ -1703,52 +1703,6 @@ declare class YuwSkeletonDirective {
|
|
|
1703
1703
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSkeletonDirective, "[yuwSkeleton]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmSkeleton; inputs: {}; outputs: {}; }]>;
|
|
1704
1704
|
}
|
|
1705
1705
|
|
|
1706
|
-
/**
|
|
1707
|
-
* Grid of projected cards, usually `yuw-card-grid-item`s in an `@for`. `loading` shows
|
|
1708
|
-
* `skeletonCount` placeholders shaped by `skeletonClass`; `empty` shows `emptyText`; `columnsClass`
|
|
1709
|
-
* holds the Tailwind column utilities.
|
|
1710
|
-
*
|
|
1711
|
-
* Inputs:
|
|
1712
|
-
* - `columnsClass`: Tailwind grid column utilities applied to the grid and its skeleton. Default is `'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'`.
|
|
1713
|
-
* - `empty`: Shows `emptyText` instead of the projected cards. Default is `false`.
|
|
1714
|
-
* - `emptyText`: Required message shown when `empty` is set. The app supplies and translates it.
|
|
1715
|
-
* - `loading`: Shows `skeletonCount` placeholders instead of the content; takes precedence over `empty`. Default is `false`.
|
|
1716
|
-
* - `skeletonClass`: Extra classes sizing each placeholder, e.g. its height. Default is `'h-16'`.
|
|
1717
|
-
* - `skeletonCount`: Number of placeholders shown while loading. Default is `12`.
|
|
1718
|
-
*
|
|
1719
|
-
* `YuwCardGridComponent.COLUMNS` holds the column classes admin lists share per view mode — `list`
|
|
1720
|
-
* is one column, `block` grows from one to five, and `tags` packs small tag cards up to six — so every listing lays out its cards the same
|
|
1721
|
-
* way: `[columnsClass]="YuwCardGridComponent.COLUMNS[mode]"`.
|
|
1722
|
-
*/
|
|
1723
|
-
declare class YuwCardGridComponent {
|
|
1724
|
-
readonly columnsClass: _angular_core.InputSignal<string>;
|
|
1725
|
-
readonly empty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1726
|
-
readonly emptyText: _angular_core.InputSignal<string>;
|
|
1727
|
-
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1728
|
-
readonly skeletonClass: _angular_core.InputSignal<string>;
|
|
1729
|
-
readonly skeletonCount: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1730
|
-
static readonly COLUMNS: {
|
|
1731
|
-
readonly list: "grid-cols-1";
|
|
1732
|
-
readonly block: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5";
|
|
1733
|
-
readonly tags: "grid-cols-1 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6";
|
|
1734
|
-
};
|
|
1735
|
-
protected readonly skeletons: _angular_core.Signal<number[]>;
|
|
1736
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardGridComponent, never>;
|
|
1737
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCardGridComponent, "yuw-card-grid", never, { "columnsClass": { "alias": "columnsClass"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "skeletonClass": { "alias": "skeletonClass"; "required": false; "isSignal": true; }; "skeletonCount": { "alias": "skeletonCount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1738
|
-
}
|
|
1739
|
-
|
|
1740
|
-
/**
|
|
1741
|
-
* While `pending` the card stays hidden in place under a skeleton, so the grid does not jump.
|
|
1742
|
-
*
|
|
1743
|
-
* Inputs:
|
|
1744
|
-
* - `pending`: Hides the projected card and overlays a skeleton while it is loading. Default is `false`.
|
|
1745
|
-
*/
|
|
1746
|
-
declare class YuwCardGridItemComponent {
|
|
1747
|
-
readonly pending: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1748
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardGridItemComponent, never>;
|
|
1749
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCardGridItemComponent, "yuw-card-grid-item", never, { "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1750
|
-
}
|
|
1751
|
-
|
|
1752
1706
|
/**
|
|
1753
1707
|
* Container directive for card components.
|
|
1754
1708
|
* Accepts optional `size` input (e.g. `'default'` or `'sm'`).
|
|
@@ -2206,230 +2160,36 @@ declare class YuwDatatablePaginationDirective {
|
|
|
2206
2160
|
/** Every table part, for a consumer's `imports`. */
|
|
2207
2161
|
declare const YuwTableImports: readonly [typeof YuwTableContainerDirective, typeof YuwTableDirective, typeof YuwTHeadDirective, typeof YuwTBodyDirective, typeof YuwTFootDirective, typeof YuwTrDirective, typeof YuwThDirective, typeof YuwTdDirective, typeof YuwCaptionDirective, typeof YuwDatatablePaginationDirective];
|
|
2208
2162
|
|
|
2209
|
-
|
|
2210
|
-
readonly value: string;
|
|
2211
|
-
readonly label: string;
|
|
2212
|
-
readonly disabled?: boolean;
|
|
2213
|
-
}
|
|
2214
|
-
/** `single` keeps one value and closes its list after a pick, `multiple` keeps a set. */
|
|
2215
|
-
type YuwFilterGroupMode = 'single' | 'multiple';
|
|
2216
|
-
/**
|
|
2217
|
-
* `options` feeds the group's combobox. A `yuwFilterContent` template of the same id replaces that
|
|
2218
|
-
* combobox; `mode` then only states whether its value is a string or an array.
|
|
2219
|
-
*/
|
|
2220
|
-
interface YuwFilterGroupDto {
|
|
2221
|
-
readonly id: string;
|
|
2222
|
-
readonly label: string;
|
|
2223
|
-
readonly mode: YuwFilterGroupMode;
|
|
2224
|
-
readonly options?: readonly YuwFilterOptionDto[];
|
|
2225
|
-
}
|
|
2226
|
-
/** Value of one group: a string for `single` groups, an array for `multiple`. */
|
|
2227
|
-
type YuwFilterValue = string | readonly string[];
|
|
2228
|
-
/** Selection keyed by `YuwFilterGroupDto.id`. */
|
|
2229
|
-
type YuwFilterSelection = Readonly<Record<string, YuwFilterValue>>;
|
|
2230
|
-
/** A named selection the user saved; `id` is assigned by the consumer that persists it. */
|
|
2231
|
-
interface YuwFilterSetDto {
|
|
2232
|
-
readonly id: string;
|
|
2233
|
-
readonly name: string;
|
|
2234
|
-
readonly selection: YuwFilterSelection;
|
|
2235
|
-
}
|
|
2236
|
-
/** Payload of `setSaved`: the name the user typed and the selection applied at that moment. */
|
|
2237
|
-
interface YuwFilterSetSaveDto {
|
|
2238
|
-
readonly name: string;
|
|
2239
|
-
readonly selection: YuwFilterSelection;
|
|
2240
|
-
}
|
|
2241
|
-
/** Payload of `setRenamed`. */
|
|
2242
|
-
interface YuwFilterSetRenameDto {
|
|
2243
|
-
readonly id: string;
|
|
2244
|
-
readonly name: string;
|
|
2245
|
-
}
|
|
2246
|
-
/** Texts of the saved-sets control and its dialog; the consumer translates them. */
|
|
2247
|
-
interface YuwFilterSetLabels {
|
|
2248
|
-
readonly title: string;
|
|
2249
|
-
readonly empty: string;
|
|
2250
|
-
readonly save: string;
|
|
2251
|
-
readonly select: string;
|
|
2252
|
-
readonly none: string;
|
|
2253
|
-
readonly edit: string;
|
|
2254
|
-
readonly delete: string;
|
|
2255
|
-
readonly saveTitle: string;
|
|
2256
|
-
readonly renameTitle: string;
|
|
2257
|
-
readonly deleteTitle: string;
|
|
2258
|
-
readonly deleteMessage: (name: string) => string;
|
|
2259
|
-
readonly nameLabel: string;
|
|
2260
|
-
readonly confirm: string;
|
|
2261
|
-
readonly cancel: string;
|
|
2262
|
-
}
|
|
2263
|
-
/**
|
|
2264
|
-
* `title` names the filter row for assistive tech, `add` is the add-filter button, `remove` the
|
|
2265
|
-
* accessible name of the remove button of each active filter, `clearAll` the button that removes
|
|
2266
|
-
* every filter, and `empty` the text of a filter search with no match.
|
|
2267
|
-
*/
|
|
2268
|
-
interface YuwListToolbarFilterLabels {
|
|
2269
|
-
readonly title: string;
|
|
2270
|
-
readonly add: string;
|
|
2271
|
-
readonly remove: string;
|
|
2272
|
-
readonly clearAll: string;
|
|
2273
|
-
readonly empty: string;
|
|
2274
|
-
readonly sets?: YuwFilterSetLabels;
|
|
2275
|
-
}
|
|
2276
|
-
interface YuwListToolbarSearchLabels {
|
|
2277
|
-
readonly expand: string;
|
|
2278
|
-
readonly clear: string;
|
|
2279
|
-
}
|
|
2280
|
-
interface YuwListToolbarColumnsLabels {
|
|
2281
|
-
readonly trigger: string;
|
|
2282
|
-
readonly placeholder: string;
|
|
2283
|
-
readonly empty: string;
|
|
2284
|
-
}
|
|
2285
|
-
type YuwViewMode = 'list' | 'block';
|
|
2286
|
-
type YuwListToolbarViewModeLabels = Readonly<Record<YuwViewMode, string>>;
|
|
2287
|
-
/** ng-icon names of the view mode buttons; the consumer registers custom ones with `provideIcons`. */
|
|
2288
|
-
type YuwListToolbarViewModeIcons = Readonly<Record<YuwViewMode, string>>;
|
|
2289
|
-
interface YuwListToolbarLabels {
|
|
2290
|
-
readonly filters: YuwListToolbarFilterLabels;
|
|
2291
|
-
readonly search: YuwListToolbarSearchLabels;
|
|
2292
|
-
readonly columns: YuwListToolbarColumnsLabels;
|
|
2293
|
-
readonly export: string;
|
|
2294
|
-
readonly viewMode?: YuwListToolbarViewModeLabels;
|
|
2295
|
-
}
|
|
2296
|
-
|
|
2163
|
+
type YuwDatatableAlign = 'start' | 'center' | 'end';
|
|
2297
2164
|
/**
|
|
2298
|
-
*
|
|
2165
|
+
* Default floor for a column that opts into `meta.wrap`, as a Tailwind `min-w-*` class.
|
|
2299
2166
|
*
|
|
2300
|
-
*
|
|
2301
|
-
*
|
|
2302
|
-
*
|
|
2167
|
+
* This is the only bound a wrapping column needs. It is what makes the responsive behaviour work:
|
|
2168
|
+
* below it the table stops shrinking the column — which would end in a column one word wide — and
|
|
2169
|
+
* the table's own width exceeds the container instead, so `YuwTableContainer`'s `overflow-x-auto`
|
|
2170
|
+
* scrolls horizontally.
|
|
2171
|
+
*
|
|
2172
|
+
* There is deliberately no maximum. A cap would make a wrapping column break onto several lines
|
|
2173
|
+
* while the table still had free space beside it, which reads as broken; letting the column take
|
|
2174
|
+
* its share of the row means text wraps only once it genuinely no longer fits.
|
|
2303
2175
|
*/
|
|
2304
|
-
|
|
2305
|
-
readonly $implicit: YuwFilterGroupDto;
|
|
2306
|
-
readonly value: YuwFilterValue | undefined;
|
|
2307
|
-
readonly change: (value: YuwFilterValue | undefined) => void;
|
|
2308
|
-
}
|
|
2176
|
+
declare const YUW_DATATABLE_WRAP_MIN_WIDTH = "min-w-48";
|
|
2309
2177
|
/**
|
|
2310
|
-
*
|
|
2311
|
-
* remove button stays after it. Apply it to an `<ng-template>` and pass the id of the group it
|
|
2312
|
-
* renders; that group needs no `options`.
|
|
2313
|
-
*
|
|
2314
|
-
* The template feeds the same applied selection as the comboboxes: calling `change` writes the value
|
|
2315
|
-
* under the group id, so removing, clearing and saved sets work without extra wiring.
|
|
2316
|
-
*
|
|
2317
|
-
* To match the library's filters, render a `yuw-combobox` with a `yuwComboboxTrigger` template that
|
|
2318
|
-
* reads the group label and the selected labels; the row squares its trailing edge and welds it to the
|
|
2319
|
-
* remove button.
|
|
2320
|
-
*
|
|
2321
|
-
* Usage:
|
|
2322
|
-
* ```html
|
|
2323
|
-
* <yuw-list-toolbar [filterGroups]="groups" [(selection)]="selection" [labels]="labels">
|
|
2324
|
-
* <ng-template yuwFilterContent="customer" let-group let-value="value" let-change="change">
|
|
2325
|
-
* <yuw-combobox [options]="customers" [value]="value" [triggerAriaLabel]="group.label" (valueChange)="change($event)">
|
|
2326
|
-
* <ng-template yuwComboboxTrigger let-summary>
|
|
2327
|
-
* <span class="font-semibold">{{ group.label }}</span> {{ summary }}
|
|
2328
|
-
* </ng-template>
|
|
2329
|
-
* </yuw-combobox>
|
|
2330
|
-
* </ng-template>
|
|
2331
|
-
* </yuw-list-toolbar>
|
|
2332
|
-
* ```
|
|
2178
|
+
* Layout classes the `<table>` needs for `meta.wrap` columns to size correctly.
|
|
2333
2179
|
*
|
|
2334
|
-
*
|
|
2335
|
-
*
|
|
2180
|
+
* `w-full` lets the table fill its container so a wrapping column can spread into the free space
|
|
2181
|
+
* instead of wrapping early, and `min-w-max` keeps the table at least as wide as its content
|
|
2182
|
+
* demands — which is what lets a wrapping column's floor push the table past the container and
|
|
2183
|
+
* hand the overflow to the scroll container. Applied unconditionally: for a table with no wrapping
|
|
2184
|
+
* column both halves resolve to the width it already had.
|
|
2336
2185
|
*/
|
|
2337
|
-
declare
|
|
2338
|
-
readonly templateRef: TemplateRef<YuwFilterContentContext>;
|
|
2339
|
-
readonly groupId: _angular_core.InputSignal<string>;
|
|
2340
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwFilterContentDirective, never>;
|
|
2341
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwFilterContentDirective, "ng-template[yuwFilterContent]", never, { "groupId": { "alias": "yuwFilterContent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2342
|
-
}
|
|
2343
|
-
|
|
2186
|
+
declare const DATATABLE_LAYOUT_CLASS = "w-full min-w-max";
|
|
2344
2187
|
/**
|
|
2345
|
-
*
|
|
2346
|
-
* trailing one, and projected content after them. The trailing actions keep the room they need (the
|
|
2347
|
-
* search grows into it when expanded) and the filter row takes the rest, scrolling its active
|
|
2348
|
-
* filters horizontally with faded edges when they do not fit.
|
|
2188
|
+
* Class maps for `yuw-datatable`, layered on top of the Hlm table directives' own classes.
|
|
2349
2189
|
*
|
|
2350
|
-
*
|
|
2351
|
-
*
|
|
2352
|
-
*
|
|
2353
|
-
* the toolbar emits `setSaved`, `setRenamed` and `setDeleted` and the consumer persists them. `labels` holds every text and the consumer translates it;
|
|
2354
|
-
* `idleColor` is the tone of the filter row's outline controls (filters, add button, star). Each active
|
|
2355
|
-
* group renders a combobox opened from an outline button; a projected `<ng-template yuwFilterContent="groupId">` replaces it (see
|
|
2356
|
-
* `YuwFilterContentDirective`). `selection` may be set from outside at any time, e.g. restored from
|
|
2357
|
-
* IndexedDB, and the row shows a filter for every group it holds.
|
|
2358
|
-
*
|
|
2359
|
-
* Inputs:
|
|
2360
|
-
* - `filterGroups`: Filter groups the editor offers; the filter control renders only when set.
|
|
2361
|
-
* - `filterSets`: Saved filter sets; together with `labels.filters.sets` it enables the sets star.
|
|
2362
|
-
* - `filtersDisabled`: Disables every control of the filter row. Default is `false`.
|
|
2363
|
-
* - `hiddenColumns`: Two-way (`[(hiddenColumns)]`) ids of the columns currently hidden. Default is `[]`.
|
|
2364
|
-
* - `hideableColumns`: Options of the columns the user may hide; the columns button renders only when set.
|
|
2365
|
-
* - `idleColor`: `YuwColorDto` tone of the filter row's outline controls. Default is `'neutral'`.
|
|
2366
|
-
* - `labels`: Required `YuwListToolbarLabels` with the consumer's translated text for every control.
|
|
2367
|
-
* - `search`: Two-way (`[(search)]`) text of the search field. Default is `''`.
|
|
2368
|
-
* - `searchPlaceholder`: Placeholder of the search field; the search renders only when set.
|
|
2369
|
-
* - `selection`: Two-way (`[(selection)]`) applied filter selection, values keyed by group id. Default is `{}`.
|
|
2370
|
-
* - `showExport`: Renders the export button. Default is `false`.
|
|
2371
|
-
* - `viewMode`: Two-way (`[(viewMode)]`) `YuwViewMode` (`'list'` or `'block'`); the list/block switch renders only when set.
|
|
2372
|
-
* - `viewModeIcons`: Partial override of the switch icons by mode (ng-icon names, registered by the consumer with `provideIcons`). Defaults are `lucideList` and `lucideLayoutGrid`.
|
|
2373
|
-
*
|
|
2374
|
-
* Outputs:
|
|
2375
|
-
* - `exported`: Emits the `MouseEvent` of the export button click.
|
|
2376
|
-
* - `searched`: Emits the current search text on every keystroke and when it is cleared.
|
|
2377
|
-
*/
|
|
2378
|
-
declare class YuwListToolbarComponent {
|
|
2379
|
-
protected readonly filterContents: _angular_core.Signal<readonly YuwFilterContentDirective[]>;
|
|
2380
|
-
readonly filterGroups: _angular_core.InputSignal<readonly YuwFilterGroupDto[] | undefined>;
|
|
2381
|
-
readonly filtersDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2382
|
-
readonly filterSets: _angular_core.InputSignal<readonly YuwFilterSetDto[] | undefined>;
|
|
2383
|
-
readonly hiddenColumns: _angular_core.ModelSignal<string[]>;
|
|
2384
|
-
readonly hideableColumns: _angular_core.InputSignal<YuwComboboxOptionDto<unknown>[] | undefined>;
|
|
2385
|
-
readonly idleColor: _angular_core.InputSignal<YuwColorDto>;
|
|
2386
|
-
readonly labels: _angular_core.InputSignal<YuwListToolbarLabels>;
|
|
2387
|
-
readonly search: _angular_core.ModelSignal<string>;
|
|
2388
|
-
readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
2389
|
-
readonly selection: _angular_core.ModelSignal<Readonly<Record<string, yukit_web.YuwFilterValue>>>;
|
|
2390
|
-
readonly showExport: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2391
|
-
readonly viewMode: _angular_core.ModelSignal<YuwViewMode | undefined>;
|
|
2392
|
-
readonly viewModeIcons: _angular_core.InputSignal<Partial<Readonly<Record<YuwViewMode, string>>> | undefined>;
|
|
2393
|
-
readonly exported: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
2394
|
-
readonly searched: _angular_core.OutputEmitterRef<string>;
|
|
2395
|
-
readonly setDeleted: _angular_core.OutputEmitterRef<string>;
|
|
2396
|
-
readonly setRenamed: _angular_core.OutputEmitterRef<YuwFilterSetRenameDto>;
|
|
2397
|
-
readonly setSaved: _angular_core.OutputEmitterRef<YuwFilterSetSaveDto>;
|
|
2398
|
-
protected readonly isMobile: _angular_core.Signal<boolean>;
|
|
2399
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwListToolbarComponent, never>;
|
|
2400
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwListToolbarComponent, "yuw-list-toolbar", never, { "filterGroups": { "alias": "filterGroups"; "required": false; "isSignal": true; }; "filtersDisabled": { "alias": "filtersDisabled"; "required": false; "isSignal": true; }; "filterSets": { "alias": "filterSets"; "required": false; "isSignal": true; }; "hiddenColumns": { "alias": "hiddenColumns"; "required": false; "isSignal": true; }; "hideableColumns": { "alias": "hideableColumns"; "required": false; "isSignal": true; }; "idleColor": { "alias": "idleColor"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "showExport": { "alias": "showExport"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; "viewModeIcons": { "alias": "viewModeIcons"; "required": false; "isSignal": true; }; }, { "hiddenColumns": "hiddenColumnsChange"; "search": "searchChange"; "selection": "selectionChange"; "viewMode": "viewModeChange"; "exported": "exported"; "searched": "searched"; "setDeleted": "setDeleted"; "setRenamed": "setRenamed"; "setSaved": "setSaved"; }, ["filterContents"], ["*"], true, never>;
|
|
2401
|
-
}
|
|
2402
|
-
|
|
2403
|
-
type YuwDatatableAlign = 'start' | 'center' | 'end';
|
|
2404
|
-
/**
|
|
2405
|
-
* Default floor for a column that opts into `meta.wrap`, as a Tailwind `min-w-*` class.
|
|
2406
|
-
*
|
|
2407
|
-
* This is the only bound a wrapping column needs. It is what makes the responsive behaviour work:
|
|
2408
|
-
* below it the table stops shrinking the column — which would end in a column one word wide — and
|
|
2409
|
-
* the table's own width exceeds the container instead, so `YuwTableContainer`'s `overflow-x-auto`
|
|
2410
|
-
* scrolls horizontally.
|
|
2411
|
-
*
|
|
2412
|
-
* There is deliberately no maximum. A cap would make a wrapping column break onto several lines
|
|
2413
|
-
* while the table still had free space beside it, which reads as broken; letting the column take
|
|
2414
|
-
* its share of the row means text wraps only once it genuinely no longer fits.
|
|
2415
|
-
*/
|
|
2416
|
-
declare const YUW_DATATABLE_WRAP_MIN_WIDTH = "min-w-48";
|
|
2417
|
-
/**
|
|
2418
|
-
* Layout classes the `<table>` needs for `meta.wrap` columns to size correctly.
|
|
2419
|
-
*
|
|
2420
|
-
* `w-full` lets the table fill its container so a wrapping column can spread into the free space
|
|
2421
|
-
* instead of wrapping early, and `min-w-max` keeps the table at least as wide as its content
|
|
2422
|
-
* demands — which is what lets a wrapping column's floor push the table past the container and
|
|
2423
|
-
* hand the overflow to the scroll container. Applied unconditionally: for a table with no wrapping
|
|
2424
|
-
* column both halves resolve to the width it already had.
|
|
2425
|
-
*/
|
|
2426
|
-
declare const DATATABLE_LAYOUT_CLASS = "w-full min-w-max";
|
|
2427
|
-
/**
|
|
2428
|
-
* Class maps for `yuw-datatable`, layered on top of the Hlm table directives' own classes.
|
|
2429
|
-
*
|
|
2430
|
-
* `DATATABLE_ALIGN_CLASS` is keyed by a column's `meta.align` and shared by header and body cells,
|
|
2431
|
-
* so a column declares its alignment once and both honour it; `start` maps to an empty string
|
|
2432
|
-
* rather than re-stating what `HlmTh`/`HlmTd` already apply.
|
|
2190
|
+
* `DATATABLE_ALIGN_CLASS` is keyed by a column's `meta.align` and shared by header and body cells,
|
|
2191
|
+
* so a column declares its alignment once and both honour it; `start` maps to an empty string
|
|
2192
|
+
* rather than re-stating what `HlmTh`/`HlmTd` already apply.
|
|
2433
2193
|
*
|
|
2434
2194
|
* The `appearance` maps are split per element because the treatment is not uniform: `card` frames
|
|
2435
2195
|
* the container so the header tint clips to the radius instead of squaring off against a
|
|
@@ -4385,5 +4145,820 @@ declare class YuwCommandDialogComponent {
|
|
|
4385
4145
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCommandDialogComponent, "yuw-command-dialog", never, { "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": true; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "open": "openChange"; "search": "searchChange"; "commandSelected": "commandSelected"; }, never, never, true, never>;
|
|
4386
4146
|
}
|
|
4387
4147
|
|
|
4388
|
-
|
|
4389
|
-
|
|
4148
|
+
/**
|
|
4149
|
+
* Derives up to two uppercase initials from a name or an email address.
|
|
4150
|
+
*
|
|
4151
|
+
* The text is split on anything that is not a letter or a digit, so separators such as `.`, `@`, `-` or `_` never end
|
|
4152
|
+
* up as an initial: `Pere Sanches` and `p.sanchez@gmail.com` both give `PS`.
|
|
4153
|
+
*
|
|
4154
|
+
* @param text Display name or email.
|
|
4155
|
+
* @returns The first characters of the first two words, or an empty string when there are none.
|
|
4156
|
+
*/
|
|
4157
|
+
declare function yuwsInitialsOf(text: string): string;
|
|
4158
|
+
|
|
4159
|
+
/**
|
|
4160
|
+
* Tracks a media query as a signal. Resolves to a constant `false` where `matchMedia` is unavailable: a non-browser
|
|
4161
|
+
* platform has no OS preference or viewport to follow, so callers settle on their non-matching default instead of
|
|
4162
|
+
* throwing during injection. Server platforms expose a `window` shim without `matchMedia`, hence the `typeof` check.
|
|
4163
|
+
* Must be called in an injection context.
|
|
4164
|
+
*/
|
|
4165
|
+
declare function yuwsMediaQuerySignal(window: (Window & typeof globalThis) | null | undefined, query: string): Signal<boolean>;
|
|
4166
|
+
|
|
4167
|
+
/**
|
|
4168
|
+
* `rowClass` for `yuw-datatable` that dims and locks the rows whose id is in `pendingIds`, so nobody edits on top of
|
|
4169
|
+
* a write still in flight. `idOf` reads the id because not every row is identified the same way.
|
|
4170
|
+
*/
|
|
4171
|
+
declare function yuwsPendingRowClass<Row extends object>(pendingIds: Signal<ReadonlySet<string>>, idOf: (row: Row) => string): YuwDatatableRowClass<Row>;
|
|
4172
|
+
|
|
4173
|
+
/**
|
|
4174
|
+
* Reads a file as a `data:` URL, for previews and for backends that take the image inline.
|
|
4175
|
+
*
|
|
4176
|
+
* @param file File to read.
|
|
4177
|
+
* @returns The `data:` URL of the file contents; rejects if the browser fails to read it.
|
|
4178
|
+
*/
|
|
4179
|
+
declare function yuwsReadFileAsDataUrl(file: File): Promise<string>;
|
|
4180
|
+
|
|
4181
|
+
/** State of a create/edit sheet. `editing` is `undefined` while creating. */
|
|
4182
|
+
interface YuwsSheetEditor<Item> {
|
|
4183
|
+
readonly open: WritableSignal<boolean>;
|
|
4184
|
+
readonly editing: Signal<Item | undefined>;
|
|
4185
|
+
edit(item: Item): void;
|
|
4186
|
+
startNew(): void;
|
|
4187
|
+
}
|
|
4188
|
+
/**
|
|
4189
|
+
* State of a create/edit sheet: bind `open` with `[(open)]` and `editing` to the sheet's item, call `edit` from a row
|
|
4190
|
+
* and `startNew` from the "new" action.
|
|
4191
|
+
*/
|
|
4192
|
+
declare function createYuwsSheetEditor<Item>(): YuwsSheetEditor<Item>;
|
|
4193
|
+
|
|
4194
|
+
/**
|
|
4195
|
+
* Table cell with the active/inactive state of a row as a badge. The color derives from `active`, so an inactive row
|
|
4196
|
+
* can never be painted green.
|
|
4197
|
+
*
|
|
4198
|
+
* Inputs:
|
|
4199
|
+
* - `active` (required): Whether the row is active.
|
|
4200
|
+
* - `label` (required): Visible state text. The consuming app translates it.
|
|
4201
|
+
*
|
|
4202
|
+
* Usage:
|
|
4203
|
+
* ```ts
|
|
4204
|
+
* cell: ({ row }) => flexRenderComponent(YuwsActiveStatusCellComponent, { inputs: { active: row.original.active, label } })
|
|
4205
|
+
* ```
|
|
4206
|
+
*/
|
|
4207
|
+
declare class YuwsActiveStatusCellComponent {
|
|
4208
|
+
readonly active: _angular_core.InputSignal<boolean>;
|
|
4209
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4210
|
+
protected readonly color: _angular_core.Signal<YuwColorDto>;
|
|
4211
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsActiveStatusCellComponent, never>;
|
|
4212
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsActiveStatusCellComponent, "yuws-active-status-cell", never, { "active": { "alias": "active"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4213
|
+
}
|
|
4214
|
+
|
|
4215
|
+
/** Avatar size of the cell: `sm` for entity listings, `md` for the 45x45 thumbnails of catalog listings. */
|
|
4216
|
+
type YuwsAvatarNameCellSize = 'sm' | 'md';
|
|
4217
|
+
/**
|
|
4218
|
+
* Table cell with the identity of a row: avatar and name. The name is text, not a link: the whole row is the click
|
|
4219
|
+
* target. Without an image the avatar shows the initials of `name`.
|
|
4220
|
+
*
|
|
4221
|
+
* Inputs:
|
|
4222
|
+
* - `imageUrl`: Image of the row. Default is `undefined`.
|
|
4223
|
+
* - `name` (required): Visible name; also the avatar's alternative text.
|
|
4224
|
+
* - `size`: Avatar size (`'sm'`, `'md'`). Default is `'sm'`.
|
|
4225
|
+
*/
|
|
4226
|
+
declare class YuwsAvatarNameCellComponent {
|
|
4227
|
+
readonly imageUrl: _angular_core.InputSignal<string | undefined>;
|
|
4228
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
4229
|
+
readonly size: _angular_core.InputSignal<YuwsAvatarNameCellSize>;
|
|
4230
|
+
protected readonly avatar: _angular_core.Signal<{
|
|
4231
|
+
size: YuwAvatarSizeDto;
|
|
4232
|
+
class: string;
|
|
4233
|
+
}>;
|
|
4234
|
+
protected readonly initials: _angular_core.Signal<string>;
|
|
4235
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsAvatarNameCellComponent, never>;
|
|
4236
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsAvatarNameCellComponent, "yuws-avatar-name-cell", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4237
|
+
}
|
|
4238
|
+
|
|
4239
|
+
/**
|
|
4240
|
+
* Table cell that clamps its text to two lines, breaking anywhere, for long values with no spaces such as tokens. The
|
|
4241
|
+
* full text stays in the `title`.
|
|
4242
|
+
*
|
|
4243
|
+
* Inputs:
|
|
4244
|
+
* - `text` (required): Value to show.
|
|
4245
|
+
*/
|
|
4246
|
+
declare class YuwsClampedTextCellComponent {
|
|
4247
|
+
readonly text: _angular_core.InputSignal<string>;
|
|
4248
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsClampedTextCellComponent, never>;
|
|
4249
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsClampedTextCellComponent, "yuws-clamped-text-cell", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4250
|
+
}
|
|
4251
|
+
|
|
4252
|
+
/**
|
|
4253
|
+
* Table cell for a boolean field: a check or a dash. The icon is never the only carrier of the meaning: it takes
|
|
4254
|
+
* `label` as its accessible name.
|
|
4255
|
+
*
|
|
4256
|
+
* Inputs:
|
|
4257
|
+
* - `enabled` (required): Value of the field.
|
|
4258
|
+
* - `label` (required): Accessible text of the state. The consuming app translates it.
|
|
4259
|
+
*/
|
|
4260
|
+
declare class YuwsFlagCellComponent {
|
|
4261
|
+
readonly enabled: _angular_core.InputSignal<boolean>;
|
|
4262
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4263
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFlagCellComponent, never>;
|
|
4264
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsFlagCellComponent, "yuws-flag-cell", never, { "enabled": { "alias": "enabled"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4265
|
+
}
|
|
4266
|
+
|
|
4267
|
+
/**
|
|
4268
|
+
* Icon button at the end of a row, hidden until the row is hovered or keyboard-focused like the pencil of
|
|
4269
|
+
* `buildYuwActionsColumn`; touch devices keep it visible. `icon` is the SVG itself (e.g. `lucideEye`), so the cell does
|
|
4270
|
+
* not have to register every consumer's icon. The host stops the click so a clickable row does not fire too.
|
|
4271
|
+
*
|
|
4272
|
+
* Inputs:
|
|
4273
|
+
* - `action` (required): Callback run on click. An input because `flexRenderComponent` does not subscribe outputs.
|
|
4274
|
+
* - `icon` (required): SVG markup of the icon.
|
|
4275
|
+
* - `label` (required): Accessible name of the button. The consuming app translates it.
|
|
4276
|
+
*/
|
|
4277
|
+
declare class YuwsIconActionCellComponent {
|
|
4278
|
+
readonly action: _angular_core.InputSignal<() => void>;
|
|
4279
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
4280
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4281
|
+
protected run(): void;
|
|
4282
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsIconActionCellComponent, never>;
|
|
4283
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsIconActionCellComponent, "yuws-icon-action-cell", never, { "action": { "alias": "action"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4284
|
+
}
|
|
4285
|
+
|
|
4286
|
+
/** Image size of the cell: `lg` is the 60x60 catalog thumbnail, `md` the 45x45 one. */
|
|
4287
|
+
type YuwsImageCellSize = 'md' | 'lg';
|
|
4288
|
+
/**
|
|
4289
|
+
* Table cell with the image of a row, backed by the initials of `name` when the image is missing or fails to load.
|
|
4290
|
+
* Sizes go through `class` because `yuw-avatar` sizes stop short of them.
|
|
4291
|
+
*
|
|
4292
|
+
* Inputs:
|
|
4293
|
+
* - `imageUrl`: Image of the row. Default is `undefined`.
|
|
4294
|
+
* - `name` (required): What the image shows; its alternative text and the source of the initials.
|
|
4295
|
+
* - `size`: Image size (`'md'`, `'lg'`). Default is `'lg'`.
|
|
4296
|
+
*/
|
|
4297
|
+
declare class YuwsImageCellComponent {
|
|
4298
|
+
readonly imageUrl: _angular_core.InputSignal<string | undefined>;
|
|
4299
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
4300
|
+
readonly size: _angular_core.InputSignal<YuwsImageCellSize>;
|
|
4301
|
+
protected readonly initials: _angular_core.Signal<string>;
|
|
4302
|
+
protected readonly sizeClass: _angular_core.Signal<string>;
|
|
4303
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsImageCellComponent, never>;
|
|
4304
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsImageCellComponent, "yuws-image-cell", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4305
|
+
}
|
|
4306
|
+
|
|
4307
|
+
/**
|
|
4308
|
+
* Table cell with a link that opens in a new tab. It stops the click so a clickable row does not navigate too.
|
|
4309
|
+
*
|
|
4310
|
+
* Inputs:
|
|
4311
|
+
* - `href` (required): Link target.
|
|
4312
|
+
* - `label` (required): Link text. The consuming app translates it.
|
|
4313
|
+
*/
|
|
4314
|
+
declare class YuwsLinkCellComponent {
|
|
4315
|
+
readonly href: _angular_core.InputSignal<string>;
|
|
4316
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4317
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsLinkCellComponent, never>;
|
|
4318
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsLinkCellComponent, "yuws-link-cell", never, { "href": { "alias": "href"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4319
|
+
}
|
|
4320
|
+
|
|
4321
|
+
/**
|
|
4322
|
+
* Table cell with a clickable pill: a state that flips on click (active, blocked) or, without `positive`, a neutral
|
|
4323
|
+
* action such as duplicate. It is a button so it is keyboard reachable, and it stops the click so a clickable row does
|
|
4324
|
+
* not fire too. `toggled` is an input because `flexRenderComponent` does not subscribe outputs.
|
|
4325
|
+
*
|
|
4326
|
+
* Inputs:
|
|
4327
|
+
* - `disabled`: Disables the pill. Default is `false`.
|
|
4328
|
+
* - `label` (required): Visible text. The consuming app translates it.
|
|
4329
|
+
* - `positive`: `true` paints the pill green, `false` red; unset keeps it neutral. Default is `undefined`.
|
|
4330
|
+
* - `toggled` (required): Callback run on click.
|
|
4331
|
+
*/
|
|
4332
|
+
declare class YuwsStatusToggleCellComponent {
|
|
4333
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
4334
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4335
|
+
readonly positive: _angular_core.InputSignal<boolean | undefined>;
|
|
4336
|
+
readonly toggled: _angular_core.InputSignal<() => void>;
|
|
4337
|
+
private readonly _tone;
|
|
4338
|
+
protected readonly toneClass: _angular_core.Signal<string>;
|
|
4339
|
+
protected onClick(event: Event): void;
|
|
4340
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsStatusToggleCellComponent, never>;
|
|
4341
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsStatusToggleCellComponent, "yuws-status-toggle-cell", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "positive": { "alias": "positive"; "required": false; "isSignal": true; }; "toggled": { "alias": "toggled"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4342
|
+
}
|
|
4343
|
+
|
|
4344
|
+
/** Text of a cell with no value. */
|
|
4345
|
+
declare const YUWS_NO_DATA_PLACEHOLDER = "\u2014";
|
|
4346
|
+
/** Options of a text column: whether it sorts and whether its text may wrap. */
|
|
4347
|
+
interface YuwsTextColumnOptions {
|
|
4348
|
+
enableSorting?: boolean;
|
|
4349
|
+
wrap?: boolean;
|
|
4350
|
+
}
|
|
4351
|
+
/** Texts of the two states of a boolean column, already translated. */
|
|
4352
|
+
interface YuwsStateLabels {
|
|
4353
|
+
on: string;
|
|
4354
|
+
off: string;
|
|
4355
|
+
}
|
|
4356
|
+
/** Icon button column. `visible` decides the rows that show the button; without it every row does. */
|
|
4357
|
+
interface YuwsIconActionColumn<Row> {
|
|
4358
|
+
id: string;
|
|
4359
|
+
icon: string;
|
|
4360
|
+
label: string;
|
|
4361
|
+
header?: string;
|
|
4362
|
+
onAction: (row: Row) => void;
|
|
4363
|
+
visible?: (row: Row) => boolean;
|
|
4364
|
+
}
|
|
4365
|
+
/** State column that flips on click. `disabled` locks the rows whose state cannot change. */
|
|
4366
|
+
interface YuwsStatusToggleColumn<Row> {
|
|
4367
|
+
key: keyof Row & string;
|
|
4368
|
+
header: string;
|
|
4369
|
+
labels: YuwsStateLabels;
|
|
4370
|
+
positive: (row: Row) => boolean;
|
|
4371
|
+
toggled: (row: Row) => void;
|
|
4372
|
+
disabled?: (row: Row) => boolean;
|
|
4373
|
+
}
|
|
4374
|
+
/** Text column that shows `YUWS_NO_DATA_PLACEHOLDER` when the value is missing or an empty string. */
|
|
4375
|
+
declare function buildYuwsOptionalTextColumn<Row extends Record<string, unknown>>(key: keyof Row & string, header: string, options?: YuwsTextColumnOptions): YuwDatatableColumnDef<Row>;
|
|
4376
|
+
/** Date and time column formatted for `locale`, with `YUWS_NO_DATA_PLACEHOLDER` when the row has none. */
|
|
4377
|
+
declare function buildYuwsDateTimeColumn<Row extends Record<string, unknown>>(key: keyof Row & string, header: string, locale: string | undefined, enableSorting?: boolean): YuwDatatableColumnDef<Row>;
|
|
4378
|
+
/** Read-only active/inactive column of a row that exposes `active`. */
|
|
4379
|
+
declare function buildYuwsActiveStatusColumn<Row extends {
|
|
4380
|
+
active: boolean;
|
|
4381
|
+
}>(header: string, labels: YuwsStateLabels, meta?: YuwDatatableColumnDef<Row>['meta']): YuwDatatableColumnDef<Row>;
|
|
4382
|
+
/** State column that flips on click, painted green or red by `positive`. */
|
|
4383
|
+
declare function buildYuwsStatusToggleColumn<Row extends Record<string, unknown>>(column: YuwsStatusToggleColumn<Row>): YuwDatatableColumnDef<Row>;
|
|
4384
|
+
/** Last column with an icon button that runs `onAction` on the row. */
|
|
4385
|
+
declare function buildYuwsIconActionColumn<Row extends RowData>(column: YuwsIconActionColumn<Row>): YuwDatatableColumnDef<Row>;
|
|
4386
|
+
|
|
4387
|
+
/**
|
|
4388
|
+
* Button that copies a value to the clipboard without showing it. The icon turns into a check for a moment, and the
|
|
4389
|
+
* optional messages raise a toast for whoever looks elsewhere. Copying again restarts the wait. The host stops the
|
|
4390
|
+
* click because the button usually lives in a clickable row.
|
|
4391
|
+
*
|
|
4392
|
+
* Inputs:
|
|
4393
|
+
* - `ariaLabel` (required): Accessible name of the button. The consuming app translates it.
|
|
4394
|
+
* - `copiedMessage`: Success toast text; no toast when unset. Default is `undefined`.
|
|
4395
|
+
* - `failedMessage`: Error toast text; no toast when unset. Default is `undefined`.
|
|
4396
|
+
* - `value` (required): Text copied to the clipboard.
|
|
4397
|
+
*/
|
|
4398
|
+
declare class YuwsCopyButtonComponent {
|
|
4399
|
+
private readonly _navigator;
|
|
4400
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
4401
|
+
readonly copiedMessage: _angular_core.InputSignal<string | undefined>;
|
|
4402
|
+
readonly failedMessage: _angular_core.InputSignal<string | undefined>;
|
|
4403
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
4404
|
+
private readonly _copies;
|
|
4405
|
+
protected readonly copied: _angular_core.Signal<boolean>;
|
|
4406
|
+
protected copy(): Promise<void>;
|
|
4407
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsCopyButtonComponent, never>;
|
|
4408
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsCopyButtonComponent, "yuws-copy-button", never, { "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "copiedMessage": { "alias": "copiedMessage"; "required": false; "isSignal": true; }; "failedMessage": { "alias": "failedMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4409
|
+
}
|
|
4410
|
+
|
|
4411
|
+
/** State a `yuws-confirm-dialog` reads: whether it is open, its title and what confirming does. */
|
|
4412
|
+
interface YuwsConfirmationState {
|
|
4413
|
+
readonly open: WritableSignal<boolean>;
|
|
4414
|
+
readonly title: Signal<string>;
|
|
4415
|
+
confirm(): void;
|
|
4416
|
+
}
|
|
4417
|
+
|
|
4418
|
+
/**
|
|
4419
|
+
* Dialog that asks to confirm an action on a row (delete, restore, block). It opens from its state rather than from a
|
|
4420
|
+
* trigger of its own, because the row starts the action.
|
|
4421
|
+
*
|
|
4422
|
+
* Inputs:
|
|
4423
|
+
* - `cancelLabel` (required): Cancel button text. The consuming app translates it.
|
|
4424
|
+
* - `confirmation` (required): Open state, title and confirm callback.
|
|
4425
|
+
* - `confirmLabel` (required): Confirm button text. The consuming app translates it.
|
|
4426
|
+
* - `description` (required): Body text. The consuming app translates it.
|
|
4427
|
+
* - `destructive`: Paints the confirm button red, for what cannot be undone. Default is `false`.
|
|
4428
|
+
*/
|
|
4429
|
+
declare class YuwsConfirmDialogComponent {
|
|
4430
|
+
readonly cancelLabel: _angular_core.InputSignal<string>;
|
|
4431
|
+
readonly confirmation: _angular_core.InputSignal<YuwsConfirmationState>;
|
|
4432
|
+
readonly confirmLabel: _angular_core.InputSignal<string>;
|
|
4433
|
+
readonly description: _angular_core.InputSignal<string>;
|
|
4434
|
+
readonly destructive: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4435
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsConfirmDialogComponent, never>;
|
|
4436
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsConfirmDialogComponent, "yuws-confirm-dialog", never, { "cancelLabel": { "alias": "cancelLabel"; "required": true; "isSignal": true; }; "confirmation": { "alias": "confirmation"; "required": true; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": true; "isSignal": true; }; "destructive": { "alias": "destructive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4437
|
+
}
|
|
4438
|
+
|
|
4439
|
+
/**
|
|
4440
|
+
* Combobox for a custom filter (`yuwsFilterContent`) of `yuws-list-toolbar` that looks like the toolbar's own filters:
|
|
4441
|
+
* a secondary button with the group label in bold followed by the selection.
|
|
4442
|
+
*
|
|
4443
|
+
* Inputs:
|
|
4444
|
+
* - `emptyText` (required): Text when the search finds nothing. The consuming app translates it.
|
|
4445
|
+
* - `idleColor`: Trigger color, matching the toolbar's idle filters. Default is `'secondary'`.
|
|
4446
|
+
* - `label` (required): Group label; also the trigger's accessible name.
|
|
4447
|
+
* - `options` (required): Options to pick from.
|
|
4448
|
+
* - `searchPlaceholder`: Placeholder of the search box. Default is `undefined`.
|
|
4449
|
+
* - `value` (model): Selected value.
|
|
4450
|
+
*/
|
|
4451
|
+
declare class YuwsFilterComboboxComponent {
|
|
4452
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
4453
|
+
readonly idleColor: _angular_core.InputSignal<YuwColorDto>;
|
|
4454
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4455
|
+
readonly options: _angular_core.InputSignal<YuwComboboxOptionDto<unknown>[]>;
|
|
4456
|
+
readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
4457
|
+
readonly value: _angular_core.ModelSignal<YuwComboboxValue>;
|
|
4458
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFilterComboboxComponent, never>;
|
|
4459
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsFilterComboboxComponent, "yuws-filter-combobox", never, { "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "idleColor": { "alias": "idleColor"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
4460
|
+
}
|
|
4461
|
+
|
|
4462
|
+
/** Texts of the fixed buttons of a `yuws-form-sheet`, already translated by the consuming app. */
|
|
4463
|
+
interface YuwsFormSheetLabels {
|
|
4464
|
+
cancel: string;
|
|
4465
|
+
close: string;
|
|
4466
|
+
save: string;
|
|
4467
|
+
}
|
|
4468
|
+
|
|
4469
|
+
/**
|
|
4470
|
+
* Side edit panel of an entity: the sheet, its title and the cancel/save footer. It only reports `save`, `remove`,
|
|
4471
|
+
* `restore` and `back`: composing the entity and closing the sheet stay with the host, which owns the draft. It opens
|
|
4472
|
+
* from a row, so it has no trigger.
|
|
4473
|
+
*
|
|
4474
|
+
* Inputs:
|
|
4475
|
+
* - `backLabel`: Turns the panel into a sub-step: a back arrow with this accessible name precedes the title, the close
|
|
4476
|
+
* button goes away and cancel emits `back`. Default is `undefined`.
|
|
4477
|
+
* - `errorMessage`: Rejection shown above the footer, so the draft stays on screen to be fixed. Default is `undefined`.
|
|
4478
|
+
* - `hideFooter`: Hides the footer. Default is `false`.
|
|
4479
|
+
* - `labels` (required): Cancel, close and save texts.
|
|
4480
|
+
* - `panelClass`: Class of the sheet panel. Default is `'w-full sm:max-w-md'`.
|
|
4481
|
+
* - `readonly`: Drops the save button. Default is `false`.
|
|
4482
|
+
* - `removeDisabled`: Disables the delete button. Default is `false`.
|
|
4483
|
+
* - `removeLabel`: Renders the delete button with this text. Default is `undefined`.
|
|
4484
|
+
* - `restoreLabel`: Renders the restore button with this text. Default is `undefined`.
|
|
4485
|
+
* - `saveDisabled`: Disables the save button. Default is `false`.
|
|
4486
|
+
* - `saving`: Disables the footer actions while the host's write is in flight. Default is `false`.
|
|
4487
|
+
* - `title` (required): Panel title.
|
|
4488
|
+
* - `open` (model): Whether the panel is open.
|
|
4489
|
+
*
|
|
4490
|
+
* Outputs: `back`, `remove`, `restore`, `save`.
|
|
4491
|
+
*/
|
|
4492
|
+
declare class YuwsFormSheetComponent {
|
|
4493
|
+
readonly backLabel: _angular_core.InputSignal<string | undefined>;
|
|
4494
|
+
readonly errorMessage: _angular_core.InputSignal<string | undefined>;
|
|
4495
|
+
readonly hideFooter: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4496
|
+
readonly labels: _angular_core.InputSignal<YuwsFormSheetLabels>;
|
|
4497
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
4498
|
+
readonly panelClass: _angular_core.InputSignal<string>;
|
|
4499
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4500
|
+
readonly removeDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4501
|
+
readonly removeLabel: _angular_core.InputSignal<string | undefined>;
|
|
4502
|
+
readonly restoreLabel: _angular_core.InputSignal<string | undefined>;
|
|
4503
|
+
readonly saveDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4504
|
+
readonly saving: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4505
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
4506
|
+
readonly back: _angular_core.OutputEmitterRef<void>;
|
|
4507
|
+
readonly remove: _angular_core.OutputEmitterRef<void>;
|
|
4508
|
+
readonly restore: _angular_core.OutputEmitterRef<void>;
|
|
4509
|
+
readonly save: _angular_core.OutputEmitterRef<void>;
|
|
4510
|
+
protected onCancel(): void;
|
|
4511
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFormSheetComponent, never>;
|
|
4512
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsFormSheetComponent, "yuws-form-sheet", never, { "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hideFooter": { "alias": "hideFooter"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "open": { "alias": "open"; "required": true; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "removeDisabled": { "alias": "removeDisabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "restoreLabel": { "alias": "restoreLabel"; "required": false; "isSignal": true; }; "saveDisabled": { "alias": "saveDisabled"; "required": false; "isSignal": true; }; "saving": { "alias": "saving"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "open": "openChange"; "back": "back"; "remove": "remove"; "restore": "restore"; "save": "save"; }, never, ["*"], true, never>;
|
|
4513
|
+
}
|
|
4514
|
+
|
|
4515
|
+
/**
|
|
4516
|
+
* Image field of a form: label, avatar with the current image and an upload button. Without an image the avatar shows
|
|
4517
|
+
* the first letter of `name`.
|
|
4518
|
+
*
|
|
4519
|
+
* Inputs:
|
|
4520
|
+
* - `inputId` (required): Id of the file input, tied to the label.
|
|
4521
|
+
* - `label` (required): Field label. The consuming app translates it.
|
|
4522
|
+
* - `name` (required): What the image represents; its alternative text.
|
|
4523
|
+
* - `src`: Image already stored. Default is `undefined`.
|
|
4524
|
+
* - `uploadLabel` (required): Upload button text. The consuming app translates it.
|
|
4525
|
+
* - `value` (model): Files picked, sent by the form on save.
|
|
4526
|
+
*/
|
|
4527
|
+
declare class YuwsImageFieldComponent {
|
|
4528
|
+
readonly inputId: _angular_core.InputSignal<string>;
|
|
4529
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4530
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
4531
|
+
readonly src: _angular_core.InputSignal<string | undefined>;
|
|
4532
|
+
readonly uploadLabel: _angular_core.InputSignal<string>;
|
|
4533
|
+
readonly value: _angular_core.ModelSignal<File[]>;
|
|
4534
|
+
protected readonly initial: _angular_core.Signal<string>;
|
|
4535
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsImageFieldComponent, never>;
|
|
4536
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsImageFieldComponent, "yuws-image-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
4537
|
+
}
|
|
4538
|
+
|
|
4539
|
+
/**
|
|
4540
|
+
* Avatar with a button to pick an image that is kept as a `data:` URL in `imageUrl`, for backends that take the image
|
|
4541
|
+
* inline. The picked file is cleared once read, because what is shown and saved is `imageUrl`.
|
|
4542
|
+
*
|
|
4543
|
+
* Inputs:
|
|
4544
|
+
* - `fallback`: Initials shown without an image. Default is the initials of `name`.
|
|
4545
|
+
* - `name` (required): What the image represents; its alternative text.
|
|
4546
|
+
* - `uploadLabel` (required): Upload button text. The consuming app translates it.
|
|
4547
|
+
* - `imageUrl` (model): Current image as a URL or `data:` URL.
|
|
4548
|
+
*/
|
|
4549
|
+
declare class YuwsImageUploadComponent {
|
|
4550
|
+
readonly fallback: _angular_core.InputSignal<string | undefined>;
|
|
4551
|
+
readonly imageUrl: _angular_core.ModelSignal<string | undefined>;
|
|
4552
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
4553
|
+
readonly uploadLabel: _angular_core.InputSignal<string>;
|
|
4554
|
+
protected readonly files: _angular_core.WritableSignal<File[]>;
|
|
4555
|
+
protected readonly initials: _angular_core.Signal<string>;
|
|
4556
|
+
protected onFiles(files: File[]): Promise<void>;
|
|
4557
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsImageUploadComponent, never>;
|
|
4558
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsImageUploadComponent, "yuws-image-upload", never, { "fallback": { "alias": "fallback"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": true; "isSignal": true; }; }, { "imageUrl": "imageUrlChange"; }, never, never, true, never>;
|
|
4559
|
+
}
|
|
4560
|
+
|
|
4561
|
+
/** Text of the page size selector and its range message. */
|
|
4562
|
+
interface YuwsPageSizeLabels {
|
|
4563
|
+
readonly label: string;
|
|
4564
|
+
readonly empty: string;
|
|
4565
|
+
readonly range: (range: YuwPageRange) => string;
|
|
4566
|
+
}
|
|
4567
|
+
/** Text of the standalone pagination footer. */
|
|
4568
|
+
interface YuwsListPaginationLabels {
|
|
4569
|
+
readonly pageSize: YuwsPageSizeLabels;
|
|
4570
|
+
readonly ariaLabel: string;
|
|
4571
|
+
readonly previous: string;
|
|
4572
|
+
readonly next: string;
|
|
4573
|
+
readonly ellipsis: string;
|
|
4574
|
+
}
|
|
4575
|
+
|
|
4576
|
+
/**
|
|
4577
|
+
* Sortable, paginated `yuw-datatable` in card appearance bound to a `YuwPagedList`, with the page-size picker in its
|
|
4578
|
+
* pagination slot.
|
|
4579
|
+
*
|
|
4580
|
+
* Inputs:
|
|
4581
|
+
* - `columns` (required): Column definitions.
|
|
4582
|
+
* - `data` (required): Rows of the current page.
|
|
4583
|
+
* - `emptyText` (required): Text without rows. The consuming app translates it.
|
|
4584
|
+
* - `labels` (required): Pagination and page-size texts.
|
|
4585
|
+
* - `list` (required): Paged list that owns pagination and sorting.
|
|
4586
|
+
* - `loading`: Shows the loading state and locks the page size. Default is `false`.
|
|
4587
|
+
* - `rowClass`: Class per row. Default is `undefined`.
|
|
4588
|
+
* - `selectable`: Adds row selection. Default is `false`.
|
|
4589
|
+
* - `total` (required): Total rows across pages.
|
|
4590
|
+
* - `columnVisibility` (model): Hidden columns.
|
|
4591
|
+
*
|
|
4592
|
+
* Outputs:
|
|
4593
|
+
* - `rowClicked`: Emits the clicked row.
|
|
4594
|
+
*/
|
|
4595
|
+
declare class YuwsListTableComponent<Row extends RowData> {
|
|
4596
|
+
readonly columns: _angular_core.InputSignal<YuwDatatableColumnDef<Row>[]>;
|
|
4597
|
+
readonly columnVisibility: _angular_core.ModelSignal<ColumnVisibilityState>;
|
|
4598
|
+
readonly data: _angular_core.InputSignal<Row[]>;
|
|
4599
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
4600
|
+
readonly labels: _angular_core.InputSignal<YuwsListPaginationLabels>;
|
|
4601
|
+
readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
|
|
4602
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4603
|
+
readonly rowClass: _angular_core.InputSignal<YuwDatatableRowClass<Row> | undefined>;
|
|
4604
|
+
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4605
|
+
readonly total: _angular_core.InputSignal<number>;
|
|
4606
|
+
readonly rowClicked: _angular_core.OutputEmitterRef<Row>;
|
|
4607
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsListTableComponent<any>, never>;
|
|
4608
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsListTableComponent<any>, "yuws-list-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; }, { "columnVisibility": "columnVisibilityChange"; "rowClicked": "rowClicked"; }, never, never, true, never>;
|
|
4609
|
+
}
|
|
4610
|
+
|
|
4611
|
+
/**
|
|
4612
|
+
* Page size selector and range message of a `YuwPagedList`; in a datatable it takes the pagination slot.
|
|
4613
|
+
*
|
|
4614
|
+
* Inputs:
|
|
4615
|
+
* - `disabled`: Disables the page size selector. Default is `false`.
|
|
4616
|
+
* - `labels`: Required `YuwsPageSizeLabels` with the selector label, the text for an empty list and the function that builds the range message.
|
|
4617
|
+
* - `list`: Required `YuwPagedList` whose page size is chosen and whose range is shown in the message.
|
|
4618
|
+
*/
|
|
4619
|
+
declare class YuwsPageSizeComponent {
|
|
4620
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4621
|
+
readonly labels: _angular_core.InputSignal<YuwsPageSizeLabels>;
|
|
4622
|
+
readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
|
|
4623
|
+
protected readonly message: _angular_core.Signal<string>;
|
|
4624
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsPageSizeComponent, never>;
|
|
4625
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsPageSizeComponent, "yuws-page-size", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4626
|
+
}
|
|
4627
|
+
|
|
4628
|
+
/**
|
|
4629
|
+
* Pagination footer for lists without a datatable: the page size selector with its range message
|
|
4630
|
+
* and the page navigation, both driven by one `YuwPagedList`. A disabled `fieldset` blocks its buttons.
|
|
4631
|
+
*
|
|
4632
|
+
* Inputs:
|
|
4633
|
+
* - `disabled`: Disables the page size selector and the page buttons. Default is `false`.
|
|
4634
|
+
* - `labels`: Required `YuwsListPaginationLabels` with the consumer's text for the page size selector, the navigation aria label and the previous, next and ellipsis texts.
|
|
4635
|
+
* - `list`: Required `YuwPagedList` holding the current page, page size, total pages and range; changes made in the footer are written back to it.
|
|
4636
|
+
*/
|
|
4637
|
+
declare class YuwsListPaginationComponent {
|
|
4638
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4639
|
+
readonly labels: _angular_core.InputSignal<YuwsListPaginationLabels>;
|
|
4640
|
+
readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
|
|
4641
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsListPaginationComponent, never>;
|
|
4642
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsListPaginationComponent, "yuws-list-pagination", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4643
|
+
}
|
|
4644
|
+
|
|
4645
|
+
/**
|
|
4646
|
+
* Page title, optional description and up to two actions, each rendered when its label is set.
|
|
4647
|
+
* On mobile the primary action shows only its icon, or `primaryMobileLabel`. Icons are `@ng-icons`
|
|
4648
|
+
* names; the consumer registers any beyond `lucidePlus` with `provideIcons`.
|
|
4649
|
+
*
|
|
4650
|
+
* Inputs:
|
|
4651
|
+
* - `backLabel`: Text of the back button, which renders only when set; on small screens only its arrow shows.
|
|
4652
|
+
* - `description`: Optional subtitle under the title.
|
|
4653
|
+
* - `primaryDisabled`: Disables the primary action, which stays visible but ignores clicks, e.g. while the list it creates items for is loading.
|
|
4654
|
+
* - `primaryIcon`: Icon name shown in the primary action.
|
|
4655
|
+
* - `primaryLabel`: Text of the primary action, which renders only when set.
|
|
4656
|
+
* - `primaryMobileLabel`: Text the primary action shows on small screens instead of its label.
|
|
4657
|
+
* - `secondaryIcon`: Icon name shown in the secondary action.
|
|
4658
|
+
* - `secondaryLabel`: Text of the secondary action, which renders only when set; hidden on small screens, leaving its icon.
|
|
4659
|
+
* - `title`: Required page title.
|
|
4660
|
+
*
|
|
4661
|
+
* Outputs:
|
|
4662
|
+
* - `backClicked`: Emits the `MouseEvent` of the back button.
|
|
4663
|
+
* - `primaryClicked`: Emits the `MouseEvent` of the primary action.
|
|
4664
|
+
* - `secondaryClicked`: Emits the `MouseEvent` of the secondary action.
|
|
4665
|
+
*/
|
|
4666
|
+
declare class YuwsPageHeaderComponent {
|
|
4667
|
+
readonly backLabel: _angular_core.InputSignal<string | undefined>;
|
|
4668
|
+
readonly description: _angular_core.InputSignal<string | undefined>;
|
|
4669
|
+
readonly primaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4670
|
+
readonly primaryIcon: _angular_core.InputSignal<string | undefined>;
|
|
4671
|
+
readonly primaryLabel: _angular_core.InputSignal<string | undefined>;
|
|
4672
|
+
readonly primaryMobileLabel: _angular_core.InputSignal<string | undefined>;
|
|
4673
|
+
readonly secondaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4674
|
+
readonly secondaryIcon: _angular_core.InputSignal<string | undefined>;
|
|
4675
|
+
readonly secondaryLabel: _angular_core.InputSignal<string | undefined>;
|
|
4676
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
4677
|
+
readonly backClicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4678
|
+
readonly primaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4679
|
+
readonly secondaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4680
|
+
protected readonly isMobile: _angular_core.Signal<boolean>;
|
|
4681
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsPageHeaderComponent, never>;
|
|
4682
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsPageHeaderComponent, "yuws-page-header", never, { "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; "isSignal": true; }; "primaryIcon": { "alias": "primaryIcon"; "required": false; "isSignal": true; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; "isSignal": true; }; "primaryMobileLabel": { "alias": "primaryMobileLabel"; "required": false; "isSignal": true; }; "secondaryDisabled": { "alias": "secondaryDisabled"; "required": false; "isSignal": true; }; "secondaryIcon": { "alias": "secondaryIcon"; "required": false; "isSignal": true; }; "secondaryLabel": { "alias": "secondaryLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "backClicked": "backClicked"; "primaryClicked": "primaryClicked"; "secondaryClicked": "secondaryClicked"; }, never, never, true, never>;
|
|
4683
|
+
}
|
|
4684
|
+
|
|
4685
|
+
/**
|
|
4686
|
+
* Grid of projected cards, usually `yuws-card-grid-item`s in an `@for`. `loading` shows
|
|
4687
|
+
* `skeletonCount` placeholders shaped by `skeletonClass`; `empty` shows `emptyText`; `columnsClass`
|
|
4688
|
+
* holds the Tailwind column utilities.
|
|
4689
|
+
*
|
|
4690
|
+
* Inputs:
|
|
4691
|
+
* - `columnsClass`: Tailwind grid column utilities applied to the grid and its skeleton. Default is `'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'`.
|
|
4692
|
+
* - `empty`: Shows `emptyText` instead of the projected cards. Default is `false`.
|
|
4693
|
+
* - `emptyText`: Required message shown when `empty` is set. The app supplies and translates it.
|
|
4694
|
+
* - `loading`: Shows `skeletonCount` placeholders instead of the content; takes precedence over `empty`. Default is `false`.
|
|
4695
|
+
* - `skeletonClass`: Extra classes sizing each placeholder, e.g. its height. Default is `'h-16'`.
|
|
4696
|
+
* - `skeletonCount`: Number of placeholders shown while loading. Default is `12`.
|
|
4697
|
+
*
|
|
4698
|
+
* `YuwsCardGridComponent.COLUMNS` holds the column classes admin lists share per view mode — `list`
|
|
4699
|
+
* is one column, `block` grows from one to five, and `tags` packs small tag cards up to six — so every listing lays out its cards the same
|
|
4700
|
+
* way: `[columnsClass]="YuwsCardGridComponent.COLUMNS[mode]"`.
|
|
4701
|
+
*/
|
|
4702
|
+
declare class YuwsCardGridComponent {
|
|
4703
|
+
readonly columnsClass: _angular_core.InputSignal<string>;
|
|
4704
|
+
readonly empty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4705
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
4706
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4707
|
+
readonly skeletonClass: _angular_core.InputSignal<string>;
|
|
4708
|
+
readonly skeletonCount: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4709
|
+
static readonly COLUMNS: {
|
|
4710
|
+
readonly list: "grid-cols-1";
|
|
4711
|
+
readonly block: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5";
|
|
4712
|
+
readonly tags: "grid-cols-1 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6";
|
|
4713
|
+
};
|
|
4714
|
+
protected readonly skeletons: _angular_core.Signal<number[]>;
|
|
4715
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsCardGridComponent, never>;
|
|
4716
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsCardGridComponent, "yuws-card-grid", never, { "columnsClass": { "alias": "columnsClass"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "skeletonClass": { "alias": "skeletonClass"; "required": false; "isSignal": true; }; "skeletonCount": { "alias": "skeletonCount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4717
|
+
}
|
|
4718
|
+
|
|
4719
|
+
/**
|
|
4720
|
+
* While `pending` the card stays hidden in place under a skeleton, so the grid does not jump.
|
|
4721
|
+
*
|
|
4722
|
+
* Inputs:
|
|
4723
|
+
* - `pending`: Hides the projected card and overlays a skeleton while it is loading. Default is `false`.
|
|
4724
|
+
*/
|
|
4725
|
+
declare class YuwsCardGridItemComponent {
|
|
4726
|
+
readonly pending: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4727
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsCardGridItemComponent, never>;
|
|
4728
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsCardGridItemComponent, "yuws-card-grid-item", never, { "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4729
|
+
}
|
|
4730
|
+
|
|
4731
|
+
interface YuwsFilterOptionDto {
|
|
4732
|
+
readonly value: string;
|
|
4733
|
+
readonly label: string;
|
|
4734
|
+
readonly disabled?: boolean;
|
|
4735
|
+
}
|
|
4736
|
+
/** `single` keeps one value and closes its list after a pick, `multiple` keeps a set. */
|
|
4737
|
+
type YuwsFilterGroupMode = 'single' | 'multiple';
|
|
4738
|
+
/**
|
|
4739
|
+
* `options` feeds the group's combobox. A `yuwsFilterContent` template of the same id replaces that
|
|
4740
|
+
* combobox; `mode` then only states whether its value is a string or an array.
|
|
4741
|
+
*/
|
|
4742
|
+
interface YuwsFilterGroupDto {
|
|
4743
|
+
readonly id: string;
|
|
4744
|
+
readonly label: string;
|
|
4745
|
+
readonly mode: YuwsFilterGroupMode;
|
|
4746
|
+
readonly options?: readonly YuwsFilterOptionDto[];
|
|
4747
|
+
}
|
|
4748
|
+
/** Value of one group: a string for `single` groups, an array for `multiple`. */
|
|
4749
|
+
type YuwsFilterValue = string | readonly string[];
|
|
4750
|
+
/** Selection keyed by `YuwsFilterGroupDto.id`. */
|
|
4751
|
+
type YuwsFilterSelection = Readonly<Record<string, YuwsFilterValue>>;
|
|
4752
|
+
/** A named selection the user saved; `id` is assigned by the consumer that persists it. */
|
|
4753
|
+
interface YuwsFilterSetDto {
|
|
4754
|
+
readonly id: string;
|
|
4755
|
+
readonly name: string;
|
|
4756
|
+
readonly selection: YuwsFilterSelection;
|
|
4757
|
+
}
|
|
4758
|
+
/** Payload of `setSaved`: the name the user typed and the selection applied at that moment. */
|
|
4759
|
+
interface YuwsFilterSetSaveDto {
|
|
4760
|
+
readonly name: string;
|
|
4761
|
+
readonly selection: YuwsFilterSelection;
|
|
4762
|
+
}
|
|
4763
|
+
/** Payload of `setRenamed`. */
|
|
4764
|
+
interface YuwsFilterSetRenameDto {
|
|
4765
|
+
readonly id: string;
|
|
4766
|
+
readonly name: string;
|
|
4767
|
+
}
|
|
4768
|
+
/** Texts of the saved-sets control and its dialog; the consumer translates them. */
|
|
4769
|
+
interface YuwsFilterSetLabels {
|
|
4770
|
+
readonly title: string;
|
|
4771
|
+
readonly empty: string;
|
|
4772
|
+
readonly save: string;
|
|
4773
|
+
readonly select: string;
|
|
4774
|
+
readonly none: string;
|
|
4775
|
+
readonly edit: string;
|
|
4776
|
+
readonly delete: string;
|
|
4777
|
+
readonly saveTitle: string;
|
|
4778
|
+
readonly renameTitle: string;
|
|
4779
|
+
readonly deleteTitle: string;
|
|
4780
|
+
readonly deleteMessage: (name: string) => string;
|
|
4781
|
+
readonly nameLabel: string;
|
|
4782
|
+
readonly confirm: string;
|
|
4783
|
+
readonly cancel: string;
|
|
4784
|
+
}
|
|
4785
|
+
/**
|
|
4786
|
+
* `title` names the filter row for assistive tech, `add` is the add-filter button, `remove` the
|
|
4787
|
+
* accessible name of the remove button of each active filter, `clearAll` the button that removes
|
|
4788
|
+
* every filter, and `empty` the text of a filter search with no match.
|
|
4789
|
+
*/
|
|
4790
|
+
interface YuwsListToolbarFilterLabels {
|
|
4791
|
+
readonly title: string;
|
|
4792
|
+
readonly add: string;
|
|
4793
|
+
readonly remove: string;
|
|
4794
|
+
readonly clearAll: string;
|
|
4795
|
+
readonly empty: string;
|
|
4796
|
+
readonly sets?: YuwsFilterSetLabels;
|
|
4797
|
+
}
|
|
4798
|
+
interface YuwsListToolbarSearchLabels {
|
|
4799
|
+
readonly expand: string;
|
|
4800
|
+
readonly clear: string;
|
|
4801
|
+
}
|
|
4802
|
+
interface YuwsListToolbarColumnsLabels {
|
|
4803
|
+
readonly trigger: string;
|
|
4804
|
+
readonly placeholder: string;
|
|
4805
|
+
readonly empty: string;
|
|
4806
|
+
}
|
|
4807
|
+
type YuwsViewMode = 'list' | 'block';
|
|
4808
|
+
type YuwsListToolbarViewModeLabels = Readonly<Record<YuwsViewMode, string>>;
|
|
4809
|
+
/** ng-icon names of the view mode buttons; the consumer registers custom ones with `provideIcons`. */
|
|
4810
|
+
type YuwsListToolbarViewModeIcons = Readonly<Record<YuwsViewMode, string>>;
|
|
4811
|
+
interface YuwsListToolbarLabels {
|
|
4812
|
+
readonly filters: YuwsListToolbarFilterLabels;
|
|
4813
|
+
readonly search: YuwsListToolbarSearchLabels;
|
|
4814
|
+
readonly columns: YuwsListToolbarColumnsLabels;
|
|
4815
|
+
readonly export: string;
|
|
4816
|
+
readonly viewMode?: YuwsListToolbarViewModeLabels;
|
|
4817
|
+
}
|
|
4818
|
+
|
|
4819
|
+
/**
|
|
4820
|
+
* Template context of a `yuwsFilterContent` template.
|
|
4821
|
+
*
|
|
4822
|
+
* `$implicit`: The group the template renders; same as `let-group`.
|
|
4823
|
+
* `value`: Applied value of the group, `undefined` while it holds nothing.
|
|
4824
|
+
* `change`: Applies a new value to the group; `undefined` or an empty array clears it.
|
|
4825
|
+
*/
|
|
4826
|
+
interface YuwsFilterContentContext {
|
|
4827
|
+
readonly $implicit: YuwsFilterGroupDto;
|
|
4828
|
+
readonly value: YuwsFilterValue | undefined;
|
|
4829
|
+
readonly change: (value: YuwsFilterValue | undefined) => void;
|
|
4830
|
+
}
|
|
4831
|
+
/**
|
|
4832
|
+
* Replaces the combobox of one active filter inside `<yuws-list-toolbar>` with projected markup; the
|
|
4833
|
+
* remove button stays after it. Apply it to an `<ng-template>` and pass the id of the group it
|
|
4834
|
+
* renders; that group needs no `options`.
|
|
4835
|
+
*
|
|
4836
|
+
* The template feeds the same applied selection as the comboboxes: calling `change` writes the value
|
|
4837
|
+
* under the group id, so removing, clearing and saved sets work without extra wiring.
|
|
4838
|
+
*
|
|
4839
|
+
* To match the library's filters, render a `yuw-combobox` with a `yuwComboboxTrigger` template that
|
|
4840
|
+
* reads the group label and the selected labels; the row squares its trailing edge and welds it to the
|
|
4841
|
+
* remove button.
|
|
4842
|
+
*
|
|
4843
|
+
* Usage:
|
|
4844
|
+
* ```html
|
|
4845
|
+
* <yuws-list-toolbar [filterGroups]="groups" [(selection)]="selection" [labels]="labels">
|
|
4846
|
+
* <ng-template yuwsFilterContent="customer" let-group let-value="value" let-change="change">
|
|
4847
|
+
* <yuw-combobox [options]="customers" [value]="value" [triggerAriaLabel]="group.label" (valueChange)="change($event)">
|
|
4848
|
+
* <ng-template yuwComboboxTrigger let-summary>
|
|
4849
|
+
* <span class="font-semibold">{{ group.label }}</span> {{ summary }}
|
|
4850
|
+
* </ng-template>
|
|
4851
|
+
* </yuw-combobox>
|
|
4852
|
+
* </ng-template>
|
|
4853
|
+
* </yuws-list-toolbar>
|
|
4854
|
+
* ```
|
|
4855
|
+
*
|
|
4856
|
+
* Inputs:
|
|
4857
|
+
* - `yuwsFilterContent`: Required string; id of the filter group this template renders.
|
|
4858
|
+
*/
|
|
4859
|
+
declare class YuwsFilterContentDirective {
|
|
4860
|
+
readonly templateRef: TemplateRef<YuwsFilterContentContext>;
|
|
4861
|
+
readonly groupId: _angular_core.InputSignal<string>;
|
|
4862
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFilterContentDirective, never>;
|
|
4863
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwsFilterContentDirective, "ng-template[yuwsFilterContent]", never, { "groupId": { "alias": "yuwsFilterContent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4864
|
+
}
|
|
4865
|
+
|
|
4866
|
+
/**
|
|
4867
|
+
* Toolbar of a list page: filters on the leading edge, search, export and column visibility on the
|
|
4868
|
+
* trailing one, and projected content after them. The filter row never shrinks below its star and
|
|
4869
|
+
* add button; the trailing actions take the room they need above that (the search grows into it when
|
|
4870
|
+
* expanded, and shrinks back to fit when that room runs out) and the filter row takes the rest,
|
|
4871
|
+
* scrolling its active filters horizontally with faded edges when they do not fit. Below `md` the active filters move to a
|
|
4872
|
+
* full-width second line, still a single scrolling row, and the trailing actions stay on the first.
|
|
4873
|
+
*
|
|
4874
|
+
* Each control renders only when its input is set: `filterGroups`, `searchPlaceholder`,
|
|
4875
|
+
* `showExport`, `hideableColumns`, `viewMode`. Setting `viewMode` adds a list/block switch bound
|
|
4876
|
+
* two-way to it (`viewModeChange` is the click listener); its names come from `labels.viewMode`. Saved filter sets need `filterSets` and `labels.filters.sets`;
|
|
4877
|
+
* the toolbar emits `setSaved`, `setRenamed` and `setDeleted` and the consumer persists them. `labels` holds every text and the consumer translates it;
|
|
4878
|
+
* `idleColor` is the tone of the filter row's outline controls (filters, add button, star). Each active
|
|
4879
|
+
* group renders a combobox opened from an outline button; a projected `<ng-template yuwsFilterContent="groupId">` replaces it (see
|
|
4880
|
+
* `YuwsFilterContentDirective`). `selection` may be set from outside at any time, e.g. restored from
|
|
4881
|
+
* IndexedDB, and the row shows a filter for every group it holds.
|
|
4882
|
+
*
|
|
4883
|
+
* Inputs:
|
|
4884
|
+
* - `filterGroups`: Filter groups the editor offers; the filter control renders only when set.
|
|
4885
|
+
* - `filterSets`: Saved filter sets; together with `labels.filters.sets` it enables the sets star.
|
|
4886
|
+
* - `filtersDisabled`: Disables every control of the filter row. Default is `false`.
|
|
4887
|
+
* - `hiddenColumns`: Two-way (`[(hiddenColumns)]`) ids of the columns currently hidden. Default is `[]`.
|
|
4888
|
+
* - `hideableColumns`: Options of the columns the user may hide; the columns button renders only when set.
|
|
4889
|
+
* - `idleColor`: `YuwColorDto` tone of the filter row's outline controls. Default is `'neutral'`.
|
|
4890
|
+
* - `labels`: Required `YuwsListToolbarLabels` with the consumer's translated text for every control.
|
|
4891
|
+
* - `search`: Two-way (`[(search)]`) text of the search field. Default is `''`.
|
|
4892
|
+
* - `searchPlaceholder`: Placeholder of the search field; the search renders only when set.
|
|
4893
|
+
* - `selection`: Two-way (`[(selection)]`) applied filter selection, values keyed by group id. Default is `{}`.
|
|
4894
|
+
* - `showExport`: Renders the export button. Default is `false`.
|
|
4895
|
+
* - `viewMode`: Two-way (`[(viewMode)]`) `YuwsViewMode` (`'list'` or `'block'`); the list/block switch renders only when set.
|
|
4896
|
+
* - `viewModeIcons`: Partial override of the switch icons by mode (ng-icon names, registered by the consumer with `provideIcons`). Defaults are `lucideList` and `lucideLayoutGrid`.
|
|
4897
|
+
*
|
|
4898
|
+
* Outputs:
|
|
4899
|
+
* - `exported`: Emits the `MouseEvent` of the export button click.
|
|
4900
|
+
* - `searched`: Emits the current search text on every keystroke and when it is cleared.
|
|
4901
|
+
*/
|
|
4902
|
+
declare class YuwsListToolbarComponent {
|
|
4903
|
+
protected readonly filterContents: _angular_core.Signal<readonly YuwsFilterContentDirective[]>;
|
|
4904
|
+
readonly filterGroups: _angular_core.InputSignal<readonly YuwsFilterGroupDto[] | undefined>;
|
|
4905
|
+
readonly filtersDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4906
|
+
readonly filterSets: _angular_core.InputSignal<readonly YuwsFilterSetDto[] | undefined>;
|
|
4907
|
+
readonly hiddenColumns: _angular_core.ModelSignal<string[]>;
|
|
4908
|
+
readonly hideableColumns: _angular_core.InputSignal<YuwComboboxOptionDto<unknown>[] | undefined>;
|
|
4909
|
+
readonly idleColor: _angular_core.InputSignal<YuwColorDto>;
|
|
4910
|
+
readonly labels: _angular_core.InputSignal<YuwsListToolbarLabels>;
|
|
4911
|
+
readonly search: _angular_core.ModelSignal<string>;
|
|
4912
|
+
readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
4913
|
+
readonly selection: _angular_core.ModelSignal<Readonly<Record<string, yukit_web.YuwsFilterValue>>>;
|
|
4914
|
+
readonly showExport: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4915
|
+
readonly viewMode: _angular_core.ModelSignal<YuwsViewMode | undefined>;
|
|
4916
|
+
readonly viewModeIcons: _angular_core.InputSignal<Partial<Readonly<Record<YuwsViewMode, string>>> | undefined>;
|
|
4917
|
+
readonly exported: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4918
|
+
readonly searched: _angular_core.OutputEmitterRef<string>;
|
|
4919
|
+
readonly setDeleted: _angular_core.OutputEmitterRef<string>;
|
|
4920
|
+
readonly setRenamed: _angular_core.OutputEmitterRef<YuwsFilterSetRenameDto>;
|
|
4921
|
+
readonly setSaved: _angular_core.OutputEmitterRef<YuwsFilterSetSaveDto>;
|
|
4922
|
+
protected readonly isMobile: _angular_core.Signal<boolean>;
|
|
4923
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsListToolbarComponent, never>;
|
|
4924
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsListToolbarComponent, "yuws-list-toolbar", never, { "filterGroups": { "alias": "filterGroups"; "required": false; "isSignal": true; }; "filtersDisabled": { "alias": "filtersDisabled"; "required": false; "isSignal": true; }; "filterSets": { "alias": "filterSets"; "required": false; "isSignal": true; }; "hiddenColumns": { "alias": "hiddenColumns"; "required": false; "isSignal": true; }; "hideableColumns": { "alias": "hideableColumns"; "required": false; "isSignal": true; }; "idleColor": { "alias": "idleColor"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "showExport": { "alias": "showExport"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; "viewModeIcons": { "alias": "viewModeIcons"; "required": false; "isSignal": true; }; }, { "hiddenColumns": "hiddenColumnsChange"; "search": "searchChange"; "selection": "selectionChange"; "viewMode": "viewModeChange"; "exported": "exported"; "searched": "searched"; "setDeleted": "setDeleted"; "setRenamed": "setRenamed"; "setSaved": "setSaved"; }, ["filterContents"], ["*"], true, never>;
|
|
4925
|
+
}
|
|
4926
|
+
|
|
4927
|
+
/**
|
|
4928
|
+
* Walks a signal form with Enter. An invalid current field only shows its error; otherwise focus moves to the next
|
|
4929
|
+
* invalid field, wrapping around; with none left the form is submitted through `submit`, which runs its
|
|
4930
|
+
* `submission.action`. Disabled, hidden and read-only fields never hold the form back. One delegated listener on the
|
|
4931
|
+
* `<form>`, reading the fields from `FormField` at the moment of the key press, so it works with any control bound with
|
|
4932
|
+
* `[formField]`; focus goes to the first focusable descendant because `yuw-*` hosts are `display: contents`.
|
|
4933
|
+
*
|
|
4934
|
+
* Usage:
|
|
4935
|
+
* ```html
|
|
4936
|
+
* <form [formRoot]="form" yuwsAdvanceOnEnter>...</form>
|
|
4937
|
+
* ```
|
|
4938
|
+
*/
|
|
4939
|
+
declare class YuwsAdvanceOnEnterDirective {
|
|
4940
|
+
private readonly _root;
|
|
4941
|
+
private readonly _fields;
|
|
4942
|
+
protected onEnter(event: Event): void;
|
|
4943
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsAdvanceOnEnterDirective, never>;
|
|
4944
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwsAdvanceOnEnterDirective, "form[formRoot][yuwsAdvanceOnEnter]", never, {}, {}, ["_fields"], never, true, never>;
|
|
4945
|
+
}
|
|
4946
|
+
|
|
4947
|
+
/**
|
|
4948
|
+
* Shows the title of a `yuws-page-header` as a text skeleton while it is pending, so a page whose title is entity data
|
|
4949
|
+
* renders a placeholder of the same size instead of an empty gap. The height matches the header's `text-2xl` line.
|
|
4950
|
+
*
|
|
4951
|
+
* Usage:
|
|
4952
|
+
* ```html
|
|
4953
|
+
* <yuws-page-header [title]="title()" [yuwsTitleSkeleton]="!title()" />
|
|
4954
|
+
* ```
|
|
4955
|
+
*/
|
|
4956
|
+
declare class YuwsTitleSkeletonDirective {
|
|
4957
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4958
|
+
protected readonly skeletonClass = "[&_h1]:block [&_h1]:h-8 [&_h1]:w-56 [&_h1]:max-w-full [&_h1]:rounded-md [&_h1]:bg-muted [&_h1]:motion-safe:animate-pulse";
|
|
4959
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsTitleSkeletonDirective, never>;
|
|
4960
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwsTitleSkeletonDirective, "yuws-page-header[yuwsTitleSkeleton]", never, { "loading": { "alias": "yuwsTitleSkeleton"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4961
|
+
}
|
|
4962
|
+
|
|
4963
|
+
export { DATATABLE_ALIGN_CLASS, DATATABLE_LAYOUT_CLASS, DATATABLE_WRAP_CONTENT_CLASS, YUWS_NO_DATA_PLACEHOLDER, YUW_DATATABLE_FEATURES, YUW_DATATABLE_WRAP_MIN_WIDTH, YUW_PASSWORD_REVEAL_STATES, YUW_SIDEBAR_RAIL_ICON_SIZE, YUW_SIDEBAR_RAIL_PADDING, YUW_SIDEBAR_RAIL_WIDTH, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwActionsCellComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwBreadcrumbTrailService, YuwButtonComponent, YuwButtonGroupComponent, YuwButtonGroupContentDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwClassDirective, YuwComboboxComponent, YuwComboboxItemDirective, YuwComboboxTriggerButtonDirective, YuwComboboxTriggerDirective, YuwCommandComponent, YuwCommandDialogComponent, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatatablePaginationDirective, YuwDatatableRowSelect, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwFieldBase, YuwInputAddonImports, YuwInputComponent, YuwInputFileComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwMouseScrollXDirective, YuwMouseScrollYDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetHeaderDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuAvatarButtonDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarRailService, YuwSidebarSeparatorDirective, YuwSidebarSubmenuService, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabContentDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextFieldBase, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, YuwsActiveStatusCellComponent, YuwsAdvanceOnEnterDirective, YuwsAvatarNameCellComponent, YuwsCardGridComponent, YuwsCardGridItemComponent, YuwsClampedTextCellComponent, YuwsConfirmDialogComponent, YuwsCopyButtonComponent, YuwsFilterComboboxComponent, YuwsFilterContentDirective, YuwsFlagCellComponent, YuwsFormSheetComponent, YuwsIconActionCellComponent, YuwsImageCellComponent, YuwsImageFieldComponent, YuwsImageUploadComponent, YuwsLinkCellComponent, YuwsListPaginationComponent, YuwsListTableComponent, YuwsListToolbarComponent, YuwsPageHeaderComponent, YuwsPageSizeComponent, YuwsStatusToggleCellComponent, YuwsTitleSkeletonDirective, buildInputOtpGroups, buildYuwActionsColumn, buildYuwsActiveStatusColumn, buildYuwsDateTimeColumn, buildYuwsIconActionColumn, buildYuwsOptionalTextColumn, buildYuwsStatusToggleColumn, cn, createPagedList, createYuwsSheetEditor, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength, yuwCommandDefaultFilter, yuwsInitialsOf, yuwsMediaQuerySignal, yuwsPendingRowClass, yuwsReadFileAsDataUrl };
|
|
4964
|
+
export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbCrumb, YuwBreadcrumbItemDto, YuwBreadcrumbRouteData, YuwButtonGroupClickDto, YuwButtonGroupItemDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxTriggerContext, YuwComboboxValue, YuwCommandGroupDto, YuwCommandItemDto, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatatableRowClass, YuwDatepickerModeDto, YuwDatepickerValue, YuwFieldSizeDto, YuwInputFileVariantDto, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwPageQuery, YuwPageRange, YuwPageSort, YuwPagedList, YuwPagedListOptions, YuwPaginationRangeItem, YuwPaginationSizeDto, YuwPasswordRevealStateDto, YuwPopoverAlignDto, YuwRadioOptionDto, YuwSearchInputCollapseFromDto, YuwSheetScrollStrategyDto, YuwSheetSideDto, YuwSidebarAvatarDto, YuwSidebarCollapsibleDto, YuwSidebarContentDto, YuwSidebarGroupDto, YuwSidebarItemClickDto, YuwSidebarItemDto, YuwSidebarSideDto, YuwSidebarSubItemDto, YuwSidebarVariantDto, YuwSwitchSizeDto, YuwTabItemDto, YuwTabsActivationModeDto, YuwTabsOrientationDto, YuwTabsVariantDto, YuwTextFieldContract, YuwToasterPositionDto, YuwToasterThemeDto, YuwTooltipPositionDto, YuwsAvatarNameCellSize, YuwsConfirmationState, YuwsFilterContentContext, YuwsFilterGroupDto, YuwsFilterGroupMode, YuwsFilterOptionDto, YuwsFilterSelection, YuwsFilterSetDto, YuwsFilterSetLabels, YuwsFilterSetRenameDto, YuwsFilterSetSaveDto, YuwsFilterValue, YuwsFormSheetLabels, YuwsIconActionColumn, YuwsImageCellSize, YuwsListPaginationLabels, YuwsListToolbarColumnsLabels, YuwsListToolbarFilterLabels, YuwsListToolbarLabels, YuwsListToolbarSearchLabels, YuwsListToolbarViewModeIcons, YuwsListToolbarViewModeLabels, YuwsPageSizeLabels, YuwsSheetEditor, YuwsStateLabels, YuwsStatusToggleColumn, YuwsTextColumnOptions, YuwsViewMode };
|