@sd-angular/core 19.0.0-beta.1 → 19.0.0-beta.3

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 (30) hide show
  1. package/assets/scss/core/bootstrap.scss +25 -0
  2. package/assets/scss/core/form.scss +4 -10
  3. package/fesm2022/sd-angular-core-components-document-builder.mjs +92 -32
  4. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  5. package/fesm2022/sd-angular-core-components-table.mjs +1 -1
  6. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  7. package/fesm2022/sd-angular-core-forms-textarea.mjs +2 -2
  8. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  9. package/fesm2022/sd-angular-core-modules-auth.mjs +137 -0
  10. package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -0
  11. package/fesm2022/sd-angular-core-modules.mjs +1 -0
  12. package/fesm2022/sd-angular-core-modules.mjs.map +1 -1
  13. package/fesm2022/sd-angular-core-services-confirm.mjs +59 -24
  14. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  15. package/fesm2022/sd-angular-core-utilities-models.mjs +11 -2
  16. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  17. package/modules/auth/configurations/auth.configuration.d.ts +19 -0
  18. package/modules/auth/configurations/index.d.ts +1 -0
  19. package/modules/auth/guards/auth.guard.d.ts +11 -0
  20. package/modules/auth/guards/index.d.ts +2 -0
  21. package/modules/auth/guards/portal.guard.d.ts +11 -0
  22. package/modules/auth/index.d.ts +3 -0
  23. package/modules/auth/services/auth.model.d.ts +8 -0
  24. package/modules/auth/services/auth.service.d.ts +17 -0
  25. package/modules/auth/services/index.d.ts +2 -0
  26. package/modules/index.d.ts +1 -0
  27. package/package.json +60 -56
  28. package/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.d.ts +8 -0
  29. package/services/confirm/src/lib/confirm.service.d.ts +13 -0
  30. package/utilities/models/src/maybe-async.model.d.ts +1 -0
@@ -94,3 +94,28 @@
94
94
  .font-weight-medium {
95
95
  font-weight: 500 !important;
96
96
  }
97
+
98
+ // Custom grid
99
+ .row-md {
100
+ @include make-row(16px);
101
+
102
+ > * {
103
+ @include make-col-ready(16px);
104
+ }
105
+ }
106
+
107
+ .row-sm {
108
+ @include make-row(8px);
109
+
110
+ > * {
111
+ @include make-col-ready(8px);
112
+ }
113
+ }
114
+
115
+ .row-xs {
116
+ @include make-row(4px);
117
+
118
+ > * {
119
+ @include make-col-ready(4px);
120
+ }
121
+ }
@@ -62,13 +62,11 @@
62
62
  .mat-mdc-form-field-infix {
63
63
  mat-select.mat-mdc-select,
64
64
  mat-date-range-input.mat-mdc-date-range-input,
65
- input.mat-mdc-input-element {
65
+ input.mat-mdc-input-element,
66
+ textarea.mat-mdc-input-element {
66
67
  font-size: 14px;
67
68
  margin-top: 10px; // Text hiển thị trong auto complete
68
69
  }
69
- textarea.mat-mdc-input-element {
70
- font-size: 14px; // Font-size hiển thị trong text-area outline
71
- }
72
70
  }
73
71
 
74
72
  .mat-mdc-form-field-suffix {
@@ -158,14 +156,10 @@
158
156
 
159
157
  mat-select.mat-mdc-select,
160
158
  mat-date-range-input.mat-mdc-date-range-input,
161
- input.mat-mdc-input-element {
162
- margin-top: 2px; // Text hiển thị trong auto complete
163
- font-size: 14px;
164
- }
165
-
159
+ input.mat-mdc-input-element,
166
160
  textarea.mat-mdc-input-element {
161
+ margin-top: 2px; // Text hiển thị trong auto complete
167
162
  font-size: 14px;
168
- margin-top: 2px;
169
163
  }
170
164
  }
171
165
 
@@ -279,6 +279,9 @@ class VariablePlugin extends Plugin {
279
279
  // 1. Định nghĩa Schema (Model)
280
280
  schema.register('variable', {
281
281
  inheritAllFrom: '$inlineObject',
282
+ allowWhere: '$text',
283
+ isInline: true,
284
+ isObject: true,
282
285
  allowAttributes: ['id', 'value', 'display', 'data'],
283
286
  });
284
287
  // 2. Conversion: Model -> View (Hiển thị ra HTML)
@@ -310,12 +313,6 @@ class VariablePlugin extends Plugin {
310
313
  classes: 'variable-widget',
311
314
  },
312
315
  model: (viewElement, { writer: modelWriter }) => {
313
- // Lấy text bên trong làm label, bỏ dấu {{ }}
314
- // const textNode = viewElement.getChild(0);
315
- // let label = '';
316
- // if (textNode && textNode.is('$text')) {
317
- // label = textNode.data.replace(/{{|}}/g, '');
318
- // }
319
316
  const dataJson = viewElement.getAttribute('data-json');
320
317
  let parsedData = null;
321
318
  try {
@@ -399,30 +396,93 @@ class VariablePlugin extends Plugin {
399
396
  });
400
397
  }
401
398
  });
402
- // this.listenTo(editingView.document, 'drop', (evt, data) => {
403
- // const config = editor.config as Config<SdEditorConfig>;
404
- // const getOption = config.get('getOption') as SdEditorConfig['getOption'];
405
- // const option = getOption?.();
406
- // // Dữ liệu kéo thả
407
- // const dataTransfer = (data as any).dataTransfer;
408
- // const jsonData = dataTransfer.getData('ck-variable');
409
- // if (!jsonData) return;
410
- // evt.stop();
411
- // const variable: SdDocumentBuilderVariable = JSON.parse(jsonData);
412
- // // Gọi callback ra ngoài Angular (nếu có)
413
- // if (option && option.onDropVariable) {
414
- // const allow = option.onDropVariable(variable, 0);
415
- // if (allow === false) return; // Angular chặn drop
416
- // }
417
- // // Insert vào Model
418
- // editor.model.change(writer => {
419
- // const variableElem = writer.createElement('variable', {
420
- // id: variable.id,
421
- // label: variable.label
422
- // });
423
- // editor.model.insertContent(variableElem);
424
- // });
425
- // });
399
+ // 5. Lắng nghe sự kiện bàn phím
400
+ let isNavigating = false;
401
+ this.editor.editing.view.document.on('keydown', (evt, data) => {
402
+ // phím mũi tên: 37 (Left), 38 (Up), 39 (Right), 40 (Down)
403
+ const isArrowKey = data.keyCode >= 37 && data.keyCode <= 40;
404
+ if (isArrowKey) {
405
+ isNavigating = true;
406
+ }
407
+ else {
408
+ isNavigating = false;
409
+ }
410
+ }, { priority: 'high' });
411
+ // 6. Lắng nghe sự kiện Click chuột
412
+ this.editor.editing.view.document.on('mousedown', () => {
413
+ isNavigating = true;
414
+ });
415
+ this.listenTo(editor.model.document.selection, 'change:range', () => {
416
+ // Nếu không phải là hành động click hoặc mũi tên thì thoát hàm.
417
+ if (!isNavigating) {
418
+ return;
419
+ }
420
+ const model = editor.model;
421
+ const selection = model.document.selection;
422
+ if (!selection.isCollapsed)
423
+ return;
424
+ const position = selection.getFirstPosition();
425
+ const nodeBefore = position?.nodeBefore;
426
+ if (!position)
427
+ return;
428
+ // Kiểm tra: Node đứng trước con trỏ là variable
429
+ if (nodeBefore && nodeBefore.is('element', 'variable')) {
430
+ // Lấy node ngay sau variable để kiểm tra
431
+ const nextNode = nodeBefore.nextSibling;
432
+ // Logic: Nếu phía sau KHÔNG CÓ GÌ hoặc KHÔNG PHẢI LÀ TEXT
433
+ if (!nextNode || !nextNode.is('$text')) {
434
+ model.change(writer => {
435
+ // Chèn thêm con trỏ variable
436
+ writer.insertText('\u00A0', nodeBefore, 'after');
437
+ // Lấy vị trí ngay sau variable (lúc này đang là đầu của text node mới)
438
+ const posAfterVariable = writer.createPositionAfter(nodeBefore);
439
+ // Dịch chuyển vị trí đó sang phải 1 đơn vị (bỏ qua ký tự vừa thêm)
440
+ const targetPos = posAfterVariable.getShiftedBy(1);
441
+ // 3. Đặt con trỏ vào vị trí đã tính toán
442
+ writer.setSelection(targetPos);
443
+ });
444
+ }
445
+ }
446
+ });
447
+ // 7. Handle xóa variable
448
+ this.editor.editing.view.document.on('keydown', (evt, data) => {
449
+ // Mã phím 8 là Backspace, 46 là Delete
450
+ const btnBackspace = data.keyCode === 8;
451
+ const btnDelete = data.keyCode === 46;
452
+ if (btnBackspace || btnDelete) {
453
+ const selection = editor.model.document.selection;
454
+ const model = editor.model;
455
+ // CASE 1: Nếu con trỏ đang nhấp nháy (Collapsed)
456
+ if (selection.isCollapsed) {
457
+ const position = selection.getFirstPosition();
458
+ // Với Backspace ta kiểm tra nodeBefore, với Delete ta kiểm tra nodeAfter
459
+ const targetNode = data.keyCode === 8 ? position?.nodeBefore : position?.nodeAfter;
460
+ if (targetNode && targetNode.is('element', 'variable')) {
461
+ data.preventDefault();
462
+ evt.stop();
463
+ model.change(writer => {
464
+ // Chọn bao quanh Variable đó
465
+ writer.setSelection(targetNode, 'on');
466
+ });
467
+ return;
468
+ }
469
+ }
470
+ // CASE 2: Nếu đang có một vùng chọn (đã được highlight từ lần bấm trước)
471
+ else {
472
+ const selectedElement = selection.getSelectedElement();
473
+ // Nếu phần tử đang được chọn chính là variable
474
+ if (selectedElement && selectedElement.is('element', 'variable')) {
475
+ // Cho phép hành động mặc định diễn ra (CKEditor sẽ tự xóa phần tử đang được chọn)
476
+ // Hoặc chủ động xóa để chắc chắn:
477
+ data.preventDefault();
478
+ evt.stop();
479
+ model.change(writer => {
480
+ writer.remove(selectedElement);
481
+ });
482
+ }
483
+ }
484
+ }
485
+ }, { priority: 'highest' });
426
486
  }
427
487
  #isSdDocumentBuilderVariableResult = (obj) => {
428
488
  return (obj !== null &&
@@ -1363,11 +1423,11 @@ class SdDocumentBuilder {
1363
1423
  // });
1364
1424
  }
1365
1425
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdDocumentBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component });
1366
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: SdDocumentBuilder, isStandalone: true, selector: "sd-document-builder", inputs: { option: "option", _disabled: ["disabled", "_disabled"] }, outputs: { contentChange: "contentChange" }, ngImport: i0, template: "<div class=\"builder-container\">\n <ckeditor\n style=\"width: 100%\"\n [editor]=\"Editor\" \n [config]=\"config\" \n (ready)=\"onReady($event)\"\n [disabled]=\"disabled\">\n </ckeditor>\n</div>", styles: ["@charset \"UTF-8\";.builder-container{background-color:#f3f4f6;height:100%;overflow-y:auto;width:100%;display:flex;flex-direction:column;align-items:center;padding-bottom:20px}:host{display:inline-block}:host ::ng-deep .ck-editor{display:flex;flex-direction:column;align-items:center;width:100%}:host ::ng-deep .ck-editor .ck-editor__top,:host ::ng-deep .ck-editor .ck-editor__main{border:none!important;box-shadow:none!important}:host ::ng-deep .ck-content{background-color:#fff;width:210mm;min-height:1123px;padding:20mm!important;box-sizing:border-box!important;box-shadow:0 10px 15px -3px #0000001a}:host ::ng-deep .ck-content h1,:host ::ng-deep .ck-content h2,:host ::ng-deep .ck-content h3,:host ::ng-deep .ck-content h4,:host ::ng-deep .ck-content h5,:host ::ng-deep .ck-content h6{font-weight:400}:host ::ng-deep .ck-content.ck-focused{outline:none!important;border-color:#d1d5db!important}:host ::ng-deep .ck-content.landscape{width:297mm}:host ::ng-deep .ck-content>*{max-width:100%!important;box-sizing:border-box!important}:host ::ng-deep .ck-content img{max-width:100%!important;height:auto!important;object-fit:contain}:host ::ng-deep .ck-content p{margin-left:0!important;margin-right:0!important;margin-bottom:var(--ck-spacing-large);text-indent:0}:host ::ng-deep .ck-content ul,:host ::ng-deep .ck-content ol{padding-left:20px!important;margin-left:0!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-comment-marker{background-color:#ffeb3b80;border-bottom:2px solid #fbc02d;cursor:pointer;transition:background-color .2s}:host ::ng-deep .ck-comment-marker:hover{background-color:#ffeb3bcc}:host ::ng-deep .ck-comment-marker.active-highlight{background-color:#ffeb3b;outline:2px dashed #f57f17}\n", "@charset \"UTF-8\";:host ::ng-deep .variable-widget{background-color:#e3f2fd;color:#1976d2;border:1px solid #90caf9;border-radius:4px;padding:2px 6px;font-weight:600;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:10px;cursor:default;-webkit-user-select:none;user-select:none;display:inline-block;margin:0 2px;vertical-align:middle;font-size:0}:host ::ng-deep .variable-widget:before{content:attr(data-display);font-size:10px}:host ::ng-deep .variable-widget:hover{background-color:#bbdefb;box-shadow:0 1px 2px #0000001a}:host ::ng-deep .variable-widget.ck-widget_selected{outline:2px solid #2196f3;background-color:#bbdefb}:host ::ng-deep .ck.ck-clipboard-drop-target-line{display:none!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-editor__editable .ck-widget.table{float:none!important;display:block!important;max-width:100%!important;width:100%!important;margin:0!important;clear:both}:host ::ng-deep .ck-editor__editable table{table-layout:auto!important;width:100%!important;border-collapse:collapse;margin:0!important}:host ::ng-deep .ck-editor__editable table td,:host ::ng-deep .ck-editor__editable table th{word-wrap:break-word;white-space:normal!important;padding:.4em!important}:host ::ng-deep .ck-editor__editable table td img,:host ::ng-deep .ck-editor__editable table th img{max-width:100%;height:auto}\n", "@charset \"UTF-8\";::ng-deep .ck-editor{--ck-font-size-base: 11px !important;--ck-icon-size: 16px !important;--ck-content-font-family: \"Times New Roman\", serif !important;--ck-content-font-size: 13pt;--ck-content-line-height: 1.5;--ck-spacing-small: 2px !important;--ck-spacing-standard: 4px !important;--ck-spacing-large: 8px !important}::ng-deep .ck-editor .ck-editor__top{position:sticky;top:0;z-index:100;width:100%;min-width:600px;margin-bottom:10px}::ng-deep .ck-editor .ck-editor__top .ck-sticky-panel__content{border:none!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar{background:#fff!important;box-shadow:0 4px 6px -1px #0000001a!important;padding:8px!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar .ck-toolbar__items{display:flex;justify-content:center;flex-wrap:wrap;align-items:center}::ng-deep .ck-editor .ck-toolbar{min-height:32px!important;padding:2px!important}::ng-deep .ck-editor .ck-button{padding:2px 4px!important;min-height:24px!important}::ng-deep .ck-editor .ck-dropdown__button{min-height:24px!important}::ng-deep .ck.ck-toolbar{background:#f8f9fa!important;border-bottom:1px solid #e0e0e0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CKEditorModule }, { kind: "component", type: i1.CKEditorComponent, selector: "ckeditor", inputs: ["editor", "config", "data", "tagName", "watchdog", "editorWatchdogConfig", "disableWatchdog", "disableTwoWayDataBinding", "disabled"], outputs: ["ready", "change", "blur", "focus", "error"] }] });
1426
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: SdDocumentBuilder, isStandalone: true, selector: "sd-document-builder", inputs: { option: "option", _disabled: ["disabled", "_disabled"] }, outputs: { contentChange: "contentChange" }, ngImport: i0, template: "<div class=\"builder-container\">\n <ckeditor\n style=\"width: 100%\"\n [editor]=\"Editor\" \n [config]=\"config\" \n (ready)=\"onReady($event)\"\n [disabled]=\"disabled\">\n </ckeditor>\n</div>", styles: ["@charset \"UTF-8\";.builder-container{background-color:#f3f4f6;height:100%;overflow-y:auto;width:100%;display:flex;flex-direction:column;align-items:center;padding-bottom:20px}:host{display:inline-block}:host ::ng-deep .ck-editor{display:flex;flex-direction:column;align-items:center;width:100%}:host ::ng-deep .ck-editor .ck-editor__top,:host ::ng-deep .ck-editor .ck-editor__main{border:none!important;box-shadow:none!important}:host ::ng-deep .ck-content{background-color:#fff;width:210mm;min-height:1123px;padding:20mm!important;box-sizing:border-box!important;box-shadow:0 10px 15px -3px #0000001a}:host ::ng-deep .ck-content h1,:host ::ng-deep .ck-content h2,:host ::ng-deep .ck-content h3,:host ::ng-deep .ck-content h4,:host ::ng-deep .ck-content h5,:host ::ng-deep .ck-content h6{font-weight:400}:host ::ng-deep .ck-content.ck-focused{outline:none!important;border-color:#d1d5db!important}:host ::ng-deep .ck-content.landscape{width:297mm}:host ::ng-deep .ck-content>*{max-width:100%!important;box-sizing:border-box!important}:host ::ng-deep .ck-content img{max-width:100%!important;height:auto!important;object-fit:contain}:host ::ng-deep .ck-content p{margin-left:0!important;margin-right:0!important;margin-bottom:var(--ck-spacing-large);text-indent:0}:host ::ng-deep .ck-content ul,:host ::ng-deep .ck-content ol{padding-left:20px!important;margin-left:0!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-comment-marker{background-color:#ffeb3b80;border-bottom:2px solid #fbc02d;cursor:pointer;transition:background-color .2s}:host ::ng-deep .ck-comment-marker:hover{background-color:#ffeb3bcc}:host ::ng-deep .ck-comment-marker.active-highlight{background-color:#ffeb3b;outline:2px dashed #f57f17}\n", "@charset \"UTF-8\";:host ::ng-deep .variable-widget{background-color:#e3f2fd;color:#1976d2;border:1px solid #90caf9!important;border-radius:4px;padding:2px 6px;font-weight:600;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:10px;cursor:default;-webkit-user-select:none;user-select:none;display:inline-block;margin:0 4px;vertical-align:middle;font-size:0}:host ::ng-deep .variable-widget:before{content:attr(data-display);font-size:10px}:host ::ng-deep .variable-widget:hover{background-color:#bbdefb;box-shadow:0 1px 2px #0000001a}:host ::ng-deep .variable-widget.ck-widget_selected{outline:2px solid #2196f3;background-color:#bbdefb}:host ::ng-deep .ck.ck-clipboard-drop-target-line{display:none!important}:host ::ng-deep .ck.ck-content .ck-widget,:host ::ng-deep .ck.ck-content .ck-widget:hover,:host ::ng-deep .ck.ck-content .ck-widget:focus,:host ::ng-deep .ck.ck-content .ck-widget.ck-widget_selected,:host ::ng-deep .ck.ck-content .ck-widget.ck-widget_selected:hover{outline:none!important;box-shadow:none!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-editor__editable .ck-widget.table{float:none!important;display:block!important;max-width:100%!important;width:100%!important;margin:0!important;clear:both}:host ::ng-deep .ck-editor__editable table{table-layout:auto!important;width:100%!important;border-collapse:collapse;margin:0!important}:host ::ng-deep .ck-editor__editable table td,:host ::ng-deep .ck-editor__editable table th{word-wrap:break-word;white-space:normal!important;padding:.4em!important}:host ::ng-deep .ck-editor__editable table td img,:host ::ng-deep .ck-editor__editable table th img{max-width:100%;height:auto}\n", "@charset \"UTF-8\";::ng-deep .ck-editor{--ck-font-size-base: 11px !important;--ck-icon-size: 16px !important;--ck-content-font-family: \"Times New Roman\", serif !important;--ck-content-font-size: 13pt;--ck-content-line-height: 1.5;--ck-spacing-small: 2px !important;--ck-spacing-standard: 4px !important;--ck-spacing-large: 8px !important}::ng-deep .ck-editor .ck-editor__top{position:sticky;top:0;z-index:100;width:100%;min-width:600px;margin-bottom:10px}::ng-deep .ck-editor .ck-editor__top .ck-sticky-panel__content{border:none!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar{background:#fff!important;box-shadow:0 4px 6px -1px #0000001a!important;padding:8px!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar .ck-toolbar__items{display:flex;justify-content:center;flex-wrap:wrap;align-items:center}::ng-deep .ck-editor .ck-toolbar{min-height:32px!important;padding:2px!important}::ng-deep .ck-editor .ck-button{padding:2px 4px!important;min-height:24px!important}::ng-deep .ck-editor .ck-dropdown__button{min-height:24px!important}::ng-deep .ck.ck-toolbar{background:#f8f9fa!important;border-bottom:1px solid #e0e0e0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CKEditorModule }, { kind: "component", type: i1.CKEditorComponent, selector: "ckeditor", inputs: ["editor", "config", "data", "tagName", "watchdog", "editorWatchdogConfig", "disableWatchdog", "disableTwoWayDataBinding", "disabled"], outputs: ["ready", "change", "blur", "focus", "error"] }] });
1367
1427
  }
1368
1428
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdDocumentBuilder, decorators: [{
1369
1429
  type: Component,
1370
- args: [{ selector: 'sd-document-builder', standalone: true, imports: [CommonModule, CKEditorModule], template: "<div class=\"builder-container\">\n <ckeditor\n style=\"width: 100%\"\n [editor]=\"Editor\" \n [config]=\"config\" \n (ready)=\"onReady($event)\"\n [disabled]=\"disabled\">\n </ckeditor>\n</div>", styles: ["@charset \"UTF-8\";.builder-container{background-color:#f3f4f6;height:100%;overflow-y:auto;width:100%;display:flex;flex-direction:column;align-items:center;padding-bottom:20px}:host{display:inline-block}:host ::ng-deep .ck-editor{display:flex;flex-direction:column;align-items:center;width:100%}:host ::ng-deep .ck-editor .ck-editor__top,:host ::ng-deep .ck-editor .ck-editor__main{border:none!important;box-shadow:none!important}:host ::ng-deep .ck-content{background-color:#fff;width:210mm;min-height:1123px;padding:20mm!important;box-sizing:border-box!important;box-shadow:0 10px 15px -3px #0000001a}:host ::ng-deep .ck-content h1,:host ::ng-deep .ck-content h2,:host ::ng-deep .ck-content h3,:host ::ng-deep .ck-content h4,:host ::ng-deep .ck-content h5,:host ::ng-deep .ck-content h6{font-weight:400}:host ::ng-deep .ck-content.ck-focused{outline:none!important;border-color:#d1d5db!important}:host ::ng-deep .ck-content.landscape{width:297mm}:host ::ng-deep .ck-content>*{max-width:100%!important;box-sizing:border-box!important}:host ::ng-deep .ck-content img{max-width:100%!important;height:auto!important;object-fit:contain}:host ::ng-deep .ck-content p{margin-left:0!important;margin-right:0!important;margin-bottom:var(--ck-spacing-large);text-indent:0}:host ::ng-deep .ck-content ul,:host ::ng-deep .ck-content ol{padding-left:20px!important;margin-left:0!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-comment-marker{background-color:#ffeb3b80;border-bottom:2px solid #fbc02d;cursor:pointer;transition:background-color .2s}:host ::ng-deep .ck-comment-marker:hover{background-color:#ffeb3bcc}:host ::ng-deep .ck-comment-marker.active-highlight{background-color:#ffeb3b;outline:2px dashed #f57f17}\n", "@charset \"UTF-8\";:host ::ng-deep .variable-widget{background-color:#e3f2fd;color:#1976d2;border:1px solid #90caf9;border-radius:4px;padding:2px 6px;font-weight:600;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:10px;cursor:default;-webkit-user-select:none;user-select:none;display:inline-block;margin:0 2px;vertical-align:middle;font-size:0}:host ::ng-deep .variable-widget:before{content:attr(data-display);font-size:10px}:host ::ng-deep .variable-widget:hover{background-color:#bbdefb;box-shadow:0 1px 2px #0000001a}:host ::ng-deep .variable-widget.ck-widget_selected{outline:2px solid #2196f3;background-color:#bbdefb}:host ::ng-deep .ck.ck-clipboard-drop-target-line{display:none!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-editor__editable .ck-widget.table{float:none!important;display:block!important;max-width:100%!important;width:100%!important;margin:0!important;clear:both}:host ::ng-deep .ck-editor__editable table{table-layout:auto!important;width:100%!important;border-collapse:collapse;margin:0!important}:host ::ng-deep .ck-editor__editable table td,:host ::ng-deep .ck-editor__editable table th{word-wrap:break-word;white-space:normal!important;padding:.4em!important}:host ::ng-deep .ck-editor__editable table td img,:host ::ng-deep .ck-editor__editable table th img{max-width:100%;height:auto}\n", "@charset \"UTF-8\";::ng-deep .ck-editor{--ck-font-size-base: 11px !important;--ck-icon-size: 16px !important;--ck-content-font-family: \"Times New Roman\", serif !important;--ck-content-font-size: 13pt;--ck-content-line-height: 1.5;--ck-spacing-small: 2px !important;--ck-spacing-standard: 4px !important;--ck-spacing-large: 8px !important}::ng-deep .ck-editor .ck-editor__top{position:sticky;top:0;z-index:100;width:100%;min-width:600px;margin-bottom:10px}::ng-deep .ck-editor .ck-editor__top .ck-sticky-panel__content{border:none!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar{background:#fff!important;box-shadow:0 4px 6px -1px #0000001a!important;padding:8px!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar .ck-toolbar__items{display:flex;justify-content:center;flex-wrap:wrap;align-items:center}::ng-deep .ck-editor .ck-toolbar{min-height:32px!important;padding:2px!important}::ng-deep .ck-editor .ck-button{padding:2px 4px!important;min-height:24px!important}::ng-deep .ck-editor .ck-dropdown__button{min-height:24px!important}::ng-deep .ck.ck-toolbar{background:#f8f9fa!important;border-bottom:1px solid #e0e0e0!important}\n"] }]
1430
+ args: [{ selector: 'sd-document-builder', standalone: true, imports: [CommonModule, CKEditorModule], template: "<div class=\"builder-container\">\n <ckeditor\n style=\"width: 100%\"\n [editor]=\"Editor\" \n [config]=\"config\" \n (ready)=\"onReady($event)\"\n [disabled]=\"disabled\">\n </ckeditor>\n</div>", styles: ["@charset \"UTF-8\";.builder-container{background-color:#f3f4f6;height:100%;overflow-y:auto;width:100%;display:flex;flex-direction:column;align-items:center;padding-bottom:20px}:host{display:inline-block}:host ::ng-deep .ck-editor{display:flex;flex-direction:column;align-items:center;width:100%}:host ::ng-deep .ck-editor .ck-editor__top,:host ::ng-deep .ck-editor .ck-editor__main{border:none!important;box-shadow:none!important}:host ::ng-deep .ck-content{background-color:#fff;width:210mm;min-height:1123px;padding:20mm!important;box-sizing:border-box!important;box-shadow:0 10px 15px -3px #0000001a}:host ::ng-deep .ck-content h1,:host ::ng-deep .ck-content h2,:host ::ng-deep .ck-content h3,:host ::ng-deep .ck-content h4,:host ::ng-deep .ck-content h5,:host ::ng-deep .ck-content h6{font-weight:400}:host ::ng-deep .ck-content.ck-focused{outline:none!important;border-color:#d1d5db!important}:host ::ng-deep .ck-content.landscape{width:297mm}:host ::ng-deep .ck-content>*{max-width:100%!important;box-sizing:border-box!important}:host ::ng-deep .ck-content img{max-width:100%!important;height:auto!important;object-fit:contain}:host ::ng-deep .ck-content p{margin-left:0!important;margin-right:0!important;margin-bottom:var(--ck-spacing-large);text-indent:0}:host ::ng-deep .ck-content ul,:host ::ng-deep .ck-content ol{padding-left:20px!important;margin-left:0!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-comment-marker{background-color:#ffeb3b80;border-bottom:2px solid #fbc02d;cursor:pointer;transition:background-color .2s}:host ::ng-deep .ck-comment-marker:hover{background-color:#ffeb3bcc}:host ::ng-deep .ck-comment-marker.active-highlight{background-color:#ffeb3b;outline:2px dashed #f57f17}\n", "@charset \"UTF-8\";:host ::ng-deep .variable-widget{background-color:#e3f2fd;color:#1976d2;border:1px solid #90caf9!important;border-radius:4px;padding:2px 6px;font-weight:600;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:10px;cursor:default;-webkit-user-select:none;user-select:none;display:inline-block;margin:0 4px;vertical-align:middle;font-size:0}:host ::ng-deep .variable-widget:before{content:attr(data-display);font-size:10px}:host ::ng-deep .variable-widget:hover{background-color:#bbdefb;box-shadow:0 1px 2px #0000001a}:host ::ng-deep .variable-widget.ck-widget_selected{outline:2px solid #2196f3;background-color:#bbdefb}:host ::ng-deep .ck.ck-clipboard-drop-target-line{display:none!important}:host ::ng-deep .ck.ck-content .ck-widget,:host ::ng-deep .ck.ck-content .ck-widget:hover,:host ::ng-deep .ck.ck-content .ck-widget:focus,:host ::ng-deep .ck.ck-content .ck-widget.ck-widget_selected,:host ::ng-deep .ck.ck-content .ck-widget.ck-widget_selected:hover{outline:none!important;box-shadow:none!important}\n", "@charset \"UTF-8\";:host ::ng-deep .ck-editor__editable .ck-widget.table{float:none!important;display:block!important;max-width:100%!important;width:100%!important;margin:0!important;clear:both}:host ::ng-deep .ck-editor__editable table{table-layout:auto!important;width:100%!important;border-collapse:collapse;margin:0!important}:host ::ng-deep .ck-editor__editable table td,:host ::ng-deep .ck-editor__editable table th{word-wrap:break-word;white-space:normal!important;padding:.4em!important}:host ::ng-deep .ck-editor__editable table td img,:host ::ng-deep .ck-editor__editable table th img{max-width:100%;height:auto}\n", "@charset \"UTF-8\";::ng-deep .ck-editor{--ck-font-size-base: 11px !important;--ck-icon-size: 16px !important;--ck-content-font-family: \"Times New Roman\", serif !important;--ck-content-font-size: 13pt;--ck-content-line-height: 1.5;--ck-spacing-small: 2px !important;--ck-spacing-standard: 4px !important;--ck-spacing-large: 8px !important}::ng-deep .ck-editor .ck-editor__top{position:sticky;top:0;z-index:100;width:100%;min-width:600px;margin-bottom:10px}::ng-deep .ck-editor .ck-editor__top .ck-sticky-panel__content{border:none!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar{background:#fff!important;box-shadow:0 4px 6px -1px #0000001a!important;padding:8px!important}::ng-deep .ck-editor .ck-editor__top .ck-toolbar .ck-toolbar__items{display:flex;justify-content:center;flex-wrap:wrap;align-items:center}::ng-deep .ck-editor .ck-toolbar{min-height:32px!important;padding:2px!important}::ng-deep .ck-editor .ck-button{padding:2px 4px!important;min-height:24px!important}::ng-deep .ck-editor .ck-dropdown__button{min-height:24px!important}::ng-deep .ck.ck-toolbar{background:#f8f9fa!important;border-bottom:1px solid #e0e0e0!important}\n"] }]
1371
1431
  }], propDecorators: { option: [{
1372
1432
  type: Input,
1373
1433
  args: [{ required: true }]