{"version":3,"file":"alfresco-aca-content-folder-rules.mjs","sources":["../../../../projects/aca-content/folder-rules/src/folder-rules.rules.ts","../../../../projects/aca-content/folder-rules/src/services/folder-rules.service.ts","../../../../projects/aca-content/folder-rules/src/rule-details/validators/rule-composite-condition.validator.ts","../../../../projects/aca-content/folder-rules/src/model/rule-action.model.ts","../../../../projects/aca-content/folder-rules/src/rule-details/validators/rule-actions.validator.ts","../../../../projects/aca-content/folder-rules/src/rule-details/triggers/rule-triggers.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/triggers/rule-triggers.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-details/conditions/rule-condition-fields.ts","../../../../projects/aca-content/folder-rules/src/rule-details/conditions/rule-condition-comparators.ts","../../../../projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/conditions/rule-simple-condition.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-details/conditions/rule-composite-condition.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/conditions/rule-composite-condition.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-details/actions/rule-action.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/actions/rule-action.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-details/actions/rule-action-list.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/actions/rule-action-list.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-details/options/rule-options.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/options/rule-options.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-details/rule-details.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/rule-details.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-details/edit-rule-dialog.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-details/edit-rule-dialog.ui-component.html","../../../../projects/aca-content/folder-rules/src/services/actions.service.ts","../../../../projects/aca-content/folder-rules/src/services/folder-rule-sets.service.ts","../../../../projects/aca-content/folder-rules/src/rule-list/rule-list-item/rule-list-item.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-list/rule-list-item/rule-list-item.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-set-picker/rule-set-picker.smart-component.ts","../../../../projects/aca-content/folder-rules/src/rule-set-picker/rule-set-picker.smart-component.html","../../../../projects/aca-content/folder-rules/src/rule-list/rule-list-grouping/rule-list-grouping.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-list/rule-list-grouping/rule-list-grouping.ui-component.html","../../../../projects/aca-content/folder-rules/src/rule-list/rule-list/rule-list.ui-component.ts","../../../../projects/aca-content/folder-rules/src/rule-list/rule-list/rule-list.ui-component.html","../../../../projects/aca-content/folder-rules/src/manage-rules/manage-rules.smart-component.ts","../../../../projects/aca-content/folder-rules/src/manage-rules/manage-rules.smart-component.html","../../../../projects/aca-content/folder-rules/src/folder-rules.module.ts","../../../../projects/aca-content/folder-rules/src/public-api.ts","../../../../projects/aca-content/folder-rules/src/alfresco-aca-content-folder-rules.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AcaRuleContext } from '@alfresco/aca-shared/rules';\n\nexport const isFolderRulesEnabled = (context: AcaRuleContext) => context.appConfig.get<boolean>('plugins.folderRules', false);\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { BehaviorSubject, from, Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { Rule, RuleForForm, RuleOptions, RuleSettings } from '../model/rule.model';\nimport { RuleCompositeCondition } from '../model/rule-composite-condition.model';\nimport { RuleSimpleCondition } from '../model/rule-simple-condition.model';\nimport { RuleSet } from '../model/rule-set.model';\nimport { NotificationService } from '@alfresco/adf-core';\n\ninterface GetRulesResult {\n  rules: Rule[];\n  hasMoreRules: boolean;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FolderRulesService {\n  public static readonly MAX_RULES_PER_GET = 100;\n\n  public static get emptyCompositeCondition(): RuleCompositeCondition {\n    return {\n      inverted: false,\n      booleanMode: 'and',\n      compositeConditions: [],\n      simpleConditions: []\n    };\n  }\n\n  public static get emptyRuleOptions(): RuleOptions {\n    return {\n      isEnabled: true,\n      isInheritable: false,\n      isAsynchronous: false,\n      errorScript: ''\n    };\n  }\n\n  public static get emptyRule(): Rule {\n    return {\n      id: '',\n      name: '',\n      description: '',\n      isShared: false,\n      triggers: ['inbound'],\n      conditions: FolderRulesService.emptyCompositeCondition,\n      actions: [],\n      ...FolderRulesService.emptyRuleOptions\n    };\n  }\n\n  public static get emptyRuleForForm(): RuleForForm {\n    const value = {\n      ...FolderRulesService.emptyRule,\n      options: FolderRulesService.emptyRuleOptions\n    };\n    Object.keys(value.options).forEach((key: string) => {\n      delete value[key];\n    });\n    return value;\n  }\n\n  private selectedRuleSource = new BehaviorSubject<Rule>(null);\n  private deletedRuleIdSource = new BehaviorSubject<string>(null);\n\n  selectedRule$ = this.selectedRuleSource.asObservable();\n  deletedRuleId$: Observable<string> = this.deletedRuleIdSource.asObservable();\n\n  constructor(\n    private readonly apiService: AlfrescoApiService,\n    private readonly notificationService: NotificationService\n  ) {}\n\n  private callApi(path: string, httpMethod: string, body: object = {}): Promise<any> {\n    // APIs used by this service are still private and not yet available for public use\n    const params = [{}, {}, {}, {}, body, ['application/json'], ['application/json']];\n    return this.apiService.getInstance().contentPrivateClient.callApi(path, httpMethod, ...params);\n  }\n\n  getRules(owningFolderId: string, ruleSetId: string, skipCount = 0): Observable<GetRulesResult> {\n    return from(\n      this.callApi(\n        `/nodes/${owningFolderId}/rule-sets/${ruleSetId}/rules?skipCount=${skipCount}&maxItems=${FolderRulesService.MAX_RULES_PER_GET}`,\n        'GET'\n      )\n    ).pipe(\n      map((res) => ({\n        rules: this.formatRules(res),\n        hasMoreRules: !!res?.list?.pagination?.hasMoreItems\n      }))\n    );\n  }\n\n  loadRules(ruleSet: RuleSet, skipCount = ruleSet.rules.length, selectRule: 'first' | 'last' | Rule = null) {\n    if (ruleSet && !ruleSet.loadingRules) {\n      ruleSet.loadingRules = true;\n      this.getRules(ruleSet.owningFolder.id, ruleSet.id, skipCount)\n        .pipe(\n          finalize(() => {\n            ruleSet.loadingRules = false;\n          })\n        )\n        .subscribe((res: GetRulesResult) => {\n          ruleSet.hasMoreRules = res.hasMoreRules;\n          ruleSet.rules.splice(skipCount);\n          ruleSet.rules.push(...res.rules);\n          this.selectRuleInRuleSet(ruleSet, selectRule);\n        });\n    }\n  }\n\n  async createRule(nodeId: string, rule: Partial<Rule>, ruleSetId: string = '-default-'): Promise<Rule> {\n    const response = await this.callApi(`/nodes/${nodeId}/rule-sets/${ruleSetId}/rules`, 'POST', { ...rule });\n    return this.formatRule(response.entry);\n  }\n\n  async updateRule(nodeId: string, ruleId: string, rule: Rule, ruleSetId: string = '-default-'): Promise<Rule> {\n    const response = await this.callApi(`/nodes/${nodeId}/rule-sets/${ruleSetId}/rules/${ruleId}`, 'PUT', { ...rule }).catch((error) => {\n      this.notificationService.showError(JSON.parse(error.message).error.briefSummary);\n      rule.isEnabled = !rule.isEnabled;\n      return rule;\n    });\n    return this.formatRule(response.entry ?? response);\n  }\n\n  deleteRule(nodeId: string, ruleId: string, ruleSetId: string = '-default-') {\n    from(this.callApi(`/nodes/${nodeId}/rule-sets/${ruleSetId}/rules/${ruleId}`, 'DELETE')).subscribe(\n      () => {\n        this.deletedRuleIdSource.next(ruleId);\n      },\n      (error) => {\n        this.deletedRuleIdSource.next(error);\n      }\n    );\n  }\n\n  async getRuleSettings(nodeId: string, key: string = '-isInheritanceEnabled-'): Promise<RuleSettings> {\n    const response = await this.callApi(`/nodes/${nodeId}/rule-settings/${key}`, 'GET');\n    return response.entry;\n  }\n\n  async updateRuleSettings(nodeId: string, key: string, body: RuleSettings): Promise<RuleSettings> {\n    const response = await this.callApi(`/nodes/${nodeId}/rule-settings/${key}`, 'PUT', { ...body });\n    return response.entry;\n  }\n\n  private formatRules(res): Rule[] {\n    return [...res.list.entries.map((entry) => this.formatRule(entry.entry))];\n  }\n\n  private formatRule(obj): Rule {\n    return {\n      id: obj.id,\n      name: obj.name ?? FolderRulesService.emptyRule.name,\n      description: obj.description ?? FolderRulesService.emptyRule.description,\n      isEnabled: obj.isEnabled ?? FolderRulesService.emptyRule.isEnabled,\n      isInheritable: obj.isInheritable ?? FolderRulesService.emptyRule.isInheritable,\n      isAsynchronous: obj.isAsynchronous ?? FolderRulesService.emptyRule.isAsynchronous,\n      errorScript: obj.errorScript ?? FolderRulesService.emptyRule.errorScript,\n      isShared: obj.isShared ?? FolderRulesService.emptyRule.isShared,\n      triggers: obj.triggers ?? FolderRulesService.emptyRule.triggers,\n      conditions: this.formatCompositeCondition(obj.conditions ?? { ...FolderRulesService.emptyRule.conditions }),\n      actions: obj.actions ?? FolderRulesService.emptyRule.actions\n    };\n  }\n\n  private formatCompositeCondition(obj): RuleCompositeCondition {\n    return {\n      inverted: obj.inverted ?? false,\n      booleanMode: obj.booleanMode ?? 'and',\n      compositeConditions: (obj.compositeConditions || []).map((condition) => this.formatCompositeCondition(condition)),\n      simpleConditions: this.parseSimpleCondition(obj.simpleConditions)\n    };\n  }\n\n  private parseSimpleCondition(arr) {\n    if (arr) {\n      if (arr.every((element) => element === null)) {\n        return [];\n      }\n      return arr.map((condition) => this.formatSimpleCondition(condition));\n    } else {\n      return [];\n    }\n  }\n\n  private formatSimpleCondition(obj): RuleSimpleCondition {\n    return {\n      field: obj.field || 'cm:name',\n      comparator: obj.comparator || 'equals',\n      parameter: obj.parameter || ''\n    };\n  }\n\n  selectRule(rule: Rule) {\n    this.selectedRuleSource.next(rule);\n  }\n\n  selectRuleInRuleSet(ruleSet: RuleSet, selectRule: 'first' | 'last' | Rule = null) {\n    if (selectRule === 'first') {\n      this.selectRule(ruleSet.rules[0]);\n    } else if (selectRule === 'last') {\n      this.selectRule(ruleSet.rules[ruleSet.rules.length - 1]);\n    } else if (selectRule) {\n      this.selectRule(selectRule);\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { RuleCompositeCondition } from '../../model/rule-composite-condition.model';\nimport { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nconst isCompositeConditionValid = (value: RuleCompositeCondition, isRootCondition = true): boolean => {\n  if (value.compositeConditions.length > 0) {\n    return value.compositeConditions.reduce(\n      (arrayValid: boolean, nestedCondition: RuleCompositeCondition) => arrayValid && isCompositeConditionValid(nestedCondition, false),\n      true\n    );\n  }\n  return !!value.simpleConditions.length || isRootCondition;\n};\n\nexport const ruleCompositeConditionValidator =\n  (): ValidatorFn =>\n  (control: AbstractControl): ValidationErrors | null =>\n    isCompositeConditionValid(control.value) ? null : { ruleCompositeConditionInvalid: true };\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface RuleAction {\n  actionDefinitionId: string;\n  params?: { [key: string]: unknown };\n}\n\nexport const isRuleAction = (obj): obj is RuleAction =>\n  typeof obj === 'object' && typeof obj.actionDefinitionId === 'string' && (obj.params === undefined || typeof obj.params === 'object');\nexport const isRuleActions = (obj): obj is RuleAction[] =>\n  typeof obj === 'object' && obj instanceof Array && obj.reduce((acc, curr) => acc && isRuleAction(curr), true);\n\nexport interface ActionDefinitionTransformed {\n  id: string;\n  name: string;\n  description: string;\n  title: string;\n  applicableTypes: string[];\n  trackStatus: boolean;\n  parameterDefinitions: ActionParameterDefinitionTransformed[];\n}\n\nexport interface ActionParameterDefinitionTransformed {\n  name: string;\n  type: string;\n  multiValued: boolean;\n  mandatory: boolean;\n  displayLabel: string;\n  parameterConstraintName?: string;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport {\n  ActionDefinitionTransformed,\n  ActionParameterDefinitionTransformed,\n  isRuleAction,\n  isRuleActions,\n  RuleAction\n} from '../../model/rule-action.model';\n\nconst isRuleActionValid = (value: unknown, actionDefinitions: ActionDefinitionTransformed[]): boolean => {\n  const actionDefinition = isRuleAction(value)\n    ? actionDefinitions.find((actionDef: ActionDefinitionTransformed) => value.actionDefinitionId === actionDef.id)\n    : undefined;\n  return (\n    isRuleAction(value) &&\n    actionDefinition?.parameterDefinitions.reduce(\n      (isValid: boolean, paramDef: ActionParameterDefinitionTransformed) => isValid && (!paramDef.mandatory || !!value.params[paramDef.name]),\n      true\n    )\n  );\n};\n\nconst isRuleActionsValid = (value: unknown, actionDefinitions: ActionDefinitionTransformed[]): boolean =>\n  isRuleActions(value) &&\n  value.reduce((isValid: boolean, currentAction: RuleAction) => isValid && isRuleActionValid(currentAction, actionDefinitions), true);\n\nexport const ruleActionValidator =\n  (actionDefinitions: ActionDefinitionTransformed[]): ValidatorFn =>\n  (control: AbstractControl): ValidationErrors | null =>\n    isRuleActionValid(control.value, actionDefinitions) ? null : { ruleActionInvalid: true };\n\nexport const ruleActionsValidator =\n  (actionDefinitions: ActionDefinitionTransformed[]): ValidatorFn =>\n  (control: AbstractControl): ValidationErrors | null =>\n    isRuleActionsValid(control.value, actionDefinitions) ? null : { ruleActionsInvalid: true };\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { RuleTrigger } from '../../model/rule.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatCheckboxModule],\n  selector: 'aca-rule-triggers',\n  templateUrl: './rule-triggers.ui-component.html',\n  styleUrls: ['./rule-triggers.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-triggers' },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => RuleTriggersUiComponent)\n    }\n  ]\n})\nexport class RuleTriggersUiComponent implements ControlValueAccessor {\n  @Input() ariaLabelledBy = 'rule-triggers-label';\n\n  readonly triggerOptions: RuleTrigger[] = ['inbound', 'update', 'outbound'];\n\n  public selectedTriggers: { [key: string]: boolean } = {\n    inbound: true\n  };\n\n  value: RuleTrigger[] = ['inbound'];\n  readOnly = false;\n\n  onChange: (triggers: RuleTrigger[]) => void = () => undefined;\n  onTouch: () => void = () => undefined;\n\n  writeValue(triggers: RuleTrigger[]) {\n    this.value = triggers;\n    this.selectedTriggers = {};\n    this.value.forEach((trigger) => (this.selectedTriggers[trigger] = true));\n  }\n\n  registerOnChange(fn: () => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouch = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.readOnly = isDisabled;\n  }\n\n  onTriggerChange(trigger: RuleTrigger, checked: boolean) {\n    if (checked) {\n      this.value.push(trigger);\n    } else {\n      this.value.splice(\n        this.value.findIndex((t) => t === trigger),\n        1\n      );\n    }\n    this.selectedTriggers[trigger] = checked;\n    this.onTouch();\n    this.onChange([...this.value]);\n  }\n}\n","<fieldset [attr.aria-labelledby]=\"ariaLabelledBy\">\n  <div *ngFor=\"let trigger of triggerOptions\">\n    <ng-container *ngIf=\"readOnly; else checkbox\">\n      <div\n        *ngIf=\"selectedTriggers[trigger]\"\n        [attr.data-automation-id]=\"'rule-trigger-value-' + trigger | lowercase\">\n        {{ 'ACA_FOLDER_RULES.RULE_DETAILS.TRIGGERS.' + trigger | uppercase | translate }}\n      </div>\n    </ng-container>\n\n    <ng-template #checkbox>\n      <mat-checkbox\n        [attr.data-automation-id]=\"'rule-trigger-checkbox-' + trigger | lowercase\"\n        [checked]=\"selectedTriggers[trigger]\"\n        (change)=\"onTriggerChange(trigger, $event.checked)\">\n        {{ 'ACA_FOLDER_RULES.RULE_DETAILS.TRIGGERS.' + trigger | uppercase | translate }}\n      </mat-checkbox>\n    </ng-template>\n  </div>\n</fieldset>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport type RuleConditionFieldType = 'string' | 'number' | 'date' | 'type' | 'special' | 'mimeType' | 'auto-complete';\n\nexport interface RuleConditionField {\n  name: string;\n  label: string;\n  type: RuleConditionFieldType;\n}\n\nexport const comparatorHiddenForConditionFieldType: string[] = ['special', 'mimeType', 'auto-complete'];\n\nexport const ruleConditionFields: RuleConditionField[] = [\n  {\n    name: 'cm:name',\n    label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.NAME',\n    type: 'string'\n  },\n  {\n    name: 'size',\n    label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.SIZE',\n    type: 'number'\n  },\n  {\n    name: 'mimetype',\n    label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.MIMETYPE',\n    type: 'mimeType'\n  },\n  {\n    name: 'encoding',\n    label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.ENCODING',\n    type: 'special'\n  },\n  {\n    name: 'category',\n    label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.HAS_CATEGORY',\n    type: 'auto-complete'\n  },\n  {\n    name: 'tag',\n    label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.HAS_TAG',\n    type: 'special'\n  },\n  {\n    name: 'aspect',\n    label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.HAS_ASPECT',\n    type: 'special'\n  }\n];\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface RuleConditionComparator {\n  name: string;\n  labels: {\n    [key: string]: string;\n  };\n}\n\nexport const ruleConditionComparators: RuleConditionComparator[] = [\n  {\n    name: 'equals',\n    labels: {\n      string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.EQUALS',\n      number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.EQUALS',\n      date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ON',\n      special: ''\n    }\n  },\n  {\n    name: 'contains',\n    labels: {\n      string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.CONTAINS'\n    }\n  },\n  {\n    name: 'begins',\n    labels: {\n      string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.STARTS_WITH'\n    }\n  },\n  {\n    name: 'ends',\n    labels: {\n      string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ENDS_WITH'\n    }\n  },\n  {\n    name: 'greater_than',\n    labels: {\n      number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.GREATER_THAN',\n      date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.AFTER'\n    }\n  },\n  {\n    name: 'less_than',\n    labels: {\n      number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.LESS_THAN',\n      date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.BEFORE'\n    }\n  },\n  {\n    name: 'greater_than_equal',\n    labels: {\n      number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.GREATER_THAN_OR_EQUAL',\n      date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ON_OR_AFTER'\n    }\n  },\n  {\n    name: 'less_than_equal',\n    labels: {\n      number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.LESS_THAN_OR_EQUAL',\n      date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ON_OR_BEFORE'\n    }\n  },\n  {\n    name: 'instance_of',\n    labels: {\n      type: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.INSTANCE_OF'\n    }\n  }\n];\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, forwardRef, inject, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { RuleSimpleCondition } from '../../model/rule-simple-condition.model';\nimport { comparatorHiddenForConditionFieldType, RuleConditionField, ruleConditionFields } from './rule-condition-fields';\nimport { RuleConditionComparator, ruleConditionComparators } from './rule-condition-comparators';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { CategoryService, TagService } from '@alfresco/adf-content-services';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { debounceTime, distinctUntilChanged, first } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { CategoryEntry } from '@alfresco/js-api';\nimport { AlfrescoMimeType, AppSettingsService } from '@alfresco/aca-shared';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ninterface AutoCompleteOption {\n  displayLabel: string;\n  value: string;\n}\n\nconst AUTOCOMPLETE_OPTIONS_DEBOUNCE_TIME = 500;\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatSelectModule,\n    MatInputModule,\n    MatAutocompleteModule,\n    MatOptionModule,\n    MatProgressSpinnerModule\n  ],\n  selector: 'aca-rule-simple-condition',\n  templateUrl: './rule-simple-condition.ui-component.html',\n  styleUrls: ['./rule-simple-condition.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-simple-condition' },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => RuleSimpleConditionUiComponent)\n    }\n  ]\n})\nexport class RuleSimpleConditionUiComponent implements OnInit, ControlValueAccessor, OnChanges {\n  private appSettings = inject(AppSettingsService);\n  private categoryService = inject(CategoryService);\n  private tagService = inject(TagService);\n\n  form = new FormGroup({\n    field: new FormControl('cm:name'),\n    comparator: new FormControl('equals'),\n    parameter: new FormControl()\n  });\n\n  mimeTypes: AlfrescoMimeType[] = [];\n  autoCompleteOptions: AutoCompleteOption[] = [];\n  showLoadingSpinner: boolean;\n\n  @Input() readOnly = false;\n\n  private autoCompleteOptionsSubscription: Subscription;\n\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly disabledTags = !this.tagService.areTagsEnabled();\n  private readonly disabledCategories = !this.categoryService.areCategoriesEnabled();\n\n  readonly fields = ruleConditionFields.filter(\n    (condition) => !((this.disabledTags && condition.name === 'tag') || (this.disabledCategories && condition.name === 'category'))\n  );\n\n  constructor() {\n    this.mimeTypes = this.appSettings.mimeTypes;\n  }\n\n  get isSelectedFieldKnown(): boolean {\n    const selectedFieldName = this.form.get('field').value;\n    return this.fields.findIndex((field: RuleConditionField) => selectedFieldName === field.name) > -1;\n  }\n  get selectedField(): RuleConditionField {\n    const selectedFieldName = this.form.get('field').value;\n    if (!this.isSelectedFieldKnown) {\n      return {\n        name: selectedFieldName,\n        label: selectedFieldName,\n        type: 'special'\n      };\n    }\n    return this.fields.find((field) => field.name === selectedFieldName);\n  }\n\n  get selectedFieldComparators(): RuleConditionComparator[] {\n    return ruleConditionComparators.filter((comparator) => Object.keys(comparator.labels).includes(this.selectedField.type));\n  }\n  get isComparatorHidden(): boolean {\n    return comparatorHiddenForConditionFieldType.includes(this.selectedField?.type);\n  }\n\n  get comparatorControl(): AbstractControl {\n    return this.form.get('comparator');\n  }\n\n  private get parameterControl(): AbstractControl<string> {\n    return this.form.get('parameter');\n  }\n\n  onChange: (condition: RuleSimpleCondition) => void = () => undefined;\n  onTouch: () => void = () => undefined;\n\n  writeValue(value: RuleSimpleCondition) {\n    this.form.setValue(value);\n    if (value?.field === 'category') {\n      this.showLoadingSpinner = true;\n      this.categoryService\n        .getCategory(value.parameter, { include: ['path'] })\n        .pipe(first())\n        .subscribe((category: CategoryEntry) => {\n          this.showLoadingSpinner = false;\n          const option = this.buildAutocompleteOptionFromCategory(category.entry.id, category.entry.path, category.entry.name);\n          this.autoCompleteOptions.push(option);\n          this.parameterControl.setValue(option.value);\n        });\n    }\n  }\n\n  registerOnChange(fn: () => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouch = fn;\n  }\n\n  onChangeField() {\n    if (!this.selectedFieldComparators.find((comparator) => comparator.name === this.comparatorControl.value)) {\n      this.comparatorControl.setValue('equals');\n    }\n    if (!this.parameterControl.value && this.selectedField?.type === 'mimeType') {\n      this.parameterControl.setValue(this.mimeTypes[0]?.value);\n    } else if (this.parameterControl.value) {\n      this.parameterControl.setValue('');\n    }\n  }\n\n  ngOnInit() {\n    this.form.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value: RuleSimpleCondition) => {\n      this.onChange(value);\n      this.onTouch();\n    });\n\n    this.form\n      .get('field')\n      .valueChanges.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n      .subscribe((field: string) => {\n        if (field === 'category') {\n          this.autoCompleteOptionsSubscription = this.form\n            .get('parameter')\n            .valueChanges.pipe(distinctUntilChanged(), debounceTime(AUTOCOMPLETE_OPTIONS_DEBOUNCE_TIME), takeUntilDestroyed(this.destroyRef))\n            .subscribe((categoryName) => {\n              this.getCategories(categoryName);\n            });\n          this.parameterControl.setValue('');\n        } else {\n          this.autoCompleteOptionsSubscription?.unsubscribe();\n        }\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const readOnly = changes['readOnly']?.currentValue;\n\n    if (readOnly !== undefined && readOnly !== null) {\n      if (this.readOnly) {\n        this.readOnly = true;\n        this.form.disable();\n      } else {\n        this.readOnly = false;\n        this.form.enable();\n      }\n    }\n  }\n\n  private getCategories(categoryName: string) {\n    this.showLoadingSpinner = true;\n    this.categoryService\n      .searchCategories(categoryName)\n      .pipe(first())\n      .subscribe((existingCategoriesResult) => {\n        this.showLoadingSpinner = false;\n        const options: AutoCompleteOption[] = existingCategoriesResult?.list?.entries?.map((rowEntry) =>\n          this.buildAutocompleteOptionFromCategory(rowEntry.entry.id, rowEntry.entry.path.name, rowEntry.entry.name)\n        );\n        if (options.length > 0) {\n          this.autoCompleteOptions = this.sortAutoCompleteOptions(options);\n        }\n      });\n  }\n\n  private sortAutoCompleteOptions(autoCompleteOptions: AutoCompleteOption[]): AutoCompleteOption[] {\n    return autoCompleteOptions.sort((option1, option2) => option1.displayLabel.localeCompare(option2.displayLabel));\n  }\n\n  autoCompleteDisplayFunction = (optionValue: string): string =>\n    optionValue && this.autoCompleteOptions ? this.autoCompleteOptions.find((option) => option.value === optionValue)?.displayLabel : optionValue;\n\n  autoSelectValidOption() {\n    const currentValue = this.parameterControl.value;\n    const isValidValueSelected = !!this.autoCompleteOptions?.find((option) => option.value === currentValue);\n    if (!isValidValueSelected) {\n      this.parameterControl.setValue(this.autoCompleteOptions?.[0].value);\n    }\n  }\n\n  buildAutocompleteOptionFromCategory(categoryId: string, categoryPath: string, categoryName: string): AutoCompleteOption {\n    const path = categoryPath.split('/').splice(3).join('/');\n    return {\n      value: categoryId,\n      displayLabel: path ? `${path}/${categoryName}` : categoryName\n    };\n  }\n}\n","<form class=\"aca-rule-simple-condition__form\" [formGroup]=\"form\">\n  <mat-form-field class=\"aca-rule-simple-condition__form__field-input\">\n    <mat-label>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.FIELD' | translate }}</mat-label>\n    <mat-select formControlName=\"field\" data-automation-id=\"field-select\"\n      (selectionChange)=\"onChangeField()\">\n      <mat-option *ngIf=\"!isSelectedFieldKnown\" [value]=\"selectedField.name\" data-automation-id=\"unknown-field-option\">\n        {{ selectedField.label }}\n      </mat-option>\n      <mat-option *ngFor=\"let field of fields\" [value]=\"field.name\">\n        {{ field.label | translate }}\n      </mat-option>\n    </mat-select>\n  </mat-form-field>\n\n  <mat-form-field class=\"aca-rule-simple-condition__form__field-input aca-rule-simple-condition__form__comparator-input\"\n                  [class]=\"{ 'aca-hidden': isComparatorHidden }\" data-automation-id=\"comparator-form-field\">\n    <mat-label>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.COMPARATOR' | translate }}</mat-label>\n    <mat-select formControlName=\"comparator\" data-automation-id=\"comparator-select\">\n      <mat-option\n        *ngFor=\"let comparator of selectedFieldComparators\"\n        [value]=\"comparator.name\">\n        {{ comparator.labels[this.selectedField?.type || 'equals'] | translate }}\n      </mat-option>\n    </mat-select>\n  </mat-form-field>\n\n  <mat-form-field class=\"aca-rule-simple-condition__form__field-input aca-rule-simple-condition__form__parameter-input\"\n                  [ngSwitch]=\"selectedField.type\">\n    <mat-label>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.VALUE' | translate }}</mat-label>\n    <mat-select formControlName=\"parameter\" data-automation-id=\"simple-condition-value-select\" *ngSwitchCase=\"'mimeType'\">\n      <mat-option *ngFor=\"let mimeType of mimeTypes\"\n        [value]=\"mimeType.value\">\n        {{ mimeType.label }}\n      </mat-option>\n    </mat-select>\n    <ng-template [ngSwitchCase]=\"'auto-complete'\">\n        <input\n          matInput\n          [matAutocomplete]=\"auto\"\n          formControlName=\"parameter\"\n          (focusout)=\"autoSelectValidOption()\"\n          data-automation-id=\"auto-complete-input-field\"\n        />\n        <mat-autocomplete\n          #auto=\"matAutocomplete\"\n          data-automation-id=\"folder-rule-auto-complete\"\n          [autoActiveFirstOption]=\"true\"\n          [autoSelectActiveOption]=\"true\"\n          [displayWith]=\"autoCompleteDisplayFunction\">\n            <mat-option disabled *ngIf=\"showLoadingSpinner; else optionList\">\n              <span class=\"aca-rule-simple-condition__auto-complete-loading-spinner\">\n                <mat-progress-spinner\n                  color=\"primary\"\n                  mode=\"indeterminate\"\n                  data-automation-id=\"auto-complete-loading-spinner\"\n                  [diameter]=\"25\" />\n              </span>\n            </mat-option>\n          <ng-template #optionList>\n            <ng-container *ngIf=\"autoCompleteOptions?.length > 0; else noOptionsTemplate\">\n              <mat-option\n                *ngFor=\"let option of autoCompleteOptions\"\n                [value]=\"option.value\">\n                {{ option.displayLabel }}\n              </mat-option>\n            </ng-container>\n            <ng-template #noOptionsTemplate>\n              <mat-option disabled>\n                {{ 'ACA_FOLDER_RULES.AUTOCOMPLETE.NO_OPTIONS_FOUND' | translate }}\n              </mat-option>\n            </ng-template>\n          </ng-template>\n        </mat-autocomplete>\n    </ng-template>\n    <ng-template ngSwitchDefault>\n      <input matInput placeholder=\"{{ 'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.VALUE' | translate }}\" type=\"text\" formControlName=\"parameter\" data-automation-id=\"value-input\">\n    </ng-template>\n  </mat-form-field>\n</form>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n  AfterViewInit,\n  Component,\n  DestroyRef,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  inject,\n  Input,\n  OnChanges,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RuleCompositeCondition } from '../../model/rule-composite-condition.model';\nimport { ControlValueAccessor, FormArray, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { RuleSimpleCondition } from '../../model/rule-simple-condition.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RuleSimpleConditionUiComponent } from './rule-simple-condition.ui-component';\nimport { FocusTrapFactory } from '@angular/cdk/a11y';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatSelectModule,\n    MatButtonModule,\n    MatMenuModule,\n    MatIconModule,\n    RuleSimpleConditionUiComponent\n  ],\n  selector: 'aca-rule-composite-condition',\n  templateUrl: './rule-composite-condition.ui-component.html',\n  styleUrls: ['./rule-composite-condition.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-composite-condition' },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => RuleCompositeConditionUiComponent)\n    }\n  ]\n})\nexport class RuleCompositeConditionUiComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n  @HostBinding('class.aca-secondaryBackground')\n  @Input()\n  secondaryBackground = false;\n\n  @HostBinding('class.aca-childCompositeCondition')\n  @Input()\n  childCondition = false;\n\n  @Input()\n  readOnly = false;\n\n  @ViewChildren('conditionRow', { read: ElementRef })\n  private readonly conditionRows: QueryList<ElementRef<HTMLElement>>;\n\n  readonly isOrImplemented = false;\n\n  form = new FormGroup({\n    inverted: new FormControl(),\n    booleanMode: new FormControl({ value: 'and', disabled: !this.isOrImplemented || this.readOnly }),\n    compositeConditions: new FormArray([]),\n    simpleConditions: new FormArray([])\n  });\n\n  public invertedControl = this.form.get('inverted') as FormControl;\n  public booleanModeControl = this.form.get('booleanMode') as FormControl;\n\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly focusTrapFactory = inject(FocusTrapFactory);\n\n  constructor() {\n    this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe((value: RuleCompositeCondition) => {\n      this.onChange(value);\n      this.onTouch();\n    });\n  }\n\n  get compositeConditionsFormArray(): FormArray {\n    return this.form.get('compositeConditions') as FormArray;\n  }\n\n  get simpleConditionsFormArray(): FormArray {\n    return this.form.get('simpleConditions') as FormArray;\n  }\n\n  get conditionFormControls(): FormControl[] {\n    return [...(this.compositeConditionsFormArray.controls as FormControl[]), ...(this.simpleConditionsFormArray.controls as FormControl[])];\n  }\n\n  get hasNoConditions(): boolean {\n    return this.conditionFormControls.length === 0;\n  }\n\n  onChange: (condition: RuleCompositeCondition) => void = () => undefined;\n  onTouch: () => void = () => undefined;\n\n  ngAfterViewInit(): void {\n    this.conditionRows.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.focusLastCondition();\n    });\n  }\n\n  writeValue(value: RuleCompositeCondition) {\n    this.form.get('inverted').setValue(value.inverted);\n    this.form.get('booleanMode').setValue(value.booleanMode);\n    this.form.setControl('compositeConditions', new FormArray(value.compositeConditions.map((condition) => new FormControl(condition))));\n    this.form.setControl('simpleConditions', new FormArray(value.simpleConditions.map((condition) => new FormControl(condition))));\n  }\n\n  registerOnChange(fn: () => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouch = fn;\n  }\n\n  isFormControlSimpleCondition(control: FormControl): boolean {\n    // eslint-disable-next-line no-prototype-builtins\n    return control.value.hasOwnProperty('field');\n  }\n\n  removeCondition(control: FormControl) {\n    const formArray = this.isFormControlSimpleCondition(control) ? this.simpleConditionsFormArray : this.compositeConditionsFormArray;\n    const index = (formArray.value as FormControl[]).indexOf(control.value);\n    formArray.removeAt(index);\n  }\n\n  addSimpleCondition() {\n    const newCondition: RuleSimpleCondition = {\n      field: 'cm:name',\n      comparator: 'equals',\n      parameter: ''\n    };\n    this.simpleConditionsFormArray.push(new FormControl(newCondition));\n  }\n\n  addCompositeCondition() {\n    const newCondition: RuleCompositeCondition = {\n      inverted: false,\n      booleanMode: 'and',\n      compositeConditions: [],\n      simpleConditions: []\n    };\n    this.compositeConditionsFormArray.push(new FormControl(newCondition));\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const readOnly = changes['readOnly']?.currentValue;\n\n    if (readOnly !== undefined && readOnly !== null) {\n      if (this.readOnly) {\n        this.readOnly = true;\n        this.form.disable();\n      } else {\n        this.readOnly = false;\n        this.form.enable();\n      }\n    }\n  }\n\n  private focusLastCondition(): void {\n    const rows = this.conditionRows.toArray();\n    const lastRow = rows[rows.length - 1]?.nativeElement;\n\n    if (!lastRow) {\n      return;\n    }\n\n    setTimeout(() => {\n      const focusTrap = this.focusTrapFactory.create(lastRow);\n      focusTrap.focusFirstTabbableElement();\n      focusTrap.destroy();\n    });\n  }\n}\n","<form class=\"aca-rule-composite-condition__form\" [formGroup]=\"form\">\n  <div *ngIf=\"hasNoConditions\" class=\"aca-rule-composite-condition__form__no-conditions\" data-automation-id=\"no-conditions\">\n    {{ 'ACA_FOLDER_RULES.RULE_DETAILS.' + (childCondition ? 'NO_CONDITIONS_IN_GROUP' : 'NO_CONDITIONS') | translate }}\n  </div>\n  <div *ngIf=\"!hasNoConditions\" class=\"aca-rule-composite-condition__form__no-conditions\" data-automation-id=\"label-with-conditions\">\n    <span id=\"conditions-group-label-{{ childCondition ? 'nested' : 'main' }}\">\n      {{ (childCondition ? 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.GROUP_CONDITIONS' : 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.CONDITIONS') | translate }}\n    </span>\n  </div>\n\n  <fieldset\n    #conditionRow\n    [attr.aria-labelledby]=\"'conditions-group-label-' + (childCondition ? 'nested' : 'main')\"\n    class=\"aca-rule-composite-condition__form__row\"\n    *ngFor=\"let control of conditionFormControls; let i = index\">\n    <mat-form-field *ngIf=\"i === 0\">\n      <mat-label>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.LOGIC_OPERATOR' | translate }}</mat-label>\n      <mat-select\n        [formControl]=\"invertedControl\"\n        [disabled]=\"readOnly\">\n        <mat-option [value]=\"false\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.IF' | translate }}</mat-option>\n        <mat-option [value]=\"true\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.NOT_IF' | translate }}</mat-option>\n      </mat-select>\n    </mat-form-field>\n\n    <mat-form-field *ngIf=\"i > 0\" class=\"aca-rule-composite-condition__boolean-mode-control\">\n      <mat-select\n        [formControl]=\"booleanModeControl\">\n        <mat-option value=\"and\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.AND' | translate }}</mat-option>\n        <mat-option value=\"or\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.OR' | translate }}</mat-option>\n      </mat-select>\n    </mat-form-field>\n\n    <aca-rule-composite-condition\n      *ngIf=\"!isFormControlSimpleCondition(control)\"\n      [secondaryBackground]=\"!secondaryBackground\"\n      [childCondition]=\"true\"\n      [formControl]=\"control\"\n      [readOnly]=\"readOnly\" />\n\n    <aca-rule-simple-condition\n      *ngIf=\"isFormControlSimpleCondition(control)\"\n      [formControl]=\"control\"\n      [readOnly]=\"readOnly\" />\n\n    <button mat-icon-button [matMenuTriggerFor]=\"menu\" *ngIf=\"!readOnly\" data-automation-id=\"condition-actions-button\"\n            [attr.aria-label]=\"'ACA_FOLDER_RULES.EDIT_RULE_DIALOG.OPEN_ACTION_MENU' | translate\">\n      <mat-icon>more_vert</mat-icon>\n    </button>\n\n    <mat-menu #menu=\"matMenu\">\n      <button\n        mat-menu-item\n        [title]=\"'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.REMOVE' | translate\"\n        (click)=\"removeCondition(control)\">\n        <mat-icon>delete</mat-icon>\n        <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.REMOVE' | translate }}</span>\n      </button>\n    </mat-menu>\n  </fieldset>\n\n  <div class=\"aca-rule-composite-condition__form__actions\" *ngIf=\"!readOnly\" data-automation-id=\"add-actions\">\n    <button mat-flat-button (click)=\"addSimpleCondition()\" data-automation-id=\"add-condition-button\">\n      <mat-icon class=\"aca-rule-composite-condition__form__actions-add\">add</mat-icon>\n      <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.ADD_CONDITION' | translate }}</span>\n    </button>\n    <button mat-flat-button (click)=\"addCompositeCondition()\" data-automation-id=\"add-group-button\">\n      <mat-icon class=\"aca-rule-composite-condition__form__actions-add\">add</mat-icon>\n      <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.ADD_GROUP' | translate }}</span>\n    </button>\n  </div>\n</form>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, forwardRef, inject, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ActionDefinitionTransformed, RuleAction } from '../../model/rule-action.model';\nimport {\n  CardViewBoolItemModel,\n  CardViewComponent,\n  CardViewItem,\n  CardViewSelectItemModel,\n  CardViewSelectItemOption,\n  CardViewTextItemModel,\n  CardViewUpdateService,\n  UpdateNotification\n} from '@alfresco/adf-core';\nimport { ActionParameterDefinition, Category, Node, SecurityMark } from '@alfresco/js-api';\nimport { from, of, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ActionParameterConstraint, ConstraintValue } from '../../model/action-parameter-constraint.model';\nimport {\n  CategorySelectorDialogComponent,\n  CategorySelectorDialogOptions,\n  CategoryService,\n  ContentNodeSelectorComponent,\n  ContentNodeSelectorComponentData,\n  NodeAction,\n  SecurityControlsService,\n  TagService\n} from '@alfresco/adf-content-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, ReactiveFormsModule, MatFormFieldModule, MatSelectModule, CardViewComponent],\n  selector: 'aca-rule-action',\n  templateUrl: './rule-action.ui-component.html',\n  styleUrls: ['./rule-action.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-action' },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => RuleActionUiComponent)\n    },\n    CardViewUpdateService\n  ]\n})\nexport class RuleActionUiComponent implements ControlValueAccessor, OnInit, OnChanges {\n  @Input()\n  nodeId = '';\n\n  @Input()\n  actionDefinitions: ActionDefinitionTransformed[];\n\n  @Input()\n  readOnly = false;\n\n  private _parameterConstraints = [];\n  @Input()\n  get parameterConstraints(): ActionParameterConstraint[] {\n    return this._parameterConstraints;\n  }\n\n  set parameterConstraints(value) {\n    this._parameterConstraints = value.map((obj) => ({\n      ...obj,\n      constraints: this.parseConstraintsToSelectOptions(obj.constraints)\n    }));\n  }\n\n  private readonly tagsRelatedPropertiesAndAspects = ['cm:tagscope', 'cm:tagScopeCache', 'cm:taggable'];\n  private readonly categoriesRelatedPropertiesAndAspects = ['cm:categories', 'cm:generalclassifiable'];\n  private readonly paramsToFormatDisplayedValue = ['securityMarkId', 'securityGroupId'];\n\n  isFullWidth = false;\n\n  form = new FormGroup({\n    actionDefinitionId: new FormControl('', Validators.required)\n  });\n\n  cardViewItems: CardViewItem[] = [];\n  parameters: { [key: string]: unknown } = {};\n\n  get selectedActionDefinitionId(): string {\n    return this.form.get('actionDefinitionId').value;\n  }\n\n  get selectedActionDefinition(): ActionDefinitionTransformed {\n    return this.actionDefinitions.find((actionDefinition: ActionDefinitionTransformed) => actionDefinition.id === this.selectedActionDefinitionId);\n  }\n\n  onChange: (action: RuleAction) => void = () => undefined;\n  onTouch: () => void = () => undefined;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  constructor(\n    private cardViewUpdateService: CardViewUpdateService,\n    private dialog: MatDialog,\n    private translate: TranslateService,\n    private tagService: TagService,\n    private categoryService: CategoryService,\n    private securityControlsService: SecurityControlsService\n  ) {}\n\n  writeValue(action: RuleAction) {\n    this.form.setValue({\n      actionDefinitionId: action.actionDefinitionId\n    });\n    this.parameters = {\n      ...this.parameters,\n      ...action.params\n    };\n    this.setCardViewProperties();\n    if (this.parameters?.securityGroupId) {\n      this.loadSecurityMarkOptions();\n    }\n  }\n\n  registerOnChange(fn: (action: RuleAction) => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any) {\n    this.onTouch = fn;\n  }\n\n  ngOnInit() {\n    this.actionDefinitions = this.actionDefinitions.sort((firstActionDefinition, secondActionDefinition) =>\n      firstActionDefinition.title.localeCompare(secondActionDefinition.title)\n    );\n\n    this.form.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.setDefaultParameters();\n      this.setCardViewProperties();\n      this.onChange({\n        actionDefinitionId: this.selectedActionDefinitionId,\n        params: this.parameters\n      });\n      this.onTouch();\n    });\n\n    this.cardViewUpdateService.itemUpdated$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((updateNotification: UpdateNotification) => {\n      const isSecurityGroupUpdated = updateNotification.target.key === 'securityGroupId';\n      if (isSecurityGroupUpdated) {\n        this.parameters.securityMarkId = null;\n      }\n\n      this.parameters = this.clearEmptyParameters({\n        ...this.parameters,\n        ...updateNotification.changed\n      });\n      this.onChange({\n        actionDefinitionId: this.selectedActionDefinitionId,\n        params: this.parameters\n      });\n      this.onTouch();\n\n      if (isSecurityGroupUpdated) {\n        this.setCardViewProperties();\n        this.loadSecurityMarkOptions();\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const readOnly = changes['readOnly']?.currentValue;\n    if (readOnly !== undefined && readOnly !== null) {\n      if (readOnly) {\n        this.readOnly = true;\n        this.form.disable();\n      } else {\n        this.readOnly = false;\n        this.form.enable();\n      }\n    }\n  }\n\n  setCardViewProperties(securityMarkOptions?: CardViewSelectItemOption<string>[]) {\n    const disabledTags = !this.tagService.areTagsEnabled();\n    const disabledCategories = !this.categoryService.areCategoriesEnabled();\n    this.cardViewItems = (this.selectedActionDefinition?.parameterDefinitions ?? []).map((paramDef) => {\n      const constraintsForDropdownBox =\n        paramDef.name === 'securityMarkId'\n          ? { name: paramDef.name, constraints: securityMarkOptions || [] }\n          : this._parameterConstraints.find((obj) => obj.name === paramDef.name);\n      const cardViewPropertiesModel = {\n        label: paramDef.displayLabel + (paramDef.mandatory ? ' *' : ''),\n        key: paramDef.name,\n        editable: true,\n        ...(paramDef.mandatory\n          ? {\n              validators: [\n                {\n                  message: 'ACA_FOLDER_RULES.RULE_DETAILS.ERROR.REQUIRED',\n                  isValid: (value: unknown) => !!value\n                }\n              ]\n            }\n          : {})\n      };\n      switch (paramDef.type) {\n        case 'd:boolean':\n          return new CardViewBoolItemModel({\n            ...cardViewPropertiesModel,\n            value: this.parameters[paramDef.name] ?? false\n          });\n        case 'd:noderef':\n          if (!constraintsForDropdownBox && !this.readOnly && paramDef.name !== 'category-value') {\n            return new CardViewTextItemModel({\n              ...cardViewPropertiesModel,\n              icon: 'folder',\n              default: '',\n              clickable: true,\n              clickCallBack: this.openSelectorDialog.bind(this, paramDef.name),\n              value: this.parameters[paramDef.name]\n            });\n          } else if (paramDef.name === 'category-value' && !this.readOnly) {\n            return new CardViewTextItemModel({\n              ...cardViewPropertiesModel,\n              icon: 'library_add',\n              default: '',\n              clickable: true,\n              clickCallBack: this.openCatDialog.bind(this, paramDef.name),\n              value: this.parameters[paramDef.name]\n            });\n          }\n        //  falls through\n        default:\n          if (constraintsForDropdownBox) {\n            return new CardViewSelectItemModel({\n              ...cardViewPropertiesModel,\n              value: (this.parameters[paramDef.name] as string) ?? '',\n              options$: of(constraintsForDropdownBox.constraints).pipe(\n                map((options) => {\n                  return options.filter(\n                    (option) =>\n                      !(\n                        (disabledTags && this.tagsRelatedPropertiesAndAspects.includes(option.key)) ||\n                        (disabledCategories && this.categoriesRelatedPropertiesAndAspects.includes(option.key))\n                      )\n                  );\n                })\n              )\n            });\n          }\n          return new CardViewTextItemModel({\n            ...cardViewPropertiesModel,\n            value:\n              constraintsForDropdownBox && this.readOnly && this.paramsToFormatDisplayedValue.includes(paramDef.name)\n                ? (constraintsForDropdownBox.constraints.find((constraint) => constraint.key === this.parameters[paramDef.name])?.label ?? '')\n                : (this.parameters[paramDef.name] ?? '')\n          });\n      }\n    });\n  }\n\n  private openSelectorDialog(paramDefName) {\n    const data: ContentNodeSelectorComponentData = {\n      selectionMode: 'single',\n      title: this.translate.instant('ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.CHOOSE_FOLDER'),\n      actionName: NodeAction.CHOOSE,\n      currentFolderId: this.nodeId,\n      select: new Subject<Node[]>()\n    };\n\n    this.dialog.open(ContentNodeSelectorComponent, {\n      data,\n      panelClass: 'adf-content-node-selector-dialog',\n      width: '630px'\n    });\n\n    data.select.subscribe(\n      (selections: Node[]) => {\n        if (selections[0].id) {\n          this.writeValue({\n            actionDefinitionId: this.selectedActionDefinitionId,\n            params: {\n              ...this.parameters,\n              [paramDefName]: selections[0].id\n            }\n          });\n          this.onChange({\n            actionDefinitionId: this.selectedActionDefinitionId,\n            params: this.parameters\n          });\n          this.onTouch();\n        }\n      },\n      (error) => {\n        console.error(error);\n      },\n      () => {\n        this.dialog.closeAll();\n      }\n    );\n  }\n\n  private openCatDialog(paramDefName) {\n    const data: CategorySelectorDialogOptions = {\n      select: new Subject<Category[]>(),\n      multiSelect: false\n    };\n\n    this.dialog.open(CategorySelectorDialogComponent, {\n      data,\n      width: '630px'\n    });\n\n    data.select.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((selections: Category[]) => {\n      if (selections[0].id) {\n        this.writeValue({\n          actionDefinitionId: this.selectedActionDefinitionId,\n          params: {\n            ...this.parameters,\n            [paramDefName]: selections[0].id\n          }\n        });\n        this.onChange({\n          actionDefinitionId: this.selectedActionDefinitionId,\n          params: this.parameters\n        });\n        this.onTouch();\n      }\n    });\n  }\n\n  setDefaultParameters() {\n    this.parameters = {};\n    (this.selectedActionDefinition?.parameterDefinitions ?? []).forEach((paramDef: ActionParameterDefinition) => {\n      if (paramDef.type === 'd:boolean') {\n        this.parameters[paramDef.name] = false;\n      }\n    });\n  }\n\n  private parseConstraintsToSelectOptions(constraints: ConstraintValue[]): CardViewSelectItemOption<unknown>[] {\n    return constraints\n      .sort((a, b) => {\n        if (!a.label && b.label) {\n          return 1;\n        }\n        if (!b.label && a.label) {\n          return -1;\n        }\n        return a.label?.localeCompare(b.label) ?? -1;\n      })\n      .map((constraint) => ({\n        key: constraint.value,\n        label: constraint.label ? `${constraint.label} [${constraint.value}]` : constraint.value\n      }));\n  }\n\n  private clearEmptyParameters(params: { [key: string]: unknown }): { [key: string]: unknown } {\n    Object.keys(params).forEach((key) => (params[key] === null || params[key] === undefined || params[key] === '') && delete params[key]);\n    return params;\n  }\n\n  loadSecurityMarkOptions(): void {\n    if (this.parameters?.securityGroupId) {\n      from(this.securityControlsService.getSecurityMark(this.parameters.securityGroupId as string))\n        .pipe(map((securityMarks) => securityMarks.entries.map((entry) => this.formatSecurityMarkConstraint(entry))))\n        .subscribe((res) => this.setCardViewProperties(this.parseConstraintsToSelectOptions(res) as CardViewSelectItemOption<string>[]));\n    }\n  }\n\n  private formatSecurityMarkConstraint(securityMark: SecurityMark): ConstraintValue {\n    return {\n      value: securityMark.id,\n      label: securityMark.name\n    };\n  }\n}\n","<form class=\"aca-rule-action__form\" [formGroup]=\"form\">\n\n  <mat-form-field class=\"aca-rule-action-full-width aca-rule-action-form-field\">\n    <mat-select\n      formControlName=\"actionDefinitionId\"\n      data-automation-id=\"rule-action-select\"\n      [placeholder]=\"'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_SELECT_PLACEHOLDER' | translate\">\n      <mat-option\n        *ngFor=\"let actionDefinition of actionDefinitions\"\n        [value]=\"actionDefinition.id\">\n        {{ actionDefinition.title }}\n      </mat-option>\n    </mat-select>\n    <mat-error>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ERROR.ACTION_REQUIRED' | translate}}</mat-error>\n  </mat-form-field>\n\n  <adf-card-view\n    *ngIf=\"cardViewItems?.length > 0\"\n    data-automation-id=\"rule-action-card-view\"\n    [properties]=\"cardViewItems\"\n    class=\"aca-rule-action-full-width\"\n    [editable]=\"!readOnly\" />\n\n</form>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, forwardRef, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormArray, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ActionDefinitionTransformed, RuleAction } from '../../model/rule-action.model';\nimport { Subscription } from 'rxjs';\nimport { ruleActionValidator } from '../validators/rule-actions.validator';\nimport { ActionParameterConstraint } from '../../model/action-parameter-constraint.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { RuleActionUiComponent } from './rule-action.ui-component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, RuleActionUiComponent, ReactiveFormsModule, MatButtonModule, MatMenuModule, MatIconModule],\n  selector: 'aca-rule-action-list',\n  templateUrl: './rule-action-list.ui-component.html',\n  styleUrls: ['./rule-action-list.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-action-list' },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => RuleActionListUiComponent)\n    }\n  ]\n})\nexport class RuleActionListUiComponent implements ControlValueAccessor, OnDestroy {\n  @Input()\n  actionDefinitions: ActionDefinitionTransformed[] = [];\n  @Input()\n  readOnly = false;\n  @Input()\n  parameterConstraints: ActionParameterConstraint[] = [];\n  @Input()\n  nodeId = '';\n\n  formArray = new FormArray([]);\n  private formArraySubscription: Subscription;\n\n  formControls: FormControl[] = [];\n\n  onChange: (actions: RuleAction[]) => void = () => undefined;\n  onTouch: () => void = () => undefined;\n\n  writeValue(actions: RuleAction[]) {\n    if (actions.length === 0) {\n      actions = [\n        {\n          actionDefinitionId: null,\n          params: {}\n        }\n      ];\n    }\n    this.formArray = new FormArray(actions.map((action: RuleAction) => new FormControl(action)));\n    this.formControls = this.formArray.controls as FormControl[];\n    this.formArraySubscription?.unsubscribe();\n    this.formArraySubscription = this.formArray.valueChanges.subscribe((value: any) => {\n      this.onChange(value);\n      this.onTouch();\n    });\n  }\n\n  registerOnChange(fn: (actions: RuleAction[]) => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouch = fn;\n  }\n\n  addAction() {\n    const newAction: RuleAction = {\n      actionDefinitionId: null,\n      params: {}\n    };\n    this.formArray.push(new FormControl(newAction, [Validators.required, ruleActionValidator(this.actionDefinitions)]));\n    this.formControls = this.formArray.controls as FormControl[];\n  }\n\n  ngOnDestroy() {\n    this.formArraySubscription?.unsubscribe();\n  }\n\n  removeAction(control: FormControl) {\n    const index = this.formArray.value.indexOf(control.value);\n    this.formArray.removeAt(index);\n    this.formControls = this.formArray.controls as FormControl[];\n  }\n}\n","<div class=\"aca-rule-action-list__item\" [attr.aria-labelledby]=\"'rule-actions-label'\" *ngFor=\"let control of formControls\">\n  <aca-rule-action\n    [actionDefinitions]=\"actionDefinitions\"\n    [parameterConstraints]=\"parameterConstraints\"\n    [readOnly]=\"readOnly\"\n    [formControl]=\"control\"\n    [nodeId]=\"nodeId\" />\n\n  <button\n    mat-icon-button\n    data-automation-id=\"rule-action-list-action-menu\"\n    [attr.aria-label]=\"'ACA_FOLDER_RULES.EDIT_RULE_DIALOG.OPEN_ACTION_MENU' | translate\"\n    *ngIf=\"!readOnly\" [matMenuTriggerFor]=\"menu\">\n    <mat-icon>more_vert</mat-icon>\n  </button>\n\n  <mat-menu #menu>\n    <button\n      mat-menu-item\n      data-automation-id=\"rule-action-list-remove-action-button\"\n      [title]=\"'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.REMOVE' | translate\"\n      [disabled]=\"formControls.length <= 1\"\n      (click)=\"removeAction(control)\">\n      <mat-icon>delete</mat-icon>\n      <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.REMOVE' | translate }}</span>\n    </button>\n  </mat-menu>\n</div>\n\n<button mat-flat-button class=\"aca-rule-action-list-add-action-button\" data-automation-id=\"rule-action-list-add-action-button\" (click)=\"addAction()\" *ngIf=\"!readOnly\">\n  <mat-icon class=\"aca-rule-action-list-add-action-button-icon\">add</mat-icon>\n  <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.ADD_ACTION' | translate }}</span>\n</button>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, forwardRef, HostBinding, Input, OnChanges, OnDestroy, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { RuleOptions } from '../../model/rule.model';\nimport { ActionParameterConstraint, ConstraintValue } from '../../model/action-parameter-constraint.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, ReactiveFormsModule, MatCheckboxModule, MatFormFieldModule, MatSelectModule],\n  selector: 'aca-rule-options',\n  templateUrl: 'rule-options.ui-component.html',\n  styleUrls: ['rule-options.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-options' },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => RuleOptionsUiComponent)\n    }\n  ]\n})\nexport class RuleOptionsUiComponent implements ControlValueAccessor, OnChanges, OnDestroy {\n  form = new FormGroup({\n    isDisabled: new FormControl(),\n    isInheritable: new FormControl(),\n    isAsynchronous: new FormControl(),\n    errorScript: new FormControl()\n  });\n\n  formSubscription = this.form.valueChanges.subscribe((value: any) => {\n    const formValue = { ...this.form.value, ...value };\n    this.isAsynchronousChecked = value.isAsynchronous;\n    this.isInheritableChecked = value.isInheritable;\n    this.onChange({\n      isEnabled: !formValue.isDisabled,\n      isInheritable: formValue.isInheritable,\n      isAsynchronous: formValue.isAsynchronous,\n      errorScript: formValue.errorScript ?? ''\n    });\n    this.onTouch();\n  });\n\n  hideErrorScriptDropdown = true;\n\n  @Input() ariaLabelledBy = 'rule-options-label';\n\n  @Input()\n  errorScriptConstraint: ActionParameterConstraint;\n\n  @HostBinding('class.aca-read-only')\n  readOnly = false;\n\n  onChange: (options: RuleOptions) => void = () => undefined;\n  onTouch: () => void = () => undefined;\n\n  isAsynchronousChecked = false;\n  isInheritableChecked = false;\n\n  errorScriptOptions: ConstraintValue[] = [];\n\n  writeValue(options: RuleOptions) {\n    this.form.setValue(\n      {\n        isDisabled: !options.isEnabled,\n        isAsynchronous: options.isAsynchronous,\n        isInheritable: options.isInheritable,\n        errorScript: options.errorScript ?? ''\n      },\n      { emitEvent: false }\n    );\n    this.isAsynchronousChecked = options.isAsynchronous;\n    this.isInheritableChecked = options.isInheritable;\n    this.hideErrorScriptDropdown = !this.isAsynchronousChecked;\n  }\n\n  registerOnChange(fn: () => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouch = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    if (isDisabled) {\n      this.form.disable();\n      this.readOnly = true;\n    } else {\n      this.form.enable();\n      this.readOnly = false;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['errorScriptConstraint']) {\n      this.errorScriptOptions = this.errorScriptConstraint?.constraints ?? [];\n    }\n  }\n\n  ngOnDestroy() {\n    this.formSubscription.unsubscribe();\n  }\n\n  toggleErrorScriptDropdown(value: MatCheckboxChange) {\n    this.hideErrorScriptDropdown = !value.checked;\n  }\n}\n","<fieldset [formGroup]=\"form\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n  <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isAsynchronousChecked\">\n    <mat-checkbox\n      formControlName=\"isAsynchronous\"\n      (change)=\"toggleErrorScriptDropdown($event)\"\n      class=\"aca-rule-options__checkbox\"\n      data-automation-id=\"rule-option-checkbox-asynchronous\">\n      {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_ASYNCHRONOUS' | translate }}\n    </mat-checkbox>\n\n    <mat-form-field\n      data-automation-id=\"rule-option-form-field-errorScript\"\n      class=\"aca-rule-options__error-script-dropdown\"\n      [ngClass]=\"{ 'aca-hide-error-script-dropdown': hideErrorScriptDropdown }\">\n      <mat-label>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.ERROR_SCRIPT' | translate }}</mat-label>\n      <mat-select\n        formControlName=\"errorScript\"\n        data-automation-id=\"rule-option-select-errorScript\">\n\n        <mat-option class=\"aca-rule-options__error-script-option\" value=\"\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.NO_SCRIPT' | translate }}</mat-option>\n          <mat-option *ngFor=\"let option of errorScriptOptions\"\n            class=\"aca-rule-options__error-script-option\"\n            [value]=\"option.value\">\n            {{ option.label }}\n          </mat-option>\n      </mat-select>\n    </mat-form-field>\n  </div>\n\n\n  <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isInheritableChecked\">\n    <mat-checkbox\n      formControlName=\"isInheritable\"\n      class=\"aca-rule-options__checkbox\"\n      data-automation-id=\"rule-option-checkbox-inheritable\">\n      {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_INHERITABLE' | translate }}\n    </mat-checkbox>\n  </div>\n\n  <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly\">\n    <mat-checkbox\n      formControlName=\"isDisabled\"\n      class=\"aca-rule-options__checkbox\"\n      data-automation-id=\"rule-option-checkbox-disabled\">\n      {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.DISABLE_RULE' | translate }}\n    </mat-checkbox>\n  </div>\n</fieldset>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { Rule, RuleForForm } from '../model/rule.model';\nimport { ruleCompositeConditionValidator } from './validators/rule-composite-condition.validator';\nimport { FolderRulesService } from '../services/folder-rules.service';\nimport { ActionDefinitionTransformed } from '../model/rule-action.model';\nimport { ruleActionsValidator } from './validators/rule-actions.validator';\nimport { ActionParameterConstraint } from '../model/action-parameter-constraint.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { RuleTriggersUiComponent } from './triggers/rule-triggers.ui-component';\nimport { RuleCompositeConditionUiComponent } from './conditions/rule-composite-condition.ui-component';\nimport { RuleActionListUiComponent } from './actions/rule-action-list.ui-component';\nimport { RuleOptionsUiComponent } from './options/rule-options.ui-component';\nimport { CategoryService } from '@alfresco/adf-content-services';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    RuleTriggersUiComponent,\n    RuleCompositeConditionUiComponent,\n    RuleActionListUiComponent,\n    RuleOptionsUiComponent\n  ],\n  selector: 'aca-rule-details',\n  templateUrl: './rule-details.ui-component.html',\n  styleUrls: ['./rule-details.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-details' }\n})\nexport class RuleDetailsUiComponent implements OnInit {\n  @Input()\n  readOnly: boolean;\n\n  descriptionPlaceHolder: string;\n\n  private _initialValue: RuleForForm = FolderRulesService.emptyRuleForForm;\n  @Input()\n  get value(): Partial<Rule> {\n    let value = this.form ? this.form.value : this._initialValue;\n    if (value.options) {\n      value = {\n        ...value,\n        ...(value.options ?? FolderRulesService.emptyRuleOptions)\n      };\n      delete value.options;\n    }\n    return value;\n  }\n  set value(newValue: Partial<Rule>) {\n    const newValueForForm: RuleForForm = {\n      id: newValue.id || FolderRulesService.emptyRule.id,\n      name: newValue.name || FolderRulesService.emptyRule.name,\n      description: newValue.description || FolderRulesService.emptyRule.description,\n      isShared: newValue.isShared || FolderRulesService.emptyRule.isShared,\n      triggers: newValue.triggers || FolderRulesService.emptyRule.triggers,\n      conditions: newValue.conditions || FolderRulesService.emptyRule.conditions,\n      actions: newValue.actions || FolderRulesService.emptyRule.actions,\n      options: {\n        isEnabled: typeof newValue.isInheritable == 'boolean' ? newValue.isEnabled : FolderRulesService.emptyRule.isEnabled,\n        isInheritable: newValue.isInheritable || FolderRulesService.emptyRule.isInheritable,\n        isAsynchronous: newValue.isAsynchronous || FolderRulesService.emptyRule.isAsynchronous,\n        errorScript: newValue.errorScript || FolderRulesService.emptyRule.errorScript\n      }\n    };\n    if (this.form) {\n      this.form.setValue(newValueForForm);\n    } else {\n      this._initialValue = newValueForForm;\n    }\n  }\n  @Input()\n  preview: boolean;\n  @Input()\n  actionDefinitions: ActionDefinitionTransformed[] = [];\n  @Input()\n  parameterConstraints: ActionParameterConstraint[] = [];\n  @Input()\n  nodeId = '';\n\n  @Output()\n  formValidationChanged = new EventEmitter<boolean>();\n  @Output()\n  formValueChanged = new EventEmitter<Partial<Rule>>();\n\n  form: UntypedFormGroup;\n\n  errorScriptConstraint: ActionParameterConstraint;\n  get name(): UntypedFormControl {\n    return this.form.get('name') as UntypedFormControl;\n  }\n  get description(): UntypedFormControl {\n    return this.form.get('description') as UntypedFormControl;\n  }\n  get triggers(): UntypedFormControl {\n    return this.form.get('triggers') as UntypedFormControl;\n  }\n\n  get conditions(): UntypedFormControl {\n    return this.form.get('conditions') as UntypedFormControl;\n  }\n\n  get showOptionsSection(): boolean {\n    return !this.readOnly || this.value.isAsynchronous || this.value.isInheritable;\n  }\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  constructor(private categoryService: CategoryService) {}\n\n  ngOnInit() {\n    const disabledCategory = !this.categoryService.areCategoriesEnabled();\n    this.actionDefinitions = this.actionDefinitions.filter((action) => !(disabledCategory && action.id === 'link-category'));\n    this.form = new UntypedFormGroup({\n      id: new UntypedFormControl(this.value.id),\n      name: new UntypedFormControl(this.value.name || '', Validators.required),\n      description: new UntypedFormControl(this.value.description || ''),\n      isShared: new UntypedFormControl(this.value.isShared || false),\n      triggers: new UntypedFormControl(this.value.triggers || ['inbound'], Validators.required),\n      conditions: new UntypedFormControl(\n        this.value.conditions || {\n          inverted: false,\n          booleanMode: 'and',\n          compositeConditions: [],\n          simpleConditions: []\n        },\n        ruleCompositeConditionValidator()\n      ),\n      actions: new UntypedFormControl(this.value.actions, [Validators.required, ruleActionsValidator(this.actionDefinitions)]),\n      options: new UntypedFormControl({\n        isEnabled: this.value.isEnabled,\n        isInheritable: this.value.isInheritable,\n        isAsynchronous: this.value.isAsynchronous,\n        errorScript: this.value.errorScript\n      })\n    });\n\n    this.form.statusChanges\n      .pipe(\n        map(() => this.form.valid),\n        distinctUntilChanged(),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe((value: boolean) => {\n        this.formValidationChanged.emit(value);\n      });\n    this.formValidationChanged.emit(this.form.valid);\n\n    this.form.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.formValueChanged.emit(this.value);\n    });\n\n    if (this.readOnly) {\n      this.form.disable();\n    } else {\n      this.form.enable();\n    }\n\n    this.descriptionPlaceHolder = this.readOnly\n      ? 'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.NO_DESCRIPTION'\n      : 'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.DESCRIPTION';\n\n    this.errorScriptConstraint = this.parameterConstraints.find(\n      (parameterConstraint: ActionParameterConstraint) => parameterConstraint.name === 'script-ref'\n    );\n  }\n}\n","<form class=\"aca-rule-details__form\" [ngClass]=\"{ 'aca-read-only': readOnly }\" [formGroup]=\"form\">\n\n  <ng-container *ngIf=\"!preview\">\n    <div class=\"aca-rule-details__form__row\">\n      <label class=\"aca-rule-details__name__label\" for=\"rule-details-name-input\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.NAME' | translate }}</label>\n      <div>\n        <mat-form-field class=\"aca-rule-details__form__row__field\">\n          <input\n            id=\"rule-details-name-input\"\n            matInput\n            type=\"text\"\n            formControlName=\"name\"\n            [placeholder]=\"'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.NAME' | translate\"\n            data-automation-id=\"rule-details-name-input\">\n          <mat-error>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ERROR.REQUIRED' | translate }}</mat-error>\n        </mat-form-field>\n      </div>\n    </div>\n\n    <div class=\"aca-rule-details__form__row aca-rule-details__form__description\">\n      <label for=\"rule-details-description-textarea\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.DESCRIPTION' | translate }}</label>\n      <div>\n        <mat-form-field class=\"aca-rule-details__form__row__field\">\n        <textarea\n          class=\"aca-rule-details__form__row__field__textarea\"\n          id=\"rule-details-description-textarea\"\n          matInput formControlName=\"description\" data-automation-id=\"rule-details-description-textarea\"\n          [placeholder]=\"descriptionPlaceHolder | translate\">\n        </textarea>\n        </mat-form-field>\n      </div>\n    </div>\n  </ng-container>\n\n  <div class=\"aca-rule-details__form__row aca-rule-details__form__triggers\">\n    <span id=\"rule-triggers-label\" class=\"aca-label\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.WHEN' | translate }}</span>\n    <div>\n      <aca-rule-triggers formControlName=\"triggers\" data-automation-id=\"rule-details-triggers-component\" />\n      <mat-error class=\"aca-rule-details-error\" *ngIf=\"triggers.hasError('required')\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ERROR.INSUFFICIENT_TRIGGERS_SELECTED' | translate }}</mat-error>\n    </div>\n  </div>\n\n  <div class=\"aca-rule-details__form__conditions\">\n    <aca-rule-composite-condition [readOnly]=\"readOnly\" formControlName=\"conditions\" />\n    <mat-error class=\"aca-rule-details-error\" *ngIf=\"conditions.hasError('ruleCompositeConditionInvalid')\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ERROR.RULE_COMPOSITE_CONDITION_INVALID' | translate }}</mat-error>\n  </div>\n\n  <div class=\"aca-rule-details__form__row aca-rule-details__form__actions\">\n    <div id=\"rule-actions-label\" class=\"aca-label\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.PERFORM_ACTIONS' | translate }}</div>\n    <aca-rule-action-list\n      formControlName=\"actions\"\n      [actionDefinitions]=\"actionDefinitions\"\n      [parameterConstraints]=\"parameterConstraints\"\n      [readOnly]=\"readOnly\"\n      [nodeId]=\"nodeId\" />\n  </div>\n\n  <div class=\"aca-rule-details__form__row aca-rule-details__form__others\" *ngIf=\"showOptionsSection\">\n    <span id=\"rule-options-label\" class=\"aca-label\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.OPTIONS' | translate }}</span>\n    <aca-rule-options\n      formControlName=\"options\"\n      data-automation-id=\"rule-details-options-component\"\n      [errorScriptConstraint]=\"errorScriptConstraint\" />\n  </div>\n\n</form>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, EventEmitter, Inject, Output, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { Rule } from '../model/rule.model';\nimport { Observable } from 'rxjs';\nimport { ActionDefinitionTransformed } from '../model/rule-action.model';\nimport { ActionParameterConstraint } from '../model/action-parameter-constraint.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RuleDetailsUiComponent } from './rule-details.ui-component';\n\nexport interface EditRuleDialogOptions {\n  model?: Partial<Rule>;\n  nodeId?: string;\n  actionDefinitions$?: Observable<ActionDefinitionTransformed[]>;\n  parameterConstraints$?: Observable<ActionParameterConstraint[]>;\n}\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatDialogModule, MatButtonModule, MatIconModule, RuleDetailsUiComponent],\n  selector: 'aca-edit-rule-dialog',\n  templateUrl: './edit-rule-dialog.ui-component.html',\n  styleUrls: ['./edit-rule-dialog.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-edit-rule-dialog' }\n})\nexport class EditRuleDialogUiComponent {\n  formValid = false;\n  model: Partial<Rule>;\n  nodeId = '';\n  title = '';\n  submitLabel = '';\n  actionDefinitions$;\n  parameterConstraints$;\n  formValue: Partial<Rule>;\n  @Output() submitted = new EventEmitter<Partial<Rule>>();\n\n  constructor(@Inject(MAT_DIALOG_DATA) public data: EditRuleDialogOptions) {\n    this.model = this.data?.model || {};\n    this.nodeId = this.data?.nodeId;\n    this.actionDefinitions$ = this.data?.actionDefinitions$;\n    this.parameterConstraints$ = this.data?.parameterConstraints$;\n\n    this.title = 'ACA_FOLDER_RULES.EDIT_RULE_DIALOG.' + (this.isUpdateMode ? 'UPDATE_TITLE' : 'CREATE_TITLE');\n    this.submitLabel = 'ACA_FOLDER_RULES.EDIT_RULE_DIALOG.' + (this.isUpdateMode ? 'UPDATE' : 'CREATE');\n  }\n\n  get isUpdateMode(): boolean {\n    return !!this.data?.model?.id;\n  }\n  onSubmit() {\n    this.submitted.emit(this.formValue);\n  }\n\n  onFormValidChange(isValid: boolean) {\n    // setTimeout needed to avoid ExpressionChangedAfterItHasBeenCheckedError\n    setTimeout(() => {\n      this.formValid = isValid;\n    }, 0);\n  }\n}\n","<div mat-dialog-title class=\"aca-edit-rule-dialog__header\">\n  <div class=\"aca-edit-rule-dialog__header__title\" data-automation-id=\"edit-rule-dialog-title\">\n    {{ title | translate }}\n  </div>\n  <button mat-icon-button mat-dialog-close class=\"aca-edit-rule-dialog__header__close\" tabindex=\"-1\"\n          [title]=\"'ACA_FOLDER_RULES.EDIT_RULE_DIALOG.CLOSE' | translate\">\n    <mat-icon class=\"aca-edit-rule-dialog__header__icon\">close</mat-icon>\n  </button>\n</div>\n\n<mat-dialog-content class=\"aca-edit-rule-dialog__content\">\n  <aca-rule-details\n    [actionDefinitions]=\"actionDefinitions$ | async\"\n    [parameterConstraints]=\"parameterConstraints$ | async\"\n    [value]=\"model\"\n    [nodeId]=\"nodeId\"\n    (formValueChanged)=\"formValue = $event\"\n    (formValidationChanged)=\"onFormValidChange($event)\" />\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\" class=\"aca-edit-rule-dialog__footer\">\n  <button mat-flat-button mat-dialog-close>{{ 'ACA_FOLDER_RULES.EDIT_RULE_DIALOG.CANCEL' | translate }}</button>\n  <button mat-flat-button color=\"primary\" [disabled]=\"!formValid\" data-automation-id=\"edit-rule-dialog-submit\" (click)=\"onSubmit()\">{{ submitLabel | translate }}</button>\n</mat-dialog-actions>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ActionDefinition, ActionDefinitionEntry, ActionDefinitionList, ActionsApi } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { BehaviorSubject, forkJoin, from, Observable, of } from 'rxjs';\nimport { finalize, map, switchMap } from 'rxjs/operators';\nimport { ActionDefinitionTransformed, ActionParameterDefinitionTransformed } from '../model/rule-action.model';\nimport { ActionParameterConstraint, ConstraintValue } from '../model/action-parameter-constraint.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionsService {\n  private actionDefinitionsListingSource = new BehaviorSubject<ActionDefinitionTransformed[]>([]);\n  actionDefinitionsListing$ = this.actionDefinitionsListingSource.asObservable();\n  private loadingSource = new BehaviorSubject<boolean>(false);\n  loading$ = this.loadingSource.asObservable();\n  private parameterConstraintsSource = new BehaviorSubject<ActionParameterConstraint[]>([]);\n  parameterConstraints$: Observable<ActionParameterConstraint[]> = this.parameterConstraintsSource.asObservable();\n\n  private _actionsApi: ActionsApi;\n  get actionsApi(): ActionsApi {\n    if (!this._actionsApi) {\n      this._actionsApi = new ActionsApi(this.apiService.getInstance());\n    }\n    return this._actionsApi;\n  }\n\n  constructor(private apiService: AlfrescoApiService) {}\n\n  loadActionDefinitions() {\n    this.loadingSource.next(true);\n    from(this.actionsApi.listActions())\n      .pipe(\n        map((list: ActionDefinitionList) => list.list.entries.map((entry) => this.transformActionDefinition(entry))),\n        finalize(() => this.loadingSource.next(false))\n      )\n      .subscribe((obj: ActionDefinitionTransformed[]) => {\n        this.actionDefinitionsListingSource.next(obj);\n      });\n  }\n\n  getParameterConstraints(constraintName): Observable<ConstraintValue[]> {\n    return from(\n      this.publicApiCall(`/action-parameter-constraints/${constraintName}`, 'GET', [{}, {}, {}, {}, {}, ['application/json'], ['application/json']])\n    ).pipe(map((res) => res.entry.constraintValues.map((entry) => this.formatConstraint(entry))));\n  }\n\n  private transformActionDefinition(obj: ActionDefinition | ActionDefinitionEntry): ActionDefinitionTransformed {\n    if (this.isActionDefinitionEntry(obj)) {\n      obj = obj.entry;\n    }\n    return {\n      id: obj.id,\n      name: obj.name ?? '',\n      description: obj.description ?? '',\n      title: obj.title ?? obj.name ?? '',\n      applicableTypes: obj.applicableTypes ?? [],\n      trackStatus: obj.trackStatus ?? false,\n      parameterDefinitions: (obj.parameterDefinitions ?? []).map((paramDef: ActionParameterDefinitionTransformed) =>\n        this.transformActionParameterDefinition(paramDef)\n      )\n    };\n  }\n\n  private transformActionParameterDefinition(obj: ActionParameterDefinitionTransformed): ActionParameterDefinitionTransformed {\n    return {\n      name: obj.name ?? '',\n      type: obj.type ?? '',\n      multiValued: obj.multiValued ?? false,\n      mandatory: obj.mandatory ?? false,\n      displayLabel: obj.displayLabel ?? obj.name ?? '',\n      parameterConstraintName: obj.parameterConstraintName ?? ''\n    };\n  }\n\n  private isActionDefinitionEntry(obj): obj is ActionDefinitionEntry {\n    return typeof obj.entry !== 'undefined';\n  }\n\n  private publicApiCall(path: string, httpMethod: string, params?: any[]): Promise<any> {\n    return this.apiService.getInstance().contentClient.callApi(path, httpMethod, ...params);\n  }\n\n  private formatConstraint(constraint): ConstraintValue {\n    return {\n      value: constraint.value ?? '',\n      label: constraint.label ?? ''\n    };\n  }\n\n  loadActionParameterConstraints(actionDefinitions: ActionDefinitionTransformed[]): void {\n    of(actionDefinitions)\n      .pipe(\n        map((actionDefinition) =>\n          actionDefinition\n            .map((obj) => obj.parameterDefinitions)\n            .flat()\n            .filter((parameterDefinition) => parameterDefinition.parameterConstraintName.length > 0)\n            .map((parameterDefinition) => ({\n              name: parameterDefinition.name,\n              parameterConstraintName: parameterDefinition.parameterConstraintName,\n              constraints: null\n            }))\n        ),\n        switchMap((parameterDefinitions) =>\n          forkJoin(\n            ...parameterDefinitions.map((parameterDefinition) =>\n              this.getParameterConstraints(parameterDefinition.parameterConstraintName).pipe(\n                map((constraints) => ({ name: parameterDefinition.name, constraints }))\n              )\n            )\n          )\n        )\n      )\n      .subscribe((res) => this.parameterConstraintsSource.next(res));\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { BehaviorSubject, combineLatest, from, Observable, of, startWith } from 'rxjs';\nimport { NodeInfo } from '@alfresco/aca-shared/store';\nimport { catchError, finalize, map, switchMap, tap } from 'rxjs/operators';\nimport { RuleSet } from '../model/rule-set.model';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { FolderRulesService } from './folder-rules.service';\nimport { Rule } from '../model/rule.model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FolderRuleSetsService {\n  public static readonly MAX_RULE_SETS_PER_GET = 100;\n\n  static isOwnedRuleSet(ruleSet: RuleSet, nodeId: string): boolean {\n    return ruleSet?.owningFolder?.id === nodeId;\n  }\n  static isLinkedRuleSet(ruleSet: RuleSet, nodeId: string): boolean {\n    return ruleSet?.linkedToBy.indexOf(nodeId) > -1;\n  }\n  static isMainRuleSet(ruleSet: RuleSet, nodeId: string): boolean {\n    return this.isOwnedRuleSet(ruleSet, nodeId) || this.isLinkedRuleSet(ruleSet, nodeId);\n  }\n  static isInheritedRuleSet(ruleSet: RuleSet, nodeId: string): boolean {\n    return !this.isMainRuleSet(ruleSet, nodeId);\n  }\n\n  private currentFolder: NodeInfo = null;\n  private mainRuleSet: RuleSet = null;\n  private inheritedRuleSets: RuleSet[] = [];\n  private hasMoreRuleSets = true;\n\n  private mainRuleSetSource = new BehaviorSubject<RuleSet>(null);\n  private inheritedRuleSetsSource = new BehaviorSubject<RuleSet[]>([]);\n  private hasMoreRuleSetsSource = new BehaviorSubject<boolean>(true);\n  private folderInfoSource = new BehaviorSubject<NodeInfo>(null);\n  private isLoadingSource = new BehaviorSubject<boolean>(false);\n\n  mainRuleSet$: Observable<RuleSet> = this.mainRuleSetSource.asObservable();\n  inheritedRuleSets$: Observable<RuleSet[]> = this.inheritedRuleSetsSource.asObservable();\n  hasMoreRuleSets$: Observable<boolean> = this.hasMoreRuleSetsSource.asObservable();\n  folderInfo$: Observable<NodeInfo> = this.folderInfoSource.asObservable();\n  isLoading$: Observable<boolean> = this.isLoadingSource.asObservable();\n  selectedRuleSet$: Observable<RuleSet>;\n\n  constructor(\n    private readonly apiService: AlfrescoApiService,\n    private readonly contentApi: ContentApiService,\n    private readonly folderRulesService: FolderRulesService\n  ) {\n    this.selectedRuleSet$ = this.folderRulesService.selectedRule$.pipe(\n      startWith(null),\n      map((rule: Rule) => {\n        if (rule === null) {\n          return null;\n        }\n        if (this.mainRuleSet?.rules.findIndex((r: Rule) => r.id === rule.id) > -1) {\n          return this.mainRuleSet;\n        }\n        return this.inheritedRuleSets.find((ruleSet: RuleSet) => ruleSet.rules.findIndex((r: Rule) => r.id === rule.id) > -1) ?? null;\n      })\n    );\n  }\n\n  private callApi(path: string, httpMethod: string, body: object = {}): Promise<any> {\n    // APIs used by this service are still private and not yet available for public use\n    const params = [{}, {}, {}, {}, body, ['application/json'], ['application/json']];\n    return this.apiService.getInstance().contentPrivateClient.callApi(path, httpMethod, ...params);\n  }\n\n  private getMainRuleSet(nodeId: string): Observable<RuleSet> {\n    return from(this.callApi(`/nodes/${nodeId}/rule-sets/-default-?include=isLinkedTo,owningFolder,linkedToBy`, 'GET')).pipe(\n      catchError((error) => {\n        if (error.status === 404) {\n          return of({ entry: null });\n        }\n        return of(error);\n      }),\n      switchMap((res) => this.formatRuleSet(res.entry))\n    );\n  }\n\n  private getInheritedRuleSets(nodeId: string, skipCount = 0): Observable<RuleSet[]> {\n    return from(\n      this.callApi(\n        `/nodes/${nodeId}/rule-sets?include=isLinkedTo,owningFolder,linkedToBy&skipCount=${skipCount}&maxItems=${FolderRuleSetsService.MAX_RULE_SETS_PER_GET}`,\n        'GET'\n      )\n    ).pipe(\n      tap((res) => {\n        if (res?.list?.pagination) {\n          this.hasMoreRuleSets = res.list.pagination.hasMoreItems;\n        }\n      }),\n      switchMap((res) => this.formatRuleSets(res)),\n      map((ruleSets: RuleSet[]) => ruleSets.filter((ruleSet) => FolderRuleSetsService.isInheritedRuleSet(ruleSet, this.currentFolder.id)))\n    );\n  }\n\n  loadRuleSets(nodeId: string, loadInheritedRuleSets = true) {\n    this.isLoadingSource.next(true);\n    this.mainRuleSet = null;\n    this.inheritedRuleSets = [];\n    this.hasMoreRuleSets = true;\n    this.currentFolder = null;\n    this.mainRuleSetSource.next(this.mainRuleSet);\n    this.inheritedRuleSetsSource.next(this.inheritedRuleSets);\n    this.hasMoreRuleSetsSource.next(this.hasMoreRuleSets);\n    this.getNodeInfo(nodeId)\n      .pipe(\n        tap((nodeInfo: NodeInfo) => {\n          this.currentFolder = nodeInfo;\n          this.folderInfoSource.next(this.currentFolder);\n        }),\n        switchMap(() => combineLatest(this.getMainRuleSet(nodeId), loadInheritedRuleSets ? this.getInheritedRuleSets(nodeId) : of([]))),\n        finalize(() => this.isLoadingSource.next(false))\n      )\n      .subscribe(([mainRuleSet, inheritedRuleSets]) => {\n        this.mainRuleSet = mainRuleSet;\n        this.inheritedRuleSets = inheritedRuleSets;\n        this.mainRuleSetSource.next(mainRuleSet);\n        this.inheritedRuleSetsSource.next(inheritedRuleSets);\n        this.hasMoreRuleSetsSource.next(this.hasMoreRuleSets);\n        const ruleToSelect =\n          mainRuleSet?.rules.find((r: Rule) => FolderRuleSetsService.isOwnedRuleSet(mainRuleSet, nodeId) || r.isEnabled) ??\n          inheritedRuleSets.reduce((foundRule: Rule, ruleSet: RuleSet) => foundRule ?? ruleSet.rules.find((r: Rule) => r.isEnabled), null);\n        this.folderRulesService.selectRule(ruleToSelect);\n      });\n  }\n\n  loadMoreInheritedRuleSets() {\n    this.isLoadingSource.next(true);\n    this.getInheritedRuleSets(this.currentFolder.id, this.inheritedRuleSets.length)\n      .pipe(finalize(() => this.isLoadingSource.next(false)))\n      .subscribe((ruleSets) => {\n        this.inheritedRuleSets.push(...ruleSets);\n        this.inheritedRuleSetsSource.next(this.inheritedRuleSets);\n        this.hasMoreRuleSetsSource.next(this.hasMoreRuleSets);\n      });\n  }\n\n  private getNodeInfo(nodeId: string): Observable<NodeInfo> {\n    if (nodeId) {\n      return this.contentApi.getNode(nodeId).pipe(\n        catchError((error) => {\n          if (error.status === 404) {\n            return of({ entry: null });\n          }\n          return of(error);\n        }),\n        map((entry: NodeEntry) => entry.entry)\n      );\n    } else {\n      return of(null);\n    }\n  }\n\n  private formatRuleSets(res: any): Observable<RuleSet[]> {\n    return res?.list?.entries && res.list.entries instanceof Array\n      ? combineLatest((res.list.entries as Array<any>).map((entry) => this.formatRuleSet(entry.entry)))\n      : of([]);\n  }\n\n  private formatRuleSet(entry: any): Observable<RuleSet> {\n    if (!entry) {\n      return of(null);\n    }\n    return combineLatest(\n      this.currentFolder?.id === entry.owningFolder ? of(this.currentFolder) : this.getNodeInfo(entry.owningFolder || ''),\n      this.folderRulesService.getRules(this.currentFolder?.id || '', entry.id)\n    ).pipe(\n      map(([owningFolderNodeInfo, getRulesRes]) => ({\n        id: entry.id,\n        isLinkedTo: entry.isLinkedTo || false,\n        owningFolder: owningFolderNodeInfo,\n        linkedToBy: entry.linkedToBy || [],\n        rules: getRulesRes.rules,\n        hasMoreRules: getRulesRes.hasMoreRules,\n        loadingRules: false\n      }))\n    );\n  }\n\n  removeRuleFromMainRuleSet(ruleId: string) {\n    if (!this.mainRuleSet) {\n      return;\n    }\n\n    const updatedRules = this.mainRuleSet.rules.filter((rule) => rule.id !== ruleId);\n    const newMainRuleSet: RuleSet = updatedRules.length ? { ...this.mainRuleSet, rules: updatedRules } : null;\n\n    this.mainRuleSet = newMainRuleSet;\n    this.mainRuleSetSource.next(newMainRuleSet);\n\n    const nextRule = newMainRuleSet?.rules[0] ?? this.inheritedRuleSets[0]?.rules[0] ?? null;\n\n    this.folderRulesService.selectRule(nextRule);\n  }\n\n  addOrUpdateRuleInMainRuleSet(newRule: Rule) {\n    if (this.mainRuleSet) {\n      const updatedRules = this.mainRuleSet.rules.some((rule) => rule.id === newRule.id)\n        ? this.mainRuleSet.rules.map((rule) => (rule.id === newRule.id ? newRule : rule))\n        : [...this.mainRuleSet.rules, newRule];\n\n      this.mainRuleSet = { ...this.mainRuleSet, rules: updatedRules };\n      this.mainRuleSetSource.next(this.mainRuleSet);\n      this.folderRulesService.selectRule(newRule);\n    } else {\n      this.refreshMainRuleSet(newRule);\n    }\n  }\n\n  refreshMainRuleSet(ruleToSelect: Rule = null) {\n    this.getMainRuleSet(this.currentFolder.id).subscribe((mainRuleSet: RuleSet) => {\n      this.mainRuleSet = { ...mainRuleSet };\n      if (!this.mainRuleSet.rules) {\n        this.mainRuleSet = null;\n      }\n      this.mainRuleSetSource.next(this.mainRuleSet);\n      if (mainRuleSet) {\n        const ruleToSelectInRuleSet = ruleToSelect ? mainRuleSet.rules.find((rule: Rule) => rule.id === ruleToSelect.id) : mainRuleSet.rules[0];\n        this.folderRulesService.selectRule(ruleToSelectInRuleSet);\n      }\n    });\n  }\n\n  async createRuleSetLink(folderIdToCreateLink: string, folderIdToLinkFrom: string): Promise<unknown> {\n    const data = {\n      id: folderIdToLinkFrom\n    };\n    return this.callApi(`/nodes/${folderIdToCreateLink}/rule-set-links`, 'POST', data);\n  }\n\n  async deleteRuleSetLink(folderIdToDeleteLink: string, ruleSetIdToDelete: string): Promise<unknown> {\n    return this.callApi(`/nodes/${folderIdToDeleteLink}/rule-set-links/${ruleSetIdToDelete}`, 'DELETE');\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { Rule } from '../../model/rule.model';\nimport { CommonModule } from '@angular/common';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n  imports: [CommonModule, MatSlideToggleModule, TranslatePipe],\n  selector: 'aca-rule-list-item',\n  templateUrl: 'rule-list-item.ui-component.html',\n  styleUrls: ['rule-list-item.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-list-item' }\n})\nexport class RuleListItemUiComponent {\n  @Input({ required: true })\n  rule: Rule;\n  @Input()\n  @HostBinding('class.aca-selected')\n  isSelected: boolean;\n  @Input()\n  showEnabledToggle = false;\n\n  @Output()\n  enabledChanged = new EventEmitter<boolean>();\n\n  onToggleClick(isEnabled: boolean, event: Event) {\n    event.stopPropagation();\n    this.enabledChanged.emit(isEnabled);\n  }\n}\n","<div class=\"aca-rule-list-item__header\">\n\n  <span class=\"aca-rule-list-item__header__name\">{{ rule.name }}</span>\n\n  <mat-slide-toggle\n    *ngIf=\"showEnabledToggle\"\n    [checked]=\"rule.isEnabled\"\n    [aria-label]=\"'ACA_FOLDER_RULES.RULE_LIST.TOGGLE_RULE_STATE' | translate: { name: rule.name }\"\n    (click)=\"onToggleClick(!rule.isEnabled, $event)\" />\n\n</div>\n<div class=\"aca-rule-list-item__description\">{{ rule.description }}</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { FolderRuleSetsService } from '../services/folder-rule-sets.service';\nimport { Node } from '@alfresco/js-api';\nimport { RuleSet } from '../model/rule-set.model';\nimport { BehaviorSubject, combineLatest, from, of } from 'rxjs';\nimport { finalize, map, switchMap } from 'rxjs/operators';\nimport { EmptyContentComponent, NotificationService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { RuleListItemUiComponent } from '../rule-list/rule-list-item/rule-list-item.ui-component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentNodeSelectorPanelComponent } from '@alfresco/adf-content-services';\n\nexport interface RuleSetPickerOptions {\n  nodeId: string;\n  defaultNodeId: string;\n  existingRuleSet?: RuleSet;\n}\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatDialogModule,\n    MatButtonModule,\n    MatIconModule,\n    MatProgressSpinnerModule,\n    RuleListItemUiComponent,\n    EmptyContentComponent,\n    ContentNodeSelectorPanelComponent\n  ],\n  selector: 'aca-rule-set-picker',\n  templateUrl: './rule-set-picker.smart-component.html',\n  styleUrls: ['./rule-set-picker.smart-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-set-picker' },\n  providers: [FolderRuleSetsService]\n})\nexport class RuleSetPickerSmartComponent implements OnInit {\n  nodeId = '-root-';\n  defaultNodeId = '-root-';\n  isBusy = false;\n  existingRuleSet: RuleSet = null;\n  hasOwnedRules = false;\n\n  private selectedNodeId = '';\n  private folderLoading$ = new BehaviorSubject<boolean>(true);\n\n  public readonly data: RuleSetPickerOptions = inject(MAT_DIALOG_DATA);\n  public readonly folderRuleSetsService = inject(FolderRuleSetsService);\n  private readonly dialogRef = inject(MatDialogRef<RuleSetPickerSmartComponent>);\n  private readonly notificationService = inject(NotificationService);\n  private readonly destroyRef = inject(DestroyRef);\n\n  mainRuleSet$ = this.folderRuleSetsService.mainRuleSet$;\n  rulesLoading$ = combineLatest(this.folderRuleSetsService.isLoading$, this.folderLoading$).pipe(\n    map(([rulesLoading, folderLoading]) => rulesLoading || folderLoading)\n  );\n\n  constructor() {\n    this.nodeId = this.data?.nodeId ?? '-root-';\n    this.defaultNodeId = this.data?.defaultNodeId ?? '-root-';\n    this.existingRuleSet = this.data?.existingRuleSet ?? null;\n  }\n\n  ngOnInit(): void {\n    this.mainRuleSet$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((mainRuleSet) => {\n      this.hasOwnedRules = mainRuleSet?.rules.length > 0 && FolderRuleSetsService.isOwnedRuleSet(mainRuleSet, this.selectedNodeId);\n    });\n  }\n\n  onNodeSelect(nodes: Node[]) {\n    if (nodes?.length && nodes[0].isFolder && nodes[0].id !== this.selectedNodeId) {\n      this.selectedNodeId = nodes[0].id;\n      this.folderRuleSetsService.loadRuleSets(this.selectedNodeId, false);\n    }\n  }\n\n  setFolderLoading(isLoading: boolean) {\n    this.folderLoading$.next(isLoading);\n  }\n\n  onSubmit() {\n    this.isBusy = true;\n    from(this.existingRuleSet ? this.folderRuleSetsService.deleteRuleSetLink(this.nodeId, this.existingRuleSet.id) : of(null))\n      .pipe(\n        switchMap(() => from(this.folderRuleSetsService.createRuleSetLink(this.nodeId, this.selectedNodeId))),\n        finalize(() => {\n          this.isBusy = false;\n        })\n      )\n      .subscribe(\n        () => {\n          this.dialogRef.close(true);\n        },\n        () => {\n          this.handleError();\n        }\n      );\n  }\n\n  private handleError() {\n    this.notificationService.showError('ACA_FOLDER_RULES.LINK_RULES_DIALOG.ERRORS.REQUEST_FAILED');\n  }\n}\n","<div mat-dialog-title class=\"aca-rule-set-picker__header\">\n  <div class=\"aca-rule-set-picker__header__title\">\n    {{ 'ACA_FOLDER_RULES.LINK_RULES_DIALOG.TITLE' | translate }}\n  </div>\n  <button mat-icon-button mat-dialog-close [aria-label]=\"'ACA_FOLDER_RULES.EDIT_RULE_DIALOG.CLOSE' | translate\" class=\"aca-rule-set-picker__header__close\">\n    <mat-icon class=\"aca-rule-set-picker__header__close__icon\">close</mat-icon>\n  </button>\n</div>\n\n<mat-dialog-content class=\"aca-rule-set-picker__content\">\n  <adf-content-node-selector-panel\n    class=\"aca-rule-set-picker__content__node-selector\"\n    [currentFolderId]=\"defaultNodeId\"\n    (select)=\"onNodeSelect($event)\"\n    (folderLoaded)=\"setFolderLoading(false)\"\n    (navigationChange)=\"setFolderLoading(true)\"\n    (siteChange)=\"setFolderLoading(true)\" />\n\n  <div class=\"aca-rule-set-picker__content__rule-list\" [ngClass]=\"{ 'aca-justify': rulesLoading$ | async }\">\n    <ng-container *ngIf=\"rulesLoading$ | async; else rulesLoaded\">\n      <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" />\n    </ng-container>\n\n    <ng-template #rulesLoaded>\n      <ng-container *ngIf=\"hasOwnedRules; else noOwnedRules\">\n        <div class=\"aca-rule-set-picker__content__rule-list__header\">\n          {{ 'ACA_FOLDER_RULES.LINK_RULES_DIALOG.LIST_OF_RULES_TO_LINK' | translate }}\n        </div>\n\n        <aca-rule-list-item\n          *ngFor=\"let rule of (mainRuleSet$ | async).rules\"\n          [rule]=\"rule\" />\n      </ng-container>\n\n      <ng-template #noOwnedRules>\n        <adf-empty-content\n          icon=\"library_books\"\n          [title]=\"'ACA_FOLDER_RULES.LINK_RULES_DIALOG.EMPTY_RULES_LIST.TITLE' | translate\"\n          [subtitle]=\"'ACA_FOLDER_RULES.LINK_RULES_DIALOG.EMPTY_RULES_LIST.SUBTITLE' | translate\" />\n      </ng-template>\n    </ng-template>\n  </div>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\" class=\"aca-rule-set-picker__footer\">\n  <button mat-flat-button mat-dialog-close>\n    {{ 'ACA_FOLDER_RULES.LINK_RULES_DIALOG.CANCEL' | translate }}\n  </button>\n\n  <button\n    mat-flat-button color=\"primary\"\n    [disabled]=\"!hasOwnedRules || isBusy\"\n    (click)=\"onSubmit()\">\n    {{ 'ACA_FOLDER_RULES.LINK_RULES_DIALOG.SUBMIT' | translate }}\n  </button>\n</mat-dialog-actions>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { Rule } from '../../model/rule.model';\nimport { RuleGroupingItem } from '../../model/rule-grouping-item.model';\nimport { RuleSet } from '../../model/rule-set.model';\nimport { CommonModule } from '@angular/common';\nimport { RuleListItemUiComponent } from '../rule-list-item/rule-list-item.ui-component';\nimport { MatRippleModule } from '@angular/material/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, RuleListItemUiComponent, MatRippleModule, MatProgressSpinnerModule],\n  selector: 'aca-rule-list-grouping',\n  templateUrl: 'rule-list-grouping.ui-component.html',\n  styleUrls: ['rule-list-grouping.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-list-grouping' }\n})\nexport class RuleListGroupingUiComponent {\n  @Input()\n  items: RuleGroupingItem[] = [];\n  @Input()\n  selectedRule: Rule = null;\n  @Input()\n  showEnabledToggles = false;\n\n  @Output()\n  selectRule = new EventEmitter<Rule>();\n  @Output()\n  ruleEnabledChanged = new EventEmitter<[Rule, boolean]>();\n  @Output()\n  loadMoreRules = new EventEmitter<RuleSet>();\n  @Output()\n  loadMoreRuleSets = new EventEmitter<void>();\n\n  onRuleClicked(rule: Rule): void {\n    this.selectRule.emit(rule);\n  }\n\n  isSelected(rule): boolean {\n    return rule.id === this.selectedRule?.id;\n  }\n\n  onEnabledChanged(rule: Rule, isEnabled: boolean) {\n    this.ruleEnabledChanged.emit([rule, isEnabled]);\n  }\n\n  onClickLoadMoreRules(ruleSet: RuleSet) {\n    this.loadMoreRules.emit(ruleSet);\n  }\n\n  onClickLoadMoreRuleSets() {\n    this.loadMoreRuleSets.emit();\n  }\n}\n","<ng-container *ngFor=\"let item of items\">\n\n  <aca-rule-list-item\n    *ngIf=\"item.type === 'rule'; else loadMoreRules\"\n    matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\"\n    tabindex=\"0\"\n    [rule]=\"item.rule\"\n    [isSelected]=\"item.rule.id === this.selectedRule?.id\"\n    [showEnabledToggle]=\"showEnabledToggles\"\n    (click)=\"onRuleClicked(item.rule)\"\n    (enabledChanged)=\"onEnabledChanged(item.rule, $event)\" />\n\n  <ng-template #loadMoreRules>\n    <div\n      *ngIf=\"item.type === 'load-more-rules'; else loadMoreRuleSets\"\n      tabindex=\"0\"\n      class=\"aca-rule-list-grouping__non-rule-item aca-load-more\"\n      matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\"\n      (click)=\"onClickLoadMoreRules(item.ruleSet)\"\n      (keyup.enter)=\"onClickLoadMoreRules(item.ruleSet)\">\n      {{ 'ACA_FOLDER_RULES.RULE_LIST.LOAD_MORE_RULES' | translate }}\n    </div>\n  </ng-template>\n\n  <ng-template #loadMoreRuleSets>\n    <div\n      *ngIf=\"item.type === 'load-more-rule-sets'; else loadingRules\"\n      tabindex=\"0\"\n      class=\"aca-rule-list-grouping__non-rule-item aca-load-more\"\n      matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\"\n      (click)=\"onClickLoadMoreRuleSets()\"\n      (keyup.enter)=\"onClickLoadMoreRuleSets()\">\n      {{ 'ACA_FOLDER_RULES.RULE_LIST.LOAD_MORE_RULE_SETS' | translate }}\n    </div>\n  </ng-template>\n\n  <ng-template #loadingRules>\n    <div\n      tabindex=\"0\"\n      class=\"aca-rule-list-grouping__non-rule-item\"\n      matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\">\n      <mat-spinner mode=\"indeterminate\" [diameter]=\"16\" class=\"aca-spinner\" />\n      {{ 'ACA_FOLDER_RULES.RULE_LIST.LOADING_RULES' | translate }}\n    </div>\n  </ng-template>\n\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { RuleSet } from '../../model/rule-set.model';\nimport { Rule } from '../../model/rule.model';\nimport { RuleGroupingItem } from '../../model/rule-grouping-item.model';\nimport { FolderRuleSetsService } from '../../services/folder-rule-sets.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatAccordion, MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle } from '@angular/material/expansion';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RuleListGroupingUiComponent } from '../rule-list-grouping/rule-list-grouping.ui-component';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Observable } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatRippleModule,\n    MatIconModule,\n    MatTooltipModule,\n    RuleListGroupingUiComponent,\n    RouterModule,\n    MatButtonModule,\n    MatAccordion,\n    MatExpansionPanel,\n    MatExpansionPanelHeader,\n    MatExpansionPanelTitle\n  ],\n  selector: 'aca-rule-list',\n  templateUrl: './rule-list.ui-component.html',\n  styleUrls: ['./rule-list.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-rule-list' }\n})\nexport class RuleListUiComponent implements OnInit {\n  @Input({ required: true })\n  mainRuleSet$: Observable<RuleSet>;\n  @Input({ required: true })\n  folderId: string;\n  @Input()\n  inheritedRuleSets: RuleSet[] = [];\n  @Input()\n  hasMoreRuleSets = false;\n  @Input()\n  ruleSetsLoading = false;\n  @Input()\n  selectedRule = null;\n\n  @Output()\n  loadMoreRuleSets = new EventEmitter<void>();\n  @Output()\n  loadMoreRules = new EventEmitter<RuleSet>();\n  @Output()\n  selectRule = new EventEmitter<Rule>();\n  @Output()\n  ruleEnabledChanged = new EventEmitter<[Rule, boolean]>();\n  @Output()\n  ruleSetEditLinkClicked = new EventEmitter<RuleSet>();\n  @Output()\n  ruleSetUnlinkClicked = new EventEmitter<RuleSet>();\n\n  mainRuleSet: RuleSet = null;\n  mainRuleSetExpanded = true;\n  mainRuleSetGroupingItems: RuleGroupingItem[] = [];\n  inheritedRuleSetGroupingItems: RuleGroupingItem[] = [];\n  isMainRuleSetOwned = false;\n  isMainRuleSetLinked = false;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.mainRuleSet$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((ruleSet: RuleSet) => {\n      if (ruleSet) {\n        this.mainRuleSet = ruleSet;\n        this.isMainRuleSetOwned = FolderRuleSetsService.isOwnedRuleSet(ruleSet, this.folderId);\n        this.isMainRuleSetLinked = FolderRuleSetsService.isLinkedRuleSet(ruleSet, this.folderId);\n      }\n\n      this.mainRuleSetGroupingItems = ruleSet ? this.getRuleSetGroupingItems(ruleSet, !this.isMainRuleSetOwned) : [];\n    });\n\n    this.inheritedRuleSetGroupingItems = this.inheritedRuleSets.reduce((accumulator: RuleGroupingItem[], currentRuleSet: RuleSet) => {\n      accumulator.push(...this.getRuleSetGroupingItems(currentRuleSet, true));\n      return accumulator;\n    }, []);\n    if (this.ruleSetsLoading || this.hasMoreRuleSets) {\n      this.inheritedRuleSetGroupingItems.push({\n        type: this.ruleSetsLoading ? 'loading' : 'load-more-rule-sets'\n      });\n    }\n  }\n\n  getRuleSetGroupingItems(ruleSet: RuleSet, filterOutDisabledRules: boolean): RuleGroupingItem[] {\n    const items: RuleGroupingItem[] = ruleSet.rules\n      .filter((rule: Rule) => rule.isEnabled || !filterOutDisabledRules)\n      .map((rule: Rule) => ({\n        type: 'rule',\n        rule\n      }));\n    if (ruleSet.loadingRules || ruleSet.hasMoreRules) {\n      items.push(\n        ruleSet.loadingRules\n          ? {\n              type: 'loading'\n            }\n          : {\n              type: 'load-more-rules',\n              ruleSet\n            }\n      );\n    }\n    return items;\n  }\n\n  onLoadMoreRuleSets() {\n    this.loadMoreRuleSets.emit();\n  }\n\n  onLoadMoreRules(ruleSet: RuleSet) {\n    this.loadMoreRules.emit(ruleSet);\n  }\n\n  onSelectRule(rule: Rule) {\n    this.selectRule.emit(rule);\n  }\n\n  onRuleEnabledChanged(event: [Rule, boolean]) {\n    this.ruleEnabledChanged.emit(event);\n  }\n\n  onRuleSetEditLinkClicked(event: Event) {\n    event.stopPropagation();\n    this.ruleSetEditLinkClicked.emit(this.mainRuleSet);\n  }\n\n  onRuleSetUnlinkClicked(event: Event) {\n    event.stopPropagation();\n    this.ruleSetUnlinkClicked.emit(this.mainRuleSet);\n  }\n}\n","<mat-accordion multi>\n  @if (inheritedRuleSetGroupingItems.length > 0) {\n    <mat-expansion-panel [expanded]=\"true\" class=\"aca-rule-list__item\">\n      <mat-expansion-panel-header class=\"aca-rule-list__item__header\">\n        <mat-panel-title>\n          <span class=\"aca-rule-list__item__header__title\">\n            {{ 'ACA_FOLDER_RULES.RULE_LIST.INHERITED_RULES' | translate }}\n            <mat-icon\n              class=\"aca-rule-list__item__header__title__icon\"\n              [matTooltip]=\"'ACA_FOLDER_RULES.RULE_LIST.INHERITED_RULES_WILL_BE_RUN_FIRST' | translate\">\n              info\n            </mat-icon>\n          </span>\n        </mat-panel-title>\n      </mat-expansion-panel-header>\n      <aca-rule-list-grouping\n        [items]=\"inheritedRuleSetGroupingItems\"\n        [selectedRule]=\"selectedRule\"\n        (selectRule)=\"onSelectRule($event)\"\n        (ruleEnabledChanged)=\"onRuleEnabledChanged($event)\"\n        (loadMoreRules)=\"onLoadMoreRules($event)\"\n        (loadMoreRuleSets)=\"onLoadMoreRuleSets()\" />\n    </mat-expansion-panel>\n  }\n  @if (mainRuleSetGroupingItems.length > 0 || isMainRuleSetLinked) {\n    <mat-expansion-panel [expanded]=\"true\" class=\"aca-rule-list__item\">\n      <mat-expansion-panel-header class=\"aca-rule-list__item__header\">\n        <mat-panel-title>\n          <span class=\"aca-rule-list__item__header__title\" data-automation-id=\"main-rule-set-title\">\n            @if (isMainRuleSetOwned) {\n              {{ 'ACA_FOLDER_RULES.RULE_LIST.OWNED_RULES' | translate }}\n            } @else {\n              {{ 'ACA_FOLDER_RULES.RULE_LIST.LINKED_RULES' | translate }}\n            }\n          </span>\n\n          @if (!isMainRuleSetOwned) {\n            <mat-icon\n              class=\"aca-rule-list__item__header__icon\"\n              tabindex=\"0\"\n              aria-hidden=\"false\"\n              [attr.aria-label]=\"'ACA_FOLDER_RULES.RULE_LIST.EDIT_LINK_LABEL' | translate\"\n              [attr.title]=\"'ACA_FOLDER_RULES.RULE_LIST.EDIT_LINK_LABEL' | translate\"\n              (keydown.enter)=\"onRuleSetEditLinkClicked($event)\"\n              (keydown.enter)=\"onRuleSetEditLinkClicked($event)\"\n              (click)=\"onRuleSetEditLinkClicked($event)\">\n              edit\n            </mat-icon>\n            <mat-icon\n              class=\"aca-rule-list__item__header__icon\"\n              tabindex=\"0\"\n              aria-hidden=\"false\"\n              [attr.aria-label]=\"'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE_SET_LINK.TITLE' | translate\"\n              [attr.title]=\"'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE_SET_LINK.TITLE' | translate\"\n              (keydown.enter)=\"onRuleSetUnlinkClicked($event)\"\n              (click)=\"onRuleSetUnlinkClicked($event)\">\n              link_off\n            </mat-icon>\n          }\n        </mat-panel-title>\n\n      </mat-expansion-panel-header>\n      @if (mainRuleSetGroupingItems.length > 0) {\n        <aca-rule-list-grouping\n          [items]=\"mainRuleSetGroupingItems\"\n          [selectedRule]=\"selectedRule\"\n          [showEnabledToggles]=\"isMainRuleSetOwned\"\n          (selectRule)=\"onSelectRule($event)\"\n          (ruleEnabledChanged)=\"onRuleEnabledChanged($event)\"\n          (loadMoreRules)=\"onLoadMoreRules($event)\" />\n      } @else {\n      <div class=\"aca-rule-list__item__all-linked-rules-are-disabled\">\n        {{ 'ACA_FOLDER_RULES.RULE_LIST.ALL_LINKED_RULES_ARE_DISABLED' | translate }}\n        @if (mainRuleSet?.owningFolder?.id) {\n          <button mat-stroked-button [routerLink]=\"['/nodes', mainRuleSet.owningFolder.id, 'rules']\">\n            {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n          </button>\n        }\n      </div>\n      }\n    </mat-expansion-panel>\n  }\n</mat-accordion>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { FolderRulesService } from '../services/folder-rules.service';\nimport { Observable } from 'rxjs';\nimport { Rule } from '../model/rule.model';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport { NodeInfo } from '@alfresco/aca-shared/store';\nimport { delay } from 'rxjs/operators';\nimport { EditRuleDialogUiComponent } from '../rule-details/edit-rule-dialog.ui-component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmDialogComponent, EmptyContentComponent, NotificationService } from '@alfresco/adf-core';\nimport { ActionDefinitionTransformed } from '../model/rule-action.model';\nimport { ActionsService } from '../services/actions.service';\nimport { FolderRuleSetsService } from '../services/folder-rule-sets.service';\nimport { RuleSet } from '../model/rule-set.model';\nimport { RuleSetPickerSmartComponent } from '../rule-set-picker/rule-set-picker.smart-component';\nimport { MatSlideToggleChange, MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ActionParameterConstraint } from '../model/action-parameter-constraint.model';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { GenericErrorComponent, PageLayoutComponent } from '@alfresco/aca-shared';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { RuleListUiComponent } from '../rule-list/rule-list/rule-list.ui-component';\nimport { RuleDetailsUiComponent } from '../rule-details/rule-details.ui-component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatToolbar } from '@angular/material/toolbar';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    PageLayoutComponent,\n    MatButtonModule,\n    MatIconModule,\n    MatProgressBarModule,\n    MatSlideToggleModule,\n    MatDividerModule,\n    RuleListUiComponent,\n    RouterModule,\n    GenericErrorComponent,\n    RuleDetailsUiComponent,\n    EmptyContentComponent,\n    MatToolbar\n  ],\n  selector: 'aca-manage-rules',\n  templateUrl: 'manage-rules.smart-component.html',\n  styleUrls: ['manage-rules.smart-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.Default,\n  host: { class: 'aca-manage-rules' }\n})\nexport class ManageRulesSmartComponent implements OnInit {\n  nodeId = '';\n  isInheritanceEnabled = true;\n  isInheritanceToggleDisabled = false;\n\n  mainRuleSet$: Observable<RuleSet>;\n  inheritedRuleSets$: Observable<RuleSet[]>;\n  selectedRule$: Observable<Rule>;\n  selectedRuleSet$: Observable<RuleSet>;\n  hasMoreRuleSets$: Observable<boolean>;\n  ruleSetsLoading$: Observable<boolean>;\n  folderInfo$: Observable<NodeInfo>;\n\n  actionsLoading$: Observable<boolean>;\n  actionDefinitions$: Observable<ActionDefinitionTransformed[]>;\n  parameterConstraints$: Observable<ActionParameterConstraint[]>;\n  canEditMainRule = false;\n  canEditSelectedRule = false;\n  isMainRuleSetNotEmpty = false;\n  isInheritedRuleSetsNotEmpty = false;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  constructor(\n    private location: Location,\n    private folderRulesService: FolderRulesService,\n    private route: ActivatedRoute,\n    private matDialogService: MatDialog,\n    private notificationService: NotificationService,\n    private actionsService: ActionsService,\n    private folderRuleSetsService: FolderRuleSetsService\n  ) {}\n\n  ngOnInit() {\n    this.mainRuleSet$ = this.folderRuleSetsService.mainRuleSet$;\n    this.inheritedRuleSets$ = this.folderRuleSetsService.inheritedRuleSets$;\n    this.selectedRule$ = this.folderRulesService.selectedRule$;\n    this.selectedRuleSet$ = this.folderRuleSetsService.selectedRuleSet$;\n    this.hasMoreRuleSets$ = this.folderRuleSetsService.hasMoreRuleSets$;\n    this.ruleSetsLoading$ = this.folderRuleSetsService.isLoading$;\n    this.folderInfo$ = this.folderRuleSetsService.folderInfo$;\n\n    this.actionsLoading$ = this.actionsService.loading$.pipe(delay(0));\n    this.actionDefinitions$ = this.actionsService.actionDefinitionsListing$;\n    this.parameterConstraints$ = this.actionsService.parameterConstraints$;\n\n    this.folderRulesService.deletedRuleId$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((deletedRuleId) => this.onRuleDelete(deletedRuleId));\n\n    this.actionsService.loadActionDefinitions();\n\n    this.route.params.subscribe((params) => {\n      this.nodeId = params.nodeId;\n      if (this.nodeId) {\n        this.folderRulesService.getRuleSettings(this.nodeId).then((ruleSettings) => {\n          this.isInheritanceEnabled = ruleSettings.value;\n        });\n\n        this.folderRuleSetsService.loadRuleSets(this.nodeId);\n      }\n    });\n\n    this.actionDefinitions$\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actionDefinitions: ActionDefinitionTransformed[]) => this.actionsService.loadActionParameterConstraints(actionDefinitions));\n\n    this.mainRuleSet$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((ruleSet) => {\n      this.canEditMainRule = this.canEditRule(ruleSet);\n      this.isMainRuleSetNotEmpty = !!ruleSet;\n    });\n\n    this.inheritedRuleSets$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((inheritedRuleSet) => {\n      this.isInheritedRuleSetsNotEmpty = inheritedRuleSet.some((ruleSet) => ruleSet.rules.some((rule: Rule) => rule.isEnabled));\n    });\n\n    this.selectedRuleSet$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((ruleSet) => {\n      this.canEditSelectedRule = this.canEditRule(ruleSet);\n    });\n  }\n\n  goBack(): void {\n    this.location.back();\n  }\n\n  onSelectRule(rule: Rule) {\n    this.folderRulesService.selectRule(rule);\n  }\n\n  openCreateUpdateRuleDialog(model = {}) {\n    const dialogRef = this.matDialogService.open(EditRuleDialogUiComponent, {\n      width: '90%',\n      panelClass: 'aca-edit-rule-dialog-container',\n      data: {\n        model,\n        nodeId: this.nodeId,\n        parameterConstraints$: this.parameterConstraints$,\n        actionDefinitions$: this.actionDefinitions$\n      }\n    });\n\n    this.onSubmitRuleDialog(dialogRef);\n  }\n\n  onSubmitRuleDialog(dialogRef) {\n    dialogRef.componentInstance.submitted.subscribe(async (rule) => {\n      try {\n        if (rule.id) {\n          await this.onRuleUpdate(rule);\n        } else {\n          await this.onRuleCreate(rule);\n        }\n        dialogRef.close();\n      } catch (error) {\n        this.notificationService.showError(error.response.body.error.errorKey);\n      }\n    });\n  }\n\n  async onRuleUpdate(rule: Rule) {\n    const newRule = await this.folderRulesService.updateRule(this.nodeId, rule.id, rule);\n    this.folderRuleSetsService.addOrUpdateRuleInMainRuleSet(newRule);\n  }\n\n  async onRuleCreate(ruleCreateParams: Partial<Rule>) {\n    const newRule = await this.folderRulesService.createRule(this.nodeId, ruleCreateParams);\n    this.folderRuleSetsService.addOrUpdateRuleInMainRuleSet(newRule);\n  }\n\n  async onRuleEnabledToggle(rule: Rule, isEnabled: boolean) {\n    const updatedRule = await this.folderRulesService.updateRule(this.nodeId, rule.id, { ...rule, isEnabled });\n    this.folderRuleSetsService.addOrUpdateRuleInMainRuleSet(updatedRule);\n  }\n\n  async onInheritanceToggleChange(event: MatSlideToggleChange) {\n    this.isInheritanceToggleDisabled = true;\n    const ruleSettings = await this.folderRulesService.updateRuleSettings(this.nodeId, '-isInheritanceEnabled-', { value: event.checked });\n    this.isInheritanceEnabled = ruleSettings.value;\n    this.folderRuleSetsService.loadRuleSets(this.nodeId);\n    this.isInheritanceToggleDisabled = false;\n  }\n\n  onRuleDeleteButtonClicked(rule: Rule) {\n    this.matDialogService\n      .open(ConfirmDialogComponent, {\n        data: {\n          title: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE.TITLE',\n          message: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE.MESSAGE'\n        },\n        minWidth: '346px',\n        restoreFocus: true\n      })\n      .afterClosed()\n      .subscribe((result) => {\n        if (result) {\n          this.folderRulesService.deleteRule(this.nodeId, rule.id);\n        }\n      });\n  }\n\n  onRuleDelete(deletedRuleId: string) {\n    this.folderRuleSetsService.removeRuleFromMainRuleSet(deletedRuleId);\n  }\n\n  onLoadMoreRuleSets() {\n    this.folderRuleSetsService.loadMoreInheritedRuleSets();\n  }\n\n  onLoadMoreRules(ruleSet: RuleSet) {\n    this.folderRulesService.loadRules(ruleSet);\n  }\n\n  canEditRule(ruleSet: RuleSet): boolean {\n    return !ruleSet || FolderRuleSetsService.isOwnedRuleSet(ruleSet, this.nodeId);\n  }\n\n  openLinkRulesDialog(existingRuleSet?: RuleSet) {\n    this.matDialogService\n      .open(RuleSetPickerSmartComponent, {\n        width: '90%',\n        panelClass: 'aca-rule-set-picker-container',\n        data: {\n          nodeId: this.nodeId,\n          defaultNodeId: this.nodeId,\n          existingRuleSet\n        }\n      })\n      .afterClosed()\n      .subscribe((result) => {\n        if (result) {\n          this.folderRuleSetsService.refreshMainRuleSet();\n        }\n      });\n  }\n\n  onRuleSetUnlinkClicked(linkedRuleSet: RuleSet) {\n    this.matDialogService\n      .open(ConfirmDialogComponent, {\n        data: {\n          title: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE_SET_LINK.TITLE',\n          message: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE_SET_LINK.MESSAGE'\n        },\n        minWidth: '346px'\n      })\n      .afterClosed()\n      .subscribe(async (result) => {\n        if (result) {\n          try {\n            await this.folderRuleSetsService.deleteRuleSetLink(this.nodeId, linkedRuleSet.id);\n            this.folderRuleSetsService.refreshMainRuleSet();\n          } catch (error) {\n            this.notificationService.showError('ACA_FOLDER_RULES.ERRORS.DELETE_RULE_SET_LINK_FAILED');\n          }\n        }\n      });\n  }\n}\n","<aca-page-layout>\n\n  <div class=\"aca-page-layout-header\">\n    <button mat-icon-button (click)=\"goBack()\" [attr.aria-label]=\"'ACA_FOLDER_RULES.ACTIONS.GO_BACK' | translate\">\n      <mat-icon>arrow_back</mat-icon>\n    </button>\n    <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n\n      <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n        <mat-progress-bar color=\"primary\" mode=\"indeterminate\" />\n      </ng-container>\n\n      <ng-template #onLoaded>\n        <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n          <mat-toolbar class=\"aca-manage-rules__toolbar aca-manage-rules__actions-bar\">\n\n            <span class=\"aca-manage-rules__actions-bar__title\">\n              <mat-icon class=\"icon-aligner\">folder</mat-icon>\n              <span class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</span>\n            </span>\n\n            <mat-slide-toggle\n              data-automation-id=\"manage-rules-inheritance-toggle-button\"\n              class=\"aca-manage-rules__actions-bar__toggle\"\n              [checked]=\"isInheritanceEnabled\"\n              (change)=\"onInheritanceToggleChange($event)\"\n              [disabled]=\"isInheritanceToggleDisabled\"\n              [labelPosition]=\"'before'\">\n              {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n            </mat-slide-toggle>\n\n            <mat-divider vertical class=\"aca-manage-rules__actions-bar__vertical-divider\" aria-hidden=\"true\" />\n\n            <div class=\"aca-manage-rules__actions-bar__buttons\">\n              <button\n                *ngIf=\"!(mainRuleSet$ | async)\"\n                data-automation-id=\"manage-rules-link-button\"\n                mat-stroked-button\n                (click)=\"openLinkRulesDialog()\">\n                {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n              </button>\n\n              <button\n                *ngIf=\"canEditMainRule\"\n                data-automation-id=\"manage-rules-create-button\"\n                mat-flat-button color=\"primary\"\n                (click)=\"openCreateUpdateRuleDialog()\">\n                {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n              </button>\n            </div>\n\n          </mat-toolbar>\n          <mat-divider aria-hidden=\"true\" />\n\n          <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n            <aca-rule-list\n              [mainRuleSet$]=\"mainRuleSet$\"\n              [folderId]=\"nodeId\"\n              [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n              [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n              [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n              [selectedRule]=\"selectedRule$ | async\"\n              (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n              (loadMoreRules)=\"onLoadMoreRules($event)\"\n              (selectRule)=\"onSelectRule($event)\"\n              (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n              (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n              (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\" />\n\n            <div class=\"aca-manage-rules__container__rule-details\">\n\n              <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n                <div class=\"aca-manage-rules__container__rule-details__header__title\">\n                  <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n                    {{ selectedRule.name }}\n                  </div>\n                  <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n                    {{ selectedRule.description }}\n                  </div>\n                </div>\n\n                <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n                  <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n                    <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\"\n                            [attr.aria-label]=\"'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE.TITLE' | translate\">\n                      <mat-icon>delete_outline</mat-icon>\n                    </button>\n                    <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n                      {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n                    </button>\n                  </ng-container>\n\n                  <ng-template #goToFolderButton>\n                    <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n                      {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n                    </button>\n                  </ng-template>\n                </div>\n              </div>\n\n              <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n                <aca-rule-details\n                  [actionDefinitions]=\"actionDefinitions$ | async\"\n                  [parameterConstraints]=\"parameterConstraints$ | async\"\n                  [readOnly]=\"true\"\n                  [preview]=\"true\"\n                  [value]=\"selectedRule\"\n                  [nodeId]=\"nodeId\" />\n              </div>\n            </div>\n          </div>\n\n          <ng-template #emptyContent>\n            <adf-empty-content\n              icon=\"library_books\"\n              [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n              [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n            />\n          </ng-template>\n        </ng-container>\n\n        <ng-template #genericError>\n          <div class=\"aca-page-layout-error\">\n            <aca-generic-error />\n          </div>\n        </ng-template>\n\n      </ng-template>\n\n    </div>\n  </div>\n\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { provideTranslations } from '@alfresco/adf-core';\nimport { provideExtensionConfig, provideExtensions } from '@alfresco/adf-extensions';\nimport { EnvironmentProviders, NgModule, Provider } from '@angular/core';\nimport * as rules from './folder-rules.rules';\nimport { provideRouter, Routes } from '@angular/router';\nimport { ManageRulesSmartComponent } from './manage-rules/manage-rules.smart-component';\nimport { PluginEnabledGuard } from '@alfresco/aca-shared';\n\nexport const FOLDER_RULES_ROUTES: Routes = [\n  {\n    path: 'rules',\n    component: ManageRulesSmartComponent,\n    canActivate: [PluginEnabledGuard],\n    data: {\n      plugin: 'plugins.folderRules'\n    }\n  }\n];\n\nexport function provideFolderRulesExtension(): (Provider | EnvironmentProviders)[] {\n  return [\n    provideTranslations('folder-rules', 'assets/folder-rules'),\n    provideExtensionConfig(['folder-rules.plugin.json']),\n    provideRouter(FOLDER_RULES_ROUTES),\n    provideExtensions({\n      evaluators: {\n        'rules.isFolderRulesEnabled': rules.isFolderRulesEnabled\n      }\n    })\n  ];\n}\n\n/** @deprecated use `provideFolderRulesExtension()` instead **/\n@NgModule({\n  providers: [...provideFolderRulesExtension()]\n})\nexport class AcaFolderRulesModule {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './folder-rules.module';\nexport { ManageRulesSmartComponent } from './manage-rules/manage-rules.smart-component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i6","i7","i3","i4","i5","i8","i3.FolderRulesService","i2.FolderRulesService","i6.ActionsService","i7.FolderRuleSetsService","i9","i11","rules.isFolderRulesEnabled"],"mappings":"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"}