@alfresco/aca-content 8.0.0-16785129299 → 8.0.0-16811620225

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"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, 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 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 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","<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","/*!\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\" subscriptSizing=\"dynamic\">\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\" subscriptSizing=\"dynamic\"\n [class]=\"{ 'aca-hidden': isComparatorHidden }\" data-automation-id=\"comparator-form-field\">\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 subscriptSizing=\"dynamic\" [ngSwitch]=\"selectedField.type\">\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 { Component, forwardRef, HostBinding, Input, OnChanges, OnDestroy, SimpleChanges, ViewEncapsulation } from '@angular/core';\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';\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, OnDestroy, OnChanges {\n @HostBinding('class.aca-secondaryBackground')\n @Input()\n secondaryBackground = false;\n @HostBinding('class.aca-childCompositeCondition')\n @Input()\n childCondition = false;\n @Input()\n readOnly = false;\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 private formSubscription = this.form.valueChanges.subscribe((value: any) => {\n this.onChange(value);\n this.onTouch();\n });\n\n public invertedControl = this.form.get('inverted') as FormControl;\n public booleanModeControl = this.form.get('booleanMode') as FormControl;\n\n get compositeConditionsFormArray(): FormArray {\n return this.form.get('compositeConditions') as FormArray;\n }\n get simpleConditionsFormArray(): FormArray {\n return this.form.get('simpleConditions') as FormArray;\n }\n get conditionFormControls(): FormControl[] {\n return [...(this.compositeConditionsFormArray.controls as FormControl[]), ...(this.simpleConditionsFormArray.controls as FormControl[])];\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 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 ngOnDestroy() {\n this.formSubscription.unsubscribe();\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","<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\n <div\n class=\"aca-rule-composite-condition__form__row\"\n *ngFor=\"let control of conditionFormControls; let i = index\">\n\n <mat-form-field *ngIf=\"i === 0\" subscriptSizing=\"dynamic\">\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\" subscriptSizing=\"dynamic\" 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\n </div>\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\" appearance=\"fill\" subscriptSizing=\"dynamic\">\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-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 aca-rule-action-card-view\"\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 \" *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()\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","<ng-container [formGroup]=\"form\">\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 floatLabel=\"always\"\n appearance=\"fill\"\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\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</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 { 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 appearance=\"fill\" floatLabel='always' class=\"aca-rule-details__form__row__field\">\n <mat-label *ngIf=\"!name.value\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.NAME' | translate }}</mat-label>\n <input\n id=\"rule-details-name-input\"\n matInput type=\"text\" formControlName=\"name\" 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 floatLabel='auto' appearance=\"fill\" 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 <div class=\"aca-label\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.WHEN' | translate }}</div>\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 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 <div class=\"aca-label\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.OPTIONS' | translate }}</div>\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\"\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 class=\"aca-rule-set-picker__header__close\" tabindex=\"-1\">\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 { 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 ],\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 inheritedRuleSetsExpanded = true;\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","<div\n *ngIf=\"inheritedRuleSetGroupingItems.length > 0\"\n class=\"aca-rule-list__item\"\n data-automation-id=\"rule-list-item\"\n [ngClass]=\"{ 'aca-expanded': inheritedRuleSetsExpanded }\">\n\n <div\n tabindex=\"0\"\n class=\"aca-rule-list__item__header\"\n matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\"\n (click)=\"inheritedRuleSetsExpanded = !inheritedRuleSetsExpanded\"\n (keyup.enter)=\"inheritedRuleSetsExpanded = !inheritedRuleSetsExpanded\">\n\n <span class=\"aca-rule-list__item__header__title\">\n {{ 'ACA_FOLDER_RULES.RULE_LIST.INHERITED_RULES' | translate }}\n <mat-icon class=\"aca-rule-list__item__header__title__icon\" [matTooltip]=\"'ACA_FOLDER_RULES.RULE_LIST.INHERITED_RULES_WILL_BE_RUN_FIRST' | translate\">\n info\n </mat-icon>\n </span>\n <mat-icon class=\"aca-rule-list__item__header__icon\">\n {{ inheritedRuleSetsExpanded ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </div>\n\n <aca-rule-list-grouping\n *ngIf=\"inheritedRuleSetsExpanded\"\n [items]=\"inheritedRuleSetGroupingItems\"\n [selectedRule]=\"selectedRule\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledChanged($event)\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\" />\n</div>\n\n<div\n *ngIf=\"mainRuleSetGroupingItems.length > 0 || isMainRuleSetLinked\"\n class=\"aca-rule-list__item\"\n data-automation-id=\"rule-list-item\"\n [ngClass]=\"{ 'aca-expanded': mainRuleSetExpanded }\">\n\n <div\n tabindex=\"0\"\n class=\"aca-rule-list__item__header\"\n matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\"\n (click)=\"mainRuleSetExpanded = !mainRuleSetExpanded\"\n (keyup.enter)=\"mainRuleSetExpanded = !mainRuleSetExpanded\">\n\n <span class=\"aca-rule-list__item__header__title\" data-automation-id=\"main-rule-set-title\">\n <ng-container *ngIf=\"isMainRuleSetOwned; else linkedRuleSet\">\n {{ 'ACA_FOLDER_RULES.RULE_LIST.OWNED_RULES' | translate }}\n </ng-container>\n <ng-template #linkedRuleSet>\n {{ 'ACA_FOLDER_RULES.RULE_LIST.LINKED_RULES' | translate }}\n </ng-template>\n </span>\n\n <ng-container *ngIf=\"!isMainRuleSetOwned\">\n <mat-icon class=\"aca-rule-list__item__header__icon\" (click)=\"onRuleSetEditLinkClicked($event)\">edit</mat-icon>\n <mat-icon class=\"aca-rule-list__item__header__icon\" (click)=\"onRuleSetUnlinkClicked($event)\">link_off</mat-icon>\n </ng-container>\n\n <mat-icon class=\"aca-rule-list__item__header__icon\">\n {{ mainRuleSetExpanded ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </div>\n\n <ng-container *ngIf=\"mainRuleSetExpanded\">\n <aca-rule-list-grouping\n *ngIf=\"mainRuleSetGroupingItems.length > 0; else emptyLinkedRuleSet\"\n [items]=\"mainRuleSetGroupingItems\"\n [selectedRule]=\"selectedRule\"\n [showEnabledToggles]=\"isMainRuleSetOwned\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledChanged($event)\"\n (loadMoreRules)=\"onLoadMoreRules($event)\" />\n\n <ng-template #emptyLinkedRuleSet>\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 <button *ngIf=\"mainRuleSet?.owningFolder?.id\" mat-stroked-button [routerLink]=\"['/nodes', mainRuleSet.owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </div>\n </ng-template>\n </ng-container>\n\n</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 { 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, ToolbarComponent, ToolbarTitleComponent } 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';\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 ToolbarTitleComponent,\n ToolbarComponent\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 <adf-toolbar class=\"adf-toolbar--inline\">\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 </adf-toolbar>\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 <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\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\" />\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 </adf-toolbar>\n <mat-divider />\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 { ExtensionService, provideExtensionConfig } from '@alfresco/adf-extensions';\nimport { NgModule } 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\nconst routes: Routes = [\n {\n path: 'rules',\n component: ManageRulesSmartComponent,\n canActivate: [PluginEnabledGuard],\n data: {\n plugin: 'plugins.folderRules'\n }\n }\n];\n\n@NgModule({\n providers: [provideTranslations('folder-rules', 'assets/folder-rules'), provideExtensionConfig(['folder-rules.plugin.json']), provideRouter(routes)]\n})\nexport class AcaFolderRulesModule {\n constructor(extensions: ExtensionService) {\n extensions.setEvaluators({\n 'rules.isFolderRulesEnabled': rules.isFolderRulesEnabled\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\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","i3","i5","i6","i4","i7","i8","i3.FolderRulesService","i2.FolderRulesService","i6.ActionsService","i7.FolderRuleSetsService","i11","rules.isFolderRulesEnabled"],"mappings":"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"}
1
+ {"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, 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 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 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","<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","/*!\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\" subscriptSizing=\"dynamic\">\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\" subscriptSizing=\"dynamic\"\n [class]=\"{ 'aca-hidden': isComparatorHidden }\" data-automation-id=\"comparator-form-field\">\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 subscriptSizing=\"dynamic\" [ngSwitch]=\"selectedField.type\">\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 { Component, forwardRef, HostBinding, Input, OnChanges, OnDestroy, SimpleChanges, ViewEncapsulation } from '@angular/core';\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';\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, OnDestroy, OnChanges {\n @HostBinding('class.aca-secondaryBackground')\n @Input()\n secondaryBackground = false;\n @HostBinding('class.aca-childCompositeCondition')\n @Input()\n childCondition = false;\n @Input()\n readOnly = false;\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 private formSubscription = this.form.valueChanges.subscribe((value: any) => {\n this.onChange(value);\n this.onTouch();\n });\n\n public invertedControl = this.form.get('inverted') as FormControl;\n public booleanModeControl = this.form.get('booleanMode') as FormControl;\n\n get compositeConditionsFormArray(): FormArray {\n return this.form.get('compositeConditions') as FormArray;\n }\n get simpleConditionsFormArray(): FormArray {\n return this.form.get('simpleConditions') as FormArray;\n }\n get conditionFormControls(): FormControl[] {\n return [...(this.compositeConditionsFormArray.controls as FormControl[]), ...(this.simpleConditionsFormArray.controls as FormControl[])];\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 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 ngOnDestroy() {\n this.formSubscription.unsubscribe();\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","<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\n <div\n class=\"aca-rule-composite-condition__form__row\"\n *ngFor=\"let control of conditionFormControls; let i = index\">\n\n <mat-form-field *ngIf=\"i === 0\" subscriptSizing=\"dynamic\">\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\" subscriptSizing=\"dynamic\" 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\n </div>\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\" appearance=\"fill\" subscriptSizing=\"dynamic\">\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-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 aca-rule-action-card-view\"\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 \" *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()\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","<ng-container [formGroup]=\"form\">\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 floatLabel=\"always\"\n appearance=\"fill\"\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\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</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 { 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 appearance=\"fill\" floatLabel='always' class=\"aca-rule-details__form__row__field\">\n <mat-label *ngIf=\"!name.value\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.NAME' | translate }}</mat-label>\n <input\n id=\"rule-details-name-input\"\n matInput type=\"text\" formControlName=\"name\" 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 floatLabel='auto' appearance=\"fill\" 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 <div class=\"aca-label\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.WHEN' | translate }}</div>\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 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 <div class=\"aca-label\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LABEL.OPTIONS' | translate }}</div>\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\"\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 class=\"aca-rule-set-picker__header__close\" tabindex=\"-1\">\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 { 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 ],\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 inheritedRuleSetsExpanded = true;\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","<div\n *ngIf=\"inheritedRuleSetGroupingItems.length > 0\"\n class=\"aca-rule-list__item\"\n data-automation-id=\"rule-list-item\"\n [ngClass]=\"{ 'aca-expanded': inheritedRuleSetsExpanded }\">\n\n <div\n tabindex=\"0\"\n class=\"aca-rule-list__item__header\"\n matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\"\n (click)=\"inheritedRuleSetsExpanded = !inheritedRuleSetsExpanded\"\n (keyup.enter)=\"inheritedRuleSetsExpanded = !inheritedRuleSetsExpanded\">\n\n <span class=\"aca-rule-list__item__header__title\">\n {{ 'ACA_FOLDER_RULES.RULE_LIST.INHERITED_RULES' | translate }}\n <mat-icon class=\"aca-rule-list__item__header__title__icon\" [matTooltip]=\"'ACA_FOLDER_RULES.RULE_LIST.INHERITED_RULES_WILL_BE_RUN_FIRST' | translate\">\n info\n </mat-icon>\n </span>\n <mat-icon class=\"aca-rule-list__item__header__icon\">\n {{ inheritedRuleSetsExpanded ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </div>\n\n <aca-rule-list-grouping\n *ngIf=\"inheritedRuleSetsExpanded\"\n [items]=\"inheritedRuleSetGroupingItems\"\n [selectedRule]=\"selectedRule\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledChanged($event)\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\" />\n</div>\n\n<div\n *ngIf=\"mainRuleSetGroupingItems.length > 0 || isMainRuleSetLinked\"\n class=\"aca-rule-list__item\"\n data-automation-id=\"rule-list-item\"\n [ngClass]=\"{ 'aca-expanded': mainRuleSetExpanded }\">\n\n <div\n tabindex=\"0\"\n class=\"aca-rule-list__item__header\"\n matRipple matRippleColor=\"hsla(0,0%,0%,0.05)\"\n (click)=\"mainRuleSetExpanded = !mainRuleSetExpanded\"\n (keyup.enter)=\"mainRuleSetExpanded = !mainRuleSetExpanded\">\n\n <span class=\"aca-rule-list__item__header__title\" data-automation-id=\"main-rule-set-title\">\n <ng-container *ngIf=\"isMainRuleSetOwned; else linkedRuleSet\">\n {{ 'ACA_FOLDER_RULES.RULE_LIST.OWNED_RULES' | translate }}\n </ng-container>\n <ng-template #linkedRuleSet>\n {{ 'ACA_FOLDER_RULES.RULE_LIST.LINKED_RULES' | translate }}\n </ng-template>\n </span>\n\n <ng-container *ngIf=\"!isMainRuleSetOwned\">\n <mat-icon class=\"aca-rule-list__item__header__icon\" (click)=\"onRuleSetEditLinkClicked($event)\">edit</mat-icon>\n <mat-icon class=\"aca-rule-list__item__header__icon\" (click)=\"onRuleSetUnlinkClicked($event)\">link_off</mat-icon>\n </ng-container>\n\n <mat-icon class=\"aca-rule-list__item__header__icon\">\n {{ mainRuleSetExpanded ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </div>\n\n <ng-container *ngIf=\"mainRuleSetExpanded\">\n <aca-rule-list-grouping\n *ngIf=\"mainRuleSetGroupingItems.length > 0; else emptyLinkedRuleSet\"\n [items]=\"mainRuleSetGroupingItems\"\n [selectedRule]=\"selectedRule\"\n [showEnabledToggles]=\"isMainRuleSetOwned\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledChanged($event)\"\n (loadMoreRules)=\"onLoadMoreRules($event)\" />\n\n <ng-template #emptyLinkedRuleSet>\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 <button *ngIf=\"mainRuleSet?.owningFolder?.id\" mat-stroked-button [routerLink]=\"['/nodes', mainRuleSet.owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </div>\n </ng-template>\n </ng-container>\n\n</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 { 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, ToolbarComponent, ToolbarTitleComponent } 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';\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 ToolbarTitleComponent,\n ToolbarComponent\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 <adf-toolbar class=\"adf-toolbar--inline\">\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 </adf-toolbar>\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 <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\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\" />\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 </adf-toolbar>\n <mat-divider />\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","i3","i5","i6","i4","i7","i8","i3.FolderRulesService","i2.FolderRulesService","i6.ActionsService","i7.FolderRuleSetsService","i11","rules.isFolderRulesEnabled"],"mappings":"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"}