@masterteam/governance 0.0.6 → 0.0.8

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 +1 @@
1
- {"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.html","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.html","../../../../packages/masterteam/governance/src/masterteam-governance.ts"],"sourcesContent":["import {\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\n\r\nexport class SetLevelId {\r\n static readonly type = '[Governance] Set Level ID';\r\n constructor(public levelId: number) {}\r\n}\r\n\r\nexport class GetGovernanceRules {\r\n static readonly type = '[Governance] Get Rules';\r\n}\r\n\r\nexport class GetGovernanceRule {\r\n static readonly type = '[Governance] Get Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetGovernanceRuleTypes {\r\n static readonly type = '[Governance] Get Rule Types';\r\n}\r\n\r\nexport class AddGovernanceRule {\r\n static readonly type = '[Governance] Add Rule';\r\n constructor(public rule: CreateGovernanceRuleDto) {}\r\n}\r\n\r\nexport class UpdateGovernanceRule {\r\n static readonly type = '[Governance] Update Rule';\r\n constructor(\r\n public id: number,\r\n public rule: UpdateGovernanceRuleDto,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGovernanceRule {\r\n static readonly type = '[Governance] Delete Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ToggleGovernanceRuleActive {\r\n static readonly type = '[Governance] Toggle Rule Active';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ClearSelectedRule {\r\n static readonly type = '[Governance] Clear Selected Rule';\r\n}\r\n\r\nexport class ResetGovernanceState {\r\n static readonly type = '[Governance] Reset State';\r\n}\r\n\r\nexport class GetModules {\r\n static readonly type = '[Governance] Get Modules';\r\n}\r\n\r\n/**\r\n * Get request schemas for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetRequestSchemas {\r\n static readonly type = '[Governance] Get Request Schemas';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Get properties for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetProperties {\r\n static readonly type = '[Governance] Get Properties';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Clear request schemas (when scope/module changes)\r\n */\r\nexport class ClearRequestSchemas {\r\n static readonly type = '[Governance] Clear Request Schemas';\r\n}\r\n\r\n/**\r\n * Clear properties (when scope/module changes)\r\n */\r\nexport class ClearProperties {\r\n static readonly type = '[Governance] Clear Properties';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\n// ============================================================================\r\n// Translatable Interface\r\n// ============================================================================\r\n\r\nexport interface Translatable {\r\n en: string;\r\n ar: string;\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Enum\r\n// ============================================================================\r\n\r\nexport enum GovernanceRuleTypeEnum {\r\n ModuleExists = 1,\r\n ModuleDoesNotExist = 2,\r\n ModuleMaxCount = 3,\r\n ModuleMinCount = 4,\r\n FieldRequired = 5,\r\n FieldValue = 6,\r\n PhaseGateModuleRequired = 7,\r\n NoActiveRequest = 8,\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Definition (from API)\r\n// ============================================================================\r\n\r\n/**\r\n * Option for select/multi-select fields\r\n */\r\nexport interface ConfigurationFieldOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Options source indicator for select fields\r\n * - 'auto-populated': Options already in response (modules, phase gates, statuses)\r\n * - 'static': Hardcoded options in response\r\n * - 'requestSchema': Fetch from request schema endpoint\r\n * - 'properties': Fetch from properties endpoint\r\n * - null/undefined: No options needed (text/number fields)\r\n */\r\nexport type OptionsSource =\r\n | 'auto-populated'\r\n | 'static'\r\n | 'requestSchema'\r\n | 'properties'\r\n | null;\r\n\r\n/**\r\n * Configuration field schema - now array-based with key property\r\n */\r\nexport interface ConfigurationFieldSchema {\r\n key: string; // Field identifier (e.g., \"moduleKey\", \"maxCount\")\r\n type:\r\n | 'text'\r\n | 'textarea'\r\n | 'number'\r\n | 'select'\r\n | 'multi-select'\r\n | 'checkbox'\r\n | 'date';\r\n label: Translatable;\r\n required?: boolean;\r\n defaultValue?: any;\r\n min?: number; // For number inputs\r\n max?: number; // For number inputs\r\n options?: ConfigurationFieldOption[]; // For select/multi-select\r\n optionsSource?: OptionsSource; // Indicates where to get options\r\n colSpan?: number; // Grid layout (1-12)\r\n}\r\n\r\nexport interface GovernanceRuleType {\r\n type: string; // Enum value as string (e.g., \"10\" for ModuleMaxCount)\r\n key: string; // Enum key (e.g., \"ModuleMaxCount\")\r\n name: Translatable;\r\n description: Translatable;\r\n supportedScopes: string[]; // [\"Module\", \"Level\", \"PhaseGate\"]\r\n supportedOperations: string[]; // [\"Create\", \"Update\", \"Delete\"]\r\n configurationSchema: ConfigurationFieldSchema[]; // Now an array\r\n}\r\n\r\n// ============================================================================\r\n// Governance Rule Entity\r\n// ============================================================================\r\n\r\nexport interface GovernanceRule {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n description?: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: GovernanceRuleTypeEnum;\r\n ruleTypeKey: string; // \"ModuleMaxCount\"\r\n targetScope: string; // \"Level\", \"Module\", \"PhaseGate\"\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n levelId: number;\r\n configuration: Record<string, any>;\r\n priority: number;\r\n isActive: boolean;\r\n stopOnFailure: boolean;\r\n createdAt: string;\r\n createdBy?: string;\r\n modifiedAt?: string;\r\n modifiedBy?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Create/Update DTOs\r\n// ============================================================================\r\n\r\nexport interface CreateGovernanceRuleDto {\r\n key: string;\r\n name: Record<string, string>; // { en: \"...\", ar: \"...\" }\r\n description?: Record<string, string>;\r\n errorMessage: Record<string, string>;\r\n ruleType: string; // \"ModuleMaxCount\"\r\n targetScope: string;\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n configuration?: Record<string, any>;\r\n priority: number;\r\n stopOnFailure: boolean;\r\n}\r\n\r\nexport interface UpdateGovernanceRuleDto extends CreateGovernanceRuleDto {\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Governance Violation (for error handling)\r\n// ============================================================================\r\n\r\nexport interface GovernanceViolation {\r\n ruleKey: string;\r\n message: string;\r\n details?: any;\r\n}\r\n\r\nexport interface GovernanceViolationError {\r\n type: 'GovernanceViolation';\r\n title: string;\r\n status: 403;\r\n violations: GovernanceViolation[];\r\n}\r\n\r\n// ============================================================================\r\n// Module Reference (for Target Module select)\r\n// ============================================================================\r\n\r\nexport interface GovernanceModule {\r\n id: string;\r\n key: string;\r\n name: Translatable;\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// State Model\r\n// ============================================================================\r\n\r\nexport enum GovernanceActionKey {\r\n GetRules = 'getRules',\r\n GetRule = 'getRule',\r\n GetRuleTypes = 'getRuleTypes',\r\n AddRule = 'addRule',\r\n UpdateRule = 'updateRule',\r\n DeleteRule = 'deleteRule',\r\n ToggleRuleActive = 'toggleRuleActive',\r\n GetModules = 'getModules',\r\n GetRequestSchemas = 'getRequestSchemas',\r\n GetProperties = 'getProperties',\r\n}\r\n\r\n// ============================================================================\r\n// Request Schema (for requestSchemaId field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceRequestSchema {\r\n id: number;\r\n name: Translatable;\r\n isPublished: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Property (for propertyKey field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceProperty {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n}\r\n\r\nexport interface GovernanceStateModel extends LoadingStateShape<GovernanceActionKey> {\r\n levelId: number | null;\r\n rules: GovernanceRule[];\r\n ruleTypes: GovernanceRuleType[];\r\n selectedRule: GovernanceRule | null;\r\n modules: GovernanceModule[];\r\n requestSchemas: GovernanceRequestSchema[];\r\n properties: GovernanceProperty[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n GovernanceModule,\r\n GovernanceActionKey,\r\n GovernanceStateModel,\r\n GovernanceRequestSchema,\r\n GovernanceProperty,\r\n} from './governance.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\nconst DEFAULTS: GovernanceStateModel = {\r\n levelId: null,\r\n rules: [],\r\n ruleTypes: [],\r\n modules: [],\r\n requestSchemas: [],\r\n properties: [],\r\n selectedRule: null,\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\n@State<GovernanceStateModel>({\r\n name: 'governance',\r\n defaults: DEFAULTS,\r\n})\r\n@Injectable()\r\nexport class GovernanceState extends CrudStateBase<\r\n GovernanceRule,\r\n GovernanceStateModel,\r\n GovernanceActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLevelId(state: GovernanceStateModel): number | null {\r\n return state.levelId;\r\n }\r\n\r\n @Selector()\r\n static getRules(state: GovernanceStateModel): GovernanceRule[] {\r\n return state.rules;\r\n }\r\n\r\n @Selector()\r\n static getRuleTypes(state: GovernanceStateModel): GovernanceRuleType[] {\r\n return state.ruleTypes;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRule(state: GovernanceStateModel): GovernanceRule | null {\r\n return state.selectedRule;\r\n }\r\n\r\n @Selector()\r\n static getModules(state: GovernanceStateModel): GovernanceModule[] {\r\n return state.modules;\r\n }\r\n\r\n @Selector()\r\n static getRequestSchemas(\r\n state: GovernanceStateModel,\r\n ): GovernanceRequestSchema[] {\r\n return state.requestSchemas;\r\n }\r\n\r\n @Selector()\r\n static getProperties(state: GovernanceStateModel): GovernanceProperty[] {\r\n return state.properties;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: GovernanceStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: GovernanceStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // Level Context\r\n // ============================================================================\r\n\r\n @Action(SetLevelId)\r\n setLevelId(ctx: StateContext<GovernanceStateModel>, { levelId }: SetLevelId) {\r\n ctx.patchState({ levelId });\r\n }\r\n\r\n @Action(ResetGovernanceState)\r\n resetState(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.setState(DEFAULTS);\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(GetGovernanceRules)\r\n getRules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule[]>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n rules: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRule)\r\n getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRule,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedRule: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRuleTypes)\r\n getRuleTypes(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n `control-panel/governance/rule-types?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRuleTypes,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n ruleTypes: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGovernanceRule)\r\n addRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { rule }: AddGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.post<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n rule,\r\n );\r\n\r\n return this.create(ctx, {\r\n key: GovernanceActionKey.AddRule,\r\n request$: req$,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(UpdateGovernanceRule)\r\n updateRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id, rule }: UpdateGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.put<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n rule,\r\n );\r\n\r\n return this.update(ctx, {\r\n key: GovernanceActionKey.UpdateRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(DeleteGovernanceRule)\r\n deleteRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: DeleteGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.delete<Response<void>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return this.delete(ctx, {\r\n key: GovernanceActionKey.DeleteRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(ToggleGovernanceRuleActive)\r\n toggleRuleActive(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: ToggleGovernanceRuleActive,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.patch<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}/toggle`,\r\n {},\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.ToggleRuleActive,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedRule = response.data;\r\n if (!updatedRule) return {};\r\n\r\n return {\r\n rules: this.adapter.upsertOne(state.rules, updatedRule, 'id'),\r\n };\r\n },\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Reference Data Actions\r\n // ============================================================================\r\n\r\n @Action(GetModules)\r\n getModules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceModule[]>>(\r\n `Modules?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetModules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n // Only keep active modules for Target Module selection\r\n modules: (response.data ?? []).filter((m) => m.isActive),\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearSelectedRule)\r\n clearSelectedRule(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ selectedRule: null });\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n @Action(GetRequestSchemas)\r\n getRequestSchemas(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetRequestSchemas,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n // Level scope: ProcessBuilder/level/{levelId}/{moduleType}/{moduleId}/requestSchema\r\n // Module scope: ProcessBuilder/level/{levelId}/module/{targetModuleId}/{moduleType}/{moduleId}/requestSchema\r\n let basePath = `ProcessBuilder/level/${levelId}`;\r\n\r\n // For Module scope, we need to find the module by key to get its ID\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath += `/module/${targetModule.id}`;\r\n }\r\n }\r\n\r\n // Get request schemas (assuming a common endpoint pattern)\r\n const req$ = this.http.get<Response<GovernanceRequestSchema[]>>(\r\n `${basePath}/requestSchema`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRequestSchemas,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n requestSchemas: (response.data ?? []).filter((s) => s.isPublished),\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetProperties)\r\n getProperties(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetProperties,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n let basePath = `Properties?LevelId=${levelId}`;\r\n\r\n // For Module scope, add module filter\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath = `Properties?LevelId=${levelId}&ModuleId=${targetModule.id}`;\r\n }\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceProperty[]>>(basePath);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetProperties,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n properties: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearRequestSchemas)\r\n clearRequestSchemas(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ requestSchemas: [] });\r\n }\r\n\r\n @Action(ClearProperties)\r\n clearProperties(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ properties: [] });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceActionKey,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\nimport { GovernanceState } from './governance.state';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GovernanceFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly levelId = select(GovernanceState.getLevelId);\r\n readonly rules = select(GovernanceState.getRules);\r\n readonly ruleTypes = select(GovernanceState.getRuleTypes);\r\n readonly selectedRule = select(GovernanceState.getSelectedRule);\r\n readonly modules = select(GovernanceState.getModules);\r\n readonly requestSchemas = select(GovernanceState.getRequestSchemas);\r\n readonly properties = select(GovernanceState.getProperties);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(GovernanceState.getLoadingActive);\r\n private readonly errors = select(GovernanceState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRules),\r\n );\r\n readonly isLoadingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRule),\r\n );\r\n readonly isLoadingRuleTypes = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRuleTypes),\r\n );\r\n readonly isAddingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.AddRule),\r\n );\r\n readonly isUpdatingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.UpdateRule),\r\n );\r\n readonly isDeletingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.DeleteRule),\r\n );\r\n readonly isTogglingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.ToggleRuleActive),\r\n );\r\n readonly isLoadingModules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetModules),\r\n );\r\n readonly isLoadingRequestSchemas = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRequestSchemas),\r\n );\r\n readonly isLoadingProperties = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetProperties),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRules] ?? null,\r\n );\r\n readonly ruleError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRule] ?? null,\r\n );\r\n readonly ruleTypesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRuleTypes] ?? null,\r\n );\r\n readonly addRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.AddRule] ?? null,\r\n );\r\n readonly updateRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.UpdateRule] ?? null,\r\n );\r\n readonly deleteRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.DeleteRule] ?? null,\r\n );\r\n readonly modulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetModules] ?? null,\r\n );\r\n readonly requestSchemasError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRequestSchemas] ?? null,\r\n );\r\n readonly propertiesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetProperties] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly activeRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === true),\r\n );\r\n\r\n readonly inactiveRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === false),\r\n );\r\n\r\n readonly rulesCount = computed(() => this.rules().length);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n setLevelId(levelId: number) {\r\n return this.store.dispatch(new SetLevelId(levelId));\r\n }\r\n\r\n getRules() {\r\n return this.store.dispatch(new GetGovernanceRules());\r\n }\r\n\r\n getRule(id: number) {\r\n return this.store.dispatch(new GetGovernanceRule(id));\r\n }\r\n\r\n getRuleTypes() {\r\n return this.store.dispatch(new GetGovernanceRuleTypes());\r\n }\r\n\r\n getModules() {\r\n return this.store.dispatch(new GetModules());\r\n }\r\n\r\n addRule(rule: CreateGovernanceRuleDto) {\r\n return this.store.dispatch(new AddGovernanceRule(rule));\r\n }\r\n\r\n updateRule(id: number, rule: UpdateGovernanceRuleDto) {\r\n return this.store.dispatch(new UpdateGovernanceRule(id, rule));\r\n }\r\n\r\n deleteRule(id: number) {\r\n return this.store.dispatch(new DeleteGovernanceRule(id));\r\n }\r\n\r\n toggleRuleActive(id: number) {\r\n return this.store.dispatch(new ToggleGovernanceRuleActive(id));\r\n }\r\n\r\n clearSelectedRule() {\r\n return this.store.dispatch(new ClearSelectedRule());\r\n }\r\n\r\n resetState() {\r\n return this.store.dispatch(new ResetGovernanceState());\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n getRequestSchemas(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(\r\n new GetRequestSchemas(targetScope, targetModuleKey),\r\n );\r\n }\r\n\r\n getProperties(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(new GetProperties(targetScope, targetModuleKey));\r\n }\r\n\r\n clearRequestSchemas() {\r\n return this.store.dispatch(new ClearRequestSchemas());\r\n }\r\n\r\n clearProperties() {\r\n return this.store.dispatch(new ClearProperties());\r\n }\r\n}\r\n","import {\r\n Component,\r\n inject,\r\n OnInit,\r\n effect,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { DialogService, ModalRef } from '@masterteam/components/dialog';\r\nimport {\r\n DynamicFormConfig,\r\n TextFieldConfig,\r\n TextareaFieldConfig,\r\n NumberFieldConfig,\r\n SelectFieldConfig,\r\n MultiSelectFieldConfig,\r\n ToggleFieldConfig,\r\n DateFieldConfig,\r\n ValidatorConfig,\r\n BaseFieldConfig,\r\n} from '@masterteam/components';\r\nimport {\r\n GovernanceRule,\r\n GovernanceFacade,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n GovernanceRuleType,\r\n ConfigurationFieldSchema,\r\n ConfigurationFieldOption,\r\n} from '../../../store/governance';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\n\r\n@Component({\r\n selector: 'mt-governance-rule-form',\r\n templateUrl: './governance-rule-form.html',\r\n styleUrls: ['./governance-rule-form.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n TranslocoDirective,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n TranslocoPipe,\r\n ],\r\n providers: [DialogService],\r\n})\r\nexport default class GovernanceRuleForm implements OnInit {\r\n // ============================================================================\r\n // Injected Services\r\n // ============================================================================\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly facade = inject(GovernanceFacade);\r\n\r\n // ============================================================================\r\n // Input - rule to edit (null for create)\r\n // ============================================================================\r\n ruleForEdit = input<GovernanceRule | null>(null);\r\n\r\n // ============================================================================\r\n // Facade Data\r\n // ============================================================================\r\n selectedRule = this.facade.selectedRule;\r\n ruleTypes = this.facade.ruleTypes;\r\n isLoadingRule = this.facade.isLoadingRule;\r\n isAddingRule = this.facade.isAddingRule;\r\n isUpdatingRule = this.facade.isUpdatingRule;\r\n\r\n // For optionsSource: 'auto-populated' (modules from API)\r\n modules = this.facade.modules;\r\n\r\n // For optionsSource: 'requestSchema' and 'properties'\r\n requestSchemas = this.facade.requestSchemas;\r\n properties = this.facade.properties;\r\n isLoadingRequestSchemas = this.facade.isLoadingRequestSchemas;\r\n isLoadingProperties = this.facade.isLoadingProperties;\r\n\r\n // ============================================================================\r\n // Form Control\r\n // ============================================================================\r\n ruleFormControl = new FormControl();\r\n formValue = toSignal(this.ruleFormControl.valueChanges);\r\n\r\n // ============================================================================\r\n // Selected Rule Type (from form value)\r\n // ============================================================================\r\n selectedRuleType = computed(() => {\r\n const formValue = this.formValue();\r\n const ruleTypeKey = formValue?.ruleType;\r\n if (!ruleTypeKey) return null;\r\n return this.ruleTypes().find((rt) => rt.type === ruleTypeKey) ?? null;\r\n });\r\n\r\n // ============================================================================\r\n // Target Scope and Module Key (from form value)\r\n // ============================================================================\r\n targetScope = computed(() => this.formValue()?.targetScope ?? 'Level');\r\n targetModuleKey = computed(() => this.formValue()?.targetModuleKey ?? null);\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'requestSchema'\r\n // ============================================================================\r\n requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.requestSchemas().map((schema) => ({\r\n label: schema.name[lang] || schema.name.en,\r\n value: schema.id.toString(),\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'properties'\r\n // ============================================================================\r\n propertyOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.properties().map((prop) => ({\r\n label: prop.name[lang] || prop.name.en,\r\n value: prop.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Module Options for optionsSource: 'auto-populated' (moduleKey, requiredModuleKey)\r\n // ============================================================================\r\n moduleOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.modules().map((mod) => ({\r\n label: mod.name[lang] || mod.name.en,\r\n value: mod.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Scope Options based on selected rule type\r\n // ============================================================================\r\n scopeOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'Level', value: 'Level' },\r\n { label: 'Module', value: 'Module' },\r\n { label: 'PhaseGate', value: 'PhaseGate' },\r\n ];\r\n }\r\n return ruleType.supportedScopes.map((scope) => ({\r\n label: scope,\r\n value: scope,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Operation Options based on selected rule type\r\n // ============================================================================\r\n operationOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'All', value: '' },\r\n { label: 'Create', value: 'Create' },\r\n { label: 'Update', value: 'Update' },\r\n { label: 'Delete', value: 'Delete' },\r\n ];\r\n }\r\n return [\r\n { label: 'All', value: '' },\r\n ...ruleType.supportedOperations.map((op) => ({\r\n label: op,\r\n value: op,\r\n })),\r\n ];\r\n });\r\n\r\n // ============================================================================\r\n // Rule Type Options\r\n // ============================================================================\r\n ruleTypeOptions = computed(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.ruleTypes().map((rt) => ({\r\n label: rt.name[lang] || rt.name.en,\r\n value: rt.type,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Dynamic Form Configuration\r\n // ============================================================================\r\n formConfig = computed<DynamicFormConfig>(() => {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n const ruleType = this.selectedRuleType();\r\n const isEdit = !!this.ruleForEdit()?.id;\r\n\r\n return {\r\n sections: [\r\n // Section 1: Basic Information\r\n {\r\n key: 'basicInfo',\r\n type: 'header',\r\n label: t('basic-information'),\r\n order: 1,\r\n fields: [\r\n new TextFieldConfig({\r\n key: 'key',\r\n label: t('rule-key'),\r\n placeholder: 'e.g., charter-required',\r\n validators: [\r\n ValidatorConfig.required(),\r\n ValidatorConfig.pattern(\r\n '^[a-z0-9-]+$',\r\n 'Only lowercase letters, numbers and hyphens allowed',\r\n ),\r\n ],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new NumberFieldConfig({\r\n key: 'priority',\r\n label: t('priority'),\r\n placeholder: '10',\r\n validators: [ValidatorConfig.required()],\r\n min: 0,\r\n max: 1000,\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_en',\r\n label: t('name-en'),\r\n placeholder: t('name-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 3,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_ar',\r\n label: t('name-ar'),\r\n placeholder: t('name-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_en',\r\n label: t('description-en'),\r\n placeholder: t('description-en-placeholder'),\r\n order: 5,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_ar',\r\n label: t('description-ar'),\r\n placeholder: t('description-ar-placeholder'),\r\n order: 6,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_en',\r\n label: t('error-message-en'),\r\n placeholder: t('error-message-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 7,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_ar',\r\n label: t('error-message-ar'),\r\n placeholder: t('error-message-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 8,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 2: Rule Target\r\n {\r\n key: 'ruleTarget',\r\n type: 'header',\r\n label: t('rule-target'),\r\n order: 2,\r\n fields: [\r\n new SelectFieldConfig({\r\n key: 'ruleType',\r\n label: t('rule-type'),\r\n options: this.ruleTypeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetScope',\r\n label: t('target-scope'),\r\n options: this.scopeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetModuleKey',\r\n label: t('target-module'),\r\n options: this.moduleOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 3,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'targetScope',\r\n value: 'Module',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetOperationKey',\r\n label: t('target-operation'),\r\n options: this.operationOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 3: Rule-Specific Configuration (dynamic)\r\n ...(ruleType ? [this.buildConfigurationSection(ruleType)] : []),\r\n // Section 4: Execution Settings\r\n {\r\n key: 'executionSettings',\r\n type: 'header',\r\n label: t('execution-settings'),\r\n order: 4,\r\n fields: [\r\n new ToggleFieldConfig({\r\n key: 'stopOnFailure',\r\n label: t('stop-on-failure'),\r\n order: 1,\r\n colSpan: 6,\r\n }),\r\n new ToggleFieldConfig({\r\n key: 'isActive',\r\n label: t('active-rule'),\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n });\r\n\r\n // ============================================================================\r\n // Constructor with Effect for Form Population\r\n // ============================================================================\r\n constructor() {\r\n // Effect to populate form when editing existing rule\r\n effect(() => {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (this.selectedRule() && ruleId) {\r\n const rule = this.selectedRule();\r\n if (!rule) return;\r\n\r\n // Unpack rule data to form format\r\n const formData = this.unpackRuleToForm(rule);\r\n this.ruleFormControl.patchValue(formData);\r\n } else {\r\n // Default values for new rule\r\n this.ruleFormControl.reset({\r\n priority: 10,\r\n stopOnFailure: true,\r\n isActive: true,\r\n targetScope: 'Module',\r\n });\r\n }\r\n });\r\n\r\n // Effect to apply default values when rule type changes (for new rules only)\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n // Only apply defaults for new rules (not editing)\r\n if (ruleType && !ruleId) {\r\n const defaults = this.getDefaultsFromSchema(ruleType);\r\n if (Object.keys(defaults).length > 0) {\r\n const currentValue = this.ruleFormControl.value ?? {};\r\n this.ruleFormControl.patchValue({ ...currentValue, ...defaults });\r\n }\r\n }\r\n });\r\n\r\n // Effect to fetch requestSchemas and properties when scope/module changes\r\n // This runs when configurationSchema has fields with optionsSource = 'requestSchema' or 'properties'\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const scope = this.targetScope();\r\n const moduleKey = this.targetModuleKey();\r\n\r\n if (!ruleType) return;\r\n\r\n // Check if any field needs requestSchema options\r\n const needsRequestSchemas = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'requestSchema',\r\n );\r\n\r\n // Check if any field needs properties options\r\n const needsProperties = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'properties',\r\n );\r\n // For Module scope, we need a target module key\r\n if (scope === 'Module' && !moduleKey) {\r\n // Clear options when module is not selected\r\n if (needsRequestSchemas) {\r\n this.facade.clearRequestSchemas();\r\n }\r\n if (needsProperties) {\r\n this.facade.clearProperties();\r\n }\r\n return;\r\n }\r\n\r\n // Fetch options based on scope\r\n if (needsRequestSchemas) {\r\n this.facade.getRequestSchemas(scope, moduleKey ?? undefined);\r\n }\r\n\r\n if (needsProperties) {\r\n this.facade.getProperties(scope, moduleKey ?? undefined);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Extract default values from rule type's configuration schema\r\n */\r\n private getDefaultsFromSchema(\r\n ruleType: GovernanceRuleType,\r\n ): Record<string, any> {\r\n const defaults: Record<string, any> = {};\r\n for (const field of ruleType.configurationSchema) {\r\n if (field.defaultValue !== undefined) {\r\n defaults[`config_${field.key}`] = field.defaultValue;\r\n }\r\n }\r\n return defaults;\r\n }\r\n\r\n ngOnInit(): void {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (ruleId) {\r\n this.facade.getRule(ruleId);\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Submit Handler\r\n // ============================================================================\r\n onSubmit() {\r\n if (!this.ruleFormControl.valid) {\r\n return;\r\n }\r\n\r\n const formValue = this.ruleFormControl.value;\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n if (ruleId) {\r\n // Update\r\n const payload = this.packFormToUpdateDto(formValue);\r\n this.facade.updateRule(ruleId, payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n // Create\r\n const payload = this.packFormToCreateDto(formValue);\r\n this.facade.addRule(payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Build Configuration Section Based on Rule Type\r\n // ============================================================================\r\n private buildConfigurationSection(ruleType: GovernanceRuleType) {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n\r\n return {\r\n key: 'configuration',\r\n type: 'header' as const,\r\n label: t('rule-configuration'),\r\n order: 3,\r\n fields: this.buildConfigFieldsForType(ruleType),\r\n };\r\n }\r\n\r\n private buildConfigFieldsForType(\r\n ruleType: GovernanceRuleType,\r\n ): BaseFieldConfig[] {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n\r\n // Build fields dynamically from configurationSchema array\r\n return ruleType.configurationSchema.map((field, index) =>\r\n this.schemaFieldToFormField(field, index + 1, lang),\r\n );\r\n }\r\n\r\n /**\r\n * Convert a ConfigurationFieldSchema to DynamicForm BaseFieldConfig\r\n */\r\n private schemaFieldToFormField(\r\n field: ConfigurationFieldSchema,\r\n order: number,\r\n lang: 'en' | 'ar',\r\n ): BaseFieldConfig {\r\n const label = field.label[lang] || field.label.en;\r\n const colSpan = field.colSpan ?? 6;\r\n const validators = field.required ? [ValidatorConfig.required()] : [];\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'textarea':\r\n return new TextareaFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'number':\r\n return new NumberFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n min: field.min,\r\n max: field.max,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'select':\r\n return new SelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'multi-select':\r\n return new MultiSelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'checkbox':\r\n return new ToggleFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'date':\r\n return new DateFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n default:\r\n // Fallback to text field for unknown types\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get options for a field based on its optionsSource\r\n * - 'static' or 'auto-populated': Use options from schema (already in API response)\r\n * - 'requestSchema': Use fetched request schemas from state\r\n * - 'properties': Use fetched properties from state\r\n */\r\n private getOptionsForField(\r\n field: ConfigurationFieldSchema,\r\n ): ConfigurationFieldOption[] {\r\n switch (field.optionsSource) {\r\n case 'requestSchema':\r\n return this.requestSchemaOptions();\r\n\r\n case 'properties':\r\n return this.propertyOptions();\r\n\r\n case 'auto-populated':\r\n case 'static':\r\n default:\r\n // Use options directly from schema\r\n return field.options ?? [];\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Data Transformation Helpers\r\n // ============================================================================\r\n private unpackRuleToForm(rule: GovernanceRule): Record<string, any> {\r\n const formData: Record<string, any> = {\r\n key: rule.key,\r\n priority: rule.priority,\r\n name_en: rule.name?.en ?? '',\r\n name_ar: rule.name?.ar ?? '',\r\n description_en: rule.description?.en ?? '',\r\n description_ar: rule.description?.ar ?? '',\r\n errorMessage_en: rule.errorMessage?.en ?? '',\r\n errorMessage_ar: rule.errorMessage?.ar ?? '',\r\n ruleType: rule.ruleTypeKey,\r\n targetScope: rule.targetScope,\r\n targetModuleKey: rule.targetModuleKey ?? '',\r\n targetOperationKey: rule.targetOperationKey ?? '',\r\n stopOnFailure: rule.stopOnFailure,\r\n isActive: rule.isActive,\r\n };\r\n\r\n // Unpack configuration fields with config_ prefix\r\n if (rule.configuration) {\r\n Object.entries(rule.configuration).forEach(([key, value]) => {\r\n formData[`config_${key}`] = value;\r\n });\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n private packFormToCreateDto(\r\n formValue: Record<string, any>,\r\n ): CreateGovernanceRuleDto {\r\n return {\r\n key: formValue['key'],\r\n name: {\r\n en: formValue['name_en'],\r\n ar: formValue['name_ar'],\r\n },\r\n description:\r\n formValue['description_en'] || formValue['description_ar']\r\n ? {\r\n en: formValue['description_en'] ?? '',\r\n ar: formValue['description_ar'] ?? '',\r\n }\r\n : undefined,\r\n errorMessage: {\r\n en: formValue['errorMessage_en'],\r\n ar: formValue['errorMessage_ar'],\r\n },\r\n ruleType: formValue['ruleType'],\r\n targetScope: formValue['targetScope'],\r\n targetModuleKey: formValue['targetModuleKey'] || undefined,\r\n targetOperationKey: formValue['targetOperationKey'] || undefined,\r\n configuration: this.extractConfiguration(formValue),\r\n priority: formValue['priority'],\r\n stopOnFailure: formValue['stopOnFailure'] ?? true,\r\n };\r\n }\r\n\r\n private packFormToUpdateDto(\r\n formValue: Record<string, any>,\r\n ): UpdateGovernanceRuleDto {\r\n return {\r\n ...this.packFormToCreateDto(formValue),\r\n isActive: formValue['isActive'] ?? true,\r\n };\r\n }\r\n\r\n private extractConfiguration(\r\n formValue: Record<string, any>,\r\n ): Record<string, any> {\r\n const config: Record<string, any> = {};\r\n Object.entries(formValue).forEach(([key, value]) => {\r\n if (\r\n key.startsWith('config_') &&\r\n value !== null &&\r\n value !== undefined &&\r\n value !== ''\r\n ) {\r\n const configKey = key.replace('config_', '');\r\n config[configKey] = value;\r\n }\r\n });\r\n return Object.keys(config).length > 0 ? config : (undefined as any);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\"\r\n >\r\n @if (isLoadingRule()) {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"6rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"formConfig()\"\r\n [formControl]=\"ruleFormControl\"\r\n />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'cancel' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n (click)=\"ref.close()\"\r\n />\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"!ruleFormControl.valid\"\r\n (click)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport {\r\n CellChangeEvent,\r\n ColumnDef,\r\n Table,\r\n TableAction,\r\n} from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { GovernanceFacade } from '../../../store/governance';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport GovernanceRuleForm from '../governance-rule-form/governance-rule-form';\r\nimport { finalize } from 'rxjs';\r\nimport { Breadcrumb } from '@masterteam/components/breadcrumb';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { Chip } from '@masterteam/components/chip';\r\nimport { GovernanceRule } from '../../../store/governance';\r\n\r\n@Component({\r\n selector: 'mt-governance-rules-list',\r\n styleUrl: './governance-rules-list.css',\r\n templateUrl: './governance-rules-list.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SkeletonModule,\r\n Table,\r\n TranslocoDirective,\r\n Breadcrumb,\r\n Icon,\r\n Chip,\r\n ],\r\n})\r\nexport default class GovernanceRulesList implements OnDestroy {\r\n // ============================================================================\r\n // Template References for Custom Columns\r\n // ============================================================================\r\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\r\n scopeCol = viewChild.required<TemplateRef<any>>('scopeCol');\r\n priorityCol = viewChild.required<TemplateRef<any>>('priorityCol');\r\n\r\n // ============================================================================\r\n // Services\r\n // ============================================================================\r\n private readonly facade = inject(GovernanceFacade);\r\n readonly modal: ModalService = inject(ModalService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n // ============================================================================\r\n // Breadcrumb\r\n // ============================================================================\r\n breadcrumbItems = linkedSignal(() => [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.control-panel'),\r\n routerLink: '/control-panel',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.governance-rules'),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Data Computed from Facade\r\n // ============================================================================\r\n rules = computed(() => {\r\n const tab = this.activeTab();\r\n const all = this.allRules();\r\n const activeRules = this.activeRules();\r\n const inactiveRules = this.inactiveRules();\r\n\r\n switch (tab) {\r\n case 'active':\r\n return activeRules;\r\n case 'inactive':\r\n return inactiveRules;\r\n case 'all':\r\n default:\r\n return all;\r\n }\r\n });\r\n\r\n // ============================================================================\r\n // Tabs\r\n // ============================================================================\r\n tabs = signal([\r\n {\r\n label: this.translocoService.translate('governance.all'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: 'active',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: 'inactive',\r\n },\r\n ]);\r\n activeTab = signal<string>('all');\r\n\r\n // ============================================================================\r\n // Table Actions\r\n // ============================================================================\r\n tableActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.plus',\r\n label: this.translocoService.translate('governance.add-rule'),\r\n color: 'primary',\r\n action: () => {\r\n this.openRuleDialog();\r\n },\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.translocoService.translate('edit'),\r\n color: 'primary',\r\n action: (row: GovernanceRule) => {\r\n this.facade.clearSelectedRule();\r\n this.openRuleDialog(row);\r\n },\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: GovernanceRule) => {\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .deleteRule(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: GovernanceRule) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Table Columns\r\n // ============================================================================\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'priority',\r\n label: this.translocoService.translate('governance.priority'),\r\n type: 'custom',\r\n customCellTpl: this.priorityCol(),\r\n sortable: true,\r\n },\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate('governance.name'),\r\n type: 'text',\r\n sortable: true,\r\n },\r\n {\r\n key: 'ruleTypeKey',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n type: 'custom',\r\n customCellTpl: this.typeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n options: this.getRuleTypeOptions(),\r\n },\r\n },\r\n {\r\n key: 'targetScope',\r\n label: this.translocoService.translate('governance.scope'),\r\n type: 'custom',\r\n customCellTpl: this.scopeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.scope'),\r\n options: [\r\n { label: 'Level', value: 'Level' },\r\n { label: 'Module', value: 'Module' },\r\n { label: 'PhaseGate', value: 'PhaseGate' },\r\n ],\r\n },\r\n },\r\n {\r\n key: 'targetModuleKey',\r\n label: this.translocoService.translate('governance.target-module'),\r\n type: 'text',\r\n },\r\n {\r\n key: 'isActive',\r\n label: this.translocoService.translate('governance.status'),\r\n type: 'boolean',\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.status'),\r\n options: [\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: true,\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: false,\r\n },\r\n ],\r\n },\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Private\r\n // ============================================================================\r\n loading = this.facade.isLoadingRules;\r\n private allRules = this.facade.rules;\r\n private activeRules = this.facade.activeRules;\r\n private inactiveRules = this.facade.inactiveRules;\r\n\r\n ngOnDestroy(): void {\r\n this.facade.resetState();\r\n }\r\n\r\n openRuleDialog(rule: GovernanceRule | null = null) {\r\n const modalType: 'drawer' | 'dialog' = rule ? 'drawer' : 'drawer';\r\n this.modal.openModal(GovernanceRuleForm, modalType, {\r\n header: rule\r\n ? this.translocoService.translate('governance.edit-rule')\r\n : this.translocoService.translate('governance.add-rule'),\r\n styleClass: '!w-[50rem] !absolute ',\r\n position: modalType === 'drawer' ? 'end' : '',\r\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n inputValues: {\r\n ruleForEdit: rule,\r\n },\r\n });\r\n }\r\n\r\n onCellChange(event: CellChangeEvent) {\r\n if (event.column === 'isActive' && event.type === 'boolean') {\r\n this.facade.toggleRuleActive(event.row.id);\r\n }\r\n }\r\n\r\n private getRuleTypeOptions() {\r\n return [\r\n { label: 'Module Exists', value: 'ModuleExists' },\r\n { label: 'Module Does Not Exist', value: 'ModuleDoesNotExist' },\r\n { label: 'Module Max Count', value: 'ModuleMaxCount' },\r\n { label: 'Module Min Count', value: 'ModuleMinCount' },\r\n { label: 'Field Required', value: 'FieldRequired' },\r\n { label: 'Field Value', value: 'FieldValue' },\r\n { label: 'Phase Gate Module Required', value: 'PhaseGateModuleRequired' },\r\n { label: 'No Active Request', value: 'NoActiveRequest' },\r\n ];\r\n }\r\n\r\n getRuleTypeChipClass(ruleTypeKey: string): string {\r\n const classes: Record<string, string> = {\r\n ModuleExists: 'bg-blue-100 text-blue-700',\r\n ModuleDoesNotExist: 'bg-red-100 text-red-700',\r\n ModuleMaxCount: 'bg-amber-100 text-amber-700',\r\n ModuleMinCount: 'bg-orange-100 text-orange-700',\r\n FieldRequired: 'bg-purple-100 text-purple-700',\r\n FieldValue: 'bg-indigo-100 text-indigo-700',\r\n PhaseGateModuleRequired: 'bg-green-100 text-green-700',\r\n NoActiveRequest: 'bg-rose-100 text-rose-700',\r\n };\r\n return classes[ruleTypeKey] ?? 'bg-slate-100 text-slate-700';\r\n }\r\n\r\n getScopeIcon(scope: string): string {\r\n const icons: Record<string, string> = {\r\n Level: 'general.layers-three-01',\r\n Module: 'general.cube-01',\r\n PhaseGate: 'general.flag-01',\r\n };\r\n return icons[scope] ?? 'general.file-02';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <!-- Rule Type Column Template -->\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"row.ruleTypeKey\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Scope Column Template -->\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-lg\"\r\n [icon]=\"getScopeIcon(row.targetScope)\"\r\n ></mt-icon>\r\n <span>{{ row.targetScope }}</span>\r\n @if (row.targetModuleKey) {\r\n <span class=\"text-slate-500\">→ {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Priority Column Template -->\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Table -->\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.models.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.mapper.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.config.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.summary.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.utils.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 {\n ConfigurationFieldSchema,\n GovernanceRule,\n Translatable,\n GovernanceRuleType,\n} from '../../../../store/governance';\n\nexport type GovernanceRuleAppliesTo =\n | 'level'\n | 'any-module'\n | 'specific-module'\n | 'phase-gate';\n\nexport type GovernanceRuleActionKey = 'create' | 'update' | 'delete';\n\nexport type GovernanceRuleRecipeKey =\n | 'require-module'\n | 'prevent-module'\n | 'module-max-count'\n | 'module-min-count'\n | 'phase-gate-completed'\n | 'phase-gate-module-required'\n | 'no-active-request'\n | 'property-value';\n\nexport interface GovernanceRuleWizardFormValue {\n key: string;\n name: Translatable;\n description: Translatable;\n errorMessage: Translatable;\n appliesTo: GovernanceRuleAppliesTo;\n selectedModuleKey: string | null;\n actionKey: GovernanceRuleActionKey | null;\n recipeKey: GovernanceRuleRecipeKey | null;\n requiredModuleKey: string | null;\n blockedModuleKey: string | null;\n countedModuleKey: string | null;\n countValue: number | null;\n phaseGateSchemaId: string | null;\n requestSchemaId: string | null;\n blockingStatuses: string[];\n propertyKey: string | null;\n operator: string | null;\n expectedValue: string;\n priority: number | null;\n stopOnFailure: boolean;\n isActive: boolean;\n}\n\nexport interface GovernanceLegacyFormValue {\n key: string;\n priority: number | null;\n name: Translatable;\n description: Translatable;\n errorMessage: Translatable;\n ruleType: string;\n targetScope: string;\n targetModuleKey: string;\n targetOperationKey: string;\n stopOnFailure: boolean;\n isActive: boolean;\n [key: string]: unknown;\n}\n\nexport interface GovernanceRuleRecipeDefinition {\n key: GovernanceRuleRecipeKey;\n ruleTypeKeys: readonly string[];\n labelKey: string;\n}\n\nexport interface GovernanceTranslatedOption<TValue extends string = string> {\n value: TValue;\n labelKey: string;\n}\n\nexport const GOVERNANCE_RULE_RECIPE_DEFINITIONS: readonly GovernanceRuleRecipeDefinition[] =\n [\n {\n key: 'require-module',\n ruleTypeKeys: ['ModuleExists'],\n labelKey: 'wizard.recipes.require-module.label',\n },\n {\n key: 'prevent-module',\n ruleTypeKeys: ['ModuleNotExists', 'ModuleDoesNotExist'],\n labelKey: 'wizard.recipes.prevent-module.label',\n },\n {\n key: 'module-max-count',\n ruleTypeKeys: ['ModuleMaxCount'],\n labelKey: 'wizard.recipes.module-max-count.label',\n },\n {\n key: 'module-min-count',\n ruleTypeKeys: ['ModuleMinCount'],\n labelKey: 'wizard.recipes.module-min-count.label',\n },\n {\n key: 'phase-gate-completed',\n ruleTypeKeys: ['PhaseGateCompleted'],\n labelKey: 'wizard.recipes.phase-gate-completed.label',\n },\n {\n key: 'phase-gate-module-required',\n ruleTypeKeys: ['PhaseGateModuleRequired'],\n labelKey: 'wizard.recipes.phase-gate-module-required.label',\n },\n {\n key: 'no-active-request',\n ruleTypeKeys: ['NoActiveRequest'],\n labelKey: 'wizard.recipes.no-active-request.label',\n },\n {\n key: 'property-value',\n ruleTypeKeys: ['PropertyValueEquals', 'FieldValue'],\n labelKey: 'wizard.recipes.property-value.label',\n },\n ];\n\nexport const GOVERNANCE_APPLIES_TO_OPTIONS: GovernanceTranslatedOption<GovernanceRuleAppliesTo>[] =\n [\n {\n value: 'level',\n labelKey: 'wizard.applies-to.level.label',\n },\n {\n value: 'any-module',\n labelKey: 'wizard.applies-to.any-module.label',\n },\n {\n value: 'specific-module',\n labelKey: 'wizard.applies-to.specific-module.label',\n },\n {\n value: 'phase-gate',\n labelKey: 'wizard.applies-to.phase-gate.label',\n },\n ];\n\nexport const GOVERNANCE_ACTION_OPTIONS: GovernanceTranslatedOption<GovernanceRuleActionKey>[] =\n [\n {\n value: 'create',\n labelKey: 'wizard.actions.create',\n },\n {\n value: 'update',\n labelKey: 'wizard.actions.update',\n },\n {\n value: 'delete',\n labelKey: 'wizard.actions.delete',\n },\n ];\n\nexport const GOVERNANCE_OPERATOR_OPTIONS: GovernanceTranslatedOption[] = [\n {\n value: 'Equals',\n labelKey: 'wizard.operators.Equals',\n },\n {\n value: 'NotEquals',\n labelKey: 'wizard.operators.NotEquals',\n },\n {\n value: 'Contains',\n labelKey: 'wizard.operators.Contains',\n },\n {\n value: 'GreaterThan',\n labelKey: 'wizard.operators.GreaterThan',\n },\n {\n value: 'LessThan',\n labelKey: 'wizard.operators.LessThan',\n },\n];\n\nexport const GOVERNANCE_PROPERTY_OPERATORS = [\n 'Equals',\n 'NotEquals',\n 'Contains',\n 'GreaterThan',\n 'LessThan',\n] as const;\n\nexport const DEFAULT_BLOCKING_STATUSES = [\n 'Pending',\n 'Draft',\n 'InProgress',\n] as const;\n\nexport const DEFAULT_GOVERNANCE_RULE_FORM_VALUE: GovernanceRuleWizardFormValue =\n {\n key: '',\n name: { en: '', ar: '' },\n description: { en: '', ar: '' },\n errorMessage: { en: '', ar: '' },\n appliesTo: 'any-module',\n selectedModuleKey: null,\n actionKey: null,\n recipeKey: null,\n requiredModuleKey: null,\n blockedModuleKey: null,\n countedModuleKey: null,\n countValue: 1,\n phaseGateSchemaId: null,\n requestSchemaId: null,\n blockingStatuses: [],\n propertyKey: null,\n operator: 'Equals',\n expectedValue: '',\n priority: 10,\n stopOnFailure: true,\n isActive: true,\n };\n\nexport function readGovernanceRuleTypeKey(\n ruleType: GovernanceRuleType,\n): string {\n return String(ruleType.key ?? ruleType.type ?? '').trim();\n}\n\nexport function readGovernanceRuleKey(rule: GovernanceRule): string {\n return String(rule.ruleTypeKey ?? '').trim();\n}\n\nexport function resolveRecipeDefinition(\n recipeKey: GovernanceRuleRecipeKey | null,\n): GovernanceRuleRecipeDefinition | null {\n return (\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find(\n (definition) => definition.key === recipeKey,\n ) ?? null\n );\n}\n\nexport function resolveRecipeByRuleTypeKey(\n ruleTypeKey: string | null | undefined,\n): GovernanceRuleRecipeKey | null {\n const normalized = String(ruleTypeKey ?? '').trim();\n if (!normalized) {\n return null;\n }\n\n return (\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find((definition) =>\n definition.ruleTypeKeys.some((key) => key === normalized),\n )?.key ?? null\n );\n}\n\nexport function findRuleTypeByRecipe(\n ruleTypes: GovernanceRuleType[],\n recipeKey: GovernanceRuleRecipeKey | null,\n): GovernanceRuleType | null {\n const definition = resolveRecipeDefinition(recipeKey);\n if (!definition) {\n return null;\n }\n\n return (\n ruleTypes.find((ruleType) =>\n definition.ruleTypeKeys.includes(readGovernanceRuleTypeKey(ruleType)),\n ) ?? null\n );\n}\n\nexport function findConfigurationSchemaField(\n ruleType: GovernanceRuleType | null,\n fieldKey: string,\n): ConfigurationFieldSchema | null {\n if (!ruleType) {\n return null;\n }\n\n return (\n ruleType.configurationSchema.find((field) => field.key === fieldKey) ?? null\n );\n}\n","import {\n CreateGovernanceRuleDto,\n GovernanceRule,\n GovernanceRuleType,\n UpdateGovernanceRuleDto,\n} from '../../../../store/governance';\nimport {\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n GovernanceLegacyFormValue,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleRecipeKey,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleKey,\n readGovernanceRuleTypeKey,\n resolveRecipeByRuleTypeKey,\n} from './governance-rule-form.models';\n\nexport function mapAppliesToToTargetScope(\n appliesTo: GovernanceRuleAppliesTo,\n): 'Level' | 'Module' | 'PhaseGate' {\n switch (appliesTo) {\n case 'level':\n return 'Level';\n case 'phase-gate':\n return 'PhaseGate';\n case 'any-module':\n case 'specific-module':\n default:\n return 'Module';\n }\n}\n\nexport function mapActionToOperationKey(\n actionKey: GovernanceRuleActionKey,\n): 'Create' | 'Update' | 'Delete' {\n switch (actionKey) {\n case 'update':\n return 'Update';\n case 'delete':\n return 'Delete';\n case 'create':\n default:\n return 'Create';\n }\n}\n\nexport function mapOperationKeyToAction(\n operationKey: string | null | undefined,\n): GovernanceRuleActionKey | null {\n switch (\n String(operationKey ?? '')\n .trim()\n .toLowerCase()\n ) {\n case 'create':\n return 'create';\n case 'update':\n return 'update';\n case 'delete':\n return 'delete';\n default:\n return null;\n }\n}\n\nfunction toNullableString(value: unknown): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n const text = String(value).trim();\n return text ? text : null;\n}\n\nfunction toNullableNumber(value: unknown): number | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n const numeric =\n typeof value === 'number'\n ? value\n : Number(String(value).replace(/[^\\d.-]/g, ''));\n return Number.isFinite(numeric) ? numeric : null;\n}\n\nfunction toStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((item) => toNullableString(item))\n .filter((item): item is string => !!item);\n}\n\nfunction trimBilingualValue(\n value:\n | GovernanceRuleWizardFormValue['name']\n | GovernanceLegacyFormValue['name'],\n) {\n return {\n en: value.en.trim(),\n ar: value.ar.trim(),\n };\n}\n\nfunction buildRecipeConfiguration(\n formValue: GovernanceRuleWizardFormValue,\n): Record<string, unknown> | undefined {\n switch (formValue.recipeKey) {\n case 'require-module': {\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\n if (!requiredModuleKey) {\n return undefined;\n }\n\n const minCount = toNullableNumber(formValue.countValue);\n return minCount && minCount > 1\n ? { requiredModuleKey, minCount }\n : { requiredModuleKey };\n }\n case 'prevent-module': {\n const moduleKey = toNullableString(formValue.blockedModuleKey);\n return moduleKey ? { moduleKey } : undefined;\n }\n case 'module-max-count': {\n const moduleKey = toNullableString(formValue.countedModuleKey);\n const maxCount = toNullableNumber(formValue.countValue);\n return moduleKey && maxCount !== null\n ? { moduleKey, maxCount }\n : undefined;\n }\n case 'module-min-count': {\n const moduleKey = toNullableString(formValue.countedModuleKey);\n const minCount = toNullableNumber(formValue.countValue);\n return moduleKey && minCount !== null\n ? { moduleKey, minCount }\n : undefined;\n }\n case 'phase-gate-completed': {\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null ? { phaseGateSchemaId } : undefined;\n }\n case 'phase-gate-module-required': {\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\n if (!requiredModuleKey) {\n return undefined;\n }\n\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null\n ? { requiredModuleKey, phaseGateSchemaId }\n : { requiredModuleKey };\n }\n case 'no-active-request': {\n const requestSchemaId = toNullableNumber(formValue.requestSchemaId);\n const blockingStatuses = toStringArray(formValue.blockingStatuses);\n const configuration: Record<string, unknown> = {};\n\n if (requestSchemaId !== null) {\n configuration['requestSchemaId'] = requestSchemaId;\n }\n\n if (blockingStatuses.length > 0) {\n configuration['blockingStatuses'] = blockingStatuses;\n }\n\n return Object.keys(configuration).length > 0 ? configuration : undefined;\n }\n case 'property-value': {\n const propertyKey = toNullableString(formValue.propertyKey);\n const operator = toNullableString(formValue.operator);\n const expectedValue = toNullableString(formValue.expectedValue);\n return propertyKey && operator && expectedValue !== null\n ? { propertyKey, operator, expectedValue }\n : undefined;\n }\n default:\n return undefined;\n }\n}\n\nexport function buildCreatePayload(\n formValue: GovernanceRuleWizardFormValue,\n ruleType: GovernanceRuleType,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n\n return {\n key: formValue.key.trim(),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType: readGovernanceRuleTypeKey(ruleType),\n targetScope: mapAppliesToToTargetScope(formValue.appliesTo),\n targetModuleKey:\n formValue.appliesTo === 'specific-module'\n ? (toNullableString(formValue.selectedModuleKey) ?? undefined)\n : undefined,\n targetOperationKey:\n formValue.actionKey !== null\n ? mapActionToOperationKey(formValue.actionKey)\n : undefined,\n configuration: buildRecipeConfiguration(formValue),\n priority: toNullableNumber(formValue.priority) ?? 10,\n stopOnFailure: formValue.stopOnFailure ?? true,\n };\n}\n\nexport function buildUpdatePayload(\n formValue: GovernanceRuleWizardFormValue,\n ruleType: GovernanceRuleType,\n): UpdateGovernanceRuleDto {\n return {\n ...buildCreatePayload(formValue, ruleType),\n isActive: formValue.isActive ?? true,\n };\n}\n\nexport function mapRuleToWizardFormValue(\n rule: GovernanceRule,\n): GovernanceRuleWizardFormValue | null {\n const recipeKey = resolveRecipeByRuleTypeKey(readGovernanceRuleKey(rule));\n if (!recipeKey) {\n return null;\n }\n\n const appliesTo = resolveAppliesTo(rule, recipeKey);\n const actionKey = mapOperationKeyToAction(rule.targetOperationKey);\n if (!actionKey) {\n return null;\n }\n\n const configuration = rule.configuration ?? {};\n const formValue: GovernanceRuleWizardFormValue = {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n key: rule.key ?? '',\n name: {\n en: rule.name?.en ?? '',\n ar: rule.name?.ar ?? '',\n },\n description: {\n en: rule.description?.en ?? '',\n ar: rule.description?.ar ?? '',\n },\n errorMessage: {\n en: rule.errorMessage?.en ?? '',\n ar: rule.errorMessage?.ar ?? '',\n },\n appliesTo,\n selectedModuleKey:\n appliesTo === 'specific-module'\n ? toNullableString(rule.targetModuleKey)\n : null,\n actionKey,\n recipeKey,\n priority: rule.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\n stopOnFailure: rule.stopOnFailure ?? true,\n isActive: rule.isActive ?? true,\n requiredModuleKey: toNullableString(\n configuration['requiredModuleKey'] ?? configuration['moduleKey'],\n ),\n blockedModuleKey: toNullableString(configuration['moduleKey']),\n countedModuleKey: toNullableString(configuration['moduleKey']),\n countValue:\n toNullableNumber(\n configuration['maxCount'] ??\n configuration['minCount'] ??\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n ) ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n phaseGateSchemaId: toNullableString(configuration['phaseGateSchemaId']),\n requestSchemaId: toNullableString(configuration['requestSchemaId']),\n blockingStatuses: toStringArray(configuration['blockingStatuses']),\n propertyKey: toNullableString(\n configuration['propertyKey'] ?? configuration['fieldKey'],\n ),\n operator:\n toNullableString(configuration['operator']) ??\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\n expectedValue:\n toNullableString(\n configuration['expectedValue'] ?? configuration['value'],\n ) ?? '',\n };\n\n if (recipeKey === 'prevent-module') {\n formValue.blockedModuleKey = toNullableString(configuration['moduleKey']);\n formValue.requiredModuleKey = null;\n }\n\n if (recipeKey === 'phase-gate-completed') {\n formValue.requiredModuleKey = null;\n }\n\n if (recipeKey === 'no-active-request') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n }\n\n if (recipeKey === 'property-value') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n }\n\n return formValue;\n}\n\nfunction resolveAppliesTo(\n rule: GovernanceRule,\n recipeKey: GovernanceRuleRecipeKey,\n): GovernanceRuleAppliesTo {\n const scope = String(rule.targetScope ?? '').trim();\n const targetModuleKey = String(rule.targetModuleKey ?? '').trim();\n\n if (scope === 'Level') {\n return 'level';\n }\n\n if (\n scope === 'PhaseGate' ||\n ((recipeKey === 'phase-gate-completed' ||\n recipeKey === 'phase-gate-module-required') &&\n targetModuleKey.toLowerCase() === 'phasegate')\n ) {\n return 'phase-gate';\n }\n\n return targetModuleKey ? 'specific-module' : 'any-module';\n}\n\nexport function mapRuleToLegacyFormValue(\n rule: GovernanceRule,\n): GovernanceLegacyFormValue {\n const formData: GovernanceLegacyFormValue = {\n key: rule.key,\n priority: rule.priority,\n name: {\n en: rule.name?.en ?? '',\n ar: rule.name?.ar ?? '',\n },\n description: {\n en: rule.description?.en ?? '',\n ar: rule.description?.ar ?? '',\n },\n errorMessage: {\n en: rule.errorMessage?.en ?? '',\n ar: rule.errorMessage?.ar ?? '',\n },\n ruleType: rule.ruleTypeKey,\n targetScope: rule.targetScope,\n targetModuleKey: rule.targetModuleKey ?? '',\n targetOperationKey: rule.targetOperationKey ?? '',\n stopOnFailure: rule.stopOnFailure,\n isActive: rule.isActive,\n };\n\n Object.entries(rule.configuration ?? {}).forEach(([key, value]) => {\n formData[`config_${key}`] = value;\n });\n\n return formData;\n}\n\nexport function packLegacyFormToCreateDto(\n formValue: GovernanceLegacyFormValue,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n\n return {\n key: String(formValue.key ?? '').trim(),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType: String(formValue.ruleType ?? ''),\n targetScope: String(formValue.targetScope ?? ''),\n targetModuleKey: String(formValue.targetModuleKey ?? '') || undefined,\n targetOperationKey: String(formValue.targetOperationKey ?? '') || undefined,\n configuration: extractLegacyConfiguration(formValue),\n priority: Number(formValue.priority ?? 0),\n stopOnFailure: Boolean(formValue.stopOnFailure ?? true),\n };\n}\n\nexport function packLegacyFormToUpdateDto(\n formValue: GovernanceLegacyFormValue,\n): UpdateGovernanceRuleDto {\n return {\n ...packLegacyFormToCreateDto(formValue),\n isActive: Boolean(formValue.isActive ?? true),\n };\n}\n\nfunction extractLegacyConfiguration(\n formValue: GovernanceLegacyFormValue,\n): Record<string, unknown> | undefined {\n const configuration: Record<string, unknown> = {};\n\n Object.entries(formValue).forEach(([key, value]) => {\n if (\n key.startsWith('config_') &&\n value !== null &&\n value !== undefined &&\n value !== ''\n ) {\n configuration[key.replace('config_', '')] = value;\n }\n });\n\n return Object.keys(configuration).length > 0 ? configuration : undefined;\n}\n","import {\n BaseFieldConfig,\n DateFieldConfig,\n DynamicFormConfig,\n MultiSelectFieldConfig,\n NumberFieldConfig,\n RadioCardsFieldConfig,\n SelectFieldConfig,\n TextareaFieldConfig,\n TextFieldConfig,\n ToggleFieldConfig,\n ValidatorConfig,\n} from '@masterteam/components';\nimport {\n ConfigurationFieldOption,\n ConfigurationFieldSchema,\n GovernanceRuleType,\n} from '../../../../store/governance';\nimport { GovernanceRuleRecipeKey } from './governance-rule-form.models';\nimport { GOVERNANCE_OPERATOR_OPTIONS } from './governance-rule-form.models';\n\ntype GovernanceTranslateFn = (\n key: string,\n params?: Record<string, string | number | null | undefined>,\n) => string;\n\nexport interface GovernanceWizardFormConfigContext {\n translate: GovernanceTranslateFn;\n isEdit: boolean;\n recipeKey: GovernanceRuleRecipeKey | null;\n appliesToOptions: { id: string; name: string }[];\n actionOptions: { id: string; name: string }[];\n recipeOptions: { id: string; name: string }[];\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n phaseGateOptions: ConfigurationFieldOption[];\n blockingStatuses: string[];\n}\n\nexport interface GovernanceLegacyFormConfigContext {\n translate: GovernanceTranslateFn;\n isEdit: boolean;\n langCode: 'en' | 'ar';\n selectedRuleType: GovernanceRuleType | null;\n ruleTypeOptions: ConfigurationFieldOption[];\n scopeOptions: ConfigurationFieldOption[];\n operationOptions: ConfigurationFieldOption[];\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nexport function buildWizardFormConfig({\n translate,\n isEdit,\n recipeKey,\n appliesToOptions,\n actionOptions,\n recipeOptions,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n phaseGateOptions,\n blockingStatuses,\n}: GovernanceWizardFormConfigContext): DynamicFormConfig {\n const statusOptions = blockingStatuses.map((status) => ({\n label: status,\n value: status,\n }));\n const operatorOptions = GOVERNANCE_OPERATOR_OPTIONS.map((option) => ({\n label: translate(option.labelKey),\n value: option.value,\n }));\n const countLabel =\n recipeKey === 'module-min-count'\n ? translate('wizard.min-count-label')\n : translate('wizard.max-count-label');\n\n return {\n sections: [\n {\n key: 'basicInfo',\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new TextFieldConfig({\n key: 'key',\n label: translate('rule-key'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ValidatorConfig.pattern(\n '^[a-z0-9-]+$',\n translate('wizard.key-pattern-message'),\n ),\n ],\n readonly: isEdit,\n order: 1,\n colSpan: 12,\n }),\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 3,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n rows: 3,\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n rows: 3,\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 6,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 7,\n colSpan: 6,\n }),\n ],\n },\n {\n key: 'appliesTo',\n type: 'header',\n label: translate('wizard.where-question'),\n order: 2,\n fields: [\n new RadioCardsFieldConfig({\n key: 'appliesTo',\n options: appliesToOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n new SelectFieldConfig({\n key: 'selectedModuleKey',\n label: translate('wizard.specific-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n relations: [\n {\n key: 'appliesTo',\n value: 'specific-module',\n action: 'show',\n },\n ],\n }),\n ],\n },\n {\n key: 'action',\n type: 'header',\n label: translate('wizard.when-question'),\n order: 3,\n fields: [\n new RadioCardsFieldConfig({\n key: 'actionKey',\n options: actionOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n ],\n },\n {\n key: 'recipe',\n type: 'header',\n label: translate('wizard.what-question'),\n order: 4,\n fields: [\n new RadioCardsFieldConfig({\n key: 'recipeKey',\n options: recipeOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n ],\n },\n {\n key: 'details',\n type: 'header',\n label: translate('wizard.details-question'),\n order: 5,\n fields: [\n new SelectFieldConfig({\n key: 'requiredModuleKey',\n label: translate('wizard.required-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'require-module',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'phase-gate-module-required',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'blockedModuleKey',\n label: translate('wizard.blocked-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'prevent-module',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'countedModuleKey',\n label: translate('wizard.counted-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 3,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'module-max-count',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'module-min-count',\n action: 'show',\n },\n ],\n }),\n new NumberFieldConfig({\n key: 'countValue',\n label: countLabel,\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ValidatorConfig.min(1),\n ],\n min: 1,\n order: 4,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'module-max-count',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'module-min-count',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'phaseGateCompletedSchemaId',\n label: translate('wizard.phase-gate-required-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: phaseGateOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 5,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'phase-gate-completed',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'phaseGateOptionalSchemaId',\n label: translate('wizard.phase-gate-optional-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: phaseGateOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 6,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'phase-gate-module-required',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'requestSchemaId',\n label: translate('wizard.request-schema-label'),\n placeholder: translate('wizard.request-schema-hint'),\n options: requestSchemaOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 7,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'no-active-request',\n action: 'show',\n },\n ],\n }),\n new MultiSelectFieldConfig({\n key: 'blockingStatuses',\n label: translate('wizard.blocking-statuses-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: statusOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 8,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'no-active-request',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'propertyKey',\n label: translate('wizard.property-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: propertyOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 9,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'operator',\n label: translate('wizard.operator-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: operatorOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 10,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n ],\n }),\n new TextFieldConfig({\n key: 'expectedValue',\n label: translate('wizard.expected-value-label'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 11,\n colSpan: 12,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n ],\n }),\n ],\n },\n {\n key: 'advanced',\n type: 'header',\n label: translate('execution-settings'),\n order: 6,\n fields: [\n new NumberFieldConfig({\n key: 'priority',\n label: translate('priority'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ValidatorConfig.min(0),\n ],\n min: 0,\n max: 1000,\n order: 1,\n colSpan: 6,\n }),\n new ToggleFieldConfig({\n key: 'stopOnFailure',\n label: translate('stop-on-failure'),\n order: 2,\n colSpan: 12,\n }),\n new ToggleFieldConfig({\n key: 'isActive',\n label: translate('active-rule'),\n hidden: !isEdit,\n order: 3,\n colSpan: 12,\n }),\n ],\n },\n ],\n };\n}\n\nexport function buildLegacyFormConfig({\n translate,\n isEdit,\n langCode,\n selectedRuleType,\n ruleTypeOptions,\n scopeOptions,\n operationOptions,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceLegacyFormConfigContext): DynamicFormConfig {\n return {\n sections: [\n {\n key: 'basicInfo',\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new TextFieldConfig({\n key: 'key',\n label: translate('rule-key'),\n placeholder: translate('wizard.rule-key-placeholder'),\n validators: [\n ValidatorConfig.required(),\n ValidatorConfig.pattern(\n '^[a-z0-9-]+$',\n translate('wizard.key-pattern-message'),\n ),\n ],\n order: 1,\n colSpan: 12,\n readonly: isEdit,\n }),\n new NumberFieldConfig({\n key: 'priority',\n label: translate('priority'),\n placeholder: '10',\n validators: [ValidatorConfig.required(), ValidatorConfig.min(0)],\n min: 0,\n max: 1000,\n order: 2,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n placeholder: translate('name-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 3,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n placeholder: translate('name-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n placeholder: translate('description-en-placeholder'),\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n placeholder: translate('description-ar-placeholder'),\n order: 6,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n placeholder: translate('error-message-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 7,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n placeholder: translate('error-message-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 8,\n colSpan: 6,\n }),\n ],\n },\n {\n key: 'ruleTarget',\n type: 'header',\n label: translate('rule-target'),\n order: 2,\n fields: [\n new SelectFieldConfig({\n key: 'ruleType',\n label: translate('rule-type'),\n options: ruleTypeOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [ValidatorConfig.required()],\n order: 1,\n colSpan: 6,\n readonly: isEdit,\n }),\n new SelectFieldConfig({\n key: 'targetScope',\n label: translate('target-scope'),\n options: scopeOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [ValidatorConfig.required()],\n order: 2,\n colSpan: 6,\n }),\n new SelectFieldConfig({\n key: 'targetModuleKey',\n label: translate('target-module'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 3,\n colSpan: 6,\n relations: [\n {\n key: 'targetScope',\n value: 'Module',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'targetOperationKey',\n label: translate('target-operation'),\n options: operationOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 4,\n colSpan: 6,\n }),\n ],\n },\n ...(selectedRuleType\n ? [\n buildLegacyConfigurationSection({\n translate,\n ruleType: selectedRuleType,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n }),\n ]\n : []),\n {\n key: 'executionSettings',\n type: 'header',\n label: translate('execution-settings'),\n order: 4,\n fields: [\n new ToggleFieldConfig({\n key: 'stopOnFailure',\n label: translate('stop-on-failure'),\n order: 1,\n colSpan: 12,\n }),\n new ToggleFieldConfig({\n key: 'isActive',\n label: translate('active-rule'),\n order: 2,\n colSpan: 12,\n }),\n ],\n },\n ],\n };\n}\n\ninterface GovernanceLegacyConfigurationSectionContext {\n translate: GovernanceTranslateFn;\n ruleType: GovernanceRuleType;\n langCode: 'en' | 'ar';\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nfunction buildLegacyConfigurationSection({\n translate,\n ruleType,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceLegacyConfigurationSectionContext) {\n return {\n key: 'configuration',\n type: 'header' as const,\n label: translate('rule-configuration'),\n order: 3,\n fields: ruleType.configurationSchema.map((field, index) =>\n schemaFieldToFormField({\n field,\n order: index + 1,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n }),\n ),\n };\n}\n\ninterface GovernanceSchemaFieldToFormFieldContext {\n field: ConfigurationFieldSchema;\n order: number;\n langCode: 'en' | 'ar';\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nfunction schemaFieldToFormField({\n field,\n order,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceSchemaFieldToFormFieldContext): BaseFieldConfig {\n const label = field.label[langCode] || field.label.en;\n const colSpan = field.colSpan ?? 6;\n const validators = field.required ? [ValidatorConfig.required()] : [];\n\n switch (field.type) {\n case 'text':\n return new TextFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n case 'textarea':\n return new TextareaFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n case 'number':\n return new NumberFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n min: field.min,\n max: field.max,\n order,\n colSpan,\n });\n case 'select':\n return new SelectFieldConfig({\n key: `config_${field.key}`,\n label,\n options: getLegacyOptionsForField(\n field,\n requestSchemaOptions,\n propertyOptions,\n ),\n optionLabel: 'label',\n optionValue: 'value',\n validators,\n order,\n colSpan,\n });\n case 'multi-select':\n return new MultiSelectFieldConfig({\n key: `config_${field.key}`,\n label,\n options: getLegacyOptionsForField(\n field,\n requestSchemaOptions,\n propertyOptions,\n ),\n optionLabel: 'label',\n optionValue: 'value',\n validators,\n order,\n colSpan,\n });\n case 'checkbox':\n return new ToggleFieldConfig({\n key: `config_${field.key}`,\n label,\n order,\n colSpan,\n });\n case 'date':\n return new DateFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n default:\n return new TextFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n }\n}\n\nfunction getLegacyOptionsForField(\n field: ConfigurationFieldSchema,\n requestSchemaOptions: ConfigurationFieldOption[],\n propertyOptions: ConfigurationFieldOption[],\n): ConfigurationFieldOption[] {\n switch (field.optionsSource) {\n case 'requestSchema':\n return requestSchemaOptions;\n case 'properties':\n return propertyOptions;\n case 'auto-populated':\n case 'static':\n default:\n return field.options ?? [];\n }\n}\n","import { ConfigurationFieldOption } from '../../../../store/governance';\nimport {\n GOVERNANCE_OPERATOR_OPTIONS,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleWizardFormValue,\n} from './governance-rule-form.models';\n\nexport interface GovernanceSummaryContext {\n value: GovernanceRuleWizardFormValue;\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n phaseGateOptions: ConfigurationFieldOption[];\n translate: (\n key: string,\n params?: Record<string, string | number | null | undefined>,\n ) => string;\n}\n\nexport function buildActionPrompt(\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n translate: GovernanceSummaryContext['translate'],\n): string {\n return translate('wizard.summary.action', {\n object: translate(`wizard.summary.objects.${appliesTo}`),\n action: translate(`wizard.summary.actions.${actionKey}`),\n });\n}\n\nexport function buildSummary({\n value,\n translate,\n ...context\n}: GovernanceSummaryContext): string {\n if (!value.actionKey || !value.recipeKey) {\n return translate('wizard.summary-empty');\n }\n\n return translate('wizard.summary.full', {\n action: buildActionPrompt(value.appliesTo, value.actionKey, translate),\n detail: resolveRecipeSummary({ value, translate, ...context }),\n });\n}\n\nfunction resolveRecipeSummary({\n value,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n phaseGateOptions,\n translate,\n}: GovernanceSummaryContext): string {\n switch (value.recipeKey) {\n case 'require-module': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.requiredModuleKey,\n );\n return translate('wizard.summary.require-module', {\n module:\n moduleLabel ??\n value.requiredModuleKey ??\n translate('wizard.summary.fallbacks.module'),\n });\n }\n case 'prevent-module': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.blockedModuleKey,\n );\n return translate('wizard.summary.prevent-module', {\n module:\n moduleLabel ??\n value.blockedModuleKey ??\n translate('wizard.summary.fallbacks.selected-module'),\n });\n }\n case 'module-max-count':\n return translate('wizard.summary.module-max-count', {\n count: value.countValue ?? 0,\n module:\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\n value.countedModuleKey ??\n translate('wizard.summary.fallbacks.modules'),\n });\n case 'module-min-count':\n return translate('wizard.summary.module-min-count', {\n count: value.countValue ?? 0,\n module:\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\n value.countedModuleKey ??\n translate('wizard.summary.fallbacks.modules'),\n });\n case 'phase-gate-completed': {\n const phaseGateLabel = findOptionLabel(\n phaseGateOptions,\n value.phaseGateSchemaId,\n );\n return translate('wizard.summary.phase-gate-completed', {\n phaseGate:\n phaseGateLabel ?? translate('wizard.summary.fallbacks.phase-gate'),\n });\n }\n case 'phase-gate-module-required': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.requiredModuleKey,\n );\n return translate('wizard.summary.phase-gate-module-required', {\n module:\n moduleLabel ??\n value.requiredModuleKey ??\n translate('wizard.summary.fallbacks.required-module'),\n });\n }\n case 'no-active-request': {\n const requestLabel = findOptionLabel(\n requestSchemaOptions,\n value.requestSchemaId,\n );\n return translate('wizard.summary.no-active-request', {\n request: requestLabel ?? translate('wizard.summary.fallbacks.request'),\n });\n }\n case 'property-value': {\n const propertyLabel =\n findOptionLabel(propertyOptions, value.propertyKey) ??\n value.propertyKey ??\n translate('wizard.summary.fallbacks.property');\n\n return translate('wizard.summary.property-value', {\n property: propertyLabel,\n operator: resolveOperatorText(value.operator, translate),\n expectedValue: value.expectedValue || '',\n }).trim();\n }\n default:\n return translate('wizard.summary-empty');\n }\n}\n\nfunction resolveOperatorText(\n operator: string | null,\n translate: GovernanceSummaryContext['translate'],\n): string {\n const option = GOVERNANCE_OPERATOR_OPTIONS.find(\n (item) => item.value === operator,\n );\n\n return option\n ? translate(option.labelKey).toLowerCase()\n : translate('wizard.summary.fallbacks.operator');\n}\n\nfunction findOptionLabel(\n options: ConfigurationFieldOption[],\n value: string | null,\n): string | null {\n if (!value) {\n return null;\n }\n\n return options.find((option) => option.value === value)?.label ?? null;\n}\n","import { GovernanceRuleType } from '../../../../store/governance';\nimport {\n mapActionToOperationKey,\n mapAppliesToToTargetScope,\n} from './governance-rule-form.mapper';\nimport {\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n GovernanceLegacyFormValue,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleRecipeDefinition,\n GovernanceRuleRecipeKey,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleTypeKey,\n resolveRecipeDefinition,\n} from './governance-rule-form.models';\n\nexport type GovernanceRuleWizardFormState = GovernanceRuleWizardFormValue & {\n phaseGateCompletedSchemaId: string | null;\n phaseGateOptionalSchemaId: string | null;\n};\n\nexport const DEFAULT_WIZARD_FORM_STATE: GovernanceRuleWizardFormState = {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n phaseGateCompletedSchemaId: null,\n phaseGateOptionalSchemaId: null,\n};\n\nexport function mapWizardFormValueToState(\n value: GovernanceRuleWizardFormValue,\n): GovernanceRuleWizardFormState {\n return {\n ...DEFAULT_WIZARD_FORM_STATE,\n ...value,\n phaseGateCompletedSchemaId:\n value.recipeKey === 'phase-gate-completed'\n ? value.phaseGateSchemaId\n : null,\n phaseGateOptionalSchemaId:\n value.recipeKey === 'phase-gate-module-required'\n ? value.phaseGateSchemaId\n : null,\n };\n}\n\nexport function normalizeWizardFormState(\n value: Partial<GovernanceRuleWizardFormState> | null | undefined,\n): GovernanceRuleWizardFormState {\n return {\n ...DEFAULT_WIZARD_FORM_STATE,\n ...value,\n name: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.name,\n ...value?.name,\n },\n description: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.description,\n ...value?.description,\n },\n errorMessage: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.errorMessage,\n ...value?.errorMessage,\n },\n selectedModuleKey: value?.selectedModuleKey ?? null,\n actionKey: value?.actionKey ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.actionKey,\n recipeKey: value?.recipeKey ?? null,\n requiredModuleKey: value?.requiredModuleKey ?? null,\n blockedModuleKey: value?.blockedModuleKey ?? null,\n countedModuleKey: value?.countedModuleKey ?? null,\n countValue:\n value?.countValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n phaseGateCompletedSchemaId: value?.phaseGateCompletedSchemaId ?? null,\n phaseGateOptionalSchemaId: value?.phaseGateOptionalSchemaId ?? null,\n phaseGateSchemaId: value?.phaseGateSchemaId ?? null,\n requestSchemaId: value?.requestSchemaId ?? null,\n blockingStatuses: Array.isArray(value?.blockingStatuses)\n ? value.blockingStatuses\n : [...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.blockingStatuses],\n propertyKey: value?.propertyKey ?? null,\n operator: value?.operator ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\n expectedValue:\n value?.expectedValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.expectedValue,\n priority: value?.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\n stopOnFailure:\n value?.stopOnFailure ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.stopOnFailure,\n isActive: value?.isActive ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.isActive,\n };\n}\n\nexport function mapWizardStateToWizardValue(\n state: GovernanceRuleWizardFormState,\n): GovernanceRuleWizardFormValue {\n return {\n key: state.key,\n name: {\n en: state.name.en,\n ar: state.name.ar,\n },\n description: {\n en: state.description.en,\n ar: state.description.ar,\n },\n errorMessage: {\n en: state.errorMessage.en,\n ar: state.errorMessage.ar,\n },\n appliesTo: state.appliesTo,\n selectedModuleKey: state.selectedModuleKey,\n actionKey: state.actionKey,\n recipeKey: state.recipeKey,\n requiredModuleKey: state.requiredModuleKey,\n blockedModuleKey: state.blockedModuleKey,\n countedModuleKey: state.countedModuleKey,\n countValue: state.countValue,\n phaseGateSchemaId:\n state.phaseGateCompletedSchemaId ??\n state.phaseGateOptionalSchemaId ??\n null,\n requestSchemaId: state.requestSchemaId,\n blockingStatuses: [...state.blockingStatuses],\n propertyKey: state.propertyKey,\n operator: state.operator,\n expectedValue: state.expectedValue,\n priority: state.priority,\n stopOnFailure: state.stopOnFailure,\n isActive: state.isActive,\n };\n}\n\nexport function resolveRecipeDefinitionForRuleType(\n ruleType: GovernanceRuleType,\n): GovernanceRuleRecipeDefinition | null {\n return resolveRecipeDefinition(\n resolveRecipeDefinitionKeyForRuleType(ruleType),\n );\n}\n\nexport function resolveRecipeDefinitionKeyForRuleType(\n ruleType: GovernanceRuleType,\n): GovernanceRuleRecipeKey | null {\n switch (readGovernanceRuleTypeKey(ruleType)) {\n case 'ModuleExists':\n return 'require-module';\n case 'ModuleNotExists':\n case 'ModuleDoesNotExist':\n return 'prevent-module';\n case 'ModuleMaxCount':\n return 'module-max-count';\n case 'ModuleMinCount':\n return 'module-min-count';\n case 'PhaseGateCompleted':\n return 'phase-gate-completed';\n case 'PhaseGateModuleRequired':\n return 'phase-gate-module-required';\n case 'NoActiveRequest':\n return 'no-active-request';\n case 'PropertyValueEquals':\n case 'FieldValue':\n return 'property-value';\n default:\n return null;\n }\n}\n\nexport function hasCompatibleRecipe(\n ruleTypes: GovernanceRuleType[],\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n): boolean {\n return ruleTypes.some((ruleType) =>\n !!resolveRecipeDefinitionForRuleType(ruleType) &&\n isRuleTypeCompatible(ruleType, appliesTo, actionKey),\n );\n}\n\nexport function isRuleTypeCompatible(\n ruleType: GovernanceRuleType,\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n): boolean {\n return (\n ruleType.supportedScopes.includes(mapAppliesToToTargetScope(appliesTo)) &&\n ruleType.supportedOperations.includes(mapActionToOperationKey(actionKey))\n );\n}\n\nexport function areWizardStatesEqual(\n current: GovernanceRuleWizardFormState,\n next: GovernanceRuleWizardFormState,\n): boolean {\n return (\n current.key === next.key &&\n current.name.en === next.name.en &&\n current.name.ar === next.name.ar &&\n current.description.en === next.description.en &&\n current.description.ar === next.description.ar &&\n current.errorMessage.en === next.errorMessage.en &&\n current.errorMessage.ar === next.errorMessage.ar &&\n current.appliesTo === next.appliesTo &&\n current.selectedModuleKey === next.selectedModuleKey &&\n current.actionKey === next.actionKey &&\n current.recipeKey === next.recipeKey &&\n current.requiredModuleKey === next.requiredModuleKey &&\n current.blockedModuleKey === next.blockedModuleKey &&\n current.countedModuleKey === next.countedModuleKey &&\n current.countValue === next.countValue &&\n current.phaseGateCompletedSchemaId === next.phaseGateCompletedSchemaId &&\n current.phaseGateOptionalSchemaId === next.phaseGateOptionalSchemaId &&\n current.phaseGateSchemaId === next.phaseGateSchemaId &&\n current.requestSchemaId === next.requestSchemaId &&\n current.propertyKey === next.propertyKey &&\n current.operator === next.operator &&\n current.expectedValue === next.expectedValue &&\n current.priority === next.priority &&\n current.stopOnFailure === next.stopOnFailure &&\n current.isActive === next.isActive &&\n areStringArraysEqual(current.blockingStatuses, next.blockingStatuses)\n );\n}\n\nexport function areLegacyFormValuesEqual(\n current: GovernanceLegacyFormValue | null,\n next: GovernanceLegacyFormValue | null,\n): boolean {\n if (current === next) {\n return true;\n }\n\n if (!current || !next) {\n return current === next;\n }\n\n if (\n current.key !== next.key ||\n current.priority !== next.priority ||\n current.name.en !== next.name.en ||\n current.name.ar !== next.name.ar ||\n current.description.en !== next.description.en ||\n current.description.ar !== next.description.ar ||\n current.errorMessage.en !== next.errorMessage.en ||\n current.errorMessage.ar !== next.errorMessage.ar ||\n current.ruleType !== next.ruleType ||\n current.targetScope !== next.targetScope ||\n current.targetModuleKey !== next.targetModuleKey ||\n current.targetOperationKey !== next.targetOperationKey ||\n current.stopOnFailure !== next.stopOnFailure ||\n current.isActive !== next.isActive\n ) {\n return false;\n }\n\n const currentKeys = Object.keys(current);\n const nextKeys = Object.keys(next);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => {\n if (\n key === 'key' ||\n key === 'priority' ||\n key === 'name' ||\n key === 'description' ||\n key === 'errorMessage' ||\n key === 'ruleType' ||\n key === 'targetScope' ||\n key === 'targetModuleKey' ||\n key === 'targetOperationKey' ||\n key === 'stopOnFailure' ||\n key === 'isActive'\n ) {\n return true;\n }\n\n const currentValue = current[key];\n const nextValue = next[key];\n\n if (Array.isArray(currentValue) || Array.isArray(nextValue)) {\n return (\n Array.isArray(currentValue) &&\n Array.isArray(nextValue) &&\n areUnknownArraysEqual(currentValue, nextValue)\n );\n }\n\n return currentValue === nextValue;\n });\n}\n\nfunction areStringArraysEqual(current: string[], next: string[]): boolean {\n if (current.length !== next.length) {\n return false;\n }\n\n return current.every((value, index) => value === next[index]);\n}\n\nfunction areUnknownArraysEqual(current: unknown[], next: unknown[]): boolean {\n if (current.length !== next.length) {\n return false;\n }\n\n return current.every((value, index) => value === next[index]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n OnInit,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\nimport { Button } from '@masterteam/components/button';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { ModalRef } from '@masterteam/components/dialog';\nimport { DynamicFormConfig } from '@masterteam/components';\nimport { ToastService } from '@masterteam/components/toast';\nimport {\n ConfigurationFieldOption,\n CreateGovernanceRuleDto,\n GovernanceFacade,\n GovernanceRule,\n UpdateGovernanceRuleDto,\n} from '../../../store/governance';\nimport {\n TranslocoDirective,\n TranslocoPipe,\n TranslocoService,\n} from '@jsverse/transloco';\nimport { ModalService } from '@masterteam/components/modal';\nimport {\n buildCreatePayload,\n buildUpdatePayload,\n mapRuleToLegacyFormValue,\n mapRuleToWizardFormValue,\n packLegacyFormToCreateDto,\n packLegacyFormToUpdateDto,\n} from './internal/governance-rule-form.mapper';\nimport {\n buildLegacyFormConfig,\n buildWizardFormConfig,\n} from './internal/governance-rule-form.config';\nimport {\n DEFAULT_BLOCKING_STATUSES,\n findConfigurationSchemaField,\n findRuleTypeByRecipe,\n GOVERNANCE_ACTION_OPTIONS,\n GOVERNANCE_APPLIES_TO_OPTIONS,\n GovernanceLegacyFormValue,\n GovernanceRuleRecipeDefinition,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleTypeKey,\n} from './internal/governance-rule-form.models';\nimport {\n buildActionPrompt,\n buildSummary,\n} from './internal/governance-rule-form.summary';\nimport {\n areLegacyFormValuesEqual,\n areWizardStatesEqual,\n DEFAULT_WIZARD_FORM_STATE,\n GovernanceRuleWizardFormState,\n hasCompatibleRecipe,\n isRuleTypeCompatible,\n mapWizardFormValueToState,\n mapWizardStateToWizardValue,\n normalizeWizardFormState,\n resolveRecipeDefinitionForRuleType,\n} from './internal/governance-rule-form.utils';\n\n@Component({\n selector: 'mt-governance-rule-form',\n templateUrl: './governance-rule-form.html',\n styleUrls: ['./governance-rule-form.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n Button,\n DynamicForm,\n ReactiveFormsModule,\n SkeletonModule,\n TranslocoDirective,\n TranslocoPipe,\n ],\n host: {\n class: 'block h-full',\n },\n})\nexport default class GovernanceRuleForm implements OnInit {\n readonly modal = inject(ModalService);\n readonly ref: ModalRef = inject(ModalRef);\n private readonly translocoService = inject(TranslocoService);\n private readonly facade = inject(GovernanceFacade);\n private readonly toast = inject(ToastService);\n\n readonly ruleForEdit = input<GovernanceRule | null>(null);\n readonly dynamicFormRef = viewChild(DynamicForm);\n\n readonly selectedRule = this.facade.selectedRule;\n readonly ruleTypes = this.facade.ruleTypes;\n readonly isLoadingRule = this.facade.isLoadingRule;\n readonly isLoadingRuleTypes = this.facade.isLoadingRuleTypes;\n readonly isAddingRule = this.facade.isAddingRule;\n readonly isUpdatingRule = this.facade.isUpdatingRule;\n readonly modules = this.facade.modules;\n readonly requestSchemas = this.facade.requestSchemas;\n readonly properties = this.facade.properties;\n\n readonly wizardFormControl = new FormControl<GovernanceRuleWizardFormState>(\n DEFAULT_WIZARD_FORM_STATE,\n { nonNullable: true },\n );\n\n readonly legacyFormControl =\n new FormControl<GovernanceLegacyFormValue | null>(null);\n\n private readonly wizardStateRaw = toSignal(\n this.wizardFormControl.valueChanges.pipe(\n map((value) => value ?? DEFAULT_WIZARD_FORM_STATE),\n ),\n { initialValue: this.wizardFormControl.value },\n );\n\n private readonly legacyFormValue = toSignal(\n this.legacyFormControl.valueChanges.pipe(\n map(() => this.legacyFormControl.value),\n ),\n { initialValue: this.legacyFormControl.value },\n );\n\n private readonly activeLang = toSignal(this.translocoService.langChanges$, {\n initialValue: this.translocoService.getActiveLang(),\n });\n\n readonly langCode = computed<'en' | 'ar'>(() =>\n this.activeLang() === 'ar' ? 'ar' : 'en',\n );\n\n readonly isEditMode = computed(() => !!this.ruleForEdit()?.id);\n readonly wizardState = computed(() =>\n normalizeWizardFormState(this.wizardStateRaw()),\n );\n readonly wizardValue = computed<GovernanceRuleWizardFormValue>(() =>\n mapWizardStateToWizardValue(this.wizardState()),\n );\n\n readonly moduleOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.modules().map((module) => ({\n label: module.name[lang] || module.name.en,\n value: module.key,\n }));\n });\n\n readonly requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.requestSchemas().map((schema) => ({\n label: schema.name[lang] || schema.name.en,\n value: String(schema.id),\n }));\n });\n\n readonly propertyOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.properties().map((property) => ({\n label: property.name[lang] || property.name.en,\n value: property.key,\n }));\n });\n\n readonly appliesToCardOptions = computed(() =>\n GOVERNANCE_APPLIES_TO_OPTIONS.map((option) => ({\n id: option.value,\n name: this.translate(option.labelKey),\n })),\n );\n\n readonly availableActionOptions = computed(() => {\n return GOVERNANCE_ACTION_OPTIONS.filter((option) =>\n hasCompatibleRecipe(\n this.ruleTypes(),\n this.wizardValue().appliesTo,\n option.value,\n ),\n );\n });\n\n readonly actionCardOptions = computed(() =>\n this.availableActionOptions().map((option) => ({\n id: option.value,\n name: buildActionPrompt(\n this.wizardValue().appliesTo,\n option.value,\n this.translate.bind(this),\n ),\n })),\n );\n\n readonly availableRecipeDefinitions = computed(() => {\n const actionKey = this.wizardValue().actionKey;\n if (!actionKey) {\n return [];\n }\n\n return this.ruleTypes()\n .map((ruleType) => {\n const recipe = resolveRecipeDefinitionForRuleType(ruleType);\n if (!recipe) {\n return null;\n }\n\n return isRuleTypeCompatible(\n ruleType,\n this.wizardValue().appliesTo,\n actionKey,\n )\n ? recipe\n : null;\n })\n .filter(\n (recipe, index, items): recipe is GovernanceRuleRecipeDefinition =>\n !!recipe &&\n items.findIndex((item) => item?.key === recipe.key) === index,\n );\n });\n\n readonly recipeCardOptions = computed(() =>\n this.availableRecipeDefinitions().map((recipe) => ({\n id: recipe.key,\n name: this.translate(recipe.labelKey),\n })),\n );\n\n readonly selectedRuleType = computed(() =>\n findRuleTypeByRecipe(this.ruleTypes(), this.wizardValue().recipeKey),\n );\n\n readonly useLegacyEditor = computed(() => {\n if (!this.ruleForEdit()?.id) {\n return false;\n }\n\n const rule = this.selectedRule();\n return !!rule && !mapRuleToWizardFormValue(rule);\n });\n\n readonly isInitializing = computed(() => {\n if (this.ruleForEdit()?.id && this.isLoadingRule()) {\n return true;\n }\n\n return this.ruleTypes().length === 0 && this.isLoadingRuleTypes();\n });\n\n readonly noRecipesAvailable = computed(\n () =>\n !this.useLegacyEditor() &&\n !!this.wizardValue().actionKey &&\n this.recipeCardOptions().length === 0,\n );\n readonly hasReviewSummary = computed(() => {\n if (this.useLegacyEditor()) {\n return false;\n }\n\n const value = this.wizardValue();\n return !!value.actionKey && !!value.recipeKey;\n });\n\n readonly canSubmit = computed(() => {\n if (this.useLegacyEditor()) {\n return this.legacyFormControl.valid;\n }\n\n return (\n this.wizardFormControl.valid &&\n !!this.selectedRuleType() &&\n !!this.wizardValue().actionKey &&\n !!this.wizardValue().recipeKey\n );\n });\n\n readonly reviewSummary = computed(() =>\n buildSummary({\n value: this.wizardValue(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n phaseGateOptions: this.getPhaseGateOptions(),\n translate: this.translate.bind(this),\n }),\n );\n readonly wizardFormConfig = computed<DynamicFormConfig>(() =>\n buildWizardFormConfig({\n translate: this.translate.bind(this),\n isEdit: this.isEditMode(),\n recipeKey: this.wizardValue().recipeKey,\n appliesToOptions: this.appliesToCardOptions(),\n actionOptions: this.actionCardOptions(),\n recipeOptions: this.recipeCardOptions(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n phaseGateOptions: this.getPhaseGateOptions(),\n blockingStatuses: this.getBlockingStatusOptions(),\n }),\n );\n\n readonly selectedLegacyRuleType = computed(() => {\n const ruleTypeKey = String(this.legacyFormValue()?.ruleType ?? '').trim();\n if (!ruleTypeKey) {\n return null;\n }\n\n return (\n this.ruleTypes().find((ruleType) => {\n const catalogKey = readGovernanceRuleTypeKey(ruleType);\n return (\n catalogKey === ruleTypeKey || String(ruleType.type) === ruleTypeKey\n );\n }) ?? null\n );\n });\n\n readonly scopeOptions = computed(() => {\n const ruleType = this.selectedLegacyRuleType();\n if (!ruleType) {\n return [\n { label: this.translateScopeLabel('Level'), value: 'Level' },\n { label: this.translateScopeLabel('Module'), value: 'Module' },\n { label: this.translateScopeLabel('PhaseGate'), value: 'PhaseGate' },\n ];\n }\n\n return ruleType.supportedScopes.map((scope) => ({\n label: this.translateScopeLabel(scope),\n value: scope,\n }));\n });\n\n readonly operationOptions = computed(() => {\n const ruleType = this.selectedLegacyRuleType();\n if (!ruleType) {\n return [\n { label: this.translate('all'), value: '' },\n { label: this.translateOperationLabel('Create'), value: 'Create' },\n { label: this.translateOperationLabel('Update'), value: 'Update' },\n { label: this.translateOperationLabel('Delete'), value: 'Delete' },\n ];\n }\n\n return [\n { label: this.translate('all'), value: '' },\n ...ruleType.supportedOperations.map((operation) => ({\n label: this.translateOperationLabel(operation),\n value: operation,\n })),\n ];\n });\n\n readonly legacyFormConfig = computed<DynamicFormConfig>(() =>\n buildLegacyFormConfig({\n translate: this.translate.bind(this),\n isEdit: this.isEditMode(),\n langCode: this.langCode(),\n selectedRuleType: this.selectedLegacyRuleType(),\n ruleTypeOptions: this.ruleTypeOptions(),\n scopeOptions: this.scopeOptions(),\n operationOptions: this.operationOptions(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n }),\n );\n\n constructor() {\n effect(() => {\n if (\n this.wizardValue().appliesTo !== 'specific-module' &&\n this.wizardValue().selectedModuleKey\n ) {\n this.patchWizardState({ selectedModuleKey: null });\n }\n });\n\n effect(() => {\n const currentAction = this.wizardValue().actionKey;\n if (\n !currentAction ||\n this.availableActionOptions().some(\n (option) => option.value === currentAction,\n )\n ) {\n return;\n }\n\n this.patchWizardState({ actionKey: null, recipeKey: null });\n });\n\n effect(() => {\n const currentRecipe = this.wizardValue().recipeKey;\n if (\n !currentRecipe ||\n this.availableRecipeDefinitions().some(\n (definition) => definition.key === currentRecipe,\n )\n ) {\n return;\n }\n\n this.patchWizardState({ recipeKey: null });\n });\n\n effect(() => {\n const editing = !!this.ruleForEdit()?.id;\n\n if (!editing) {\n this.resetWizardForm();\n if (this.legacyFormControl.value !== null) {\n this.legacyFormControl.reset(null);\n }\n return;\n }\n\n const rule = this.selectedRule();\n if (!rule) {\n return;\n }\n\n const wizardValue = mapRuleToWizardFormValue(rule);\n if (wizardValue) {\n this.setWizardState(mapWizardFormValueToState(wizardValue));\n if (this.legacyFormControl.value !== null) {\n this.legacyFormControl.reset(null);\n }\n return;\n }\n\n this.resetWizardForm();\n const nextLegacyValue = mapRuleToLegacyFormValue(rule);\n if (\n !areLegacyFormValuesEqual(this.legacyFormControl.value, nextLegacyValue)\n ) {\n this.legacyFormControl.setValue(nextLegacyValue);\n }\n });\n\n effect(() => {\n const recipeKey = this.wizardValue().recipeKey;\n const appliesTo = this.wizardValue().appliesTo;\n const targetModuleKey =\n appliesTo === 'specific-module'\n ? (this.wizardValue().selectedModuleKey ?? undefined)\n : undefined;\n const targetScope =\n appliesTo === 'level'\n ? 'Level'\n : appliesTo === 'phase-gate'\n ? 'PhaseGate'\n : 'Module';\n const needsRequestSchemas = recipeKey === 'no-active-request';\n const needsProperties = recipeKey === 'property-value';\n\n if (!needsRequestSchemas && !needsProperties) {\n this.clearReferenceData();\n return;\n }\n\n if (\n targetScope === 'Module' &&\n appliesTo === 'specific-module' &&\n !targetModuleKey\n ) {\n this.clearReferenceData();\n return;\n }\n\n if (needsRequestSchemas) {\n this.facade.getRequestSchemas(targetScope, targetModuleKey);\n }\n\n if (needsProperties) {\n this.facade.getProperties(targetScope, targetModuleKey);\n }\n });\n }\n\n ngOnInit(): void {\n if (!this.ruleTypes().length) {\n this.facade.getRuleTypes();\n }\n\n if (!this.modules().length) {\n this.facade.getModules();\n }\n\n const ruleId = this.ruleForEdit()?.id;\n if (ruleId) {\n this.facade.getRule(ruleId);\n }\n }\n\n onSubmit(): void {\n this.dynamicFormRef()?.form.markAllAsTouched();\n\n if (this.useLegacyEditor()) {\n if (!this.legacyFormControl.valid) {\n this.toast.warn(\n this.translate('wizard.complete-required-fields'),\n this.translate('warning'),\n );\n return;\n }\n\n this.submitLegacyForm();\n return;\n }\n\n if (!this.wizardValue().actionKey || !this.wizardValue().recipeKey) {\n this.toast.warn(\n this.translate('wizard.summary-empty'),\n this.translate('warning'),\n );\n return;\n }\n\n if (!this.canSubmit()) {\n this.toast.warn(\n this.translate('wizard.complete-required-fields'),\n this.translate('warning'),\n );\n return;\n }\n\n const ruleType = this.selectedRuleType();\n if (!ruleType) {\n return;\n }\n\n const ruleId = this.ruleForEdit()?.id;\n const payloadValue = this.wizardValue();\n\n if (ruleId) {\n this.saveUpdate(ruleId, buildUpdatePayload(payloadValue, ruleType));\n return;\n }\n\n this.saveCreate(buildCreatePayload(payloadValue, ruleType));\n }\n\n getPhaseGateOptions(): ConfigurationFieldOption[] {\n return (\n findConfigurationSchemaField(this.selectedRuleType(), 'phaseGateSchemaId')\n ?.options ?? []\n );\n }\n\n getBlockingStatusOptions(): string[] {\n const field = findConfigurationSchemaField(\n this.selectedRuleType(),\n 'blockingStatuses',\n );\n\n if (field?.options?.length) {\n return field.options.map((option) => option.value);\n }\n\n return [...DEFAULT_BLOCKING_STATUSES];\n }\n\n private translate(\n key: string,\n params?: Record<string, string | number | null | undefined>,\n ): string {\n const lang = this.activeLang();\n return this.translocoService.translate(`governance.${key}`, params, lang);\n }\n\n private translateScopeLabel(scope: string): string {\n switch (scope) {\n case 'Level':\n return this.translate('scope-level');\n case 'Module':\n return this.translate('scope-module');\n case 'PhaseGate':\n return this.translate('scope-phase-gate');\n default:\n return scope;\n }\n }\n\n private translateOperationLabel(operation: string): string {\n switch (operation) {\n case 'Create':\n return this.translate('create');\n case 'Update':\n return this.translate('update');\n case 'Delete':\n return this.translate('delete');\n default:\n return operation;\n }\n }\n\n private patchWizardState(\n patch: Partial<GovernanceRuleWizardFormState>,\n ): void {\n const currentState = normalizeWizardFormState(\n this.wizardFormControl.getRawValue(),\n );\n const nextState = normalizeWizardFormState({\n ...currentState,\n ...patch,\n });\n\n if (areWizardStatesEqual(currentState, nextState)) {\n return;\n }\n\n this.wizardFormControl.setValue(nextState);\n }\n\n private setWizardState(state: GovernanceRuleWizardFormState): void {\n const currentState = normalizeWizardFormState(\n this.wizardFormControl.getRawValue(),\n );\n const nextState = normalizeWizardFormState(state);\n if (areWizardStatesEqual(currentState, nextState)) {\n return;\n }\n\n this.wizardFormControl.setValue(nextState);\n }\n\n private resetWizardForm(): void {\n this.setWizardState(DEFAULT_WIZARD_FORM_STATE);\n }\n\n private clearReferenceData(): void {\n const hasRequestSchemas = untracked(() => this.requestSchemas().length > 0);\n const hasProperties = untracked(() => this.properties().length > 0);\n\n if (hasRequestSchemas) {\n this.facade.clearRequestSchemas();\n }\n\n if (hasProperties) {\n this.facade.clearProperties();\n }\n }\n\n private saveCreate(payload: CreateGovernanceRuleDto): void {\n this.facade.addRule(payload).subscribe({\n next: () => this.ref.close(true),\n error: () => {},\n });\n }\n\n private saveUpdate(id: number, payload: UpdateGovernanceRuleDto): void {\n this.facade.updateRule(id, payload).subscribe({\n next: () => this.ref.close(true),\n error: () => {},\n });\n }\n\n private submitLegacyForm(): void {\n if (!this.legacyFormControl.valid) {\n return;\n }\n\n const formValue = this.legacyFormControl.value;\n if (!formValue) {\n return;\n }\n\n const ruleId = this.ruleForEdit()?.id;\n if (ruleId) {\n this.saveUpdate(ruleId, packLegacyFormToUpdateDto(formValue));\n return;\n }\n\n this.saveCreate(packLegacyFormToCreateDto(formValue));\n }\n\n private ruleTypeOptions(): ConfigurationFieldOption[] {\n const lang = this.langCode();\n return this.ruleTypes().map((ruleType) => ({\n label: ruleType.name[lang] || ruleType.name.en,\n value: readGovernanceRuleTypeKey(ruleType),\n }));\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\n <div\n [class]=\"\n 'governance-rule-form-content flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4 sm:p-5 ' +\n modal.contentClass\n \"\n >\n @if (isInitializing()) {\n <div class=\"space-y-4\">\n <p-skeleton height=\"4rem\" />\n <p-skeleton height=\"12rem\" />\n <p-skeleton height=\"12rem\" />\n </div>\n } @else if (useLegacyEditor()) {\n <section class=\"rounded-2xl border border-amber-200 bg-amber-50/70 p-4\">\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\n {{ t(\"wizard.legacy-title\") }}\n </p>\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\n {{ t(\"wizard.legacy-description\") }}\n </p>\n </section>\n\n <mt-dynamic-form\n [formConfig]=\"legacyFormConfig()\"\n [formControl]=\"legacyFormControl\"\n />\n } @else {\n @if (noRecipesAvailable()) {\n <section\n class=\"rounded-2xl border border-orange-200 bg-orange-50/80 p-4\"\n >\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\n {{ t(\"wizard.no-recipes-title\") }}\n </p>\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\n {{ t(\"wizard.no-recipes-description\") }}\n </p>\n </section>\n }\n\n <mt-dynamic-form\n [formConfig]=\"wizardFormConfig()\"\n [formControl]=\"wizardFormControl\"\n />\n\n @if (hasReviewSummary()) {\n <section class=\"rounded-2xl border border-slate-900 bg-slate-900 p-4\">\n <p\n class=\"m-0 text-xs font-semibold uppercase tracking-[0.18em] text-white/70\"\n >\n {{ t(\"wizard.summary-title\") }}\n </p>\n <p class=\"mt-2 mb-0 text-sm leading-6 text-white\">\n {{ reviewSummary() }}\n </p>\n </section>\n }\n }\n </div>\n\n <div\n [class]=\"\n 'governance-rule-form-footer ' +\n modal.footerClass +\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\n \"\n >\n <mt-button\n variant=\"outlined\"\n [label]=\"'cancel' | transloco\"\n (click)=\"ref.close()\"\n styleClass=\"w-full sm:w-auto\"\n />\n\n <mt-button\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\n [loading]=\"isAddingRule() || isUpdatingRule()\"\n [disabled]=\"isAddingRule() || isUpdatingRule()\"\n (click)=\"onSubmit()\"\n styleClass=\"w-full sm:w-auto\"\n />\n </div>\n</ng-container>\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 { 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 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 {\r\n label: this.translocoService.translate('governance.scope-level'),\r\n value: 'Level',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.scope-module'),\r\n value: 'Module',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.scope-phase-gate',\r\n ),\r\n value: 'PhaseGate',\r\n },\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 {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleExists',\r\n ),\r\n value: 'ModuleExists',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleDoesNotExist',\r\n ),\r\n value: 'ModuleDoesNotExist',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleMaxCount',\r\n ),\r\n value: 'ModuleMaxCount',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleMinCount',\r\n ),\r\n value: 'ModuleMinCount',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.FieldRequired',\r\n ),\r\n value: 'FieldRequired',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.FieldValue',\r\n ),\r\n value: 'FieldValue',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.PhaseGateModuleRequired',\r\n ),\r\n value: 'PhaseGateModuleRequired',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.NoActiveRequest',\r\n ),\r\n value: 'NoActiveRequest',\r\n },\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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"}