@sdcorejs/angular 20.1.2 → 20.1.4
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 +127 -807
- package/components/audit-diff/index.d.ts +74 -0
- package/components/badge/index.d.ts +1 -1
- package/components/breadcrumb/index.d.ts +53 -0
- package/components/data-state/index.d.ts +44 -0
- package/components/document-builder/index.d.ts +5 -5
- package/components/form-generic/index.d.ts +89 -103
- package/components/import-excel/index.d.ts +4 -14
- package/components/index.d.ts +4 -0
- package/components/job-progress/index.d.ts +38 -0
- package/components/mini-editor/index.d.ts +9 -9
- package/components/modal/index.d.ts +7 -1
- package/components/preview/index.d.ts +181 -28
- package/components/side-drawer/index.d.ts +7 -1
- package/components/tab/index.d.ts +9 -2
- package/components/table/index.d.ts +8 -7
- package/components/tree/index.d.ts +24 -2
- package/components/upload-file/index.d.ts +5 -4
- package/directives/index.d.ts +10 -8
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
- package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
- package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
- package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +18 -23
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +633 -886
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +26 -41
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
- package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +10 -20
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +61 -4
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +1438 -218
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +9 -17
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +39 -2
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +76 -52
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +48 -4
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +123 -89
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +188 -18
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +17 -23
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +4 -0
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +9 -8
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -83
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +8 -4
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +8 -4
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +18 -14
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +48 -70
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +62 -528
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +5 -3
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +16 -11
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +297 -59
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -78
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +8 -21
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -76
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +8 -6
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs +280 -0
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-time.mjs +310 -0
- package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +355 -10
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +861 -80
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules.mjs +0 -1
- package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +340 -66
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
- package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
- package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
- package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
- package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services.mjs +4 -0
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
- package/forms/autocomplete/index.d.ts +3 -4
- package/forms/checkbox/index.d.ts +4 -8
- package/forms/date/index.d.ts +3 -3
- package/forms/date-range/index.d.ts +6 -7
- package/forms/datetime/index.d.ts +3 -3
- package/forms/entity-picker/index.d.ts +128 -0
- package/forms/index.d.ts +15 -5
- package/forms/input/index.d.ts +76 -11
- package/forms/input-color/index.d.ts +3 -1
- package/forms/input-number/index.d.ts +4 -2
- package/forms/models/index.d.ts +86 -3
- package/forms/radio/index.d.ts +12 -8
- package/forms/switch/index.d.ts +4 -7
- package/forms/time/index.d.ts +117 -0
- package/forms/time-range/index.d.ts +98 -0
- package/forms/tree-select/index.d.ts +76 -0
- package/i18n/index.d.ts +68 -2
- package/interceptors/index.d.ts +5 -6
- package/modules/icon/index.d.ts +2 -3
- package/modules/index.d.ts +0 -1
- package/modules/layout/index.d.ts +288 -15
- package/package.json +50 -5
- package/pipes/index.d.ts +2 -2
- package/services/api/index.d.ts +68 -24
- package/services/cache/index.d.ts +52 -16
- package/services/confirm/index.d.ts +3 -2
- package/services/docx/index.d.ts +2 -3
- package/services/index.d.ts +4 -0
- package/services/loading/index.d.ts +16 -8
- package/services/persistence/index.d.ts +159 -0
- package/services/storage/index.d.ts +26 -8
- package/services/task/index.d.ts +104 -0
- package/services/unsaved-changes/index.d.ts +83 -0
- package/services/viewport/index.d.ts +42 -0
- package/fesm2022/sdcorejs-angular-modules-authom.mjs +0 -360
- package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +0 -1
- package/modules/authom/index.d.ts +0 -70
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { SdTaskState, SdTaskView, SdTaskStatus } from '@sdcorejs/angular/services/task';
|
|
3
|
+
|
|
4
|
+
type SdJobProgressMode = 'bar' | 'compact' | 'details';
|
|
5
|
+
declare class SdJobProgress {
|
|
6
|
+
#private;
|
|
7
|
+
readonly taskId: _angular_core.InputSignal<string | undefined>;
|
|
8
|
+
readonly state: _angular_core.InputSignal<SdTaskState<unknown> | undefined>;
|
|
9
|
+
readonly mode: _angular_core.InputSignal<SdJobProgressMode>;
|
|
10
|
+
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
11
|
+
readonly message: _angular_core.InputSignal<string | undefined>;
|
|
12
|
+
readonly showActions: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
readonly sdCancel: _angular_core.OutputEmitterRef<void>;
|
|
14
|
+
readonly sdRetry: _angular_core.OutputEmitterRef<void>;
|
|
15
|
+
readonly task: _angular_core.Signal<SdTaskView<unknown> | undefined>;
|
|
16
|
+
readonly resolvedState: _angular_core.Signal<SdTaskState<unknown> | undefined>;
|
|
17
|
+
readonly progress: _angular_core.Signal<number | undefined>;
|
|
18
|
+
readonly effectiveTitle: _angular_core.Signal<string | undefined>;
|
|
19
|
+
readonly effectiveMessage: _angular_core.Signal<string | undefined>;
|
|
20
|
+
readonly statusLabel: _angular_core.Signal<string>;
|
|
21
|
+
readonly progressLabel: _angular_core.Signal<string>;
|
|
22
|
+
readonly cancelLabel: _angular_core.Signal<string>;
|
|
23
|
+
readonly retryLabel: _angular_core.Signal<string>;
|
|
24
|
+
readonly displayedError: _angular_core.Signal<string | undefined>;
|
|
25
|
+
readonly active: _angular_core.Signal<boolean>;
|
|
26
|
+
readonly canCancel: _angular_core.Signal<boolean>;
|
|
27
|
+
readonly canRetry: _angular_core.Signal<boolean>;
|
|
28
|
+
get modeAttr(): SdJobProgressMode;
|
|
29
|
+
get statusAttr(): SdTaskStatus;
|
|
30
|
+
readonly ariaLive = "polite";
|
|
31
|
+
onCancel(): void;
|
|
32
|
+
onRetry(): void;
|
|
33
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdJobProgress, never>;
|
|
34
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdJobProgress, "sd-job-progress", never, { "taskId": { "alias": "taskId"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; }, { "sdCancel": "sdCancel"; "sdRetry": "sdRetry"; }, never, never, true, never>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { SdJobProgress };
|
|
38
|
+
export type { SdJobProgressMode };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MentionFeed, MentionFeedObjectItem, EditorConfig, ClassicEditor } from 'ckeditor5';
|
|
2
2
|
export { MentionFeedObjectItem } from 'ckeditor5';
|
|
3
|
-
import * as
|
|
4
|
-
import { OnDestroy
|
|
3
|
+
import * as _angular_core from '@angular/core';
|
|
4
|
+
import { OnDestroy } from '@angular/core';
|
|
5
5
|
import { ControlValueAccessor } from '@angular/forms';
|
|
6
6
|
|
|
7
7
|
type SdMiniEditorOutputFormat = 'html' | 'markdown';
|
|
@@ -69,15 +69,15 @@ declare class SdMiniEditor implements ControlValueAccessor, OnDestroy {
|
|
|
69
69
|
get maxEditorHeight(): string | undefined;
|
|
70
70
|
/** NgModel binding - nội dung HTML/Markdown */
|
|
71
71
|
value: string;
|
|
72
|
-
valueChange:
|
|
72
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
73
73
|
/** Event emitter khi content thay đổi */
|
|
74
|
-
contentChange:
|
|
74
|
+
readonly contentChange: _angular_core.OutputEmitterRef<string>;
|
|
75
75
|
/** Event emitter khi blur */
|
|
76
|
-
blur:
|
|
76
|
+
readonly blur: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
77
77
|
/** Event emitter khi focus */
|
|
78
|
-
focus:
|
|
78
|
+
readonly focus: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
79
79
|
/** Disabled state */
|
|
80
|
-
disabled: boolean
|
|
80
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
81
81
|
Editor: typeof ClassicEditor;
|
|
82
82
|
get editorConfig(): SdMiniEditorConfig;
|
|
83
83
|
constructor();
|
|
@@ -130,8 +130,8 @@ declare class SdMiniEditor implements ControlValueAccessor, OnDestroy {
|
|
|
130
130
|
* ControlValueAccessor: Register touched callback
|
|
131
131
|
*/
|
|
132
132
|
registerOnTouched(fn: () => void): void;
|
|
133
|
-
static ɵfac:
|
|
134
|
-
static ɵcmp:
|
|
133
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdMiniEditor, never>;
|
|
134
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdMiniEditor, "sd-mini-editor", never, { "option": { "alias": "option"; "required": true; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "contentChange": "contentChange"; "blur": "blur"; "focus": "focus"; }, never, never, true, never>;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
export { SdMiniEditor };
|
|
@@ -2,6 +2,7 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { TemplateRef, ElementRef } from '@angular/core';
|
|
3
3
|
import { Color } from '@sdcorejs/utils/models';
|
|
4
4
|
|
|
5
|
+
type SdModalBeforeClose = () => boolean | Promise<boolean>;
|
|
5
6
|
declare class SdModal {
|
|
6
7
|
#private;
|
|
7
8
|
static index: _angular_core.WritableSignal<number>;
|
|
@@ -20,14 +21,19 @@ declare class SdModal {
|
|
|
20
21
|
lazyLoadContent: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
21
22
|
hideClose: _angular_core.InputSignalWithTransform<boolean, boolean | "">;
|
|
22
23
|
disableBackdropClose: _angular_core.InputSignalWithTransform<boolean, boolean | "">;
|
|
24
|
+
beforeClose: _angular_core.InputSignal<SdModalBeforeClose | undefined>;
|
|
23
25
|
sdClosed: _angular_core.OutputEmitterRef<void>;
|
|
26
|
+
sdCloseError: _angular_core.OutputEmitterRef<unknown>;
|
|
24
27
|
isOpened: _angular_core.WritableSignal<boolean>;
|
|
25
28
|
alreadyOpened: _angular_core.WritableSignal<boolean>;
|
|
26
29
|
constructor();
|
|
27
30
|
open: () => void;
|
|
28
31
|
close: () => void;
|
|
32
|
+
requestClose: () => Promise<boolean>;
|
|
33
|
+
forceClose: () => void;
|
|
29
34
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdModal, never>;
|
|
30
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdModal, "sd-modal", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "modalClass": { "alias": "modalClass"; "required": false; "isSignal": true; }; "lazyLoadContent": { "alias": "lazyLoadContent"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "disableBackdropClose": { "alias": "disableBackdropClose"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
|
|
35
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdModal, "sd-modal", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "modalClass": { "alias": "modalClass"; "required": false; "isSignal": true; }; "lazyLoadContent": { "alias": "lazyLoadContent"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "disableBackdropClose": { "alias": "disableBackdropClose"; "required": false; "isSignal": true; }; "beforeClose": { "alias": "beforeClose"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; "sdCloseError": "sdCloseError"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
export { SdModal };
|
|
39
|
+
export type { SdModalBeforeClose };
|
|
@@ -161,17 +161,18 @@ type PdfSource = string | File | Blob | ArrayBuffer | Uint8Array | {
|
|
|
161
161
|
* page change.
|
|
162
162
|
*/
|
|
163
163
|
type PdfZoomMode = number | 'page-fit' | 'page-width' | 'page-actual';
|
|
164
|
-
/**
|
|
165
|
-
* Which tab the sidebar shows. `'none'` collapses the sidebar entirely.
|
|
166
|
-
* NOTE: outline + search tabs are deferred — selecting them shows a placeholder.
|
|
167
|
-
*/
|
|
164
|
+
/** Which tab the sidebar shows. `'none'` collapses the sidebar entirely. */
|
|
168
165
|
type PdfSidebarMode = 'thumbnails' | 'outline' | 'search' | 'none';
|
|
169
|
-
/**
|
|
170
|
-
* Page layout mode. `'continuous'` is deferred — the input is kept on the
|
|
171
|
-
* public API so consumer code compiles, but the component falls back to
|
|
172
|
-
* single-page behavior with a warning.
|
|
173
|
-
*/
|
|
166
|
+
/** Page layout mode. */
|
|
174
167
|
type PdfScrollMode = 'page' | 'continuous';
|
|
168
|
+
/** Consumer-facing, recursively resolved PDF document-outline item. */
|
|
169
|
+
interface PdfOutlineItem {
|
|
170
|
+
readonly id: string;
|
|
171
|
+
readonly title: string;
|
|
172
|
+
readonly page: number | null;
|
|
173
|
+
readonly url?: string;
|
|
174
|
+
readonly children: readonly PdfOutlineItem[];
|
|
175
|
+
}
|
|
175
176
|
/**
|
|
176
177
|
* Document-level metadata extracted from `pdfDoc.getMetadata()`.
|
|
177
178
|
*/
|
|
@@ -224,35 +225,115 @@ interface PdfSearchState {
|
|
|
224
225
|
wholeWord: boolean;
|
|
225
226
|
results: PdfSearchResult[];
|
|
226
227
|
activeIndex: number;
|
|
228
|
+
truncated: boolean;
|
|
227
229
|
}
|
|
228
230
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
231
|
+
interface SdPdfRenderTask {
|
|
232
|
+
readonly promise: Promise<void>;
|
|
233
|
+
cancel(): void;
|
|
234
|
+
}
|
|
235
|
+
interface SdPdfViewport {
|
|
236
|
+
readonly width: number;
|
|
237
|
+
readonly height: number;
|
|
238
|
+
}
|
|
239
|
+
interface SdPdfTextItem {
|
|
240
|
+
readonly str: string;
|
|
241
|
+
}
|
|
242
|
+
interface SdPdfTextContent {
|
|
243
|
+
readonly items: readonly unknown[];
|
|
244
|
+
}
|
|
245
|
+
interface SdPdfPageProxy {
|
|
246
|
+
getViewport(parameters: {
|
|
247
|
+
scale: number;
|
|
248
|
+
rotation?: number;
|
|
249
|
+
}): SdPdfViewport;
|
|
250
|
+
render(parameters: {
|
|
251
|
+
canvasContext: CanvasRenderingContext2D;
|
|
252
|
+
viewport: SdPdfViewport;
|
|
253
|
+
}): SdPdfRenderTask;
|
|
254
|
+
getTextContent(): Promise<SdPdfTextContent | unknown>;
|
|
255
|
+
cleanup(): void;
|
|
256
|
+
}
|
|
257
|
+
interface SdPdfReference {
|
|
258
|
+
readonly num: number;
|
|
259
|
+
readonly gen: number;
|
|
260
|
+
}
|
|
261
|
+
type SdPdfDestination = string | readonly unknown[] | null;
|
|
262
|
+
interface SdPdfRawOutlineItem {
|
|
263
|
+
readonly title?: string;
|
|
264
|
+
readonly dest?: SdPdfDestination;
|
|
265
|
+
readonly url?: string | null;
|
|
266
|
+
readonly items?: readonly SdPdfRawOutlineItem[];
|
|
267
|
+
}
|
|
268
|
+
interface SdPdfDocumentProxy {
|
|
269
|
+
readonly numPages: number;
|
|
270
|
+
getPage(pageNumber: number): Promise<SdPdfPageProxy>;
|
|
271
|
+
getMetadata(): Promise<{
|
|
272
|
+
readonly info?: {
|
|
273
|
+
readonly Title?: string;
|
|
274
|
+
readonly Author?: string;
|
|
275
|
+
readonly Subject?: string;
|
|
276
|
+
};
|
|
277
|
+
}>;
|
|
278
|
+
getOutline(): Promise<readonly SdPdfRawOutlineItem[] | null>;
|
|
279
|
+
getDestination(name: string): Promise<readonly unknown[] | null>;
|
|
280
|
+
getPageIndex(reference: SdPdfReference): Promise<number>;
|
|
281
|
+
cachedPageNumber(reference: SdPdfReference): number | null;
|
|
282
|
+
getData(): Promise<Uint8Array>;
|
|
283
|
+
destroy(): Promise<void>;
|
|
284
|
+
}
|
|
285
|
+
interface SdPdfLoadingTask {
|
|
286
|
+
readonly promise: Promise<SdPdfDocumentProxy>;
|
|
287
|
+
onProgress?: (progress: {
|
|
288
|
+
loaded: number;
|
|
289
|
+
total: number;
|
|
290
|
+
}) => void;
|
|
291
|
+
destroy?(): Promise<void> | void;
|
|
292
|
+
}
|
|
293
|
+
interface SdPdfDocumentSpec {
|
|
294
|
+
url?: string;
|
|
295
|
+
data?: Uint8Array;
|
|
296
|
+
httpHeaders?: Record<string, string>;
|
|
297
|
+
withCredentials?: boolean;
|
|
298
|
+
password?: string;
|
|
299
|
+
}
|
|
234
300
|
interface SdPdfJsLib {
|
|
235
|
-
getDocument
|
|
236
|
-
|
|
237
|
-
onProgress?: (p: {
|
|
238
|
-
loaded: number;
|
|
239
|
-
total: number;
|
|
240
|
-
}) => void;
|
|
241
|
-
};
|
|
242
|
-
GlobalWorkerOptions: {
|
|
301
|
+
getDocument(spec: SdPdfDocumentSpec): SdPdfLoadingTask;
|
|
302
|
+
readonly GlobalWorkerOptions: {
|
|
243
303
|
workerSrc: string;
|
|
244
304
|
};
|
|
245
305
|
}
|
|
246
306
|
declare const SD_PDFJS_LIB: InjectionToken<SdPdfJsLib>;
|
|
247
|
-
|
|
307
|
+
|
|
308
|
+
interface PdfOutlineRow {
|
|
309
|
+
readonly item: PdfOutlineItem;
|
|
310
|
+
readonly level: number;
|
|
311
|
+
readonly parentId: string | null;
|
|
312
|
+
}
|
|
313
|
+
type PdfSidebarTabMode = Exclude<PdfSidebarMode, 'none'>;
|
|
314
|
+
declare class SdPreviewPdf {
|
|
248
315
|
#private;
|
|
249
316
|
static readonly MIN_ZOOM = 0.25;
|
|
250
317
|
static readonly MAX_ZOOM = 4;
|
|
251
318
|
static readonly ZOOM_STEP = 0.1;
|
|
319
|
+
static readonly OUTLINE_MAX_DEPTH = 64;
|
|
320
|
+
static readonly OUTLINE_MAX_NODES = 10000;
|
|
321
|
+
static readonly MAX_SEARCH_RESULTS = 1000;
|
|
322
|
+
static readonly MAX_PAGE_TEXT_CACHE_PAGES = 128;
|
|
323
|
+
static readonly THUMBNAIL_WINDOW_SIZE = 48;
|
|
324
|
+
static readonly THUMBNAIL_ITEM_HEIGHT = 220;
|
|
325
|
+
static readonly MAX_THUMBNAIL_CACHE_ENTRIES = 96;
|
|
326
|
+
private static readonly MAX_CONCURRENT_THUMBNAIL_WORK;
|
|
327
|
+
static readonly MAX_CANVAS_DIMENSION = 8192;
|
|
328
|
+
static readonly MAX_CANVAS_PIXELS = 16777216;
|
|
252
329
|
protected readonly pageCanvasRef: _angular_core.Signal<ElementRef<HTMLCanvasElement> | undefined>;
|
|
253
330
|
protected readonly stageEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
254
331
|
protected readonly pageInputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
255
332
|
protected readonly searchInputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
333
|
+
protected readonly sidebarContentRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
334
|
+
protected readonly outlineItemRefs: _angular_core.Signal<readonly ElementRef<HTMLElement>[]>;
|
|
335
|
+
protected readonly sidebarTabRefs: _angular_core.Signal<readonly ElementRef<HTMLButtonElement>[]>;
|
|
336
|
+
protected readonly continuousCanvases: _angular_core.Signal<readonly ElementRef<HTMLCanvasElement>[]>;
|
|
256
337
|
protected readonly thumbCanvases: _angular_core.Signal<readonly ElementRef<HTMLCanvasElement>[]>;
|
|
257
338
|
readonly autoIdInput: _angular_core.InputSignal<string | null | undefined>;
|
|
258
339
|
readonly autoId: _angular_core.Signal<string | undefined>;
|
|
@@ -276,6 +357,13 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
276
357
|
readonly autoIdTabThumbnails: _angular_core.Signal<string | undefined>;
|
|
277
358
|
readonly autoIdTabOutline: _angular_core.Signal<string | undefined>;
|
|
278
359
|
readonly autoIdTabSearch: _angular_core.Signal<string | undefined>;
|
|
360
|
+
readonly sidebarPanelId: _angular_core.Signal<string>;
|
|
361
|
+
readonly sidebarRegionId: _angular_core.Signal<string>;
|
|
362
|
+
readonly searchBarId: _angular_core.Signal<string>;
|
|
363
|
+
readonly tabThumbnailsId: _angular_core.Signal<string>;
|
|
364
|
+
readonly tabOutlineId: _angular_core.Signal<string>;
|
|
365
|
+
readonly tabSearchId: _angular_core.Signal<string>;
|
|
366
|
+
readonly sidebarActiveTabId: _angular_core.Signal<string>;
|
|
279
367
|
readonly autoIdSearchInput: _angular_core.Signal<string | undefined>;
|
|
280
368
|
readonly autoIdSearchNext: _angular_core.Signal<string | undefined>;
|
|
281
369
|
readonly autoIdSearchPrev: _angular_core.Signal<string | undefined>;
|
|
@@ -309,6 +397,7 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
309
397
|
term: string;
|
|
310
398
|
total: number;
|
|
311
399
|
current: number;
|
|
400
|
+
truncated: boolean;
|
|
312
401
|
}>;
|
|
313
402
|
readonly stage: _angular_core.Signal<PdfStage>;
|
|
314
403
|
readonly activePage: _angular_core.Signal<number>;
|
|
@@ -323,14 +412,28 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
323
412
|
readonly fileSize: _angular_core.Signal<number>;
|
|
324
413
|
readonly loadError$: _angular_core.Signal<PdfErrorEvent | null>;
|
|
325
414
|
readonly thumbCache: _angular_core.Signal<Record<number, string>>;
|
|
415
|
+
readonly thumbnailWorkCount: _angular_core.Signal<number>;
|
|
416
|
+
readonly pageTextCacheSize: _angular_core.Signal<number>;
|
|
417
|
+
readonly continuousPages: _angular_core.Signal<number[]>;
|
|
418
|
+
readonly continuousTopSpacer: _angular_core.Signal<number>;
|
|
419
|
+
readonly continuousBottomSpacer: _angular_core.Signal<number>;
|
|
420
|
+
readonly continuousPageHeights: _angular_core.Signal<Record<number, number>>;
|
|
421
|
+
readonly outline: _angular_core.Signal<readonly PdfOutlineItem[]>;
|
|
422
|
+
readonly outlineFocusId: _angular_core.Signal<string | null>;
|
|
423
|
+
readonly visibleOutline: _angular_core.Signal<readonly PdfOutlineRow[]>;
|
|
326
424
|
readonly numPages: _angular_core.Signal<number>;
|
|
327
425
|
readonly canPrev: _angular_core.Signal<boolean>;
|
|
328
426
|
readonly canNext: _angular_core.Signal<boolean>;
|
|
329
427
|
readonly zoomPercent: _angular_core.Signal<number>;
|
|
330
428
|
readonly loadPercent: _angular_core.Signal<number>;
|
|
331
429
|
readonly isSidebarOpen: _angular_core.Signal<boolean>;
|
|
430
|
+
readonly canDownload: _angular_core.Signal<boolean>;
|
|
431
|
+
readonly canFullscreen: _angular_core.Signal<boolean>;
|
|
432
|
+
readonly canPrint: _angular_core.Signal<boolean>;
|
|
332
433
|
readonly pageList: _angular_core.Signal<number[]>;
|
|
333
434
|
readonly pageNumbers: _angular_core.Signal<number[]>;
|
|
435
|
+
readonly thumbnailTopSpacer: _angular_core.Signal<number>;
|
|
436
|
+
readonly thumbnailBottomSpacer: _angular_core.Signal<number>;
|
|
334
437
|
readonly searchBarOpen: _angular_core.Signal<boolean>;
|
|
335
438
|
readonly searchTerm: _angular_core.Signal<string>;
|
|
336
439
|
readonly searchResults: _angular_core.Signal<PdfSearchResult[]>;
|
|
@@ -338,11 +441,11 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
338
441
|
readonly searchCaseSensitive: _angular_core.Signal<boolean>;
|
|
339
442
|
readonly searchWholeWord: _angular_core.Signal<boolean>;
|
|
340
443
|
readonly searchTotal: _angular_core.Signal<number>;
|
|
444
|
+
readonly searchTruncated: _angular_core.Signal<boolean>;
|
|
341
445
|
readonly searchCurrent: _angular_core.Signal<number>;
|
|
342
446
|
readonly searchActiveResult: _angular_core.Signal<PdfSearchResult | null>;
|
|
343
447
|
readonly searchState: _angular_core.Signal<PdfSearchState>;
|
|
344
448
|
constructor();
|
|
345
|
-
ngOnDestroy(): void;
|
|
346
449
|
goToPage(page: number): void;
|
|
347
450
|
nextPage(): void;
|
|
348
451
|
prevPage(): void;
|
|
@@ -354,14 +457,23 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
354
457
|
rotate(direction: 'left' | 'right'): void;
|
|
355
458
|
toggleSidebar(): void;
|
|
356
459
|
setSidebarMode(mode: PdfSidebarMode): void;
|
|
460
|
+
onSidebarTabKeyDown(event: KeyboardEvent, currentMode: PdfSidebarTabMode): void;
|
|
461
|
+
onThumbnailSidebarScroll(event: Event): void;
|
|
357
462
|
setScrollMode(mode: PdfScrollMode): void;
|
|
358
463
|
downloadFile(): void;
|
|
464
|
+
downloadFileAsync(): Promise<boolean>;
|
|
359
465
|
toggleFullscreen(): void;
|
|
360
466
|
/** Programmatic equivalent of clicking the X — emits the close output. */
|
|
361
467
|
requestClose(): void;
|
|
362
468
|
/** Retry the active load attempt (called from the error state retry button). */
|
|
363
469
|
retryLoad(): void;
|
|
364
470
|
printFile(): void;
|
|
471
|
+
print(): Promise<void>;
|
|
472
|
+
isOutlineExpanded(id: string): boolean;
|
|
473
|
+
toggleOutlineItem(id: string, event?: Event): void;
|
|
474
|
+
focusOutlineItem(id: string): void;
|
|
475
|
+
activateOutlineItem(id: string): void;
|
|
476
|
+
onOutlineKeyDown(event: KeyboardEvent, id: string): void;
|
|
365
477
|
/**
|
|
366
478
|
* Run a full-document search for `term`. Returns the result count.
|
|
367
479
|
*
|
|
@@ -384,6 +496,7 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
384
496
|
}): Promise<number>;
|
|
385
497
|
searchNext(): void;
|
|
386
498
|
searchPrev(): void;
|
|
499
|
+
activateSearchResult(index: number): void;
|
|
387
500
|
clearSearch(): void;
|
|
388
501
|
/** Open the search bar and focus its input. Idempotent. */
|
|
389
502
|
openSearch(): void;
|
|
@@ -392,15 +505,17 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
392
505
|
toggleSearchCaseSensitive(): void;
|
|
393
506
|
toggleSearchWholeWord(): void;
|
|
394
507
|
/** Live binding from the search bar's `(input)` event. */
|
|
395
|
-
onSearchInput(
|
|
508
|
+
onSearchInput(event: Event): void;
|
|
396
509
|
onKeyDown(event: KeyboardEvent): void;
|
|
397
510
|
onPageInputEnter(event: Event): void;
|
|
398
511
|
onPageInputBlur(event: Event): void;
|
|
399
512
|
onWheel(event: WheelEvent): void;
|
|
400
513
|
trackByPage(_i: number, page: number): number;
|
|
514
|
+
onStageScroll(): void;
|
|
401
515
|
/**
|
|
402
516
|
* Render a single page into a sidebar thumbnail canvas at ~140px width.
|
|
403
|
-
*
|
|
517
|
+
* Reserved in `#thumbnailWork` before getPage() so rapid scroll bounces
|
|
518
|
+
* cannot start duplicate work for the same mounted page.
|
|
404
519
|
*
|
|
405
520
|
* Visible for testing — tests can stub `getPage()` on the fake doc to
|
|
406
521
|
* assert this method calls `render(...)` with the right page argument.
|
|
@@ -410,5 +525,43 @@ declare class SdPreviewPdf implements OnDestroy {
|
|
|
410
525
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdPreviewPdf, "sd-preview-pdf", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "source": { "alias": "source"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "startPage": { "alias": "startPage"; "required": false; "isSignal": true; }; "initialZoom": { "alias": "initialZoom"; "required": false; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": false; "isSignal": true; }; "sidebarOpen": { "alias": "sidebarOpen"; "required": false; "isSignal": true; }; "scrollMode": { "alias": "scrollMode"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "downloadable": { "alias": "downloadable"; "required": false; "isSignal": true; }; "password": { "alias": "password"; "required": false; "isSignal": true; }; "httpHeaders": { "alias": "httpHeaders"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, { "close": "close"; "loaded": "loaded"; "pageChange": "pageChange"; "zoomChange": "zoomChange"; "download": "download"; "loadError": "loadError"; "searchChange": "searchChange"; }, never, never, true, never>;
|
|
411
526
|
}
|
|
412
527
|
|
|
413
|
-
|
|
414
|
-
|
|
528
|
+
interface SdPdfIntersectionEntry {
|
|
529
|
+
readonly target: Element;
|
|
530
|
+
readonly isIntersecting: boolean;
|
|
531
|
+
}
|
|
532
|
+
interface SdPdfBrowserAdapter {
|
|
533
|
+
readonly isBrowser: boolean;
|
|
534
|
+
/** The platform can trigger an anchor download for an existing URL. */
|
|
535
|
+
readonly canDownloadUrl: boolean;
|
|
536
|
+
/** The platform can create/revoke an object URL and then download it. */
|
|
537
|
+
readonly canDownloadBlob: boolean;
|
|
538
|
+
readonly canFullscreen: boolean;
|
|
539
|
+
isFile(value: unknown): value is File;
|
|
540
|
+
isBlob(value: unknown): value is Blob;
|
|
541
|
+
createPdfBlob(data: Uint8Array): Blob | null;
|
|
542
|
+
createObjectUrl(blob: Blob): string | null;
|
|
543
|
+
revokeObjectUrl(url: string): void;
|
|
544
|
+
download(href: string, filename: string): boolean;
|
|
545
|
+
createElement<K extends keyof HTMLElementTagNameMap>(tagName: K): HTMLElementTagNameMap[K] | null;
|
|
546
|
+
createImage(): HTMLImageElement | null;
|
|
547
|
+
listenFullscreen(host: HTMLElement, listener: (active: boolean) => void): () => void;
|
|
548
|
+
toggleFullscreen(host: HTMLElement): Promise<void>;
|
|
549
|
+
observeResize(element: Element, listener: () => void): () => void;
|
|
550
|
+
observeIntersections(elements: readonly Element[], listener: (entries: readonly SdPdfIntersectionEntry[]) => void, options?: IntersectionObserverInit): () => void;
|
|
551
|
+
scheduleFrame(callback: FrameRequestCallback): number | null;
|
|
552
|
+
cancelFrame(handle: number | null): void;
|
|
553
|
+
}
|
|
554
|
+
declare const SD_PDF_BROWSER_ADAPTER: InjectionToken<SdPdfBrowserAdapter>;
|
|
555
|
+
|
|
556
|
+
interface SdPdfPrintJob {
|
|
557
|
+
readonly finished: Promise<void>;
|
|
558
|
+
cancel(): void;
|
|
559
|
+
}
|
|
560
|
+
interface SdPdfPrintAdapter {
|
|
561
|
+
readonly isSupported: boolean;
|
|
562
|
+
start(data: Uint8Array, filename: string): SdPdfPrintJob | null;
|
|
563
|
+
}
|
|
564
|
+
declare const SD_PDF_PRINT_ADAPTER: InjectionToken<SdPdfPrintAdapter>;
|
|
565
|
+
|
|
566
|
+
export { SD_PDFJS_LIB, SD_PDF_BROWSER_ADAPTER, SD_PDF_PRINT_ADAPTER, SdPreviewImage, SdPreviewPdf };
|
|
567
|
+
export type { NormalizedImage, PdfErrorEvent, PdfErrorReason, PdfLoadEvent, PdfMeta, PdfOutlineItem, PdfScrollMode, PdfSearchResult, PdfSearchState, PdfSidebarMode, PdfSource, PdfStage, PdfZoomMode, PreviewItem, PreviewStage, PreviewTheme, SdPdfBrowserAdapter, SdPdfDestination, SdPdfDocumentProxy, SdPdfDocumentSpec, SdPdfIntersectionEntry, SdPdfJsLib, SdPdfLoadingTask, SdPdfPageProxy, SdPdfPrintAdapter, SdPdfPrintJob, SdPdfRawOutlineItem, SdPdfReference, SdPdfRenderTask, SdPdfTextContent, SdPdfTextItem, SdPdfViewport, ThumbnailPosition };
|
|
@@ -2,6 +2,7 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { CdkPortal } from '@angular/cdk/portal';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
|
|
5
|
+
type SdSideDrawerBeforeClose = () => boolean | Promise<boolean>;
|
|
5
6
|
declare class SdSideDrawer {
|
|
6
7
|
#private;
|
|
7
8
|
id: string;
|
|
@@ -10,10 +11,12 @@ declare class SdSideDrawer {
|
|
|
10
11
|
width: _angular_core.InputSignal<string>;
|
|
11
12
|
hideClose: _angular_core.InputSignalWithTransform<boolean, boolean | "">;
|
|
12
13
|
disableBackdropClose: _angular_core.InputSignalWithTransform<boolean, boolean | "">;
|
|
14
|
+
beforeClose: _angular_core.InputSignal<SdSideDrawerBeforeClose | undefined>;
|
|
13
15
|
drawerClass: _angular_core.InputSignal<any>;
|
|
14
16
|
readonly autoIdInput: _angular_core.InputSignal<string | null | undefined>;
|
|
15
17
|
readonly autoId: _angular_core.Signal<string | undefined>;
|
|
16
18
|
sdClosed: _angular_core.OutputEmitterRef<void>;
|
|
19
|
+
sdCloseError: _angular_core.OutputEmitterRef<unknown>;
|
|
17
20
|
readonly isOpened: _angular_core.Signal<boolean>;
|
|
18
21
|
readonly isLoading: _angular_core.Signal<boolean>;
|
|
19
22
|
readonly dataOpened: _angular_core.Signal<"true" | "false">;
|
|
@@ -22,11 +25,14 @@ declare class SdSideDrawer {
|
|
|
22
25
|
constructor();
|
|
23
26
|
open: () => void;
|
|
24
27
|
close: () => void;
|
|
28
|
+
requestClose: () => Promise<boolean>;
|
|
29
|
+
forceClose: () => void;
|
|
25
30
|
startLoading: () => void;
|
|
26
31
|
stopLoading: () => void;
|
|
27
32
|
preventScroll: (event: Event) => void;
|
|
28
33
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSideDrawer, never>;
|
|
29
|
-
static ɵcmp: _angular_core.ɵɵ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; }; "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
|
|
34
|
+
static ɵcmp: _angular_core.ɵɵ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; }; "beforeClose": { "alias": "beforeClose"; "required": false; "isSignal": true; }; "drawerClass": { "alias": "drawerClass"; "required": false; "isSignal": true; }; "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; "sdCloseError": "sdCloseError"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
export { SdSideDrawer };
|
|
38
|
+
export type { SdSideDrawerBeforeClose };
|
|
@@ -3,16 +3,22 @@ import { TemplateRef } from '@angular/core';
|
|
|
3
3
|
import { MatTabGroup } from '@angular/material/tabs';
|
|
4
4
|
import { Color } from '@sdcorejs/utils/models';
|
|
5
5
|
|
|
6
|
+
type SdTabBeforeClose = () => boolean | Promise<boolean>;
|
|
6
7
|
declare class SdTab {
|
|
8
|
+
#private;
|
|
7
9
|
label: _angular_core.InputSignal<string>;
|
|
8
10
|
icon: _angular_core.InputSignal<string | null | undefined>;
|
|
9
11
|
badge: _angular_core.InputSignal<string | number | null | undefined>;
|
|
10
12
|
disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
11
13
|
closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
14
|
+
beforeClose: _angular_core.InputSignal<SdTabBeforeClose | undefined>;
|
|
12
15
|
close: _angular_core.OutputEmitterRef<void>;
|
|
16
|
+
closeError: _angular_core.OutputEmitterRef<unknown>;
|
|
17
|
+
requestClose: () => Promise<boolean>;
|
|
18
|
+
forceClose: () => void;
|
|
13
19
|
bodyTpl: _angular_core.Signal<TemplateRef<unknown>>;
|
|
14
20
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdTab, never>;
|
|
15
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdTab, "sd-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, ["*"], true, never>;
|
|
21
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdTab, "sd-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "beforeClose": { "alias": "beforeClose"; "required": false; "isSignal": true; }; }, { "close": "close"; "closeError": "closeError"; }, never, ["*"], true, never>;
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
interface SdTabClosedEvent {
|
|
@@ -20,6 +26,7 @@ interface SdTabClosedEvent {
|
|
|
20
26
|
tab: SdTab;
|
|
21
27
|
}
|
|
22
28
|
declare class SdTabGroup {
|
|
29
|
+
#private;
|
|
23
30
|
tabs: _angular_core.Signal<readonly SdTab[]>;
|
|
24
31
|
selectedIndex: _angular_core.ModelSignal<number>;
|
|
25
32
|
variant: _angular_core.InputSignal<"line" | "pills" | "segmented">;
|
|
@@ -49,4 +56,4 @@ declare class SdTabGroup {
|
|
|
49
56
|
}
|
|
50
57
|
|
|
51
58
|
export { SdTab, SdTabGroup };
|
|
52
|
-
export type { SdTabClosedEvent };
|
|
59
|
+
export type { SdTabBeforeClose, SdTabClosedEvent };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { TemplateRef, Signal,
|
|
2
|
+
import { TemplateRef, Signal, InjectionToken, AfterViewInit, OnDestroy } from '@angular/core';
|
|
3
3
|
import { SdBadge } from '@sdcorejs/angular/components/badge';
|
|
4
|
-
import { SdSearch } from '@sdcorejs/angular/forms';
|
|
4
|
+
import { SdSearch } from '@sdcorejs/angular/forms/models';
|
|
5
5
|
import { Operator, NestedKeyOf, Order, PagingReq, Color } from '@sdcorejs/utils/models';
|
|
6
6
|
import { SdUnwrapSignal } from '@sdcorejs/angular/utilities/models';
|
|
7
7
|
import { MatPaginatorIntl, MatPaginator } from '@angular/material/paginator';
|
|
8
8
|
import { MatSort } from '@angular/material/sort';
|
|
9
9
|
import { MatTable } from '@angular/material/table';
|
|
10
|
-
import { SdExcelColumn
|
|
10
|
+
import { SdExcelColumn } from '@sdcorejs/angular/services';
|
|
11
11
|
import { Observable } from 'rxjs';
|
|
12
12
|
import { SdIconSet } from '@sdcorejs/angular/modules/icon';
|
|
13
13
|
import { SdButton } from '@sdcorejs/angular/components/button';
|
|
@@ -1077,7 +1077,7 @@ declare class SdPopupExport {
|
|
|
1077
1077
|
listGroups?: MatSelectionList;
|
|
1078
1078
|
selected: Record<string, boolean>;
|
|
1079
1079
|
files: any[];
|
|
1080
|
-
export:
|
|
1080
|
+
readonly export: _angular_core.OutputEmitterRef<{
|
|
1081
1081
|
file: any | null;
|
|
1082
1082
|
columns: SdExcelColumn[];
|
|
1083
1083
|
isCSV?: boolean;
|
|
@@ -1085,11 +1085,12 @@ declare class SdPopupExport {
|
|
|
1085
1085
|
form: FormGroup<{}>;
|
|
1086
1086
|
exportOption?: SdTableOptionExportDefault;
|
|
1087
1087
|
set _tableOption(option: SdTableOption);
|
|
1088
|
-
configuration
|
|
1088
|
+
readonly configuration: _angular_core.InputSignal<ConfiguredTableResult | undefined>;
|
|
1089
1089
|
private get key();
|
|
1090
1090
|
private get tableColumns();
|
|
1091
1091
|
private get additionalColumns();
|
|
1092
|
-
|
|
1092
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
1093
|
+
constructor(...args: unknown[]);
|
|
1093
1094
|
open: () => Promise<void>;
|
|
1094
1095
|
exportDefault: () => void;
|
|
1095
1096
|
exportCSV: () => void;
|
|
@@ -1102,7 +1103,7 @@ declare class SdPopupExport {
|
|
|
1102
1103
|
createTemplate: () => Promise<void>;
|
|
1103
1104
|
templateNameValidator: (val: string) => string;
|
|
1104
1105
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdPopupExport, never>;
|
|
1105
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdPopupExport, "sd-popup-export", never, { "_tableOption": { "alias": "tableOption"; "required": false; }; "configuration": { "alias": "configuration"; "required": false; }; }, { "export": "export"; }, never, never, true, never>;
|
|
1106
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdPopupExport, "sd-popup-export", never, { "_tableOption": { "alias": "tableOption"; "required": false; }; "configuration": { "alias": "configuration"; "required": false; "isSignal": true; }; }, { "export": "export"; }, never, never, true, never>;
|
|
1106
1107
|
}
|
|
1107
1108
|
|
|
1108
1109
|
interface ISdTableConfiguration {
|