@masterteam/governance 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/assets/governance.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! tailwindcss v4.1
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-700:oklch(50.5% .213 27.518);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-700:oklch(55.5% .163 48.998);--color-green-100:oklch(96.2% .044 156.743);--color-green-700:oklch(52.7% .154 150.069);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-700:oklch(49.6% .265 301.924);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-semibold:600;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!absolute{position:absolute!important}.static{position:static}.my-4{margin-block:calc(var(--spacing)*4)}.mt-7{margin-top:calc(var(--spacing)*7)}.flex{display:flex}.grid{display:grid}.h-8{height:calc(var(--spacing)*8)}.\!w-\[50rem\]{width:50rem!important}.w-8{width:calc(var(--spacing)*8)}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-green-100{background-color:var(--color-green-100)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-slate-100{background-color:var(--color-slate-100)}.p-4{padding:calc(var(--spacing)*4)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-amber-700{color:var(--color-amber-700)}.text-blue-700{color:var(--color-blue-700)}.text-green-700{color:var(--color-green-700)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-700{color:var(--color-orange-700)}.text-purple-700{color:var(--color-purple-700)}.text-red-700{color:var(--color-red-700)}.text-rose-700{color:var(--color-rose-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-700{color:var(--color-slate-700)}.lowercase{text-transform:lowercase}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}@keyframes enter{0%{opacity:var(--p-enter-opacity,1);transform:translate3d(var(--p-enter-translate-x,0),var(--p-enter-translate-y,0),0)scale3d(var(--p-enter-scale,1),var(--p-enter-scale,1),var(--p-enter-scale,1))rotate(var(--p-enter-rotate,0))}}@keyframes leave{to{opacity:var(--p-leave-opacity,1);transform:translate3d(var(--p-leave-translate-x,0),var(--p-leave-translate-y,0),0)scale3d(var(--p-leave-scale,1),var(--p-leave-scale,1),var(--p-leave-scale,1))rotate(var(--p-leave-rotate,0))}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
|
1
|
+
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-700:oklch(50.5% .213 27.518);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-700:oklch(55.5% .163 48.998);--color-green-100:oklch(96.2% .044 156.743);--color-green-700:oklch(52.7% .154 150.069);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-700:oklch(49.6% .265 301.924);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-semibold:600;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!absolute{position:absolute!important}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-7{margin-top:calc(var(--spacing) * 7)}.flex{display:flex}.grid{display:grid}.h-8{height:calc(var(--spacing) * 8)}.w-8{width:calc(var(--spacing) * 8)}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-green-100{background-color:var(--color-green-100)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-slate-100{background-color:var(--color-slate-100)}.p-4{padding:calc(var(--spacing) * 4)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-amber-700{color:var(--color-amber-700)}.text-blue-700{color:var(--color-blue-700)}.text-green-700{color:var(--color-green-700)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-700{color:var(--color-orange-700)}.text-purple-700{color:var(--color-purple-700)}.text-red-700{color:var(--color-red-700)}.text-rose-700{color:var(--color-rose-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-700{color:var(--color-slate-700)}.lowercase{text-transform:lowercase}.\!shadow-none{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@keyframes enter{0%{opacity:var(--p-enter-opacity,1);transform:translate3d(var(--p-enter-translate-x,0), var(--p-enter-translate-y,0), 0) scale3d(var(--p-enter-scale,1), var(--p-enter-scale,1), var(--p-enter-scale,1)) rotate(var(--p-enter-rotate,0))}}@keyframes leave{to{opacity:var(--p-leave-opacity,1);transform:translate3d(var(--p-leave-translate-x,0), var(--p-leave-translate-y,0), 0) scale3d(var(--p-leave-scale,1), var(--p-leave-scale,1), var(--p-leave-scale,1)) rotate(var(--p-leave-rotate,0))}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
|
@@ -1197,7 +1197,7 @@ class GovernanceRuleForm {
|
|
|
1197
1197
|
return Object.keys(config).length > 0 ? config : undefined;
|
|
1198
1198
|
}
|
|
1199
1199
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRuleForm, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1200
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: GovernanceRuleForm, isStandalone: true, selector: "mt-governance-rule-form", inputs: { ruleForEdit: { classPropertyName: "ruleForEdit", publicName: "ruleForEdit", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DialogService], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\"\r\n >\r\n @if (isLoadingRule()) {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"6rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"formConfig()\"\r\n [formControl]=\"ruleFormControl\"\r\n />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'cancel' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n (click)=\"ref.close()\"\r\n />\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"!ruleFormControl.valid\"\r\n (click)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: DynamicForm, selector: "mt-dynamic-form", inputs: ["formConfig"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
1200
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: GovernanceRuleForm, isStandalone: true, selector: "mt-governance-rule-form", inputs: { ruleForEdit: { classPropertyName: "ruleForEdit", publicName: "ruleForEdit", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DialogService], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\"\r\n >\r\n @if (isLoadingRule()) {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"6rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"formConfig()\"\r\n [formControl]=\"ruleFormControl\"\r\n />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'cancel' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n (click)=\"ref.close()\"\r\n />\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"!ruleFormControl.valid\"\r\n (click)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: DynamicForm, selector: "mt-dynamic-form", inputs: ["formConfig", "forcedHiddenFieldKeys", "preserveForcedHiddenValues", "visibleSectionKeys"], outputs: ["runtimeMessagesChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
1201
1201
|
}
|
|
1202
1202
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRuleForm, decorators: [{
|
|
1203
1203
|
type: Component,
|
|
@@ -1407,7 +1407,8 @@ class GovernanceRulesList {
|
|
|
1407
1407
|
header: rule
|
|
1408
1408
|
? this.translocoService.translate('governance.edit-rule')
|
|
1409
1409
|
: this.translocoService.translate('governance.add-rule'),
|
|
1410
|
-
styleClass: '!
|
|
1410
|
+
styleClass: '!absolute !shadow-none',
|
|
1411
|
+
responsivePreset: 'drawer-wide',
|
|
1411
1412
|
position: modalType === 'drawer' ? 'end' : '',
|
|
1412
1413
|
appendTo: modalType === 'drawer' ? 'page-content' : 'body',
|
|
1413
1414
|
dismissableMask: true,
|
|
@@ -1456,7 +1457,7 @@ class GovernanceRulesList {
|
|
|
1456
1457
|
return icons[scope] ?? 'general.file-02';
|
|
1457
1458
|
}
|
|
1458
1459
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRulesList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1459
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: GovernanceRulesList, isStandalone: true, selector: "mt-governance-rules-list", viewQueries: [{ propertyName: "typeCol", first: true, predicate: ["typeCol"], descendants: true, isSignal: true }, { propertyName: "scopeCol", first: true, predicate: ["scopeCol"], descendants: true, isSignal: true }, { propertyName: "priorityCol", first: true, predicate: ["priorityCol"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <!-- Rule Type Column Template -->\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"row.ruleTypeKey\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Scope Column Template -->\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-lg\"\r\n [icon]=\"getScopeIcon(row.targetScope)\"\r\n ></mt-icon>\r\n <span>{{ row.targetScope }}</span>\r\n @if (row.targetModuleKey) {\r\n <span class=\"text-slate-500\">\u2192 {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Priority Column Template -->\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Table -->\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "generalSearch", "showFilters", "loading", "updating", "lazy", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "exportable", "exportFilename", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "component", type: Chip, selector: "mt-chip", inputs: ["label", "icon", "image", "removable", "removeIcon", "styleClass"], outputs: ["onRemove", "onImageError"] }] });
|
|
1460
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: GovernanceRulesList, isStandalone: true, selector: "mt-governance-rules-list", viewQueries: [{ propertyName: "typeCol", first: true, predicate: ["typeCol"], descendants: true, isSignal: true }, { propertyName: "scopeCol", first: true, predicate: ["scopeCol"], descendants: true, isSignal: true }, { propertyName: "priorityCol", first: true, predicate: ["priorityCol"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <!-- Rule Type Column Template -->\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"row.ruleTypeKey\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Scope Column Template -->\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-lg\"\r\n [icon]=\"getScopeIcon(row.targetScope)\"\r\n ></mt-icon>\r\n <span>{{ row.targetScope }}</span>\r\n @if (row.targetModuleKey) {\r\n <span class=\"text-slate-500\">\u2192 {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Priority Column Template -->\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Table -->\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "showFilters", "loading", "updating", "lazy", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "exportable", "exportFilename", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "component", type: Chip, selector: "mt-chip", inputs: ["label", "icon", "image", "removable", "removeIcon", "styleClass"], outputs: ["onRemove", "onImageError"] }] });
|
|
1460
1461
|
}
|
|
1461
1462
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRulesList, decorators: [{
|
|
1462
1463
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.html","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.html","../../../../packages/masterteam/governance/src/masterteam-governance.ts"],"sourcesContent":["import {\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\n\r\nexport class SetLevelId {\r\n static readonly type = '[Governance] Set Level ID';\r\n constructor(public levelId: number) {}\r\n}\r\n\r\nexport class GetGovernanceRules {\r\n static readonly type = '[Governance] Get Rules';\r\n}\r\n\r\nexport class GetGovernanceRule {\r\n static readonly type = '[Governance] Get Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetGovernanceRuleTypes {\r\n static readonly type = '[Governance] Get Rule Types';\r\n}\r\n\r\nexport class AddGovernanceRule {\r\n static readonly type = '[Governance] Add Rule';\r\n constructor(public rule: CreateGovernanceRuleDto) {}\r\n}\r\n\r\nexport class UpdateGovernanceRule {\r\n static readonly type = '[Governance] Update Rule';\r\n constructor(\r\n public id: number,\r\n public rule: UpdateGovernanceRuleDto,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGovernanceRule {\r\n static readonly type = '[Governance] Delete Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ToggleGovernanceRuleActive {\r\n static readonly type = '[Governance] Toggle Rule Active';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ClearSelectedRule {\r\n static readonly type = '[Governance] Clear Selected Rule';\r\n}\r\n\r\nexport class ResetGovernanceState {\r\n static readonly type = '[Governance] Reset State';\r\n}\r\n\r\nexport class GetModules {\r\n static readonly type = '[Governance] Get Modules';\r\n}\r\n\r\n/**\r\n * Get request schemas for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetRequestSchemas {\r\n static readonly type = '[Governance] Get Request Schemas';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Get properties for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetProperties {\r\n static readonly type = '[Governance] Get Properties';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Clear request schemas (when scope/module changes)\r\n */\r\nexport class ClearRequestSchemas {\r\n static readonly type = '[Governance] Clear Request Schemas';\r\n}\r\n\r\n/**\r\n * Clear properties (when scope/module changes)\r\n */\r\nexport class ClearProperties {\r\n static readonly type = '[Governance] Clear Properties';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\n// ============================================================================\r\n// Translatable Interface\r\n// ============================================================================\r\n\r\nexport interface Translatable {\r\n en: string;\r\n ar: string;\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Enum\r\n// ============================================================================\r\n\r\nexport enum GovernanceRuleTypeEnum {\r\n ModuleExists = 1,\r\n ModuleDoesNotExist = 2,\r\n ModuleMaxCount = 3,\r\n ModuleMinCount = 4,\r\n FieldRequired = 5,\r\n FieldValue = 6,\r\n PhaseGateModuleRequired = 7,\r\n NoActiveRequest = 8,\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Definition (from API)\r\n// ============================================================================\r\n\r\n/**\r\n * Option for select/multi-select fields\r\n */\r\nexport interface ConfigurationFieldOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Options source indicator for select fields\r\n * - 'auto-populated': Options already in response (modules, phase gates, statuses)\r\n * - 'static': Hardcoded options in response\r\n * - 'requestSchema': Fetch from request schema endpoint\r\n * - 'properties': Fetch from properties endpoint\r\n * - null/undefined: No options needed (text/number fields)\r\n */\r\nexport type OptionsSource =\r\n | 'auto-populated'\r\n | 'static'\r\n | 'requestSchema'\r\n | 'properties'\r\n | null;\r\n\r\n/**\r\n * Configuration field schema - now array-based with key property\r\n */\r\nexport interface ConfigurationFieldSchema {\r\n key: string; // Field identifier (e.g., \"moduleKey\", \"maxCount\")\r\n type:\r\n | 'text'\r\n | 'textarea'\r\n | 'number'\r\n | 'select'\r\n | 'multi-select'\r\n | 'checkbox'\r\n | 'date';\r\n label: Translatable;\r\n required?: boolean;\r\n defaultValue?: any;\r\n min?: number; // For number inputs\r\n max?: number; // For number inputs\r\n options?: ConfigurationFieldOption[]; // For select/multi-select\r\n optionsSource?: OptionsSource; // Indicates where to get options\r\n colSpan?: number; // Grid layout (1-12)\r\n}\r\n\r\nexport interface GovernanceRuleType {\r\n type: string; // Enum value as string (e.g., \"10\" for ModuleMaxCount)\r\n key: string; // Enum key (e.g., \"ModuleMaxCount\")\r\n name: Translatable;\r\n description: Translatable;\r\n supportedScopes: string[]; // [\"Module\", \"Level\", \"PhaseGate\"]\r\n supportedOperations: string[]; // [\"Create\", \"Update\", \"Delete\"]\r\n configurationSchema: ConfigurationFieldSchema[]; // Now an array\r\n}\r\n\r\n// ============================================================================\r\n// Governance Rule Entity\r\n// ============================================================================\r\n\r\nexport interface GovernanceRule {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n description?: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: GovernanceRuleTypeEnum;\r\n ruleTypeKey: string; // \"ModuleMaxCount\"\r\n targetScope: string; // \"Level\", \"Module\", \"PhaseGate\"\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n levelId: number;\r\n configuration: Record<string, any>;\r\n priority: number;\r\n isActive: boolean;\r\n stopOnFailure: boolean;\r\n createdAt: string;\r\n createdBy?: string;\r\n modifiedAt?: string;\r\n modifiedBy?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Create/Update DTOs\r\n// ============================================================================\r\n\r\nexport interface CreateGovernanceRuleDto {\r\n key: string;\r\n name: Record<string, string>; // { en: \"...\", ar: \"...\" }\r\n description?: Record<string, string>;\r\n errorMessage: Record<string, string>;\r\n ruleType: string; // \"ModuleMaxCount\"\r\n targetScope: string;\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n configuration?: Record<string, any>;\r\n priority: number;\r\n stopOnFailure: boolean;\r\n}\r\n\r\nexport interface UpdateGovernanceRuleDto extends CreateGovernanceRuleDto {\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Governance Violation (for error handling)\r\n// ============================================================================\r\n\r\nexport interface GovernanceViolation {\r\n ruleKey: string;\r\n message: string;\r\n details?: any;\r\n}\r\n\r\nexport interface GovernanceViolationError {\r\n type: 'GovernanceViolation';\r\n title: string;\r\n status: 403;\r\n violations: GovernanceViolation[];\r\n}\r\n\r\n// ============================================================================\r\n// Module Reference (for Target Module select)\r\n// ============================================================================\r\n\r\nexport interface GovernanceModule {\r\n id: string;\r\n key: string;\r\n name: Translatable;\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// State Model\r\n// ============================================================================\r\n\r\nexport enum GovernanceActionKey {\r\n GetRules = 'getRules',\r\n GetRule = 'getRule',\r\n GetRuleTypes = 'getRuleTypes',\r\n AddRule = 'addRule',\r\n UpdateRule = 'updateRule',\r\n DeleteRule = 'deleteRule',\r\n ToggleRuleActive = 'toggleRuleActive',\r\n GetModules = 'getModules',\r\n GetRequestSchemas = 'getRequestSchemas',\r\n GetProperties = 'getProperties',\r\n}\r\n\r\n// ============================================================================\r\n// Request Schema (for requestSchemaId field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceRequestSchema {\r\n id: number;\r\n name: Translatable;\r\n isPublished: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Property (for propertyKey field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceProperty {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n}\r\n\r\nexport interface GovernanceStateModel extends LoadingStateShape<GovernanceActionKey> {\r\n levelId: number | null;\r\n rules: GovernanceRule[];\r\n ruleTypes: GovernanceRuleType[];\r\n selectedRule: GovernanceRule | null;\r\n modules: GovernanceModule[];\r\n requestSchemas: GovernanceRequestSchema[];\r\n properties: GovernanceProperty[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n GovernanceModule,\r\n GovernanceActionKey,\r\n GovernanceStateModel,\r\n GovernanceRequestSchema,\r\n GovernanceProperty,\r\n} from './governance.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\nconst DEFAULTS: GovernanceStateModel = {\r\n levelId: null,\r\n rules: [],\r\n ruleTypes: [],\r\n modules: [],\r\n requestSchemas: [],\r\n properties: [],\r\n selectedRule: null,\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\n@State<GovernanceStateModel>({\r\n name: 'governance',\r\n defaults: DEFAULTS,\r\n})\r\n@Injectable()\r\nexport class GovernanceState extends CrudStateBase<\r\n GovernanceRule,\r\n GovernanceStateModel,\r\n GovernanceActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLevelId(state: GovernanceStateModel): number | null {\r\n return state.levelId;\r\n }\r\n\r\n @Selector()\r\n static getRules(state: GovernanceStateModel): GovernanceRule[] {\r\n return state.rules;\r\n }\r\n\r\n @Selector()\r\n static getRuleTypes(state: GovernanceStateModel): GovernanceRuleType[] {\r\n return state.ruleTypes;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRule(state: GovernanceStateModel): GovernanceRule | null {\r\n return state.selectedRule;\r\n }\r\n\r\n @Selector()\r\n static getModules(state: GovernanceStateModel): GovernanceModule[] {\r\n return state.modules;\r\n }\r\n\r\n @Selector()\r\n static getRequestSchemas(\r\n state: GovernanceStateModel,\r\n ): GovernanceRequestSchema[] {\r\n return state.requestSchemas;\r\n }\r\n\r\n @Selector()\r\n static getProperties(state: GovernanceStateModel): GovernanceProperty[] {\r\n return state.properties;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: GovernanceStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: GovernanceStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // Level Context\r\n // ============================================================================\r\n\r\n @Action(SetLevelId)\r\n setLevelId(ctx: StateContext<GovernanceStateModel>, { levelId }: SetLevelId) {\r\n ctx.patchState({ levelId });\r\n }\r\n\r\n @Action(ResetGovernanceState)\r\n resetState(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.setState(DEFAULTS);\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(GetGovernanceRules)\r\n getRules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule[]>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n rules: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRule)\r\n getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRule,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedRule: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRuleTypes)\r\n getRuleTypes(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n `control-panel/governance/rule-types?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRuleTypes,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n ruleTypes: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGovernanceRule)\r\n addRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { rule }: AddGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.post<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n rule,\r\n );\r\n\r\n return this.create(ctx, {\r\n key: GovernanceActionKey.AddRule,\r\n request$: req$,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(UpdateGovernanceRule)\r\n updateRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id, rule }: UpdateGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.put<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n rule,\r\n );\r\n\r\n return this.update(ctx, {\r\n key: GovernanceActionKey.UpdateRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(DeleteGovernanceRule)\r\n deleteRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: DeleteGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.delete<Response<void>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return this.delete(ctx, {\r\n key: GovernanceActionKey.DeleteRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(ToggleGovernanceRuleActive)\r\n toggleRuleActive(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: ToggleGovernanceRuleActive,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.patch<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}/toggle`,\r\n {},\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.ToggleRuleActive,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedRule = response.data;\r\n if (!updatedRule) return {};\r\n\r\n return {\r\n rules: this.adapter.upsertOne(state.rules, updatedRule, 'id'),\r\n };\r\n },\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Reference Data Actions\r\n // ============================================================================\r\n\r\n @Action(GetModules)\r\n getModules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceModule[]>>(\r\n `Modules?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetModules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n // Only keep active modules for Target Module selection\r\n modules: (response.data ?? []).filter((m) => m.isActive),\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearSelectedRule)\r\n clearSelectedRule(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ selectedRule: null });\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n @Action(GetRequestSchemas)\r\n getRequestSchemas(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetRequestSchemas,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n // Level scope: ProcessBuilder/level/{levelId}/{moduleType}/{moduleId}/requestSchema\r\n // Module scope: ProcessBuilder/level/{levelId}/module/{targetModuleId}/{moduleType}/{moduleId}/requestSchema\r\n let basePath = `ProcessBuilder/level/${levelId}`;\r\n\r\n // For Module scope, we need to find the module by key to get its ID\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath += `/module/${targetModule.id}`;\r\n }\r\n }\r\n\r\n // Get request schemas (assuming a common endpoint pattern)\r\n const req$ = this.http.get<Response<GovernanceRequestSchema[]>>(\r\n `${basePath}/requestSchema`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRequestSchemas,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n requestSchemas: (response.data ?? []).filter((s) => s.isPublished),\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetProperties)\r\n getProperties(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetProperties,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n let basePath = `Properties?LevelId=${levelId}`;\r\n\r\n // For Module scope, add module filter\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath = `Properties?LevelId=${levelId}&ModuleId=${targetModule.id}`;\r\n }\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceProperty[]>>(basePath);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetProperties,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n properties: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearRequestSchemas)\r\n clearRequestSchemas(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ requestSchemas: [] });\r\n }\r\n\r\n @Action(ClearProperties)\r\n clearProperties(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ properties: [] });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceActionKey,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\nimport { GovernanceState } from './governance.state';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GovernanceFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly levelId = select(GovernanceState.getLevelId);\r\n readonly rules = select(GovernanceState.getRules);\r\n readonly ruleTypes = select(GovernanceState.getRuleTypes);\r\n readonly selectedRule = select(GovernanceState.getSelectedRule);\r\n readonly modules = select(GovernanceState.getModules);\r\n readonly requestSchemas = select(GovernanceState.getRequestSchemas);\r\n readonly properties = select(GovernanceState.getProperties);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(GovernanceState.getLoadingActive);\r\n private readonly errors = select(GovernanceState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRules),\r\n );\r\n readonly isLoadingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRule),\r\n );\r\n readonly isLoadingRuleTypes = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRuleTypes),\r\n );\r\n readonly isAddingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.AddRule),\r\n );\r\n readonly isUpdatingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.UpdateRule),\r\n );\r\n readonly isDeletingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.DeleteRule),\r\n );\r\n readonly isTogglingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.ToggleRuleActive),\r\n );\r\n readonly isLoadingModules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetModules),\r\n );\r\n readonly isLoadingRequestSchemas = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRequestSchemas),\r\n );\r\n readonly isLoadingProperties = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetProperties),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRules] ?? null,\r\n );\r\n readonly ruleError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRule] ?? null,\r\n );\r\n readonly ruleTypesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRuleTypes] ?? null,\r\n );\r\n readonly addRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.AddRule] ?? null,\r\n );\r\n readonly updateRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.UpdateRule] ?? null,\r\n );\r\n readonly deleteRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.DeleteRule] ?? null,\r\n );\r\n readonly modulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetModules] ?? null,\r\n );\r\n readonly requestSchemasError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRequestSchemas] ?? null,\r\n );\r\n readonly propertiesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetProperties] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly activeRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === true),\r\n );\r\n\r\n readonly inactiveRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === false),\r\n );\r\n\r\n readonly rulesCount = computed(() => this.rules().length);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n setLevelId(levelId: number) {\r\n return this.store.dispatch(new SetLevelId(levelId));\r\n }\r\n\r\n getRules() {\r\n return this.store.dispatch(new GetGovernanceRules());\r\n }\r\n\r\n getRule(id: number) {\r\n return this.store.dispatch(new GetGovernanceRule(id));\r\n }\r\n\r\n getRuleTypes() {\r\n return this.store.dispatch(new GetGovernanceRuleTypes());\r\n }\r\n\r\n getModules() {\r\n return this.store.dispatch(new GetModules());\r\n }\r\n\r\n addRule(rule: CreateGovernanceRuleDto) {\r\n return this.store.dispatch(new AddGovernanceRule(rule));\r\n }\r\n\r\n updateRule(id: number, rule: UpdateGovernanceRuleDto) {\r\n return this.store.dispatch(new UpdateGovernanceRule(id, rule));\r\n }\r\n\r\n deleteRule(id: number) {\r\n return this.store.dispatch(new DeleteGovernanceRule(id));\r\n }\r\n\r\n toggleRuleActive(id: number) {\r\n return this.store.dispatch(new ToggleGovernanceRuleActive(id));\r\n }\r\n\r\n clearSelectedRule() {\r\n return this.store.dispatch(new ClearSelectedRule());\r\n }\r\n\r\n resetState() {\r\n return this.store.dispatch(new ResetGovernanceState());\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n getRequestSchemas(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(\r\n new GetRequestSchemas(targetScope, targetModuleKey),\r\n );\r\n }\r\n\r\n getProperties(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(new GetProperties(targetScope, targetModuleKey));\r\n }\r\n\r\n clearRequestSchemas() {\r\n return this.store.dispatch(new ClearRequestSchemas());\r\n }\r\n\r\n clearProperties() {\r\n return this.store.dispatch(new ClearProperties());\r\n }\r\n}\r\n","import {\r\n Component,\r\n inject,\r\n OnInit,\r\n effect,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { DialogService, ModalRef } from '@masterteam/components/dialog';\r\nimport {\r\n DynamicFormConfig,\r\n TextFieldConfig,\r\n TextareaFieldConfig,\r\n NumberFieldConfig,\r\n SelectFieldConfig,\r\n MultiSelectFieldConfig,\r\n ToggleFieldConfig,\r\n DateFieldConfig,\r\n ValidatorConfig,\r\n BaseFieldConfig,\r\n} from '@masterteam/components';\r\nimport {\r\n GovernanceRule,\r\n GovernanceFacade,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n GovernanceRuleType,\r\n ConfigurationFieldSchema,\r\n ConfigurationFieldOption,\r\n} from '../../../store/governance';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\n\r\n@Component({\r\n selector: 'mt-governance-rule-form',\r\n templateUrl: './governance-rule-form.html',\r\n styleUrls: ['./governance-rule-form.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n TranslocoDirective,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n TranslocoPipe,\r\n ],\r\n providers: [DialogService],\r\n})\r\nexport default class GovernanceRuleForm implements OnInit {\r\n // ============================================================================\r\n // Injected Services\r\n // ============================================================================\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly facade = inject(GovernanceFacade);\r\n\r\n // ============================================================================\r\n // Input - rule to edit (null for create)\r\n // ============================================================================\r\n ruleForEdit = input<GovernanceRule | null>(null);\r\n\r\n // ============================================================================\r\n // Facade Data\r\n // ============================================================================\r\n selectedRule = this.facade.selectedRule;\r\n ruleTypes = this.facade.ruleTypes;\r\n isLoadingRule = this.facade.isLoadingRule;\r\n isAddingRule = this.facade.isAddingRule;\r\n isUpdatingRule = this.facade.isUpdatingRule;\r\n\r\n // For optionsSource: 'auto-populated' (modules from API)\r\n modules = this.facade.modules;\r\n\r\n // For optionsSource: 'requestSchema' and 'properties'\r\n requestSchemas = this.facade.requestSchemas;\r\n properties = this.facade.properties;\r\n isLoadingRequestSchemas = this.facade.isLoadingRequestSchemas;\r\n isLoadingProperties = this.facade.isLoadingProperties;\r\n\r\n // ============================================================================\r\n // Form Control\r\n // ============================================================================\r\n ruleFormControl = new FormControl();\r\n formValue = toSignal(this.ruleFormControl.valueChanges);\r\n\r\n // ============================================================================\r\n // Selected Rule Type (from form value)\r\n // ============================================================================\r\n selectedRuleType = computed(() => {\r\n const formValue = this.formValue();\r\n const ruleTypeKey = formValue?.ruleType;\r\n if (!ruleTypeKey) return null;\r\n return this.ruleTypes().find((rt) => rt.type === ruleTypeKey) ?? null;\r\n });\r\n\r\n // ============================================================================\r\n // Target Scope and Module Key (from form value)\r\n // ============================================================================\r\n targetScope = computed(() => this.formValue()?.targetScope ?? 'Level');\r\n targetModuleKey = computed(() => this.formValue()?.targetModuleKey ?? null);\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'requestSchema'\r\n // ============================================================================\r\n requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.requestSchemas().map((schema) => ({\r\n label: schema.name[lang] || schema.name.en,\r\n value: schema.id.toString(),\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'properties'\r\n // ============================================================================\r\n propertyOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.properties().map((prop) => ({\r\n label: prop.name[lang] || prop.name.en,\r\n value: prop.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Module Options for optionsSource: 'auto-populated' (moduleKey, requiredModuleKey)\r\n // ============================================================================\r\n moduleOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.modules().map((mod) => ({\r\n label: mod.name[lang] || mod.name.en,\r\n value: mod.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Scope Options based on selected rule type\r\n // ============================================================================\r\n scopeOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'Level', value: 'Level' },\r\n { label: 'Module', value: 'Module' },\r\n { label: 'PhaseGate', value: 'PhaseGate' },\r\n ];\r\n }\r\n return ruleType.supportedScopes.map((scope) => ({\r\n label: scope,\r\n value: scope,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Operation Options based on selected rule type\r\n // ============================================================================\r\n operationOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'All', value: '' },\r\n { label: 'Create', value: 'Create' },\r\n { label: 'Update', value: 'Update' },\r\n { label: 'Delete', value: 'Delete' },\r\n ];\r\n }\r\n return [\r\n { label: 'All', value: '' },\r\n ...ruleType.supportedOperations.map((op) => ({\r\n label: op,\r\n value: op,\r\n })),\r\n ];\r\n });\r\n\r\n // ============================================================================\r\n // Rule Type Options\r\n // ============================================================================\r\n ruleTypeOptions = computed(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.ruleTypes().map((rt) => ({\r\n label: rt.name[lang] || rt.name.en,\r\n value: rt.type,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Dynamic Form Configuration\r\n // ============================================================================\r\n formConfig = computed<DynamicFormConfig>(() => {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n const ruleType = this.selectedRuleType();\r\n const isEdit = !!this.ruleForEdit()?.id;\r\n\r\n return {\r\n sections: [\r\n // Section 1: Basic Information\r\n {\r\n key: 'basicInfo',\r\n type: 'header',\r\n label: t('basic-information'),\r\n order: 1,\r\n fields: [\r\n new TextFieldConfig({\r\n key: 'key',\r\n label: t('rule-key'),\r\n placeholder: 'e.g., charter-required',\r\n validators: [\r\n ValidatorConfig.required(),\r\n ValidatorConfig.pattern(\r\n '^[a-z0-9-]+$',\r\n 'Only lowercase letters, numbers and hyphens allowed',\r\n ),\r\n ],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new NumberFieldConfig({\r\n key: 'priority',\r\n label: t('priority'),\r\n placeholder: '10',\r\n validators: [ValidatorConfig.required()],\r\n min: 0,\r\n max: 1000,\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_en',\r\n label: t('name-en'),\r\n placeholder: t('name-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 3,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_ar',\r\n label: t('name-ar'),\r\n placeholder: t('name-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_en',\r\n label: t('description-en'),\r\n placeholder: t('description-en-placeholder'),\r\n order: 5,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_ar',\r\n label: t('description-ar'),\r\n placeholder: t('description-ar-placeholder'),\r\n order: 6,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_en',\r\n label: t('error-message-en'),\r\n placeholder: t('error-message-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 7,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_ar',\r\n label: t('error-message-ar'),\r\n placeholder: t('error-message-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 8,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 2: Rule Target\r\n {\r\n key: 'ruleTarget',\r\n type: 'header',\r\n label: t('rule-target'),\r\n order: 2,\r\n fields: [\r\n new SelectFieldConfig({\r\n key: 'ruleType',\r\n label: t('rule-type'),\r\n options: this.ruleTypeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetScope',\r\n label: t('target-scope'),\r\n options: this.scopeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetModuleKey',\r\n label: t('target-module'),\r\n options: this.moduleOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 3,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'targetScope',\r\n value: 'Module',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetOperationKey',\r\n label: t('target-operation'),\r\n options: this.operationOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 3: Rule-Specific Configuration (dynamic)\r\n ...(ruleType ? [this.buildConfigurationSection(ruleType)] : []),\r\n // Section 4: Execution Settings\r\n {\r\n key: 'executionSettings',\r\n type: 'header',\r\n label: t('execution-settings'),\r\n order: 4,\r\n fields: [\r\n new ToggleFieldConfig({\r\n key: 'stopOnFailure',\r\n label: t('stop-on-failure'),\r\n order: 1,\r\n colSpan: 6,\r\n }),\r\n new ToggleFieldConfig({\r\n key: 'isActive',\r\n label: t('active-rule'),\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n });\r\n\r\n // ============================================================================\r\n // Constructor with Effect for Form Population\r\n // ============================================================================\r\n constructor() {\r\n // Effect to populate form when editing existing rule\r\n effect(() => {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (this.selectedRule() && ruleId) {\r\n const rule = this.selectedRule();\r\n if (!rule) return;\r\n\r\n // Unpack rule data to form format\r\n const formData = this.unpackRuleToForm(rule);\r\n this.ruleFormControl.patchValue(formData);\r\n } else {\r\n // Default values for new rule\r\n this.ruleFormControl.reset({\r\n priority: 10,\r\n stopOnFailure: true,\r\n isActive: true,\r\n targetScope: 'Module',\r\n });\r\n }\r\n });\r\n\r\n // Effect to apply default values when rule type changes (for new rules only)\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n // Only apply defaults for new rules (not editing)\r\n if (ruleType && !ruleId) {\r\n const defaults = this.getDefaultsFromSchema(ruleType);\r\n if (Object.keys(defaults).length > 0) {\r\n const currentValue = this.ruleFormControl.value ?? {};\r\n this.ruleFormControl.patchValue({ ...currentValue, ...defaults });\r\n }\r\n }\r\n });\r\n\r\n // Effect to fetch requestSchemas and properties when scope/module changes\r\n // This runs when configurationSchema has fields with optionsSource = 'requestSchema' or 'properties'\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const scope = this.targetScope();\r\n const moduleKey = this.targetModuleKey();\r\n\r\n if (!ruleType) return;\r\n\r\n // Check if any field needs requestSchema options\r\n const needsRequestSchemas = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'requestSchema',\r\n );\r\n\r\n // Check if any field needs properties options\r\n const needsProperties = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'properties',\r\n );\r\n // For Module scope, we need a target module key\r\n if (scope === 'Module' && !moduleKey) {\r\n // Clear options when module is not selected\r\n if (needsRequestSchemas) {\r\n this.facade.clearRequestSchemas();\r\n }\r\n if (needsProperties) {\r\n this.facade.clearProperties();\r\n }\r\n return;\r\n }\r\n\r\n // Fetch options based on scope\r\n if (needsRequestSchemas) {\r\n this.facade.getRequestSchemas(scope, moduleKey ?? undefined);\r\n }\r\n\r\n if (needsProperties) {\r\n this.facade.getProperties(scope, moduleKey ?? undefined);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Extract default values from rule type's configuration schema\r\n */\r\n private getDefaultsFromSchema(\r\n ruleType: GovernanceRuleType,\r\n ): Record<string, any> {\r\n const defaults: Record<string, any> = {};\r\n for (const field of ruleType.configurationSchema) {\r\n if (field.defaultValue !== undefined) {\r\n defaults[`config_${field.key}`] = field.defaultValue;\r\n }\r\n }\r\n return defaults;\r\n }\r\n\r\n ngOnInit(): void {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (ruleId) {\r\n this.facade.getRule(ruleId);\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Submit Handler\r\n // ============================================================================\r\n onSubmit() {\r\n if (!this.ruleFormControl.valid) {\r\n return;\r\n }\r\n\r\n const formValue = this.ruleFormControl.value;\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n if (ruleId) {\r\n // Update\r\n const payload = this.packFormToUpdateDto(formValue);\r\n this.facade.updateRule(ruleId, payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n // Create\r\n const payload = this.packFormToCreateDto(formValue);\r\n this.facade.addRule(payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Build Configuration Section Based on Rule Type\r\n // ============================================================================\r\n private buildConfigurationSection(ruleType: GovernanceRuleType) {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n\r\n return {\r\n key: 'configuration',\r\n type: 'header' as const,\r\n label: t('rule-configuration'),\r\n order: 3,\r\n fields: this.buildConfigFieldsForType(ruleType),\r\n };\r\n }\r\n\r\n private buildConfigFieldsForType(\r\n ruleType: GovernanceRuleType,\r\n ): BaseFieldConfig[] {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n\r\n // Build fields dynamically from configurationSchema array\r\n return ruleType.configurationSchema.map((field, index) =>\r\n this.schemaFieldToFormField(field, index + 1, lang),\r\n );\r\n }\r\n\r\n /**\r\n * Convert a ConfigurationFieldSchema to DynamicForm BaseFieldConfig\r\n */\r\n private schemaFieldToFormField(\r\n field: ConfigurationFieldSchema,\r\n order: number,\r\n lang: 'en' | 'ar',\r\n ): BaseFieldConfig {\r\n const label = field.label[lang] || field.label.en;\r\n const colSpan = field.colSpan ?? 6;\r\n const validators = field.required ? [ValidatorConfig.required()] : [];\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'textarea':\r\n return new TextareaFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'number':\r\n return new NumberFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n min: field.min,\r\n max: field.max,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'select':\r\n return new SelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'multi-select':\r\n return new MultiSelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'checkbox':\r\n return new ToggleFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'date':\r\n return new DateFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n default:\r\n // Fallback to text field for unknown types\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get options for a field based on its optionsSource\r\n * - 'static' or 'auto-populated': Use options from schema (already in API response)\r\n * - 'requestSchema': Use fetched request schemas from state\r\n * - 'properties': Use fetched properties from state\r\n */\r\n private getOptionsForField(\r\n field: ConfigurationFieldSchema,\r\n ): ConfigurationFieldOption[] {\r\n switch (field.optionsSource) {\r\n case 'requestSchema':\r\n return this.requestSchemaOptions();\r\n\r\n case 'properties':\r\n return this.propertyOptions();\r\n\r\n case 'auto-populated':\r\n case 'static':\r\n default:\r\n // Use options directly from schema\r\n return field.options ?? [];\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Data Transformation Helpers\r\n // ============================================================================\r\n private unpackRuleToForm(rule: GovernanceRule): Record<string, any> {\r\n const formData: Record<string, any> = {\r\n key: rule.key,\r\n priority: rule.priority,\r\n name_en: rule.name?.en ?? '',\r\n name_ar: rule.name?.ar ?? '',\r\n description_en: rule.description?.en ?? '',\r\n description_ar: rule.description?.ar ?? '',\r\n errorMessage_en: rule.errorMessage?.en ?? '',\r\n errorMessage_ar: rule.errorMessage?.ar ?? '',\r\n ruleType: rule.ruleTypeKey,\r\n targetScope: rule.targetScope,\r\n targetModuleKey: rule.targetModuleKey ?? '',\r\n targetOperationKey: rule.targetOperationKey ?? '',\r\n stopOnFailure: rule.stopOnFailure,\r\n isActive: rule.isActive,\r\n };\r\n\r\n // Unpack configuration fields with config_ prefix\r\n if (rule.configuration) {\r\n Object.entries(rule.configuration).forEach(([key, value]) => {\r\n formData[`config_${key}`] = value;\r\n });\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n private packFormToCreateDto(\r\n formValue: Record<string, any>,\r\n ): CreateGovernanceRuleDto {\r\n return {\r\n key: formValue['key'],\r\n name: {\r\n en: formValue['name_en'],\r\n ar: formValue['name_ar'],\r\n },\r\n description:\r\n formValue['description_en'] || formValue['description_ar']\r\n ? {\r\n en: formValue['description_en'] ?? '',\r\n ar: formValue['description_ar'] ?? '',\r\n }\r\n : undefined,\r\n errorMessage: {\r\n en: formValue['errorMessage_en'],\r\n ar: formValue['errorMessage_ar'],\r\n },\r\n ruleType: formValue['ruleType'],\r\n targetScope: formValue['targetScope'],\r\n targetModuleKey: formValue['targetModuleKey'] || undefined,\r\n targetOperationKey: formValue['targetOperationKey'] || undefined,\r\n configuration: this.extractConfiguration(formValue),\r\n priority: formValue['priority'],\r\n stopOnFailure: formValue['stopOnFailure'] ?? true,\r\n };\r\n }\r\n\r\n private packFormToUpdateDto(\r\n formValue: Record<string, any>,\r\n ): UpdateGovernanceRuleDto {\r\n return {\r\n ...this.packFormToCreateDto(formValue),\r\n isActive: formValue['isActive'] ?? true,\r\n };\r\n }\r\n\r\n private extractConfiguration(\r\n formValue: Record<string, any>,\r\n ): Record<string, any> {\r\n const config: Record<string, any> = {};\r\n Object.entries(formValue).forEach(([key, value]) => {\r\n if (\r\n key.startsWith('config_') &&\r\n value !== null &&\r\n value !== undefined &&\r\n value !== ''\r\n ) {\r\n const configKey = key.replace('config_', '');\r\n config[configKey] = value;\r\n }\r\n });\r\n return Object.keys(config).length > 0 ? config : (undefined as any);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\"\r\n >\r\n @if (isLoadingRule()) {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"6rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"formConfig()\"\r\n [formControl]=\"ruleFormControl\"\r\n />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'cancel' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n (click)=\"ref.close()\"\r\n />\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"!ruleFormControl.valid\"\r\n (click)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport {\r\n CellChangeEvent,\r\n ColumnDef,\r\n Table,\r\n TableAction,\r\n} from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { GovernanceFacade } from '../../../store/governance';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport GovernanceRuleForm from '../governance-rule-form/governance-rule-form';\r\nimport { finalize } from 'rxjs';\r\nimport { Breadcrumb } from '@masterteam/components/breadcrumb';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { Chip } from '@masterteam/components/chip';\r\nimport { GovernanceRule } from '../../../store/governance';\r\n\r\n@Component({\r\n selector: 'mt-governance-rules-list',\r\n styleUrl: './governance-rules-list.css',\r\n templateUrl: './governance-rules-list.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SkeletonModule,\r\n Table,\r\n TranslocoDirective,\r\n Breadcrumb,\r\n Icon,\r\n Chip,\r\n ],\r\n})\r\nexport default class GovernanceRulesList implements OnDestroy {\r\n // ============================================================================\r\n // Template References for Custom Columns\r\n // ============================================================================\r\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\r\n scopeCol = viewChild.required<TemplateRef<any>>('scopeCol');\r\n priorityCol = viewChild.required<TemplateRef<any>>('priorityCol');\r\n\r\n // ============================================================================\r\n // Services\r\n // ============================================================================\r\n private readonly facade = inject(GovernanceFacade);\r\n readonly modal: ModalService = inject(ModalService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n // ============================================================================\r\n // Breadcrumb\r\n // ============================================================================\r\n breadcrumbItems = linkedSignal(() => [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.control-panel'),\r\n routerLink: '/control-panel',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.governance-rules'),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Data Computed from Facade\r\n // ============================================================================\r\n rules = computed(() => {\r\n const tab = this.activeTab();\r\n const all = this.allRules();\r\n const activeRules = this.activeRules();\r\n const inactiveRules = this.inactiveRules();\r\n\r\n switch (tab) {\r\n case 'active':\r\n return activeRules;\r\n case 'inactive':\r\n return inactiveRules;\r\n case 'all':\r\n default:\r\n return all;\r\n }\r\n });\r\n\r\n // ============================================================================\r\n // Tabs\r\n // ============================================================================\r\n tabs = signal([\r\n {\r\n label: this.translocoService.translate('governance.all'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: 'active',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: 'inactive',\r\n },\r\n ]);\r\n activeTab = signal<string>('all');\r\n\r\n // ============================================================================\r\n // Table Actions\r\n // ============================================================================\r\n tableActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.plus',\r\n label: this.translocoService.translate('governance.add-rule'),\r\n color: 'primary',\r\n action: () => {\r\n this.openRuleDialog();\r\n },\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.translocoService.translate('edit'),\r\n color: 'primary',\r\n action: (row: GovernanceRule) => {\r\n this.facade.clearSelectedRule();\r\n this.openRuleDialog(row);\r\n },\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: GovernanceRule) => {\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .deleteRule(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: GovernanceRule) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Table Columns\r\n // ============================================================================\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'priority',\r\n label: this.translocoService.translate('governance.priority'),\r\n type: 'custom',\r\n customCellTpl: this.priorityCol(),\r\n sortable: true,\r\n },\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate('governance.name'),\r\n type: 'text',\r\n sortable: true,\r\n },\r\n {\r\n key: 'ruleTypeKey',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n type: 'custom',\r\n customCellTpl: this.typeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n options: this.getRuleTypeOptions(),\r\n },\r\n },\r\n {\r\n key: 'targetScope',\r\n label: this.translocoService.translate('governance.scope'),\r\n type: 'custom',\r\n customCellTpl: this.scopeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.scope'),\r\n options: [\r\n { label: 'Level', value: 'Level' },\r\n { label: 'Module', value: 'Module' },\r\n { label: 'PhaseGate', value: 'PhaseGate' },\r\n ],\r\n },\r\n },\r\n {\r\n key: 'targetModuleKey',\r\n label: this.translocoService.translate('governance.target-module'),\r\n type: 'text',\r\n },\r\n {\r\n key: 'isActive',\r\n label: this.translocoService.translate('governance.status'),\r\n type: 'boolean',\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.status'),\r\n options: [\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: true,\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: false,\r\n },\r\n ],\r\n },\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Private\r\n // ============================================================================\r\n loading = this.facade.isLoadingRules;\r\n private allRules = this.facade.rules;\r\n private activeRules = this.facade.activeRules;\r\n private inactiveRules = this.facade.inactiveRules;\r\n\r\n ngOnDestroy(): void {\r\n this.facade.resetState();\r\n }\r\n\r\n openRuleDialog(rule: GovernanceRule | null = null) {\r\n const modalType: 'drawer' | 'dialog' = rule ? 'drawer' : 'drawer';\r\n this.modal.openModal(GovernanceRuleForm, modalType, {\r\n header: rule\r\n ? this.translocoService.translate('governance.edit-rule')\r\n : this.translocoService.translate('governance.add-rule'),\r\n styleClass: '!w-[50rem] !absolute ',\r\n position: modalType === 'drawer' ? 'end' : '',\r\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n inputValues: {\r\n ruleForEdit: rule,\r\n },\r\n });\r\n }\r\n\r\n onCellChange(event: CellChangeEvent) {\r\n if (event.column === 'isActive' && event.type === 'boolean') {\r\n this.facade.toggleRuleActive(event.row.id);\r\n }\r\n }\r\n\r\n private getRuleTypeOptions() {\r\n return [\r\n { label: 'Module Exists', value: 'ModuleExists' },\r\n { label: 'Module Does Not Exist', value: 'ModuleDoesNotExist' },\r\n { label: 'Module Max Count', value: 'ModuleMaxCount' },\r\n { label: 'Module Min Count', value: 'ModuleMinCount' },\r\n { label: 'Field Required', value: 'FieldRequired' },\r\n { label: 'Field Value', value: 'FieldValue' },\r\n { label: 'Phase Gate Module Required', value: 'PhaseGateModuleRequired' },\r\n { label: 'No Active Request', value: 'NoActiveRequest' },\r\n ];\r\n }\r\n\r\n getRuleTypeChipClass(ruleTypeKey: string): string {\r\n const classes: Record<string, string> = {\r\n ModuleExists: 'bg-blue-100 text-blue-700',\r\n ModuleDoesNotExist: 'bg-red-100 text-red-700',\r\n ModuleMaxCount: 'bg-amber-100 text-amber-700',\r\n ModuleMinCount: 'bg-orange-100 text-orange-700',\r\n FieldRequired: 'bg-purple-100 text-purple-700',\r\n FieldValue: 'bg-indigo-100 text-indigo-700',\r\n PhaseGateModuleRequired: 'bg-green-100 text-green-700',\r\n NoActiveRequest: 'bg-rose-100 text-rose-700',\r\n };\r\n return classes[ruleTypeKey] ?? 'bg-slate-100 text-slate-700';\r\n }\r\n\r\n getScopeIcon(scope: string): string {\r\n const icons: Record<string, string> = {\r\n Level: 'general.layers-three-01',\r\n Module: 'general.cube-01',\r\n PhaseGate: 'general.flag-01',\r\n };\r\n return icons[scope] ?? 'general.file-02';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <!-- Rule Type Column Template -->\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"row.ruleTypeKey\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Scope Column Template -->\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-lg\"\r\n [icon]=\"getScopeIcon(row.targetScope)\"\r\n ></mt-icon>\r\n <span>{{ row.targetScope }}</span>\r\n @if (row.targetModuleKey) {\r\n <span class=\"text-slate-500\">→ {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Priority Column Template -->\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Table -->\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.html","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.html","../../../../packages/masterteam/governance/src/masterteam-governance.ts"],"sourcesContent":["import {\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\n\r\nexport class SetLevelId {\r\n static readonly type = '[Governance] Set Level ID';\r\n constructor(public levelId: number) {}\r\n}\r\n\r\nexport class GetGovernanceRules {\r\n static readonly type = '[Governance] Get Rules';\r\n}\r\n\r\nexport class GetGovernanceRule {\r\n static readonly type = '[Governance] Get Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetGovernanceRuleTypes {\r\n static readonly type = '[Governance] Get Rule Types';\r\n}\r\n\r\nexport class AddGovernanceRule {\r\n static readonly type = '[Governance] Add Rule';\r\n constructor(public rule: CreateGovernanceRuleDto) {}\r\n}\r\n\r\nexport class UpdateGovernanceRule {\r\n static readonly type = '[Governance] Update Rule';\r\n constructor(\r\n public id: number,\r\n public rule: UpdateGovernanceRuleDto,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGovernanceRule {\r\n static readonly type = '[Governance] Delete Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ToggleGovernanceRuleActive {\r\n static readonly type = '[Governance] Toggle Rule Active';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ClearSelectedRule {\r\n static readonly type = '[Governance] Clear Selected Rule';\r\n}\r\n\r\nexport class ResetGovernanceState {\r\n static readonly type = '[Governance] Reset State';\r\n}\r\n\r\nexport class GetModules {\r\n static readonly type = '[Governance] Get Modules';\r\n}\r\n\r\n/**\r\n * Get request schemas for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetRequestSchemas {\r\n static readonly type = '[Governance] Get Request Schemas';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Get properties for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetProperties {\r\n static readonly type = '[Governance] Get Properties';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Clear request schemas (when scope/module changes)\r\n */\r\nexport class ClearRequestSchemas {\r\n static readonly type = '[Governance] Clear Request Schemas';\r\n}\r\n\r\n/**\r\n * Clear properties (when scope/module changes)\r\n */\r\nexport class ClearProperties {\r\n static readonly type = '[Governance] Clear Properties';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\n// ============================================================================\r\n// Translatable Interface\r\n// ============================================================================\r\n\r\nexport interface Translatable {\r\n en: string;\r\n ar: string;\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Enum\r\n// ============================================================================\r\n\r\nexport enum GovernanceRuleTypeEnum {\r\n ModuleExists = 1,\r\n ModuleDoesNotExist = 2,\r\n ModuleMaxCount = 3,\r\n ModuleMinCount = 4,\r\n FieldRequired = 5,\r\n FieldValue = 6,\r\n PhaseGateModuleRequired = 7,\r\n NoActiveRequest = 8,\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Definition (from API)\r\n// ============================================================================\r\n\r\n/**\r\n * Option for select/multi-select fields\r\n */\r\nexport interface ConfigurationFieldOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Options source indicator for select fields\r\n * - 'auto-populated': Options already in response (modules, phase gates, statuses)\r\n * - 'static': Hardcoded options in response\r\n * - 'requestSchema': Fetch from request schema endpoint\r\n * - 'properties': Fetch from properties endpoint\r\n * - null/undefined: No options needed (text/number fields)\r\n */\r\nexport type OptionsSource =\r\n | 'auto-populated'\r\n | 'static'\r\n | 'requestSchema'\r\n | 'properties'\r\n | null;\r\n\r\n/**\r\n * Configuration field schema - now array-based with key property\r\n */\r\nexport interface ConfigurationFieldSchema {\r\n key: string; // Field identifier (e.g., \"moduleKey\", \"maxCount\")\r\n type:\r\n | 'text'\r\n | 'textarea'\r\n | 'number'\r\n | 'select'\r\n | 'multi-select'\r\n | 'checkbox'\r\n | 'date';\r\n label: Translatable;\r\n required?: boolean;\r\n defaultValue?: any;\r\n min?: number; // For number inputs\r\n max?: number; // For number inputs\r\n options?: ConfigurationFieldOption[]; // For select/multi-select\r\n optionsSource?: OptionsSource; // Indicates where to get options\r\n colSpan?: number; // Grid layout (1-12)\r\n}\r\n\r\nexport interface GovernanceRuleType {\r\n type: string; // Enum value as string (e.g., \"10\" for ModuleMaxCount)\r\n key: string; // Enum key (e.g., \"ModuleMaxCount\")\r\n name: Translatable;\r\n description: Translatable;\r\n supportedScopes: string[]; // [\"Module\", \"Level\", \"PhaseGate\"]\r\n supportedOperations: string[]; // [\"Create\", \"Update\", \"Delete\"]\r\n configurationSchema: ConfigurationFieldSchema[]; // Now an array\r\n}\r\n\r\n// ============================================================================\r\n// Governance Rule Entity\r\n// ============================================================================\r\n\r\nexport interface GovernanceRule {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n description?: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: GovernanceRuleTypeEnum;\r\n ruleTypeKey: string; // \"ModuleMaxCount\"\r\n targetScope: string; // \"Level\", \"Module\", \"PhaseGate\"\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n levelId: number;\r\n configuration: Record<string, any>;\r\n priority: number;\r\n isActive: boolean;\r\n stopOnFailure: boolean;\r\n createdAt: string;\r\n createdBy?: string;\r\n modifiedAt?: string;\r\n modifiedBy?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Create/Update DTOs\r\n// ============================================================================\r\n\r\nexport interface CreateGovernanceRuleDto {\r\n key: string;\r\n name: Record<string, string>; // { en: \"...\", ar: \"...\" }\r\n description?: Record<string, string>;\r\n errorMessage: Record<string, string>;\r\n ruleType: string; // \"ModuleMaxCount\"\r\n targetScope: string;\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n configuration?: Record<string, any>;\r\n priority: number;\r\n stopOnFailure: boolean;\r\n}\r\n\r\nexport interface UpdateGovernanceRuleDto extends CreateGovernanceRuleDto {\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Governance Violation (for error handling)\r\n// ============================================================================\r\n\r\nexport interface GovernanceViolation {\r\n ruleKey: string;\r\n message: string;\r\n details?: any;\r\n}\r\n\r\nexport interface GovernanceViolationError {\r\n type: 'GovernanceViolation';\r\n title: string;\r\n status: 403;\r\n violations: GovernanceViolation[];\r\n}\r\n\r\n// ============================================================================\r\n// Module Reference (for Target Module select)\r\n// ============================================================================\r\n\r\nexport interface GovernanceModule {\r\n id: string;\r\n key: string;\r\n name: Translatable;\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// State Model\r\n// ============================================================================\r\n\r\nexport enum GovernanceActionKey {\r\n GetRules = 'getRules',\r\n GetRule = 'getRule',\r\n GetRuleTypes = 'getRuleTypes',\r\n AddRule = 'addRule',\r\n UpdateRule = 'updateRule',\r\n DeleteRule = 'deleteRule',\r\n ToggleRuleActive = 'toggleRuleActive',\r\n GetModules = 'getModules',\r\n GetRequestSchemas = 'getRequestSchemas',\r\n GetProperties = 'getProperties',\r\n}\r\n\r\n// ============================================================================\r\n// Request Schema (for requestSchemaId field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceRequestSchema {\r\n id: number;\r\n name: Translatable;\r\n isPublished: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Property (for propertyKey field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceProperty {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n}\r\n\r\nexport interface GovernanceStateModel extends LoadingStateShape<GovernanceActionKey> {\r\n levelId: number | null;\r\n rules: GovernanceRule[];\r\n ruleTypes: GovernanceRuleType[];\r\n selectedRule: GovernanceRule | null;\r\n modules: GovernanceModule[];\r\n requestSchemas: GovernanceRequestSchema[];\r\n properties: GovernanceProperty[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n GovernanceModule,\r\n GovernanceActionKey,\r\n GovernanceStateModel,\r\n GovernanceRequestSchema,\r\n GovernanceProperty,\r\n} from './governance.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\nconst DEFAULTS: GovernanceStateModel = {\r\n levelId: null,\r\n rules: [],\r\n ruleTypes: [],\r\n modules: [],\r\n requestSchemas: [],\r\n properties: [],\r\n selectedRule: null,\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\n@State<GovernanceStateModel>({\r\n name: 'governance',\r\n defaults: DEFAULTS,\r\n})\r\n@Injectable()\r\nexport class GovernanceState extends CrudStateBase<\r\n GovernanceRule,\r\n GovernanceStateModel,\r\n GovernanceActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLevelId(state: GovernanceStateModel): number | null {\r\n return state.levelId;\r\n }\r\n\r\n @Selector()\r\n static getRules(state: GovernanceStateModel): GovernanceRule[] {\r\n return state.rules;\r\n }\r\n\r\n @Selector()\r\n static getRuleTypes(state: GovernanceStateModel): GovernanceRuleType[] {\r\n return state.ruleTypes;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRule(state: GovernanceStateModel): GovernanceRule | null {\r\n return state.selectedRule;\r\n }\r\n\r\n @Selector()\r\n static getModules(state: GovernanceStateModel): GovernanceModule[] {\r\n return state.modules;\r\n }\r\n\r\n @Selector()\r\n static getRequestSchemas(\r\n state: GovernanceStateModel,\r\n ): GovernanceRequestSchema[] {\r\n return state.requestSchemas;\r\n }\r\n\r\n @Selector()\r\n static getProperties(state: GovernanceStateModel): GovernanceProperty[] {\r\n return state.properties;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: GovernanceStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: GovernanceStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // Level Context\r\n // ============================================================================\r\n\r\n @Action(SetLevelId)\r\n setLevelId(ctx: StateContext<GovernanceStateModel>, { levelId }: SetLevelId) {\r\n ctx.patchState({ levelId });\r\n }\r\n\r\n @Action(ResetGovernanceState)\r\n resetState(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.setState(DEFAULTS);\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(GetGovernanceRules)\r\n getRules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule[]>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n rules: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRule)\r\n getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRule,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedRule: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRuleTypes)\r\n getRuleTypes(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n `control-panel/governance/rule-types?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRuleTypes,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n ruleTypes: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGovernanceRule)\r\n addRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { rule }: AddGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.post<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n rule,\r\n );\r\n\r\n return this.create(ctx, {\r\n key: GovernanceActionKey.AddRule,\r\n request$: req$,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(UpdateGovernanceRule)\r\n updateRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id, rule }: UpdateGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.put<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n rule,\r\n );\r\n\r\n return this.update(ctx, {\r\n key: GovernanceActionKey.UpdateRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(DeleteGovernanceRule)\r\n deleteRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: DeleteGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.delete<Response<void>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return this.delete(ctx, {\r\n key: GovernanceActionKey.DeleteRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(ToggleGovernanceRuleActive)\r\n toggleRuleActive(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: ToggleGovernanceRuleActive,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.patch<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}/toggle`,\r\n {},\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.ToggleRuleActive,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedRule = response.data;\r\n if (!updatedRule) return {};\r\n\r\n return {\r\n rules: this.adapter.upsertOne(state.rules, updatedRule, 'id'),\r\n };\r\n },\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Reference Data Actions\r\n // ============================================================================\r\n\r\n @Action(GetModules)\r\n getModules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceModule[]>>(\r\n `Modules?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetModules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n // Only keep active modules for Target Module selection\r\n modules: (response.data ?? []).filter((m) => m.isActive),\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearSelectedRule)\r\n clearSelectedRule(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ selectedRule: null });\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n @Action(GetRequestSchemas)\r\n getRequestSchemas(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetRequestSchemas,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n // Level scope: ProcessBuilder/level/{levelId}/{moduleType}/{moduleId}/requestSchema\r\n // Module scope: ProcessBuilder/level/{levelId}/module/{targetModuleId}/{moduleType}/{moduleId}/requestSchema\r\n let basePath = `ProcessBuilder/level/${levelId}`;\r\n\r\n // For Module scope, we need to find the module by key to get its ID\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath += `/module/${targetModule.id}`;\r\n }\r\n }\r\n\r\n // Get request schemas (assuming a common endpoint pattern)\r\n const req$ = this.http.get<Response<GovernanceRequestSchema[]>>(\r\n `${basePath}/requestSchema`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRequestSchemas,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n requestSchemas: (response.data ?? []).filter((s) => s.isPublished),\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetProperties)\r\n getProperties(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetProperties,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n let basePath = `Properties?LevelId=${levelId}`;\r\n\r\n // For Module scope, add module filter\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath = `Properties?LevelId=${levelId}&ModuleId=${targetModule.id}`;\r\n }\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceProperty[]>>(basePath);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetProperties,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n properties: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearRequestSchemas)\r\n clearRequestSchemas(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ requestSchemas: [] });\r\n }\r\n\r\n @Action(ClearProperties)\r\n clearProperties(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ properties: [] });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceActionKey,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\nimport { GovernanceState } from './governance.state';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GovernanceFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly levelId = select(GovernanceState.getLevelId);\r\n readonly rules = select(GovernanceState.getRules);\r\n readonly ruleTypes = select(GovernanceState.getRuleTypes);\r\n readonly selectedRule = select(GovernanceState.getSelectedRule);\r\n readonly modules = select(GovernanceState.getModules);\r\n readonly requestSchemas = select(GovernanceState.getRequestSchemas);\r\n readonly properties = select(GovernanceState.getProperties);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(GovernanceState.getLoadingActive);\r\n private readonly errors = select(GovernanceState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRules),\r\n );\r\n readonly isLoadingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRule),\r\n );\r\n readonly isLoadingRuleTypes = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRuleTypes),\r\n );\r\n readonly isAddingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.AddRule),\r\n );\r\n readonly isUpdatingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.UpdateRule),\r\n );\r\n readonly isDeletingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.DeleteRule),\r\n );\r\n readonly isTogglingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.ToggleRuleActive),\r\n );\r\n readonly isLoadingModules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetModules),\r\n );\r\n readonly isLoadingRequestSchemas = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRequestSchemas),\r\n );\r\n readonly isLoadingProperties = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetProperties),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRules] ?? null,\r\n );\r\n readonly ruleError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRule] ?? null,\r\n );\r\n readonly ruleTypesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRuleTypes] ?? null,\r\n );\r\n readonly addRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.AddRule] ?? null,\r\n );\r\n readonly updateRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.UpdateRule] ?? null,\r\n );\r\n readonly deleteRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.DeleteRule] ?? null,\r\n );\r\n readonly modulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetModules] ?? null,\r\n );\r\n readonly requestSchemasError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRequestSchemas] ?? null,\r\n );\r\n readonly propertiesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetProperties] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly activeRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === true),\r\n );\r\n\r\n readonly inactiveRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === false),\r\n );\r\n\r\n readonly rulesCount = computed(() => this.rules().length);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n setLevelId(levelId: number) {\r\n return this.store.dispatch(new SetLevelId(levelId));\r\n }\r\n\r\n getRules() {\r\n return this.store.dispatch(new GetGovernanceRules());\r\n }\r\n\r\n getRule(id: number) {\r\n return this.store.dispatch(new GetGovernanceRule(id));\r\n }\r\n\r\n getRuleTypes() {\r\n return this.store.dispatch(new GetGovernanceRuleTypes());\r\n }\r\n\r\n getModules() {\r\n return this.store.dispatch(new GetModules());\r\n }\r\n\r\n addRule(rule: CreateGovernanceRuleDto) {\r\n return this.store.dispatch(new AddGovernanceRule(rule));\r\n }\r\n\r\n updateRule(id: number, rule: UpdateGovernanceRuleDto) {\r\n return this.store.dispatch(new UpdateGovernanceRule(id, rule));\r\n }\r\n\r\n deleteRule(id: number) {\r\n return this.store.dispatch(new DeleteGovernanceRule(id));\r\n }\r\n\r\n toggleRuleActive(id: number) {\r\n return this.store.dispatch(new ToggleGovernanceRuleActive(id));\r\n }\r\n\r\n clearSelectedRule() {\r\n return this.store.dispatch(new ClearSelectedRule());\r\n }\r\n\r\n resetState() {\r\n return this.store.dispatch(new ResetGovernanceState());\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n getRequestSchemas(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(\r\n new GetRequestSchemas(targetScope, targetModuleKey),\r\n );\r\n }\r\n\r\n getProperties(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(new GetProperties(targetScope, targetModuleKey));\r\n }\r\n\r\n clearRequestSchemas() {\r\n return this.store.dispatch(new ClearRequestSchemas());\r\n }\r\n\r\n clearProperties() {\r\n return this.store.dispatch(new ClearProperties());\r\n }\r\n}\r\n","import {\r\n Component,\r\n inject,\r\n OnInit,\r\n effect,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { DialogService, ModalRef } from '@masterteam/components/dialog';\r\nimport {\r\n DynamicFormConfig,\r\n TextFieldConfig,\r\n TextareaFieldConfig,\r\n NumberFieldConfig,\r\n SelectFieldConfig,\r\n MultiSelectFieldConfig,\r\n ToggleFieldConfig,\r\n DateFieldConfig,\r\n ValidatorConfig,\r\n BaseFieldConfig,\r\n} from '@masterteam/components';\r\nimport {\r\n GovernanceRule,\r\n GovernanceFacade,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n GovernanceRuleType,\r\n ConfigurationFieldSchema,\r\n ConfigurationFieldOption,\r\n} from '../../../store/governance';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\n\r\n@Component({\r\n selector: 'mt-governance-rule-form',\r\n templateUrl: './governance-rule-form.html',\r\n styleUrls: ['./governance-rule-form.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n TranslocoDirective,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n TranslocoPipe,\r\n ],\r\n providers: [DialogService],\r\n})\r\nexport default class GovernanceRuleForm implements OnInit {\r\n // ============================================================================\r\n // Injected Services\r\n // ============================================================================\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly facade = inject(GovernanceFacade);\r\n\r\n // ============================================================================\r\n // Input - rule to edit (null for create)\r\n // ============================================================================\r\n ruleForEdit = input<GovernanceRule | null>(null);\r\n\r\n // ============================================================================\r\n // Facade Data\r\n // ============================================================================\r\n selectedRule = this.facade.selectedRule;\r\n ruleTypes = this.facade.ruleTypes;\r\n isLoadingRule = this.facade.isLoadingRule;\r\n isAddingRule = this.facade.isAddingRule;\r\n isUpdatingRule = this.facade.isUpdatingRule;\r\n\r\n // For optionsSource: 'auto-populated' (modules from API)\r\n modules = this.facade.modules;\r\n\r\n // For optionsSource: 'requestSchema' and 'properties'\r\n requestSchemas = this.facade.requestSchemas;\r\n properties = this.facade.properties;\r\n isLoadingRequestSchemas = this.facade.isLoadingRequestSchemas;\r\n isLoadingProperties = this.facade.isLoadingProperties;\r\n\r\n // ============================================================================\r\n // Form Control\r\n // ============================================================================\r\n ruleFormControl = new FormControl();\r\n formValue = toSignal(this.ruleFormControl.valueChanges);\r\n\r\n // ============================================================================\r\n // Selected Rule Type (from form value)\r\n // ============================================================================\r\n selectedRuleType = computed(() => {\r\n const formValue = this.formValue();\r\n const ruleTypeKey = formValue?.ruleType;\r\n if (!ruleTypeKey) return null;\r\n return this.ruleTypes().find((rt) => rt.type === ruleTypeKey) ?? null;\r\n });\r\n\r\n // ============================================================================\r\n // Target Scope and Module Key (from form value)\r\n // ============================================================================\r\n targetScope = computed(() => this.formValue()?.targetScope ?? 'Level');\r\n targetModuleKey = computed(() => this.formValue()?.targetModuleKey ?? null);\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'requestSchema'\r\n // ============================================================================\r\n requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.requestSchemas().map((schema) => ({\r\n label: schema.name[lang] || schema.name.en,\r\n value: schema.id.toString(),\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'properties'\r\n // ============================================================================\r\n propertyOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.properties().map((prop) => ({\r\n label: prop.name[lang] || prop.name.en,\r\n value: prop.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Module Options for optionsSource: 'auto-populated' (moduleKey, requiredModuleKey)\r\n // ============================================================================\r\n moduleOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.modules().map((mod) => ({\r\n label: mod.name[lang] || mod.name.en,\r\n value: mod.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Scope Options based on selected rule type\r\n // ============================================================================\r\n scopeOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'Level', value: 'Level' },\r\n { label: 'Module', value: 'Module' },\r\n { label: 'PhaseGate', value: 'PhaseGate' },\r\n ];\r\n }\r\n return ruleType.supportedScopes.map((scope) => ({\r\n label: scope,\r\n value: scope,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Operation Options based on selected rule type\r\n // ============================================================================\r\n operationOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'All', value: '' },\r\n { label: 'Create', value: 'Create' },\r\n { label: 'Update', value: 'Update' },\r\n { label: 'Delete', value: 'Delete' },\r\n ];\r\n }\r\n return [\r\n { label: 'All', value: '' },\r\n ...ruleType.supportedOperations.map((op) => ({\r\n label: op,\r\n value: op,\r\n })),\r\n ];\r\n });\r\n\r\n // ============================================================================\r\n // Rule Type Options\r\n // ============================================================================\r\n ruleTypeOptions = computed(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.ruleTypes().map((rt) => ({\r\n label: rt.name[lang] || rt.name.en,\r\n value: rt.type,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Dynamic Form Configuration\r\n // ============================================================================\r\n formConfig = computed<DynamicFormConfig>(() => {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n const ruleType = this.selectedRuleType();\r\n const isEdit = !!this.ruleForEdit()?.id;\r\n\r\n return {\r\n sections: [\r\n // Section 1: Basic Information\r\n {\r\n key: 'basicInfo',\r\n type: 'header',\r\n label: t('basic-information'),\r\n order: 1,\r\n fields: [\r\n new TextFieldConfig({\r\n key: 'key',\r\n label: t('rule-key'),\r\n placeholder: 'e.g., charter-required',\r\n validators: [\r\n ValidatorConfig.required(),\r\n ValidatorConfig.pattern(\r\n '^[a-z0-9-]+$',\r\n 'Only lowercase letters, numbers and hyphens allowed',\r\n ),\r\n ],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new NumberFieldConfig({\r\n key: 'priority',\r\n label: t('priority'),\r\n placeholder: '10',\r\n validators: [ValidatorConfig.required()],\r\n min: 0,\r\n max: 1000,\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_en',\r\n label: t('name-en'),\r\n placeholder: t('name-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 3,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_ar',\r\n label: t('name-ar'),\r\n placeholder: t('name-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_en',\r\n label: t('description-en'),\r\n placeholder: t('description-en-placeholder'),\r\n order: 5,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_ar',\r\n label: t('description-ar'),\r\n placeholder: t('description-ar-placeholder'),\r\n order: 6,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_en',\r\n label: t('error-message-en'),\r\n placeholder: t('error-message-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 7,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_ar',\r\n label: t('error-message-ar'),\r\n placeholder: t('error-message-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 8,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 2: Rule Target\r\n {\r\n key: 'ruleTarget',\r\n type: 'header',\r\n label: t('rule-target'),\r\n order: 2,\r\n fields: [\r\n new SelectFieldConfig({\r\n key: 'ruleType',\r\n label: t('rule-type'),\r\n options: this.ruleTypeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetScope',\r\n label: t('target-scope'),\r\n options: this.scopeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetModuleKey',\r\n label: t('target-module'),\r\n options: this.moduleOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 3,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'targetScope',\r\n value: 'Module',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetOperationKey',\r\n label: t('target-operation'),\r\n options: this.operationOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 3: Rule-Specific Configuration (dynamic)\r\n ...(ruleType ? [this.buildConfigurationSection(ruleType)] : []),\r\n // Section 4: Execution Settings\r\n {\r\n key: 'executionSettings',\r\n type: 'header',\r\n label: t('execution-settings'),\r\n order: 4,\r\n fields: [\r\n new ToggleFieldConfig({\r\n key: 'stopOnFailure',\r\n label: t('stop-on-failure'),\r\n order: 1,\r\n colSpan: 6,\r\n }),\r\n new ToggleFieldConfig({\r\n key: 'isActive',\r\n label: t('active-rule'),\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n });\r\n\r\n // ============================================================================\r\n // Constructor with Effect for Form Population\r\n // ============================================================================\r\n constructor() {\r\n // Effect to populate form when editing existing rule\r\n effect(() => {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (this.selectedRule() && ruleId) {\r\n const rule = this.selectedRule();\r\n if (!rule) return;\r\n\r\n // Unpack rule data to form format\r\n const formData = this.unpackRuleToForm(rule);\r\n this.ruleFormControl.patchValue(formData);\r\n } else {\r\n // Default values for new rule\r\n this.ruleFormControl.reset({\r\n priority: 10,\r\n stopOnFailure: true,\r\n isActive: true,\r\n targetScope: 'Module',\r\n });\r\n }\r\n });\r\n\r\n // Effect to apply default values when rule type changes (for new rules only)\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n // Only apply defaults for new rules (not editing)\r\n if (ruleType && !ruleId) {\r\n const defaults = this.getDefaultsFromSchema(ruleType);\r\n if (Object.keys(defaults).length > 0) {\r\n const currentValue = this.ruleFormControl.value ?? {};\r\n this.ruleFormControl.patchValue({ ...currentValue, ...defaults });\r\n }\r\n }\r\n });\r\n\r\n // Effect to fetch requestSchemas and properties when scope/module changes\r\n // This runs when configurationSchema has fields with optionsSource = 'requestSchema' or 'properties'\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const scope = this.targetScope();\r\n const moduleKey = this.targetModuleKey();\r\n\r\n if (!ruleType) return;\r\n\r\n // Check if any field needs requestSchema options\r\n const needsRequestSchemas = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'requestSchema',\r\n );\r\n\r\n // Check if any field needs properties options\r\n const needsProperties = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'properties',\r\n );\r\n // For Module scope, we need a target module key\r\n if (scope === 'Module' && !moduleKey) {\r\n // Clear options when module is not selected\r\n if (needsRequestSchemas) {\r\n this.facade.clearRequestSchemas();\r\n }\r\n if (needsProperties) {\r\n this.facade.clearProperties();\r\n }\r\n return;\r\n }\r\n\r\n // Fetch options based on scope\r\n if (needsRequestSchemas) {\r\n this.facade.getRequestSchemas(scope, moduleKey ?? undefined);\r\n }\r\n\r\n if (needsProperties) {\r\n this.facade.getProperties(scope, moduleKey ?? undefined);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Extract default values from rule type's configuration schema\r\n */\r\n private getDefaultsFromSchema(\r\n ruleType: GovernanceRuleType,\r\n ): Record<string, any> {\r\n const defaults: Record<string, any> = {};\r\n for (const field of ruleType.configurationSchema) {\r\n if (field.defaultValue !== undefined) {\r\n defaults[`config_${field.key}`] = field.defaultValue;\r\n }\r\n }\r\n return defaults;\r\n }\r\n\r\n ngOnInit(): void {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (ruleId) {\r\n this.facade.getRule(ruleId);\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Submit Handler\r\n // ============================================================================\r\n onSubmit() {\r\n if (!this.ruleFormControl.valid) {\r\n return;\r\n }\r\n\r\n const formValue = this.ruleFormControl.value;\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n if (ruleId) {\r\n // Update\r\n const payload = this.packFormToUpdateDto(formValue);\r\n this.facade.updateRule(ruleId, payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n // Create\r\n const payload = this.packFormToCreateDto(formValue);\r\n this.facade.addRule(payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Build Configuration Section Based on Rule Type\r\n // ============================================================================\r\n private buildConfigurationSection(ruleType: GovernanceRuleType) {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n\r\n return {\r\n key: 'configuration',\r\n type: 'header' as const,\r\n label: t('rule-configuration'),\r\n order: 3,\r\n fields: this.buildConfigFieldsForType(ruleType),\r\n };\r\n }\r\n\r\n private buildConfigFieldsForType(\r\n ruleType: GovernanceRuleType,\r\n ): BaseFieldConfig[] {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n\r\n // Build fields dynamically from configurationSchema array\r\n return ruleType.configurationSchema.map((field, index) =>\r\n this.schemaFieldToFormField(field, index + 1, lang),\r\n );\r\n }\r\n\r\n /**\r\n * Convert a ConfigurationFieldSchema to DynamicForm BaseFieldConfig\r\n */\r\n private schemaFieldToFormField(\r\n field: ConfigurationFieldSchema,\r\n order: number,\r\n lang: 'en' | 'ar',\r\n ): BaseFieldConfig {\r\n const label = field.label[lang] || field.label.en;\r\n const colSpan = field.colSpan ?? 6;\r\n const validators = field.required ? [ValidatorConfig.required()] : [];\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'textarea':\r\n return new TextareaFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'number':\r\n return new NumberFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n min: field.min,\r\n max: field.max,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'select':\r\n return new SelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'multi-select':\r\n return new MultiSelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'checkbox':\r\n return new ToggleFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'date':\r\n return new DateFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n default:\r\n // Fallback to text field for unknown types\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get options for a field based on its optionsSource\r\n * - 'static' or 'auto-populated': Use options from schema (already in API response)\r\n * - 'requestSchema': Use fetched request schemas from state\r\n * - 'properties': Use fetched properties from state\r\n */\r\n private getOptionsForField(\r\n field: ConfigurationFieldSchema,\r\n ): ConfigurationFieldOption[] {\r\n switch (field.optionsSource) {\r\n case 'requestSchema':\r\n return this.requestSchemaOptions();\r\n\r\n case 'properties':\r\n return this.propertyOptions();\r\n\r\n case 'auto-populated':\r\n case 'static':\r\n default:\r\n // Use options directly from schema\r\n return field.options ?? [];\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Data Transformation Helpers\r\n // ============================================================================\r\n private unpackRuleToForm(rule: GovernanceRule): Record<string, any> {\r\n const formData: Record<string, any> = {\r\n key: rule.key,\r\n priority: rule.priority,\r\n name_en: rule.name?.en ?? '',\r\n name_ar: rule.name?.ar ?? '',\r\n description_en: rule.description?.en ?? '',\r\n description_ar: rule.description?.ar ?? '',\r\n errorMessage_en: rule.errorMessage?.en ?? '',\r\n errorMessage_ar: rule.errorMessage?.ar ?? '',\r\n ruleType: rule.ruleTypeKey,\r\n targetScope: rule.targetScope,\r\n targetModuleKey: rule.targetModuleKey ?? '',\r\n targetOperationKey: rule.targetOperationKey ?? '',\r\n stopOnFailure: rule.stopOnFailure,\r\n isActive: rule.isActive,\r\n };\r\n\r\n // Unpack configuration fields with config_ prefix\r\n if (rule.configuration) {\r\n Object.entries(rule.configuration).forEach(([key, value]) => {\r\n formData[`config_${key}`] = value;\r\n });\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n private packFormToCreateDto(\r\n formValue: Record<string, any>,\r\n ): CreateGovernanceRuleDto {\r\n return {\r\n key: formValue['key'],\r\n name: {\r\n en: formValue['name_en'],\r\n ar: formValue['name_ar'],\r\n },\r\n description:\r\n formValue['description_en'] || formValue['description_ar']\r\n ? {\r\n en: formValue['description_en'] ?? '',\r\n ar: formValue['description_ar'] ?? '',\r\n }\r\n : undefined,\r\n errorMessage: {\r\n en: formValue['errorMessage_en'],\r\n ar: formValue['errorMessage_ar'],\r\n },\r\n ruleType: formValue['ruleType'],\r\n targetScope: formValue['targetScope'],\r\n targetModuleKey: formValue['targetModuleKey'] || undefined,\r\n targetOperationKey: formValue['targetOperationKey'] || undefined,\r\n configuration: this.extractConfiguration(formValue),\r\n priority: formValue['priority'],\r\n stopOnFailure: formValue['stopOnFailure'] ?? true,\r\n };\r\n }\r\n\r\n private packFormToUpdateDto(\r\n formValue: Record<string, any>,\r\n ): UpdateGovernanceRuleDto {\r\n return {\r\n ...this.packFormToCreateDto(formValue),\r\n isActive: formValue['isActive'] ?? true,\r\n };\r\n }\r\n\r\n private extractConfiguration(\r\n formValue: Record<string, any>,\r\n ): Record<string, any> {\r\n const config: Record<string, any> = {};\r\n Object.entries(formValue).forEach(([key, value]) => {\r\n if (\r\n key.startsWith('config_') &&\r\n value !== null &&\r\n value !== undefined &&\r\n value !== ''\r\n ) {\r\n const configKey = key.replace('config_', '');\r\n config[configKey] = value;\r\n }\r\n });\r\n return Object.keys(config).length > 0 ? config : (undefined as any);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\"\r\n >\r\n @if (isLoadingRule()) {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"6rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"formConfig()\"\r\n [formControl]=\"ruleFormControl\"\r\n />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'cancel' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n (click)=\"ref.close()\"\r\n />\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"!ruleFormControl.valid\"\r\n (click)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport {\r\n CellChangeEvent,\r\n ColumnDef,\r\n Table,\r\n TableAction,\r\n} from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { GovernanceFacade } from '../../../store/governance';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport GovernanceRuleForm from '../governance-rule-form/governance-rule-form';\r\nimport { finalize } from 'rxjs';\r\nimport { Breadcrumb } from '@masterteam/components/breadcrumb';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { Chip } from '@masterteam/components/chip';\r\nimport { GovernanceRule } from '../../../store/governance';\r\n\r\n@Component({\r\n selector: 'mt-governance-rules-list',\r\n styleUrl: './governance-rules-list.css',\r\n templateUrl: './governance-rules-list.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SkeletonModule,\r\n Table,\r\n TranslocoDirective,\r\n Breadcrumb,\r\n Icon,\r\n Chip,\r\n ],\r\n})\r\nexport default class GovernanceRulesList implements OnDestroy {\r\n // ============================================================================\r\n // Template References for Custom Columns\r\n // ============================================================================\r\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\r\n scopeCol = viewChild.required<TemplateRef<any>>('scopeCol');\r\n priorityCol = viewChild.required<TemplateRef<any>>('priorityCol');\r\n\r\n // ============================================================================\r\n // Services\r\n // ============================================================================\r\n private readonly facade = inject(GovernanceFacade);\r\n readonly modal: ModalService = inject(ModalService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n // ============================================================================\r\n // Breadcrumb\r\n // ============================================================================\r\n breadcrumbItems = linkedSignal(() => [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.control-panel'),\r\n routerLink: '/control-panel',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.governance-rules'),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Data Computed from Facade\r\n // ============================================================================\r\n rules = computed(() => {\r\n const tab = this.activeTab();\r\n const all = this.allRules();\r\n const activeRules = this.activeRules();\r\n const inactiveRules = this.inactiveRules();\r\n\r\n switch (tab) {\r\n case 'active':\r\n return activeRules;\r\n case 'inactive':\r\n return inactiveRules;\r\n case 'all':\r\n default:\r\n return all;\r\n }\r\n });\r\n\r\n // ============================================================================\r\n // Tabs\r\n // ============================================================================\r\n tabs = signal([\r\n {\r\n label: this.translocoService.translate('governance.all'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: 'active',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: 'inactive',\r\n },\r\n ]);\r\n activeTab = signal<string>('all');\r\n\r\n // ============================================================================\r\n // Table Actions\r\n // ============================================================================\r\n tableActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.plus',\r\n label: this.translocoService.translate('governance.add-rule'),\r\n color: 'primary',\r\n action: () => {\r\n this.openRuleDialog();\r\n },\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.translocoService.translate('edit'),\r\n color: 'primary',\r\n action: (row: GovernanceRule) => {\r\n this.facade.clearSelectedRule();\r\n this.openRuleDialog(row);\r\n },\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: GovernanceRule) => {\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .deleteRule(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: GovernanceRule) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Table Columns\r\n // ============================================================================\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'priority',\r\n label: this.translocoService.translate('governance.priority'),\r\n type: 'custom',\r\n customCellTpl: this.priorityCol(),\r\n sortable: true,\r\n },\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate('governance.name'),\r\n type: 'text',\r\n sortable: true,\r\n },\r\n {\r\n key: 'ruleTypeKey',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n type: 'custom',\r\n customCellTpl: this.typeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n options: this.getRuleTypeOptions(),\r\n },\r\n },\r\n {\r\n key: 'targetScope',\r\n label: this.translocoService.translate('governance.scope'),\r\n type: 'custom',\r\n customCellTpl: this.scopeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.scope'),\r\n options: [\r\n { label: 'Level', value: 'Level' },\r\n { label: 'Module', value: 'Module' },\r\n { label: 'PhaseGate', value: 'PhaseGate' },\r\n ],\r\n },\r\n },\r\n {\r\n key: 'targetModuleKey',\r\n label: this.translocoService.translate('governance.target-module'),\r\n type: 'text',\r\n },\r\n {\r\n key: 'isActive',\r\n label: this.translocoService.translate('governance.status'),\r\n type: 'boolean',\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.status'),\r\n options: [\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: true,\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: false,\r\n },\r\n ],\r\n },\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Private\r\n // ============================================================================\r\n loading = this.facade.isLoadingRules;\r\n private allRules = this.facade.rules;\r\n private activeRules = this.facade.activeRules;\r\n private inactiveRules = this.facade.inactiveRules;\r\n\r\n ngOnDestroy(): void {\r\n this.facade.resetState();\r\n }\r\n\r\n openRuleDialog(rule: GovernanceRule | null = null) {\r\n const modalType: 'drawer' | 'dialog' = rule ? 'drawer' : 'drawer';\r\n this.modal.openModal(GovernanceRuleForm, modalType, {\r\n header: rule\r\n ? this.translocoService.translate('governance.edit-rule')\r\n : this.translocoService.translate('governance.add-rule'),\r\n styleClass: '!absolute !shadow-none',\r\n responsivePreset: 'drawer-wide',\r\n position: modalType === 'drawer' ? 'end' : '',\r\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n inputValues: {\r\n ruleForEdit: rule,\r\n },\r\n });\r\n }\r\n\r\n onCellChange(event: CellChangeEvent) {\r\n if (event.column === 'isActive' && event.type === 'boolean') {\r\n this.facade.toggleRuleActive(event.row.id);\r\n }\r\n }\r\n\r\n private getRuleTypeOptions() {\r\n return [\r\n { label: 'Module Exists', value: 'ModuleExists' },\r\n { label: 'Module Does Not Exist', value: 'ModuleDoesNotExist' },\r\n { label: 'Module Max Count', value: 'ModuleMaxCount' },\r\n { label: 'Module Min Count', value: 'ModuleMinCount' },\r\n { label: 'Field Required', value: 'FieldRequired' },\r\n { label: 'Field Value', value: 'FieldValue' },\r\n { label: 'Phase Gate Module Required', value: 'PhaseGateModuleRequired' },\r\n { label: 'No Active Request', value: 'NoActiveRequest' },\r\n ];\r\n }\r\n\r\n getRuleTypeChipClass(ruleTypeKey: string): string {\r\n const classes: Record<string, string> = {\r\n ModuleExists: 'bg-blue-100 text-blue-700',\r\n ModuleDoesNotExist: 'bg-red-100 text-red-700',\r\n ModuleMaxCount: 'bg-amber-100 text-amber-700',\r\n ModuleMinCount: 'bg-orange-100 text-orange-700',\r\n FieldRequired: 'bg-purple-100 text-purple-700',\r\n FieldValue: 'bg-indigo-100 text-indigo-700',\r\n PhaseGateModuleRequired: 'bg-green-100 text-green-700',\r\n NoActiveRequest: 'bg-rose-100 text-rose-700',\r\n };\r\n return classes[ruleTypeKey] ?? 'bg-slate-100 text-slate-700';\r\n }\r\n\r\n getScopeIcon(scope: string): string {\r\n const icons: Record<string, string> = {\r\n Level: 'general.layers-three-01',\r\n Module: 'general.cube-01',\r\n PhaseGate: 'general.flag-01',\r\n };\r\n return icons[scope] ?? 'general.file-02';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <!-- Rule Type Column Template -->\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"row.ruleTypeKey\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Scope Column Template -->\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-lg\"\r\n [icon]=\"getScopeIcon(row.targetScope)\"\r\n ></mt-icon>\r\n <span>{{ row.targetScope }}</span>\r\n @if (row.targetModuleKey) {\r\n <span class=\"text-slate-500\">→ {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Priority Column Template -->\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Table -->\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masterteam/governance",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"directory": "../../../dist/masterteam/governance",
|
|
6
6
|
"linkDirectory": false,
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"tailwindcss": "^4.1.17",
|
|
21
21
|
"tailwindcss-primeui": "^0.6.1",
|
|
22
22
|
"@ngxs/store": "^20.1.0",
|
|
23
|
-
"@masterteam/components": "^0.0.
|
|
24
|
-
"@masterteam/
|
|
25
|
-
"@masterteam/
|
|
23
|
+
"@masterteam/components": "^0.0.102",
|
|
24
|
+
"@masterteam/icons": "^0.0.13",
|
|
25
|
+
"@masterteam/forms": "^0.0.49"
|
|
26
26
|
},
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"exports": {
|