ngx-histaff-alpha 5.9.9 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-DJou-dbD.mjs → ngx-histaff-alpha-ai-hint-for-table.component-Bssq-0A9.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-DJou-dbD.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-Bssq-0A9.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-XvkMxYKX.mjs → ngx-histaff-alpha-core-form-design.component-a1ho0-oS.mjs} +6 -6
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-XvkMxYKX.mjs.map → ngx-histaff-alpha-core-form-design.component-a1ho0-oS.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-sticker-collection.component-B8YmSEoB.mjs → ngx-histaff-alpha-core-sticker-collection.component-B8ll_qSG.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-core-sticker-collection.component-B8YmSEoB.mjs.map → ngx-histaff-alpha-core-sticker-collection.component-B8ll_qSG.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-_BGMfd0v.mjs → ngx-histaff-alpha-core-template-editor.component-DH2hr-WQ.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-_BGMfd0v.mjs.map → ngx-histaff-alpha-core-template-editor.component-DH2hr-WQ.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-vDd15vTt.mjs → ngx-histaff-alpha-core-toast-loading.component-b0bLEV46.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-vDd15vTt.mjs.map → ngx-histaff-alpha-core-toast-loading.component-b0bLEV46.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-DOC0gxvF.mjs → ngx-histaff-alpha-core-workflow-consume.component-BkQU1iCl.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-DOC0gxvF.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-BkQU1iCl.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-osYYD2VZ.mjs → ngx-histaff-alpha-db-settings.component-DvZpSoNS.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-osYYD2VZ.mjs.map → ngx-histaff-alpha-db-settings.component-DvZpSoNS.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-Doqa5ktj.mjs → ngx-histaff-alpha-design-wrapper.component-Dujs4qzo.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-Doqa5ktj.mjs.map → ngx-histaff-alpha-design-wrapper.component-Dujs4qzo.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-FELy6p-G.mjs → ngx-histaff-alpha-design-wrapper.route-CJ1qavG9.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-FELy6p-G.mjs.map → ngx-histaff-alpha-design-wrapper.route-CJ1qavG9.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-CfQR3S5b.mjs → ngx-histaff-alpha-form-array-props.component-6RzRJCFb.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-CfQR3S5b.mjs.map → ngx-histaff-alpha-form-array-props.component-6RzRJCFb.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-CxHOd02D.mjs → ngx-histaff-alpha-live-form.component-BJVtjmhk.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-live-form.component-CxHOd02D.mjs.map → ngx-histaff-alpha-live-form.component-BJVtjmhk.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-CgCAObWj.mjs → ngx-histaff-alpha-ngx-histaff-alpha-OX-fPVM-.mjs} +66 -43
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-OX-fPVM-.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-CDCKBrkZ.mjs → ngx-histaff-alpha-simple-chat.component-Du2PDR-u.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-CDCKBrkZ.mjs.map → ngx-histaff-alpha-simple-chat.component-Du2PDR-u.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-BFTwxU2H.mjs → ngx-histaff-alpha-template-list.component-Bd_34R-U.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-BFTwxU2H.mjs.map → ngx-histaff-alpha-template-list.component-Bd_34R-U.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-DnkbQFFW.mjs → ngx-histaff-alpha-tracker-studio.component-E3A09674.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-DnkbQFFW.mjs.map → ngx-histaff-alpha-tracker-studio.component-E3A09674.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-Do8vO6MV.mjs → ngx-histaff-alpha-wf-form-assign.component-CUgB6Y-o.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-Do8vO6MV.mjs.map → ngx-histaff-alpha-wf-form-assign.component-CUgB6Y-o.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-BqWwA5pQ.mjs → ngx-histaff-alpha-wf-instance-status.component-C4UGaTAu.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-BqWwA5pQ.mjs.map → ngx-histaff-alpha-wf-instance-status.component-C4UGaTAu.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-3XR3zc8T.mjs → ngx-histaff-alpha-wf-instance-step-react.component-C99XgtbF.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-3XR3zc8T.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-C99XgtbF.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/libraries/core-docgen-toolbar/core-docgen-toolbar.component.d.ts +12 -1
- package/package.json +1 -1
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-CgCAObWj.mjs.map +0 -1
|
@@ -9989,7 +9989,9 @@ class TooltipDirective {
|
|
|
9989
9989
|
onMouseEnter(e) {
|
|
9990
9990
|
this.cdr.detectChanges();
|
|
9991
9991
|
//const condition = () => this.showAnyway || (!e.currentTarget.innerText && !e.currentTarget.innerText?.length) || (!!e.currentTarget.innerText && !!e.currentTarget.innerText?.length && (e.currentTarget.offsetWidth < e.currentTarget.scrollWidth))
|
|
9992
|
-
const condition = () => this.showAnyway ||
|
|
9992
|
+
const condition = () => this.showAnyway ||
|
|
9993
|
+
(!!e.currentTarget.innerText && !!e.currentTarget.innerText?.length && (e.currentTarget.offsetWidth < e.currentTarget.scrollWidth)) ||
|
|
9994
|
+
(!e.currentTarget.innerText && !e.currentTarget.innerText?.length); // auto for text-less dom nodes
|
|
9993
9995
|
const check = condition();
|
|
9994
9996
|
if (!check)
|
|
9995
9997
|
return;
|
|
@@ -10098,13 +10100,17 @@ class TooltipDirective {
|
|
|
10098
10100
|
}
|
|
10099
10101
|
}
|
|
10100
10102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i1$2.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10101
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.5", type: TooltipDirective, isStandalone: true, selector: "[appTooltip]", inputs: { color: "color", backgroundColor: "backgroundColor", appTooltip: "appTooltip", showAnyway: "showAnyway", position: "position" }, host: { listeners: { "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave()", "click": "onClick()" } }, ngImport: i0 }); }
|
|
10103
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.5", type: TooltipDirective, isStandalone: true, selector: "[appTooltip]", inputs: { color: "color", backgroundColor: "backgroundColor", appTooltip: "appTooltip", showAnyway: "showAnyway", position: "position" }, host: { listeners: { "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)", "window:click": "onClick()" } }, ngImport: i0 }); }
|
|
10102
10104
|
}
|
|
10103
10105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: TooltipDirective, decorators: [{
|
|
10104
10106
|
type: Directive,
|
|
10105
10107
|
args: [{
|
|
10106
10108
|
selector: '[appTooltip]',
|
|
10107
|
-
|
|
10109
|
+
host: {
|
|
10110
|
+
'(mouseenter)': 'onMouseEnter($event)',
|
|
10111
|
+
'(mouseleave)': 'onMouseLeave($event)',
|
|
10112
|
+
'(window:click)': 'onClick()'
|
|
10113
|
+
}
|
|
10108
10114
|
}]
|
|
10109
10115
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i1$2.Router }, { type: i0.ChangeDetectorRef }], propDecorators: { color: [{
|
|
10110
10116
|
type: Input
|
|
@@ -10116,15 +10122,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
10116
10122
|
type: Input
|
|
10117
10123
|
}], position: [{
|
|
10118
10124
|
type: Input
|
|
10119
|
-
}], onMouseEnter: [{
|
|
10120
|
-
type: HostListener,
|
|
10121
|
-
args: ['mouseenter', ['$event']]
|
|
10122
|
-
}], onMouseLeave: [{
|
|
10123
|
-
type: HostListener,
|
|
10124
|
-
args: ['mouseleave']
|
|
10125
|
-
}], onClick: [{
|
|
10126
|
-
type: HostListener,
|
|
10127
|
-
args: ['click']
|
|
10128
10125
|
}] } });
|
|
10129
10126
|
|
|
10130
10127
|
var tooltip_directive = /*#__PURE__*/Object.freeze({
|
|
@@ -11912,6 +11909,9 @@ class CoreTableComponent extends CoreFormControlBaseComponent {
|
|
|
11912
11909
|
}
|
|
11913
11910
|
});
|
|
11914
11911
|
this.columnCaptions.toArray().map((ref, index) => {
|
|
11912
|
+
if (index >= this.visibleColumns.length) {
|
|
11913
|
+
return;
|
|
11914
|
+
}
|
|
11915
11915
|
const field = this.visibleColumns[index].field;
|
|
11916
11916
|
const filter = this.dragoverSubscriptions.filter(x => x.field === field);
|
|
11917
11917
|
if (filter.length === 0) {
|
|
@@ -25019,7 +25019,7 @@ class CoreFormArrayComponent {
|
|
|
25019
25019
|
multi: true,
|
|
25020
25020
|
useExisting: CoreFormArrayComponent
|
|
25021
25021
|
}
|
|
25022
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <div class=\"form-array-item\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</div>\r\n } -->\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\">\r\n <core-control-no-form-array [control]=\"col\" [form]=\"group\"\r\n [checkError$]=\"checkError$\"></core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"form-array-toolbar\">\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i)\"\r\n [appTooltip]=\"'Remove group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n</div>", styles: [".core-form-array-container{padding:15px;border:
|
|
25022
|
+
], usesOnChanges: true, ngImport: i0, template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <div class=\"form-array-item\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</div>\r\n } -->\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\">\r\n <core-control-no-form-array [control]=\"col\" [form]=\"group\"\r\n [checkError$]=\"checkError$\"></core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"form-array-toolbar\">\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i)\"\r\n [appTooltip]=\"'Remove group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n</div>", styles: [".core-form-array-container{padding:15px;border:1px solid #ced4da}.core-form-array-container .form-array-item{display:flex;align-items:flex-start}.core-form-array-container .form-array-item>*{display:inline-block!important}.core-form-array-container .form-array-item .form-array-content{width:calc(100% - 46px)}.core-form-array-container .form-array-item .form-array-toolbar{width:14px;padding-left:12px;transform:translateY(25px)}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreControlNoFormArrayComponent, selector: "core-control-no-form-array", inputs: ["control", "form", "checkError$", "rangeLimit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25023
25023
|
}
|
|
25024
25024
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreFormArrayComponent, decorators: [{
|
|
25025
25025
|
type: Component,
|
|
@@ -25034,7 +25034,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
25034
25034
|
JsonSafePipe,
|
|
25035
25035
|
TooltipDirective,
|
|
25036
25036
|
CoreControlNoFormArrayComponent
|
|
25037
|
-
], template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <div class=\"form-array-item\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</div>\r\n } -->\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\">\r\n <core-control-no-form-array [control]=\"col\" [form]=\"group\"\r\n [checkError$]=\"checkError$\"></core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"form-array-toolbar\">\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i)\"\r\n [appTooltip]=\"'Remove group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n</div>", styles: [".core-form-array-container{padding:15px;border:
|
|
25037
|
+
], template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <div class=\"form-array-item\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</div>\r\n } -->\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\">\r\n <core-control-no-form-array [control]=\"col\" [form]=\"group\"\r\n [checkError$]=\"checkError$\"></core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"form-array-toolbar\">\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i)\"\r\n [appTooltip]=\"'Remove group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n</div>", styles: [".core-form-array-container{padding:15px;border:1px solid #ced4da}.core-form-array-container .form-array-item{display:flex;align-items:flex-start}.core-form-array-container .form-array-item>*{display:inline-block!important}.core-form-array-container .form-array-item .form-array-content{width:calc(100% - 46px)}.core-form-array-container .form-array-item .form-array-toolbar{width:14px;padding-left:12px;transform:translateY(25px)}\n"] }]
|
|
25038
25038
|
}], ctorParameters: () => [], propDecorators: { formArray: [{
|
|
25039
25039
|
type: Input,
|
|
25040
25040
|
args: [{ required: true }]
|
|
@@ -25048,23 +25048,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
25048
25048
|
|
|
25049
25049
|
class CoreDocgenToolbarComponent {
|
|
25050
25050
|
constructor() {
|
|
25051
|
-
// ===== Inputs
|
|
25051
|
+
// ===== Inputs =====
|
|
25052
25052
|
this.$fields = input([]);
|
|
25053
25053
|
this.$disabled = input(false);
|
|
25054
|
-
this.$mode = input('design');
|
|
25054
|
+
this.$mode = input('design');
|
|
25055
25055
|
this.$canUndo = input(false);
|
|
25056
25056
|
this.$canRedo = input(false);
|
|
25057
25057
|
// ===== Outputs =====
|
|
25058
25058
|
this.undo = output();
|
|
25059
25059
|
this.redo = output();
|
|
25060
|
-
this.formatBlock = output();
|
|
25060
|
+
this.formatBlock = output();
|
|
25061
25061
|
this.bold = output();
|
|
25062
25062
|
this.italic = output();
|
|
25063
25063
|
this.code = output();
|
|
25064
25064
|
this.clear = output();
|
|
25065
|
-
this.link = output();
|
|
25066
|
-
this.imageUpload = output();
|
|
25067
|
-
this.imageFromUrl = output();
|
|
25065
|
+
this.link = output();
|
|
25066
|
+
this.imageUpload = output();
|
|
25067
|
+
this.imageFromUrl = output();
|
|
25068
25068
|
this.insertTable = output();
|
|
25069
25069
|
this.listToggle = output();
|
|
25070
25070
|
this.align = output();
|
|
@@ -25076,12 +25076,20 @@ class CoreDocgenToolbarComponent {
|
|
|
25076
25076
|
this.insertCondition = output();
|
|
25077
25077
|
this.toggleMode = output();
|
|
25078
25078
|
this.preview = output();
|
|
25079
|
-
//
|
|
25079
|
+
// NEW: colors & indent
|
|
25080
|
+
this.fgColor = output(); // '#rrggbb' or null to clear
|
|
25081
|
+
this.bgColor = output(); // '#rrggbb' or null to clear
|
|
25082
|
+
this.indent = output(); // 'increase' | 'decrease'
|
|
25083
|
+
// ===== Local UI state =====
|
|
25080
25084
|
this.$openFormat = signal(false);
|
|
25081
25085
|
this.$openImage = signal(false);
|
|
25082
25086
|
this.$openTable = signal(false);
|
|
25083
|
-
|
|
25087
|
+
this.$openFg = signal(false);
|
|
25088
|
+
this.$openBg = signal(false);
|
|
25084
25089
|
this.canInteract = computed(() => !this.$disabled());
|
|
25090
|
+
// Palettes (tweak to your design system)
|
|
25091
|
+
this.fgPalette = ['#111827', '#1f2937', '#ef4444', '#10b981', '#3b82f6', '#8b5cf6', '#111111', '#6b7280', '#fb923c'];
|
|
25092
|
+
this.bgPalette = ['#fff7ed', '#fef3c7', '#dcfce7', '#dbeafe', '#ede9fe', '#fee2e2', '#f3f4f6', '#ffffff', '#fff'];
|
|
25085
25093
|
}
|
|
25086
25094
|
onToggleMode() {
|
|
25087
25095
|
const next = this.$mode() === 'design' ? 'source' : 'design';
|
|
@@ -25093,7 +25101,6 @@ class CoreDocgenToolbarComponent {
|
|
|
25093
25101
|
this.$openTable.set(false);
|
|
25094
25102
|
this.insertTable.emit({ rows: r, cols: c });
|
|
25095
25103
|
}
|
|
25096
|
-
// convenience
|
|
25097
25104
|
onPickBlock(tag) {
|
|
25098
25105
|
if (!this.canInteract())
|
|
25099
25106
|
return;
|
|
@@ -25105,12 +25112,25 @@ class CoreDocgenToolbarComponent {
|
|
|
25105
25112
|
return;
|
|
25106
25113
|
this.insertField.emit(f);
|
|
25107
25114
|
}
|
|
25115
|
+
onPickFg(c) {
|
|
25116
|
+
this.$openFg.set(false);
|
|
25117
|
+
this.fgColor.emit(c ?? null);
|
|
25118
|
+
}
|
|
25119
|
+
onPickBg(c) {
|
|
25120
|
+
this.$openBg.set(false);
|
|
25121
|
+
this.bgColor.emit(c ?? null);
|
|
25122
|
+
}
|
|
25123
|
+
onIndent(dir) {
|
|
25124
|
+
this.indent.emit(dir);
|
|
25125
|
+
}
|
|
25108
25126
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreDocgenToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25109
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreDocgenToolbarComponent, isStandalone: true, selector: "core-docgen-toolbar", inputs: { $fields: { classPropertyName: "$fields", publicName: "$fields", isSignal: true, isRequired: false, transformFunction: null }, $disabled: { classPropertyName: "$disabled", publicName: "$disabled", isSignal: true, isRequired: false, transformFunction: null }, $mode: { classPropertyName: "$mode", publicName: "$mode", isSignal: true, isRequired: false, transformFunction: null }, $canUndo: { classPropertyName: "$canUndo", publicName: "$canUndo", isSignal: true, isRequired: false, transformFunction: null }, $canRedo: { classPropertyName: "$canRedo", publicName: "$canRedo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { undo: "undo", redo: "redo", formatBlock: "formatBlock", bold: "bold", italic: "italic", code: "code", clear: "clear", link: "link", imageUpload: "imageUpload", imageFromUrl: "imageFromUrl", insertTable: "insertTable", listToggle: "listToggle", align: "align", quote: "quote", hr: "hr", pageBreak: "pageBreak", insertField: "insertField", insertLoop: "insertLoop", insertCondition: "insertCondition", toggleMode: "toggleMode", preview: "preview" }, ngImport: i0, template: "<div class=\"core-docgen-toolbar-container\" role=\"toolbar\" aria-label=\"DocGen toolbar\">\r\n <!-- History -->\r\n <div role=\"group\" aria-label=\"History\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canUndo() || $disabled()\" title=\"Undo (Ctrl/Cmd+Z)\"\r\n (click)=\"undo.emit()\">\r\n \u21B6\r\n </button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canRedo() || $disabled()\" title=\"Redo (Shift+Ctrl/Cmd+Z)\"\r\n (click)=\"redo.emit()\">\r\n \u21B7\r\n </button>\r\n </div>\r\n\r\n <!-- Block format -->\r\n <div role=\"group\" aria-label=\"Block format\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openFormat()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Block format\"\r\n (click)=\"$openFormat.set(!$openFormat())\">\r\n Paragraph \u25BE\r\n </button>\r\n <div class=\"menu\" *ngIf=\"$openFormat()\">\r\n <button type=\"button\" class=\"mi\" (click)=\"onPickBlock('p')\">Paragraph</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h1')\">Heading 1</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h2')\">Heading 2</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h3')\">Heading 3</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Inline -->\r\n <div role=\"group\" aria-label=\"Inline\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Bold (Ctrl/Cmd+B)\" (click)=\"bold.emit()\">B</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Italic (Ctrl/Cmd+I)\" (click)=\"italic.emit()\"><i>I</i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Code\" (click)=\"code.emit()\"></></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Clear formatting\" (click)=\"clear.emit()\">\u2A2F</button>\r\n </div>\r\n\r\n <!-- Link -->\r\n <div role=\"group\" aria-label=\"Link\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert link\" (click)=\"link.emit()\">\uD83D\uDD17</button>\r\n </div>\r\n\r\n <!-- Image (split) -->\r\n <div role=\"group\" aria-label=\"Image\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openImage()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Upload image\" (click)=\"imageUpload.emit()\">\uD83D\uDDBC</button>\r\n <button type=\"button\" class=\"btn caret\" [disabled]=\"$disabled()\" title=\"More image options\"\r\n (click)=\"$openImage.set(!$openImage())\">\u25BE</button>\r\n <div class=\"menu\" *ngIf=\"$openImage()\">\r\n <button type=\"button\" class=\"mi\" (click)=\"imageUpload.emit()\">Upload from computer</button>\r\n <button type=\"button\" class=\"mi\" (click)=\"imageFromUrl.emit()\">Insert via URL</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Table grid -->\r\n <div role=\"group\" aria-label=\"Table\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openTable()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert table\" (click)=\"$openTable.set(!$openTable())\">\u25A6 \u25BE</button>\r\n <div class=\"menu table\" *ngIf=\"$openTable()\">\r\n <div class=\"grid\">\r\n @for (r of [1,2,3,4,5,6,7,8]; track r) {\r\n <div class=\"row\">\r\n @for (c of [1,2,3,4,5,6,7,8]; track c) {\r\n <button type=\"button\" class=\"cell\" title=\"{{r}}\u00D7{{c}}\" (click)=\"onPickTable(r,c)\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Lists & align -->\r\n <div role=\"group\" aria-label=\"Lists & alignment\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Bulleted list\" (click)=\"listToggle.emit('ul')\">\u2022 List</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Numbered list\" (click)=\"listToggle.emit('ol')\">1. List</button>\r\n <span class=\"sep\" aria-hidden=\"true\"></span>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align left\" (click)=\"align.emit('left')\">\u27F8</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align center\" (click)=\"align.emit('center')\">\u21D4</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align right\" (click)=\"align.emit('right')\">\u27F9</button>\r\n </div>\r\n\r\n <!-- Structure -->\r\n <div role=\"group\" aria-label=\"Structure\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Block quote\" (click)=\"quote.emit()\">\u275D \u275E</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Horizontal rule\" (click)=\"hr.emit()\">\u2014</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Page break\" (click)=\"pageBreak.emit()\">\u293F</button>\r\n </div>\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n <!-- Liquid-specific -->\r\n <div role=\"group\" aria-label=\"Liquid\" class=\"grp\">\r\n <select #fld class=\"select\" [disabled]=\"$disabled()\" (change)=\"onPickField(fld.value); fld.selectedIndex = 0\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of $fields(); track f) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert loop\" (click)=\"insertLoop.emit()\">+ Loop\u2026</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert condition\" (click)=\"insertCondition.emit()\">+ Condition\u2026</button>\r\n </div>\r\n\r\n <!-- Mode & preview -->\r\n <div role=\"group\" aria-label=\"Mode\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"onToggleMode()\">\r\n {{ $mode() === 'design' ? 'Design' : 'Source' }}\r\n </button>\r\n <button type=\"button\" class=\"btn ghost\" [disabled]=\"$disabled()\" title=\"Preview\" (click)=\"preview.emit()\">Preview</button>\r\n </div>\r\n</div>\r\n", styles: [".core-docgen-toolbar-container{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;overflow-x:auto}.core-docgen-toolbar-container .grp{display:inline-flex;gap:6px;align-items:center}.core-docgen-toolbar-container .sep{width:1px;height:18px;background:#e5e7eb;margin:0 2px}.core-docgen-toolbar-container .spacer{flex:1}.core-docgen-toolbar-container .btn,.core-docgen-toolbar-container .select{font:500 13px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;border:1px solid #d1d5db;background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer}.core-docgen-toolbar-container .btn[disabled],.core-docgen-toolbar-container .select[disabled]{opacity:.5;cursor:not-allowed}.core-docgen-toolbar-container .btn:hover:not([disabled]){border-color:#9ca3af}.core-docgen-toolbar-container .btn.ghost{background:#f9fafb}.core-docgen-toolbar-container .split{position:relative;display:inline-flex}.core-docgen-toolbar-container .split .btn.caret{width:28px;padding:0}.core-docgen-toolbar-container .menu{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 10px 24px #00000014;padding:6px;z-index:20;min-width:180px}.core-docgen-toolbar-container .menu .mi{display:block;width:100%;text-align:left;border:0;background:transparent;padding:6px 8px;border-radius:6px;cursor:pointer}.core-docgen-toolbar-container .menu .mi:hover{background:#f3f4f6}.core-docgen-toolbar-container .menu .mi.h{font-weight:700}.core-docgen-toolbar-container .menu.table{padding:10px;min-width:unset}.core-docgen-toolbar-container .menu.table .grid{display:grid;grid-auto-rows:min-content;gap:4px}.core-docgen-toolbar-container .menu.table .row{display:grid;grid-template-columns:repeat(8,18px);gap:4px}.core-docgen-toolbar-container .menu.table .cell{width:18px;height:18px;border:1px solid #d1d5db;background:#fff;border-radius:4px}.core-docgen-toolbar-container .menu.table .cell:hover{background:#e0e7ff;border-color:#a5b4fc}.core-docgen-toolbar-container .select{padding-right:28px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25127
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreDocgenToolbarComponent, isStandalone: true, selector: "core-docgen-toolbar", inputs: { $fields: { classPropertyName: "$fields", publicName: "$fields", isSignal: true, isRequired: false, transformFunction: null }, $disabled: { classPropertyName: "$disabled", publicName: "$disabled", isSignal: true, isRequired: false, transformFunction: null }, $mode: { classPropertyName: "$mode", publicName: "$mode", isSignal: true, isRequired: false, transformFunction: null }, $canUndo: { classPropertyName: "$canUndo", publicName: "$canUndo", isSignal: true, isRequired: false, transformFunction: null }, $canRedo: { classPropertyName: "$canRedo", publicName: "$canRedo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { undo: "undo", redo: "redo", formatBlock: "formatBlock", bold: "bold", italic: "italic", code: "code", clear: "clear", link: "link", imageUpload: "imageUpload", imageFromUrl: "imageFromUrl", insertTable: "insertTable", listToggle: "listToggle", align: "align", quote: "quote", hr: "hr", pageBreak: "pageBreak", insertField: "insertField", insertLoop: "insertLoop", insertCondition: "insertCondition", toggleMode: "toggleMode", preview: "preview", fgColor: "fgColor", bgColor: "bgColor", indent: "indent" }, ngImport: i0, template: "<div class=\"core-docgen-toolbar-container\" role=\"toolbar\" aria-label=\"DocGen toolbar\">\r\n <!-- RIBBON: History -->\r\n <div class=\"ribbon\" aria-label=\"History\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canUndo() || $disabled()\" [appTooltip]=\"'Undo (Ctrl/Cmd+Z)'\" (click)=\"undo.emit()\" aria-label=\"Undo\"><i class=\"bi bi-arrow-counterclockwise\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canRedo() || $disabled()\" [appTooltip]=\"'Redo (Shift+Ctrl/Cmd+Z)'\" (click)=\"redo.emit()\" aria-label=\"Redo\"><i class=\"bi bi-arrow-clockwise\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Block -->\r\n <div class=\"ribbon\" aria-label=\"Block format\">\r\n <div class=\"split\" [class.open]=\"$openFormat()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openFormat.set(!$openFormat())\" aria-label=\"Block format\"><i [appTooltip]=\"'Block format'\" class=\"bi bi-paragraph\"></i></button>\r\n @if ($openFormat()) {\r\n <div class=\"menu\">\r\n <button type=\"button\" class=\"mi\" (click)=\"onPickBlock('p')\"><i class=\"bi bi-paragraph\"></i> Paragraph</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h1')\">H1</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h2')\">H2</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h3')\">H3</button>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Indent (block) -->\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"onIndent('increase')\" aria-label=\"Increase indent\"><i [appTooltip]=\"'Increase indent (block)'\" class=\"bi bi-indent\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"onIndent('decrease')\" aria-label=\"Decrease indent\"><i [appTooltip]=\"'Decrease indent (block)'\" class=\"bi bi-unindent\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Inline -->\r\n <div class=\"ribbon\" aria-label=\"Inline\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"bold.emit()\" aria-pressed=\"false\" aria-label=\"Bold\"><i [appTooltip]=\"'Bold (Ctrl/Cmd+B)'\" class=\"bi bi-type-bold\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"italic.emit()\" aria-pressed=\"false\" aria-label=\"Italic\"><i [appTooltip]=\"'Italic (Ctrl/Cmd+I)'\" class=\"bi bi-type-italic\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"code.emit()\" aria-label=\"Code\"><i [appTooltip]=\"'Code'\" class=\"bi bi-code-slash\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"clear.emit()\" aria-label=\"Clear formatting\"><i [appTooltip]=\"'Clear inline formatting'\" class=\"bi bi-x\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Colors -->\r\n <div class=\"ribbon\" aria-label=\"Colors\">\r\n <div class=\"split\" [class.open]=\"$openFg()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openFg.set(!$openFg())\" aria-label=\"Text color\"><i [appTooltip]=\"'Text color'\" class=\"bi bi-palette\"></i></button>\r\n @if ($openFg()) {\r\n <div class=\"menu palette\">\r\n <div class=\"swatch-grid\">\r\n @for (c of fgPalette; track c) {\r\n <button type=\"button\" class=\"swatch\" [style.background]=c (click)=\"onPickFg(c)\" [title]=\"c\"></button>\r\n }\r\n <div class=\"row\">\r\n <input #fgci type=\"color\" class=\"color-input\" (input)=\"onPickFg(fgci.value)\" />\r\n <button class=\"mi\" (click)=\"onPickFg(null)\">Clear color</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"split\" [class.open]=\"$openBg()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openBg.set(!$openBg())\" aria-label=\"Highlight color\"><i [appTooltip]=\"'Highlight color'\" class=\"bi bi-palette-fill\"></i></button>\r\n @if ($openBg()) {\r\n <div class=\"menu palette\">\r\n <div class=\"swatch-grid\">\r\n @for (c of bgPalette; track c) {\r\n <button type=\"button\" class=\"swatch\" [style.background]=c (click)=\"onPickBg(c)\" [title]=\"c\"></button>\r\n }\r\n <div class=\"row\">\r\n <input #bgci type=\"color\" class=\"color-input\" (input)=\"onPickBg(bgci.value)\" />\r\n <button class=\"mi\" (click)=\"onPickBg(null)\">Clear highlight</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- RIBBON: Link & Media -->\r\n <div class=\"ribbon\" aria-label=\"Link & media\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"link.emit()\" aria-label=\"Insert link\"><i [appTooltip]=\"'Insert link'\" class=\"bi bi-link\"></i></button>\r\n\r\n <div class=\"split\" [class.open]=\"$openImage()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"imageUpload.emit()\" aria-label=\"Upload image\"><i [appTooltip]=\"'Upload image'\" class=\"bi bi-image\"></i></button>\r\n <button type=\"button\" class=\"btn caret\" [disabled]=\"$disabled()\" (click)=\"$openImage.set(!$openImage())\" aria-label=\"More image options\"><i [appTooltip]=\"'More image options'\" class=\"bi bi-caret-down-fill\"></i></button>\r\n @if ($openImage()) {\r\n <div class=\"menu\">\r\n <button type=\"button\" class=\"mi\" (click)=\"imageUpload.emit()\">Upload from computer</button>\r\n <button type=\"button\" class=\"mi\" (click)=\"imageFromUrl.emit()\">Insert via URL</button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- RIBBON: Table -->\r\n <div class=\"ribbon\" aria-label=\"Table\">\r\n <div class=\"split\" [class.open]=\"$openTable()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openTable.set(!$openTable())\" aria-label=\"Insert table\"><i [appTooltip]=\"'Insert table'\" class=\"bi bi-table\"></i></button>\r\n @if ($openTable()) {\r\n <div class=\"menu table\">\r\n <div class=\"grid\">\r\n @for (r of [1,2,3,4,5,6,7,8]; track r) {\r\n <div class=\"row\">\r\n @for (c of [1,2,3,4,5,6,7,8]; track c) {\r\n <button type=\"button\" class=\"cell\" title=\"{{r}}\u00D7{{c}}\" (click)=\"onPickTable(r,c)\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- RIBBON: Lists & Align -->\r\n <div class=\"ribbon\" aria-label=\"Lists & alignment\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" [appTooltip]=\"'Bulleted list'\" (click)=\"listToggle.emit('ul')\" aria-label=\"Bulleted list\">\u2022</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" [appTooltip]=\"'Numbered list'\" (click)=\"listToggle.emit('ol')\" aria-label=\"Numbered list\">1.</button>\r\n <span class=\"sep\" aria-hidden=\"true\"></span>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"align.emit('left')\" aria-label=\"Align left\"><i [appTooltip]=\"'Align left'\" class=\"bi bi-text-left\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"align.emit('center')\" aria-label=\"Align center\"><i [appTooltip]=\"'Align center'\" class=\"bi bi-text-center\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"align.emit('right')\" aria-label=\"Align right\"><i [appTooltip]=\"'Align right'\" class=\"bi bi-text-right\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Structure -->\r\n <div class=\"ribbon\" aria-label=\"Structure\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"quote.emit()\" aria-label=\"Block quote\"><i [appTooltip]=\"'Block quote'\" class=\"bi bi-quote\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"hr.emit()\" aria-label=\"Horizontal rule\"><i [appTooltip]=\"'Horizontal rule'\" class=\"bi bi-sign-turn-right\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"pageBreak.emit()\" aria-label=\"Page break\"><i [appTooltip]=\"'Page break'\" class=\"bi bi-file-break\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Liquid -->\r\n <div class=\"ribbon\" aria-label=\"Liquid\">\r\n <select #fld class=\"select\" [disabled]=\"$disabled()\" (change)=\"onPickField(fld.value); fld.selectedIndex = 0\" aria-label=\"Insert field\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of $fields(); track f) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"insertLoop.emit()\" aria-label=\"Insert loop\"><i [appTooltip]=\"'Insert loop'\" class=\"bi bi-arrow-repeat\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"insertCondition.emit()\" aria-label=\"Insert condition\"><i [appTooltip]=\"'Insert condition'\" class=\"bi bi-signpost-split\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Mode -->\r\n <div class=\"ribbon\" aria-label=\"Mode & preview\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" [appTooltip]=\"'Toggle Design/Source'\" (click)=\"onToggleMode()\" aria-label=\"Toggle mode\">\r\n @if ($mode() === 'design') {\r\n <i class=\"bi bi-pencil\"></i>\r\n } @else {\r\n <i class=\"bi bi-code-slash\"></i>\r\n }\r\n </button>\r\n <button type=\"button\" class=\"btn ghost\" [disabled]=\"$disabled()\" (click)=\"preview.emit()\" aria-label=\"Preview\"><i [appTooltip]=\"'Preview'\" class=\"bi bi-eye\"></i></button>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.core-docgen-toolbar-container{--ring: #e5e7eb;--muted: #f9fafb;--ink: #111827;--btn: #fff;--btn-b: #d1d5db;--btn-b-hover: #9ca3af;--shadow: 0 10px 24px rgba(0, 0, 0, .08);display:flex;flex-wrap:wrap;gap:8px 10px;align-items:stretch;padding:8px;border:1px solid var(--ring);background:#fff}.core-docgen-toolbar-container .ribbon{display:inline-flex;align-items:center;gap:6px;padding:6px;border:1px solid var(--ring);border-radius:10px;background:var(--muted)}.core-docgen-toolbar-container .sep{width:1px;height:18px;background:var(--ring);margin:0 2px}.core-docgen-toolbar-container .btn,.core-docgen-toolbar-container .select{font:600 13px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;border:1px solid var(--btn-b);background:var(--btn);color:var(--ink);border-radius:10px;padding:8px 10px;min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none}.core-docgen-toolbar-container .btn[disabled],.core-docgen-toolbar-container .select[disabled]{opacity:.5;cursor:not-allowed}.core-docgen-toolbar-container .btn:hover:not([disabled]){border-color:var(--btn-b-hover)}.core-docgen-toolbar-container .btn.ghost{background:#f3f4f6}.core-docgen-toolbar-container .split{position:relative;display:inline-flex}.core-docgen-toolbar-container .split .btn.caret{width:30px;padding:0}.core-docgen-toolbar-container .menu{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid var(--ring);border-radius:10px;box-shadow:var(--shadow);padding:8px;z-index:20;min-width:180px}.core-docgen-toolbar-container .menu .mi{display:block;width:100%;text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:8px;cursor:pointer}.core-docgen-toolbar-container .menu .mi:hover{background:#f3f4f6}.core-docgen-toolbar-container .menu .mi.h{font-weight:700}.core-docgen-toolbar-container .menu.table{padding:10px;min-width:unset}.core-docgen-toolbar-container .menu.table .grid{display:grid;gap:4px}.core-docgen-toolbar-container .menu.table .row{display:grid;grid-template-columns:repeat(8,18px);gap:4px}.core-docgen-toolbar-container .menu.table .cell{width:18px;height:18px;border:1px solid #d1d5db;background:#fff;border-radius:4px}.core-docgen-toolbar-container .menu.table .cell:hover{background:#e0e7ff;border-color:#a5b4fc}.core-docgen-toolbar-container .menu.palette{min-width:220px}.core-docgen-toolbar-container .swatch-grid{display:grid;grid-template-columns:repeat(9,20px);gap:6px;align-items:center}.core-docgen-toolbar-container .swatch{width:20px;height:20px;border-radius:4px;border:1px solid #d1d5db;cursor:pointer}.core-docgen-toolbar-container .swatch:hover{outline:2px solid #a5b4fc}.core-docgen-toolbar-container .color-input{width:100%;height:28px;border:1px solid #d1d5db;border-radius:6px}.core-docgen-toolbar-container .row{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.core-docgen-toolbar-container .select{padding-right:28px;min-height:36px}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25110
25128
|
}
|
|
25111
25129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreDocgenToolbarComponent, decorators: [{
|
|
25112
25130
|
type: Component,
|
|
25113
|
-
args: [{ selector: 'core-docgen-toolbar', imports: [
|
|
25131
|
+
args: [{ selector: 'core-docgen-toolbar', imports: [
|
|
25132
|
+
TooltipDirective
|
|
25133
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"core-docgen-toolbar-container\" role=\"toolbar\" aria-label=\"DocGen toolbar\">\r\n <!-- RIBBON: History -->\r\n <div class=\"ribbon\" aria-label=\"History\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canUndo() || $disabled()\" [appTooltip]=\"'Undo (Ctrl/Cmd+Z)'\" (click)=\"undo.emit()\" aria-label=\"Undo\"><i class=\"bi bi-arrow-counterclockwise\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canRedo() || $disabled()\" [appTooltip]=\"'Redo (Shift+Ctrl/Cmd+Z)'\" (click)=\"redo.emit()\" aria-label=\"Redo\"><i class=\"bi bi-arrow-clockwise\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Block -->\r\n <div class=\"ribbon\" aria-label=\"Block format\">\r\n <div class=\"split\" [class.open]=\"$openFormat()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openFormat.set(!$openFormat())\" aria-label=\"Block format\"><i [appTooltip]=\"'Block format'\" class=\"bi bi-paragraph\"></i></button>\r\n @if ($openFormat()) {\r\n <div class=\"menu\">\r\n <button type=\"button\" class=\"mi\" (click)=\"onPickBlock('p')\"><i class=\"bi bi-paragraph\"></i> Paragraph</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h1')\">H1</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h2')\">H2</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h3')\">H3</button>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Indent (block) -->\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"onIndent('increase')\" aria-label=\"Increase indent\"><i [appTooltip]=\"'Increase indent (block)'\" class=\"bi bi-indent\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"onIndent('decrease')\" aria-label=\"Decrease indent\"><i [appTooltip]=\"'Decrease indent (block)'\" class=\"bi bi-unindent\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Inline -->\r\n <div class=\"ribbon\" aria-label=\"Inline\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"bold.emit()\" aria-pressed=\"false\" aria-label=\"Bold\"><i [appTooltip]=\"'Bold (Ctrl/Cmd+B)'\" class=\"bi bi-type-bold\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"italic.emit()\" aria-pressed=\"false\" aria-label=\"Italic\"><i [appTooltip]=\"'Italic (Ctrl/Cmd+I)'\" class=\"bi bi-type-italic\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"code.emit()\" aria-label=\"Code\"><i [appTooltip]=\"'Code'\" class=\"bi bi-code-slash\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"clear.emit()\" aria-label=\"Clear formatting\"><i [appTooltip]=\"'Clear inline formatting'\" class=\"bi bi-x\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Colors -->\r\n <div class=\"ribbon\" aria-label=\"Colors\">\r\n <div class=\"split\" [class.open]=\"$openFg()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openFg.set(!$openFg())\" aria-label=\"Text color\"><i [appTooltip]=\"'Text color'\" class=\"bi bi-palette\"></i></button>\r\n @if ($openFg()) {\r\n <div class=\"menu palette\">\r\n <div class=\"swatch-grid\">\r\n @for (c of fgPalette; track c) {\r\n <button type=\"button\" class=\"swatch\" [style.background]=c (click)=\"onPickFg(c)\" [title]=\"c\"></button>\r\n }\r\n <div class=\"row\">\r\n <input #fgci type=\"color\" class=\"color-input\" (input)=\"onPickFg(fgci.value)\" />\r\n <button class=\"mi\" (click)=\"onPickFg(null)\">Clear color</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"split\" [class.open]=\"$openBg()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openBg.set(!$openBg())\" aria-label=\"Highlight color\"><i [appTooltip]=\"'Highlight color'\" class=\"bi bi-palette-fill\"></i></button>\r\n @if ($openBg()) {\r\n <div class=\"menu palette\">\r\n <div class=\"swatch-grid\">\r\n @for (c of bgPalette; track c) {\r\n <button type=\"button\" class=\"swatch\" [style.background]=c (click)=\"onPickBg(c)\" [title]=\"c\"></button>\r\n }\r\n <div class=\"row\">\r\n <input #bgci type=\"color\" class=\"color-input\" (input)=\"onPickBg(bgci.value)\" />\r\n <button class=\"mi\" (click)=\"onPickBg(null)\">Clear highlight</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- RIBBON: Link & Media -->\r\n <div class=\"ribbon\" aria-label=\"Link & media\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"link.emit()\" aria-label=\"Insert link\"><i [appTooltip]=\"'Insert link'\" class=\"bi bi-link\"></i></button>\r\n\r\n <div class=\"split\" [class.open]=\"$openImage()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"imageUpload.emit()\" aria-label=\"Upload image\"><i [appTooltip]=\"'Upload image'\" class=\"bi bi-image\"></i></button>\r\n <button type=\"button\" class=\"btn caret\" [disabled]=\"$disabled()\" (click)=\"$openImage.set(!$openImage())\" aria-label=\"More image options\"><i [appTooltip]=\"'More image options'\" class=\"bi bi-caret-down-fill\"></i></button>\r\n @if ($openImage()) {\r\n <div class=\"menu\">\r\n <button type=\"button\" class=\"mi\" (click)=\"imageUpload.emit()\">Upload from computer</button>\r\n <button type=\"button\" class=\"mi\" (click)=\"imageFromUrl.emit()\">Insert via URL</button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- RIBBON: Table -->\r\n <div class=\"ribbon\" aria-label=\"Table\">\r\n <div class=\"split\" [class.open]=\"$openTable()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"$openTable.set(!$openTable())\" aria-label=\"Insert table\"><i [appTooltip]=\"'Insert table'\" class=\"bi bi-table\"></i></button>\r\n @if ($openTable()) {\r\n <div class=\"menu table\">\r\n <div class=\"grid\">\r\n @for (r of [1,2,3,4,5,6,7,8]; track r) {\r\n <div class=\"row\">\r\n @for (c of [1,2,3,4,5,6,7,8]; track c) {\r\n <button type=\"button\" class=\"cell\" title=\"{{r}}\u00D7{{c}}\" (click)=\"onPickTable(r,c)\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- RIBBON: Lists & Align -->\r\n <div class=\"ribbon\" aria-label=\"Lists & alignment\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" [appTooltip]=\"'Bulleted list'\" (click)=\"listToggle.emit('ul')\" aria-label=\"Bulleted list\">\u2022</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" [appTooltip]=\"'Numbered list'\" (click)=\"listToggle.emit('ol')\" aria-label=\"Numbered list\">1.</button>\r\n <span class=\"sep\" aria-hidden=\"true\"></span>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"align.emit('left')\" aria-label=\"Align left\"><i [appTooltip]=\"'Align left'\" class=\"bi bi-text-left\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"align.emit('center')\" aria-label=\"Align center\"><i [appTooltip]=\"'Align center'\" class=\"bi bi-text-center\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"align.emit('right')\" aria-label=\"Align right\"><i [appTooltip]=\"'Align right'\" class=\"bi bi-text-right\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Structure -->\r\n <div class=\"ribbon\" aria-label=\"Structure\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"quote.emit()\" aria-label=\"Block quote\"><i [appTooltip]=\"'Block quote'\" class=\"bi bi-quote\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"hr.emit()\" aria-label=\"Horizontal rule\"><i [appTooltip]=\"'Horizontal rule'\" class=\"bi bi-sign-turn-right\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"pageBreak.emit()\" aria-label=\"Page break\"><i [appTooltip]=\"'Page break'\" class=\"bi bi-file-break\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Liquid -->\r\n <div class=\"ribbon\" aria-label=\"Liquid\">\r\n <select #fld class=\"select\" [disabled]=\"$disabled()\" (change)=\"onPickField(fld.value); fld.selectedIndex = 0\" aria-label=\"Insert field\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of $fields(); track f) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"insertLoop.emit()\" aria-label=\"Insert loop\"><i [appTooltip]=\"'Insert loop'\" class=\"bi bi-arrow-repeat\"></i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"insertCondition.emit()\" aria-label=\"Insert condition\"><i [appTooltip]=\"'Insert condition'\" class=\"bi bi-signpost-split\"></i></button>\r\n </div>\r\n\r\n <!-- RIBBON: Mode -->\r\n <div class=\"ribbon\" aria-label=\"Mode & preview\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" [appTooltip]=\"'Toggle Design/Source'\" (click)=\"onToggleMode()\" aria-label=\"Toggle mode\">\r\n @if ($mode() === 'design') {\r\n <i class=\"bi bi-pencil\"></i>\r\n } @else {\r\n <i class=\"bi bi-code-slash\"></i>\r\n }\r\n </button>\r\n <button type=\"button\" class=\"btn ghost\" [disabled]=\"$disabled()\" (click)=\"preview.emit()\" aria-label=\"Preview\"><i [appTooltip]=\"'Preview'\" class=\"bi bi-eye\"></i></button>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.core-docgen-toolbar-container{--ring: #e5e7eb;--muted: #f9fafb;--ink: #111827;--btn: #fff;--btn-b: #d1d5db;--btn-b-hover: #9ca3af;--shadow: 0 10px 24px rgba(0, 0, 0, .08);display:flex;flex-wrap:wrap;gap:8px 10px;align-items:stretch;padding:8px;border:1px solid var(--ring);background:#fff}.core-docgen-toolbar-container .ribbon{display:inline-flex;align-items:center;gap:6px;padding:6px;border:1px solid var(--ring);border-radius:10px;background:var(--muted)}.core-docgen-toolbar-container .sep{width:1px;height:18px;background:var(--ring);margin:0 2px}.core-docgen-toolbar-container .btn,.core-docgen-toolbar-container .select{font:600 13px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;border:1px solid var(--btn-b);background:var(--btn);color:var(--ink);border-radius:10px;padding:8px 10px;min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none}.core-docgen-toolbar-container .btn[disabled],.core-docgen-toolbar-container .select[disabled]{opacity:.5;cursor:not-allowed}.core-docgen-toolbar-container .btn:hover:not([disabled]){border-color:var(--btn-b-hover)}.core-docgen-toolbar-container .btn.ghost{background:#f3f4f6}.core-docgen-toolbar-container .split{position:relative;display:inline-flex}.core-docgen-toolbar-container .split .btn.caret{width:30px;padding:0}.core-docgen-toolbar-container .menu{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid var(--ring);border-radius:10px;box-shadow:var(--shadow);padding:8px;z-index:20;min-width:180px}.core-docgen-toolbar-container .menu .mi{display:block;width:100%;text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:8px;cursor:pointer}.core-docgen-toolbar-container .menu .mi:hover{background:#f3f4f6}.core-docgen-toolbar-container .menu .mi.h{font-weight:700}.core-docgen-toolbar-container .menu.table{padding:10px;min-width:unset}.core-docgen-toolbar-container .menu.table .grid{display:grid;gap:4px}.core-docgen-toolbar-container .menu.table .row{display:grid;grid-template-columns:repeat(8,18px);gap:4px}.core-docgen-toolbar-container .menu.table .cell{width:18px;height:18px;border:1px solid #d1d5db;background:#fff;border-radius:4px}.core-docgen-toolbar-container .menu.table .cell:hover{background:#e0e7ff;border-color:#a5b4fc}.core-docgen-toolbar-container .menu.palette{min-width:220px}.core-docgen-toolbar-container .swatch-grid{display:grid;grid-template-columns:repeat(9,20px);gap:6px;align-items:center}.core-docgen-toolbar-container .swatch{width:20px;height:20px;border-radius:4px;border:1px solid #d1d5db;cursor:pointer}.core-docgen-toolbar-container .swatch:hover{outline:2px solid #a5b4fc}.core-docgen-toolbar-container .color-input{width:100%;height:28px;border:1px solid #d1d5db;border-radius:6px}.core-docgen-toolbar-container .row{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.core-docgen-toolbar-container .select{padding-right:28px;min-height:36px}\n"] }]
|
|
25114
25134
|
}] });
|
|
25115
25135
|
|
|
25116
25136
|
;
|
|
@@ -25668,7 +25688,7 @@ class CoreLiquidWysiwygComponent extends CoreFormControlBaseComponent {
|
|
|
25668
25688
|
multi: true,
|
|
25669
25689
|
useExisting: forwardRef(() => CoreLiquidWysiwygComponent),
|
|
25670
25690
|
}
|
|
25671
|
-
], viewQueries: [{ propertyName: "$designRef", first: true, predicate: ["design"], descendants: true, isSignal: true }, { propertyName: "$sourceRef", first: true, predicate: ["source"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-liquid-wysiwyg-container\">\r\n\r\n <!-- <div class=\"dg-toolbar\" role=\"toolbar\" aria-label=\"DocGen tools\">\r\n <select #fld class=\"form-control dg-select\"\r\n (change)=\"insertChip(fld.value); fld.selectedIndex = 0\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of ($liquidOptions().fields ?? []); track $index) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertLoop()\">+ Loop\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertIf()\">+ Condition\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertPageBreak()\">Page Break</button>\r\n\r\n <span class=\"dg-spacer\"></span>\r\n\r\n <button type=\"button\" class=\"dg-btn ghost\" (click)=\"onToggleSource()\">\r\n {{ $showSource() ? 'Design' : 'Source' }}\r\n </button>\r\n </div> -->\r\n\r\n <core-docgen-toolbar\r\n [$fields]=\"$liquidOptions().fields!\"\r\n [$disabled]=\"disabled\"\r\n [$mode]=\"$showSource() ? 'source' : 'design'\"\r\n [$canUndo]=\"$canUndo()\"\r\n [$canRedo]=\"$canRedo()\"\r\n\r\n (undo)=\"onUndo()\"\r\n (redo)=\"onRedo()\"\r\n (formatBlock)=\"applyBlock($event)\"\r\n (bold)=\"wrapInline('strong')\"\r\n (italic)=\"wrapInline('em')\"\r\n (code)=\"wrapInline('code')\"\r\n (clear)=\"clearFormatting()\"\r\n\r\n (link)=\"openLinkDialog()\"\r\n (imageUpload)=\"triggerImageUpload()\"\r\n (imageFromUrl)=\"openImageUrlDialog()\"\r\n\r\n (insertTable)=\"insertTable($event)\"\r\n (listToggle)=\"toggleList($event)\"\r\n (align)=\"setAlign($event)\"\r\n (quote)=\"insertQuote()\"\r\n (hr)=\"insertHr()\"\r\n (pageBreak)=\"onInsertPageBreak()\"\r\n\r\n (insertField)=\"insertChip($event)\"\r\n (insertLoop)=\"onInsertLoop()\"\r\n (insertCondition)=\"onInsertIf()\"\r\n\r\n (toggleMode)=\"onToggleSource()\"\r\n (preview)=\"previewNow()\"\r\n />\r\n\r\n <!-- Design surface (active only when !$showSource()) -->\r\n <div #design\r\n class=\"dg-design\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [attr.contenteditable]=\"(!$showSource() && !disabled && !readonly && !$readonly()) ? 'true' : 'false'\"\r\n [class.dg-locked]=\"$showSource()\"\r\n [attr.aria-hidden]=\"$showSource()\"\r\n (input)=\"!$showSource() && onDesignInput()\"\r\n (blur)=\"!$showSource() && onDesignBlur()\"\r\n (paste)=\"!$showSource() && onDesignPaste($event)\"\r\n aria-label=\"Template editor\">\r\n </div>\r\n\r\n <!-- Source view (active only when $showSource()) -->\r\n @if ($showSource()) {\r\n <textarea #source\r\n class=\"dg-source\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [readOnly]=\"!$showSource() || disabled || readonly || $readonly()\"\r\n [value]=\"value\"\r\n (input)=\"onSourceInput($event)\"></textarea>\r\n }\r\n\r\n</div>", styles: [".core-liquid-wysiwyg-container .dg-toolbar{display:flex;gap:8px;align-items:center;padding:6px 0;overflow-x:auto}.core-liquid-wysiwyg-container .dg-select,.core-liquid-wysiwyg-container .dg-btn{border:1px solid #ccc;background:#fff;padding:6px 10px}.core-liquid-wysiwyg-container .dg-select{max-width:220px;min-width:0}.core-liquid-wysiwyg-container .dg-btn.ghost{background:#fff}.core-liquid-wysiwyg-container .dg-spacer{flex:1}.core-liquid-wysiwyg-container .dg-design{border:1px solid #ddd;padding:10px;background:#fff;white-space:pre-wrap;word-break:break-word}.core-liquid-wysiwyg-container .dg-source{width:100%;border:1px solid #ddd;padding:10px;background:#fff}.core-liquid-wysiwyg-container .dg-chip{display:inline-flex;align-items:center;white-space:nowrap;padding:2px 10px;border-radius:999px;border:1px solid #cfe0ff;background:#eef4ff;color:#0b3d91;font:600 12px/1.6 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0 2px;vertical-align:baseline;-webkit-user-select:none;user-select:none;cursor:default}.core-liquid-wysiwyg-container .dg-chip:before,.core-liquid-wysiwyg-container .dg-chip:after{opacity:.75;color:#6b7da6;font-weight:700;letter-spacing:.4px}.core-liquid-wysiwyg-container .dg-chip:before{content:\"{{\";margin-right:6px}.core-liquid-wysiwyg-container .dg-chip:after{content:\"}}\";margin-left:6px}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline:2px solid #2b6cb0;outline-offset:2px}.core-liquid-wysiwyg-container .dg-chip:hover{border-color:#a9c6ff}.core-liquid-wysiwyg-container .dg-chip[aria-disabled=true]{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#fff1f2;border-color:#fecdd3;color:#b91c1c}@media (prefers-color-scheme: dark){.core-liquid-wysiwyg-container .dg-chip{background:#20324f;border-color:#2b3e62;color:#cfe3ff}.core-liquid-wysiwyg-container .dg-chip__braces{color:#8ea8d8}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline-color:#7aa2ff}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#3a1f22;border-color:#5b2b31;color:#ffb4b9}}.core-liquid-wysiwyg-container .dg-chip:first-child{margin-left:0}.core-liquid-wysiwyg-container .dg-loop,.core-liquid-wysiwyg-container .dg-if{border:1px solid #cfd8dc;border-radius:8px;padding:6px;margin:8px 0;background:#f8fafc}.core-liquid-wysiwyg-container .dg-loop__label,.core-liquid-wysiwyg-container .dg-if__label{font:700 12px/1 system-ui;color:#37474f;margin-bottom:4px}.core-liquid-wysiwyg-container .dg-pagebreak{border:1px dashed #bbb;color:#777;text-align:center;padding:6px;margin:8px 0}\n"], dependencies: [{ kind: "component", type: CoreDocgenToolbarComponent, selector: "core-docgen-toolbar", inputs: ["$fields", "$disabled", "$mode", "$canUndo", "$canRedo"], outputs: ["undo", "redo", "formatBlock", "bold", "italic", "code", "clear", "link", "imageUpload", "imageFromUrl", "insertTable", "listToggle", "align", "quote", "hr", "pageBreak", "insertField", "insertLoop", "insertCondition", "toggleMode", "preview"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
25691
|
+
], viewQueries: [{ propertyName: "$designRef", first: true, predicate: ["design"], descendants: true, isSignal: true }, { propertyName: "$sourceRef", first: true, predicate: ["source"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-liquid-wysiwyg-container\">\r\n\r\n <!-- <div class=\"dg-toolbar\" role=\"toolbar\" aria-label=\"DocGen tools\">\r\n <select #fld class=\"form-control dg-select\"\r\n (change)=\"insertChip(fld.value); fld.selectedIndex = 0\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of ($liquidOptions().fields ?? []); track $index) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertLoop()\">+ Loop\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertIf()\">+ Condition\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertPageBreak()\">Page Break</button>\r\n\r\n <span class=\"dg-spacer\"></span>\r\n\r\n <button type=\"button\" class=\"dg-btn ghost\" (click)=\"onToggleSource()\">\r\n {{ $showSource() ? 'Design' : 'Source' }}\r\n </button>\r\n </div> -->\r\n\r\n <core-docgen-toolbar\r\n [$fields]=\"$liquidOptions().fields!\"\r\n [$disabled]=\"disabled\"\r\n [$mode]=\"$showSource() ? 'source' : 'design'\"\r\n [$canUndo]=\"$canUndo()\"\r\n [$canRedo]=\"$canRedo()\"\r\n\r\n (undo)=\"onUndo()\"\r\n (redo)=\"onRedo()\"\r\n (formatBlock)=\"applyBlock($event)\"\r\n (bold)=\"wrapInline('strong')\"\r\n (italic)=\"wrapInline('em')\"\r\n (code)=\"wrapInline('code')\"\r\n (clear)=\"clearFormatting()\"\r\n\r\n (link)=\"openLinkDialog()\"\r\n (imageUpload)=\"triggerImageUpload()\"\r\n (imageFromUrl)=\"openImageUrlDialog()\"\r\n\r\n (insertTable)=\"insertTable($event)\"\r\n (listToggle)=\"toggleList($event)\"\r\n (align)=\"setAlign($event)\"\r\n (quote)=\"insertQuote()\"\r\n (hr)=\"insertHr()\"\r\n (pageBreak)=\"onInsertPageBreak()\"\r\n\r\n (insertField)=\"insertChip($event)\"\r\n (insertLoop)=\"onInsertLoop()\"\r\n (insertCondition)=\"onInsertIf()\"\r\n\r\n (toggleMode)=\"onToggleSource()\"\r\n (preview)=\"previewNow()\"\r\n />\r\n\r\n <!-- Design surface (active only when !$showSource()) -->\r\n <div #design\r\n class=\"dg-design\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [attr.contenteditable]=\"(!$showSource() && !disabled && !readonly && !$readonly()) ? 'true' : 'false'\"\r\n [class.dg-locked]=\"$showSource()\"\r\n [attr.aria-hidden]=\"$showSource()\"\r\n (input)=\"!$showSource() && onDesignInput()\"\r\n (blur)=\"!$showSource() && onDesignBlur()\"\r\n (paste)=\"!$showSource() && onDesignPaste($event)\"\r\n aria-label=\"Template editor\">\r\n </div>\r\n\r\n <!-- Source view (active only when $showSource()) -->\r\n @if ($showSource()) {\r\n <textarea #source\r\n class=\"dg-source\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [readOnly]=\"!$showSource() || disabled || readonly || $readonly()\"\r\n [value]=\"value\"\r\n (input)=\"onSourceInput($event)\"></textarea>\r\n }\r\n\r\n</div>", styles: [".core-liquid-wysiwyg-container .dg-toolbar{display:flex;gap:8px;align-items:center;padding:6px 0;overflow-x:auto}.core-liquid-wysiwyg-container .dg-select,.core-liquid-wysiwyg-container .dg-btn{border:1px solid #ccc;background:#fff;padding:6px 10px}.core-liquid-wysiwyg-container .dg-select{max-width:220px;min-width:0}.core-liquid-wysiwyg-container .dg-btn.ghost{background:#fff}.core-liquid-wysiwyg-container .dg-spacer{flex:1}.core-liquid-wysiwyg-container .dg-design{border:1px solid #ddd;padding:10px;background:#fff;white-space:pre-wrap;word-break:break-word}.core-liquid-wysiwyg-container .dg-source{width:100%;border:1px solid #ddd;padding:10px;background:#fff}.core-liquid-wysiwyg-container .dg-chip{display:inline-flex;align-items:center;white-space:nowrap;padding:2px 10px;border-radius:999px;border:1px solid #cfe0ff;background:#eef4ff;color:#0b3d91;font:600 12px/1.6 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0 2px;vertical-align:baseline;-webkit-user-select:none;user-select:none;cursor:default}.core-liquid-wysiwyg-container .dg-chip:before,.core-liquid-wysiwyg-container .dg-chip:after{opacity:.75;color:#6b7da6;font-weight:700;letter-spacing:.4px}.core-liquid-wysiwyg-container .dg-chip:before{content:\"{{\";margin-right:6px}.core-liquid-wysiwyg-container .dg-chip:after{content:\"}}\";margin-left:6px}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline:2px solid #2b6cb0;outline-offset:2px}.core-liquid-wysiwyg-container .dg-chip:hover{border-color:#a9c6ff}.core-liquid-wysiwyg-container .dg-chip[aria-disabled=true]{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#fff1f2;border-color:#fecdd3;color:#b91c1c}@media (prefers-color-scheme: dark){.core-liquid-wysiwyg-container .dg-chip{background:#20324f;border-color:#2b3e62;color:#cfe3ff}.core-liquid-wysiwyg-container .dg-chip__braces{color:#8ea8d8}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline-color:#7aa2ff}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#3a1f22;border-color:#5b2b31;color:#ffb4b9}}.core-liquid-wysiwyg-container .dg-chip:first-child{margin-left:0}.core-liquid-wysiwyg-container .dg-loop,.core-liquid-wysiwyg-container .dg-if{border:1px solid #cfd8dc;border-radius:8px;padding:6px;margin:8px 0;background:#f8fafc}.core-liquid-wysiwyg-container .dg-loop__label,.core-liquid-wysiwyg-container .dg-if__label{font:700 12px/1 system-ui;color:#37474f;margin-bottom:4px}.core-liquid-wysiwyg-container .dg-pagebreak{border:1px dashed #bbb;color:#777;text-align:center;padding:6px;margin:8px 0}\n"], dependencies: [{ kind: "component", type: CoreDocgenToolbarComponent, selector: "core-docgen-toolbar", inputs: ["$fields", "$disabled", "$mode", "$canUndo", "$canRedo"], outputs: ["undo", "redo", "formatBlock", "bold", "italic", "code", "clear", "link", "imageUpload", "imageFromUrl", "insertTable", "listToggle", "align", "quote", "hr", "pageBreak", "insertField", "insertLoop", "insertCondition", "toggleMode", "preview", "fgColor", "bgColor", "indent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
25672
25692
|
}
|
|
25673
25693
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLiquidWysiwygComponent, decorators: [{
|
|
25674
25694
|
type: Component,
|
|
@@ -26274,7 +26294,7 @@ class CorePageEditComponent {
|
|
|
26274
26294
|
//this.responseService.resolve(body);
|
|
26275
26295
|
if ((body.statusCode = 200)) {
|
|
26276
26296
|
/* #region Exclude sections with flag addModeOnly=true */
|
|
26277
|
-
if (!!body.innerBody
|
|
26297
|
+
if (!!body.innerBody?.id) {
|
|
26278
26298
|
// remove relevant controls from form group
|
|
26279
26299
|
const addModeOnlySections = this.sections.filter((x) => !!x.addModeOnly);
|
|
26280
26300
|
addModeOnlySections.map((addModeOnlySection) => {
|
|
@@ -26378,6 +26398,9 @@ class CorePageEditComponent {
|
|
|
26378
26398
|
if (!!this.width) {
|
|
26379
26399
|
this.container.nativeElement.style.setProperty('--width', this.width + 'px');
|
|
26380
26400
|
}
|
|
26401
|
+
else {
|
|
26402
|
+
this.container.nativeElement.style.setProperty('--width', 'unset');
|
|
26403
|
+
}
|
|
26381
26404
|
this.containerBigger.nativeElement.style.setProperty('--height', '95%');
|
|
26382
26405
|
}
|
|
26383
26406
|
setTimeout(() => {
|
|
@@ -29553,7 +29576,7 @@ class FunctionEditComponent extends BaseEditComponent {
|
|
|
29553
29576
|
this.subscriptions.map(x => x?.unsubscribe());
|
|
29554
29577
|
}
|
|
29555
29578
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: FunctionEditComponent, deps: [{ token: DialogService }, { token: MultiLanguageService }, { token: FunctionEditService }, { token: ResponseService }, { token: CoreFormService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29556
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: FunctionEditComponent, isStandalone: true, selector: "app-function-edit", viewQueries: [{ propertyName: "pathHtmlTooltip", first: true, predicate: ["pathHtmlTooltip"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<core-page-edit *ngIf=\"!!sections.length\" [
|
|
29579
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: FunctionEditComponent, isStandalone: true, selector: "app-function-edit", viewQueries: [{ propertyName: "pathHtmlTooltip", first: true, predicate: ["pathHtmlTooltip"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<core-page-edit *ngIf=\"!!sections.length\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n\r\n\r\n<ng-template #pathHtmlTooltip>\r\n <div style=\"background-color: white; color: #848484; padding: 10px; max-width: 350px; font-size: 13px;\">\r\n\r\n @if ((mls.lang$ | async) === 'vi') {\r\n\r\n <strong>\u0110\u01B0\u1EDDng d\u1EABn \u0111i\u1EC1u h\u01B0\u1EDBng \u0111\u1ED9ng:</strong><br />\r\n S\u1EED d\u1EE5ng <code>@param$</code> \u0111\u1EC3 \u0111\u1EA1i di\u1EC7n cho c\u00E1c \u0111o\u1EA1n URL c\u00F3 th\u1EC3 thay \u0111\u1ED5i.<br /><br />\r\n\r\n <strong>V\u00ED d\u1EE5:</strong><br />\r\n <ul style=\"padding-left: 18px; margin: 0;\">\r\n <li>\r\n <code>/cms/profile/edit/@param$</code><br />\r\n \u2192 Kh\u1EDBp v\u1EDBi <code>/cms/profile/edit/123</code>\r\n </li>\r\n <li>\r\n <code>/cms/view/@param$/details/@param$</code><br />\r\n \u2192 Kh\u1EDBp v\u1EDBi <code>/cms/view/abc/details/456</code>\r\n </li>\r\n <li>\r\n <code>/cms/system/language/(corePageListAux:@param$;listInstance=@param$)</code><br />\r\n \u2192 Kh\u1EDBp v\u1EDBi <code>/cms/system/language/(corePageListAux:MA==;listInstance=17494)</code>\r\n </li>\r\n </ul>\r\n\r\n <br />\r\n B\u1EA1n c\u00F3 th\u1EC3 s\u1EED d\u1EE5ng nhi\u1EC1u <code>@param$</code> trong m\u1ED9t \u0111\u01B0\u1EDDng d\u1EABn.\r\n\r\n @if (!appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION) {\r\n N\u1EBFu \u0111\u01B0\u1EDDng d\u1EABn l\u00E0 c\u1ED1 \u0111\u1ECBnh, h\u00E3y b\u1EADt \u00F4 <strong>T\u01B0\u01A1ng \u1EE9ng to\u00E0n b\u1ED9</strong>.\r\n }\r\n\r\n } @else {\r\n\r\n <strong>Dynamic Navigation Path:</strong><br />\r\n Use <code>@param$</code> as a placeholder to represent dynamic segments in the URL.<br /><br />\r\n\r\n <strong>Examples:</strong><br />\r\n <ul style=\"padding-left: 18px; margin: 0;\">\r\n <li>\r\n <code>/cms/profile/edit/@param$</code><br />\r\n \u2192 Matches <code>/cms/profile/edit/123</code>\r\n </li>\r\n <li>\r\n <code>/cms/view/@param$/details/@param$</code><br />\r\n \u2192 Matches <code>/cms/view/abc/details/456</code>\r\n </li>\r\n <li>\r\n <code>/cms/system/language/(corePageListAux:@param$;listInstance=@param$)</code><br />\r\n \u2192 Matches <code>/cms/system/language/(corePageListAux:MA==;listInstance=17494)</code>\r\n </li>\r\n </ul>\r\n\r\n <br />\r\n You can use multiple <code>@param$</code> in a single path.\r\n @if (!appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION) {\r\n If the route is fully static, enable the <strong>Path full match</strong> checkbox.\r\n }\r\n\r\n }\r\n\r\n\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CorePageEditComponent, selector: "core-page-edit", inputs: ["stayAfterSubmit", "width", "entityTable", "hasIdOfStringType", "captionCode", "leftInputSections", "leftInputSectionsFlexSize", "sections", "normalMode", "bottomTemplateRef", "autoGetByIdOff", "autoSubmitLogicOff", "autoCancelLogicOff", "customFormButtonItems", "mixedMode", "checkError$", "showSaveButton", "disableSaveButton", "disableCancelButton", "forceListRefreshOnCreateOrUpdate", "crud", "entityUniqueIndexs", "idAsInput", "id", "hideButtons"], outputs: ["submitLogic", "onFormCreated", "onSubmitSuccess", "onButtonClick", "cancelLogic", "onInitialValueStringReady"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
29557
29580
|
}
|
|
29558
29581
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: FunctionEditComponent, decorators: [{
|
|
29559
29582
|
type: Component,
|
|
@@ -29561,7 +29584,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
29561
29584
|
AsyncPipe,
|
|
29562
29585
|
CommonModule,
|
|
29563
29586
|
CorePageEditComponent,
|
|
29564
|
-
], encapsulation: ViewEncapsulation.None, template: "<core-page-edit *ngIf=\"!!sections.length\" [
|
|
29587
|
+
], encapsulation: ViewEncapsulation.None, template: "<core-page-edit *ngIf=\"!!sections.length\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n\r\n\r\n<ng-template #pathHtmlTooltip>\r\n <div style=\"background-color: white; color: #848484; padding: 10px; max-width: 350px; font-size: 13px;\">\r\n\r\n @if ((mls.lang$ | async) === 'vi') {\r\n\r\n <strong>\u0110\u01B0\u1EDDng d\u1EABn \u0111i\u1EC1u h\u01B0\u1EDBng \u0111\u1ED9ng:</strong><br />\r\n S\u1EED d\u1EE5ng <code>@param$</code> \u0111\u1EC3 \u0111\u1EA1i di\u1EC7n cho c\u00E1c \u0111o\u1EA1n URL c\u00F3 th\u1EC3 thay \u0111\u1ED5i.<br /><br />\r\n\r\n <strong>V\u00ED d\u1EE5:</strong><br />\r\n <ul style=\"padding-left: 18px; margin: 0;\">\r\n <li>\r\n <code>/cms/profile/edit/@param$</code><br />\r\n \u2192 Kh\u1EDBp v\u1EDBi <code>/cms/profile/edit/123</code>\r\n </li>\r\n <li>\r\n <code>/cms/view/@param$/details/@param$</code><br />\r\n \u2192 Kh\u1EDBp v\u1EDBi <code>/cms/view/abc/details/456</code>\r\n </li>\r\n <li>\r\n <code>/cms/system/language/(corePageListAux:@param$;listInstance=@param$)</code><br />\r\n \u2192 Kh\u1EDBp v\u1EDBi <code>/cms/system/language/(corePageListAux:MA==;listInstance=17494)</code>\r\n </li>\r\n </ul>\r\n\r\n <br />\r\n B\u1EA1n c\u00F3 th\u1EC3 s\u1EED d\u1EE5ng nhi\u1EC1u <code>@param$</code> trong m\u1ED9t \u0111\u01B0\u1EDDng d\u1EABn.\r\n\r\n @if (!appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION) {\r\n N\u1EBFu \u0111\u01B0\u1EDDng d\u1EABn l\u00E0 c\u1ED1 \u0111\u1ECBnh, h\u00E3y b\u1EADt \u00F4 <strong>T\u01B0\u01A1ng \u1EE9ng to\u00E0n b\u1ED9</strong>.\r\n }\r\n\r\n } @else {\r\n\r\n <strong>Dynamic Navigation Path:</strong><br />\r\n Use <code>@param$</code> as a placeholder to represent dynamic segments in the URL.<br /><br />\r\n\r\n <strong>Examples:</strong><br />\r\n <ul style=\"padding-left: 18px; margin: 0;\">\r\n <li>\r\n <code>/cms/profile/edit/@param$</code><br />\r\n \u2192 Matches <code>/cms/profile/edit/123</code>\r\n </li>\r\n <li>\r\n <code>/cms/view/@param$/details/@param$</code><br />\r\n \u2192 Matches <code>/cms/view/abc/details/456</code>\r\n </li>\r\n <li>\r\n <code>/cms/system/language/(corePageListAux:@param$;listInstance=@param$)</code><br />\r\n \u2192 Matches <code>/cms/system/language/(corePageListAux:MA==;listInstance=17494)</code>\r\n </li>\r\n </ul>\r\n\r\n <br />\r\n You can use multiple <code>@param$</code> in a single path.\r\n @if (!appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION) {\r\n If the route is fully static, enable the <strong>Path full match</strong> checkbox.\r\n }\r\n\r\n }\r\n\r\n\r\n </div>\r\n</ng-template>\r\n" }]
|
|
29565
29588
|
}], ctorParameters: () => [{ type: DialogService }, { type: MultiLanguageService }, { type: FunctionEditService }, { type: ResponseService }, { type: CoreFormService }], propDecorators: { pathHtmlTooltip: [{
|
|
29566
29589
|
type: ViewChild,
|
|
29567
29590
|
args: ['pathHtmlTooltip']
|
|
@@ -32086,7 +32109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
32086
32109
|
const simpleChatRoutes = [
|
|
32087
32110
|
{
|
|
32088
32111
|
path: '',
|
|
32089
|
-
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-
|
|
32112
|
+
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-Du2PDR-u.mjs').then(m => m.SimpleChatComponent)
|
|
32090
32113
|
}
|
|
32091
32114
|
];
|
|
32092
32115
|
|
|
@@ -35417,11 +35440,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
35417
35440
|
const coreDocGenRoutes = [
|
|
35418
35441
|
{
|
|
35419
35442
|
path: 'template-list',
|
|
35420
|
-
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-
|
|
35443
|
+
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-Bd_34R-U.mjs').then(m => m.TemplateListComponent),
|
|
35421
35444
|
},
|
|
35422
35445
|
{
|
|
35423
35446
|
path: ":id",
|
|
35424
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-
|
|
35447
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-DH2hr-WQ.mjs').then(m => m.CoreTemplateEditorComponent),
|
|
35425
35448
|
canDeactivate: [CanDeactivateGuard]
|
|
35426
35449
|
},
|
|
35427
35450
|
{
|
|
@@ -35450,7 +35473,7 @@ const coreFormDesignRoutes = [
|
|
|
35450
35473
|
},
|
|
35451
35474
|
{
|
|
35452
35475
|
path: ':id',
|
|
35453
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-
|
|
35476
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-a1ho0-oS.mjs').then(function (n) { return n.c; }).then(m => m.CoreFormDesignComponent)
|
|
35454
35477
|
}
|
|
35455
35478
|
];
|
|
35456
35479
|
|
|
@@ -36344,7 +36367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
36344
36367
|
const coreNavigationTrackerRoutes = [
|
|
36345
36368
|
{
|
|
36346
36369
|
path: '',
|
|
36347
|
-
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-
|
|
36370
|
+
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-E3A09674.mjs').then(m => m.TrackerStudioComponent)
|
|
36348
36371
|
}
|
|
36349
36372
|
];
|
|
36350
36373
|
|
|
@@ -38980,29 +39003,29 @@ const coreWorkflowRoutes = [
|
|
|
38980
39003
|
{
|
|
38981
39004
|
path: 'form-assign/:id',
|
|
38982
39005
|
outlet: "formAssignAux",
|
|
38983
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-
|
|
39006
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-CUgB6Y-o.mjs').then(m => m.WfFormAssignComponent),
|
|
38984
39007
|
canDeactivate: [CanDeactivateGuard]
|
|
38985
39008
|
}
|
|
38986
39009
|
]
|
|
38987
39010
|
},
|
|
38988
39011
|
{
|
|
38989
39012
|
path: 'db-settings',
|
|
38990
|
-
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-
|
|
39013
|
+
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-DvZpSoNS.mjs').then(m => m.DbSettingsComponent)
|
|
38991
39014
|
},
|
|
38992
39015
|
{
|
|
38993
39016
|
path: 'workflow-consume',
|
|
38994
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-
|
|
39017
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-BkQU1iCl.mjs').then(m => m.CoreWorkflowConsumeComponent),
|
|
38995
39018
|
children: [
|
|
38996
39019
|
{
|
|
38997
39020
|
path: ':id',
|
|
38998
39021
|
outlet: "workflowConsume",
|
|
38999
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
39022
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-BJVtjmhk.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
39000
39023
|
}
|
|
39001
39024
|
]
|
|
39002
39025
|
},
|
|
39003
39026
|
{
|
|
39004
39027
|
path: 'workflow-consume/:id',
|
|
39005
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
39028
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-BJVtjmhk.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
39006
39029
|
},
|
|
39007
39030
|
{
|
|
39008
39031
|
path: 'workflow-group-edit/:id',
|
|
@@ -39012,17 +39035,17 @@ const coreWorkflowRoutes = [
|
|
|
39012
39035
|
},
|
|
39013
39036
|
{
|
|
39014
39037
|
path: 'design/:id',
|
|
39015
|
-
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-
|
|
39038
|
+
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-CJ1qavG9.mjs').then(m => m.wfDesignWrapperRoutes),
|
|
39016
39039
|
},
|
|
39017
39040
|
]
|
|
39018
39041
|
},
|
|
39019
39042
|
{
|
|
39020
39043
|
path: 'react/:id',
|
|
39021
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-
|
|
39044
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-C99XgtbF.mjs').then(m => m.WfInstanceStepReactComponent)
|
|
39022
39045
|
},
|
|
39023
39046
|
{
|
|
39024
39047
|
path: 'status/:id',
|
|
39025
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-
|
|
39048
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-C4UGaTAu.mjs').then(m => m.WfInstanceStatusComponent)
|
|
39026
39049
|
}
|
|
39027
39050
|
];
|
|
39028
39051
|
|
|
@@ -41553,4 +41576,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
41553
41576
|
*/
|
|
41554
41577
|
|
|
41555
41578
|
export { EnumFormDesignMode as $, AppService as A, BaseComponent as B, ChatService as C, DialogService as D, EnumCoreTablePipeType as E, FullscreenModalLoaderComponent as F, EnumActorSourceType as G, CoreParamControlComponent as H, ImageErrorResolverDirective as I, CoreRadioGroupComponent as J, GptService as K, ApplicationHelpService as L, MultiLanguageService as M, HotKeysDirective as N, NavigatorService as O, JsonService as P, AppConfigService as Q, EnumCorePageEditMode as R, SocketService as S, TranslatePipe as T, EnumCoreButtonVNSCode as U, READONLY_WORKFLOW_FIELDS as V, noneAutoClosedAlertOptions as W, CoreFormComponent as X, CoreButtonGroupVnsComponent as Y, HtmlTooltipDirective as Z, CoreControlNoFormArrayComponent as _, CorePageListComponent as a, CoreTableService as a$, CoreControlComponent as a0, JsonSafePipe as a1, CoreAttachmentComponent as a2, CoreMonthSelectorComponent as a3, EnumImageResolverType as a4, NormalizeHumanNamePipe as a5, CoreIosSwitcherComponent as a6, CoreFormService as a7, SunnyRotatingComponent as a8, MapAppdemoToServerPipePipe as a9, InitializationCanMatchFn as aA, httpInterceptorProviders as aB, InterceptorSkipHeader as aC, appTypeInterceptor as aD, baseUrlInterceptor as aE, authInterceptor as aF, graphInterceptor as aG, tokenInterceptor as aH, responseInterceptor as aI, timeZoneInterceptor as aJ, cachingInterceptor as aK, langInterceptor as aL, EnumFilterOperator as aM, OnlineUsersComponent as aN, ActionService as aO, AppInitializationService as aP, AuthService as aQ, CacheService as aR, EnumSwUpdateVersionUpdatesEventType as aS, CheckForUpdateService as aT, EnumDeviceType as aU, EnumBrowserType as aV, EnumOsType as aW, ClientService as aX, CommonHttpRequestService as aY, TLA_CONFIG as aZ, ConfigService as a_, MapAttachmentToServerPipe as aa, MapNewsfeedMediaToServerPipe as ab, StringHtmlPipe as ac, UploadedFilenameCutoffPipe as ad, DialogStateComponent as ae, FooterComponent as af, RightchatComponent as ag, WaittingScreenComponent as ah, longAlertOptions as ai, attachmentOptions as aj, CORE_VNS_BUTTONS as ak, defaultPaging as al, DESKTOP_SCREEN_HEDER_HEIGHT as am, MOBILE_SCREEN_HEDER_HEIGHT as an, themeBlue as ao, DATE_VALUE_ACCESSOR as ap, DateValueAccessor as aq, EnumDragType as ar, EnumErrorType as as, EnumIconClass as at, EnumProfileInfoSector as au, EnumSignalRType as av, EnumSortDirection as aw, EnumStyleButtonClass as ax, CanActivateFunctionUrlMapperGuard as ay, InitializationCanActivateFn as az, CoreCheckboxComponent as b, PortalRouteEditComponent as b$, DndService as b0, FilterKitService as b1, GrpcService as b2, HeaderService as b3, HistoryService as b4, HttpErrorHandler as b5, HubConnectionService as b6, IpServiceService as b7, LayoutService as b8, MapService as b9, EvaluateDialogService as bA, EnumWorkScheduleViewMode as bB, WorkShiftDndService as bC, AtShiftPatternComponent as bD, AtShiftPatternApplyComponent as bE, AtShiftPatternEditComponent as bF, AtWorksignComponent as bG, AtWorksignService as bH, FunctionComponent as bI, IndividualScheduleApplyComponent as bJ, FunctionEditComponent as bK, FunctionIgnoreComponent as bL, FunctionIgnoreEditComponent as bM, GroupFunctionComponent as bN, GroupFunctionEditComponent as bO, InMemoryComponent as bP, LanguageComponent as bQ, LanguageEditComponent as bR, MenuComponent as bS, MenuEditComponent as bT, MutationLogComponent as bU, MutationViewComponent as bV, PaSalaryPolicyComponent as bW, PaSalaryPolicyEditComponent as bX, PortalRouteComponent as bY, ScheduleOverviewComponent as bZ, simpleChatRoutes as b_, MenuService as ba, MessageService as bb, ModalService as bc, OrganizationService as bd, PkceService as be, PositionTransferService as bf, EnumNotificationDir as bg, NotificationActionType as bh, PushNotificationService as bi, RandomAvatarService as bj, RequestCache as bk, RequestCacheWithMap as bl, ResponseService as bm, RoutingService as bn, EnumSsrsExpressFileExtension as bo, EnumSsrsExpressExportFormat as bp, SsrsExpressService as bq, StatisticService as br, StatisticAuthService as bs, SysMenuService as bt, TimeSheetService as bu, TopicPermissionService as bv, TopicTreeService as bw, UploadedFileService as bx, UrlService as by, UserActivityService as bz, BaseEditComponent as c, CoreControlService as c$, SysOtherListComponent as c0, SysOtherListEditComponent as c1, SysOtherListTypeComponent as c2, SysOtherListTypeEditComponent as c3, SysActionComponent as c4, SysActionEditComponent as c5, SysFunctionActionComponent as c6, SysFunctionActionEditComponent as c7, SysFunctionActionMapperComponent as c8, SysFunctionUrlMapperComponent as c9, CoreButtonVnsComponent as cA, CoreCommonParamKitComponent as cB, CoreCompareDbPipelineComponent as cC, CoreCompositionState as cD, CoreCompositionService as cE, CoreCompositionComponent as cF, CoreConfirmDialogComponent as cG, ConfirmDialogStateComponent as cH, CoreLazyMountComponent as cI, CoreRootMenuItemPickerComponent as cJ, CoreRootMenuItemPickerService as cK, ECoreTableToolCode as cL, ECoreTableToolClass as cM, CoreTableComponent as cN, CoreContractSeekerComponent as cO, CoreControlNoGridBufferComponent as cP, CoreControlNoSeekerComponent as cQ, coreDocGenRoutes as cR, CoreDocgenToolbarComponent as cS, CoreEmployeeScheduleComponent as cT, CoreEmployeeSeekerComponent as cU, EnumCoreFileUploaderType as cV, CoreFileUploaderComponent as cW, CoreFilterHubComponent as cX, CoreFilterHubService as cY, ControlBase as cZ, Textbox as c_, FunctionEditService as ca, SysModuleComponent as cb, SysModuleEditComponent as cc, SysRouteAccessComponent as cd, liner_to_nested_array_script as ce, blob_to_base64_script as cf, AlertComponent as cg, EnumAlertType as ch, IAlertOptions as ci, AnimatedTextService as cj, AnimatedTextComponent as ck, BaseDropdownComponent as cl, ButtonGroupModule as cm, ButtonGroupService as cn, ButtonGroupComponent as co, EnumButtonCaptionCode as cp, CoreButtonComponent as cq, CoreAccordionComponent as cr, CoreAccordionService as cs, CoreActiveUserCountComponent as ct, NewlyCreatedTokenService as cu, CoreApiProgressComponent as cv, CoreButtonGroupComponent as cw, EnumCoreButtonCode as cx, ActionSvgEditComponent as cy, CoreButtonGroupService as cz, EnumFormBaseContolType as d, CoreRotatingTextComponent as d$, CustomValidators as d0, URL_PATTERN as d1, coreFormDesignRoutes as d2, CoreFormTabComponent as d3, CoreFormLiteComponent as d4, CoreFormControlBaseComponent as d5, EnumCoreSeekerColumnJob as d6, EnumCoreSeekerColumnStaffProfile as d7, EnumCoreSeekerColumnContract as d8, EnumCoreSeekerColumnWorking as d9, CoreOrgchartflexComponent as dA, CoreOrgParamComponent as dB, EnumCorePageEditBootstrapClass as dC, EnumCorePageEditFieldType as dD, CorePageEditService as dE, CorePageEditLiteComponent as dF, CorePageEditTabComponent as dG, EnumExType as dH, CorePageListService as dI, CorePageListState as dJ, CorePageListContentComponent as dK, EnumCoreViewItemType as dL, CorePageViewComponent as dM, CorePaginationComponent as dN, CorePaginationFullComponent as dO, CorePaginationFullService as dP, CoreFileFormatPickerComponent as dQ, CorePermissionService as dR, EnumPermissionObjectType as dS, CorePermissionComponent as dT, CorePermissionActionsComponent as dU, CorePositionConcurrentSeekerComponent as dV, CorePositionSeekerComponent as dW, CoreQrcodeComponent as dX, EnumOparator as dY, CoreQueryBuilderComponent as dZ, CoreReducerIconComponent as d_, EnumCoreSeekerColumnWage as da, EnumCoreSeekerColumnPosition as db, EnumCoreSeekerColumnPositionConcurrent as dc, EnumCoreSeekerColumnAutoForm as dd, SeekerService as de, CoreGridBufferComponent as df, CoreHeaderParamsComponent as dg, CoreHelperComponent as dh, CoreLineComponent as di, CoreLiquidWysiwygComponent as dj, CoreListComponent as dk, CoreListLazyComponent as dl, CoreLoadingSurfaceComponent as dm, CoreMccComponent as dn, CoreMonthPickerComponent as dp, CoreNavigationTrackerComponent as dq, coreNavigationTrackerRoutes as dr, CoreOauthCallbackComponent as ds, CoreOauthCallbackOffice365Component as dt, EnumCoreOrgTreeaAccessorMode as du, EnumCoreOrgTreeaSearchMode as dv, CoreOrgTreeComponent as dw, CoreOrgTreeState as dx, CoreOrgTreeService as dy, CoreOrgUnitSeekerComponent as dz, CorePageEditComponent as e, tooltip_directive as e$, CoreRouteAccumulatorComponent as e0, CoreRoutingHistoryComponent as e1, CoreSalaryPolicyPickerComponent as e2, CoreScrollComponent as e3, CoreScrollLazyComponent as e4, CoreSeenByComponent as e5, CoreShiftCardComponent as e6, CoreShiftCellComponent as e7, CoreShiftCollectionComponent as e8, CoreShiftStickerComponent as e9, EvaluateDialogComponent as eA, HuconcurrentlyComponent as eB, JobComponent as eC, LanguageChangerComponent as eD, DEFAULT_SVG as eE, ItemComponent as eF, NavigatorComponent as eG, OtpInputComponent as eH, OtpInputService as eI, PageTitleComponent as eJ, PaginationComponent as eK, FilterPipe as eL, normalizeHumanName as eM, PositionComponent as eN, PositionEditService as eO, CoreDatetimeService as eP, FileService as eQ, LongTaskService as eR, EnumRecursiveFields as eS, RecursiveService as eT, StringService as eU, UnicodeService as eV, StaffProfileComponent as eW, ThreedotsComponent as eX, TooltipComponent as eY, UserActivityComponent as eZ, WageComponent as e_, STICKER_COLOR_SCHEMA as ea, CoreStatusStickerComponent as eb, CoreSubFormGroupComponent as ec, CoreTabListComponent as ed, CoreTagsComponent as ee, CoreTopicPickerComponent as ef, EnumCoreArticleCategoryTreeaAccessorMode as eg, CoreTopicTreeComponent as eh, CoreTreeComponent as ei, EnumCoreTreeGridEditMode as ej, CoreTreeGridComponent as ek, CoreWageSeekerComponent as el, CoreWorkingSeekerComponent as em, coreWorkflowRoutes as en, CoreWorkflowBuilderComponent as eo, CoreWorkflowGroupEditComponent as ep, CoreYearPickerComponent as eq, CoreYearSelectorComponent as er, EnumCoreD3ScaleType as es, CoreD3Service as et, CorePieComponent as eu, CoreScatterPlotComponent as ev, EnumHrComparisonCode as ew, EnumICoreStatisticWidgetDataType as ex, CoreStatisticWidgetComponent as ey, DecisionComponent as ez, CorePageHeaderComponent as f, dragReorder_directive as f0, CoreTabsComponent as g, CoreWorkflowService as h, EnumCoreFormControlSeekerSourceType as i, CoreWorkflowListComponent as j, TooltipDirective as k, DragReorderDirective as l, CanDeactivateGuard as m, AlertService as n, TableCellPipe as o, MapAvatarToServerPipe as p, alertOptions as q, CoreTerminalSpinnerComponent as r, CoreFormDesignService as s, EnumWorkflowStepType as t, DomService as u, CoreDropdownComponent as v, CoreChecklistComponent as w, CoreDatePickerComponent as x, CoreFormControlSeekerComponent as y, CoreCurrencyInputComponent as z };
|
|
41556
|
-
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-
|
|
41579
|
+
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-OX-fPVM-.mjs.map
|