@sd-angular/core 19.0.0-beta.70 → 19.0.0-beta.72

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.
Files changed (57) hide show
  1. package/assets/scss/ckeditor5.scss +1 -2
  2. package/components/modal/index.d.ts +1 -1
  3. package/components/modal/src/modal.component.d.ts +24 -0
  4. package/components/upload-file/src/configurations/upload-file.configuration.d.ts +33 -0
  5. package/components/upload-file/src/upload-file.component.d.ts +5 -2
  6. package/fesm2022/sd-angular-core-components-document-builder.mjs +1 -1
  7. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  8. package/fesm2022/sd-angular-core-components-import-excel.mjs +1 -1
  9. package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
  10. package/fesm2022/sd-angular-core-components-modal.mjs +57 -91
  11. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  12. package/fesm2022/sd-angular-core-components-preview.mjs +1 -1
  13. package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
  14. package/fesm2022/sd-angular-core-components-side-drawer.mjs +2 -2
  15. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  16. package/fesm2022/sd-angular-core-components-table.mjs +9 -7
  17. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  18. package/fesm2022/sd-angular-core-components-upload-file.mjs +62 -10
  19. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  20. package/fesm2022/sd-angular-core-components-workflow.mjs +13 -13
  21. package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
  22. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +158 -197
  23. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  24. package/fesm2022/sd-angular-core-forms-chip.mjs +173 -203
  25. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  26. package/fesm2022/sd-angular-core-modules-layout.mjs +2 -3
  27. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  28. package/fesm2022/sd-angular-core-modules-permission.mjs +160 -74
  29. package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
  30. package/fesm2022/sd-angular-core.mjs +0 -1
  31. package/fesm2022/sd-angular-core.mjs.map +1 -1
  32. package/forms/chip/src/chip.component.d.ts +35 -44
  33. package/forms/chip-calendar/src/chip-calendar.component.d.ts +35 -42
  34. package/modules/layout/services/menu/menu.model.d.ts +1 -0
  35. package/modules/permission/src/configurations/permission.configuration.d.ts +56 -2
  36. package/modules/permission/src/directives/permission.directive.d.ts +5 -8
  37. package/modules/permission/src/guards/permission.guard.d.ts +2 -1
  38. package/modules/permission/src/services/permission.service.d.ts +6 -9
  39. package/package.json +44 -52
  40. package/public-api.d.ts +0 -1
  41. package/sd-angular-core-19.0.0-beta.72.tgz +0 -0
  42. package/components/modal/src/modal/modal.component.d.ts +0 -31
  43. package/fesm2022/sd-angular-core-guards-permission.mjs +0 -155
  44. package/fesm2022/sd-angular-core-guards-permission.mjs.map +0 -1
  45. package/fesm2022/sd-angular-core-guards.mjs +0 -6
  46. package/fesm2022/sd-angular-core-guards.mjs.map +0 -1
  47. package/guards/index.d.ts +0 -1
  48. package/guards/permission/index.d.ts +0 -4
  49. package/guards/permission/src/configurations/index.d.ts +0 -1
  50. package/guards/permission/src/configurations/permission.configuration.d.ts +0 -8
  51. package/guards/permission/src/directives/index.d.ts +0 -1
  52. package/guards/permission/src/directives/permission.directive.d.ts +0 -12
  53. package/guards/permission/src/guards/index.d.ts +0 -1
  54. package/guards/permission/src/guards/permission.guard.d.ts +0 -13
  55. package/guards/permission/src/services/index.d.ts +0 -1
  56. package/guards/permission/src/services/permission.service.d.ts +0 -15
  57. package/sd-angular-core-19.0.0-beta.70.tgz +0 -0
@@ -1,5 +1,5 @@
1
1
  // Import the core styles.
2
- @import '@ckeditor/ckeditor5-theme-lark/dist/index.css';
2
+ @import '@ckeditor/ckeditor5-ui/dist/index.css';
3
3
  @import '@ckeditor/ckeditor5-clipboard/dist/index.css';
4
4
  @import '@ckeditor/ckeditor5-core/dist/index.css';
5
5
  @import '@ckeditor/ckeditor5-engine/dist/index.css';
@@ -7,7 +7,6 @@
7
7
  @import '@ckeditor/ckeditor5-paragraph/dist/index.css';
8
8
  @import '@ckeditor/ckeditor5-select-all/dist/index.css';
9
9
  @import '@ckeditor/ckeditor5-typing/dist/index.css';
10
- @import '@ckeditor/ckeditor5-ui/dist/index.css';
11
10
  @import '@ckeditor/ckeditor5-undo/dist/index.css';
12
11
  @import '@ckeditor/ckeditor5-upload/dist/index.css';
13
12
  @import '@ckeditor/ckeditor5-utils/dist/index.css';
@@ -1 +1 @@
1
- export * from './src/modal/modal.component';
1
+ export * from './src/modal.component';
@@ -0,0 +1,24 @@
1
+ import { ElementRef, TemplateRef } from '@angular/core';
2
+ import { SdColor } from '@sd-angular/core/utilities/models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SdModal {
5
+ #private;
6
+ static index: import("@angular/core").WritableSignal<number>;
7
+ templateRef: import("@angular/core").Signal<TemplateRef<any>>;
8
+ modal: import("@angular/core").Signal<ElementRef<any> | undefined>;
9
+ title: import("@angular/core").InputSignalWithTransform<string, string | null | undefined>;
10
+ color: import("@angular/core").InputSignalWithTransform<SdColor, SdColor | null | undefined>;
11
+ width: import("@angular/core").InputSignalWithTransform<string, string | null | undefined>;
12
+ height: import("@angular/core").InputSignalWithTransform<string, string | null | undefined>;
13
+ view: import("@angular/core").InputSignalWithTransform<"dialog" | "bottom-sheet" | undefined, "dialog" | "bottom-sheet" | null | undefined>;
14
+ modalClass: import("@angular/core").InputSignalWithTransform<string | string[] | Record<string, boolean>, string | string[] | Record<string, boolean> | null | undefined>;
15
+ lazyLoadContent: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
16
+ sdClosed: import("@angular/core").OutputEmitterRef<void>;
17
+ isOpened: import("@angular/core").WritableSignal<boolean>;
18
+ alreadyOpened: import("@angular/core").WritableSignal<boolean>;
19
+ constructor();
20
+ open: () => void;
21
+ close: () => void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdModal, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdModal, "sd-modal", never, { "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; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "[sdHeader]", "*", "[sdFooterLeft]", "[sdFooterRight]", "[sdFooter]"], true, never>;
24
+ }
@@ -1,17 +1,50 @@
1
1
  import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Contract cấu hình cho cơ chế upload file của sd-angular.
4
+ *
5
+ * Cách dùng phổ biến:
6
+ * - Portal có thể provide cấu hình mặc định ở tầng global.
7
+ * - Mỗi module có thể provide thêm cấu hình riêng (thường với `multi: true`).
8
+ * - Khi có nhiều cấu hình cùng lúc, dùng `key` để chọn đúng provider.
9
+ *
10
+ * Luồng xử lý:
11
+ * 1) `upload`: upload file mới, trả về danh sách id/key.
12
+ * 2) `details`: lấy metadata để render danh sách file từ id/key.
13
+ * 3) `download` (optional): tải file theo id/key.
14
+ */
2
15
  export interface ISdUploadFileConfiguration<TArgs = any> {
16
+ /**
17
+ * Định danh cấu hình upload.
18
+ * Bắt buộc khi app có nhiều provider upload để tránh mapping nhầm.
19
+ */
20
+ key?: string;
21
+ /** Upload file và trả về danh sách id/key dùng cho lưu trữ. */
3
22
  upload: SdUploadFileFuncUpload<TArgs>;
23
+ /** Nhận danh sách id/key và trả về dữ liệu hiển thị file trong UI. */
4
24
  details: SdUploadFileFuncDetails<TArgs>;
25
+ /** Tùy chọn: tải file về theo id/key. */
5
26
  download?: SdUploadFileFuncDownload<TArgs>;
6
27
  }
28
+ /**
29
+ * Token DI cho upload configuration.
30
+ * Khuyến nghị provide dạng `multi: true` để hỗ trợ nhiều nguồn upload trong cùng app/module.
31
+ */
7
32
  export declare const SD_UPLOAD_FILE_CONFIGURATION: InjectionToken<ISdUploadFileConfiguration<any>>;
33
+ /** Hàm upload file và trả về danh sách id/key tương ứng. */
8
34
  export type SdUploadFileFuncUpload<TArgs> = (files: File[], args?: TArgs) => Promise<string[]>;
35
+ /** Hàm lấy thông tin file phục vụ hiển thị từ danh sách id/key. */
9
36
  export type SdUploadFileFuncDetails<TArgs> = (idOrKey: (string | number)[], args?: TArgs) => Promise<SdUploadFileDetail[]>;
37
+ /** Hàm tải file theo id/key. */
10
38
  export type SdUploadFileFuncDownload<TArgs> = (idOrKey: string | number, args?: TArgs) => Promise<void>;
11
39
  export interface SdUploadFileDetail {
40
+ /** Định danh file được backend trả về sau upload. */
12
41
  idOrKey: string;
42
+ /** URL truy cập file (CDN hoặc direct URL). */
13
43
  cdn: string;
44
+ /** Tên hiển thị file. */
14
45
  name?: string;
46
+ /** Đuôi file: png, jpg, pdf... */
15
47
  extension?: string;
48
+ /** Dung lượng file tính theo MB (nếu backend có trả về). */
16
49
  size?: number;
17
50
  }
@@ -4,7 +4,7 @@ import { FormGroup } from '@angular/forms';
4
4
  import { SdLabelDefDirective } from '@sd-angular/core/forms/directives';
5
5
  import { SdFormControl } from '@sd-angular/core/forms/models';
6
6
  import { PreviewComponent } from './components/preview/preview.component';
7
- import { SdUploadFileFuncDetails } from './configurations';
7
+ import { SdUploadFileFuncDownload, SdUploadFileFuncDetails, SdUploadFileFuncUpload } from './configurations';
8
8
  import { PreviewFile } from './services';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class SdUploadFile<TArgs = any> {
@@ -18,11 +18,14 @@ export declare class SdUploadFile<TArgs = any> {
18
18
  readonly sdLabelDef: import("@angular/core").Signal<SdLabelDefDirective | undefined>;
19
19
  readonly args: import("@angular/core").InputSignal<TArgs | undefined>;
20
20
  readonly label: import("@angular/core").InputSignal<string | undefined>;
21
+ readonly key: import("@angular/core").InputSignal<string | undefined>;
21
22
  readonly description: import("@angular/core").InputSignal<string | undefined>;
22
23
  readonly previewWidth: import("@angular/core").InputSignal<string>;
23
24
  readonly previewHeight: import("@angular/core").InputSignal<string>;
24
25
  readonly align: import("@angular/core").InputSignal<"left" | "center">;
26
+ readonly uploadInput: import("@angular/core").InputSignal<SdUploadFileFuncUpload<any> | undefined>;
25
27
  readonly details: import("@angular/core").InputSignal<SdUploadFileFuncDetails<any> | undefined>;
28
+ readonly downloadInput: import("@angular/core").InputSignal<SdUploadFileFuncDownload<any> | undefined>;
26
29
  readonly imageValidator: import("@angular/core").InputSignal<((image: HTMLImageElement) => string) | undefined>;
27
30
  readonly maxSize: import("@angular/core").InputSignal<number | undefined>;
28
31
  readonly maxWidth: import("@angular/core").InputSignal<number | undefined>;
@@ -72,5 +75,5 @@ export declare class SdUploadFile<TArgs = any> {
72
75
  onDownload: (previewFile: PreviewFile) => void;
73
76
  isLastVisibleOverlay(fileIndex: number): boolean;
74
77
  static ɵfac: i0.ɵɵFactoryDeclaration<SdUploadFile<any>, never>;
75
- static ɵcmp: i0.ɵɵComponentDeclaration<SdUploadFile<any>, "sd-upload-file", never, { "args": { "alias": "args"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "previewWidth": { "alias": "previewWidth"; "required": false; "isSignal": true; }; "previewHeight": { "alias": "previewHeight"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "details": { "alias": "details"; "required": false; "isSignal": true; }; "imageValidator": { "alias": "imageValidator"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "scaleToPixel": { "alias": "scaleToPixel"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "nameInput": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "maxOfImage": { "alias": "maxOfImage"; "required": false; "isSignal": true; }; "extensions": { "alias": "extensions"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "loaded": "loaded"; "filesChanged": "filesChanged"; "model": "modelChange"; }, ["sdLabelDef"], never, true, never>;
78
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdUploadFile<any>, "sd-upload-file", never, { "args": { "alias": "args"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "key": { "alias": "key"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "previewWidth": { "alias": "previewWidth"; "required": false; "isSignal": true; }; "previewHeight": { "alias": "previewHeight"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "uploadInput": { "alias": "upload"; "required": false; "isSignal": true; }; "details": { "alias": "details"; "required": false; "isSignal": true; }; "downloadInput": { "alias": "download"; "required": false; "isSignal": true; }; "imageValidator": { "alias": "imageValidator"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "scaleToPixel": { "alias": "scaleToPixel"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "nameInput": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "maxOfImage": { "alias": "maxOfImage"; "required": false; "isSignal": true; }; "extensions": { "alias": "extensions"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "loaded": "loaded"; "filesChanged": "filesChanged"; "model": "modelChange"; }, ["sdLabelDef"], never, true, never>;
76
79
  }
@@ -3333,7 +3333,7 @@ class PasteHandler extends Plugin {
3333
3333
  const normalizers = [];
3334
3334
  const hasMultiLevelListPlugin = this.editor.plugins.has('MultiLevelListEditing');
3335
3335
  const hasTablePropertiesPlugin = this.editor.plugins.has('TablePropertiesEditing');
3336
- const hasExtendedTableBlockAlignment = !!this.editor.config.get('experimentalFlags.useExtendedTableBlockAlignment');
3336
+ const hasExtendedTableBlockAlignment = true; // In CKEditor 5 v48, extended table block alignment is stable and enabled by default.
3337
3337
  normalizers.push(new PasteFromOfficeMSWordNormalizer(viewDocument, hasMultiLevelListPlugin, hasTablePropertiesPlugin, hasExtendedTableBlockAlignment));
3338
3338
  normalizers.push(new GoogleDocsNormalizer(viewDocument));
3339
3339
  normalizers.push(new GoogleSheetsNormalizer(viewDocument));