@sd-angular/core 19.0.0-beta.6 → 19.0.0-beta.60
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/README.md +686 -33
- package/assets/scss/ckeditor5.scss +60 -2
- package/assets/scss/core/bootstrap.scss +17 -0
- package/assets/scss/core/form.scss +4 -1
- package/assets/scss/core/grid.scss +40 -0
- package/assets/scss/sd-core.scss +1 -0
- package/components/avatar/index.d.ts +1 -0
- package/components/avatar/src/avatar.component.d.ts +19 -0
- package/components/badge/src/badge.component.d.ts +77 -19
- package/components/button/src/button.component.d.ts +30 -28
- package/components/code-editor/index.d.ts +1 -0
- package/components/code-editor/src/code-editor.component.d.ts +25 -0
- package/components/document-builder/index.d.ts +1 -0
- package/components/document-builder/src/document-builder.component.d.ts +12 -41
- package/components/document-builder/src/document-builder.model.d.ts +14 -11
- package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +9 -0
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +44 -0
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +57 -0
- package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +1 -0
- package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +4 -0
- package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +31 -0
- package/components/document-builder/src/plugins/index.d.ts +7 -2
- package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +2 -2
- package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +14 -0
- package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +25 -0
- package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +29 -0
- package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +35 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +15 -0
- package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +54 -0
- package/components/document-builder/src/plugins/paste-handler/filters/replacetabswithinprewithspaces.d.ts +24 -0
- package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +27 -0
- package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +16 -0
- package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +25 -0
- package/components/document-builder/src/plugins/paste-handler/index.d.ts +35 -0
- package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +31 -0
- package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +31 -0
- package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +29 -0
- package/components/document-builder/src/plugins/paste-handler/types.d.ts +30 -0
- package/components/document-builder/src/plugins/table-custom/index.d.ts +34 -0
- package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +39 -0
- package/components/index.d.ts +4 -0
- package/components/mini-editor/index.d.ts +2 -0
- package/components/mini-editor/src/mini-editor.component.d.ts +90 -0
- package/components/mini-editor/src/mini-editor.model.d.ts +44 -0
- package/components/section/src/section.component.d.ts +10 -11
- package/components/side-drawer/src/side-drawer.component.d.ts +11 -24
- package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +4 -1
- package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -15
- package/components/table/src/components/column-filter/column-filter.component.d.ts +3 -3
- package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +12 -2
- package/components/table/src/components/desktop-cell-view/desktop-cell-view.component.d.ts +12 -2
- package/components/table/src/components/external-filter/external-filter.component.d.ts +1 -1
- package/components/table/src/components/selector-action/action-filter.pipe.d.ts +11 -10
- package/components/table/src/components/selector-action/selector-action.component.d.ts +5 -3
- package/components/table/src/directives/index.d.ts +2 -0
- package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +9 -0
- package/components/table/src/directives/sticky-shadow.directive.d.ts +17 -0
- package/components/table/src/models/table-column.model.d.ts +34 -34
- package/components/table/src/models/table-command.model.d.ts +7 -3
- package/components/table/src/models/table-item.model.d.ts +5 -4
- package/components/table/src/models/table-option-config.model.d.ts +5 -0
- package/components/table/src/models/table-option-export.model.d.ts +3 -2
- package/components/table/src/models/table-option-selector.model.d.ts +11 -10
- package/components/table/src/models/table-option.model.d.ts +10 -9
- package/components/table/src/services/index.d.ts +3 -0
- package/components/table/src/services/table-export/table-export.service.d.ts +26 -0
- package/components/table/src/services/table-filter/table-filter.model.d.ts +5 -4
- package/components/table/src/services/table-format/table-format.service.d.ts +16 -0
- package/components/table/src/table.component.d.ts +39 -53
- package/components/upload-file/src/configurations/upload-file.configuration.d.ts +1 -1
- package/components/upload-file/src/services/upload-file.service.d.ts +0 -1
- package/components/upload-file/src/upload-file.component.d.ts +49 -54
- package/components/view/index.d.ts +1 -0
- package/components/view/src/view.component.d.ts +16 -0
- package/components/workflow/src/models/form-generic-component.model.d.ts +5 -4
- package/components/workflow/src/models/index.d.ts +1 -0
- package/directives/index.d.ts +1 -0
- package/directives/src/sd-href.directive.d.ts +9 -0
- package/fesm2022/sd-angular-core-components-avatar.mjs +103 -0
- package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-badge.mjs +101 -91
- package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-button.mjs +70 -96
- package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-code-editor.mjs +129 -0
- package/fesm2022/sd-angular-core-components-code-editor.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-document-builder.mjs +3994 -608
- package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-history.mjs +1 -1
- package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-import-excel.mjs +1 -1
- package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-mini-editor.mjs +326 -0
- package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-preview.mjs +1 -1
- package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-section.mjs +24 -42
- package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-side-drawer.mjs +78 -84
- package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-tab-router.mjs +152 -226
- package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs +1129 -1131
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-upload-file.mjs +339 -444
- package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-view.mjs +45 -0
- package/fesm2022/sd-angular-core-components-view.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-workflow.mjs +47 -57
- package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components.mjs +4 -0
- package/fesm2022/sd-angular-core-components.mjs.map +1 -1
- package/fesm2022/sd-angular-core-directives.mjs +80 -27
- package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs +274 -364
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +5 -2
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip.mjs +5 -2
- package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date-range.mjs +160 -245
- package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date.mjs +153 -273
- package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-datetime.mjs +152 -288
- package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input-number.mjs +191 -338
- package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input.mjs +149 -287
- package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-radio.mjs +3 -2
- package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-select.mjs +375 -448
- package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-textarea.mjs +138 -227
- package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-keycloak.mjs +126 -0
- package/fesm2022/sd-angular-core-modules-keycloak.mjs.map +1 -0
- package/fesm2022/sd-angular-core-modules-layout.mjs +454 -453
- package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules.mjs +1 -1
- package/fesm2022/sd-angular-core-services-api.mjs +5 -10
- package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-confirm.mjs +2 -2
- package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-docx.mjs +173 -0
- package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -0
- package/fesm2022/sd-angular-core-services-notify.mjs +2 -2
- package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services.mjs +1 -0
- package/fesm2022/sd-angular-core-services.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-extensions.mjs +21 -45
- package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs +15 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
- package/forms/autocomplete/src/autocomplete.component.d.ts +50 -55
- package/forms/chip/src/chip.component.d.ts +3 -2
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +3 -2
- package/forms/date/src/date.component.d.ts +43 -46
- package/forms/date-range/src/date-range.component.d.ts +30 -34
- package/forms/datetime/src/datetime.component.d.ts +43 -49
- package/forms/input/src/input.component.d.ts +48 -57
- package/forms/input-number/src/input-number.component.d.ts +48 -54
- package/forms/select/src/select.component.d.ts +62 -64
- package/forms/textarea/src/textarea.component.d.ts +36 -42
- package/modules/index.d.ts +1 -1
- package/modules/keycloak/index.d.ts +4 -0
- package/modules/keycloak/keycloak.configuration.d.ts +11 -0
- package/modules/keycloak/keycloak.interceptor.d.ts +2 -0
- package/modules/keycloak/keycloak.module.d.ts +18 -0
- package/modules/keycloak/keycloak.service.d.ts +14 -0
- package/modules/layout/components/layout-main/layout-main.component.d.ts +7 -12
- package/modules/layout/components/page/page.component.d.ts +5 -7
- package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +22 -29
- package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +11 -17
- package/modules/layout/components/sidebar-v1/main.component.d.ts +14 -14
- package/modules/layout/configurations/layout.configuration.d.ts +46 -3
- package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +3 -8
- package/modules/layout/modules/home/components/home-page/home-page.component.d.ts +2 -5
- package/modules/layout/modules/not-found/pages/root/root.component.d.ts +3 -8
- package/modules/layout/pipes/high-light-search.pipe.d.ts +1 -1
- package/modules/layout/services/index.d.ts +1 -0
- package/modules/layout/services/layout.service.d.ts +10 -0
- package/modules/layout/services/menu/menu.model.d.ts +2 -0
- package/modules/layout/services/storage/storage.service.d.ts +0 -3
- package/package.json +93 -70
- package/sd-angular-core-19.0.0-beta.60.tgz +0 -0
- package/services/api/src/api.model.d.ts +6 -1
- package/services/confirm/src/lib/confirm.service.d.ts +1 -0
- package/services/docx/index.d.ts +1 -0
- package/services/docx/src/lib/docx.model.d.ts +9 -0
- package/services/docx/src/lib/docx.service.d.ts +13 -0
- package/services/docx/src/public-api.d.ts +2 -0
- package/services/index.d.ts +1 -0
- package/services/notify/index.d.ts +1 -0
- package/services/notify/src/notify.model.d.ts +1 -1
- package/services/notify/src/notify.service.d.ts +5 -5
- package/utilities/extensions/src/string.extension.d.ts +2 -0
- package/utilities/extensions/src/utility.extension.d.ts +1 -0
- package/utilities/models/index.d.ts +3 -0
- package/utilities/models/src/filter.model.d.ts +14 -2
- package/utilities/models/src/icon.model.d.ts +2 -0
- package/utilities/models/src/nested-key-of.model.d.ts +5 -0
- package/utilities/models/src/pattern.model.d.ts +1 -1
- package/utilities/models/src/unwrap-signal.model.d.ts +6 -0
- package/components/document-builder/src/plugins/comment/comment.plugin.d.ts +0 -4
- package/components/document-builder/src/plugins/table-fit/table-fit.plugin.d.ts +0 -4
- package/fesm2022/sd-angular-core-modules-oidc.mjs +0 -127
- package/fesm2022/sd-angular-core-modules-oidc.mjs.map +0 -1
- package/modules/oidc/dynamic-sts.loader.d.ts +0 -11
- package/modules/oidc/index.d.ts +0 -2
- package/modules/oidc/oidc.configuration.d.ts +0 -11
- package/modules/oidc/oidc.module.d.ts +0 -14
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
import { Plugin, Widget } from 'ckeditor5';
|
|
2
|
+
import { SdDocumentBuilderVariable } from '../../document-builder.model';
|
|
2
3
|
export declare class VariablePlugin extends Plugin {
|
|
3
4
|
#private;
|
|
5
|
+
static get pluginName(): "VariablePlugin";
|
|
4
6
|
static get requires(): (typeof Widget)[];
|
|
5
7
|
init(): void;
|
|
8
|
+
/**
|
|
9
|
+
* Lấy tất cả variables trong document.
|
|
10
|
+
* @returns Danh sách tất cả variables (bao gồm bindingValue nếu đã binding)
|
|
11
|
+
*/
|
|
12
|
+
all<T = any>(): SdDocumentBuilderVariable<T>[];
|
|
13
|
+
/**
|
|
14
|
+
* Scroll tới vị trí của variable theo uuid.
|
|
15
|
+
* @param uuid - uuid của variable (FE tự sinh sau mỗi lần drop)
|
|
16
|
+
*/
|
|
17
|
+
scroll(uuid: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Gán giá trị cho TẤT CẢ variable có cùng id trong document.
|
|
20
|
+
* Nếu value rỗng → tự động gọi clearValue(id).
|
|
21
|
+
* @param id - id của variable definition
|
|
22
|
+
* @param value - giá trị binding cần hiển thị
|
|
23
|
+
* @returns số instance đã được cập nhật
|
|
24
|
+
*/
|
|
25
|
+
bindValue(id: string, value: string): number;
|
|
26
|
+
/**
|
|
27
|
+
* Xóa binding value của TẤT CẢ variable có cùng id.
|
|
28
|
+
* @param id - id của variable definition
|
|
29
|
+
* @returns số instance đã được cập nhật
|
|
30
|
+
*/
|
|
31
|
+
clearValue(id: string): number;
|
|
32
|
+
/**
|
|
33
|
+
* Batch bind nhiều variables theo map { id → value }.
|
|
34
|
+
* Toàn bộ thực hiện trong 1 model.change() → 1 undo step duy nhất.
|
|
35
|
+
* @param map - { [id]: boundValue }
|
|
36
|
+
*/
|
|
37
|
+
bindValues(map: Record<string, string>): void;
|
|
38
|
+
/**
|
|
39
|
+
* Batch clear binding của nhiều variables.
|
|
40
|
+
* @param ids - danh sách id cần clear; nếu không truyền/rỗng → clear TẤT CẢ
|
|
41
|
+
*/
|
|
42
|
+
clearValues(ids?: string[]): void;
|
|
43
|
+
/** Xóa toàn bộ binding values trong document. Shorthand của clearValues(). */
|
|
44
|
+
clearAllValues(): void;
|
|
6
45
|
}
|
package/components/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from '@sd-angular/core/components/avatar';
|
|
1
2
|
export * from '@sd-angular/core/components/button';
|
|
2
3
|
export * from '@sd-angular/core/components/badge';
|
|
3
4
|
export * from '@sd-angular/core/components/tab-router';
|
|
@@ -13,3 +14,6 @@ export * from '@sd-angular/core/components/anchor-v2';
|
|
|
13
14
|
export * from '@sd-angular/core/components/query-builder';
|
|
14
15
|
export * from '@sd-angular/core/components/import-excel';
|
|
15
16
|
export * from '@sd-angular/core/components/document-builder';
|
|
17
|
+
export * from '@sd-angular/core/components/mini-editor';
|
|
18
|
+
export * from '@sd-angular/core/components/view';
|
|
19
|
+
export * from '@sd-angular/core/components/code-editor';
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { ClassicEditor } from 'ckeditor5';
|
|
3
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
4
|
+
import { SdMiniEditorOption, SdMiniEditorConfig } from './mini-editor.model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Component sd-mini-editor - Editor đơn giản cho comment input
|
|
8
|
+
* Sử dụng CKEditor với chế độ đơn giản (bold, italic, link)
|
|
9
|
+
* Hỗ trợ mention và output format (html/markdown)
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```html
|
|
13
|
+
* <sd-mini-editor
|
|
14
|
+
* [option]="editorOption"
|
|
15
|
+
* [(ngModel)]="content"
|
|
16
|
+
* (contentChange)="onContentChange($event)"
|
|
17
|
+
* >
|
|
18
|
+
* </sd-mini-editor>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class SdMiniEditor implements ControlValueAccessor {
|
|
22
|
+
#private;
|
|
23
|
+
/** Cấu hình option cho editor */
|
|
24
|
+
option: SdMiniEditorOption;
|
|
25
|
+
/** NgModel binding - nội dung HTML/Markdown */
|
|
26
|
+
value: string;
|
|
27
|
+
valueChange: EventEmitter<string>;
|
|
28
|
+
/** Event emitter khi content thay đổi */
|
|
29
|
+
contentChange: EventEmitter<string>;
|
|
30
|
+
/** Event emitter khi blur */
|
|
31
|
+
blur: EventEmitter<FocusEvent>;
|
|
32
|
+
/** Event emitter khi focus */
|
|
33
|
+
focus: EventEmitter<FocusEvent>;
|
|
34
|
+
/** Disabled state */
|
|
35
|
+
disabled: boolean;
|
|
36
|
+
Editor: typeof ClassicEditor;
|
|
37
|
+
get editorConfig(): SdMiniEditorConfig;
|
|
38
|
+
constructor();
|
|
39
|
+
ngOnDestroy(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Xử lý khi editor ready
|
|
42
|
+
*/
|
|
43
|
+
onReady(editor: ClassicEditor): void;
|
|
44
|
+
/**
|
|
45
|
+
* Set nội dung cho editor
|
|
46
|
+
*/
|
|
47
|
+
setContent(content: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get nội dung từ editor
|
|
50
|
+
*/
|
|
51
|
+
getContent(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get nội dung HTML gốc (không convert)
|
|
54
|
+
*/
|
|
55
|
+
getHtmlContent(): string;
|
|
56
|
+
/**
|
|
57
|
+
* Focus vào editor
|
|
58
|
+
*/
|
|
59
|
+
focusEditor(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Insert mention vào vị trí con trỏ hiện tại
|
|
62
|
+
*/
|
|
63
|
+
insertMention(item: {
|
|
64
|
+
id: string;
|
|
65
|
+
name: string;
|
|
66
|
+
marker?: string;
|
|
67
|
+
}): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get danh sách mentions trong nội dung
|
|
70
|
+
*/
|
|
71
|
+
getMentions(): Array<{
|
|
72
|
+
id: string;
|
|
73
|
+
name: string;
|
|
74
|
+
marker: string;
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* ControlValueAccessor: Write value
|
|
78
|
+
*/
|
|
79
|
+
writeValue(value: string): void;
|
|
80
|
+
/**
|
|
81
|
+
* ControlValueAccessor: Register change callback
|
|
82
|
+
*/
|
|
83
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
84
|
+
/**
|
|
85
|
+
* ControlValueAccessor: Register touched callback
|
|
86
|
+
*/
|
|
87
|
+
registerOnTouched(fn: () => void): void;
|
|
88
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdMiniEditor, never>;
|
|
89
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdMiniEditor, "sd-mini-editor", never, { "option": { "alias": "option"; "required": true; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; "contentChange": "contentChange"; "blur": "blur"; "focus": "focus"; }, never, never, true, never>;
|
|
90
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { EditorConfig, MentionFeed, MentionFeedObjectItem } from 'ckeditor5';
|
|
2
|
+
export type { MentionFeedObjectItem };
|
|
3
|
+
export type SdMiniEditorOutputFormat = 'html' | 'markdown';
|
|
4
|
+
export interface SdMiniEditorMentionConfig {
|
|
5
|
+
/** Feed data cho mention - có thể là array hoặc function trả về Promise
|
|
6
|
+
* CKEditor MentionFeed đã hỗ trợ: marker, minChars, dropdownLimit, itemRenderer
|
|
7
|
+
*/
|
|
8
|
+
feeds?: MentionFeed[];
|
|
9
|
+
/** Custom render function cho giá trị mention khi chèn vào editor
|
|
10
|
+
* Trả về object với text và các attributes tùy chỉnh
|
|
11
|
+
*/
|
|
12
|
+
valueRender?: (item: MentionFeedObjectItem) => {
|
|
13
|
+
text: string;
|
|
14
|
+
attributes?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export type SdMiniEditorMentionItem<T = any> = MentionFeedObjectItem & {
|
|
18
|
+
data?: T;
|
|
19
|
+
};
|
|
20
|
+
export interface SdMiniEditorOption {
|
|
21
|
+
/** Output format: 'html' hoặc 'markdown' (mặc định: 'html') */
|
|
22
|
+
outputFormat?: SdMiniEditorOutputFormat;
|
|
23
|
+
/** Placeholder text */
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
/** Chiều cao editor (mặc định: auto) */
|
|
26
|
+
height?: string;
|
|
27
|
+
/** Chiều cao tối đa của editor (ví dụ: '300px') */
|
|
28
|
+
maxHeight?: string;
|
|
29
|
+
/** Bật/tắt mention plugin */
|
|
30
|
+
enableMention?: boolean;
|
|
31
|
+
/** Cấu hình mention */
|
|
32
|
+
mentionConfig?: SdMiniEditorMentionConfig;
|
|
33
|
+
/** Callback khi nội dung thay đổi */
|
|
34
|
+
onChange?: (content: string) => void;
|
|
35
|
+
/** Callback khi blur */
|
|
36
|
+
onBlur?: (event: FocusEvent) => void;
|
|
37
|
+
/** Callback khi focus */
|
|
38
|
+
onFocus?: (event: FocusEvent) => void;
|
|
39
|
+
/** Callback khi mention được chọn */
|
|
40
|
+
onMentionSelect?: (item: SdMiniEditorMentionItem) => void;
|
|
41
|
+
}
|
|
42
|
+
export type SdMiniEditorConfig = EditorConfig & {
|
|
43
|
+
getOption?: () => SdMiniEditorOption;
|
|
44
|
+
};
|
|
@@ -2,17 +2,16 @@ import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
|
|
|
2
2
|
import { SdColor } from '@sd-angular/core/utilities';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class SdSection extends SdBaseSecureComponent {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
collapsable: boolean
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
set _hideHeader(val: boolean | '' | undefined | null);
|
|
5
|
+
private el;
|
|
6
|
+
title: import("@angular/core").InputSignal<string | null>;
|
|
7
|
+
subTitle: import("@angular/core").InputSignal<string>;
|
|
8
|
+
icon: import("@angular/core").InputSignal<string | null>;
|
|
9
|
+
iconColor: import("@angular/core").InputSignal<SdColor>;
|
|
10
|
+
collapsed: import("@angular/core").ModelSignal<boolean>;
|
|
11
|
+
collapsable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12
|
+
hideHeader: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
constructor();
|
|
15
14
|
toggleCollapse: () => void;
|
|
16
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdSection, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdSection, "sd-section", never, { "title": { "alias": "title"; "required": true; }; "subTitle": { "alias": "subTitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconColor": { "alias": "iconColor"; "required": false; }; "
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdSection, "sd-section", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subTitle": { "alias": "subTitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "collapsable": { "alias": "collapsable"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*"], true, never>;
|
|
18
17
|
}
|
|
@@ -1,39 +1,26 @@
|
|
|
1
1
|
import { CdkPortal } from '@angular/cdk/portal';
|
|
2
|
-
import { AfterViewInit, ApplicationRef, ChangeDetectorRef, EventEmitter, Injector, OnDestroy, ElementRef, ViewContainerRef } from '@angular/core';
|
|
3
2
|
import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
|
|
4
|
-
import { SdLoadingService } from '@sd-angular/core/services';
|
|
5
3
|
import { Observable } from 'rxjs';
|
|
6
4
|
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class SdSideDrawer extends SdBaseSecureComponent
|
|
5
|
+
export declare class SdSideDrawer extends SdBaseSecureComponent {
|
|
8
6
|
#private;
|
|
9
|
-
private viewContainerRef;
|
|
10
|
-
private ar;
|
|
11
|
-
private injector;
|
|
12
|
-
private ref;
|
|
13
|
-
private loadingService;
|
|
14
7
|
id: string;
|
|
15
|
-
portal: CdkPortal
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
set _hideClose(val: boolean | '' | null | undefined);
|
|
23
|
-
disableClose: boolean;
|
|
24
|
-
set _disableClose(val: boolean | '' | null | undefined);
|
|
25
|
-
sdClosed: EventEmitter<any>;
|
|
8
|
+
portal: import("@angular/core").Signal<CdkPortal>;
|
|
9
|
+
title: import("@angular/core").InputSignal<string>;
|
|
10
|
+
width: import("@angular/core").InputSignal<string>;
|
|
11
|
+
hideClose: import("@angular/core").InputSignalWithTransform<boolean, boolean | "">;
|
|
12
|
+
disableBackdropClose: import("@angular/core").InputSignalWithTransform<boolean, boolean | "">;
|
|
13
|
+
drawerClass: import("@angular/core").InputSignal<any>;
|
|
14
|
+
sdClosed: import("@angular/core").OutputEmitterRef<void>;
|
|
26
15
|
isOpened: boolean;
|
|
27
16
|
isLoading: boolean;
|
|
28
17
|
isHovered$: Observable<boolean>;
|
|
29
|
-
constructor(
|
|
30
|
-
ngAfterViewInit(): void;
|
|
18
|
+
constructor();
|
|
31
19
|
open: () => void;
|
|
32
20
|
close: () => void;
|
|
33
21
|
startLoading: () => void;
|
|
34
22
|
stopLoading: () => void;
|
|
35
|
-
|
|
36
|
-
getHoverStatusStream(): Observable<boolean>;
|
|
23
|
+
preventScroll: (event: Event) => void;
|
|
37
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdSideDrawer, never>;
|
|
38
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdSideDrawer, "sd-side-drawer", never, { "
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdSideDrawer, "sd-side-drawer", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "disableBackdropClose": { "alias": "disableBackdropClose"; "required": false; "isSignal": true; }; "drawerClass": { "alias": "drawerClass"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooter]"], true, never>;
|
|
39
26
|
}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { SdTab, SdTabInfo } from '../../models';
|
|
3
3
|
import { SdTabRouterService } from '../../services/tab-router.service';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class SdTabRouterItemComponent implements OnInit, OnDestroy {
|
|
6
7
|
#private;
|
|
7
8
|
private cdRef;
|
|
8
9
|
private tabRouterService;
|
|
10
|
+
private router;
|
|
9
11
|
tab: SdTab;
|
|
10
12
|
tabInfo?: SdTabInfo;
|
|
11
|
-
constructor(cdRef: ChangeDetectorRef, tabRouterService: SdTabRouterService);
|
|
13
|
+
constructor(cdRef: ChangeDetectorRef, tabRouterService: SdTabRouterService, router: Router);
|
|
12
14
|
ngOnInit(): void;
|
|
13
15
|
ngOnDestroy(): void;
|
|
16
|
+
onTabClick: (event: Event) => void;
|
|
14
17
|
close: (event: Event) => void;
|
|
15
18
|
onMousedown: (event: MouseEvent) => void;
|
|
16
19
|
onMouseup: (event: MouseEvent) => void;
|
package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
-
import { SdNotifyService } from '@sd-angular/core/services/notify';
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
4
2
|
import { SdTab } from '../../models';
|
|
5
|
-
import { SdTabDecoratorService } from '../../services/tab-decorator.service';
|
|
6
|
-
import { SdTabRouterService } from '../../services/tab-router.service';
|
|
7
3
|
import { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';
|
|
8
4
|
import * as i0 from "@angular/core";
|
|
9
5
|
export declare class SdTabRouterOutletComponent implements OnDestroy {
|
|
10
6
|
#private;
|
|
11
|
-
private router;
|
|
12
|
-
private activatedRoute;
|
|
13
|
-
private cd;
|
|
14
|
-
private injector;
|
|
15
|
-
private tabDecoratorService;
|
|
16
|
-
private tabRouterService;
|
|
17
|
-
private sdNotifyService;
|
|
18
7
|
tabRouterNav?: SdTabRouterNavComponent;
|
|
19
|
-
tabs: SdTab[]
|
|
20
|
-
constructor(
|
|
21
|
-
tabRouterService: SdTabRouterService, sdNotifyService: SdNotifyService);
|
|
8
|
+
tabs: import("@angular/core").WritableSignal<SdTab[]>;
|
|
9
|
+
constructor();
|
|
22
10
|
ngOnDestroy(): void;
|
|
23
11
|
tabTrackBy: (index: number, tab: SdTab) => string;
|
|
24
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdTabRouterOutletComponent, never>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ChangeDetectorRef, EventEmitter, OnInit,
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, Signal } from '@angular/core';
|
|
2
2
|
import { SdSearch } from '@sd-angular/core/forms';
|
|
3
|
-
import { SdTableColumn } from '../../models/table-column.model';
|
|
4
3
|
import { SdOperator } from '@sd-angular/core/utilities';
|
|
4
|
+
import { SdTableColumn } from '../../models/table-column.model';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class ColumnFilterComponent implements OnInit, OnDestroy {
|
|
7
7
|
#private;
|
|
@@ -22,7 +22,7 @@ export declare class ColumnFilterComponent implements OnInit, OnDestroy {
|
|
|
22
22
|
display: string;
|
|
23
23
|
}[];
|
|
24
24
|
column: SdTableColumn;
|
|
25
|
-
items: any[] | SdSearch;
|
|
25
|
+
items: any[] | Signal<any[]> | SdSearch;
|
|
26
26
|
cacheValues?: Record<string, any[]>;
|
|
27
27
|
set _column(column: SdTableColumn);
|
|
28
28
|
filterChange: EventEmitter<any>;
|
|
@@ -1,17 +1,27 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
1
2
|
import { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';
|
|
2
3
|
import { SdTableColumn } from '../../models/table-column.model';
|
|
3
4
|
import { SdTableItem } from '../../models/table-item.model';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class SdDesktopCell {
|
|
7
|
+
#private;
|
|
8
|
+
contentContainer: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
|
|
9
|
+
isCollapsed: import("@angular/core").WritableSignal<boolean>;
|
|
10
|
+
isOverflowing: import("@angular/core").WritableSignal<boolean>;
|
|
6
11
|
autoId?: string;
|
|
7
12
|
set _autoId(val: string | undefined | null);
|
|
8
13
|
value: any;
|
|
9
14
|
column: SdTableColumn;
|
|
15
|
+
charLimited: {
|
|
16
|
+
title?: string;
|
|
17
|
+
width?: string;
|
|
18
|
+
} | undefined;
|
|
10
19
|
item: SdTableItem;
|
|
11
20
|
itemKey: string;
|
|
12
21
|
set _item(item: SdTableItem);
|
|
13
22
|
cellDef: Record<string, SdTabelCellDefDirective>;
|
|
14
|
-
|
|
23
|
+
ngAfterViewInit(): void;
|
|
24
|
+
toggle: () => void;
|
|
15
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdDesktopCell, never>;
|
|
16
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdDesktopCell, "sd-desktop-cell", never, { "_autoId": { "alias": "autoId"; "required": false; }; "value": { "alias": "value"; "required": false; }; "column": { "alias": "column"; "required": true; }; "_item": { "alias": "item"; "required": true; }; "cellDef": { "alias": "cellDef"; "required": false; }; }, {}, never, never, true, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdDesktopCell, "sd-desktop-cell", never, { "_autoId": { "alias": "autoId"; "required": false; }; "value": { "alias": "value"; "required": false; }; "column": { "alias": "column"; "required": true; }; "charLimited": { "alias": "charLimited"; "required": true; }; "_item": { "alias": "item"; "required": true; }; "cellDef": { "alias": "cellDef"; "required": false; }; }, {}, never, never, true, never>;
|
|
17
27
|
}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
1
2
|
import { SdTableColumn } from '../../models/table-column.model';
|
|
2
3
|
import { SdTableItem } from '../../models/table-item.model';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class SdDesktopCellView {
|
|
6
|
+
#private;
|
|
7
|
+
contentContainer: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
|
|
8
|
+
isCollapsed: import("@angular/core").WritableSignal<boolean>;
|
|
9
|
+
isOverflowing: import("@angular/core").WritableSignal<boolean>;
|
|
5
10
|
autoId?: string;
|
|
6
11
|
set _autoId(val: string | undefined | null);
|
|
7
12
|
column: SdTableColumn;
|
|
13
|
+
charLimited: {
|
|
14
|
+
title?: string;
|
|
15
|
+
width?: string;
|
|
16
|
+
} | undefined;
|
|
8
17
|
item: SdTableItem;
|
|
9
18
|
itemKey: string;
|
|
10
19
|
set _item(item: SdTableItem);
|
|
11
|
-
|
|
20
|
+
ngAfterViewInit(): void;
|
|
21
|
+
toggle: () => void;
|
|
12
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdDesktopCellView, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdDesktopCellView, "sd-desktop-cell-view", never, { "_autoId": { "alias": "autoId"; "required": false; }; "column": { "alias": "column"; "required": true; }; "_item": { "alias": "item"; "required": true; }; }, {}, never, never, true, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdDesktopCellView, "sd-desktop-cell-view", never, { "_autoId": { "alias": "autoId"; "required": false; }; "column": { "alias": "column"; "required": true; }; "charLimited": { "alias": "charLimited"; "required": true; }; "_item": { "alias": "item"; "required": true; }; }, {}, never, never, true, never>;
|
|
14
24
|
}
|
|
@@ -26,7 +26,7 @@ export declare class ExternalFilterComponent implements AfterViewInit, OnDestroy
|
|
|
26
26
|
ngAfterViewInit(): void;
|
|
27
27
|
ngOnDestroy(): void;
|
|
28
28
|
onKeyupEnter: () => void;
|
|
29
|
-
onFilter: () => void;
|
|
29
|
+
onFilter: (externalFilter: SdTableExternalFilter) => void;
|
|
30
30
|
onSubmit: () => void;
|
|
31
31
|
updateFilter: () => void;
|
|
32
32
|
clearFilter: (event?: Event) => void;
|
|
@@ -2,6 +2,7 @@ import { PipeTransform } from '@angular/core';
|
|
|
2
2
|
import { SdTableAction } from '../../models/table-option-selector.model';
|
|
3
3
|
import { SdTableItem } from '../../models/table-item.model';
|
|
4
4
|
import { SdButton } from '@sd-angular/core/components/button';
|
|
5
|
+
import { SdUnwrapSignal } from '@sd-angular/core/utilities/models';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export declare class ActionFilterPipe implements PipeTransform {
|
|
7
8
|
#private;
|
|
@@ -13,21 +14,21 @@ export type Action<T = any> = ActionNormal<T> | ActionChildren<T>;
|
|
|
13
14
|
interface ActionNormal<T = any> {
|
|
14
15
|
variant: 'normal';
|
|
15
16
|
icon?: string;
|
|
16
|
-
fontSet?: SdButton['fontSet']
|
|
17
|
-
tooltip?: SdButton['tooltip']
|
|
18
|
-
title?: SdButton['title']
|
|
19
|
-
color?: SdButton['color']
|
|
20
|
-
type?: SdButton['type']
|
|
17
|
+
fontSet?: SdUnwrapSignal<SdButton['fontSet']>;
|
|
18
|
+
tooltip?: SdUnwrapSignal<SdButton['tooltip']>;
|
|
19
|
+
title?: SdUnwrapSignal<SdButton['title']>;
|
|
20
|
+
color?: SdUnwrapSignal<SdButton['color']>;
|
|
21
|
+
type?: SdUnwrapSignal<SdButton['type']>;
|
|
21
22
|
click: (selectedItems?: T[]) => void;
|
|
22
23
|
}
|
|
23
24
|
interface ActionChildren<T = any> {
|
|
24
25
|
variant: 'children';
|
|
25
26
|
icon?: string;
|
|
26
|
-
fontSet?: SdButton['fontSet']
|
|
27
|
-
tooltip?: SdButton['tooltip']
|
|
28
|
-
title?: SdButton['title']
|
|
29
|
-
color?: SdButton['color']
|
|
30
|
-
type?: SdButton['type']
|
|
27
|
+
fontSet?: SdUnwrapSignal<SdButton['fontSet']>;
|
|
28
|
+
tooltip?: SdUnwrapSignal<SdButton['tooltip']>;
|
|
29
|
+
title?: SdUnwrapSignal<SdButton['title']>;
|
|
30
|
+
color?: SdUnwrapSignal<SdButton['color']>;
|
|
31
|
+
type?: SdUnwrapSignal<SdButton['type']>;
|
|
31
32
|
children: ActionNormal<T>[];
|
|
32
33
|
}
|
|
33
34
|
export {};
|
|
@@ -4,12 +4,14 @@ import { SdTableOption } from '../../models/table-option.model';
|
|
|
4
4
|
import { Action } from './action-filter.pipe';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class SelectorActionComponent {
|
|
7
|
-
tableOption
|
|
8
|
-
selectedTableItems
|
|
7
|
+
tableOption: import("@angular/core").InputSignal<SdTableOption | undefined>;
|
|
8
|
+
selectedTableItems: import("@angular/core").InputSignal<SdTableItem<any>[] | undefined>;
|
|
9
9
|
clear: EventEmitter<any>;
|
|
10
|
+
message: import("@angular/core").Signal<string>;
|
|
11
|
+
isOpened: import("@angular/core").Signal<boolean>;
|
|
10
12
|
constructor();
|
|
11
13
|
onClear: () => void;
|
|
12
14
|
onClickAction: (action: Action) => void;
|
|
13
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<SelectorActionComponent, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SelectorActionComponent, "selector-action", never, { "tableOption": { "alias": "tableOption"; "required": false; }; "selectedTableItems": { "alias": "selectedTableItems"; "required": false; }; }, { "clear": "clear"; }, never, never, true, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SelectorActionComponent, "selector-action", never, { "tableOption": { "alias": "tableOption"; "required": false; "isSignal": true; }; "selectedTableItems": { "alias": "selectedTableItems"; "required": false; "isSignal": true; }; }, { "clear": "clear"; }, never, never, true, never>;
|
|
15
17
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SdTableColumnFilterDefDirective {
|
|
4
|
+
templateRef: TemplateRef<any>;
|
|
5
|
+
sdTableColumnFilterDef?: string;
|
|
6
|
+
constructor(templateRef: TemplateRef<any>);
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdTableColumnFilterDefDirective, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SdTableColumnFilterDefDirective, "[sdTableColumnFilterDef]", never, { "sdTableColumnFilterDef": { "alias": "sdTableColumnFilterDef"; "required": false; }; }, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Directive thêm hiệu ứng đổ bóng (elevation-2) vào cột sticky cuối cùng bên trái
|
|
4
|
+
* và cột sticky đầu tiên bên phải, tạo ngăn cách trực quan với phần được scroll.
|
|
5
|
+
*
|
|
6
|
+
* Chỉ dùng nội bộ trong sd-table, không chìa ra ngoài.
|
|
7
|
+
*
|
|
8
|
+
* Gắn vào scroll container của table:
|
|
9
|
+
* @example
|
|
10
|
+
* <div class="c-table" stickyShadow>...</div>
|
|
11
|
+
*/
|
|
12
|
+
export declare class StickyShadowDirective {
|
|
13
|
+
#private;
|
|
14
|
+
constructor();
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StickyShadowDirective, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<StickyShadowDirective, "[stickyShadow]", never, {}, {}, never, never, true, never>;
|
|
17
|
+
}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import { TemplateRef } from '@angular/core';
|
|
1
|
+
import { Signal, TemplateRef } from '@angular/core';
|
|
2
2
|
import { SdBadge } from '@sd-angular/core/components/badge';
|
|
3
3
|
import { SdSearch } from '@sd-angular/core/forms';
|
|
4
|
-
import {
|
|
4
|
+
import { SdNestedKeyOf, SdOperator } from '@sd-angular/core/utilities';
|
|
5
|
+
import { SdUnwrapSignal } from '@sd-angular/core/utilities/models';
|
|
5
6
|
export type SdTableColumn<T = any> = SdTableColumnText<T> | SdTableColumnNumber<T> | SdTableColumnBool<T> | SdTableColumnDate<T> | SdTableColumnValues<T> | SdTableColumnLazyValues<T> | SdTableColumnChildren<T>;
|
|
6
7
|
export type SdTableColumnTransformFunc<T = any> = (value: any, rowData: T, args?: {
|
|
7
8
|
isExport?: boolean;
|
|
8
9
|
}) => string | Promise<string>;
|
|
10
|
+
interface Badge {
|
|
11
|
+
type?: SdUnwrapSignal<SdBadge['type']>;
|
|
12
|
+
color?: SdUnwrapSignal<SdBadge['color']>;
|
|
13
|
+
icon?: SdUnwrapSignal<SdBadge['icon']>;
|
|
14
|
+
title?: SdUnwrapSignal<SdBadge['title']>;
|
|
15
|
+
}
|
|
16
|
+
type UseBadgeFunc<T = any> = (value: any, rowData: T) => Badge;
|
|
17
|
+
type UseBadgeValuesFunc<T = any, K = any> = (value: any, rowData: T, items: K[]) => Badge;
|
|
9
18
|
interface SdTableColumnBase<T = any> {
|
|
10
19
|
title: string;
|
|
11
20
|
titleHtml?: string;
|
|
@@ -16,13 +25,8 @@ interface SdTableColumnBase<T = any> {
|
|
|
16
25
|
hidden?: boolean;
|
|
17
26
|
invisible?: boolean;
|
|
18
27
|
fixed?: boolean;
|
|
28
|
+
charLimited?: boolean;
|
|
19
29
|
align?: 'right';
|
|
20
|
-
useBadge?: (value: any, rowData: T) => {
|
|
21
|
-
type?: SdBadge['type'];
|
|
22
|
-
color?: SdBadge['color'];
|
|
23
|
-
icon?: SdBadge['icon'];
|
|
24
|
-
title?: SdBadge['title'];
|
|
25
|
-
};
|
|
26
30
|
cellStyle?: (value: any, rowData: T) => Record<string, string>;
|
|
27
31
|
htmlTemplate?: (value: any, rowData: T) => string;
|
|
28
32
|
transform?: SdTableColumnTransformFunc<T>;
|
|
@@ -45,59 +49,55 @@ interface SdTableColumnBase<T = any> {
|
|
|
45
49
|
copiable?: boolean;
|
|
46
50
|
}
|
|
47
51
|
interface SdTableColumnText<T = any> extends SdTableColumnBase<T> {
|
|
48
|
-
field:
|
|
52
|
+
field: SdNestedKeyOf<T>;
|
|
49
53
|
type: 'string';
|
|
50
|
-
|
|
51
|
-
badgeIcon?: (value: any, rowData: T) => string;
|
|
52
|
-
badgeType?: SdBadge['type'];
|
|
54
|
+
useBadge?: UseBadgeFunc<T>;
|
|
53
55
|
}
|
|
54
56
|
interface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {
|
|
55
|
-
field:
|
|
57
|
+
field: SdNestedKeyOf<T>;
|
|
56
58
|
type: 'number';
|
|
57
|
-
|
|
58
|
-
badgeIcon?: (value: any, rowData: T) => string;
|
|
59
|
-
badgeType?: SdBadge['type'];
|
|
59
|
+
useBadge?: UseBadgeFunc<T>;
|
|
60
60
|
filter?: SdTableColumnBase['filter'] & {
|
|
61
61
|
type?: 'split-number';
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
interface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {
|
|
65
|
-
field:
|
|
65
|
+
field: SdNestedKeyOf<T>;
|
|
66
66
|
type: 'boolean';
|
|
67
|
+
useBadge?: UseBadgeFunc<T>;
|
|
67
68
|
option?: {
|
|
68
69
|
displayOnTrue?: string;
|
|
69
70
|
displayOnFalse?: string;
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
73
|
interface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {
|
|
73
|
-
field:
|
|
74
|
+
field: SdNestedKeyOf<T>;
|
|
74
75
|
type: 'date' | 'datetime' | 'time';
|
|
76
|
+
useBadge?: UseBadgeFunc<T>;
|
|
75
77
|
filter?: SdTableColumnBase['filter'] & {
|
|
76
78
|
type?: 'daterange' | 'date' | 'split-date';
|
|
77
79
|
};
|
|
78
80
|
}
|
|
79
|
-
export interface SdTableColumnValues<T = any
|
|
80
|
-
field:
|
|
81
|
+
export interface SdTableColumnValues<T = any, K = Record<string, any>> extends SdTableColumnBase<T> {
|
|
82
|
+
field: SdNestedKeyOf<T>;
|
|
81
83
|
type: 'values';
|
|
82
|
-
|
|
83
|
-
badgeIcon?: (value: any, rowData: T) => string;
|
|
84
|
-
badgeType?: SdBadge['type'];
|
|
84
|
+
useBadge?: UseBadgeValuesFunc<T, K>;
|
|
85
85
|
option: {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
selection?: '
|
|
86
|
+
items: K[] | Signal<K[]> | (() => Promise<K[]>);
|
|
87
|
+
valueField: SdNestedKeyOf<K>;
|
|
88
|
+
displayField: SdNestedKeyOf<K>;
|
|
89
|
+
selection?: 'MULTIPLE';
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
|
-
export interface SdTableColumnLazyValues<T = any
|
|
93
|
-
field:
|
|
92
|
+
export interface SdTableColumnLazyValues<T = any, K = Record<string, any>> extends SdTableColumnBase<T> {
|
|
93
|
+
field: SdNestedKeyOf<T>;
|
|
94
94
|
type: 'lazy-values';
|
|
95
|
+
useBadge?: UseBadgeFunc<T>;
|
|
95
96
|
option: {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
views?: (values: string[]) => Promise<
|
|
100
|
-
mapValue?: (value: any, rowData?: T) => string | string[];
|
|
97
|
+
items: SdSearch<K>;
|
|
98
|
+
valueField: SdNestedKeyOf<K>;
|
|
99
|
+
displayField: SdNestedKeyOf<K>;
|
|
100
|
+
views?: (values: string[]) => Promise<K[]>;
|
|
101
101
|
selection?: 'MULTIPLE';
|
|
102
102
|
};
|
|
103
103
|
}
|