cloud-ide-core 2.0.135 → 2.0.136
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/{cloud-ide-core-page-form.component-B9tSopSN.mjs → cloud-ide-core-page-form.component-DXbHvMOC.mjs} +4 -4
- package/fesm2022/{cloud-ide-core-page-form.component-B9tSopSN.mjs.map → cloud-ide-core-page-form.component-DXbHvMOC.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-core-workflow-registry-list.component-HrnKDaiv.mjs → cloud-ide-core-workflow-registry-list.component-zwz2r0iS.mjs} +7 -7
- package/fesm2022/{cloud-ide-core-workflow-registry-list.component-HrnKDaiv.mjs.map → cloud-ide-core-workflow-registry-list.component-zwz2r0iS.mjs.map} +1 -1
- package/fesm2022/cloud-ide-core.mjs +1177 -165
- package/fesm2022/cloud-ide-core.mjs.map +1 -1
- package/index.d.ts +53 -2
- package/package.json +1 -1
|
@@ -500,10 +500,10 @@ class CideCorePageFormComponent {
|
|
|
500
500
|
}
|
|
501
501
|
});
|
|
502
502
|
}
|
|
503
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
504
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: CideCorePageFormComponent, isStandalone: true, selector: "cide-core-page-form", ngImport: i0, template: "<div class=\"page-form-wrapper\">\n <div class=\"page-form-container\">\n <form class=\"page-form\" [formGroup]=\"pageForm\" [class.loading]=\"loading()\" (ngSubmit)=\"savePage()\">\n \n <!-- Header Section -->\n <div class=\"form-header\">\n <h2 class=\"form-title\">{{ isEditMode() ? 'Edit Page' : 'Create Page' }}</h2>\n <p class=\"form-subtitle\">\n {{ isEditMode() ? 'Update page information and configuration' : 'Create a new page with configuration' }}\n </p>\n </div>\n\n <!-- Success and Error Messages -->\n <div class=\"form-messages\">\n @if (success()) {\n <div class=\"alert alert-success\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path>\n </svg>\n <span>{{ success() }}</span>\n </div>\n }\n @if (error()) {\n <div class=\"alert alert-error\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n <span>{{ error() }}</span>\n </div>\n }\n </div>\n\n <!-- Form Content -->\n <div class=\"form-content\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_title\"\n label=\"Page Title\" \n formControlName=\"sypg_title\"\n placeholder=\"Enter page title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n \n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_page_code\"\n label=\"Page Code\" \n formControlName=\"sypg_page_code\"\n placeholder=\"Enter page code (alphanumeric and underscore only)\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea \n id=\"sypg_desc\"\n label=\"Page Description\" \n formControlName=\"sypg_desc\"\n placeholder=\"Enter page description\"\n [rows]=\"3\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-json-editor\n id=\"sypg_configuration\"\n label=\"Configuration JSON\"\n formControlName=\"sypg_configuration\"\n placeholder='{\"key\": \"value\"}'>\n </cide-ele-json-editor>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"sypg_isactive\"\n type=\"checkbox\"\n formControlName=\"sypg_isactive\"\n label=\"Active Status\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Menu Mapping Section (Only in Create Mode) -->\n @if (!isEditMode()) {\n <div class=\"form-row form-row-1\">\n <div class=\"form-field menu-mapping-section\">\n <div class=\"menu-mapping-header\">\n <div class=\"menu-mapping-toggle\">\n <input\n type=\"checkbox\"\n id=\"enable_menu_mapping\"\n [checked]=\"enableMenuMapping()\"\n (change)=\"toggleMenuMapping()\"\n class=\"menu-mapping-checkbox\">\n <label for=\"enable_menu_mapping\" class=\"menu-mapping-label-checkbox\">Map to Menu</label>\n </div>\n <span class=\"menu-mapping-hint\">Optionally map this page to a menu item during creation</span>\n </div>\n\n @if (enableMenuMapping()) {\n <div class=\"menu-mapping-content\">\n <!-- Menu Mapping Mode Selection -->\n <div class=\"menu-mapping-mode\">\n <label class=\"menu-mapping-label\">Mapping Option:</label>\n <div class=\"menu-mapping-options\">\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'none'\"\n (click)=\"onMenuMappingModeChange('none')\">\n Skip Mapping\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'existing'\"\n (click)=\"onMenuMappingModeChange('existing')\">\n Map to Existing Menu\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'new'\"\n (click)=\"onMenuMappingModeChange('new')\">\n Create New Menu\n </button>\n </div>\n </div>\n\n <!-- Existing Menu Selection -->\n @if (menuMappingMode() === 'existing') {\n <div class=\"menu-mapping-form\">\n <cide-ele-select\n label=\"Select Menu Item\"\n [options]=\"menuOptions()\"\n [loading]=\"menusLoading()\"\n placeholder=\"Choose a menu item to map this page to\"\n [searchable]=\"true\"\n size=\"md\"\n [ngModel]=\"selectedMenuId() ?? ''\"\n (ngModelChange)=\"onMenuSelectionChange($event)\">\n </cide-ele-select>\n <p class=\"menu-mapping-help\">\n This page will be added to the selected menu item's page list.\n </p>\n </div>\n }\n\n <!-- New Menu Creation Form -->\n @if (menuMappingMode() === 'new') {\n <div class=\"menu-mapping-form\">\n <form [formGroup]=\"newMenuForm\" class=\"new-menu-form\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_title\"\n label=\"Menu Title\"\n formControlName=\"syme_title\"\n placeholder=\"Enter menu title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-select\n label=\"Menu Type\"\n formControlName=\"syme_type\"\n [options]=\"[\n { value: 'menu', label: 'Menu Item' },\n { value: 'section', label: 'Section' },\n { value: 'title', label: 'Title' }\n ]\"\n placeholder=\"Select menu type\"\n size=\"md\">\n </cide-ele-select>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_path\"\n label=\"Menu Path\"\n formControlName=\"syme_path\"\n placeholder=\"e.g., /control-panel/page\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_icon\"\n label=\"Icon\"\n formControlName=\"syme_icon\"\n placeholder=\"e.g., dashboard, settings\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea\n id=\"syme_desc\"\n label=\"Menu Description\"\n formControlName=\"syme_desc\"\n placeholder=\"Enter menu description (optional)\"\n [rows]=\"2\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_order_by\"\n label=\"Order\"\n formControlName=\"syme_order_by\"\n type=\"number\"\n placeholder=\"Menu order\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_isactive\"\n type=\"checkbox\"\n formControlName=\"syme_isactive\"\n label=\"Active\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n </form>\n <p class=\"menu-mapping-help\">\n A new menu item will be created and this page will be automatically mapped to it.\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <div class=\"form-actions-content\">\n <!-- Error Message (Left Side) -->\n <div class=\"form-actions-error\">\n <cide-form-field-error [formGroup]=\"pageForm\"></cide-form-field-error>\n </div>\n \n <!-- Action Buttons (Right Side) -->\n <div class=\"form-actions-buttons\">\n @if (!isEditMode()) {\n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"resetForm()\" \n leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n }\n \n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"cancelForm()\" \n leftIcon=\"close\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n \n <button cideEleButton\n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"loading() || !pageForm.valid\"\n [loading]=\"loading()\"\n leftIcon=\"save\">\n {{ isEditMode() ? 'Update Page' : 'Create Page' }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n</div>\n", styles: [".page-form-wrapper{min-height:100vh;background-color:#f9fafb;padding:1.5rem;box-sizing:border-box}:host-context(.dark) .page-form-wrapper,:host-context([data-theme=dark]) .page-form-wrapper{background-color:#111827}@media (max-width: 768px){.page-form-wrapper{padding:1rem}}@media (max-width: 480px){.page-form-wrapper{padding:.75rem}}.page-form-container{max-width:1200px;margin:0 auto;width:100%}.page-form{background-color:#fff;border-radius:.5rem;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;border:1px solid #e5e7eb;overflow:hidden;display:flex;flex-direction:column}:host-context(.dark) .page-form,:host-context([data-theme=dark]) .page-form{background-color:#1f2937;border-color:#374151;box-shadow:0 1px 3px #0000004d,0 1px 2px #0003}.page-form.loading{opacity:.6;pointer-events:none}.form-header{padding:1.5rem 1.5rem 1rem;border-bottom:1px solid #e5e7eb;background-color:#fff}:host-context(.dark) .form-header,:host-context([data-theme=dark]) .form-header{background-color:#1f2937;border-bottom-color:#374151}.form-header .form-title{font-size:1.5rem;font-weight:700;margin:0 0 .5rem;color:#111827;line-height:1.2}:host-context(.dark) .form-header .form-title,:host-context([data-theme=dark]) .form-header .form-title{color:#f9fafb}.form-header .form-subtitle{font-size:.875rem;margin:0;font-weight:400;color:#6b7280;line-height:1.5}:host-context(.dark) .form-header .form-subtitle,:host-context([data-theme=dark]) .form-header .form-subtitle{color:#9ca3af}@media (max-width: 768px){.form-header{padding:1.25rem 1rem .75rem}.form-header .form-title{font-size:1.25rem}.form-header .form-subtitle{font-size:.8125rem}}.form-messages{padding:0 1.5rem;margin-top:1rem}@media (max-width: 768px){.form-messages{padding:0 1rem}}.alert{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;margin-bottom:1rem;border-radius:.375rem;font-weight:500;font-size:.875rem;border-left:3px solid}.alert .alert-icon{width:1.25rem;height:1.25rem;flex-shrink:0}.alert.alert-success{background-color:#d1fae5;border-left-color:#10b981;color:#065f46}:host-context(.dark) .alert.alert-success,:host-context([data-theme=dark]) .alert.alert-success{background-color:#10b98133;border-left-color:#10b981;color:#6ee7b7}.alert.alert-error{background-color:#fee2e2;border-left-color:#ef4444;color:#991b1b}:host-context(.dark) .alert.alert-error,:host-context([data-theme=dark]) .alert.alert-error{background-color:#ef444433;border-left-color:#ef4444;color:#fca5a5}.form-content{padding:1.5rem;flex:1}@media (max-width: 768px){.form-content{padding:1rem}}@media (max-width: 480px){.form-content{padding:.75rem}}.form-row{display:grid;gap:1rem;margin-bottom:1rem}.form-row:last-child{margin-bottom:0}.form-row.form-row-1{grid-template-columns:1fr}.form-row.form-row-2{grid-template-columns:repeat(2,1fr)}@media (max-width: 768px){.form-row.form-row-2{grid-template-columns:1fr}}.form-row.form-row-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 1024px){.form-row.form-row-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.form-row.form-row-3{grid-template-columns:1fr}}.form-row.form-row-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 1024px){.form-row.form-row-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.form-row.form-row-4{grid-template-columns:1fr}}.form-field{display:flex;flex-direction:column}.form-actions{padding:1.25rem 1.5rem;border-top:1px solid #e5e7eb;background-color:#fff;margin-top:auto}:host-context(.dark) .form-actions,:host-context([data-theme=dark]) .form-actions{background-color:#1f2937;border-top-color:#374151}@media (max-width: 768px){.form-actions{padding:1rem}}@media (max-width: 480px){.form-actions{padding:.75rem}}.form-actions-content{display:flex;justify-content:space-between;align-items:center;gap:1rem;width:100%;flex-wrap:wrap}@media (max-width: 768px){.form-actions-content{flex-direction:column;align-items:stretch}}.form-actions-error{flex:1;min-width:0;display:flex;align-items:center}@media (max-width: 768px){.form-actions-error{width:100%;margin-bottom:.75rem}}.form-actions-buttons{display:flex;gap:.75rem;align-items:center;flex-shrink:0}@media (max-width: 768px){.form-actions-buttons{width:100%;justify-content:stretch}.form-actions-buttons button{flex:1;min-width:0}}@media (max-width: 480px){.form-actions-buttons{flex-direction:column}.form-actions-buttons button{width:100%}}cide-ele-input,cide-ele-textarea,cide-ele-json-editor,cide-ele-select{width:100%}cide-ele-input:focus-within,cide-ele-textarea:focus-within,cide-ele-json-editor:focus-within,cide-ele-select:focus-within{outline:none}.menu-mapping-section{border:1px solid #e5e7eb;border-radius:.5rem;padding:1rem;background-color:#f9fafb;margin-top:1rem}:host-context(.dark) .menu-mapping-section,:host-context([data-theme=dark]) .menu-mapping-section{background-color:#1f2937;border-color:#374151}.menu-mapping-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;gap:1rem}@media (max-width: 768px){.menu-mapping-header{flex-direction:column;align-items:flex-start}}.menu-mapping-toggle{display:flex;align-items:center;gap:.5rem}.menu-mapping-checkbox{width:1rem;height:1rem;cursor:pointer}.menu-mapping-label-checkbox{font-weight:500;font-size:.875rem;color:#374151;cursor:pointer}:host-context(.dark) .menu-mapping-label-checkbox,:host-context([data-theme=dark]) .menu-mapping-label-checkbox{color:#d1d5db}.menu-mapping-hint{font-size:.75rem;color:#6b7280;font-style:italic}:host-context(.dark) .menu-mapping-hint,:host-context([data-theme=dark]) .menu-mapping-hint{color:#9ca3af}.menu-mapping-content{margin-top:1rem;padding-top:1rem;border-top:1px solid #e5e7eb}:host-context(.dark) .menu-mapping-content,:host-context([data-theme=dark]) .menu-mapping-content{border-top-color:#374151}.menu-mapping-mode{margin-bottom:1rem}.menu-mapping-label{display:block;font-size:.875rem;font-weight:500;color:#374151;margin-bottom:.5rem}:host-context(.dark) .menu-mapping-label,:host-context([data-theme=dark]) .menu-mapping-label{color:#d1d5db}.menu-mapping-options{display:flex;gap:.5rem;flex-wrap:wrap}.menu-option-btn{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background-color:#fff;color:#374151;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}:host-context(.dark) .menu-option-btn,:host-context([data-theme=dark]) .menu-option-btn{background-color:#374151;border-color:#4b5563;color:#d1d5db}.menu-option-btn:hover{background-color:#f3f4f6;border-color:#9ca3af}:host-context(.dark) .menu-option-btn:hover,:host-context([data-theme=dark]) .menu-option-btn:hover{background-color:#4b5563;border-color:#6b7280}.menu-option-btn.active{background-color:#3b82f6;border-color:#3b82f6;color:#fff}:host-context(.dark) .menu-option-btn.active,:host-context([data-theme=dark]) .menu-option-btn.active{background-color:#2563eb;border-color:#2563eb}.menu-mapping-form{margin-top:1rem;padding:1rem;background-color:#fff;border-radius:.375rem;border:1px solid #e5e7eb}:host-context(.dark) .menu-mapping-form,:host-context([data-theme=dark]) .menu-mapping-form{background-color:#111827;border-color:#374151}.new-menu-form .form-row{margin-bottom:1rem}.new-menu-form .form-row:last-child{margin-bottom:0}.menu-mapping-help{margin-top:.75rem;font-size:.75rem;color:#6b7280;font-style:italic}:host-context(.dark) .menu-mapping-help,:host-context([data-theme=dark]) .menu-mapping-help{color:#9ca3af}@media (max-width: 480px){.page-form-wrapper{padding:.5rem}.form-header{padding:1rem .75rem .75rem}.form-content,.form-actions{padding:.75rem}.menu-mapping-options{flex-direction:column}.menu-mapping-options .menu-option-btn{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "step", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey", "treeView"], outputs: ["ngModelChange", "change", "searchChange"] }, { kind: "component", type: CideTextareaComponent, selector: "cide-ele-textarea", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "minlength", "maxlength", "rows", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput"], outputs: ["ngModelChange"] }, { kind: "component", type: CideEleJsonEditorComponent, selector: "cide-ele-json-editor", inputs: ["label", "helperText", "required", "disabled", "showCharacterCount", "config"], outputs: ["valueChange", "objectChange", "errorsChange", "validChange"] }, { kind: "component", type: CideFormFieldErrorComponent, selector: "cide-form-field-error", inputs: ["control", "formGroup", "fieldName", "customMessages"] }] });
|
|
503
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CideCorePageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
504
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CideCorePageFormComponent, isStandalone: true, selector: "cide-core-page-form", ngImport: i0, template: "<div class=\"page-form-wrapper\">\n <div class=\"page-form-container\">\n <form class=\"page-form\" [formGroup]=\"pageForm\" [class.loading]=\"loading()\" (ngSubmit)=\"savePage()\">\n \n <!-- Header Section -->\n <div class=\"form-header\">\n <h2 class=\"form-title\">{{ isEditMode() ? 'Edit Page' : 'Create Page' }}</h2>\n <p class=\"form-subtitle\">\n {{ isEditMode() ? 'Update page information and configuration' : 'Create a new page with configuration' }}\n </p>\n </div>\n\n <!-- Success and Error Messages -->\n <div class=\"form-messages\">\n @if (success()) {\n <div class=\"alert alert-success\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path>\n </svg>\n <span>{{ success() }}</span>\n </div>\n }\n @if (error()) {\n <div class=\"alert alert-error\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n <span>{{ error() }}</span>\n </div>\n }\n </div>\n\n <!-- Form Content -->\n <div class=\"form-content\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_title\"\n label=\"Page Title\" \n formControlName=\"sypg_title\"\n placeholder=\"Enter page title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n \n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_page_code\"\n label=\"Page Code\" \n formControlName=\"sypg_page_code\"\n placeholder=\"Enter page code (alphanumeric and underscore only)\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea \n id=\"sypg_desc\"\n label=\"Page Description\" \n formControlName=\"sypg_desc\"\n placeholder=\"Enter page description\"\n [rows]=\"3\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-json-editor\n id=\"sypg_configuration\"\n label=\"Configuration JSON\"\n formControlName=\"sypg_configuration\"\n placeholder='{\"key\": \"value\"}'>\n </cide-ele-json-editor>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"sypg_isactive\"\n type=\"checkbox\"\n formControlName=\"sypg_isactive\"\n label=\"Active Status\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Menu Mapping Section (Only in Create Mode) -->\n @if (!isEditMode()) {\n <div class=\"form-row form-row-1\">\n <div class=\"form-field menu-mapping-section\">\n <div class=\"menu-mapping-header\">\n <div class=\"menu-mapping-toggle\">\n <input\n type=\"checkbox\"\n id=\"enable_menu_mapping\"\n [checked]=\"enableMenuMapping()\"\n (change)=\"toggleMenuMapping()\"\n class=\"menu-mapping-checkbox\">\n <label for=\"enable_menu_mapping\" class=\"menu-mapping-label-checkbox\">Map to Menu</label>\n </div>\n <span class=\"menu-mapping-hint\">Optionally map this page to a menu item during creation</span>\n </div>\n\n @if (enableMenuMapping()) {\n <div class=\"menu-mapping-content\">\n <!-- Menu Mapping Mode Selection -->\n <div class=\"menu-mapping-mode\">\n <label class=\"menu-mapping-label\">Mapping Option:</label>\n <div class=\"menu-mapping-options\">\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'none'\"\n (click)=\"onMenuMappingModeChange('none')\">\n Skip Mapping\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'existing'\"\n (click)=\"onMenuMappingModeChange('existing')\">\n Map to Existing Menu\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'new'\"\n (click)=\"onMenuMappingModeChange('new')\">\n Create New Menu\n </button>\n </div>\n </div>\n\n <!-- Existing Menu Selection -->\n @if (menuMappingMode() === 'existing') {\n <div class=\"menu-mapping-form\">\n <cide-ele-select\n label=\"Select Menu Item\"\n [options]=\"menuOptions()\"\n [loading]=\"menusLoading()\"\n placeholder=\"Choose a menu item to map this page to\"\n [searchable]=\"true\"\n size=\"md\"\n [ngModel]=\"selectedMenuId() ?? ''\"\n (ngModelChange)=\"onMenuSelectionChange($event)\">\n </cide-ele-select>\n <p class=\"menu-mapping-help\">\n This page will be added to the selected menu item's page list.\n </p>\n </div>\n }\n\n <!-- New Menu Creation Form -->\n @if (menuMappingMode() === 'new') {\n <div class=\"menu-mapping-form\">\n <form [formGroup]=\"newMenuForm\" class=\"new-menu-form\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_title\"\n label=\"Menu Title\"\n formControlName=\"syme_title\"\n placeholder=\"Enter menu title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-select\n label=\"Menu Type\"\n formControlName=\"syme_type\"\n [options]=\"[\n { value: 'menu', label: 'Menu Item' },\n { value: 'section', label: 'Section' },\n { value: 'title', label: 'Title' }\n ]\"\n placeholder=\"Select menu type\"\n size=\"md\">\n </cide-ele-select>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_path\"\n label=\"Menu Path\"\n formControlName=\"syme_path\"\n placeholder=\"e.g., /control-panel/page\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_icon\"\n label=\"Icon\"\n formControlName=\"syme_icon\"\n placeholder=\"e.g., dashboard, settings\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea\n id=\"syme_desc\"\n label=\"Menu Description\"\n formControlName=\"syme_desc\"\n placeholder=\"Enter menu description (optional)\"\n [rows]=\"2\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_order_by\"\n label=\"Order\"\n formControlName=\"syme_order_by\"\n type=\"number\"\n placeholder=\"Menu order\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_isactive\"\n type=\"checkbox\"\n formControlName=\"syme_isactive\"\n label=\"Active\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n </form>\n <p class=\"menu-mapping-help\">\n A new menu item will be created and this page will be automatically mapped to it.\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <div class=\"form-actions-content\">\n <!-- Error Message (Left Side) -->\n <div class=\"form-actions-error\">\n <cide-form-field-error [formGroup]=\"pageForm\"></cide-form-field-error>\n </div>\n \n <!-- Action Buttons (Right Side) -->\n <div class=\"form-actions-buttons\">\n @if (!isEditMode()) {\n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"resetForm()\" \n leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n }\n \n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"cancelForm()\" \n leftIcon=\"close\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n \n <button cideEleButton\n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"loading() || !pageForm.valid\"\n [loading]=\"loading()\"\n leftIcon=\"save\">\n {{ isEditMode() ? 'Update Page' : 'Create Page' }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n</div>\n", styles: [".page-form-wrapper{min-height:100vh;background-color:#f9fafb;padding:1.5rem;box-sizing:border-box}:host-context(.dark) .page-form-wrapper,:host-context([data-theme=dark]) .page-form-wrapper{background-color:#111827}@media (max-width: 768px){.page-form-wrapper{padding:1rem}}@media (max-width: 480px){.page-form-wrapper{padding:.75rem}}.page-form-container{max-width:1200px;margin:0 auto;width:100%}.page-form{background-color:#fff;border-radius:.5rem;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;border:1px solid #e5e7eb;overflow:hidden;display:flex;flex-direction:column}:host-context(.dark) .page-form,:host-context([data-theme=dark]) .page-form{background-color:#1f2937;border-color:#374151;box-shadow:0 1px 3px #0000004d,0 1px 2px #0003}.page-form.loading{opacity:.6;pointer-events:none}.form-header{padding:1.5rem 1.5rem 1rem;border-bottom:1px solid #e5e7eb;background-color:#fff}:host-context(.dark) .form-header,:host-context([data-theme=dark]) .form-header{background-color:#1f2937;border-bottom-color:#374151}.form-header .form-title{font-size:1.5rem;font-weight:700;margin:0 0 .5rem;color:#111827;line-height:1.2}:host-context(.dark) .form-header .form-title,:host-context([data-theme=dark]) .form-header .form-title{color:#f9fafb}.form-header .form-subtitle{font-size:.875rem;margin:0;font-weight:400;color:#6b7280;line-height:1.5}:host-context(.dark) .form-header .form-subtitle,:host-context([data-theme=dark]) .form-header .form-subtitle{color:#9ca3af}@media (max-width: 768px){.form-header{padding:1.25rem 1rem .75rem}.form-header .form-title{font-size:1.25rem}.form-header .form-subtitle{font-size:.8125rem}}.form-messages{padding:0 1.5rem;margin-top:1rem}@media (max-width: 768px){.form-messages{padding:0 1rem}}.alert{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;margin-bottom:1rem;border-radius:.375rem;font-weight:500;font-size:.875rem;border-left:3px solid}.alert .alert-icon{width:1.25rem;height:1.25rem;flex-shrink:0}.alert.alert-success{background-color:#d1fae5;border-left-color:#10b981;color:#065f46}:host-context(.dark) .alert.alert-success,:host-context([data-theme=dark]) .alert.alert-success{background-color:#10b98133;border-left-color:#10b981;color:#6ee7b7}.alert.alert-error{background-color:#fee2e2;border-left-color:#ef4444;color:#991b1b}:host-context(.dark) .alert.alert-error,:host-context([data-theme=dark]) .alert.alert-error{background-color:#ef444433;border-left-color:#ef4444;color:#fca5a5}.form-content{padding:1.5rem;flex:1}@media (max-width: 768px){.form-content{padding:1rem}}@media (max-width: 480px){.form-content{padding:.75rem}}.form-row{display:grid;gap:1rem;margin-bottom:1rem}.form-row:last-child{margin-bottom:0}.form-row.form-row-1{grid-template-columns:1fr}.form-row.form-row-2{grid-template-columns:repeat(2,1fr)}@media (max-width: 768px){.form-row.form-row-2{grid-template-columns:1fr}}.form-row.form-row-3{grid-template-columns:repeat(3,1fr)}@media (max-width: 1024px){.form-row.form-row-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.form-row.form-row-3{grid-template-columns:1fr}}.form-row.form-row-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 1024px){.form-row.form-row-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.form-row.form-row-4{grid-template-columns:1fr}}.form-field{display:flex;flex-direction:column}.form-actions{padding:1.25rem 1.5rem;border-top:1px solid #e5e7eb;background-color:#fff;margin-top:auto}:host-context(.dark) .form-actions,:host-context([data-theme=dark]) .form-actions{background-color:#1f2937;border-top-color:#374151}@media (max-width: 768px){.form-actions{padding:1rem}}@media (max-width: 480px){.form-actions{padding:.75rem}}.form-actions-content{display:flex;justify-content:space-between;align-items:center;gap:1rem;width:100%;flex-wrap:wrap}@media (max-width: 768px){.form-actions-content{flex-direction:column;align-items:stretch}}.form-actions-error{flex:1;min-width:0;display:flex;align-items:center}@media (max-width: 768px){.form-actions-error{width:100%;margin-bottom:.75rem}}.form-actions-buttons{display:flex;gap:.75rem;align-items:center;flex-shrink:0}@media (max-width: 768px){.form-actions-buttons{width:100%;justify-content:stretch}.form-actions-buttons button{flex:1;min-width:0}}@media (max-width: 480px){.form-actions-buttons{flex-direction:column}.form-actions-buttons button{width:100%}}cide-ele-input,cide-ele-textarea,cide-ele-json-editor,cide-ele-select{width:100%}cide-ele-input:focus-within,cide-ele-textarea:focus-within,cide-ele-json-editor:focus-within,cide-ele-select:focus-within{outline:none}.menu-mapping-section{border:1px solid #e5e7eb;border-radius:.5rem;padding:1rem;background-color:#f9fafb;margin-top:1rem}:host-context(.dark) .menu-mapping-section,:host-context([data-theme=dark]) .menu-mapping-section{background-color:#1f2937;border-color:#374151}.menu-mapping-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;gap:1rem}@media (max-width: 768px){.menu-mapping-header{flex-direction:column;align-items:flex-start}}.menu-mapping-toggle{display:flex;align-items:center;gap:.5rem}.menu-mapping-checkbox{width:1rem;height:1rem;cursor:pointer}.menu-mapping-label-checkbox{font-weight:500;font-size:.875rem;color:#374151;cursor:pointer}:host-context(.dark) .menu-mapping-label-checkbox,:host-context([data-theme=dark]) .menu-mapping-label-checkbox{color:#d1d5db}.menu-mapping-hint{font-size:.75rem;color:#6b7280;font-style:italic}:host-context(.dark) .menu-mapping-hint,:host-context([data-theme=dark]) .menu-mapping-hint{color:#9ca3af}.menu-mapping-content{margin-top:1rem;padding-top:1rem;border-top:1px solid #e5e7eb}:host-context(.dark) .menu-mapping-content,:host-context([data-theme=dark]) .menu-mapping-content{border-top-color:#374151}.menu-mapping-mode{margin-bottom:1rem}.menu-mapping-label{display:block;font-size:.875rem;font-weight:500;color:#374151;margin-bottom:.5rem}:host-context(.dark) .menu-mapping-label,:host-context([data-theme=dark]) .menu-mapping-label{color:#d1d5db}.menu-mapping-options{display:flex;gap:.5rem;flex-wrap:wrap}.menu-option-btn{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background-color:#fff;color:#374151;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}:host-context(.dark) .menu-option-btn,:host-context([data-theme=dark]) .menu-option-btn{background-color:#374151;border-color:#4b5563;color:#d1d5db}.menu-option-btn:hover{background-color:#f3f4f6;border-color:#9ca3af}:host-context(.dark) .menu-option-btn:hover,:host-context([data-theme=dark]) .menu-option-btn:hover{background-color:#4b5563;border-color:#6b7280}.menu-option-btn.active{background-color:#3b82f6;border-color:#3b82f6;color:#fff}:host-context(.dark) .menu-option-btn.active,:host-context([data-theme=dark]) .menu-option-btn.active{background-color:#2563eb;border-color:#2563eb}.menu-mapping-form{margin-top:1rem;padding:1rem;background-color:#fff;border-radius:.375rem;border:1px solid #e5e7eb}:host-context(.dark) .menu-mapping-form,:host-context([data-theme=dark]) .menu-mapping-form{background-color:#111827;border-color:#374151}.new-menu-form .form-row{margin-bottom:1rem}.new-menu-form .form-row:last-child{margin-bottom:0}.menu-mapping-help{margin-top:.75rem;font-size:.75rem;color:#6b7280;font-style:italic}:host-context(.dark) .menu-mapping-help,:host-context([data-theme=dark]) .menu-mapping-help{color:#9ca3af}@media (max-width: 480px){.page-form-wrapper{padding:.5rem}.form-header{padding:1rem .75rem .75rem}.form-content,.form-actions{padding:.75rem}.menu-mapping-options{flex-direction:column}.menu-mapping-options .menu-option-btn{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "step", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey", "treeView"], outputs: ["ngModelChange", "change", "searchChange"] }, { kind: "component", type: CideTextareaComponent, selector: "cide-ele-textarea", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "minlength", "maxlength", "rows", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput"], outputs: ["ngModelChange"] }, { kind: "component", type: CideEleJsonEditorComponent, selector: "cide-ele-json-editor", inputs: ["label", "helperText", "required", "disabled", "showCharacterCount", "config"], outputs: ["valueChange", "objectChange", "errorsChange", "validChange"] }, { kind: "component", type: CideFormFieldErrorComponent, selector: "cide-form-field-error", inputs: ["control", "formGroup", "fieldName", "customMessages"] }] });
|
|
505
505
|
}
|
|
506
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
506
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CideCorePageFormComponent, decorators: [{
|
|
507
507
|
type: Component,
|
|
508
508
|
args: [{ selector: 'cide-core-page-form', standalone: true, imports: [
|
|
509
509
|
CommonModule,
|
|
@@ -519,4 +519,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
519
519
|
}], ctorParameters: () => [] });
|
|
520
520
|
|
|
521
521
|
export { CideCorePageFormComponent };
|
|
522
|
-
//# sourceMappingURL=cloud-ide-core-page-form.component-
|
|
522
|
+
//# sourceMappingURL=cloud-ide-core-page-form.component-DXbHvMOC.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-core-page-form.component-B9tSopSN.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-form/page-form.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-form/page-form.component.html"],"sourcesContent":["import { Component, signal, computed, inject, OnInit, DestroyRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CideCorePageManagementService } from '../../services/page-management.service';\nimport { MenuManagementService } from '../../../menu-management/services/menu-management.service';\nimport { AppStateHelperService, ComponentContextService, RightsService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, CideIconComponent, CideEleFileInputComponent, CideEleJsonEditorComponent, CideFormFieldErrorComponent, ConfirmationService } from 'cloud-ide-element';\nimport { ICoreSypg, ICoreSyme, MSystemPagesInsertUpdatePayload, MMenuListPayload, MCoreSymeInsertUpdatePayload, generateObjectFromString, generateStringFromObject, systemPagesByIdControllerResponse, systemPagesInsertUpdateControllerResponse, menuListControllerResponse, menuInsertUpdateControllerResponse, menuByIdControllerResponse } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-page-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideEleJsonEditorComponent,\n CideFormFieldErrorComponent\n ],\n templateUrl: './page-form.component.html',\n styleUrls: ['./page-form.component.scss']\n})\nexport class CideCorePageFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private pageService = inject(CideCorePageManagementService);\n private menuService = inject(MenuManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private componentContextService = inject(ComponentContextService);\n private rightsService = inject(RightsService);\n private confirmationService = inject(ConfirmationService);\n\n loading = signal(false);\n error = signal<string | null>(null);\n success = signal<string | null>(null);\n\n // Page information\n pageId = signal<string | null>(null);\n isEditMode = signal(false);\n\n // Menu mapping\n enableMenuMapping = signal(false);\n menuMappingMode = signal<'none' | 'existing' | 'new'>('none');\n existingMenus = signal<ICoreSyme[]>([]);\n menusLoading = signal(false);\n selectedMenuId = signal<string | null>(null);\n \n // New menu form\n newMenuForm = this.fb.group({\n syme_title: ['', [Validators.required, Validators.maxLength(100)]],\n syme_desc: ['', [Validators.maxLength(255)]],\n syme_type: ['menu' as 'module' | 'section' | 'menu' | 'title', [Validators.required]],\n syme_path: ['', [Validators.maxLength(255)]],\n syme_icon: ['', [Validators.maxLength(40)]],\n syme_id_syme: [''],\n syme_order_by: [1, [Validators.required, Validators.min(1)]],\n syme_isactive: [true]\n });\n\n pageForm = this.fb.group({\n sypg_title: ['', [Validators.required, Validators.maxLength(100)]],\n sypg_desc: ['', [Validators.maxLength(255)]],\n sypg_page_code: ['', [Validators.required, Validators.maxLength(40), Validators.pattern(/^[a-zA-Z0-9_]+$/)]],\n sypg_configuration: ['{}', [Validators.required]],\n sypg_isactive: [true]\n });\n\n // Menu options for dropdown\n menuOptions = computed(() => {\n return this.existingMenus().map(menu => ({\n value: menu._id || '',\n label: menu.syme_title || 'Untitled Menu'\n }));\n });\n\n constructor() {\n this.setupFormSubscriptions();\n }\n\n ngOnInit(): void {\n // Initialize rights for page management\n this.rightsService.initializeRights('core_page_management');\n // Check for page ID in query parameters\n this.checkForPageId();\n // Load menus for mapping (only in create mode)\n if (!this.isEditMode()) {\n this.loadMenus();\n }\n }\n\n // Load menus for mapping\n loadMenus(): void {\n this.menusLoading.set(true);\n const payload: MMenuListPayload = {\n pageIndex: 1,\n pageSize: 1000,\n sort: { order: 'asc', key: 'syme_order_by' }\n };\n\n this.menuService.getMenuList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: menuListControllerResponse) => {\n if (response.success && response.data) {\n this.existingMenus.set(response.data);\n }\n this.menusLoading.set(false);\n },\n error: (error: unknown) => {\n console.error('Error loading menus:', error);\n this.menusLoading.set(false);\n }\n });\n }\n\n // Toggle menu mapping section\n toggleMenuMapping(): void {\n this.enableMenuMapping.set(!this.enableMenuMapping());\n if (this.enableMenuMapping() && this.existingMenus().length === 0) {\n this.loadMenus();\n }\n }\n\n // Handle menu mapping mode change\n onMenuMappingModeChange(mode: 'none' | 'existing' | 'new'): void {\n this.menuMappingMode.set(mode);\n if (mode === 'existing') {\n this.selectedMenuId.set(null);\n } else if (mode === 'new') {\n // Auto-fill menu title from page title\n const pageTitle = this.pageForm.get('sypg_title')?.value || '';\n this.newMenuForm.patchValue({\n syme_title: pageTitle,\n syme_path: this.pageForm.get('sypg_page_code')?.value || ''\n });\n }\n }\n\n // Handle menu selection change\n onMenuSelectionChange(value: string | number | string[] | null): void {\n // Convert the value to string or null\n if (value === null || value === undefined || value === '') {\n this.selectedMenuId.set(null);\n } else if (typeof value === 'string') {\n this.selectedMenuId.set(value);\n } else if (typeof value === 'number') {\n this.selectedMenuId.set(String(value));\n } else if (Array.isArray(value) && value.length > 0) {\n // If it's an array, take the first value and convert to string\n this.selectedMenuId.set(String(value[0]));\n } else {\n this.selectedMenuId.set(null);\n }\n }\n\n\n\n // Check for page ID in query parameters\n private checkForPageId() {\n console.log('🔍 Checking for page ID in query parameters', this.route.params);\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n console.log('🔍 Query params:', params);\n // Check for pageId, id, or page parameter\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n\n // If pageId is an object string (from generateStringFromObject), try to parse it\n const pageId = queryData.sypg_id;\n if (pageId) {\n console.log('🔍 Page ID found in query params:', pageId);\n this.pageId.set(pageId);\n this.isEditMode.set(true);\n this.loadPageData(pageId);\n } else {\n console.log('🆕 No page ID found - creating new page');\n this.isEditMode.set(false);\n this.pageId.set(null);\n }\n });\n }\n\n // Load page data for editing\n private loadPageData(pageId: string) {\n this.loading.set(true);\n this.error.set(null);\n\n console.log('📥 Loading page data for ID:', pageId);\n\n this.pageService.getPageById(pageId).pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: (response: systemPagesByIdControllerResponse) => {\n console.log('✅ Page data loaded:', response);\n \n if (response?.success && response?.data) {\n const pageData = response.data;\n if (pageData) {\n this.populateFormWithPageData(pageData);\n this.success.set('Page data loaded successfully');\n } else {\n this.error.set('Page data not found');\n console.error('❌ Page data not found in response:', response);\n }\n } else {\n this.error.set('Failed to load page data');\n console.error('❌ Page data response invalid:', response);\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error('❌ Failed to load page data:', err);\n \n let errorMessage = 'Failed to load page data.';\n \n if (err?.error?.message) {\n errorMessage = err.error.message;\n } else if (err?.message) {\n errorMessage = err.message;\n } else if (err?.status === 404) {\n errorMessage = 'Page not found.';\n } else if (err?.status === 500) {\n errorMessage = 'Server error. Please try again later.';\n }\n \n this.error.set(errorMessage);\n this.loading.set(false);\n }\n });\n }\n\n // Populate form with page data\n private populateFormWithPageData(pageData: ICoreSypg) {\n try {\n console.log('📝 Populating form with page data:', pageData);\n\n const formData = {\n sypg_title: pageData.sypg_title || '',\n sypg_desc: pageData.sypg_desc || '',\n sypg_page_code: pageData.sypg_page_code || '',\n sypg_configuration: pageData.sypg_configuration ? JSON.stringify(pageData.sypg_configuration) : '{}',\n sypg_isactive: pageData.sypg_isactive !== undefined ? pageData.sypg_isactive : true\n };\n\n // Patch the form with the page data\n this.pageForm.patchValue(formData, { emitEvent: false });\n\n console.log('✅ Form populated successfully');\n } catch (error) {\n console.error('💥 Error populating form with page data:', error);\n this.error.set('Error loading page data into form');\n }\n }\n\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.pageForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n // Computed values\n isFormDirty = computed(() => this.pageForm.dirty);\n \n // Rights computed signals\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canView = computed(() => this.rightsService.hasRight('VIEW'));\n\n // Form submission\n savePage(): void {\n if (!this.pageForm.valid) {\n this.markFormAsTouched();\n return;\n }\n\n // Validate menu mapping if enabled\n if (this.enableMenuMapping() && !this.isEditMode()) {\n if (this.menuMappingMode() === 'existing' && !this.selectedMenuId()) {\n this.error.set('Please select a menu item to map this page to');\n return;\n }\n if (this.menuMappingMode() === 'new' && !this.newMenuForm.valid) {\n this.markMenuFormAsTouched();\n this.error.set('Please fill in all required menu fields');\n return;\n }\n }\n\n const formValue = this.pageForm.getRawValue();\n \n const pageData: MSystemPagesInsertUpdatePayload = {\n _id: this.pageId() || '',\n sypg_title: formValue.sypg_title,\n sypg_desc: formValue.sypg_desc,\n sypg_page_code: formValue.sypg_page_code,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n\n this.loading.set(true);\n this.error.set(null);\n\n this.pageService.createOrUpdatePage(pageData)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: systemPagesInsertUpdateControllerResponse) => {\n if (response.success) {\n const savedPageId = response.data?._id || this.pageId();\n const savedPageData = response.data;\n this.success.set(this.isEditMode() ? 'Page updated successfully' : 'Page created successfully');\n console.log('✅ Page saved successfully');\n \n // Handle menu mapping if enabled (only in create mode)\n if (this.enableMenuMapping() && !this.isEditMode() && savedPageId) {\n this.handleMenuMapping(savedPageId, savedPageData || null);\n } else {\n // For new pages, show confirmation dialog suggesting to create theme\n if (!this.isEditMode() && savedPageId && savedPageData) {\n this.showCreateThemeConfirmation(savedPageId, savedPageData);\n } else {\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n }\n }\n this.loading.set(false);\n } else {\n this.error.set(response.message || 'Failed to save page');\n console.error('❌ Failed to save page:', response.message);\n this.loading.set(false);\n }\n },\n error: (error: unknown) => {\n console.error('❌ Error saving page:', error);\n this.error.set('Failed to save page. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n // Handle menu mapping after page creation\n private handleMenuMapping(pageId: string, pageData: ICoreSypg | null): void {\n if (this.menuMappingMode() === 'none') {\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n return;\n }\n\n if (this.menuMappingMode() === 'existing' && this.selectedMenuId()) {\n // Update existing menu to include this page\n this.menuService.getMenuItemById(this.selectedMenuId()!)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: menuByIdControllerResponse) => {\n if (response.success && response.data) {\n const menu = response.data;\n const existingPages = Array.isArray(menu.syme_pages_id_sypg) \n ? [...menu.syme_pages_id_sypg] \n : [];\n \n // Check if page ID already exists\n const pageIdStr = pageId.toString();\n if (!existingPages.some(p => p?.toString() === pageIdStr)) {\n existingPages.push(pageId as unknown as string);\n }\n \n const updatePayload: ICoreSyme = {\n ...menu,\n syme_pages_id_sypg: existingPages\n };\n\n this.menuService.updateMenuItem(this.selectedMenuId()!, updatePayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.success.set('Page created and mapped to menu successfully');\n this.loading.set(false);\n // Show theme creation confirmation after menu mapping\n if (pageData) {\n this.showCreateThemeConfirmation(pageId, pageData);\n } else {\n // Fallback to form data if pageData is not available\n const formValue = this.pageForm.getRawValue();\n const fallbackPageData: ICoreSypg = {\n _id: pageId,\n sypg_title: formValue.sypg_title,\n sypg_page_code: formValue.sypg_page_code,\n sypg_desc: formValue.sypg_desc,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n this.showCreateThemeConfirmation(pageId, fallbackPageData);\n }\n },\n error: (error: unknown) => {\n console.error('Error mapping page to menu:', error);\n this.success.set('Page created successfully, but menu mapping failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n } else {\n this.loading.set(false);\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n }\n },\n error: (error: unknown) => {\n console.error('Error fetching menu:', error);\n this.success.set('Page created successfully, but menu mapping failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n } else if (this.menuMappingMode() === 'new') {\n // Create new menu item with this page\n const menuFormValue = this.newMenuForm.getRawValue();\n const newMenuPayload: ICoreSyme = {\n syme_title: menuFormValue.syme_title,\n syme_desc: menuFormValue.syme_desc || '',\n syme_type: menuFormValue.syme_type,\n syme_path: menuFormValue.syme_path || this.pageForm.get('sypg_page_code')?.value || '',\n syme_icon: menuFormValue.syme_icon || '',\n syme_id_syme: menuFormValue.syme_id_syme || undefined,\n syme_order_by: menuFormValue.syme_order_by,\n syme_isactive: menuFormValue.syme_isactive,\n syme_pages_id_sypg: [pageId as any]\n };\n\n this.menuService.createMenuItem(newMenuPayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.success.set('Page created and new menu item created successfully');\n this.loading.set(false);\n // Show theme creation confirmation after menu creation\n if (pageData) {\n this.showCreateThemeConfirmation(pageId, pageData);\n } else {\n // Fallback to form data if pageData is not available\n const formValue = this.pageForm.getRawValue();\n const fallbackPageData: ICoreSypg = {\n _id: pageId,\n sypg_title: formValue.sypg_title,\n sypg_page_code: formValue.sypg_page_code,\n sypg_desc: formValue.sypg_desc,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n this.showCreateThemeConfirmation(pageId, fallbackPageData);\n }\n },\n error: (error: unknown) => {\n console.error('Error creating menu:', error);\n this.success.set('Page created successfully, but menu creation failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n }\n }\n\n // Mark menu form as touched\n private markMenuFormAsTouched(): void {\n Object.keys(this.newMenuForm.controls).forEach(key => {\n const control = this.newMenuForm.get(key);\n control?.markAsTouched();\n });\n }\n\n // Cancel form\n cancelForm(): void {\n this.componentContextService.close(['/control-panel/page']);\n }\n\n // Go back to page list\n goBack(): void {\n this.componentContextService.close(['/control-panel/page']);\n }\n\n // Reset form - reload data in edit mode, reset to defaults in create mode\n resetForm(): void {\n if (this.isEditMode() && this.pageId()) {\n this.loadPageData(this.pageId()!);\n } else {\n this.pageForm.reset({\n sypg_isactive: true,\n sypg_configuration: '{}'\n });\n }\n }\n\n // Mark form as touched to trigger validation display\n private markFormAsTouched(): void {\n Object.keys(this.pageForm.controls).forEach(key => {\n const control = this.pageForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Show confirmation dialog suggesting to create theme after page creation\n */\n private showCreateThemeConfirmation(pageId: string, pageData: ICoreSypg): void {\n this.confirmationService.ask({\n title: 'Page Created Successfully!',\n message: `Would you like to create a theme for this page? This will set up the default theme configuration for \"${pageData.sypg_title || pageData.sypg_page_code}\".`,\n confirmText: 'Create Theme',\n cancelText: 'Skip',\n type: 'success',\n icon: 'palette'\n }).then((confirmed: boolean) => {\n if (confirmed) {\n // Navigate to theme page with page data\n const queryData = {\n sypg_id: pageId,\n sypg_title: pageData.sypg_title || '',\n sypg_page_code: pageData.sypg_page_code || ''\n };\n \n // Generate query string from object using utility function\n const queryString = generateStringFromObject(queryData);\n \n // Navigate to theme page with query params\n this.router.navigate(['/control-panel/page-theme', queryString]);\n } else {\n // User chose to skip - close and go to page list\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 500);\n }\n });\n }\n}\n","<div class=\"page-form-wrapper\">\n <div class=\"page-form-container\">\n <form class=\"page-form\" [formGroup]=\"pageForm\" [class.loading]=\"loading()\" (ngSubmit)=\"savePage()\">\n \n <!-- Header Section -->\n <div class=\"form-header\">\n <h2 class=\"form-title\">{{ isEditMode() ? 'Edit Page' : 'Create Page' }}</h2>\n <p class=\"form-subtitle\">\n {{ isEditMode() ? 'Update page information and configuration' : 'Create a new page with configuration' }}\n </p>\n </div>\n\n <!-- Success and Error Messages -->\n <div class=\"form-messages\">\n @if (success()) {\n <div class=\"alert alert-success\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path>\n </svg>\n <span>{{ success() }}</span>\n </div>\n }\n @if (error()) {\n <div class=\"alert alert-error\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n <span>{{ error() }}</span>\n </div>\n }\n </div>\n\n <!-- Form Content -->\n <div class=\"form-content\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_title\"\n label=\"Page Title\" \n formControlName=\"sypg_title\"\n placeholder=\"Enter page title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n \n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_page_code\"\n label=\"Page Code\" \n formControlName=\"sypg_page_code\"\n placeholder=\"Enter page code (alphanumeric and underscore only)\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea \n id=\"sypg_desc\"\n label=\"Page Description\" \n formControlName=\"sypg_desc\"\n placeholder=\"Enter page description\"\n [rows]=\"3\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-json-editor\n id=\"sypg_configuration\"\n label=\"Configuration JSON\"\n formControlName=\"sypg_configuration\"\n placeholder='{\"key\": \"value\"}'>\n </cide-ele-json-editor>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"sypg_isactive\"\n type=\"checkbox\"\n formControlName=\"sypg_isactive\"\n label=\"Active Status\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Menu Mapping Section (Only in Create Mode) -->\n @if (!isEditMode()) {\n <div class=\"form-row form-row-1\">\n <div class=\"form-field menu-mapping-section\">\n <div class=\"menu-mapping-header\">\n <div class=\"menu-mapping-toggle\">\n <input\n type=\"checkbox\"\n id=\"enable_menu_mapping\"\n [checked]=\"enableMenuMapping()\"\n (change)=\"toggleMenuMapping()\"\n class=\"menu-mapping-checkbox\">\n <label for=\"enable_menu_mapping\" class=\"menu-mapping-label-checkbox\">Map to Menu</label>\n </div>\n <span class=\"menu-mapping-hint\">Optionally map this page to a menu item during creation</span>\n </div>\n\n @if (enableMenuMapping()) {\n <div class=\"menu-mapping-content\">\n <!-- Menu Mapping Mode Selection -->\n <div class=\"menu-mapping-mode\">\n <label class=\"menu-mapping-label\">Mapping Option:</label>\n <div class=\"menu-mapping-options\">\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'none'\"\n (click)=\"onMenuMappingModeChange('none')\">\n Skip Mapping\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'existing'\"\n (click)=\"onMenuMappingModeChange('existing')\">\n Map to Existing Menu\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'new'\"\n (click)=\"onMenuMappingModeChange('new')\">\n Create New Menu\n </button>\n </div>\n </div>\n\n <!-- Existing Menu Selection -->\n @if (menuMappingMode() === 'existing') {\n <div class=\"menu-mapping-form\">\n <cide-ele-select\n label=\"Select Menu Item\"\n [options]=\"menuOptions()\"\n [loading]=\"menusLoading()\"\n placeholder=\"Choose a menu item to map this page to\"\n [searchable]=\"true\"\n size=\"md\"\n [ngModel]=\"selectedMenuId() ?? ''\"\n (ngModelChange)=\"onMenuSelectionChange($event)\">\n </cide-ele-select>\n <p class=\"menu-mapping-help\">\n This page will be added to the selected menu item's page list.\n </p>\n </div>\n }\n\n <!-- New Menu Creation Form -->\n @if (menuMappingMode() === 'new') {\n <div class=\"menu-mapping-form\">\n <form [formGroup]=\"newMenuForm\" class=\"new-menu-form\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_title\"\n label=\"Menu Title\"\n formControlName=\"syme_title\"\n placeholder=\"Enter menu title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-select\n label=\"Menu Type\"\n formControlName=\"syme_type\"\n [options]=\"[\n { value: 'menu', label: 'Menu Item' },\n { value: 'section', label: 'Section' },\n { value: 'title', label: 'Title' }\n ]\"\n placeholder=\"Select menu type\"\n size=\"md\">\n </cide-ele-select>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_path\"\n label=\"Menu Path\"\n formControlName=\"syme_path\"\n placeholder=\"e.g., /control-panel/page\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_icon\"\n label=\"Icon\"\n formControlName=\"syme_icon\"\n placeholder=\"e.g., dashboard, settings\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea\n id=\"syme_desc\"\n label=\"Menu Description\"\n formControlName=\"syme_desc\"\n placeholder=\"Enter menu description (optional)\"\n [rows]=\"2\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_order_by\"\n label=\"Order\"\n formControlName=\"syme_order_by\"\n type=\"number\"\n placeholder=\"Menu order\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_isactive\"\n type=\"checkbox\"\n formControlName=\"syme_isactive\"\n label=\"Active\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n </form>\n <p class=\"menu-mapping-help\">\n A new menu item will be created and this page will be automatically mapped to it.\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <div class=\"form-actions-content\">\n <!-- Error Message (Left Side) -->\n <div class=\"form-actions-error\">\n <cide-form-field-error [formGroup]=\"pageForm\"></cide-form-field-error>\n </div>\n \n <!-- Action Buttons (Right Side) -->\n <div class=\"form-actions-buttons\">\n @if (!isEditMode()) {\n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"resetForm()\" \n leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n }\n \n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"cancelForm()\" \n leftIcon=\"close\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n \n <button cideEleButton\n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"loading() || !pageForm.valid\"\n [loading]=\"loading()\"\n leftIcon=\"save\">\n {{ isEditMode() ? 'Update Page' : 'Create Page' }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n</div>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-core-page-form.component-DXbHvMOC.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-form/page-form.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-form/page-form.component.html"],"sourcesContent":["import { Component, signal, computed, inject, OnInit, DestroyRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CideCorePageManagementService } from '../../services/page-management.service';\nimport { MenuManagementService } from '../../../menu-management/services/menu-management.service';\nimport { AppStateHelperService, ComponentContextService, RightsService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, CideIconComponent, CideEleFileInputComponent, CideEleJsonEditorComponent, CideFormFieldErrorComponent, ConfirmationService } from 'cloud-ide-element';\nimport { ICoreSypg, ICoreSyme, MSystemPagesInsertUpdatePayload, MMenuListPayload, MCoreSymeInsertUpdatePayload, generateObjectFromString, generateStringFromObject, systemPagesByIdControllerResponse, systemPagesInsertUpdateControllerResponse, menuListControllerResponse, menuInsertUpdateControllerResponse, menuByIdControllerResponse } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-page-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideEleJsonEditorComponent,\n CideFormFieldErrorComponent\n ],\n templateUrl: './page-form.component.html',\n styleUrls: ['./page-form.component.scss']\n})\nexport class CideCorePageFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private pageService = inject(CideCorePageManagementService);\n private menuService = inject(MenuManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private componentContextService = inject(ComponentContextService);\n private rightsService = inject(RightsService);\n private confirmationService = inject(ConfirmationService);\n\n loading = signal(false);\n error = signal<string | null>(null);\n success = signal<string | null>(null);\n\n // Page information\n pageId = signal<string | null>(null);\n isEditMode = signal(false);\n\n // Menu mapping\n enableMenuMapping = signal(false);\n menuMappingMode = signal<'none' | 'existing' | 'new'>('none');\n existingMenus = signal<ICoreSyme[]>([]);\n menusLoading = signal(false);\n selectedMenuId = signal<string | null>(null);\n \n // New menu form\n newMenuForm = this.fb.group({\n syme_title: ['', [Validators.required, Validators.maxLength(100)]],\n syme_desc: ['', [Validators.maxLength(255)]],\n syme_type: ['menu' as 'module' | 'section' | 'menu' | 'title', [Validators.required]],\n syme_path: ['', [Validators.maxLength(255)]],\n syme_icon: ['', [Validators.maxLength(40)]],\n syme_id_syme: [''],\n syme_order_by: [1, [Validators.required, Validators.min(1)]],\n syme_isactive: [true]\n });\n\n pageForm = this.fb.group({\n sypg_title: ['', [Validators.required, Validators.maxLength(100)]],\n sypg_desc: ['', [Validators.maxLength(255)]],\n sypg_page_code: ['', [Validators.required, Validators.maxLength(40), Validators.pattern(/^[a-zA-Z0-9_]+$/)]],\n sypg_configuration: ['{}', [Validators.required]],\n sypg_isactive: [true]\n });\n\n // Menu options for dropdown\n menuOptions = computed(() => {\n return this.existingMenus().map(menu => ({\n value: menu._id || '',\n label: menu.syme_title || 'Untitled Menu'\n }));\n });\n\n constructor() {\n this.setupFormSubscriptions();\n }\n\n ngOnInit(): void {\n // Initialize rights for page management\n this.rightsService.initializeRights('core_page_management');\n // Check for page ID in query parameters\n this.checkForPageId();\n // Load menus for mapping (only in create mode)\n if (!this.isEditMode()) {\n this.loadMenus();\n }\n }\n\n // Load menus for mapping\n loadMenus(): void {\n this.menusLoading.set(true);\n const payload: MMenuListPayload = {\n pageIndex: 1,\n pageSize: 1000,\n sort: { order: 'asc', key: 'syme_order_by' }\n };\n\n this.menuService.getMenuList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: menuListControllerResponse) => {\n if (response.success && response.data) {\n this.existingMenus.set(response.data);\n }\n this.menusLoading.set(false);\n },\n error: (error: unknown) => {\n console.error('Error loading menus:', error);\n this.menusLoading.set(false);\n }\n });\n }\n\n // Toggle menu mapping section\n toggleMenuMapping(): void {\n this.enableMenuMapping.set(!this.enableMenuMapping());\n if (this.enableMenuMapping() && this.existingMenus().length === 0) {\n this.loadMenus();\n }\n }\n\n // Handle menu mapping mode change\n onMenuMappingModeChange(mode: 'none' | 'existing' | 'new'): void {\n this.menuMappingMode.set(mode);\n if (mode === 'existing') {\n this.selectedMenuId.set(null);\n } else if (mode === 'new') {\n // Auto-fill menu title from page title\n const pageTitle = this.pageForm.get('sypg_title')?.value || '';\n this.newMenuForm.patchValue({\n syme_title: pageTitle,\n syme_path: this.pageForm.get('sypg_page_code')?.value || ''\n });\n }\n }\n\n // Handle menu selection change\n onMenuSelectionChange(value: string | number | string[] | null): void {\n // Convert the value to string or null\n if (value === null || value === undefined || value === '') {\n this.selectedMenuId.set(null);\n } else if (typeof value === 'string') {\n this.selectedMenuId.set(value);\n } else if (typeof value === 'number') {\n this.selectedMenuId.set(String(value));\n } else if (Array.isArray(value) && value.length > 0) {\n // If it's an array, take the first value and convert to string\n this.selectedMenuId.set(String(value[0]));\n } else {\n this.selectedMenuId.set(null);\n }\n }\n\n\n\n // Check for page ID in query parameters\n private checkForPageId() {\n console.log('🔍 Checking for page ID in query parameters', this.route.params);\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n console.log('🔍 Query params:', params);\n // Check for pageId, id, or page parameter\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n\n // If pageId is an object string (from generateStringFromObject), try to parse it\n const pageId = queryData.sypg_id;\n if (pageId) {\n console.log('🔍 Page ID found in query params:', pageId);\n this.pageId.set(pageId);\n this.isEditMode.set(true);\n this.loadPageData(pageId);\n } else {\n console.log('🆕 No page ID found - creating new page');\n this.isEditMode.set(false);\n this.pageId.set(null);\n }\n });\n }\n\n // Load page data for editing\n private loadPageData(pageId: string) {\n this.loading.set(true);\n this.error.set(null);\n\n console.log('📥 Loading page data for ID:', pageId);\n\n this.pageService.getPageById(pageId).pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: (response: systemPagesByIdControllerResponse) => {\n console.log('✅ Page data loaded:', response);\n \n if (response?.success && response?.data) {\n const pageData = response.data;\n if (pageData) {\n this.populateFormWithPageData(pageData);\n this.success.set('Page data loaded successfully');\n } else {\n this.error.set('Page data not found');\n console.error('❌ Page data not found in response:', response);\n }\n } else {\n this.error.set('Failed to load page data');\n console.error('❌ Page data response invalid:', response);\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error('❌ Failed to load page data:', err);\n \n let errorMessage = 'Failed to load page data.';\n \n if (err?.error?.message) {\n errorMessage = err.error.message;\n } else if (err?.message) {\n errorMessage = err.message;\n } else if (err?.status === 404) {\n errorMessage = 'Page not found.';\n } else if (err?.status === 500) {\n errorMessage = 'Server error. Please try again later.';\n }\n \n this.error.set(errorMessage);\n this.loading.set(false);\n }\n });\n }\n\n // Populate form with page data\n private populateFormWithPageData(pageData: ICoreSypg) {\n try {\n console.log('📝 Populating form with page data:', pageData);\n\n const formData = {\n sypg_title: pageData.sypg_title || '',\n sypg_desc: pageData.sypg_desc || '',\n sypg_page_code: pageData.sypg_page_code || '',\n sypg_configuration: pageData.sypg_configuration ? JSON.stringify(pageData.sypg_configuration) : '{}',\n sypg_isactive: pageData.sypg_isactive !== undefined ? pageData.sypg_isactive : true\n };\n\n // Patch the form with the page data\n this.pageForm.patchValue(formData, { emitEvent: false });\n\n console.log('✅ Form populated successfully');\n } catch (error) {\n console.error('💥 Error populating form with page data:', error);\n this.error.set('Error loading page data into form');\n }\n }\n\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.pageForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n // Computed values\n isFormDirty = computed(() => this.pageForm.dirty);\n \n // Rights computed signals\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canView = computed(() => this.rightsService.hasRight('VIEW'));\n\n // Form submission\n savePage(): void {\n if (!this.pageForm.valid) {\n this.markFormAsTouched();\n return;\n }\n\n // Validate menu mapping if enabled\n if (this.enableMenuMapping() && !this.isEditMode()) {\n if (this.menuMappingMode() === 'existing' && !this.selectedMenuId()) {\n this.error.set('Please select a menu item to map this page to');\n return;\n }\n if (this.menuMappingMode() === 'new' && !this.newMenuForm.valid) {\n this.markMenuFormAsTouched();\n this.error.set('Please fill in all required menu fields');\n return;\n }\n }\n\n const formValue = this.pageForm.getRawValue();\n \n const pageData: MSystemPagesInsertUpdatePayload = {\n _id: this.pageId() || '',\n sypg_title: formValue.sypg_title,\n sypg_desc: formValue.sypg_desc,\n sypg_page_code: formValue.sypg_page_code,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n\n this.loading.set(true);\n this.error.set(null);\n\n this.pageService.createOrUpdatePage(pageData)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: systemPagesInsertUpdateControllerResponse) => {\n if (response.success) {\n const savedPageId = response.data?._id || this.pageId();\n const savedPageData = response.data;\n this.success.set(this.isEditMode() ? 'Page updated successfully' : 'Page created successfully');\n console.log('✅ Page saved successfully');\n \n // Handle menu mapping if enabled (only in create mode)\n if (this.enableMenuMapping() && !this.isEditMode() && savedPageId) {\n this.handleMenuMapping(savedPageId, savedPageData || null);\n } else {\n // For new pages, show confirmation dialog suggesting to create theme\n if (!this.isEditMode() && savedPageId && savedPageData) {\n this.showCreateThemeConfirmation(savedPageId, savedPageData);\n } else {\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n }\n }\n this.loading.set(false);\n } else {\n this.error.set(response.message || 'Failed to save page');\n console.error('❌ Failed to save page:', response.message);\n this.loading.set(false);\n }\n },\n error: (error: unknown) => {\n console.error('❌ Error saving page:', error);\n this.error.set('Failed to save page. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n // Handle menu mapping after page creation\n private handleMenuMapping(pageId: string, pageData: ICoreSypg | null): void {\n if (this.menuMappingMode() === 'none') {\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n return;\n }\n\n if (this.menuMappingMode() === 'existing' && this.selectedMenuId()) {\n // Update existing menu to include this page\n this.menuService.getMenuItemById(this.selectedMenuId()!)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: menuByIdControllerResponse) => {\n if (response.success && response.data) {\n const menu = response.data;\n const existingPages = Array.isArray(menu.syme_pages_id_sypg) \n ? [...menu.syme_pages_id_sypg] \n : [];\n \n // Check if page ID already exists\n const pageIdStr = pageId.toString();\n if (!existingPages.some(p => p?.toString() === pageIdStr)) {\n existingPages.push(pageId as unknown as string);\n }\n \n const updatePayload: ICoreSyme = {\n ...menu,\n syme_pages_id_sypg: existingPages\n };\n\n this.menuService.updateMenuItem(this.selectedMenuId()!, updatePayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.success.set('Page created and mapped to menu successfully');\n this.loading.set(false);\n // Show theme creation confirmation after menu mapping\n if (pageData) {\n this.showCreateThemeConfirmation(pageId, pageData);\n } else {\n // Fallback to form data if pageData is not available\n const formValue = this.pageForm.getRawValue();\n const fallbackPageData: ICoreSypg = {\n _id: pageId,\n sypg_title: formValue.sypg_title,\n sypg_page_code: formValue.sypg_page_code,\n sypg_desc: formValue.sypg_desc,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n this.showCreateThemeConfirmation(pageId, fallbackPageData);\n }\n },\n error: (error: unknown) => {\n console.error('Error mapping page to menu:', error);\n this.success.set('Page created successfully, but menu mapping failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n } else {\n this.loading.set(false);\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n }\n },\n error: (error: unknown) => {\n console.error('Error fetching menu:', error);\n this.success.set('Page created successfully, but menu mapping failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n } else if (this.menuMappingMode() === 'new') {\n // Create new menu item with this page\n const menuFormValue = this.newMenuForm.getRawValue();\n const newMenuPayload: ICoreSyme = {\n syme_title: menuFormValue.syme_title,\n syme_desc: menuFormValue.syme_desc || '',\n syme_type: menuFormValue.syme_type,\n syme_path: menuFormValue.syme_path || this.pageForm.get('sypg_page_code')?.value || '',\n syme_icon: menuFormValue.syme_icon || '',\n syme_id_syme: menuFormValue.syme_id_syme || undefined,\n syme_order_by: menuFormValue.syme_order_by,\n syme_isactive: menuFormValue.syme_isactive,\n syme_pages_id_sypg: [pageId as any]\n };\n\n this.menuService.createMenuItem(newMenuPayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.success.set('Page created and new menu item created successfully');\n this.loading.set(false);\n // Show theme creation confirmation after menu creation\n if (pageData) {\n this.showCreateThemeConfirmation(pageId, pageData);\n } else {\n // Fallback to form data if pageData is not available\n const formValue = this.pageForm.getRawValue();\n const fallbackPageData: ICoreSypg = {\n _id: pageId,\n sypg_title: formValue.sypg_title,\n sypg_page_code: formValue.sypg_page_code,\n sypg_desc: formValue.sypg_desc,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n this.showCreateThemeConfirmation(pageId, fallbackPageData);\n }\n },\n error: (error: unknown) => {\n console.error('Error creating menu:', error);\n this.success.set('Page created successfully, but menu creation failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n }\n }\n\n // Mark menu form as touched\n private markMenuFormAsTouched(): void {\n Object.keys(this.newMenuForm.controls).forEach(key => {\n const control = this.newMenuForm.get(key);\n control?.markAsTouched();\n });\n }\n\n // Cancel form\n cancelForm(): void {\n this.componentContextService.close(['/control-panel/page']);\n }\n\n // Go back to page list\n goBack(): void {\n this.componentContextService.close(['/control-panel/page']);\n }\n\n // Reset form - reload data in edit mode, reset to defaults in create mode\n resetForm(): void {\n if (this.isEditMode() && this.pageId()) {\n this.loadPageData(this.pageId()!);\n } else {\n this.pageForm.reset({\n sypg_isactive: true,\n sypg_configuration: '{}'\n });\n }\n }\n\n // Mark form as touched to trigger validation display\n private markFormAsTouched(): void {\n Object.keys(this.pageForm.controls).forEach(key => {\n const control = this.pageForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Show confirmation dialog suggesting to create theme after page creation\n */\n private showCreateThemeConfirmation(pageId: string, pageData: ICoreSypg): void {\n this.confirmationService.ask({\n title: 'Page Created Successfully!',\n message: `Would you like to create a theme for this page? This will set up the default theme configuration for \"${pageData.sypg_title || pageData.sypg_page_code}\".`,\n confirmText: 'Create Theme',\n cancelText: 'Skip',\n type: 'success',\n icon: 'palette'\n }).then((confirmed: boolean) => {\n if (confirmed) {\n // Navigate to theme page with page data\n const queryData = {\n sypg_id: pageId,\n sypg_title: pageData.sypg_title || '',\n sypg_page_code: pageData.sypg_page_code || ''\n };\n \n // Generate query string from object using utility function\n const queryString = generateStringFromObject(queryData);\n \n // Navigate to theme page with query params\n this.router.navigate(['/control-panel/page-theme', queryString]);\n } else {\n // User chose to skip - close and go to page list\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 500);\n }\n });\n }\n}\n","<div class=\"page-form-wrapper\">\n <div class=\"page-form-container\">\n <form class=\"page-form\" [formGroup]=\"pageForm\" [class.loading]=\"loading()\" (ngSubmit)=\"savePage()\">\n \n <!-- Header Section -->\n <div class=\"form-header\">\n <h2 class=\"form-title\">{{ isEditMode() ? 'Edit Page' : 'Create Page' }}</h2>\n <p class=\"form-subtitle\">\n {{ isEditMode() ? 'Update page information and configuration' : 'Create a new page with configuration' }}\n </p>\n </div>\n\n <!-- Success and Error Messages -->\n <div class=\"form-messages\">\n @if (success()) {\n <div class=\"alert alert-success\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path>\n </svg>\n <span>{{ success() }}</span>\n </div>\n }\n @if (error()) {\n <div class=\"alert alert-error\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n <span>{{ error() }}</span>\n </div>\n }\n </div>\n\n <!-- Form Content -->\n <div class=\"form-content\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_title\"\n label=\"Page Title\" \n formControlName=\"sypg_title\"\n placeholder=\"Enter page title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n \n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_page_code\"\n label=\"Page Code\" \n formControlName=\"sypg_page_code\"\n placeholder=\"Enter page code (alphanumeric and underscore only)\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea \n id=\"sypg_desc\"\n label=\"Page Description\" \n formControlName=\"sypg_desc\"\n placeholder=\"Enter page description\"\n [rows]=\"3\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-json-editor\n id=\"sypg_configuration\"\n label=\"Configuration JSON\"\n formControlName=\"sypg_configuration\"\n placeholder='{\"key\": \"value\"}'>\n </cide-ele-json-editor>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"sypg_isactive\"\n type=\"checkbox\"\n formControlName=\"sypg_isactive\"\n label=\"Active Status\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Menu Mapping Section (Only in Create Mode) -->\n @if (!isEditMode()) {\n <div class=\"form-row form-row-1\">\n <div class=\"form-field menu-mapping-section\">\n <div class=\"menu-mapping-header\">\n <div class=\"menu-mapping-toggle\">\n <input\n type=\"checkbox\"\n id=\"enable_menu_mapping\"\n [checked]=\"enableMenuMapping()\"\n (change)=\"toggleMenuMapping()\"\n class=\"menu-mapping-checkbox\">\n <label for=\"enable_menu_mapping\" class=\"menu-mapping-label-checkbox\">Map to Menu</label>\n </div>\n <span class=\"menu-mapping-hint\">Optionally map this page to a menu item during creation</span>\n </div>\n\n @if (enableMenuMapping()) {\n <div class=\"menu-mapping-content\">\n <!-- Menu Mapping Mode Selection -->\n <div class=\"menu-mapping-mode\">\n <label class=\"menu-mapping-label\">Mapping Option:</label>\n <div class=\"menu-mapping-options\">\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'none'\"\n (click)=\"onMenuMappingModeChange('none')\">\n Skip Mapping\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'existing'\"\n (click)=\"onMenuMappingModeChange('existing')\">\n Map to Existing Menu\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'new'\"\n (click)=\"onMenuMappingModeChange('new')\">\n Create New Menu\n </button>\n </div>\n </div>\n\n <!-- Existing Menu Selection -->\n @if (menuMappingMode() === 'existing') {\n <div class=\"menu-mapping-form\">\n <cide-ele-select\n label=\"Select Menu Item\"\n [options]=\"menuOptions()\"\n [loading]=\"menusLoading()\"\n placeholder=\"Choose a menu item to map this page to\"\n [searchable]=\"true\"\n size=\"md\"\n [ngModel]=\"selectedMenuId() ?? ''\"\n (ngModelChange)=\"onMenuSelectionChange($event)\">\n </cide-ele-select>\n <p class=\"menu-mapping-help\">\n This page will be added to the selected menu item's page list.\n </p>\n </div>\n }\n\n <!-- New Menu Creation Form -->\n @if (menuMappingMode() === 'new') {\n <div class=\"menu-mapping-form\">\n <form [formGroup]=\"newMenuForm\" class=\"new-menu-form\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_title\"\n label=\"Menu Title\"\n formControlName=\"syme_title\"\n placeholder=\"Enter menu title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-select\n label=\"Menu Type\"\n formControlName=\"syme_type\"\n [options]=\"[\n { value: 'menu', label: 'Menu Item' },\n { value: 'section', label: 'Section' },\n { value: 'title', label: 'Title' }\n ]\"\n placeholder=\"Select menu type\"\n size=\"md\">\n </cide-ele-select>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_path\"\n label=\"Menu Path\"\n formControlName=\"syme_path\"\n placeholder=\"e.g., /control-panel/page\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_icon\"\n label=\"Icon\"\n formControlName=\"syme_icon\"\n placeholder=\"e.g., dashboard, settings\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea\n id=\"syme_desc\"\n label=\"Menu Description\"\n formControlName=\"syme_desc\"\n placeholder=\"Enter menu description (optional)\"\n [rows]=\"2\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_order_by\"\n label=\"Order\"\n formControlName=\"syme_order_by\"\n type=\"number\"\n placeholder=\"Menu order\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_isactive\"\n type=\"checkbox\"\n formControlName=\"syme_isactive\"\n label=\"Active\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n </form>\n <p class=\"menu-mapping-help\">\n A new menu item will be created and this page will be automatically mapped to it.\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <div class=\"form-actions-content\">\n <!-- Error Message (Left Side) -->\n <div class=\"form-actions-error\">\n <cide-form-field-error [formGroup]=\"pageForm\"></cide-form-field-error>\n </div>\n \n <!-- Action Buttons (Right Side) -->\n <div class=\"form-actions-buttons\">\n @if (!isEditMode()) {\n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"resetForm()\" \n leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n }\n \n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"cancelForm()\" \n leftIcon=\"close\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n \n <button cideEleButton\n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"loading() || !pageForm.valid\"\n [loading]=\"loading()\"\n leftIcon=\"save\">\n {{ isEditMode() ? 'Update Page' : 'Create Page' }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n</div>\n"],"names":[],"mappings":";;;;;;;;;;;;MA6Ba,yBAAyB,CAAA;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,WAAW,GAAG,MAAM,CAAC,6BAA6B,CAAC;AACnD,IAAA,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC3C,IAAA,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACxC,IAAA,EAAE,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACnC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzD,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEzD,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,iDAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAgB,IAAI,mDAAC;;AAGrC,IAAA,MAAM,GAAG,MAAM,CAAgB,IAAI,kDAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;;AAG1B,IAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,6DAAC;AACjC,IAAA,eAAe,GAAG,MAAM,CAA8B,MAAM,2DAAC;AAC7D,IAAA,aAAa,GAAG,MAAM,CAAc,EAAE,yDAAC;AACvC,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,IAAA,cAAc,GAAG,MAAM,CAAgB,IAAI,0DAAC;;AAG5C,IAAA,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1B,QAAA,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,QAAA,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,SAAS,EAAE,CAAC,MAAiD,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrF,QAAA,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,QAAA,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,YAAY,EAAE,CAAC,EAAE,CAAC;AAClB,QAAA,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,aAAa,EAAE,CAAC,IAAI;AACrB,KAAA,CAAC;AAEF,IAAA,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACvB,QAAA,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,QAAA,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5G,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,aAAa,EAAE,CAAC,IAAI;AACrB,KAAA,CAAC;;AAGF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK;AACvC,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;AACrB,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI;AAC3B,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,uDAAC;AAEF,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;;QAE3D,IAAI,CAAC,cAAc,EAAE;;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,MAAM,OAAO,GAAqB;AAChC,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe;SAC3C;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO;AACjC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAoC,KAAI;gBAC7C,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACvC;AACA,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9B,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9B;AACD,SAAA,CAAC;IACN;;IAGA,iBAAiB,GAAA;QACf,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YACjE,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;;AAGA,IAAA,uBAAuB,CAAC,IAAiC,EAAA;AACvD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B;AAAO,aAAA,IAAI,IAAI,KAAK,KAAK,EAAE;;AAEzB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,EAAE;AAC9D,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AAC1B,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,IAAI;AAC1D,aAAA,CAAC;QACJ;IACF;;AAGA,IAAA,qBAAqB,CAAC,KAAwC,EAAA;;AAE5D,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAChC;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEnD,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B;IACF;;IAKQ,cAAc,GAAA;QACpB,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7E,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC7E,YAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC;;AAEvC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,YAAA,MAAM,SAAS,GAAG,wBAAwB,CAAC,WAAW,CAAC;;AAGvD,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO;YAChC,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC;AACxD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3B;iBAAO;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC;AACtD,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB;AACF,QAAA,CAAC,CAAC;IACJ;;AAGQ,IAAA,YAAY,CAAC,MAAc,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAEpB,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC;AAEnD,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CACvC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC,CAAC,SAAS,CAAC;AACV,YAAA,IAAI,EAAE,CAAC,QAA2C,KAAI;AACpD,gBAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC;gBAE5C,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,IAAI,EAAE;AACvC,oBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI;oBAC9B,IAAI,QAAQ,EAAE;AACZ,wBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;AACvC,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;oBACnD;yBAAO;AACL,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;AACrC,wBAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,QAAQ,CAAC;oBAC/D;gBACF;qBAAO;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,QAAQ,CAAC;gBAC1D;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;gBAEjD,IAAI,YAAY,GAAG,2BAA2B;AAE9C,gBAAA,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;AACvB,oBAAA,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO;gBAClC;AAAO,qBAAA,IAAI,GAAG,EAAE,OAAO,EAAE;AACvB,oBAAA,YAAY,GAAG,GAAG,CAAC,OAAO;gBAC5B;AAAO,qBAAA,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE;oBAC9B,YAAY,GAAG,iBAAiB;gBAClC;AAAO,qBAAA,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE;oBAC9B,YAAY,GAAG,uCAAuC;gBACxD;AAEA,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5B,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;AACD,SAAA,CAAC;IACJ;;AAGQ,IAAA,wBAAwB,CAAC,QAAmB,EAAA;AAClD,QAAA,IAAI;AACF,YAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,QAAQ,CAAC;AAE3D,YAAA,MAAM,QAAQ,GAAG;AACf,gBAAA,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;AACrC,gBAAA,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE;AACnC,gBAAA,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,EAAE;AAC7C,gBAAA,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI;AACpG,gBAAA,aAAa,EAAE,QAAQ,CAAC,aAAa,KAAK,SAAS,GAAG,QAAQ,CAAC,aAAa,GAAG;aAChF;;AAGD,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAExD,YAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;QAC9C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC;AAChE,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC;QACrD;IACF;IAEQ,sBAAsB,GAAA;;QAE5B,IAAI,CAAC,QAAQ,CAAC;AACX,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAK;;AAEhB,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGjD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,qDAAC;AACjE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,mDAAC;AAC7D,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,mDAAC;;IAG7D,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACxB,IAAI,CAAC,iBAAiB,EAAE;YACxB;QACF;;QAGA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AAClD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACnE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC;gBAC/D;YACF;AACA,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBAC/D,IAAI,CAAC,qBAAqB,EAAE;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC;gBACzD;YACF;QACF;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AAE7C,QAAA,MAAM,QAAQ,GAAoC;AAChD,YAAA,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;YACxB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;YAChD,aAAa,EAAE,SAAS,CAAC;SAC1B;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAEpB,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ;AACzC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAmD,KAAI;AAC5D,gBAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACpB,oBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;AACvD,oBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI;AACnC,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,2BAA2B,GAAG,2BAA2B,CAAC;AAC/F,oBAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;;AAGxC,oBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;wBACjE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,aAAa,IAAI,IAAI,CAAC;oBAC5D;yBAAO;;wBAEL,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,IAAI,aAAa,EAAE;AACtD,4BAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,aAAa,CAAC;wBAC9D;6BAAO;4BACL,UAAU,CAAC,MAAK;gCACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;4BAC7D,CAAC,EAAE,IAAI,CAAC;wBACV;oBACF;AACA,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB;qBAAO;oBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,qBAAqB,CAAC;oBACzD,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC;AACzD,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB;YACF,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC;AACxD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;AACD,SAAA,CAAC;IACN;;IAGQ,iBAAiB,CAAC,MAAc,EAAE,QAA0B,EAAA;AAClE,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,MAAM,EAAE;YACrC,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;YAC7D,CAAC,EAAE,IAAI,CAAC;YACR;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;;YAElE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAG;AACpD,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,QAAoC,KAAI;oBAC7C,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;AACrC,wBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;wBAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB;AACzD,8BAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB;8BAC3B,EAAE;;AAGN,wBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE;AACnC,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,SAAS,CAAC,EAAE;AACzD,4BAAA,aAAa,CAAC,IAAI,CAAC,MAA2B,CAAC;wBACjD;AAEA,wBAAA,MAAM,aAAa,GAAc;AAC/B,4BAAA,GAAG,IAAI;AACP,4BAAA,kBAAkB,EAAE;yBACrB;wBAED,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAG,EAAE,aAAa;AAClE,6BAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,6BAAA,SAAS,CAAC;4BACT,IAAI,EAAE,MAAK;AACT,gCAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC;AAChE,gCAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;gCAEvB,IAAI,QAAQ,EAAE;AACZ,oCAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC;gCACpD;qCAAO;;oCAEL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC7C,oCAAA,MAAM,gBAAgB,GAAc;AAClC,wCAAA,GAAG,EAAE,MAAM;wCACX,UAAU,EAAE,SAAS,CAAC,UAAU;wCAChC,cAAc,EAAE,SAAS,CAAC,cAAc;wCACxC,SAAS,EAAE,SAAS,CAAC,SAAS;wCAC9B,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;wCAChD,aAAa,EAAE,SAAS,CAAC;qCAC1B;AACD,oCAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,CAAC;gCAC5D;4BACF,CAAC;AACD,4BAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,gCAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;AACnD,gCAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC;gCACtE,UAAU,CAAC,MAAK;oCACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;gCAC7D,CAAC,EAAE,IAAI,CAAC;AACR,gCAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;4BACzB;AACD,yBAAA,CAAC;oBACN;yBAAO;AACL,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;wBACvB,UAAU,CAAC,MAAK;4BACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;wBAC7D,CAAC,EAAE,IAAI,CAAC;oBACV;gBACF,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,oBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC;oBACtE,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;oBAC7D,CAAC,EAAE,IAAI,CAAC;AACR,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB;AACD,aAAA,CAAC;QACN;AAAO,aAAA,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,KAAK,EAAE;;YAE3C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AACpD,YAAA,MAAM,cAAc,GAAc;gBAChC,UAAU,EAAE,aAAa,CAAC,UAAU;AACpC,gBAAA,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,EAAE;gBACxC,SAAS,EAAE,aAAa,CAAC,SAAS;AAClC,gBAAA,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,IAAI,EAAE;AACtF,gBAAA,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,EAAE;AACxC,gBAAA,YAAY,EAAE,aAAa,CAAC,YAAY,IAAI,SAAS;gBACrD,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,kBAAkB,EAAE,CAAC,MAAa;aACnC;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc;AAC3C,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,MAAK;AACT,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC;AACvE,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;oBAEvB,IAAI,QAAQ,EAAE;AACZ,wBAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC;oBACpD;yBAAO;;wBAEL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC7C,wBAAA,MAAM,gBAAgB,GAAc;AAClC,4BAAA,GAAG,EAAE,MAAM;4BACX,UAAU,EAAE,SAAS,CAAC,UAAU;4BAChC,cAAc,EAAE,SAAS,CAAC,cAAc;4BACxC,SAAS,EAAE,SAAS,CAAC,SAAS;4BAC9B,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;4BAChD,aAAa,EAAE,SAAS,CAAC;yBAC1B;AACD,wBAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,CAAC;oBAC5D;gBACF,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,oBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC;oBACvE,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;oBAC7D,CAAC,EAAE,IAAI,CAAC;AACR,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB;AACD,aAAA,CAAC;QACN;IACF;;IAGQ,qBAAqB,GAAA;AAC3B,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YACzC,OAAO,EAAE,aAAa,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;;IAGA,UAAU,GAAA;QACR,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC7D;;IAGA,MAAM,GAAA;QACJ,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC7D;;IAGA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAG,CAAC;QACnC;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClB,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,kBAAkB,EAAE;AACrB,aAAA,CAAC;QACJ;IACF;;IAGQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YACtC,OAAO,EAAE,aAAa,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,2BAA2B,CAAC,MAAc,EAAE,QAAmB,EAAA;AACrE,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAC3B,YAAA,KAAK,EAAE,4BAA4B;YACnC,OAAO,EAAE,yGAAyG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,cAAc,CAAA,EAAA,CAAI;AACpK,YAAA,WAAW,EAAE,cAAc;AAC3B,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE;AACP,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,SAAkB,KAAI;YAC7B,IAAI,SAAS,EAAE;;AAEb,gBAAA,MAAM,SAAS,GAAG;AAChB,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;AACrC,oBAAA,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI;iBAC5C;;AAGD,gBAAA,MAAM,WAAW,GAAG,wBAAwB,CAAC,SAAS,CAAC;;gBAGvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;YAClE;iBAAO;;gBAEL,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;gBAC7D,CAAC,EAAE,GAAG,CAAC;YACT;AACF,QAAA,CAAC,CAAC;IACJ;wGA1gBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,+EC7BtC,4uYAwSA,EAAA,MAAA,EAAA,CAAA,u+OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxRI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,4rBACnB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,sBAAsB,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,kBAAkB,kcAClB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,0BAA0B,mOAC1B,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKlB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,sBAAsB;wBACtB,kBAAkB;wBAClB,mBAAmB;wBACnB,qBAAqB;wBACrB,0BAA0B;wBAC1B;AACD,qBAAA,EAAA,QAAA,EAAA,4uYAAA,EAAA,MAAA,EAAA,CAAA,u+OAAA,CAAA,EAAA;;;;;"}
|
|
@@ -113,10 +113,10 @@ class CideCoreWorkflowRegistryService {
|
|
|
113
113
|
]);
|
|
114
114
|
return this.http.get(url);
|
|
115
115
|
}
|
|
116
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
117
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CideCoreWorkflowRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CideCoreWorkflowRegistryService, providedIn: 'root' });
|
|
118
118
|
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CideCoreWorkflowRegistryService, decorators: [{
|
|
120
120
|
type: Injectable,
|
|
121
121
|
args: [{
|
|
122
122
|
providedIn: 'root'
|
|
@@ -231,8 +231,8 @@ class CideCoreWorkflowRegistryListComponent {
|
|
|
231
231
|
onGridEvent(event) {
|
|
232
232
|
// Handle grid events
|
|
233
233
|
}
|
|
234
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
235
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
234
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CideCoreWorkflowRegistryListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
235
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CideCoreWorkflowRegistryListComponent, isStandalone: true, selector: "cide-core-workflow-registry-list", ngImport: i0, template: `
|
|
236
236
|
<div class="workflow-registry-list-container">
|
|
237
237
|
<div class="header-actions">
|
|
238
238
|
<cide-ele-button
|
|
@@ -271,7 +271,7 @@ class CideCoreWorkflowRegistryListComponent {
|
|
|
271
271
|
</div>
|
|
272
272
|
`, isInline: true, styles: [".workflow-registry-list-container{padding:1rem;height:100%;display:flex;flex-direction:column}.header-actions{margin-bottom:1rem}.workflow-details{display:flex;flex-direction:column;gap:.25rem}.workflow-name{font-weight:500}.workflow-meta{font-size:.875rem;color:#666;display:flex;gap:1rem}.status-active{color:green}.status-inactive{color:gray}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CideEleDataGridComponent, selector: "cide-ele-data-grid", inputs: ["config", "templateRenderers", "customFormatters", "actionHandlers", "serverSidePagination", "totalServerItems", "currentServerPage", "currentServerPageSize", "dragDropEnabled"], outputs: ["gridEvent"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleDropdownComponent, selector: "cide-ele-dropdown", inputs: ["items", "config", "triggerTemplate", "menuTemplate"], outputs: ["itemClick", "dropdownToggle"] }] });
|
|
273
273
|
}
|
|
274
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CideCoreWorkflowRegistryListComponent, decorators: [{
|
|
275
275
|
type: Component,
|
|
276
276
|
args: [{ selector: 'cide-core-workflow-registry-list', standalone: true, imports: [
|
|
277
277
|
CommonModule,
|
|
@@ -320,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
320
320
|
}] });
|
|
321
321
|
|
|
322
322
|
export { CideCoreWorkflowRegistryListComponent };
|
|
323
|
-
//# sourceMappingURL=cloud-ide-core-workflow-registry-list.component-
|
|
323
|
+
//# sourceMappingURL=cloud-ide-core-workflow-registry-list.component-zwz2r0iS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-core-workflow-registry-list.component-HrnKDaiv.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/workflow-management/services/workflow-registry.service.ts","../../../projects/cloud-ide-core/src/lib/core/workflow-management/components/workflow-registry-list/workflow-registry-list.component.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, generateStringFromObject } from 'cloud-ide-lms-model';\n\nexport interface CreateWorkflowRegistryDto {\n wfrg_entity_id_syen?: string;\n wfrg_page_id_sypg?: string;\n wfrg_menu_id_symu?: string;\n wfrg_category_id_sygms?: string;\n wfrg_component_selector?: string;\n wfrg_component_path?: string;\n wfrg_component_query?: string;\n wfrg_view_mode_id_sygms?: string;\n wfrg_trigger_type_id_sygms?: string;\n wfrg_trigger_condition?: string;\n wfrg_auto_initialize?: boolean;\n wfrg_reinitialize_on_edit?: boolean;\n wfrg_notify_approvers_on_final_status?: boolean;\n wfrg_show_approver_names?: boolean;\n wfrg_mask_approver_info?: boolean;\n wfrg_valid_from_date?: Date;\n wfrg_valid_to_date?: Date;\n wfrg_is_active?: boolean;\n}\n\nexport interface UpdateWorkflowRegistryDto extends CreateWorkflowRegistryDto {\n wfrg_id?: string;\n}\n\nexport interface WorkflowRegistryResponse {\n success: boolean;\n message?: string;\n data?: any;\n total?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CideCoreWorkflowRegistryService {\n private http = inject(HttpClient);\n\n /**\n * Create workflow registry\n */\n createRegistry(data: CreateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry\n ]);\n return this.http.post<WorkflowRegistryResponse>(url, data);\n }\n\n /**\n * Get workflow registry list\n */\n getRegistryList(query?: any): Observable<WorkflowRegistryResponse> {\n const queryString = query ? generateStringFromObject(query) : '';\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n queryString\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by ID\n */\n getRegistryById(id: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n id\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Update workflow registry\n */\n updateRegistry(data: UpdateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\n if (!data.wfrg_id) {\n throw new Error('Workflow registry ID is required for update');\n }\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n data.wfrg_id\n ]);\n return this.http.put<WorkflowRegistryResponse>(url, data);\n }\n\n /**\n * Delete workflow registry\n */\n deleteRegistry(id: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n id\n ]);\n return this.http.delete<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by page ID\n */\n getRegistryByPage(pageId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-page',\n pageId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by menu ID\n */\n getRegistryByMenu(menuId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-menu',\n menuId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by category ID\n */\n getRegistryByCategory(categoryId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-category',\n categoryId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n}\n\n","import { Component, signal, viewChild, TemplateRef, DestroyRef, inject, computed, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CideEleDataGridComponent, CideEleButtonComponent, CideIconComponent, CideEleDropdownComponent, GridConfiguration, TemplateContext } from 'cloud-ide-element';\nimport { AppStateHelperService, RightsService } from 'cloud-ide-layout';\nimport { CideCoreWorkflowRegistryService } from '../../services/workflow-registry.service';\n\n@Component({\n selector: 'cide-core-workflow-registry-list',\n standalone: true,\n imports: [\n CommonModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n template: `\n <div class=\"workflow-registry-list-container\">\n <div class=\"header-actions\">\n <cide-ele-button \n *ngIf=\"canCreate()\"\n (click)=\"createNew()\"\n [variant]=\"'primary'\">\n <cide-ele-icon>plus</cide-ele-icon>\n New Workflow Registry\n </cide-ele-button>\n </div>\n \n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n (gridEvent)=\"onGridEvent($event)\">\n \n <ng-template #workflowDetailsRenderer let-data>\n <div class=\"workflow-details\">\n <div class=\"workflow-name\">{{ data.wfrg_category_id_sygms || 'N/A' }}</div>\n <div class=\"workflow-meta\">\n <span *ngIf=\"data.wfrg_page_id_sypg\">Page: {{ data.wfrg_page_id_sypg }}</span>\n <span *ngIf=\"data.wfrg_menu_id_symu\">Menu: {{ data.wfrg_menu_id_symu }}</span>\n </div>\n </div>\n </ng-template>\n \n <ng-template #statusRenderer let-data>\n <span [class]=\"data.wfrg_is_active ? 'status-active' : 'status-inactive'\">\n {{ data.wfrg_is_active ? 'Active' : 'Inactive' }}\n </span>\n </ng-template>\n \n <ng-template #actionsRenderer let-data>\n <cide-ele-dropdown [items]=\"getActionItems(data)\"></cide-ele-dropdown>\n </ng-template>\n </cide-ele-data-grid>\n </div>\n `,\n styles: [`\n .workflow-registry-list-container {\n padding: 1rem;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .header-actions {\n margin-bottom: 1rem;\n }\n .workflow-details {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n .workflow-name {\n font-weight: 500;\n }\n .workflow-meta {\n font-size: 0.875rem;\n color: #666;\n display: flex;\n gap: 1rem;\n }\n .status-active {\n color: green;\n }\n .status-inactive {\n color: gray;\n }\n `]\n})\nexport class CideCoreWorkflowRegistryListComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private workflowService = inject(CideCoreWorkflowRegistryService);\n private router = inject(Router);\n private rightsService = inject(RightsService);\n\n workflows = signal<any[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n \n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\n\n gridConfig = signal<GridConfiguration<any>>({\n id: 'workflow-registry-grid',\n columns: [\n { key: 'details', header: 'Workflow Details', type: 'custom', width: 'auto', renderer: 'workflowDetailsRenderer' },\n { key: 'wfrg_component_selector', header: 'Component Selector', type: 'text', width: '200px' },\n { key: 'status', header: 'Status', type: 'custom', width: '100px', renderer: 'statusRenderer' },\n { key: 'actions', header: '', type: 'custom', width: '120px', renderer: 'actionsRenderer' }\n ],\n data: [],\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search workflows...',\n searchableColumns: [],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n responsive: true\n });\n\n ngOnInit(): void {\n this.loadWorkflows();\n }\n\n loadWorkflows(): void {\n this.loading.set(true);\n this.workflowService.getRegistryList()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n const workflowsData = Array.isArray(response.data) ? response.data : [];\n this.workflows.set(workflowsData);\n // Update grid config with new data\n this.gridConfig.update(config => ({\n ...config,\n data: workflowsData,\n loading: {\n ...config.loading,\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n }\n }));\n } else {\n this.error.set(response.message || 'Failed to load workflows');\n }\n this.loading.set(false);\n },\n error: (err) => {\n this.error.set('Failed to load workflows');\n this.loading.set(false);\n }\n });\n }\n\n createNew(): void {\n this.router.navigate(['/core/workflow-registry/create']);\n }\n\n editWorkflow(workflow: any): void {\n this.router.navigate(['/core/workflow-registry/edit', workflow.wfrg_id]);\n }\n\n deleteWorkflow(workflow: any): void {\n if (confirm('Are you sure you want to delete this workflow?')) {\n this.workflowService.deleteRegistry(workflow.wfrg_id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadWorkflows();\n }\n }\n });\n }\n }\n\n getActionItems(workflow: any): any[] {\n const items: any[] = [];\n if (this.canEdit()) {\n items.push({ label: 'Edit', action: () => this.editWorkflow(workflow) });\n }\n if (this.canDelete()) {\n items.push({ label: 'Delete', action: () => this.deleteWorkflow(workflow) });\n }\n return items;\n }\n\n onGridEvent(event: any): void {\n // Handle grid events\n }\n}\n\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-core-workflow-registry-list.component-zwz2r0iS.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/workflow-management/services/workflow-registry.service.ts","../../../projects/cloud-ide-core/src/lib/core/workflow-management/components/workflow-registry-list/workflow-registry-list.component.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, generateStringFromObject } from 'cloud-ide-lms-model';\n\nexport interface CreateWorkflowRegistryDto {\n wfrg_entity_id_syen?: string;\n wfrg_page_id_sypg?: string;\n wfrg_menu_id_symu?: string;\n wfrg_category_id_sygms?: string;\n wfrg_component_selector?: string;\n wfrg_component_path?: string;\n wfrg_component_query?: string;\n wfrg_view_mode_id_sygms?: string;\n wfrg_trigger_type_id_sygms?: string;\n wfrg_trigger_condition?: string;\n wfrg_auto_initialize?: boolean;\n wfrg_reinitialize_on_edit?: boolean;\n wfrg_notify_approvers_on_final_status?: boolean;\n wfrg_show_approver_names?: boolean;\n wfrg_mask_approver_info?: boolean;\n wfrg_valid_from_date?: Date;\n wfrg_valid_to_date?: Date;\n wfrg_is_active?: boolean;\n}\n\nexport interface UpdateWorkflowRegistryDto extends CreateWorkflowRegistryDto {\n wfrg_id?: string;\n}\n\nexport interface WorkflowRegistryResponse {\n success: boolean;\n message?: string;\n data?: any;\n total?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CideCoreWorkflowRegistryService {\n private http = inject(HttpClient);\n\n /**\n * Create workflow registry\n */\n createRegistry(data: CreateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry\n ]);\n return this.http.post<WorkflowRegistryResponse>(url, data);\n }\n\n /**\n * Get workflow registry list\n */\n getRegistryList(query?: any): Observable<WorkflowRegistryResponse> {\n const queryString = query ? generateStringFromObject(query) : '';\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n queryString\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by ID\n */\n getRegistryById(id: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n id\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Update workflow registry\n */\n updateRegistry(data: UpdateWorkflowRegistryDto): Observable<WorkflowRegistryResponse> {\n if (!data.wfrg_id) {\n throw new Error('Workflow registry ID is required for update');\n }\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n data.wfrg_id\n ]);\n return this.http.put<WorkflowRegistryResponse>(url, data);\n }\n\n /**\n * Delete workflow registry\n */\n deleteRegistry(id: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n id\n ]);\n return this.http.delete<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by page ID\n */\n getRegistryByPage(pageId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-page',\n pageId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by menu ID\n */\n getRegistryByMenu(menuId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-menu',\n menuId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n\n /**\n * Get workflow registry by category ID\n */\n getRegistryByCategory(categoryId: string): Observable<WorkflowRegistryResponse> {\n const url = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n coreRoutesUrl.workflowRegistry,\n 'by-category',\n categoryId\n ]);\n return this.http.get<WorkflowRegistryResponse>(url);\n }\n}\n\n","import { Component, signal, viewChild, TemplateRef, DestroyRef, inject, computed, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CideEleDataGridComponent, CideEleButtonComponent, CideIconComponent, CideEleDropdownComponent, GridConfiguration, TemplateContext } from 'cloud-ide-element';\nimport { AppStateHelperService, RightsService } from 'cloud-ide-layout';\nimport { CideCoreWorkflowRegistryService } from '../../services/workflow-registry.service';\n\n@Component({\n selector: 'cide-core-workflow-registry-list',\n standalone: true,\n imports: [\n CommonModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n template: `\n <div class=\"workflow-registry-list-container\">\n <div class=\"header-actions\">\n <cide-ele-button \n *ngIf=\"canCreate()\"\n (click)=\"createNew()\"\n [variant]=\"'primary'\">\n <cide-ele-icon>plus</cide-ele-icon>\n New Workflow Registry\n </cide-ele-button>\n </div>\n \n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n (gridEvent)=\"onGridEvent($event)\">\n \n <ng-template #workflowDetailsRenderer let-data>\n <div class=\"workflow-details\">\n <div class=\"workflow-name\">{{ data.wfrg_category_id_sygms || 'N/A' }}</div>\n <div class=\"workflow-meta\">\n <span *ngIf=\"data.wfrg_page_id_sypg\">Page: {{ data.wfrg_page_id_sypg }}</span>\n <span *ngIf=\"data.wfrg_menu_id_symu\">Menu: {{ data.wfrg_menu_id_symu }}</span>\n </div>\n </div>\n </ng-template>\n \n <ng-template #statusRenderer let-data>\n <span [class]=\"data.wfrg_is_active ? 'status-active' : 'status-inactive'\">\n {{ data.wfrg_is_active ? 'Active' : 'Inactive' }}\n </span>\n </ng-template>\n \n <ng-template #actionsRenderer let-data>\n <cide-ele-dropdown [items]=\"getActionItems(data)\"></cide-ele-dropdown>\n </ng-template>\n </cide-ele-data-grid>\n </div>\n `,\n styles: [`\n .workflow-registry-list-container {\n padding: 1rem;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .header-actions {\n margin-bottom: 1rem;\n }\n .workflow-details {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n .workflow-name {\n font-weight: 500;\n }\n .workflow-meta {\n font-size: 0.875rem;\n color: #666;\n display: flex;\n gap: 1rem;\n }\n .status-active {\n color: green;\n }\n .status-inactive {\n color: gray;\n }\n `]\n})\nexport class CideCoreWorkflowRegistryListComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private workflowService = inject(CideCoreWorkflowRegistryService);\n private router = inject(Router);\n private rightsService = inject(RightsService);\n\n workflows = signal<any[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n \n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\n\n gridConfig = signal<GridConfiguration<any>>({\n id: 'workflow-registry-grid',\n columns: [\n { key: 'details', header: 'Workflow Details', type: 'custom', width: 'auto', renderer: 'workflowDetailsRenderer' },\n { key: 'wfrg_component_selector', header: 'Component Selector', type: 'text', width: '200px' },\n { key: 'status', header: 'Status', type: 'custom', width: '100px', renderer: 'statusRenderer' },\n { key: 'actions', header: '', type: 'custom', width: '120px', renderer: 'actionsRenderer' }\n ],\n data: [],\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search workflows...',\n searchableColumns: [],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n responsive: true\n });\n\n ngOnInit(): void {\n this.loadWorkflows();\n }\n\n loadWorkflows(): void {\n this.loading.set(true);\n this.workflowService.getRegistryList()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n const workflowsData = Array.isArray(response.data) ? response.data : [];\n this.workflows.set(workflowsData);\n // Update grid config with new data\n this.gridConfig.update(config => ({\n ...config,\n data: workflowsData,\n loading: {\n ...config.loading,\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n }\n }));\n } else {\n this.error.set(response.message || 'Failed to load workflows');\n }\n this.loading.set(false);\n },\n error: (err) => {\n this.error.set('Failed to load workflows');\n this.loading.set(false);\n }\n });\n }\n\n createNew(): void {\n this.router.navigate(['/core/workflow-registry/create']);\n }\n\n editWorkflow(workflow: any): void {\n this.router.navigate(['/core/workflow-registry/edit', workflow.wfrg_id]);\n }\n\n deleteWorkflow(workflow: any): void {\n if (confirm('Are you sure you want to delete this workflow?')) {\n this.workflowService.deleteRegistry(workflow.wfrg_id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadWorkflows();\n }\n }\n });\n }\n }\n\n getActionItems(workflow: any): any[] {\n const items: any[] = [];\n if (this.canEdit()) {\n items.push({ label: 'Edit', action: () => this.editWorkflow(workflow) });\n }\n if (this.canDelete()) {\n items.push({ label: 'Delete', action: () => this.deleteWorkflow(workflow) });\n }\n return items;\n }\n\n onGridEvent(event: any): void {\n // Handle grid events\n }\n}\n\n"],"names":[],"mappings":"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"}
|