@masterteam/governance 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.1.18 | 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-tracking: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);--color-slate-900:oklch(20.8% .042 265.755);--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);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-semibold:600;--tracking-tight:-.025em;--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}.mx-1{margin-inline:calc(var(--spacing)*1)}.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-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}: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))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.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)}.text-slate-900{color:var(--color-slate-900)}.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-tracking{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}
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}
@@ -246,7 +246,11 @@ let GovernanceState = class GovernanceState extends CrudStateBase {
246
246
  });
247
247
  }
248
248
  getRuleTypes(ctx) {
249
- const req$ = this.http.get('control-panel/governance/rule-types');
249
+ const { levelId } = ctx.getState();
250
+ if (!levelId) {
251
+ return;
252
+ }
253
+ const req$ = this.http.get(`control-panel/governance/rule-types?LevelId=${levelId}`);
250
254
  return handleApiRequest({
251
255
  ctx,
252
256
  key: GovernanceActionKey.GetRuleTypes,
@@ -358,7 +362,7 @@ let GovernanceState = class GovernanceState extends CrudStateBase {
358
362
  }
359
363
  }
360
364
  // Get request schemas (assuming a common endpoint pattern)
361
- const req$ = this.http.get(`${basePath}/requestSchemas`);
365
+ const req$ = this.http.get(`${basePath}/requestSchema`);
362
366
  return handleApiRequest({
363
367
  ctx,
364
368
  key: GovernanceActionKey.GetRequestSchemas,
@@ -671,17 +675,16 @@ class GovernanceRuleForm {
671
675
  // Scope Options based on selected rule type
672
676
  // ============================================================================
673
677
  scopeOptions = computed(() => {
674
- const t = (key) => this.translocoService.translate(`governance.scopes.${key.toLowerCase()}`);
675
678
  const ruleType = this.selectedRuleType();
676
679
  if (!ruleType) {
677
680
  return [
678
- { label: t('level'), value: 'Level' },
679
- { label: t('module'), value: 'Module' },
680
- { label: t('phasegate'), value: 'PhaseGate' },
681
+ { label: 'Level', value: 'Level' },
682
+ { label: 'Module', value: 'Module' },
683
+ { label: 'PhaseGate', value: 'PhaseGate' },
681
684
  ];
682
685
  }
683
686
  return ruleType.supportedScopes.map((scope) => ({
684
- label: t(scope.toLowerCase()),
687
+ label: scope,
685
688
  value: scope,
686
689
  }));
687
690
  }, ...(ngDevMode ? [{ debugName: "scopeOptions" }] : []));
@@ -689,20 +692,19 @@ class GovernanceRuleForm {
689
692
  // Operation Options based on selected rule type
690
693
  // ============================================================================
691
694
  operationOptions = computed(() => {
692
- const t = (key) => this.translocoService.translate(`governance.operations.${key.toLowerCase()}`);
693
695
  const ruleType = this.selectedRuleType();
694
696
  if (!ruleType) {
695
697
  return [
696
- { label: t('all'), value: '' },
697
- { label: t('create'), value: 'Create' },
698
- { label: t('update'), value: 'Update' },
699
- { label: t('delete'), value: 'Delete' },
698
+ { label: 'All', value: '' },
699
+ { label: 'Create', value: 'Create' },
700
+ { label: 'Update', value: 'Update' },
701
+ { label: 'Delete', value: 'Delete' },
700
702
  ];
701
703
  }
702
704
  return [
703
- { label: t('all'), value: '' },
705
+ { label: 'All', value: '' },
704
706
  ...ruleType.supportedOperations.map((op) => ({
705
- label: t(op.toLowerCase()),
707
+ label: op,
706
708
  value: op,
707
709
  })),
708
710
  ];
@@ -834,7 +836,6 @@ class GovernanceRuleForm {
834
836
  new SelectFieldConfig({
835
837
  key: 'targetModuleKey',
836
838
  label: t('target-module'),
837
- placeholder: t('select-target-module'),
838
839
  options: this.moduleOptions(),
839
840
  optionLabel: 'label',
840
841
  optionValue: 'value',
@@ -1196,7 +1197,7 @@ class GovernanceRuleForm {
1196
1197
  return Object.keys(config).length > 0 ? config : undefined;
1197
1198
  }
1198
1199
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRuleForm, deps: [], target: i0.ɵɵFactoryTarget.Component });
1199
- 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 [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\">\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"] }, { 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
1201
  }
1201
1202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRuleForm, decorators: [{
1202
1203
  type: Component,
@@ -1208,14 +1209,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
1208
1209
  DynamicForm,
1209
1210
  ReactiveFormsModule,
1210
1211
  TranslocoPipe,
1211
- ], providers: [DialogService], template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\">\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" }]
1212
+ ], providers: [DialogService], 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" }]
1212
1213
  }], ctorParameters: () => [], propDecorators: { ruleForEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "ruleForEdit", required: false }] }] } });
1213
1214
 
1214
1215
  class GovernanceRulesList {
1215
- // ============================================================================
1216
- // Input - levelId from parent page
1217
- // ============================================================================
1218
- levelId = input.required(...(ngDevMode ? [{ debugName: "levelId" }] : []));
1219
1216
  // ============================================================================
1220
1217
  // Template References for Custom Columns
1221
1218
  // ============================================================================
@@ -1459,7 +1456,7 @@ class GovernanceRulesList {
1459
1456
  return icons[scope] ?? 'general.file-02';
1460
1457
  }
1461
1458
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRulesList, deps: [], target: i0.ɵɵFactoryTarget.Component });
1462
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: GovernanceRulesList, isStandalone: true, selector: "mt-governance-rules-list", inputs: { levelId: { classPropertyName: "levelId", publicName: "levelId", isSignal: true, isRequired: true, transformFunction: null } }, 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 <div class=\"flex items-center justify-between\">\r\n <div class=\"space-y-1\">\r\n <h1 class=\"text-xl font-semibold text-slate-900 tracking-tight\">\r\n {{ t(\"governance-rules\") }}\r\n </h1>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems()\"\r\n [styleClass]=\"'flex justify-start mx-1'\"\r\n ></mt-breadcrumb>\r\n </div>\r\n </div>\r\n\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: Breadcrumb, selector: "mt-breadcrumb", inputs: ["items", "styleClass"], outputs: ["onItemClick"] }, { 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"] }] });
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"] }] });
1463
1460
  }
1464
1461
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: GovernanceRulesList, decorators: [{
1465
1462
  type: Component,
@@ -1471,8 +1468,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
1471
1468
  Breadcrumb,
1472
1469
  Icon,
1473
1470
  Chip,
1474
- ], template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"space-y-1\">\r\n <h1 class=\"text-xl font-semibold text-slate-900 tracking-tight\">\r\n {{ t(\"governance-rules\") }}\r\n </h1>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems()\"\r\n [styleClass]=\"'flex justify-start mx-1'\"\r\n ></mt-breadcrumb>\r\n </div>\r\n </div>\r\n\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" }]
1475
- }], propDecorators: { levelId: [{ type: i0.Input, args: [{ isSignal: true, alias: "levelId", required: true }] }], typeCol: [{ type: i0.ViewChild, args: ['typeCol', { isSignal: true }] }], scopeCol: [{ type: i0.ViewChild, args: ['scopeCol', { isSignal: true }] }], priorityCol: [{ type: i0.ViewChild, args: ['priorityCol', { isSignal: true }] }] } });
1471
+ ], 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" }]
1472
+ }], propDecorators: { typeCol: [{ type: i0.ViewChild, args: ['typeCol', { isSignal: true }] }], scopeCol: [{ type: i0.ViewChild, args: ['scopeCol', { isSignal: true }] }], priorityCol: [{ type: i0.ViewChild, args: ['priorityCol', { isSignal: true }] }] } });
1476
1473
 
1477
1474
  /**
1478
1475
  * Generated bundle index. Do not edit.
@@ -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 req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n 'control-panel/governance/rule-types',\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}/requestSchemas`,\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 t = (key: string) =>\r\n this.translocoService.translate(`governance.scopes.${key.toLowerCase()}`);\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: t('level'), value: 'Level' },\r\n { label: t('module'), value: 'Module' },\r\n { label: t('phasegate'), value: 'PhaseGate' },\r\n ];\r\n }\r\n return ruleType.supportedScopes.map((scope) => ({\r\n label: t(scope.toLowerCase()),\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 t = (key: string) =>\r\n this.translocoService.translate(`governance.operations.${key.toLowerCase()}`);\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: t('all'), value: '' },\r\n { label: t('create'), value: 'Create' },\r\n { label: t('update'), value: 'Update' },\r\n { label: t('delete'), value: 'Delete' },\r\n ];\r\n }\r\n return [\r\n { label: t('all'), value: '' },\r\n ...ruleType.supportedOperations.map((op) => ({\r\n label: t(op.toLowerCase()),\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 placeholder: t('select-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\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 [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\">\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 input,\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 // Input - levelId from parent page\r\n // ============================================================================\r\n levelId = input.required<number>();\r\n\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 <div class=\"flex items-center justify-between\">\r\n <div class=\"space-y-1\">\r\n <h1 class=\"text-xl font-semibold text-slate-900 tracking-tight\">\r\n {{ t(\"governance-rules\") }}\r\n </h1>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems()\"\r\n [styleClass]=\"'flex justify-start mx-1'\"\r\n ></mt-breadcrumb>\r\n </div>\r\n </div>\r\n\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: '!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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/governance",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
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.86",
24
- "@masterteam/icons": "^0.0.13",
25
- "@masterteam/forms": "^0.0.35"
23
+ "@masterteam/components": "^0.0.87",
24
+ "@masterteam/forms": "^0.0.35",
25
+ "@masterteam/icons": "^0.0.13"
26
26
  },
27
27
  "sideEffects": false,
28
28
  "exports": {
@@ -314,7 +314,7 @@ declare class GovernanceState extends CrudStateBase<GovernanceRule, GovernanceSt
314
314
  resetState(ctx: StateContext<GovernanceStateModel>): void;
315
315
  getRules(ctx: StateContext<GovernanceStateModel>): rxjs.Observable<Response<GovernanceRule[]>> | undefined;
316
316
  getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule): rxjs.Observable<Response<GovernanceRule>> | undefined;
317
- getRuleTypes(ctx: StateContext<GovernanceStateModel>): rxjs.Observable<Response<GovernanceRuleType[]>>;
317
+ getRuleTypes(ctx: StateContext<GovernanceStateModel>): rxjs.Observable<Response<GovernanceRuleType[]>> | undefined;
318
318
  addRule(ctx: StateContext<GovernanceStateModel>, { rule }: AddGovernanceRule): rxjs.Observable<_masterteam_components.Response<GovernanceRule>> | undefined;
319
319
  updateRule(ctx: StateContext<GovernanceStateModel>, { id, rule }: UpdateGovernanceRule): rxjs.Observable<_masterteam_components.Response<GovernanceRule>> | undefined;
320
320
  deleteRule(ctx: StateContext<GovernanceStateModel>, { id }: DeleteGovernanceRule): rxjs.Observable<_masterteam_components.Response<void>> | undefined;
@@ -330,7 +330,6 @@ declare class GovernanceState extends CrudStateBase<GovernanceRule, GovernanceSt
330
330
  }
331
331
 
332
332
  declare class GovernanceRulesList implements OnDestroy {
333
- levelId: _angular_core.InputSignal<number>;
334
333
  typeCol: _angular_core.Signal<TemplateRef<any>>;
335
334
  scopeCol: _angular_core.Signal<TemplateRef<any>>;
336
335
  priorityCol: _angular_core.Signal<TemplateRef<any>>;
@@ -371,7 +370,7 @@ declare class GovernanceRulesList implements OnDestroy {
371
370
  getRuleTypeChipClass(ruleTypeKey: string): string;
372
371
  getScopeIcon(scope: string): string;
373
372
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GovernanceRulesList, never>;
374
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<GovernanceRulesList, "mt-governance-rules-list", never, { "levelId": { "alias": "levelId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
373
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GovernanceRulesList, "mt-governance-rules-list", never, {}, {}, never, never, true, never>;
375
374
  }
376
375
 
377
376
  declare class GovernanceRuleForm implements OnInit {