@edmicro/olkit 1.1.8 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.npmignore +2 -2
- package/fesm2022/edmicro-olkit.mjs +1185 -61
- package/fesm2022/edmicro-olkit.mjs.map +1 -1
- package/olkit.css +1 -1
- package/package.json +1 -1
- package/styles/patterns/big-comb.svg +1 -0
- package/styles/patterns/comb-linear.svg +1 -0
- package/styles/patterns/comb.svg +1 -0
- package/styles/patterns/creative.svg +1 -0
- package/styles/patterns/diamond-left.svg +1 -0
- package/styles/patterns/diamond-right.svg +1 -0
- package/styles/patterns/dots.svg +1 -0
- package/styles/patterns/lines-modern.svg +1 -0
- package/styles/patterns/lines-oblique.svg +1 -0
- package/styles/patterns/lines.svg +1 -0
- package/styles/patterns/modern.svg +1 -0
- package/styles/patterns/oblique-lines.svg +1 -0
- package/styles/patterns/rounded-lines.svg +1 -0
- package/styles/patterns/squares.svg +1 -0
- package/styles/patterns/tech-square.svg +1 -0
- package/styles/patterns/tech-squares.svg +1 -0
- package/styles/patterns/tech.svg +1 -0
- package/styles/patterns/technology-top.svg +1 -0
- package/styles/patterns/technology.svg +1 -0
- package/styles/patterns/vertical-lines.svg +1 -0
- package/styles/patterns.css +163 -0
- package/types/edmicro-olkit.d.ts +718 -10
- package/types/edmicro-olkit.d.ts.map +1 -1
- package/version.txt +2 -2
package/types/edmicro-olkit.d.ts
CHANGED
|
@@ -1984,7 +1984,9 @@ declare class OlDrawerFooter {
|
|
|
1984
1984
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlDrawerFooter, "ol-drawer-footer", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1985
1985
|
}
|
|
1986
1986
|
|
|
1987
|
-
type DropdownPlacement = 'bottom' | 'top' | 'left' | 'right' | 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'
|
|
1987
|
+
type DropdownPlacement = 'bottom' | 'top' | 'left' | 'right' | 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'
|
|
1988
|
+
/** Mở sang bên, căn mép trên / dưới theo nút — vd. menu tài khoản ở đáy sidebar (`right-end`). */
|
|
1989
|
+
| 'right-start' | 'right-end' | 'left-start' | 'left-end';
|
|
1988
1990
|
/**
|
|
1989
1991
|
* `context` là menu chuột phải. Nó KHÔNG neo vào nút trigger như hai kiểu kia
|
|
1990
1992
|
* mà neo vào chỗ con trỏ — nên có thêm một mốc ẩn 0×0 di chuyển theo chuột.
|
|
@@ -2030,6 +2032,12 @@ declare class OlDropdown {
|
|
|
2030
2032
|
*/
|
|
2031
2033
|
readonly appendTo: _angular_core.InputSignal<"body" | null>;
|
|
2032
2034
|
readonly placement: _angular_core.InputSignal<DropdownPlacement>;
|
|
2035
|
+
/**
|
|
2036
|
+
* Khoảng cách (px) từ nút tới panel. Mặc định 8. Tăng khi nút nằm thụt
|
|
2037
|
+
* trong một khung mà panel phải mọc RA NGOÀI khung — vd. thẻ tài khoản trong
|
|
2038
|
+
* `ol-app-nav` (đệm 20px) mở sang phải phải vượt qua mép sidebar.
|
|
2039
|
+
*/
|
|
2040
|
+
readonly offset: _angular_core.InputSignal<number>;
|
|
2033
2041
|
readonly trigger: _angular_core.InputSignal<DropdownTrigger>;
|
|
2034
2042
|
readonly autoClose: _angular_core.InputSignal<DropdownAutoClose>;
|
|
2035
2043
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
@@ -2134,7 +2142,7 @@ declare class OlDropdown {
|
|
|
2134
2142
|
toggle(): void;
|
|
2135
2143
|
private clearHideTimeout;
|
|
2136
2144
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlDropdown, never>;
|
|
2137
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlDropdown, "ol-dropdown", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "triggerClass": { "alias": "triggerClass"; "required": false; "isSignal": true; }; "menuClass": { "alias": "menuClass"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "opened": "opened"; "closed": "closed"; }, never, ["[slot=trigger], [trigger]", "[triggerIcon]", "[triggerIcon]", "*"], true, never>;
|
|
2145
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlDropdown, "ol-dropdown", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "triggerClass": { "alias": "triggerClass"; "required": false; "isSignal": true; }; "menuClass": { "alias": "menuClass"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "opened": "opened"; "closed": "closed"; }, never, ["[slot=trigger], [trigger]", "[triggerIcon]", "[triggerIcon]", "*"], true, never>;
|
|
2138
2146
|
}
|
|
2139
2147
|
|
|
2140
2148
|
declare class OlDropdownItem {
|
|
@@ -3603,6 +3611,16 @@ interface SegmentedOption<T = string | number> {
|
|
|
3603
3611
|
}
|
|
3604
3612
|
type SegmentedColor = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';
|
|
3605
3613
|
type SegmentedSize = 'sm' | 'base';
|
|
3614
|
+
/**
|
|
3615
|
+
* Tông của khung theo NỀN đặt nó lên.
|
|
3616
|
+
*
|
|
3617
|
+
* `default` rãnh xám `bg-neutral-tertiary`, mục chọn nổi nền trắng — nền sáng
|
|
3618
|
+
* `inverse` cho nền TỐI / màu (thanh menu navy): rãnh trắng 15% để LỘ màu nền
|
|
3619
|
+
* bên dưới, chữ mục chưa chọn trắng; mục chọn vẫn nền trắng, chữ
|
|
3620
|
+
* brand-900 GHIM (không đổi theo `.dark`: nền trắng ở cả hai chế
|
|
3621
|
+
* độ — `--text-fg-brand-strong` lật sang brand-300 sẽ chìm)
|
|
3622
|
+
*/
|
|
3623
|
+
type SegmentedVariant = 'default' | 'inverse';
|
|
3606
3624
|
/**
|
|
3607
3625
|
* Chọn MỘT trong vài chế độ loại trừ nhau, đặt cạnh nhau trên một rãnh xám;
|
|
3608
3626
|
* mục đang chọn nổi lên nền trắng (segmented control).
|
|
@@ -3627,6 +3645,13 @@ declare class OlSegmented implements ControlValueAccessor {
|
|
|
3627
3645
|
readonly disabled: _angular_core.ModelSignal<boolean>;
|
|
3628
3646
|
/** Tên nhóm cho bộ đọc màn hình — nên đặt, vì nhóm không có nhãn nhìn thấy. */
|
|
3629
3647
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
3648
|
+
/** Tông khung theo nền — xem `SegmentedVariant`. */
|
|
3649
|
+
readonly variant: _angular_core.InputSignal<SegmentedVariant>;
|
|
3650
|
+
/**
|
|
3651
|
+
* Class màu nền tuỳ ý cho khung (rãnh), thay nền của `variant` — ví dụ
|
|
3652
|
+
* `bg-brand` hay `bg-[var(--bg-app-nav-hover)]`. Mục đang chọn giữ nguyên.
|
|
3653
|
+
*/
|
|
3654
|
+
readonly trackClass: _angular_core.InputSignal<string>;
|
|
3630
3655
|
private readonly host;
|
|
3631
3656
|
private onChange;
|
|
3632
3657
|
private onTouched;
|
|
@@ -3644,7 +3669,7 @@ declare class OlSegmented implements ControlValueAccessor {
|
|
|
3644
3669
|
registerOnTouched(fn: () => void): void;
|
|
3645
3670
|
setDisabledState(isDisabled: boolean): void;
|
|
3646
3671
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlSegmented, never>;
|
|
3647
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlSegmented, "ol-segmented", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
3672
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlSegmented, "ol-segmented", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "trackClass": { "alias": "trackClass"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
3648
3673
|
}
|
|
3649
3674
|
|
|
3650
3675
|
/**
|
|
@@ -4941,6 +4966,73 @@ declare class OlListGroupItem {
|
|
|
4941
4966
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlListGroupItem, "ol-list-group-item", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["*"], true, never>;
|
|
4942
4967
|
}
|
|
4943
4968
|
|
|
4969
|
+
/** `full`: cú mèo + chữ "nluyện.vn" (tỉ lệ ~5:1). `mark`: chỉ cú mèo, vuông. */
|
|
4970
|
+
type LogoVariant = 'full' | 'mark';
|
|
4971
|
+
/**
|
|
4972
|
+
* Bản màu nào. Chọn theo **màu NỀN** đặt logo, không theo chế độ sáng/tối:
|
|
4973
|
+
*
|
|
4974
|
+
* - `color` — nền sáng (trắng, xám nhạt).
|
|
4975
|
+
* - `white` — nền tối/brand (menu navy của `ol-app-nav`, banner brand). Menu
|
|
4976
|
+
* navy ở CẢ hai chế độ nên luôn dùng bản trắng.
|
|
4977
|
+
* - `auto` — nền đổi theo chế độ (`bg-neutral-primary`…): sáng → màu,
|
|
4978
|
+
* `.dark` → trắng. Vẽ cả hai bản, CSS ẩn một — không cần JS theo dõi chế độ.
|
|
4979
|
+
*/
|
|
4980
|
+
type LogoTone = 'auto' | 'color' | 'white';
|
|
4981
|
+
/**
|
|
4982
|
+
* Logo Ôn Luyện — Figma `Logo ol` (#6603:1269), 4 bản: dài/vuông × màu/trắng.
|
|
4983
|
+
*
|
|
4984
|
+
* SVG nhúng sẵn trong gói: nơi dùng không phải chép file ảnh vào `assets/`.
|
|
4985
|
+
* Cao theo `height` (px), rộng tự theo tỉ lệ.
|
|
4986
|
+
*
|
|
4987
|
+
* ```html
|
|
4988
|
+
* <ol-logo /> <!-- dài, tự đổi theo chế độ, cao 32px -->
|
|
4989
|
+
* <ol-logo variant="mark" tone="white" [height]="40" />
|
|
4990
|
+
* ```
|
|
4991
|
+
*/
|
|
4992
|
+
declare class OlLogo {
|
|
4993
|
+
private readonly sanitizer;
|
|
4994
|
+
private readonly uid;
|
|
4995
|
+
readonly variant: _angular_core.InputSignal<LogoVariant>;
|
|
4996
|
+
readonly tone: _angular_core.InputSignal<LogoTone>;
|
|
4997
|
+
/** Chiều cao (px). Bản dài 32px rộng ~164px; bản vuông bằng cạnh. */
|
|
4998
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4999
|
+
/** Tên đọc cho trình đọc màn hình. */
|
|
5000
|
+
readonly alt: _angular_core.InputSignal<string>;
|
|
5001
|
+
/** Bản màu — `null` khi `tone="white"`. */
|
|
5002
|
+
readonly colorSvg: _angular_core.Signal<SafeHtml | null>;
|
|
5003
|
+
/** Bản trắng — `null` khi `tone="color"`. */
|
|
5004
|
+
readonly whiteSvg: _angular_core.Signal<SafeHtml | null>;
|
|
5005
|
+
readonly colorClass: _angular_core.Signal<"h-full dark:hidden" | "h-full">;
|
|
5006
|
+
readonly whiteClass: _angular_core.Signal<"h-full" | "hidden h-full dark:block">;
|
|
5007
|
+
/**
|
|
5008
|
+
* SVG tĩnh từ `logo.art.ts` (chỉ `<path>`/`<linearGradient>`, không lấy từ
|
|
5009
|
+
* người dùng) nên đánh dấu tin cậy được — cùng cách `OlIconService` làm.
|
|
5010
|
+
*/
|
|
5011
|
+
private render;
|
|
5012
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlLogo, never>;
|
|
5013
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlLogo, "ol-logo", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5014
|
+
}
|
|
5015
|
+
|
|
5016
|
+
/**
|
|
5017
|
+
* Logo Ôn Luyện — 4 bản từ Figma `Logo ol` (#6603:1269), xuất SVG 2026-10-06.
|
|
5018
|
+
*
|
|
5019
|
+
* Đã lọc: nền xám `#F0F0F0` và khung nét đứt của frame Figma, mọi `id` lớp.
|
|
5020
|
+
* `__ID__` là chỗ `OlLogo` thay bằng id riêng từng lần vẽ — hai bản màu dùng
|
|
5021
|
+
* gradient, id trùng nhau thì bản đang `display:none` giữ `<defs>` làm bản
|
|
5022
|
+
* đang hiện mất màu (Chrome không vẽ paint server nằm trong cây bị ẩn).
|
|
5023
|
+
*
|
|
5024
|
+
* Chỉ chứa hình vẽ (`<path>`, `<linearGradient>`), không có script hay
|
|
5025
|
+
* `<foreignObject>` — `OlLogo` đánh dấu tin cậy được.
|
|
5026
|
+
*/
|
|
5027
|
+
interface OlLogoArt {
|
|
5028
|
+
viewBox: string;
|
|
5029
|
+
body: string;
|
|
5030
|
+
}
|
|
5031
|
+
declare const OL_LOGO_FULL_COLOR: OlLogoArt;
|
|
5032
|
+
declare const OL_LOGO_FULL_WHITE: OlLogoArt;
|
|
5033
|
+
declare const OL_LOGO_MARK_COLOR: OlLogoArt;
|
|
5034
|
+
declare const OL_LOGO_MARK_WHITE: OlLogoArt;
|
|
5035
|
+
|
|
4944
5036
|
type ModalSize = 'sm' | 'base' | 'lg' | 'xl' | '2xl';
|
|
4945
5037
|
type ModalPlacement = 'center' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
4946
5038
|
type OlModalBackdrop = 'static' | 'dynamic';
|
|
@@ -6064,6 +6156,23 @@ interface AppNavItem {
|
|
|
6064
6156
|
badge?: string | number;
|
|
6065
6157
|
/** Mờ 40% và không bấm được — theo Figma State=Disabled. */
|
|
6066
6158
|
disabled?: boolean;
|
|
6159
|
+
/**
|
|
6160
|
+
* Nhãn phụ nhỏ cạnh tên, viền trắng — ví dụ `beta`. Khác `badge` (đếm số,
|
|
6161
|
+
* nền đỏ): đây là chú thích tính chất của mục.
|
|
6162
|
+
*/
|
|
6163
|
+
extraText?: string;
|
|
6164
|
+
/**
|
|
6165
|
+
* Menu con — tối đa 3 cấp (mục → con → cháu). Mục có con là NÚT mở/đóng,
|
|
6166
|
+
* không điều hướng; `route` của nó (nếu có) chỉ dùng để nhận diện nhánh.
|
|
6167
|
+
* Nhánh chứa trang đang mở tự mở ra khi vào trang.
|
|
6168
|
+
*/
|
|
6169
|
+
children?: AppNavItem[];
|
|
6170
|
+
/**
|
|
6171
|
+
* Đường dẫn khác cũng tính là "đang ở mục này" — ví dụ trang chi tiết
|
|
6172
|
+
* `/manage-exam/detail` thuộc mục "Quản lý kỳ thi" (`/manage-exam/list-exam`).
|
|
6173
|
+
* So khớp đúng hoặc theo tiền tố `<route>/`.
|
|
6174
|
+
*/
|
|
6175
|
+
activeRoutes?: string[];
|
|
6067
6176
|
}
|
|
6068
6177
|
/**
|
|
6069
6178
|
* Một nhóm mục. Figma chia menu làm hai phần, ngăn bằng một đường kẻ:
|
|
@@ -6076,8 +6185,33 @@ interface AppNavItem {
|
|
|
6076
6185
|
*/
|
|
6077
6186
|
interface AppNavGroup {
|
|
6078
6187
|
section: 'main' | 'footer';
|
|
6188
|
+
/**
|
|
6189
|
+
* Tiêu đề nhóm, in hoa nhỏ phía trên các mục — ví dụ "QUẢN LÝ TRƯỜNG HỌC".
|
|
6190
|
+
* Ẩn khi menu thu gọn. Bỏ trống thì nhóm không có tiêu đề (như bản cũ).
|
|
6191
|
+
*/
|
|
6192
|
+
label?: string;
|
|
6079
6193
|
items: AppNavItem[];
|
|
6080
6194
|
}
|
|
6195
|
+
/**
|
|
6196
|
+
* Một mục trong menu tài khoản — mở ra khi bấm thẻ tài khoản (popup trên
|
|
6197
|
+
* desktop, khay menu trên mobile).
|
|
6198
|
+
*
|
|
6199
|
+
* Component chỉ PHÁT `userAction` kèm mục được bấm; đăng xuất thật, mở hộp
|
|
6200
|
+
* đổi mật khẩu… là việc của nơi dùng. Có `route` thì router điều hướng luôn.
|
|
6201
|
+
*/
|
|
6202
|
+
interface AppNavUserAction {
|
|
6203
|
+
/** Khoá để nơi dùng phân nhánh: `profile`, `change-password`, `logout`… */
|
|
6204
|
+
id: string;
|
|
6205
|
+
label: string;
|
|
6206
|
+
/** Tên icon theo `OlIconService`. */
|
|
6207
|
+
icon: string;
|
|
6208
|
+
/** Đường dẫn router. Bỏ trống thì chỉ phát `userAction`. */
|
|
6209
|
+
route?: string;
|
|
6210
|
+
/** Tô đỏ — dùng cho hành động phá vỡ phiên như Đăng xuất. */
|
|
6211
|
+
danger?: boolean;
|
|
6212
|
+
/** Kẻ một đường ngăn phía trên mục này. */
|
|
6213
|
+
dividerBefore?: boolean;
|
|
6214
|
+
}
|
|
6081
6215
|
/** Thẻ tài khoản dưới cùng. */
|
|
6082
6216
|
interface AppNavUser {
|
|
6083
6217
|
name: string;
|
|
@@ -6085,7 +6219,37 @@ interface AppNavUser {
|
|
|
6085
6219
|
subtitle?: string;
|
|
6086
6220
|
/** Ảnh đại diện. Bỏ trống thì `ol-avatar` tự dựng chữ cái đầu từ `name`. */
|
|
6087
6221
|
avatarSrc?: string;
|
|
6222
|
+
/**
|
|
6223
|
+
* Menu tài khoản. Bỏ trống thì dùng `APP_NAV_DEFAULT_USER_ACTIONS`
|
|
6224
|
+
* (Trang cá nhân · Đổi mật khẩu · Đăng xuất). Truyền `[]` để tắt menu —
|
|
6225
|
+
* bấm thẻ khi đó chỉ phát `userClick` như bản cũ.
|
|
6226
|
+
*/
|
|
6227
|
+
actions?: AppNavUserAction[];
|
|
6088
6228
|
}
|
|
6229
|
+
/**
|
|
6230
|
+
* Menu tài khoản mặc định — ba việc mọi tài khoản đều cần.
|
|
6231
|
+
*
|
|
6232
|
+
* Không có `route`: đường dẫn trang cá nhân, cách đổi mật khẩu (trang riêng
|
|
6233
|
+
* hay hộp thoại) khác nhau giữa các sản phẩm. Nơi dùng bắt `userAction` theo
|
|
6234
|
+
* `id`, hoặc tự khai `user.actions` có `route`.
|
|
6235
|
+
*/
|
|
6236
|
+
declare const APP_NAV_DEFAULT_USER_ACTIONS: readonly AppNavUserAction[];
|
|
6237
|
+
/**
|
|
6238
|
+
* Bố cục theo bề ngang màn hình.
|
|
6239
|
+
*
|
|
6240
|
+
* `desktop` menu dọc, mọi bề ngang (mặc định — giữ hành vi các bản trước)
|
|
6241
|
+
* `auto` từ `md` (768px) là menu dọc; dưới `md` là thanh đáy + khay menu
|
|
6242
|
+
* `mobile` luôn thanh đáy + khay menu (xem trước trên trang docs)
|
|
6243
|
+
*/
|
|
6244
|
+
type AppNavLayout = 'desktop' | 'auto' | 'mobile';
|
|
6245
|
+
/**
|
|
6246
|
+
* Chỗ một mục được vẽ — template tuỳ biến đọc để vẽ khác nhau:
|
|
6247
|
+
*
|
|
6248
|
+
* `rail` menu dọc nền navy (chữ trắng)
|
|
6249
|
+
* `sheet` một dòng trong khay menu mobile (nền sáng)
|
|
6250
|
+
* `bar` một ô trên thanh đáy mobile (icon + nhãn ngắn)
|
|
6251
|
+
*/
|
|
6252
|
+
type AppNavItemVariant = 'rail' | 'sheet' | 'bar';
|
|
6089
6253
|
/**
|
|
6090
6254
|
* Trọn bộ dữ liệu một menu — đúng thứ nơi dùng nạp từ JSON.
|
|
6091
6255
|
*
|
|
@@ -6102,8 +6266,152 @@ interface AppNavUser {
|
|
|
6102
6266
|
interface AppNavConfig {
|
|
6103
6267
|
groups: AppNavGroup[];
|
|
6104
6268
|
user?: AppNavUser;
|
|
6269
|
+
/**
|
|
6270
|
+
* Thanh đáy mobile: `id` các mục theo ĐÚNG thứ tự muốn hiện — sắp mobile
|
|
6271
|
+
* độc lập với menu desktop (`groups` giữ nguyên thứ tự desktop).
|
|
6272
|
+
*
|
|
6273
|
+
* - Lấy được mục ở mọi cấp và mọi nhóm (kể cả `footer`, kể cả con của một
|
|
6274
|
+
* mục cha), miễn có `route` và không có con — ô thanh đáy là một cú chạm.
|
|
6275
|
+
* - Mục gốc đã lên thanh đáy không lặp lại trong khay; mục con vẫn ở trong
|
|
6276
|
+
* menu con của cha nó.
|
|
6277
|
+
* - Khai thì `mobilePrimaryCount` bị bỏ qua — số ô là độ dài danh sách. Nên
|
|
6278
|
+
* ≤ 4 (màn 375px: 4 ô + nút Menu).
|
|
6279
|
+
* - Không khai: `mobilePrimaryCount` mục đầu nhóm `main` như trước.
|
|
6280
|
+
*
|
|
6281
|
+
* ```ts
|
|
6282
|
+
* mobileBar: ['home', 'assignments', 'live-classes', 'self-study-practice'],
|
|
6283
|
+
* ```
|
|
6284
|
+
*/
|
|
6285
|
+
mobileBar?: readonly string[];
|
|
6105
6286
|
}
|
|
6106
6287
|
|
|
6288
|
+
/**
|
|
6289
|
+
* Các khe template của `ol-app-nav`.
|
|
6290
|
+
*
|
|
6291
|
+
* Nơi dùng truyền `<ng-template olAppNavXxx let-...>` vào trong
|
|
6292
|
+
* `<ol-app-nav>`; vùng nào không truyền thì component vẽ giao diện mặc định.
|
|
6293
|
+
*
|
|
6294
|
+
* Template chỉ thay PHẦN RUỘT. Phần vỏ vẫn do component giữ để mọi nơi dùng
|
|
6295
|
+
* có cùng hành vi mà không phải chép lại:
|
|
6296
|
+
*
|
|
6297
|
+
* mục `<a routerLink>` / `<button>`, mục đang chọn, tooltip khi thu gọn,
|
|
6298
|
+
* mục bị khoá, đóng khay mobile khi bấm
|
|
6299
|
+
* tài khoản nút mở popup, `aria-expanded`, đóng popup khi chọn
|
|
6300
|
+
*
|
|
6301
|
+
* `ngTemplateContextGuard` cho trình biên dịch biết kiểu của `let-...` —
|
|
6302
|
+
* thiếu nó thì mọi biến trong template là `any`.
|
|
6303
|
+
*/
|
|
6304
|
+
/** Ngữ cảnh template một mục. */
|
|
6305
|
+
interface AppNavItemContext {
|
|
6306
|
+
$implicit: AppNavItem;
|
|
6307
|
+
/** Menu dọc đang thu gọn (luôn `false` ở `sheet`/`bar`). */
|
|
6308
|
+
collapsed: boolean;
|
|
6309
|
+
/** Mục đang chọn — theo `activeId` hoặc router. */
|
|
6310
|
+
active: boolean;
|
|
6311
|
+
/** Cấp trong cây: 1 = mục gốc, 2 = con, 3 = cháu. */
|
|
6312
|
+
level: number;
|
|
6313
|
+
/** Mục có con và đang mở. */
|
|
6314
|
+
expanded: boolean;
|
|
6315
|
+
variant: AppNavItemVariant;
|
|
6316
|
+
}
|
|
6317
|
+
/** Ngữ cảnh khe đầu / chân menu (`olAppNavHeader` · `olAppNavFooter`). */
|
|
6318
|
+
interface AppNavSlotContext {
|
|
6319
|
+
/** Menu dọc đang thu gọn (luôn `false` trong khay mobile). */
|
|
6320
|
+
$implicit: boolean;
|
|
6321
|
+
collapsed: boolean;
|
|
6322
|
+
/** `rail`: trong menu dọc. `sheet`: trong khay mobile. */
|
|
6323
|
+
variant: 'rail' | 'sheet';
|
|
6324
|
+
}
|
|
6325
|
+
/** Ngữ cảnh template logo. */
|
|
6326
|
+
interface AppNavLogoContext {
|
|
6327
|
+
/** Menu đang thu gọn. */
|
|
6328
|
+
$implicit: boolean;
|
|
6329
|
+
collapsed: boolean;
|
|
6330
|
+
}
|
|
6331
|
+
/** Ngữ cảnh template thẻ tài khoản. */
|
|
6332
|
+
interface AppNavUserContext {
|
|
6333
|
+
$implicit: AppNavUser;
|
|
6334
|
+
collapsed: boolean;
|
|
6335
|
+
/** Chữ cái đầu dựng sẵn ("Nguyễn Nhật Linh" → "NL"). */
|
|
6336
|
+
initials: string;
|
|
6337
|
+
/** `rail`: nút ở đáy menu dọc. `sheet`: khối đầu khay mobile. */
|
|
6338
|
+
variant: 'rail' | 'sheet';
|
|
6339
|
+
}
|
|
6340
|
+
/** Ngữ cảnh template menu tài khoản (ruột popup). */
|
|
6341
|
+
interface AppNavUserMenuContext {
|
|
6342
|
+
$implicit: AppNavUser;
|
|
6343
|
+
/** Danh sách mục đã chốt (`user.actions` hoặc mặc định). */
|
|
6344
|
+
actions: readonly AppNavUserAction[];
|
|
6345
|
+
initials: string;
|
|
6346
|
+
/** Phát `userAction` + đóng popup — gọi khi người dùng chọn một mục. */
|
|
6347
|
+
select: (action: AppNavUserAction) => void;
|
|
6348
|
+
/** Chỉ đóng popup (trong khay mobile: đóng khay). */
|
|
6349
|
+
close: () => void;
|
|
6350
|
+
/**
|
|
6351
|
+
* Nơi vẽ: `popup` (nổi cạnh sidebar, mở được menu con SANG NGANG) hoặc
|
|
6352
|
+
* `sheet` (khay mobile — không có chỗ ngang, nên xổ xuống tại chỗ).
|
|
6353
|
+
*/
|
|
6354
|
+
variant: 'popup' | 'sheet';
|
|
6355
|
+
/**
|
|
6356
|
+
* Phần nào của menu đang vẽ. `all`: trọn menu (popup; khay khi
|
|
6357
|
+
* `mobileUserMenu="bottom"`). Khay với `mobileUserMenu="split"` vẽ template
|
|
6358
|
+
* HAI lần: `top` ngay dưới thẻ tài khoản (việc thường, cài đặt), `bottom`
|
|
6359
|
+
* cuối khay (mục phụ). Mục `danger` ở `split` do component vẽ thành nút icon
|
|
6360
|
+
* trên thẻ tài khoản — template đừng vẽ lại ở `bottom`.
|
|
6361
|
+
*/
|
|
6362
|
+
part: 'all' | 'top' | 'bottom';
|
|
6363
|
+
}
|
|
6364
|
+
/** `<ng-template olAppNavItem let-item let-active="active" let-variant="variant">` */
|
|
6365
|
+
declare class OlAppNavItemDef {
|
|
6366
|
+
readonly template: TemplateRef<AppNavItemContext>;
|
|
6367
|
+
static ngTemplateContextGuard(_dir: OlAppNavItemDef, ctx: unknown): ctx is AppNavItemContext;
|
|
6368
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNavItemDef, never>;
|
|
6369
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppNavItemDef, "ng-template[olAppNavItem]", never, {}, {}, never, never, true, never>;
|
|
6370
|
+
}
|
|
6371
|
+
/**
|
|
6372
|
+
* `<ng-template olAppNavHeader let-collapsed>` — vùng ngay dưới logo, trên
|
|
6373
|
+
* các mục (ví dụ bộ chọn vai Quản trị / Giảng dạy). Cũng hiện ở đầu khay mobile.
|
|
6374
|
+
*/
|
|
6375
|
+
declare class OlAppNavHeaderDef {
|
|
6376
|
+
readonly template: TemplateRef<AppNavSlotContext>;
|
|
6377
|
+
static ngTemplateContextGuard(_dir: OlAppNavHeaderDef, ctx: unknown): ctx is AppNavSlotContext;
|
|
6378
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNavHeaderDef, never>;
|
|
6379
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppNavHeaderDef, "ng-template[olAppNavHeader]", never, {}, {}, never, never, true, never>;
|
|
6380
|
+
}
|
|
6381
|
+
/**
|
|
6382
|
+
* `<ng-template olAppNavFooter let-collapsed>` — vùng cuối danh sách mục chính,
|
|
6383
|
+
* trên đường kẻ (ví dụ ô "Niên khoá 2026 - 2027"). Cũng hiện cuối khay mobile.
|
|
6384
|
+
*/
|
|
6385
|
+
declare class OlAppNavFooterDef {
|
|
6386
|
+
readonly template: TemplateRef<AppNavSlotContext>;
|
|
6387
|
+
static ngTemplateContextGuard(_dir: OlAppNavFooterDef, ctx: unknown): ctx is AppNavSlotContext;
|
|
6388
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNavFooterDef, never>;
|
|
6389
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppNavFooterDef, "ng-template[olAppNavFooter]", never, {}, {}, never, never, true, never>;
|
|
6390
|
+
}
|
|
6391
|
+
/** `<ng-template olAppNavLogo let-collapsed>` */
|
|
6392
|
+
declare class OlAppNavLogoDef {
|
|
6393
|
+
readonly template: TemplateRef<AppNavLogoContext>;
|
|
6394
|
+
static ngTemplateContextGuard(_dir: OlAppNavLogoDef, ctx: unknown): ctx is AppNavLogoContext;
|
|
6395
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNavLogoDef, never>;
|
|
6396
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppNavLogoDef, "ng-template[olAppNavLogo]", never, {}, {}, never, never, true, never>;
|
|
6397
|
+
}
|
|
6398
|
+
/** `<ng-template olAppNavUser let-user let-collapsed="collapsed">` */
|
|
6399
|
+
declare class OlAppNavUserDef {
|
|
6400
|
+
readonly template: TemplateRef<AppNavUserContext>;
|
|
6401
|
+
static ngTemplateContextGuard(_dir: OlAppNavUserDef, ctx: unknown): ctx is AppNavUserContext;
|
|
6402
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNavUserDef, never>;
|
|
6403
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppNavUserDef, "ng-template[olAppNavUser]", never, {}, {}, never, never, true, never>;
|
|
6404
|
+
}
|
|
6405
|
+
/** `<ng-template olAppNavUserMenu let-user let-actions="actions" let-select="select">` */
|
|
6406
|
+
declare class OlAppNavUserMenuDef {
|
|
6407
|
+
readonly template: TemplateRef<AppNavUserMenuContext>;
|
|
6408
|
+
static ngTemplateContextGuard(_dir: OlAppNavUserMenuDef, ctx: unknown): ctx is AppNavUserMenuContext;
|
|
6409
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNavUserMenuDef, never>;
|
|
6410
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppNavUserMenuDef, "ng-template[olAppNavUserMenu]", never, {}, {}, never, never, true, never>;
|
|
6411
|
+
}
|
|
6412
|
+
/** Gom sáu directive để nơi dùng nhập một lần: `imports: [OlAppNav, OL_APP_NAV_TEMPLATES]`. */
|
|
6413
|
+
declare const OL_APP_NAV_TEMPLATES: readonly [typeof OlAppNavItemDef, typeof OlAppNavHeaderDef, typeof OlAppNavFooterDef, typeof OlAppNavLogoDef, typeof OlAppNavUserDef, typeof OlAppNavUserMenuDef];
|
|
6414
|
+
|
|
6107
6415
|
/**
|
|
6108
6416
|
* `ol-app-nav` — menu điều hướng dọc của Ôn Luyện.
|
|
6109
6417
|
*
|
|
@@ -6120,6 +6428,21 @@ interface AppNavConfig {
|
|
|
6120
6428
|
* Không gộp hai cái làm một: gộp thì `ol-sidebar` phải mang theo nền gradient
|
|
6121
6429
|
* và bố cục ba vùng mà 90% nơi dùng không cần.
|
|
6122
6430
|
*
|
|
6431
|
+
* ## Dữ liệu + template từng vùng
|
|
6432
|
+
*
|
|
6433
|
+
* Danh sách mục vẫn đi qua `config` (nạp từ JSON/API theo vai). Phần RUỘT của
|
|
6434
|
+
* bốn vùng thay được bằng `<ng-template>` truyền vào — xem `app-nav-templates.ts`:
|
|
6435
|
+
* `olAppNavItem` · `olAppNavLogo` · `olAppNavUser` · `olAppNavUserMenu`. Vỏ
|
|
6436
|
+
* (liên kết, mục đang chọn, tooltip, mở/đóng popup) vẫn do component giữ.
|
|
6437
|
+
*
|
|
6438
|
+
* ## Mobile
|
|
6439
|
+
*
|
|
6440
|
+
* `layout="auto"`: dưới `md` menu dọc ẩn, thay bằng thanh đáy (`mobilePrimaryCount`
|
|
6441
|
+
* mục đầu nhóm chính + nút Menu) và khay menu trượt lên chứa phần còn lại, thẻ
|
|
6442
|
+
* tài khoản và menu tài khoản. Hai phần này `position: fixed` theo màn hình;
|
|
6443
|
+
* muốn xem trước trong khung (trang docs) thì bọc khung bằng `transform` —
|
|
6444
|
+
* phần tử `fixed` khi đó neo theo khung thay vì màn hình.
|
|
6445
|
+
*
|
|
6123
6446
|
* ## Dữ liệu từ ngoài, không nhúng cứng
|
|
6124
6447
|
*
|
|
6125
6448
|
* Ba quyền trong Figma là NỘI DUNG mẫu. Component nhận `config` — nơi dùng nạp
|
|
@@ -6136,6 +6459,21 @@ interface AppNavConfig {
|
|
|
6136
6459
|
* như Figma mô tả ("dùng trên nền tối, chữ và biểu tượng đều `text-white`").
|
|
6137
6460
|
*/
|
|
6138
6461
|
declare class OlAppNav {
|
|
6462
|
+
private readonly overlayContainer;
|
|
6463
|
+
private readonly router;
|
|
6464
|
+
/**
|
|
6465
|
+
* URL hiện tại (bỏ query/hash) — nguồn của mục đang chọn và nhánh tự mở.
|
|
6466
|
+
*
|
|
6467
|
+
* Không dùng `routerLinkActive` nữa: nó không biết `activeRoutes`, không cho
|
|
6468
|
+
* biết mục CHA có con đang mở, và không chạy với mục cha (là nút, không có
|
|
6469
|
+
* `routerLink`). Tự so URL thì một luật áp cho cả cây.
|
|
6470
|
+
*/
|
|
6471
|
+
private readonly currentUrl;
|
|
6472
|
+
/** Id các mục cha đang mở. */
|
|
6473
|
+
private readonly expandedIds;
|
|
6474
|
+
/** Hàm gỡ khay mobile khỏi ngăn xếp Escape. `null` khi khay đóng. */
|
|
6475
|
+
private releaseEscape;
|
|
6476
|
+
constructor();
|
|
6139
6477
|
/** Danh sách menu và thẻ tài khoản. Xem `AppNavConfig`. */
|
|
6140
6478
|
readonly config: _angular_core.InputSignal<AppNavConfig>;
|
|
6141
6479
|
/**
|
|
@@ -6152,16 +6490,74 @@ declare class OlAppNav {
|
|
|
6152
6490
|
* signal. Có `route` thì `routerLinkActive` tự lo, không cần đặt cái này.
|
|
6153
6491
|
*/
|
|
6154
6492
|
readonly activeId: _angular_core.InputSignal<string | null>;
|
|
6155
|
-
/**
|
|
6493
|
+
/**
|
|
6494
|
+
* Logo — ba cách, theo thứ tự ưu tiên:
|
|
6495
|
+
*
|
|
6496
|
+
* 1. `<ng-template olAppNavLogo let-collapsed>` — tự vẽ hoàn toàn.
|
|
6497
|
+
* 2. `logoSrc` (+ `logoMarkSrc` khi thu gọn) — ảnh của nơi dùng.
|
|
6498
|
+
* 3. Mặc định: `ol-logo` của kit — mở thì bản DÀI, thu gọn thì bản VUÔNG.
|
|
6499
|
+
*/
|
|
6156
6500
|
readonly logoSrc: _angular_core.InputSignal<string>;
|
|
6501
|
+
/**
|
|
6502
|
+
* Ảnh logo vuông khi thu gọn (khung 70px không đủ chỗ logo dài). Bỏ trống
|
|
6503
|
+
* thì thu gọn vẫn dùng `logoSrc`, co vừa ô 40px.
|
|
6504
|
+
*/
|
|
6505
|
+
readonly logoMarkSrc: _angular_core.InputSignal<string>;
|
|
6506
|
+
/**
|
|
6507
|
+
* Tông logo của kit. Mặc định `auto`: chế độ sáng dùng logo MÀU, `.dark`
|
|
6508
|
+
* dùng logo trắng (người dùng chốt 2026-10-06 — bản trước mặc định `white`
|
|
6509
|
+
* ở cả hai chế độ). Muốn luôn trắng thì truyền `white`.
|
|
6510
|
+
*/
|
|
6511
|
+
readonly logoTone: _angular_core.InputSignal<LogoTone>;
|
|
6157
6512
|
/** Chiều rộng khi mở. Figma: 270px. */
|
|
6158
6513
|
readonly width: _angular_core.InputSignal<string>;
|
|
6159
6514
|
/** Chiều rộng khi thu gọn. Figma: 70px. */
|
|
6160
6515
|
readonly collapsedWidth: _angular_core.InputSignal<string>;
|
|
6161
6516
|
/** Phát khi bấm một mục. Mục có `route` thì router đã lo điều hướng. */
|
|
6162
6517
|
readonly itemClick: _angular_core.OutputEmitterRef<AppNavItem>;
|
|
6163
|
-
/**
|
|
6518
|
+
/**
|
|
6519
|
+
* Phát khi bấm thẻ tài khoản (cả khi menu tài khoản mở ra sau đó). Giữ để
|
|
6520
|
+
* tương thích các bản trước; chọn một mục trong menu thì nghe `userAction`.
|
|
6521
|
+
*/
|
|
6164
6522
|
readonly userClick: _angular_core.OutputEmitterRef<void>;
|
|
6523
|
+
/** Phát khi chọn một mục trong menu tài khoản — `profile`, `change-password`, `logout`… */
|
|
6524
|
+
readonly userAction: _angular_core.OutputEmitterRef<AppNavUserAction>;
|
|
6525
|
+
/** Popup tài khoản (desktop) đang mở. Hai chiều: `[(userMenuOpen)]`. */
|
|
6526
|
+
readonly userMenuOpen: _angular_core.ModelSignal<boolean>;
|
|
6527
|
+
/**
|
|
6528
|
+
* Bố cục theo bề ngang. Mặc định `desktop` — giữ nguyên hành vi các bản
|
|
6529
|
+
* trước. `auto`: dưới `md` chuyển sang thanh đáy + khay menu. Xem `AppNavLayout`.
|
|
6530
|
+
*/
|
|
6531
|
+
readonly layout: _angular_core.InputSignal<AppNavLayout>;
|
|
6532
|
+
/**
|
|
6533
|
+
* Số mục lên thanh đáy mobile (đầu nhóm `main`); ô cuối luôn là nút Menu.
|
|
6534
|
+
* Bỏ qua khi `config.mobileBar` có khai — khi đó danh sách quyết định.
|
|
6535
|
+
*
|
|
6536
|
+
* Bốn: màn 375px chia 5 ô mỗi ô 75px — vừa icon 24px và một dòng nhãn 10px.
|
|
6537
|
+
* Sáu ô thì mỗi ô 62px, nhãn bắt đầu bị cắt.
|
|
6538
|
+
*/
|
|
6539
|
+
readonly mobilePrimaryCount: _angular_core.InputSignal<number>;
|
|
6540
|
+
/** Khay menu mobile đang mở. Hai chiều: `[(mobileMenuOpen)]` — khung đóng khi chuyển trang. */
|
|
6541
|
+
readonly mobileMenuOpen: _angular_core.ModelSignal<boolean>;
|
|
6542
|
+
/**
|
|
6543
|
+
* Chỗ đặt menu tài khoản trong khay mobile:
|
|
6544
|
+
* - `bottom` (mặc định, như các bản trước): trọn menu ở cuối khay.
|
|
6545
|
+
* - `split`: việc thường (Trang cá nhân, Đổi mật khẩu… — mục không `danger`)
|
|
6546
|
+
* lên ĐẦU khay ngay dưới thẻ tài khoản; mục `danger` (Đăng xuất) thành nút
|
|
6547
|
+
* CHỈ ICON đỏ bên phải thẻ tài khoản. Template `olAppNavUserMenu` nhận
|
|
6548
|
+
* `part: 'top' | 'bottom'` để tự chia — và KHÔNG vẽ mục danger ở `bottom`.
|
|
6549
|
+
*/
|
|
6550
|
+
readonly mobileUserMenu: _angular_core.InputSignal<"bottom" | "split">;
|
|
6551
|
+
/** Chữ trên nút Menu của thanh đáy. */
|
|
6552
|
+
readonly mobileMenuLabel: _angular_core.InputSignal<string>;
|
|
6553
|
+
readonly itemDef: _angular_core.Signal<OlAppNavItemDef | undefined>;
|
|
6554
|
+
readonly headerDef: _angular_core.Signal<OlAppNavHeaderDef | undefined>;
|
|
6555
|
+
readonly footerDef: _angular_core.Signal<OlAppNavFooterDef | undefined>;
|
|
6556
|
+
readonly logoDef: _angular_core.Signal<OlAppNavLogoDef | undefined>;
|
|
6557
|
+
readonly userDef: _angular_core.Signal<OlAppNavUserDef | undefined>;
|
|
6558
|
+
readonly userMenuDef: _angular_core.Signal<OlAppNavUserMenuDef | undefined>;
|
|
6559
|
+
/** Id khay mobile — `aria-controls` của nút Menu trỏ vào. */
|
|
6560
|
+
readonly sheetId: string;
|
|
6165
6561
|
/**
|
|
6166
6562
|
* Hiện thanh kéo (rail) ở mép phải để thu gọn / mở lại.
|
|
6167
6563
|
*
|
|
@@ -6171,10 +6567,98 @@ declare class OlAppNav {
|
|
|
6171
6567
|
readonly showRail: _angular_core.InputSignal<boolean>;
|
|
6172
6568
|
/** Chữ trên tooltip của thanh kéo, đổi theo trạng thái. */
|
|
6173
6569
|
readonly railLabel: _angular_core.Signal<"Mở rộng" | "Thu gọn">;
|
|
6174
|
-
/**
|
|
6570
|
+
/** Mọi nhóm, giữ thứ tự khai. */
|
|
6571
|
+
private readonly allGroups;
|
|
6572
|
+
/** Nhóm phần trên — vẽ theo nhóm để hiện `label`. */
|
|
6573
|
+
readonly mainGroups: _angular_core.Signal<AppNavGroup[]>;
|
|
6574
|
+
/** Mục gốc của phần trên, phẳng (cho thanh đáy mobile). */
|
|
6175
6575
|
readonly mainItems: _angular_core.Signal<AppNavItem[]>;
|
|
6176
6576
|
/** Mục của phần dưới, nằm sát thẻ tài khoản. */
|
|
6177
6577
|
readonly footerItems: _angular_core.Signal<AppNavItem[]>;
|
|
6578
|
+
/**
|
|
6579
|
+
* Mục lên thanh đáy mobile. Có `config.mobileBar` → đúng các id đó, đúng
|
|
6580
|
+
* thứ tự đó (mọi nhóm, mọi cấp). Không có → `mobilePrimaryCount` mục gốc ĐẦU
|
|
6581
|
+
* TIÊN của phần trên. Cả hai chỉ nhận mục có `route` và KHÔNG có con — ô
|
|
6582
|
+
* thanh đáy là một cú chạm điều hướng, không chứa được menu con.
|
|
6583
|
+
*/
|
|
6584
|
+
readonly primaryItems: _angular_core.Signal<AppNavItem[]>;
|
|
6585
|
+
/**
|
|
6586
|
+
* Nhóm vào khay mobile: mọi nhóm (kể cả `footer` — dưới `md` không còn menu
|
|
6587
|
+
* dọc nào chứa chúng), bỏ các mục đã lên thanh đáy, giữ tiêu đề nhóm.
|
|
6588
|
+
*/
|
|
6589
|
+
readonly sheetGroups: _angular_core.Signal<AppNavGroup[]>;
|
|
6590
|
+
/** Phần còn lại, phẳng — giữ cho nơi dùng đã đọc trước đây. */
|
|
6591
|
+
readonly overflowItems: _angular_core.Signal<AppNavItem[]>;
|
|
6592
|
+
/**
|
|
6593
|
+
* Khoảng cách popup tài khoản → thẻ, để popup nằm HẲN ngoài sidebar, cách
|
|
6594
|
+
* mép 8px. Thẻ thụt trong sidebar: mở rộng đệm 16px (`px-4`, bản gọn);
|
|
6595
|
+
* thu gọn nút giữa khung 70px còn 15px. Đo 2026-10-06 sau bản gọn: khe 8px
|
|
6596
|
+
* ở cả hai trạng thái (offset 8 cố định từng làm popup chồng mép sidebar).
|
|
6597
|
+
*/
|
|
6598
|
+
readonly userMenuOffset: _angular_core.Signal<24 | 23>;
|
|
6599
|
+
/** Menu tài khoản đã chốt: `user.actions`, hoặc mặc định khi không khai. */
|
|
6600
|
+
readonly userActions: _angular_core.Signal<readonly AppNavUserAction[]>;
|
|
6601
|
+
/** Class menu dọc theo `layout`. */
|
|
6602
|
+
readonly railDisplay: _angular_core.Signal<"flex" | "hidden" | "hidden md:flex">;
|
|
6603
|
+
/** Có vẽ thanh đáy + khay không, và ẩn từ `md` khi `auto`. */
|
|
6604
|
+
readonly hasMobile: _angular_core.Signal<boolean>;
|
|
6605
|
+
readonly mobileDisplay: _angular_core.Signal<"" | "md:hidden">;
|
|
6606
|
+
/** Ngữ cảnh template một mục. */
|
|
6607
|
+
itemContext(item: AppNavItem, variant: AppNavItemVariant, level?: number): AppNavItemContext;
|
|
6608
|
+
/** Ngữ cảnh khe đầu / chân menu. */
|
|
6609
|
+
slotContext(variant: 'rail' | 'sheet'): {
|
|
6610
|
+
$implicit: boolean;
|
|
6611
|
+
collapsed: boolean;
|
|
6612
|
+
variant: "rail" | "sheet";
|
|
6613
|
+
};
|
|
6614
|
+
/** Bỏ query/hash và `/` cuối — `/a/b/?x=1#y` → `/a/b`. */
|
|
6615
|
+
private static normalize;
|
|
6616
|
+
/** `route` khớp URL hiện tại: đúng hệt, hoặc URL nằm dưới nó (`route/…`). `/` chỉ khớp đúng. */
|
|
6617
|
+
isRouteActive(route: string): boolean;
|
|
6618
|
+
/**
|
|
6619
|
+
* Mục đang chọn: `activeId` trùng, hoặc `route` / `activeRoutes` khớp URL.
|
|
6620
|
+
* Mục CHA không bao giờ "đang chọn" — trang nằm ở con; cha chỉ được đánh
|
|
6621
|
+
* dấu "chứa mục đang chọn" (`hasActiveChild`).
|
|
6622
|
+
*/
|
|
6623
|
+
isItemActive(item: AppNavItem): boolean;
|
|
6624
|
+
/** Mục có con (cháu…) đang chọn. */
|
|
6625
|
+
hasActiveChild(item: AppNavItem): boolean;
|
|
6626
|
+
isExpanded(item: AppNavItem): boolean;
|
|
6627
|
+
/**
|
|
6628
|
+
* Mở / đóng một nhánh (menu dọc đang mở, hoặc khay mobile).
|
|
6629
|
+
*
|
|
6630
|
+
* Kiểu ACCORDION — mỗi cấp chỉ một nhánh mở: mở một mục thì đóng các mục
|
|
6631
|
+
* CÙNG CẤP (kèm mọi nhánh con của chúng). Cấp 1 tính chung mọi nhóm, cả
|
|
6632
|
+
* nhóm `footer`; cấp 2 · 3 tính trong cùng mục cha. Menu dài (Quản trị
|
|
6633
|
+
* trường 5 nhóm) mà mở nhiều nhánh một lúc thì cuộn mãi không hết.
|
|
6634
|
+
*/
|
|
6635
|
+
toggleExpand(item: AppNavItem): void;
|
|
6636
|
+
/** Id mục cha đang mở menu nổi. */
|
|
6637
|
+
readonly flyoutId: _angular_core.WritableSignal<string | null>;
|
|
6638
|
+
private flyoutCloseTimer;
|
|
6639
|
+
/** Rê vào nút hoặc panel: mở (và huỷ hẹn đóng). */
|
|
6640
|
+
openFlyout(id: string): void;
|
|
6641
|
+
cancelFlyoutClose(): void;
|
|
6642
|
+
/** Rời nút hoặc panel: đóng sau 150ms — đủ để chuột băng qua khe giữa hai cái. */
|
|
6643
|
+
scheduleFlyoutClose(): void;
|
|
6644
|
+
/** `ol-dropdown` báo mở/đóng (bấm nút, bấm ra ngoài, Esc). */
|
|
6645
|
+
onFlyoutOpenChange(id: string, open: boolean): void;
|
|
6646
|
+
/** Chọn một mục trong menu nổi: đóng menu, phát `itemClick` (router lo điều hướng). */
|
|
6647
|
+
onFlyoutSelect(item: AppNavItem): void;
|
|
6648
|
+
/** Id mọi mục cha nằm trên đường tới mục đang chọn. */
|
|
6649
|
+
private activeAncestorIds;
|
|
6650
|
+
/** Ngữ cảnh template menu tài khoản — popup desktop và khay mobile. */
|
|
6651
|
+
readonly userMenuPopupContext: _angular_core.Signal<AppNavUserMenuContext | null>;
|
|
6652
|
+
readonly userMenuSheetContext: _angular_core.Signal<AppNavUserMenuContext | null>;
|
|
6653
|
+
readonly userMenuSheetTopContext: _angular_core.Signal<AppNavUserMenuContext | null>;
|
|
6654
|
+
/** Mục `danger` (Đăng xuất) — `split`: nút icon đỏ trên thẻ tài khoản đầu khay. */
|
|
6655
|
+
readonly cardActions: _angular_core.Signal<AppNavUserAction[]>;
|
|
6656
|
+
/**
|
|
6657
|
+
* Mục tài khoản mặc định (không template) cho phần khay đang vẽ. `split`:
|
|
6658
|
+
* việc thường ở `top`, mục danger đã lên thẻ tài khoản nên `bottom` rỗng.
|
|
6659
|
+
*/
|
|
6660
|
+
sheetActionsFor(part: 'all' | 'top' | 'bottom'): readonly AppNavUserAction[];
|
|
6661
|
+
private buildUserMenuContext;
|
|
6178
6662
|
/** Đường kẻ chỉ vẽ khi phần dưới có mục — không thì thừa một vạch. */
|
|
6179
6663
|
readonly showDivider: _angular_core.Signal<boolean>;
|
|
6180
6664
|
readonly navWidth: _angular_core.Signal<string>;
|
|
@@ -6191,7 +6675,7 @@ declare class OlAppNav {
|
|
|
6191
6675
|
* Gộp vào MỘT chuỗi thay vì nhiều `[class.x]`: hai binding cùng tên thuộc
|
|
6192
6676
|
* tính thì cái sau thắng, cái trước mất im lặng.
|
|
6193
6677
|
*/
|
|
6194
|
-
itemClasses(item: AppNavItem): string;
|
|
6678
|
+
itemClasses(item: AppNavItem, level?: number): string;
|
|
6195
6679
|
/**
|
|
6196
6680
|
* Chữ cái đầu cho ảnh đại diện, khi không có ảnh.
|
|
6197
6681
|
*
|
|
@@ -6201,10 +6685,212 @@ declare class OlAppNav {
|
|
|
6201
6685
|
* phải "NN".
|
|
6202
6686
|
*/
|
|
6203
6687
|
readonly userInitials: _angular_core.Signal<string>;
|
|
6688
|
+
/** Nút thẻ tài khoản ở đáy menu dọc. */
|
|
6689
|
+
/**
|
|
6690
|
+
* Nút thẻ tài khoản ở đáy menu dọc.
|
|
6691
|
+
*
|
|
6692
|
+
* Mở rộng: đệm phải 10px (`pe-2.5`, bằng đệm mục menu phía trên) — bản trước
|
|
6693
|
+
* `p-1` 4px làm mũi tên dính sát viền bo (người dùng chỉ ra 2026-10-06).
|
|
6694
|
+
* Đang mở menu tài khoản thì GIỮ nền nổi như mục cha đang mở.
|
|
6695
|
+
*/
|
|
6696
|
+
userCardClasses(): string;
|
|
6697
|
+
/** Một ô thanh đáy mobile. Mục có route thì `routerLinkActive` tô thêm `text-fg-brand`. */
|
|
6698
|
+
barItemClasses(item: AppNavItem): string;
|
|
6699
|
+
/** Một dòng trong khay mobile. */
|
|
6700
|
+
sheetItemClasses(item: AppNavItem, level?: number): string;
|
|
6701
|
+
/**
|
|
6702
|
+
* Một mục menu tài khoản trong khay. Mục `danger` đổi CẢ nền lẫn chữ khi
|
|
6703
|
+
* hover: `text-fg-danger` trên `bg-danger-soft` chỉ đạt 4,09 (dưới AA 4,5),
|
|
6704
|
+
* nên chữ kéo xuống `fg-danger-strong` cho khớp nền.
|
|
6705
|
+
*/
|
|
6706
|
+
sheetActionClasses(action: AppNavUserAction): string;
|
|
6204
6707
|
onItemClick(item: AppNavItem): void;
|
|
6708
|
+
/** Chọn một mục menu tài khoản — đóng popup/khay rồi phát cho nơi dùng. */
|
|
6709
|
+
onUserAction(action: AppNavUserAction): void;
|
|
6710
|
+
toggleMobileMenu(): void;
|
|
6205
6711
|
toggle(): void;
|
|
6206
6712
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNav, never>;
|
|
6207
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlAppNav, "ol-app-nav", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "showRail": { "alias": "showRail"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "itemClick": "itemClick"; "userClick": "userClick"; },
|
|
6713
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlAppNav, "ol-app-nav", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "logoMarkSrc": { "alias": "logoMarkSrc"; "required": false; "isSignal": true; }; "logoTone": { "alias": "logoTone"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "userMenuOpen": { "alias": "userMenuOpen"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "mobilePrimaryCount": { "alias": "mobilePrimaryCount"; "required": false; "isSignal": true; }; "mobileMenuOpen": { "alias": "mobileMenuOpen"; "required": false; "isSignal": true; }; "mobileUserMenu": { "alias": "mobileUserMenu"; "required": false; "isSignal": true; }; "mobileMenuLabel": { "alias": "mobileMenuLabel"; "required": false; "isSignal": true; }; "showRail": { "alias": "showRail"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "itemClick": "itemClick"; "userClick": "userClick"; "userAction": "userAction"; "userMenuOpen": "userMenuOpenChange"; "mobileMenuOpen": "mobileMenuOpenChange"; }, ["itemDef", "headerDef", "footerDef", "logoDef", "userDef", "userMenuDef"], never, true, never>;
|
|
6714
|
+
}
|
|
6715
|
+
|
|
6716
|
+
/**
|
|
6717
|
+
* Các khe template của `ol-app-header`. Vùng nào không truyền thì component
|
|
6718
|
+
* vẽ giao diện mặc định. Khung (kiểu nhìn, dính đỉnh, nền mobile, chiều cao)
|
|
6719
|
+
* luôn do component giữ.
|
|
6720
|
+
*
|
|
6721
|
+
* olAppHeaderTitle thay khối tiêu đề (breadcrumb, avatar lớp…)
|
|
6722
|
+
* olAppHeaderActions cụm bên phải (chip, chuông…)
|
|
6723
|
+
* olAppHeaderContent thay TOÀN BỘ ruột — thanh làm bài (đồng hồ + tiến
|
|
6724
|
+
* trình + Nộp bài); khi có, nút quay lại / tiêu đề /
|
|
6725
|
+
* ô tìm không vẽ
|
|
6726
|
+
*/
|
|
6727
|
+
/** Ngữ cảnh khe — chưa mang dữ liệu; để sẵn cho mở rộng không phá API. */
|
|
6728
|
+
type AppHeaderSlotContext = Record<string, never>;
|
|
6729
|
+
/** `<ng-template olAppHeaderTitle>` */
|
|
6730
|
+
declare class OlAppHeaderTitleDef {
|
|
6731
|
+
readonly template: TemplateRef<AppHeaderSlotContext>;
|
|
6732
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeaderTitleDef, never>;
|
|
6733
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppHeaderTitleDef, "ng-template[olAppHeaderTitle]", never, {}, {}, never, never, true, never>;
|
|
6734
|
+
}
|
|
6735
|
+
/** `<ng-template olAppHeaderActions>` */
|
|
6736
|
+
declare class OlAppHeaderActionsDef {
|
|
6737
|
+
readonly template: TemplateRef<AppHeaderSlotContext>;
|
|
6738
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeaderActionsDef, never>;
|
|
6739
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppHeaderActionsDef, "ng-template[olAppHeaderActions]", never, {}, {}, never, never, true, never>;
|
|
6740
|
+
}
|
|
6741
|
+
/** `<ng-template olAppHeaderContent>` */
|
|
6742
|
+
declare class OlAppHeaderContentDef {
|
|
6743
|
+
readonly template: TemplateRef<AppHeaderSlotContext>;
|
|
6744
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeaderContentDef, never>;
|
|
6745
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppHeaderContentDef, "ng-template[olAppHeaderContent]", never, {}, {}, never, never, true, never>;
|
|
6746
|
+
}
|
|
6747
|
+
/** Gom sẵn để import một lần. */
|
|
6748
|
+
declare const OL_APP_HEADER_TEMPLATES: readonly [typeof OlAppHeaderTitleDef, typeof OlAppHeaderActionsDef, typeof OlAppHeaderContentDef];
|
|
6749
|
+
|
|
6750
|
+
/**
|
|
6751
|
+
* Kiểu dữ liệu cho `ol-app-header` — thanh trên của trang trong app (đi cặp
|
|
6752
|
+
* `ol-app-nav`). Khác `ol-navbar`: đó là navbar trang WEB (logo + liên kết).
|
|
6753
|
+
*/
|
|
6754
|
+
/**
|
|
6755
|
+
* Kiểu nhìn:
|
|
6756
|
+
* `plain` trong suốt, không viền — đặt trên nền trang (có hoạ tiết)
|
|
6757
|
+
* `solid` nền trắng + viền dưới — trang nền trơn, admin
|
|
6758
|
+
* `floating` thẻ trắng bo góc + bóng nhẹ — dashboard kiểu thẻ
|
|
6759
|
+
*/
|
|
6760
|
+
type AppHeaderVariant = 'plain' | 'solid' | 'floating';
|
|
6761
|
+
/** Chiều cao: `base` 64px · `sm` 56px. */
|
|
6762
|
+
type AppHeaderSize = 'base' | 'sm';
|
|
6763
|
+
/** Một mục đường dẫn (breadcrumb). Không có `link` = không bấm được (mục cuối). */
|
|
6764
|
+
interface AppHeaderCrumb {
|
|
6765
|
+
label: string;
|
|
6766
|
+
link?: string;
|
|
6767
|
+
}
|
|
6768
|
+
/** Mốc ô tìm hiện đầy đủ giữa hàng; dưới mốc là nút kính lúp mở ô. */
|
|
6769
|
+
type AppHeaderSearchCollapseAt = 'lg' | 'xl';
|
|
6770
|
+
|
|
6771
|
+
/**
|
|
6772
|
+
* Thanh trên của trang trong app — đi cặp `ol-app-nav`.
|
|
6773
|
+
*
|
|
6774
|
+
* Bố cục một hàng: [←] [tiêu đề] [ô tìm — co theo chỗ] [hành động].
|
|
6775
|
+
*
|
|
6776
|
+
* ## Hai hành vi theo bề ngang
|
|
6777
|
+
*
|
|
6778
|
+
* Desktop theo `variant`. Dưới `md` (`mobileSolid`, mặc định bật) header luôn
|
|
6779
|
+
* DÍNH ĐỈNH và NỀN ĐẶC: ở màn hẹp không còn menu trái, header là mốc duy nhất
|
|
6780
|
+
* cho biết đang ở màn nào; dính mà trong suốt thì nội dung cuộn qua hiện
|
|
6781
|
+
* xuyên lên, chữ chồng chữ.
|
|
6782
|
+
*
|
|
6783
|
+
* ## Ô tìm co giãn
|
|
6784
|
+
*
|
|
6785
|
+
* Từ `searchCollapseAt` trở lên ô nằm giữa hàng, `flex-1`, co lại khi chật;
|
|
6786
|
+
* dưới mốc đó thành nút kính lúp mở ô trong bảng thả xuống — không bóp ô tới
|
|
6787
|
+
* mức không gõ nổi.
|
|
6788
|
+
*
|
|
6789
|
+
* ## Khe
|
|
6790
|
+
*
|
|
6791
|
+
* `olAppHeaderTitle` · `olAppHeaderActions` · `olAppHeaderContent` — xem
|
|
6792
|
+
* `app-header-templates.ts`. `olAppHeaderContent` thay trọn ruột (thanh làm
|
|
6793
|
+
* bài), khung vẫn của component.
|
|
6794
|
+
*/
|
|
6795
|
+
declare class OlAppHeader {
|
|
6796
|
+
private readonly router;
|
|
6797
|
+
readonly variant: _angular_core.InputSignal<AppHeaderVariant>;
|
|
6798
|
+
readonly size: _angular_core.InputSignal<AppHeaderSize>;
|
|
6799
|
+
/** Dưới `md`: dính đỉnh + nền đặc + viền dưới. */
|
|
6800
|
+
readonly mobileSolid: _angular_core.InputSignal<boolean>;
|
|
6801
|
+
/** Dính đỉnh cả trên desktop — `plain` tự có nền đặc khi dính. */
|
|
6802
|
+
readonly sticky: _angular_core.InputSignal<boolean>;
|
|
6803
|
+
/**
|
|
6804
|
+
* Class thêm vào thẻ `<header>` — host là `contents` nên class đặt trên
|
|
6805
|
+
* `<ol-app-header>` không có hộp nào để áp. Ví dụ kéo tràn mép ở mobile:
|
|
6806
|
+
* `headerClass="-mx-4 -mt-4 md:mx-0 md:mt-0"`.
|
|
6807
|
+
*/
|
|
6808
|
+
readonly headerClass: _angular_core.InputSignal<string>;
|
|
6809
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
6810
|
+
/** Dòng nhỏ phía trên tiêu đề, ví dụ "HỌC SINH · ÔN LUYỆN". Ẩn dưới `sm`. */
|
|
6811
|
+
readonly subtitle: _angular_core.InputSignal<string>;
|
|
6812
|
+
/**
|
|
6813
|
+
* Đường dẫn phía trên tiêu đề, thay `subtitle` khi có ≥ 2 mục. Mục cuối là
|
|
6814
|
+
* trang hiện tại (không bấm được). Ẩn dưới `sm` như `subtitle`.
|
|
6815
|
+
*/
|
|
6816
|
+
readonly breadcrumbs: _angular_core.InputSignal<readonly AppHeaderCrumb[]>;
|
|
6817
|
+
readonly showBreadcrumbs: _angular_core.Signal<boolean>;
|
|
6818
|
+
/** Đường dẫn quay lại — bấm thì `router.navigateByUrl`. */
|
|
6819
|
+
readonly backLink: _angular_core.InputSignal<string>;
|
|
6820
|
+
/** Hiện nút quay lại và chỉ phát `(back)` — nơi dùng tự điều hướng. */
|
|
6821
|
+
readonly showBack: _angular_core.InputSignal<boolean>;
|
|
6822
|
+
/** Tên đọc + tooltip của nút quay lại: "Quay lại <backLabel>". */
|
|
6823
|
+
readonly backLabel: _angular_core.InputSignal<string>;
|
|
6824
|
+
readonly back: _angular_core.OutputEmitterRef<void>;
|
|
6825
|
+
readonly showSearch: _angular_core.InputSignal<boolean>;
|
|
6826
|
+
readonly searchPlaceholder: _angular_core.InputSignal<string>;
|
|
6827
|
+
readonly searchAriaLabel: _angular_core.InputSignal<string>;
|
|
6828
|
+
readonly searchCollapseAt: _angular_core.InputSignal<AppHeaderSearchCollapseAt>;
|
|
6829
|
+
readonly searchValue: _angular_core.ModelSignal<string>;
|
|
6830
|
+
/** Bấm Enter trong ô tìm — giá trị đã cắt khoảng trắng, bỏ qua khi rỗng. */
|
|
6831
|
+
readonly search: _angular_core.OutputEmitterRef<string>;
|
|
6832
|
+
readonly titleDef: _angular_core.Signal<OlAppHeaderTitleDef | undefined>;
|
|
6833
|
+
readonly actionsDef: _angular_core.Signal<OlAppHeaderActionsDef | undefined>;
|
|
6834
|
+
readonly contentDef: _angular_core.Signal<OlAppHeaderContentDef | undefined>;
|
|
6835
|
+
readonly hasBack: _angular_core.Signal<boolean>;
|
|
6836
|
+
readonly backAriaLabel: _angular_core.Signal<string>;
|
|
6837
|
+
/** Khung `<header>` — kiểu nhìn + hành vi mobile + dính đỉnh. */
|
|
6838
|
+
readonly headerClasses: _angular_core.Signal<string>;
|
|
6839
|
+
/** Ô tìm đầy đủ: chỉ hiện từ mốc. Viết đủ hai chuỗi để Tailwind quét thấy. */
|
|
6840
|
+
readonly searchInlineClasses: _angular_core.Signal<"hidden min-w-0 max-w-md flex-1 lg:block" | "hidden min-w-0 max-w-md flex-1 xl:block">;
|
|
6841
|
+
/** Nút kính lúp: chỉ dưới mốc. */
|
|
6842
|
+
readonly searchToggleClasses: _angular_core.Signal<"shrink-0 lg:hidden" | "shrink-0 xl:hidden">;
|
|
6843
|
+
/**
|
|
6844
|
+
* Khối tiêu đề: chiếm chỗ trống khi ô tìm không nằm giữa hàng; khi ô tìm
|
|
6845
|
+
* hiện thì nhường `flex-1` cho ô tìm, tiêu đề chỉ rộng theo chữ.
|
|
6846
|
+
*/
|
|
6847
|
+
readonly titleClasses: _angular_core.Signal<"min-w-0 flex-1" | "min-w-0 flex-1 lg:max-w-[40%] lg:flex-none" | "min-w-0 flex-1 xl:max-w-[40%] xl:flex-none">;
|
|
6848
|
+
onBack(): void;
|
|
6849
|
+
submitSearch(event: Event): void;
|
|
6850
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeader, never>;
|
|
6851
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlAppHeader, "ol-app-header", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "mobileSolid": { "alias": "mobileSolid"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "breadcrumbs": { "alias": "breadcrumbs"; "required": false; "isSignal": true; }; "backLink": { "alias": "backLink"; "required": false; "isSignal": true; }; "showBack": { "alias": "showBack"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; "isSignal": true; }; "searchCollapseAt": { "alias": "searchCollapseAt"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; }, { "back": "back"; "searchValue": "searchValueChange"; "search": "search"; }, ["titleDef", "actionsDef", "contentDef"], never, true, never>;
|
|
6852
|
+
}
|
|
6853
|
+
|
|
6854
|
+
/**
|
|
6855
|
+
* 20 hoạ tiết của Figma component "Pattern" (#1240:55097). Thứ tự theo Figma.
|
|
6856
|
+
* Dùng mảng này cho bộ chọn / trang trưng bày.
|
|
6857
|
+
*/
|
|
6858
|
+
declare const OL_PATTERN_TYPES: readonly ["lines", "rounded-lines", "creative", "diamond-right", "diamond-left", "vertical-lines", "oblique-lines", "dots", "lines-modern", "squares", "modern", "comb", "tech", "tech-square", "tech-squares", "technology", "comb-linear", "big-comb", "lines-oblique", "technology-top"];
|
|
6859
|
+
type PatternType = (typeof OL_PATTERN_TYPES)[number];
|
|
6860
|
+
/**
|
|
6861
|
+
* Cách phủ hình lên khung:
|
|
6862
|
+
* cover phủ kín, cắt phần thừa (mặc định — nền trang, banner)
|
|
6863
|
+
* contain hiện trọn hình, có thể chừa lề
|
|
6864
|
+
* repeat lặp hình gốc theo kích thước thật (~1512×776)
|
|
6865
|
+
*/
|
|
6866
|
+
type PatternFit = 'cover' | 'contain' | 'repeat';
|
|
6867
|
+
/** `absolute` phủ khối cha (cha cần `relative`); `fixed` phủ cả màn, đứng yên khi cuộn. */
|
|
6868
|
+
type PatternPosition = 'absolute' | 'fixed';
|
|
6869
|
+
/**
|
|
6870
|
+
* Hoạ tiết nền — lớp trang trí phủ khối cha (banner, thẻ, nền trang).
|
|
6871
|
+
*
|
|
6872
|
+
* Màu = `currentColor`: đặt `class="text-white"` trên nền tối,
|
|
6873
|
+
* `class="text-fg-brand"` trên nền sáng. Độ đậm qua `opacity`.
|
|
6874
|
+
*
|
|
6875
|
+
* CẦN import `@edmicro/olkit/styles/patterns.css` (file riêng — 20 SVG chỉ tải
|
|
6876
|
+
* kiểu đang dùng). Thiếu file đó thì hoạ tiết không hiện.
|
|
6877
|
+
*
|
|
6878
|
+
* ```html
|
|
6879
|
+
* <div class="relative overflow-hidden rounded-lg bg-brand">
|
|
6880
|
+
* <ol-pattern type="tech" class="text-white" [opacity]="0.2" />
|
|
6881
|
+
* …nội dung…
|
|
6882
|
+
* </div>
|
|
6883
|
+
* ```
|
|
6884
|
+
*/
|
|
6885
|
+
declare class OlPattern {
|
|
6886
|
+
readonly type: _angular_core.InputSignal<"dots" | "lines" | "rounded-lines" | "creative" | "diamond-right" | "diamond-left" | "vertical-lines" | "oblique-lines" | "lines-modern" | "squares" | "modern" | "comb" | "tech" | "tech-square" | "tech-squares" | "technology" | "comb-linear" | "big-comb" | "lines-oblique" | "technology-top">;
|
|
6887
|
+
readonly fit: _angular_core.InputSignal<PatternFit>;
|
|
6888
|
+
readonly position: _angular_core.InputSignal<PatternPosition>;
|
|
6889
|
+
/** Độ đậm 0–1. Trên nền sáng thường 0,06–0,15; trên nền tối 0,15–0,4. */
|
|
6890
|
+
readonly opacity: _angular_core.InputSignal<number>;
|
|
6891
|
+
readonly hostClasses: _angular_core.Signal<string>;
|
|
6892
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlPattern, never>;
|
|
6893
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlPattern, "ol-pattern", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "fit": { "alias": "fit"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "opacity": { "alias": "opacity"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6208
6894
|
}
|
|
6209
6895
|
|
|
6210
6896
|
declare class OlSidebar {
|
|
@@ -6876,6 +7562,10 @@ declare class OlTooltipDirective implements OnDestroy {
|
|
|
6876
7562
|
private showTimeout?;
|
|
6877
7563
|
private hideTimeout?;
|
|
6878
7564
|
private touchTimeout?;
|
|
7565
|
+
/** Hẹn hiện tooltip khi NHẤN GIỮ — huỷ nếu nhấc tay sớm (chạm nhanh). */
|
|
7566
|
+
private longPressTimeout?;
|
|
7567
|
+
/** Mốc chạm gần nhất — bỏ qua mouseenter/focus trình duyệt tự sinh sau cú chạm. */
|
|
7568
|
+
private lastTouchAt;
|
|
6879
7569
|
private tooltipComponent?;
|
|
6880
7570
|
private tooltipElement?;
|
|
6881
7571
|
private cleanupAutoUpdate?;
|
|
@@ -6886,12 +7576,16 @@ declare class OlTooltipDirective implements OnDestroy {
|
|
|
6886
7576
|
private blurListener?;
|
|
6887
7577
|
private touchStartListener?;
|
|
6888
7578
|
private touchEndListener?;
|
|
7579
|
+
private touchCancelListeners;
|
|
6889
7580
|
constructor();
|
|
6890
7581
|
ngOnDestroy(): void;
|
|
6891
7582
|
/**
|
|
6892
7583
|
* Setup event listeners for tooltip triggers
|
|
6893
7584
|
*/
|
|
6894
7585
|
private setupListeners;
|
|
7586
|
+
/** Sự kiện chuột/focus này có phải do cú chạm vừa rồi sinh ra không (≤ 800ms). */
|
|
7587
|
+
private fromRecentTouch;
|
|
7588
|
+
private clearLongPress;
|
|
6895
7589
|
/**
|
|
6896
7590
|
* Remove event listeners
|
|
6897
7591
|
*/
|
|
@@ -7592,6 +8286,20 @@ declare class OlChart {
|
|
|
7592
8286
|
readonly hiddenItems: _angular_core.WritableSignal<Set<string>>;
|
|
7593
8287
|
toggleLegendItem(name: string): void;
|
|
7594
8288
|
isItemHidden(name: string): boolean;
|
|
8289
|
+
readonly zoomScale: _angular_core.WritableSignal<number>;
|
|
8290
|
+
readonly panX: _angular_core.WritableSignal<number>;
|
|
8291
|
+
readonly panY: _angular_core.WritableSignal<number>;
|
|
8292
|
+
private isPanning;
|
|
8293
|
+
private lastPanX;
|
|
8294
|
+
private lastPanY;
|
|
8295
|
+
readonly showZoomControls: _angular_core.Signal<boolean>;
|
|
8296
|
+
readonly svgTransform: _angular_core.Signal<string>;
|
|
8297
|
+
zoomIn(): void;
|
|
8298
|
+
zoomOut(): void;
|
|
8299
|
+
resetZoom(): void;
|
|
8300
|
+
onPanStart(event: MouseEvent | TouchEvent): void;
|
|
8301
|
+
onPanMove(event: MouseEvent | TouchEvent): void;
|
|
8302
|
+
onPanEnd(): void;
|
|
7595
8303
|
readonly seriesLegendList: _angular_core.Signal<{
|
|
7596
8304
|
name: string;
|
|
7597
8305
|
color: string;
|
|
@@ -8342,6 +9050,6 @@ declare class OlOverlayContainer {
|
|
|
8342
9050
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
8343
9051
|
}
|
|
8344
9052
|
|
|
8345
|
-
export { CHAT_BUBBLE_STATUS, FIELD_ASTERISK, FIELD_CLEAR_RESERVE_END, FIELD_DISABLED, FIELD_HEIGHT, FIELD_HELPER, FIELD_HELPER_GAP, FIELD_ICON_GAP, FIELD_ICON_RESERVE_END, FIELD_ICON_RESERVE_START, FIELD_LABEL, FIELD_LABEL_BESIDE, FIELD_LABEL_GAP, FIELD_MIN_HEIGHT, FIELD_PADDING_END, FIELD_PADDING_START, FIELD_PADDING_X, FIELD_RADIUS, FIELD_STATE, FIELD_TEXT, FILE_KIND_META, FLOAT_LABEL_START, MONTHS_FULL_EN, MONTHS_FULL_VI, MONTHS_SHORT_VI, OL_ICONS, OlAccordion, OlAccordionItem, OlAlert, OlAlertDialog, OlAppNav, OlAspectRatio, OlAutocomplete, OlAvatar, OlAvatarGroup, OlBackdrop, OlBadge, OlBanner, OlBottomNav, OlBottomNavItem, OlBreadcrumb, OlBreadcrumbItem, OlButton, OlButtonGroup, OlCard, OlCarousel, OlCarouselSlide, OlChart, OlChatBubble, OlChatContainer, OlCheckbox, OlCheckboxRadioForm, OlCheckboxRadioGroup, OlClipboard, OlCollapse, OlCommand, OlDateRangePicker, OlDatepicker, OlDatepickerDirective, OlDatepickerFooter, OlDatepickerHeader, OlDatepickerPopup, OlDatepickerStateService, OlDayView, OlDeviceMockup, OlDownloadAppButton, OlDrawer, OlDrawerFooter, OlDrawerHeader, OlDropdown, OlDropdownHeader, OlDropdownItem, OlDropdownSearch, OlDropdownState, OlEmpty, OlFileDropzone, OlFileInput, OlFileItem, OlFileUpload, OlFocusTrapService, OlFooter, OlFrame, OlGallery, OlGalleryItem, OlHelper, OlIcon, OlIconService, OlIconShape, OlIconStack, OlImagePreview, OlInput, OlInputCounter, OlItem, OlJumbotron, OlKbd, OlLabel, OlListGroup, OlListGroupItem, OlLoadingOverlay, OlMenubar, OlModal, OlModalFooter, OlModalHeader, OlMonthView, OlNavDropdown, OlNavbar, OlNavbarItem, OlOtpInput, OlOverlayContainer, OlPagination, OlPopover, OlPopoverContent, OlPositioningService, OlProgress, OlProgressBarService, OlProgressBarTop, OlRadio, OlRange, OlRating, OlResizable, OlRichTextEditor, OlScrollArea, OlScrollspy, OlSegmented, OlSelect, OlSeparator, OlSidebar, OlSidebarGroup, OlSidebarItem, OlSidebarSubmenu, OlSkeleton, OlSpeedDial, OlSpeedDialItem, OlSpinner, OlStepItem, OlStepper, OlTabItem, OlTable, OlTableLoading, OlTableRow, OlTabs, OlTagInput, OlTextarea, OlTimeline, OlTimelineItem, OlTimepicker, OlToast, OlToastContainer, OlToastService, OlToggle, OlToggleGroup, OlToggleInput, OlTooltip, OlTooltipDirective, OlTree, OlTreeNodeItem, OlYearView, PICKER_ICON_RESERVE_START, WEEKDAYS_SHORT_EN, WEEKDAYS_SHORT_VI, boDau, cloneDate, detectFileKind, endOfDay, fieldLabelLayout, fieldSizeClasses, fileExtension, filesFromClipboard, formatDate, formatFileSize, generateMonthMatrix, generateMonthsMatrix, generateYearsMatrix, isBetween, isDateDisabled, isEditableTarget, isSameDay, isSameMonth, isSameYear, isToday, matchesAccept, multiValuePadY, parseDate, pasteShortcutLabel, provideOlIcons, startOfDay, stripDiacritics, toUploadFile, validateFiles };
|
|
8346
|
-
export type { AccordionVariant, AlertColor, AlertDialogTone, AlertLayout, AlertRounded, AlertType, AlertVariant, AppDevice, AppNavConfig, AppNavGroup, AppNavItem, AppNavUser, AppTheme, AutocompleteOption, AutocompleteSize, AutocompleteState, AvatarShape, AvatarSize, AvatarStatus, BadgeColor, BadgeShape, BadgeSize, BadgeTheme, BadgeType, BannerPosition, BannerVariant, BoxplotDataPoint, BreadcrumbItemStatus, BreadcrumbSeparator, BreadcrumbVariant, ButtonColor, ButtonGroupColor, ButtonGroupOrientation, ButtonGroupSize, ButtonSize, CardPadding, CardRadius, CardShadow, CardVariant, ChartDataPoint, ChartSeries, ChartType, ChatBubbleStatus, ChatSender, CheckboxSize, ChoiceControl, ChoiceControlPosition, ChoiceGroupLayout, ChoiceLayout, ChoiceShape, CommandGroup, CommandItem, DateCustomClass, DateRange, DatepickerPreset, DatepickerSelectionMode, DatepickerSize, DatepickerViewMode, DayCell, DeviceType, DrawerFooterLayout, DrawerPlacement, DrawerSize, DropdownAutoClose, DropdownPlacement, DropdownStateType, DropdownTrigger, EmptySize, FieldSize, FieldState, FileInputSize, FileItemVariant, FileKind, FileKindMeta, FileRejectReason, FileRejection, FileUploadMode, FileValidationResult, FileValidationRules, FloatingVariant, HeatmapData, HelperFeature, HelperRule, HelperSize, HelperState, IconColor, IconShapeColor, IconShapeSize, IconShapeType, IconSize, IconVariant, InputCounterSize, InputSize, InputState, JumbotronVariant, LabelPosition, ListGroupType, ModalFooterLayout, ModalPlacement, ModalSize, MonthCell, NavbarCollapseAt, NavbarDensity, OlAvatarStatusPosition, OlBottomNavPosition, OlButtonType, OlCheckboxRadioFormAlign, OlCheckboxRadioGroupRole, OlDateRangePickerVariant, OlFrameRounded, OlFrameSpacing, OlFrameVariant, OlGalleryGap, OlGalleryRatio, OlHelperType, OlIconStackSize, OlItemAlign, OlItemSize, OlMenubarItem, OlMenubarMenu, OlModalBackdrop, OlModalRole, OlPreviewImage, OlResizableDirection, OlScrollspyItem, OlScrollspyOrientation, OlSkeletonAnimation, OlSkeletonAspectRatio, OlSkeletonRounded, OlSkeletonType, OlSpeedDialTooltipPosition, OlTimepickerAddonType, OlToggleInputAlign, OlTreeNode, OlTreeNodeSelectionMode, OlTreeNodeToggleIcon, OlTreeSelectionMode, OlTreeToggleIcon, OlUploadFile, OtpInputSize, OverlayLayer, PaginationType, PaginationVariant, PopoverPlacement, PopoverTrigger, PositionedCoordinates, PositioningOptions, ProgressColor, ProgressLabelPosition, ProgressSize, RadarIndicator, RadioSize, RatingType, ScatterDataPoint, ScatterSeries, ScrollAreaAxis, ScrollAreaScrollbar, SegmentedColor, SegmentedOption, SegmentedSize, SelectOption, SelectSize, SelectState, SeparatorOrientation, SpeedDialAction, SpeedDialColor, SpeedDialDirection, SpeedDialTrigger, SpeedDialType, StepState, StepperBreakpoint, StepperOrientation, StepperVariant, TabsSize, TabsVariant, TagInputSize, TextareaState, TimeObject, TimepickerFormat, TimepickerSize, TimepickerState, Toast, ToastConfig, ToastPosition, ToggleColor, TogglePosition, ToggleSize, UploadStatus, YearCell };
|
|
9053
|
+
export { APP_NAV_DEFAULT_USER_ACTIONS, CHAT_BUBBLE_STATUS, FIELD_ASTERISK, FIELD_CLEAR_RESERVE_END, FIELD_DISABLED, FIELD_HEIGHT, FIELD_HELPER, FIELD_HELPER_GAP, FIELD_ICON_GAP, FIELD_ICON_RESERVE_END, FIELD_ICON_RESERVE_START, FIELD_LABEL, FIELD_LABEL_BESIDE, FIELD_LABEL_GAP, FIELD_MIN_HEIGHT, FIELD_PADDING_END, FIELD_PADDING_START, FIELD_PADDING_X, FIELD_RADIUS, FIELD_STATE, FIELD_TEXT, FILE_KIND_META, FLOAT_LABEL_START, MONTHS_FULL_EN, MONTHS_FULL_VI, MONTHS_SHORT_VI, OL_APP_HEADER_TEMPLATES, OL_APP_NAV_TEMPLATES, OL_ICONS, OL_LOGO_FULL_COLOR, OL_LOGO_FULL_WHITE, OL_LOGO_MARK_COLOR, OL_LOGO_MARK_WHITE, OL_PATTERN_TYPES, OlAccordion, OlAccordionItem, OlAlert, OlAlertDialog, OlAppHeader, OlAppHeaderActionsDef, OlAppHeaderContentDef, OlAppHeaderTitleDef, OlAppNav, OlAppNavFooterDef, OlAppNavHeaderDef, OlAppNavItemDef, OlAppNavLogoDef, OlAppNavUserDef, OlAppNavUserMenuDef, OlAspectRatio, OlAutocomplete, OlAvatar, OlAvatarGroup, OlBackdrop, OlBadge, OlBanner, OlBottomNav, OlBottomNavItem, OlBreadcrumb, OlBreadcrumbItem, OlButton, OlButtonGroup, OlCard, OlCarousel, OlCarouselSlide, OlChart, OlChatBubble, OlChatContainer, OlCheckbox, OlCheckboxRadioForm, OlCheckboxRadioGroup, OlClipboard, OlCollapse, OlCommand, OlDateRangePicker, OlDatepicker, OlDatepickerDirective, OlDatepickerFooter, OlDatepickerHeader, OlDatepickerPopup, OlDatepickerStateService, OlDayView, OlDeviceMockup, OlDownloadAppButton, OlDrawer, OlDrawerFooter, OlDrawerHeader, OlDropdown, OlDropdownHeader, OlDropdownItem, OlDropdownSearch, OlDropdownState, OlEmpty, OlFileDropzone, OlFileInput, OlFileItem, OlFileUpload, OlFocusTrapService, OlFooter, OlFrame, OlGallery, OlGalleryItem, OlHelper, OlIcon, OlIconService, OlIconShape, OlIconStack, OlImagePreview, OlInput, OlInputCounter, OlItem, OlJumbotron, OlKbd, OlLabel, OlListGroup, OlListGroupItem, OlLoadingOverlay, OlLogo, OlMenubar, OlModal, OlModalFooter, OlModalHeader, OlMonthView, OlNavDropdown, OlNavbar, OlNavbarItem, OlOtpInput, OlOverlayContainer, OlPagination, OlPattern, OlPopover, OlPopoverContent, OlPositioningService, OlProgress, OlProgressBarService, OlProgressBarTop, OlRadio, OlRange, OlRating, OlResizable, OlRichTextEditor, OlScrollArea, OlScrollspy, OlSegmented, OlSelect, OlSeparator, OlSidebar, OlSidebarGroup, OlSidebarItem, OlSidebarSubmenu, OlSkeleton, OlSpeedDial, OlSpeedDialItem, OlSpinner, OlStepItem, OlStepper, OlTabItem, OlTable, OlTableLoading, OlTableRow, OlTabs, OlTagInput, OlTextarea, OlTimeline, OlTimelineItem, OlTimepicker, OlToast, OlToastContainer, OlToastService, OlToggle, OlToggleGroup, OlToggleInput, OlTooltip, OlTooltipDirective, OlTree, OlTreeNodeItem, OlYearView, PICKER_ICON_RESERVE_START, WEEKDAYS_SHORT_EN, WEEKDAYS_SHORT_VI, boDau, cloneDate, detectFileKind, endOfDay, fieldLabelLayout, fieldSizeClasses, fileExtension, filesFromClipboard, formatDate, formatFileSize, generateMonthMatrix, generateMonthsMatrix, generateYearsMatrix, isBetween, isDateDisabled, isEditableTarget, isSameDay, isSameMonth, isSameYear, isToday, matchesAccept, multiValuePadY, parseDate, pasteShortcutLabel, provideOlIcons, startOfDay, stripDiacritics, toUploadFile, validateFiles };
|
|
9054
|
+
export type { AccordionVariant, AlertColor, AlertDialogTone, AlertLayout, AlertRounded, AlertType, AlertVariant, AppDevice, AppHeaderCrumb, AppHeaderSearchCollapseAt, AppHeaderSize, AppHeaderSlotContext, AppHeaderVariant, AppNavConfig, AppNavGroup, AppNavItem, AppNavItemContext, AppNavItemVariant, AppNavLayout, AppNavLogoContext, AppNavSlotContext, AppNavUser, AppNavUserAction, AppNavUserContext, AppNavUserMenuContext, AppTheme, AutocompleteOption, AutocompleteSize, AutocompleteState, AvatarShape, AvatarSize, AvatarStatus, BadgeColor, BadgeShape, BadgeSize, BadgeTheme, BadgeType, BannerPosition, BannerVariant, BoxplotDataPoint, BreadcrumbItemStatus, BreadcrumbSeparator, BreadcrumbVariant, ButtonColor, ButtonGroupColor, ButtonGroupOrientation, ButtonGroupSize, ButtonSize, CardPadding, CardRadius, CardShadow, CardVariant, ChartDataPoint, ChartSeries, ChartType, ChatBubbleStatus, ChatSender, CheckboxSize, ChoiceControl, ChoiceControlPosition, ChoiceGroupLayout, ChoiceLayout, ChoiceShape, CommandGroup, CommandItem, DateCustomClass, DateRange, DatepickerPreset, DatepickerSelectionMode, DatepickerSize, DatepickerViewMode, DayCell, DeviceType, DrawerFooterLayout, DrawerPlacement, DrawerSize, DropdownAutoClose, DropdownPlacement, DropdownStateType, DropdownTrigger, EmptySize, FieldSize, FieldState, FileInputSize, FileItemVariant, FileKind, FileKindMeta, FileRejectReason, FileRejection, FileUploadMode, FileValidationResult, FileValidationRules, FloatingVariant, HeatmapData, HelperFeature, HelperRule, HelperSize, HelperState, IconColor, IconShapeColor, IconShapeSize, IconShapeType, IconSize, IconVariant, InputCounterSize, InputSize, InputState, JumbotronVariant, LabelPosition, ListGroupType, LogoTone, LogoVariant, ModalFooterLayout, ModalPlacement, ModalSize, MonthCell, NavbarCollapseAt, NavbarDensity, OlAvatarStatusPosition, OlBottomNavPosition, OlButtonType, OlCheckboxRadioFormAlign, OlCheckboxRadioGroupRole, OlDateRangePickerVariant, OlFrameRounded, OlFrameSpacing, OlFrameVariant, OlGalleryGap, OlGalleryRatio, OlHelperType, OlIconStackSize, OlItemAlign, OlItemSize, OlLogoArt, OlMenubarItem, OlMenubarMenu, OlModalBackdrop, OlModalRole, OlPreviewImage, OlResizableDirection, OlScrollspyItem, OlScrollspyOrientation, OlSkeletonAnimation, OlSkeletonAspectRatio, OlSkeletonRounded, OlSkeletonType, OlSpeedDialTooltipPosition, OlTimepickerAddonType, OlToggleInputAlign, OlTreeNode, OlTreeNodeSelectionMode, OlTreeNodeToggleIcon, OlTreeSelectionMode, OlTreeToggleIcon, OlUploadFile, OtpInputSize, OverlayLayer, PaginationType, PaginationVariant, PatternFit, PatternPosition, PatternType, PopoverPlacement, PopoverTrigger, PositionedCoordinates, PositioningOptions, ProgressColor, ProgressLabelPosition, ProgressSize, RadarIndicator, RadioSize, RatingType, ScatterDataPoint, ScatterSeries, ScrollAreaAxis, ScrollAreaScrollbar, SegmentedColor, SegmentedOption, SegmentedSize, SegmentedVariant, SelectOption, SelectSize, SelectState, SeparatorOrientation, SpeedDialAction, SpeedDialColor, SpeedDialDirection, SpeedDialTrigger, SpeedDialType, StepState, StepperBreakpoint, StepperOrientation, StepperVariant, TabsSize, TabsVariant, TagInputSize, TextareaState, TimeObject, TimepickerFormat, TimepickerSize, TimepickerState, Toast, ToastConfig, ToastPosition, ToggleColor, TogglePosition, ToggleSize, UploadStatus, YearCell };
|
|
8347
9055
|
//# sourceMappingURL=edmicro-olkit.d.ts.map
|