@gravitee/ui-particles-angular 16.3.0-renovate-all-devdependencies-minor-patch-ec0aaf6 → 16.3.0-renovate-angular-1a06bc7

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":"gravitee-ui-particles-angular-gio-el.mjs","sources":["../../../projects/ui-particles-angular/gio-el/models/ConditionGroup.ts","../../../projects/ui-particles-angular/gio-el/models/ExpressionLanguageBuilder.ts","../../../projects/ui-particles-angular/gio-el/models/Condition.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.component.html","../../../projects/ui-particles-angular/gio-el/models/ConditionsModel.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-field/gio-el-field.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-field/gio-el-field.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor-condition-group/gio-el-editor-condition-group.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor-condition-group/gio-el-editor-condition-group.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-field/gio-el-field.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor-condition-group/gio-el-editor-condition-group.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor.harness.ts","../../../projects/ui-particles-angular/gio-el/models/ConditionModel.ts","../../../projects/ui-particles-angular/gio-el/models/public-api.ts","../../../projects/ui-particles-angular/gio-el/public-api.ts","../../../projects/ui-particles-angular/gio-el/gravitee-ui-particles-angular-gio-el.ts"],"sourcesContent":["/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Condition } from './Condition';\nimport { ConditionType } from './ConditionModel';\n\nexport class ConditionGroup {\n constructor(\n public condition: 'AND' | 'OR',\n public conditions: (Condition<ConditionType> | ConditionGroup)[],\n ) {}\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isNil } from 'lodash';\n\nimport { ConditionGroup } from './ConditionGroup';\nimport { Operator } from './Operator';\nimport { Condition } from './Condition';\nimport { ConditionType } from './ConditionModel';\n\nexport class ExpressionLanguageBuilder {\n private static CONDITION_MAP = {\n OR: '||',\n AND: '&&',\n };\n private static OPERATOR_MAP: Record<Operator, (field: string, value: unknown) => string> = {\n EQUALS: (field, value) => `${field} == ${value}`,\n NOT_EQUALS: (field, value) => `${field} != ${value}`,\n LESS_THAN: (field, value) => `${field} < ${value}`,\n LESS_THAN_OR_EQUALS: (field, value) => `${field} <= ${value}`,\n GREATER_THAN: (field, value) => `${field} > ${value}`,\n GREATER_THAN_OR_EQUALS: (field, value) => `${field} >= ${value}`,\n CONTAINS: (field, value) => `${field} matches \"${value}\"`,\n NOT_CONTAINS: (field, value) => `!${field} matches \"${value}\"`,\n STARTS_WITH: (field, value) => `${field} matches \"^${value}\"`,\n ENDS_WITH: (field, value) => `${field} matches \"${value}$\"`,\n };\n\n private static buildConditionGroup(conditionGroup: ConditionGroup): string {\n let el = '';\n for (const condition of conditionGroup.conditions) {\n if (condition instanceof ConditionGroup) {\n const hasMultipleConditions = condition.conditions.length > 1;\n\n if (hasMultipleConditions) {\n el += '( ';\n }\n el += ExpressionLanguageBuilder.buildConditionGroup(condition);\n if (hasMultipleConditions) {\n el += ' )';\n }\n } else {\n el += ExpressionLanguageBuilder.buildCondition(condition);\n }\n\n if (condition !== conditionGroup.conditions[conditionGroup.conditions.length - 1]) {\n el += ` ${ExpressionLanguageBuilder.CONDITION_MAP[conditionGroup.condition]} `;\n }\n }\n if (el === '') {\n return '';\n }\n return el;\n }\n\n private static buildCondition(condition: Condition<ConditionType>): string {\n const operator = ExpressionLanguageBuilder.OPERATOR_MAP[condition.operator];\n return operator(\n ExpressionLanguageBuilder.toFieldString(condition.field),\n ExpressionLanguageBuilder.valueToString(condition.type, condition.value),\n );\n }\n\n private static valueToString<T extends ConditionType>(type: T, value: unknown): string {\n if (!type) {\n return '';\n }\n\n switch (type) {\n case 'string':\n return `\"${value}\"`;\n case 'date':\n return `${(value as Date).getTime()}l`;\n default:\n return `${value}`;\n }\n }\n\n private static toFieldString(field: Condition<ConditionType>['field']): string {\n if (field instanceof Object && !isNil(field.key1Value) && !isNil(field.key2Value)) {\n return `#${field.field}?.[\"${field.key1Value}\"]?.[${field.key2Value}]`;\n } else if (field instanceof Object && !isNil(field.key1Value)) {\n return `#${field.field}?.[\"${field.key1Value}\"]`;\n } else if (field instanceof Object) {\n return `#${field.field}`;\n }\n return `#${field}`;\n }\n\n constructor(private conditionGroup: ConditionGroup) {}\n\n public build(): string {\n const el = ExpressionLanguageBuilder.buildConditionGroup(this.conditionGroup);\n\n return `{ ${el} }`;\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Operator } from './Operator';\nimport { ConditionType } from './ConditionModel';\n\ntype ConditionValue<T> = T extends 'string'\n ? string\n : T extends 'number'\n ? number\n : T extends 'date'\n ? Date\n : T extends 'boolean'\n ? boolean\n : unknown;\n\nexport class Condition<T extends ConditionType> {\n constructor(\n public field:\n | string\n | {\n field: string;\n key1Value?: string;\n key2Value?: string;\n },\n public type: T,\n public operator: Operator,\n public value?: ConditionValue<T>,\n ) {}\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isEmpty } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { Operator } from '../../../models/Operator';\nimport { ConditionForm } from '../../gio-el-editor.component';\n\n@Component({\n selector: 'gio-el-editor-type-boolean',\n imports: [MatFormFieldModule, MatSelectModule, ReactiveFormsModule, MatSlideToggle],\n templateUrl: './gio-el-editor-type-boolean.component.html',\n styleUrl: './gio-el-editor-type-boolean.component.scss',\n})\nexport class GioElEditorTypeBooleanComponent implements OnChanges {\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n ];\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'boolean') {\n throw new Error('Boolean field is required!');\n }\n\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(null));\n this.conditionFormGroup.get('value')?.setValue(true);\n }\n }\n}\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-slide-toggle class=\"toggle\" #valueToggle formControlName=\"value\">\n <mat-label>{{ valueToggle.checked ? 'True' : 'False' }}</mat-label>\n </mat-slide-toggle>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, DestroyRef, inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isDate, isEmpty } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Operator } from '../../../models/Operator';\nimport { ConditionForm } from '../../gio-el-editor.component';\n\n@Component({\n selector: 'gio-el-editor-type-date',\n imports: [MatFormFieldModule, MatSelectModule, MatInputModule, ReactiveFormsModule, MatDatepickerModule],\n templateUrl: './gio-el-editor-type-date.component.html',\n styleUrl: './gio-el-editor-type-date.component.scss',\n})\nexport class GioElEditorTypeDateComponent implements OnChanges {\n private readonly destroyRef = inject(DestroyRef);\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n { label: 'Less than', value: 'LESS_THAN' },\n { label: 'Less than or equals', value: 'LESS_THAN_OR_EQUALS' },\n { label: 'Greater than', value: 'GREATER_THAN' },\n { label: 'Greater than or equals', value: 'GREATER_THAN_OR_EQUALS' },\n ];\n\n protected datepickerControl = new FormControl();\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'date') {\n throw new Error('Date field is required!');\n }\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(true));\n\n this.datepickerControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n if (!isDate(value)) {\n return;\n }\n // Convert date to UTC ignoring timezone\n const dateUtc = Date.UTC(\n value.getFullYear(),\n value.getMonth(),\n value.getDate(),\n value.getHours(),\n value.getMinutes(),\n value.getSeconds(),\n );\n this.conditionFormGroup.controls.value.setValue(new Date(dateUtc));\n });\n }\n }\n}\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"picker\" [formControl]=\"datepickerControl\" />\n <mat-hint>MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isEmpty } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ConditionForm } from '../../gio-el-editor.component';\nimport { Operator } from '../../../models/Operator';\n\n@Component({\n selector: 'gio-el-editor-type-number',\n imports: [MatFormFieldModule, MatSelectModule, MatInputModule, ReactiveFormsModule],\n templateUrl: './gio-el-editor-type-number.component.html',\n styleUrl: './gio-el-editor-type-number.component.scss',\n})\nexport class GioElEditorTypeNumberComponent implements OnChanges {\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n { label: 'Less than', value: 'LESS_THAN' },\n { label: 'Less than or equals', value: 'LESS_THAN_OR_EQUALS' },\n { label: 'Greater than', value: 'GREATER_THAN' },\n { label: 'Greater than or equals', value: 'GREATER_THAN_OR_EQUALS' },\n ];\n\n protected min: number | null = null;\n protected max: number | null = null;\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'number') {\n throw new Error('Number field is required!');\n }\n if (field.min) {\n this.min = field.min;\n }\n if (field.max) {\n this.max = field.max;\n }\n\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(true));\n }\n }\n}\n","<!--\n\n Copyright (C) 2025 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"value\" placeholder=\"Value\" type=\"number\" [min]=\"min\" [max]=\"max\" />\n @if (conditionFormGroup.controls.value.hasError('min')) {\n <mat-error> Value must be at least {{ min }} </mat-error>\n }\n @if (conditionFormGroup.controls.value.hasError('max')) {\n <mat-error> Value must be at most {{ max }} </mat-error>\n }\n </mat-form-field>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, DestroyRef, inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isEmpty, toString } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ConditionForm } from '../../gio-el-editor.component';\nimport { Operator } from '../../../models/Operator';\n\ntype AutocompleteValue = { value: string; label: string };\n\n@Component({\n selector: 'gio-el-editor-type-string',\n imports: [CommonModule, MatFormFieldModule, MatSelectModule, MatInputModule, ReactiveFormsModule, MatAutocompleteModule],\n templateUrl: './gio-el-editor-type-string.component.html',\n styleUrl: './gio-el-editor-type-string.component.scss',\n})\nexport class GioElEditorTypeStringComponent implements OnChanges {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n ];\n\n protected filteredOptions$ = new Observable<AutocompleteValue[]>();\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'string') {\n throw new Error('String field is required!');\n }\n\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(null));\n\n const values = field.values?.map(value => (typeof value === 'string' ? { value, label: value } : value));\n if (values && !isEmpty(values)) {\n this.filteredOptions$ = this.conditionFormGroup.get('value')!.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n startWith(''),\n map(value => filterValues(values, toString(value) ?? '')),\n );\n }\n }\n }\n}\n\nconst filterValues = (values: AutocompleteValue[], value: string) => {\n const filterValue = value.toLowerCase();\n\n return values.filter(option => option.label.toLowerCase().includes(filterValue) || option.value.toLowerCase().includes(filterValue));\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"value\" placeholder=\"Value\" [matAutocomplete]=\"auto\" />\n\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n @for (option of filteredOptions$ | async; track option) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ConditionModel } from './ConditionModel';\n\nexport type ParentConditionModel = { field: string; label: string; conditions: (ParentConditionModel | ConditionModel)[] };\n\nexport type ConditionsModel = (ParentConditionModel | ConditionModel)[];\n\nexport const isConditionModel = (conditions: ParentConditionModel | ConditionModel): conditions is ConditionModel => {\n return 'field' in conditions && 'label' in conditions && 'type' in conditions;\n};\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Component,\n Input,\n SimpleChanges,\n OnChanges,\n inject,\n DestroyRef,\n HostBinding,\n Optional,\n Self,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { isEmpty, toString } from 'lodash';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs/operators';\nimport { MatButtonModule } from '@angular/material/button';\nimport { GioIconsModule } from '@gravitee/ui-particles-angular';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\nimport { ConditionModel } from '../../models/ConditionModel';\nimport { ConditionsModel, isConditionModel, ParentConditionModel } from '../../models/ConditionsModel';\n\ntype FieldAutocompleteOption = ConditionModel;\n\ntype FieldAutocompleteGroup = {\n field: string;\n label: string;\n options: FieldAutocompleteOption[];\n};\n\ntype FieldAutocompleteModel = (FieldAutocompleteOption | FieldAutocompleteGroup)[];\n\ntype Key1AutocompleteValue = { value: string; label: string };\n\n@Component({\n selector: 'gio-el-field',\n imports: [CommonModule, MatAutocompleteModule, MatInputModule, ReactiveFormsModule, MatButtonModule, GioIconsModule],\n templateUrl: './gio-el-field.component.html',\n styleUrl: './gio-el-field.component.scss',\n providers: [{ provide: MatFormFieldControl, useExisting: GioElFieldComponent }],\n})\nexport class GioElFieldComponent implements OnChanges, MatFormFieldControl<ConditionModel>, ControlValueAccessor, OnDestroy {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({ required: true })\n public conditionsModel: ConditionsModel = [];\n\n protected fieldFilteredOptions$ = new Observable<FieldAutocompleteModel>();\n protected key1FilteredOptions$ = new Observable<Key1AutocompleteValue[]>();\n\n protected selectedConditionModel: ConditionModel | null = null;\n\n protected fieldFormControl = new FormControl<ConditionModel | null>(null);\n protected key1FormControl = new FormControl<string | null>(null);\n protected key2FormControl = new FormControl<string | null>(null);\n\n // From MatFormFieldControl\n public set value(_value: ConditionModel | null) {\n // Not implemented. Only for select new value.\n }\n\n // From MatFormFieldControl\n public stateChanges = new Subject<void>();\n\n // From MatFormFieldControl\n public static nextId = 0;\n @HostBinding()\n public id = `gio-el-editor-input-${GioElFieldComponent.nextId++}`;\n\n // From MatFormFieldControl\n @Input()\n public get placeholder() {\n return this._placeholder;\n }\n public set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n private _placeholder: string = '';\n\n // From MatFormFieldControl\n public focused = false;\n\n // From MatFormFieldControl\n public get empty() {\n return !this.fieldFormControl.value;\n }\n\n // From MatFormFieldControl\n @HostBinding('class.floating')\n public get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n // From MatFormFieldControl\n @Input()\n public get required() {\n return this._required;\n }\n public set required(req: boolean) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n private _required = false;\n\n // From MatFormFieldControl\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this.fieldFormControl.disable() : this.fieldFormControl.enable();\n this.stateChanges.next();\n }\n private _disabled = false;\n\n public touched = false;\n\n // From MatFormFieldControl\n public get errorState(): boolean {\n return this.fieldFormControl.invalid && this.touched;\n }\n\n // From MatFormFieldControl\n public controlType = 'gio-el-editor-input';\n\n // From MatFormFieldControl\n @HostBinding('attr.aria-describedBy')\n public userAriaDescribedBy?: string | undefined;\n\n // From MatFormFieldControl\n public setDescribedByIds(ids: string[]): void {\n this.userAriaDescribedBy = ids.join(' ');\n }\n\n // From MatFormFieldControl\n // disableAutomaticLabeling?: boolean | undefined;\n\n protected _onChange: (_value: ConditionModel | null) => void = () => ({});\n protected _onTouched: () => void = () => ({});\n\n constructor(\n @Optional() @Self() public readonly ngControl: NgControl,\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n ) {\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => {\n this.focused = !!origin;\n\n this.touched = true;\n this._onTouched();\n this.stateChanges.next();\n });\n }\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionsModel) {\n const flattenConditionsModelToOption = (\n conditions: ConditionsModel,\n parent: ParentConditionModel | null = null,\n ): FieldAutocompleteOption[] => {\n return conditions.flatMap(condition => {\n if (isConditionModel(condition)) {\n return {\n ...condition,\n label: parent ? `${parent.label} > ${condition.label}` : condition.label,\n field: parent ? `${parent.field}.${condition.field}` : condition.field,\n } satisfies FieldAutocompleteOption;\n }\n return flattenConditionsModelToOption(condition.conditions, {\n ...condition,\n field: parent ? `${parent.field}.${condition.field}` : condition.field,\n label: parent ? `${parent.label} > ${condition.label}` : condition.label,\n });\n });\n };\n\n const autocompleteModel: FieldAutocompleteModel = this.conditionsModel.map(conditionModel => {\n if (isConditionModel(conditionModel)) {\n return {\n ...conditionModel,\n } satisfies FieldAutocompleteOption;\n }\n return {\n field: conditionModel.field,\n label: conditionModel.label,\n options: flattenConditionsModelToOption(conditionModel.conditions).map(conditions => ({\n ...conditions,\n field: `${conditionModel.field}.${conditions.field}`,\n })),\n } satisfies FieldAutocompleteGroup;\n });\n\n if (autocompleteModel && !isEmpty(autocompleteModel)) {\n this.fieldFilteredOptions$ = this.fieldFormControl.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n startWith(''),\n map(value => fieldFilterValues(autocompleteModel, toString(value) ?? '')),\n );\n }\n\n combineLatest([\n this.fieldFormControl.valueChanges,\n this.key1FormControl.valueChanges.pipe(startWith(this.key1FormControl.value)),\n this.key2FormControl.valueChanges.pipe(startWith(this.key1FormControl.value)),\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(([fieldValue, key1Value, key2Value]) => {\n let map = fieldValue?.map;\n if (map?.type === 'Map') {\n map = { ...map, key1Value };\n }\n if (map?.type === 'MultiMap') {\n map = { ...map, key1Value, key2Value };\n }\n\n if (fieldValue && isConditionModel(fieldValue)) {\n this._onChange({\n ...fieldValue,\n map,\n });\n } else {\n this._onChange(null);\n }\n this.stateChanges.next();\n });\n }\n }\n\n public displayFn(option: FieldAutocompleteOption | FieldAutocompleteGroup): string {\n return option?.field;\n }\n\n public onFieldSelected($event: MatAutocompleteSelectedEvent) {\n this.selectedConditionModel = $event.option.value;\n\n const key1AutocompleteValues = this.selectedConditionModel?.map?.key1Values?.map(value =>\n typeof value === 'string' ? { value, label: value } : value,\n );\n\n if (key1AutocompleteValues && !isEmpty(key1AutocompleteValues)) {\n this.key1FilteredOptions$ = this.key1FormControl.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n startWith(''),\n map(value => key1FilterValues(key1AutocompleteValues, toString(value) ?? '')),\n );\n }\n }\n\n // From ControlValueAccessor interface\n public writeValue(): void {\n // Not implemented. Only for select new value.\n }\n\n // From ControlValueAccessor interface\n public registerOnChange(fn: (value: ConditionModel | null) => void): void {\n this._onChange = fn;\n }\n\n // From ControlValueAccessor interface\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // From ControlValueAccessor interface\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled) {\n this.fieldFormControl.disable();\n } else {\n this.fieldFormControl.enable();\n }\n }\n\n // From ControlValueAccessor interface\n public onContainerClick(event: MouseEvent) {\n if ((event.target as Element).tagName.toLowerCase() != 'input') {\n this.elementRef.nativeElement.querySelector('input')?.focus();\n }\n }\n\n public ngOnDestroy() {\n this.stateChanges.complete();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n}\n\nconst fieldFilterValues = (autocompleteModel: FieldAutocompleteModel, value: string) => {\n const filterValue = value.toLowerCase();\n return autocompleteModel.filter(option => {\n if ('options' in option) {\n return option.options.filter(condition => condition.label.toLowerCase().includes(filterValue));\n }\n return option.label.toLowerCase().includes(filterValue);\n });\n};\n\nconst key1FilterValues = (values: Key1AutocompleteValue[], value: string) => {\n const filterValue = value.toLowerCase();\n return values.filter(option => option.label.toLowerCase().includes(filterValue) || option.value.toLowerCase().includes(filterValue));\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"container\">\n <span class=\"text\">#</span>\n <input class=\"input fieldSelect\" matInput [formControl]=\"fieldFormControl\" [matAutocomplete]=\"fieldSelectAuto\" />\n\n <mat-autocomplete\n autoActiveFirstOption\n requireSelection\n #fieldSelectAuto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [displayWith]=\"displayFn\"\n (optionSelected)=\"onFieldSelected($event)\"\n >\n @for (option of fieldFilteredOptions$ | async; track option) {\n @if (option.hasOwnProperty('options')) {\n <mat-optgroup [label]=\"option.label\">\n @for (option of $any(option).options; track option) {\n <mat-option [value]=\"option\">{{ option.label }}</mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option [value]=\"option\">{{ option.label }}</mat-option>\n }\n }\n </mat-autocomplete>\n @if (selectedConditionModel?.map) {\n <span class=\"text\">[\"</span>\n <input class=\"input key1\" matInput [formControl]=\"key1FormControl\" [matAutocomplete]=\"key1SelectAuto\" />\n\n <mat-autocomplete #key1SelectAuto=\"matAutocomplete\" panelWidth=\"auto\">\n @for (option of key1FilteredOptions$ | async; track option) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-autocomplete>\n\n <span class=\"text\">\"]</span>\n }\n @if (selectedConditionModel?.map?.type === 'MultiMap') {\n <span class=\"text\">[</span>\n <input class=\"input key2\" type=\"number\" min=\"0\" matInput [formControl]=\"key2FormControl\" />\n\n <span class=\"text\">]</span>\n }\n</div>\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { GioIconsModule } from '@gravitee/ui-particles-angular';\n\nimport { GioElEditorTypeBooleanComponent } from '../gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.component';\nimport { GioElEditorTypeDateComponent } from '../gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.component';\nimport { GioElEditorTypeNumberComponent } from '../gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.component';\nimport { GioElEditorTypeStringComponent } from '../gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.component';\nimport { ConditionForm, ConditionGroupForm } from '../gio-el-editor.component';\nimport { ConditionsModel } from '../../models/ConditionsModel';\nimport { GioElFieldComponent } from '../gio-el-field/gio-el-field.component';\n\n@Component({\n selector: 'gio-el-editor-condition-group',\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatMenuModule,\n GioIconsModule,\n GioElEditorTypeBooleanComponent,\n GioElEditorTypeDateComponent,\n GioElEditorTypeStringComponent,\n GioElEditorTypeNumberComponent,\n GioElFieldComponent,\n ],\n templateUrl: './gio-el-editor-condition-group.component.html',\n styleUrl: './gio-el-editor-condition-group.component.scss',\n})\nexport class GioElEditorConditionGroupComponent {\n @Input({\n required: true,\n })\n public conditionGroupFormGroup!: FormGroup<ConditionGroupForm>;\n\n /**\n * Conditions model to generate the fields for the conditions.\n */\n @Input({\n required: true,\n })\n public conditionsModel: ConditionsModel = [];\n\n /**\n * Level of the node in the tree. Useful for testing with Harness to limit the scope of the query.\n */\n @Input()\n @HostBinding('attr.node-lvl')\n public nodeLvl = 0;\n\n @Output()\n public remove = new EventEmitter<void>();\n\n protected addConditionGroup() {\n this.conditionGroupFormGroup.controls.conditions.push(newConditionGroupFormGroup(), { emitEvent: true });\n this.checkMultipleCondition();\n }\n\n protected addCondition() {\n this.conditionGroupFormGroup.controls.conditions.push(newConditionFormGroup());\n this.checkMultipleCondition();\n }\n\n protected removeCondition(conditionIndex: number) {\n this.conditionGroupFormGroup.controls.conditions.removeAt(conditionIndex);\n this.checkMultipleCondition();\n }\n\n protected removeConditionGroup() {\n this.remove.emit();\n this.checkMultipleCondition();\n }\n\n protected isConditionGroupForm(\n formGroup: FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>,\n ): formGroup is FormGroup<ConditionGroupForm> {\n return 'condition' in formGroup.controls && 'conditions' in formGroup.controls;\n }\n\n private checkMultipleCondition(): void {\n if (this.conditionGroupFormGroup.controls.conditions.length > 1) {\n this.conditionGroupFormGroup.controls.condition.enable();\n } else {\n this.conditionGroupFormGroup.controls.condition.disable();\n }\n }\n}\n\nconst newConditionGroupFormGroup = (): FormGroup<ConditionGroupForm> => {\n return new FormGroup<ConditionGroupForm>({\n condition: new FormControl({ value: 'AND', disabled: true }, { nonNullable: true, validators: Validators.required }),\n conditions: new FormArray<FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>>([]),\n });\n};\n\nconst newConditionFormGroup = (): FormGroup<ConditionForm> => {\n return new FormGroup<ConditionForm>({\n field: new FormControl(null),\n operator: new FormControl(null),\n value: new FormControl(null),\n });\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"conditionGroup\" [formGroup]=\"conditionGroupFormGroup\">\n <div class=\"conditionGroup__header\">\n <mat-button-toggle-group\n class=\"gio-button-toggle-group\"\n name=\"condition\"\n aria-label=\"Condition\"\n formControlName=\"condition\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n <mat-button-toggle class=\"mat-button-toggle-group\" value=\"AND\">AND</mat-button-toggle>\n <mat-button-toggle class=\"mat-button-toggle-group\" value=\"OR\">OR</mat-button-toggle>\n </mat-button-toggle-group>\n\n <div class=\"conditionGroup__header__addBtn\">\n <button mat-button [matMenuTriggerFor]=\"addBtn\">\n <mat-icon svgIcon=\"gio:plus\">Add</mat-icon>\n </button>\n <mat-menu #addBtn=\"matMenu\">\n <button mat-menu-item (click)=\"addConditionGroup()\">Add Group</button>\n <button mat-menu-item (click)=\"addCondition()\">Add Condition</button>\n </mat-menu>\n </div>\n\n @if (nodeLvl > 0) {\n <button class=\"conditionGroup__header__removeBtn\" mat-button aria-label=\"Remove Group\" (click)=\"removeConditionGroup()\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n }\n </div>\n\n <div class=\"conditionGroup__conditions\">\n @for (condition of conditionGroupFormGroup.controls.conditions.controls; track conditionIndex; let conditionIndex = $index) {\n @if (isConditionGroupForm(condition)) {\n <gio-el-editor-condition-group\n class=\"conditionGroup__conditions__conditionGroup\"\n [conditionGroupFormGroup]=\"condition\"\n [conditionsModel]=\"conditionsModel\"\n [nodeLvl]=\"nodeLvl + 1\"\n (remove)=\"removeCondition(conditionIndex)\"\n ></gio-el-editor-condition-group>\n } @else {\n <div\n class=\"conditionGroup__conditions__condition\"\n [formGroup]=\"conditionGroupFormGroup.controls.conditions.at(conditionIndex)\"\n [attr.node-lvl]=\"nodeLvl\"\n >\n <mat-form-field class=\"conditionGroup__conditions__condition__field\">\n <mat-label>Field</mat-label>\n <gio-el-field formControlName=\"field\" [conditionsModel]=\"conditionsModel\"></gio-el-field>\n </mat-form-field>\n\n @switch (condition.controls.field.value?.type) {\n @case ('string') {\n <gio-el-editor-type-string [conditionFormGroup]=\"condition\"></gio-el-editor-type-string>\n }\n @case ('boolean') {\n <gio-el-editor-type-boolean [conditionFormGroup]=\"condition\"></gio-el-editor-type-boolean>\n }\n @case ('number') {\n <gio-el-editor-type-number [conditionFormGroup]=\"condition\"></gio-el-editor-type-number>\n }\n @case ('date') {\n <gio-el-editor-type-date [conditionFormGroup]=\"condition\"></gio-el-editor-type-date>\n }\n }\n\n <button\n class=\"conditionGroup__conditions__condition__removeBtn\"\n mat-button\n aria-label=\"Remove Condition\"\n (click)=\"removeCondition(conditionIndex)\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </div>\n }\n }\n </div>\n</div>\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\nimport { get, has, isEmpty, isNil } from 'lodash';\nimport { GioIconsModule } from '@gravitee/ui-particles-angular';\n\nimport { ConditionModel, ConditionType } from '../models/ConditionModel';\nimport { ConditionsModel } from '../models/ConditionsModel';\nimport { ExpressionLanguageBuilder } from '../models/ExpressionLanguageBuilder';\nimport { ConditionGroup } from '../models/ConditionGroup';\nimport { Condition } from '../models/Condition';\nimport { Operator } from '../models/Operator';\n\nimport { GioElEditorConditionGroupComponent } from './gio-el-editor-condition-group/gio-el-editor-condition-group.component';\n\nexport type ConditionForm = {\n field: FormControl<ConditionModel | null>;\n operator: FormControl<Operator | null>;\n value: FormControl<string | boolean | Date | number | null>;\n};\n\nexport type ConditionGroupForm = {\n condition: FormControl<'AND' | 'OR'>;\n conditions: FormArray<FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>>;\n};\n\n@Component({\n selector: 'gio-el-editor',\n imports: [\n MatButtonToggleModule,\n ReactiveFormsModule,\n MatButtonModule,\n GioIconsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n GioElEditorConditionGroupComponent,\n ],\n templateUrl: './gio-el-editor.component.html',\n styleUrl: './gio-el-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioElEditorComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({ required: true })\n public conditionsModel: ConditionsModel = [];\n\n @Output()\n public elChange = new EventEmitter<string>();\n\n protected conditionGroupFormGroup = newConditionGroupFormGroup();\n\n protected elOutput?: string;\n\n public ngOnInit() {\n this.conditionGroupFormGroup.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map(() => this.conditionGroupFormGroup.getRawValue()),\n map(value => {\n type ConditionGroupValue = typeof value;\n type ConditionValue = Exclude<ConditionGroupValue['conditions'], undefined>[number];\n\n const toCondition = (conditionValue: ConditionValue): Condition<ConditionType> | ConditionGroup | null => {\n if (isConditionGroupValue(conditionValue)) {\n return toConditionGroup(conditionValue as ConditionGroupValue);\n }\n if (\n !isConditionValue(conditionValue) ||\n isNil(conditionValue.field) ||\n isNil(conditionValue.operator) ||\n isNil(conditionValue.value)\n ) {\n return null;\n }\n let field: Condition<ConditionType>['field'] = conditionValue.field.field;\n if (conditionValue.field.map) {\n field = {\n field: conditionValue.field.field,\n key1Value: get(conditionValue.field.map, 'key1Value') ?? undefined,\n key2Value: get(conditionValue.field.map, 'key2Value') ?? undefined,\n };\n }\n\n return new Condition(field, conditionValue.field.type, conditionValue.operator, conditionValue.value);\n };\n\n const toConditionGroup = (conditionGroupValue: ConditionGroupValue): ConditionGroup | null => {\n const conditions: ConditionGroup['conditions'] = [];\n if (!conditionGroupValue.condition || !conditionGroupValue.conditions || isEmpty(conditionGroupValue.conditions)) {\n return null;\n }\n for (const conditionValue of conditionGroupValue.conditions) {\n const condition = toCondition(conditionValue);\n if (condition) {\n conditions.push(condition);\n }\n }\n if (isEmpty(conditions)) {\n return null;\n }\n\n return new ConditionGroup(conditionGroupValue.condition, conditions);\n };\n\n const conditionGroupValue = toConditionGroup(value);\n if (conditionGroupValue) {\n this.elOutput = new ExpressionLanguageBuilder(conditionGroupValue).build();\n this.elChange.emit(this.elOutput);\n }\n }),\n )\n .subscribe();\n }\n}\n\nconst newConditionGroupFormGroup = (): FormGroup<ConditionGroupForm> => {\n return new FormGroup<ConditionGroupForm>({\n condition: new FormControl({ value: 'AND', disabled: true }, { nonNullable: true, validators: Validators.required }),\n conditions: new FormArray<FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>>([]),\n });\n};\n\nconst isConditionGroupValue = (\n value: unknown,\n): value is {\n condition: 'AND' | 'OR';\n conditions: unknown[];\n} => {\n return !!value && has(value, 'condition') && has(value, 'conditions');\n};\n\nconst isConditionValue = (\n value: unknown,\n): value is {\n field: ConditionModel;\n operator: Operator;\n value: string | boolean | Date | number;\n} => {\n return !!value && has(value, 'field') && has(value, 'operator') && has(value, 'value');\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<gio-el-editor-condition-group\n [conditionGroupFormGroup]=\"conditionGroupFormGroup\"\n [conditionsModel]=\"conditionsModel\"\n></gio-el-editor-condition-group>\n\n@if (elOutput) {\n <div class=\"preview\">\n {{ elOutput }}\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentHarness, parallel } from '@angular/cdk/testing';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport abstract class GioElEditorTypeComponentHarness extends ComponentHarness {\n public getOperatorSelector = this.locatorFor(MatSelectHarness.with({ selector: '[formControlName=\"operator\"]' }));\n\n public async getAvailableOperators(): Promise<string[]> {\n const operatorSelector = await this.getOperatorSelector();\n await operatorSelector.open();\n const options = await operatorSelector.getOptions();\n return parallel(() => options.map(async option => await option.getText()));\n }\n\n public async selectOperator(operator: string): Promise<void> {\n const operatorSelector = await this.getOperatorSelector();\n await operatorSelector.clickOptions({ text: operator });\n }\n\n public async getOperatorValue(): Promise<string> {\n const operatorSelector = await this.getOperatorSelector();\n return operatorSelector.getValueText();\n }\n\n public abstract getValue(): Promise<string | boolean | number>;\n\n public abstract setValue(value: string | boolean | number | Date): Promise<void>;\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatSlideToggleHarness } from '@angular/material/slide-toggle/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeBooleanHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-boolean';\n\n public async getValue(): Promise<boolean> {\n const slideToggleHarness = await this.locatorFor(MatSlideToggleHarness)();\n return await slideToggleHarness.isChecked();\n }\n\n public async setValue(value: boolean): Promise<void> {\n const slideToggleHarness = await this.locatorFor(MatSlideToggleHarness)();\n if (value !== (await slideToggleHarness.isChecked())) {\n await slideToggleHarness.toggle();\n }\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeStringHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-string';\n\n public async getValue(): Promise<string> {\n const input = await this.locatorFor(MatInputHarness)();\n return await input.getValue();\n }\n\n public async setValue(value: string): Promise<void> {\n const input = await this.locatorFor(MatInputHarness)();\n await input.setValue(value);\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeNumberHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-number';\n\n public async getValue(): Promise<number> {\n const input = await this.locatorFor(MatInputHarness)();\n return Number(await input.getValue());\n }\n\n public async setValue(value: number): Promise<void> {\n const input = await this.locatorFor(MatInputHarness)();\n await input.setValue(value.toString());\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatDatepickerInputHarness } from '@angular/material/datepicker/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeDateHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-date';\n\n public async getValue(): Promise<string> {\n const datepickerInputHarness = await this.locatorFor(MatDatepickerInputHarness)();\n return await datepickerInputHarness.getValue();\n }\n\n public async setValue(value: Date): Promise<void> {\n const datepickerInputHarness = await this.locatorFor(MatDatepickerInputHarness)();\n await datepickerInputHarness.setValue(value.toISOString());\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nexport class GioElFieldHarness extends ComponentHarness {\n public static hostSelector = 'gio-el-field';\n\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioElFieldHarness> {\n return new HarnessPredicate(GioElFieldHarness, options);\n }\n\n private getAutocomplete = this.locatorFor(MatAutocompleteHarness.with({ selector: '.fieldSelect' }));\n\n private getKey1Input = this.locatorForOptional(MatInputHarness.with({ selector: '.key1' }));\n private getKey2Input = this.locatorForOptional(MatInputHarness.with({ selector: '.key2' }));\n\n public async setValue(field: string, key1?: string, key2?: string) {\n const autocomplete = await this.getAutocomplete();\n await autocomplete.focus();\n await autocomplete.selectOption({ text: new RegExp(`${field}`) });\n\n if (key1) {\n const key1Input = await this.getKey1Input();\n await key1Input?.setValue(key1);\n }\n\n if (key2) {\n const key2Input = await this.getKey2Input();\n await key2Input?.setValue(key2);\n }\n }\n\n public async getValue(): Promise<{\n field: string;\n key1?: string;\n key2?: string;\n }> {\n const autocomplete = await this.getAutocomplete();\n const field = await autocomplete.getValue();\n\n const key1Input = await this.getKey1Input();\n const key1 = await key1Input?.getValue();\n\n const key2Input = await this.getKey2Input();\n const key2 = await key2Input?.getValue();\n\n return { field, key1, key2 };\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate, parallel } from '@angular/cdk/testing';\nimport { MatMenuHarness } from '@angular/material/menu/testing';\nimport { MatButtonToggleGroupHarness } from '@angular/material/button-toggle/testing';\nimport { DivHarness } from '@gravitee/ui-particles-angular/testing';\n\nimport { GioElEditorTypeBooleanHarness } from '../gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.harness';\nimport { GioElEditorTypeStringHarness } from '../gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.harness';\nimport { GioElEditorTypeNumberHarness } from '../gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.harness';\nimport { GioElEditorTypeDateHarness } from '../gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.harness';\nimport { GioElFieldHarness } from '../gio-el-field/gio-el-field.harness';\n\ntype ConditionGroupHarnessValues = {\n condition: 'AND' | 'OR';\n conditions: (ConditionGroupHarnessValues | ConditionHarnessValues)[];\n};\ntype ConditionHarnessValues = {\n field: { field: string; key1?: string; key2?: string };\n operator?: string;\n value?: string | boolean | number;\n};\n\nexport class GioElEditorConditionGroupHarness extends ComponentHarness {\n public static hostSelector = 'gio-el-editor-condition-group';\n\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioElEditorConditionGroupHarness> {\n return new HarnessPredicate(GioElEditorConditionGroupHarness, options);\n }\n\n public getNodeLvl = () => this.host().then(host => host.getAttribute('node-lvl'));\n\n private getAddMenuButton = this.locatorFor(MatMenuHarness.with({ triggerText: /Add/ }));\n private getConditionButtonToggleGroup = this.locatorFor(MatButtonToggleGroupHarness.with({ selector: '[formControlName=\"condition\"]' }));\n private getConditionsHarness = async () => {\n const nodeLvl = await this.getNodeLvl();\n if (!nodeLvl) {\n throw new Error('Node level not found');\n }\n return this.locatorForAll(\n DivHarness.with({\n selector: `.conditionGroup__conditions__condition[node-lvl=\"${nodeLvl}\"]`,\n }),\n GioElEditorConditionGroupHarness.with({\n selector: `.conditionGroup__conditions__conditionGroup[node-lvl=\"${Number(nodeLvl) + 1}\"]`,\n }),\n )();\n };\n\n private getConditionHarness = async (index: number) => (await this.getConditionsHarness()).at(index);\n private getConditionTypeHarness = (divHarness: DivHarness) =>\n divHarness.childLocatorForOptional(\n GioElEditorTypeStringHarness,\n GioElEditorTypeBooleanHarness,\n GioElEditorTypeNumberHarness,\n GioElEditorTypeDateHarness,\n )();\n private getConditionField = (divHarness: DivHarness) =>\n divHarness.childLocatorFor(GioElFieldHarness.with({ selector: '[formControlName=\"field\"]' }))();\n\n public async clickAddNewConditionButton(): Promise<void> {\n await (await this.getAddMenuButton()).clickItem({ text: /Add Condition/ });\n }\n\n public async clickAddNewGroupButton(): Promise<void> {\n await (await this.getAddMenuButton()).clickItem({ text: /Add Group/ });\n }\n\n public async getConditionValue(): Promise<'AND' | 'OR'> {\n const conditionButtonToggleGroup = await this.getConditionButtonToggleGroup();\n const selectedToggles = await conditionButtonToggleGroup.getToggles({ checked: true });\n if (selectedToggles.length !== 1) {\n throw new Error('No operator selected');\n }\n const andOrMap: Record<string, 'AND' | 'OR'> = {\n AND: 'AND',\n OR: 'OR',\n };\n\n return andOrMap[await selectedToggles[0].getText()];\n }\n\n public async selectConditionValue(operator: 'AND' | 'OR'): Promise<void> {\n const conditionButtonToggleGroup = await this.getConditionButtonToggleGroup();\n const toggles = await conditionButtonToggleGroup.getToggles({ text: operator });\n if (toggles.length !== 1) {\n throw new Error('No operator selected');\n }\n return toggles[0].check();\n }\n\n public async selectConditionField(index: number, field: string, key1?: string, key2?: string): Promise<void> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionField = await this.getConditionField(conditionDiv);\n await conditionField.setValue(field, key1, key2);\n }\n\n public async selectConditionOperator(index: number, operator: string): Promise<void> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionType = await this.getConditionTypeHarness(conditionDiv);\n if (!conditionType) {\n throw new Error(`Condition type not found. Select field first`);\n }\n\n await conditionType.selectOperator(operator);\n }\n\n public async getConditionAvailableOperators(index: number): Promise<string[]> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionType = await this.getConditionTypeHarness(conditionDiv);\n if (!conditionType) {\n throw new Error(`Condition type not found. Select field first`);\n }\n return conditionType.getAvailableOperators();\n }\n\n public async setConditionValue(index: number, value: string | boolean | number | Date): Promise<void> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionType = await this.getConditionTypeHarness(conditionDiv);\n if (!conditionType) {\n throw new Error(`Condition type not found. Select field first`);\n }\n\n if (conditionType instanceof GioElEditorTypeStringHarness && typeof value === 'string') {\n await conditionType.setValue(value);\n } else if (conditionType instanceof GioElEditorTypeBooleanHarness && typeof value === 'boolean') {\n await conditionType.setValue(value);\n } else if (conditionType instanceof GioElEditorTypeNumberHarness && typeof value === 'number') {\n await conditionType.setValue(value);\n } else if (conditionType instanceof GioElEditorTypeDateHarness && value instanceof Date) {\n await conditionType.setValue(value);\n } else {\n throw new Error(`Invalid value for condition type`);\n }\n }\n\n public async getConditionGroup(index: number): Promise<GioElEditorConditionGroupHarness> {\n const conditionGroup = await this.getConditionHarness(index);\n\n if (!conditionGroup || !(conditionGroup instanceof GioElEditorConditionGroupHarness)) {\n throw new Error(`Condition group with index ${index} not found`);\n }\n return conditionGroup;\n }\n\n public async getConditions(): Promise<ConditionGroupHarnessValues> {\n const getConditionsDiv = await this.getConditionsHarness();\n\n const conditions = await parallel(() =>\n getConditionsDiv.map(async condition => {\n if (condition instanceof GioElEditorConditionGroupHarness) {\n return await condition.getConditions();\n }\n const conditionField = await this.getConditionField(condition);\n\n const conditionType = await this.getConditionTypeHarness(condition);\n return {\n field: await conditionField.getValue(),\n operator: await conditionType?.getOperatorValue(),\n value: await conditionType?.getValue(),\n };\n }),\n );\n\n return {\n condition: await this.getConditionValue(),\n conditions,\n };\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport { GioElEditorConditionGroupHarness } from './gio-el-editor-condition-group/gio-el-editor-condition-group.harness';\n\nexport class GioElEditorHarness extends ComponentHarness {\n public static hostSelector = 'gio-el-editor';\n\n public getMainConditionGroup = this.locatorFor(GioElEditorConditionGroupHarness);\n\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioElEditorHarness> {\n return new HarnessPredicate(GioElEditorHarness, options);\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type ConditionType = 'string' | 'number' | 'date' | 'boolean';\n\nexport type ConditionModelBase<T extends ConditionType> = {\n field: string;\n label: string;\n type: T;\n map?:\n | {\n type: 'Map';\n key1Values?: string[] | { value: string; label: string }[];\n key1Value?: string | null;\n }\n | {\n type: 'MultiMap';\n key1Value?: string | null;\n key1Values?: string[];\n key2Value?: string | null;\n };\n};\n\nexport type StringConditionModel = ConditionModelBase<'string'> & {\n values?:\n | string[]\n | {\n value: string;\n label: string;\n }[];\n};\n\nexport type NumberConditionModel = ConditionModelBase<'number'> & {\n min?: number;\n max?: number;\n};\n\nexport type DateConditionModel = ConditionModelBase<'date'>;\n\nexport type BooleanConditionModel = ConditionModelBase<'boolean'>;\n\nexport type ConditionModel = StringConditionModel | NumberConditionModel | DateConditionModel | BooleanConditionModel;\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './Condition';\nexport * from './ConditionModel';\nexport * from './ConditionsModel';\nexport * from './ExpressionLanguageBuilder';\nexport * from './Operator';\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { GioElEditorComponent } from './gio-el-editor/gio-el-editor.component';\nexport { GioElEditorHarness } from './gio-el-editor/gio-el-editor.harness';\n\nexport * from './models/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i1","i2","i4","newConditionGroupFormGroup","i6"],"mappings":"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"}
1
+ {"version":3,"file":"gravitee-ui-particles-angular-gio-el.mjs","sources":["../../../projects/ui-particles-angular/gio-el/models/ConditionGroup.ts","../../../projects/ui-particles-angular/gio-el/models/ExpressionLanguageBuilder.ts","../../../projects/ui-particles-angular/gio-el/models/Condition.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.component.html","../../../projects/ui-particles-angular/gio-el/models/ConditionsModel.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-field/gio-el-field.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-field/gio-el-field.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor-condition-group/gio-el-editor-condition-group.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor-condition-group/gio-el-editor-condition-group.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor.component.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor.component.html","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-field/gio-el-field.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor-condition-group/gio-el-editor-condition-group.harness.ts","../../../projects/ui-particles-angular/gio-el/gio-el-editor/gio-el-editor.harness.ts","../../../projects/ui-particles-angular/gio-el/models/ConditionModel.ts","../../../projects/ui-particles-angular/gio-el/models/public-api.ts","../../../projects/ui-particles-angular/gio-el/public-api.ts","../../../projects/ui-particles-angular/gio-el/gravitee-ui-particles-angular-gio-el.ts"],"sourcesContent":["/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Condition } from './Condition';\nimport { ConditionType } from './ConditionModel';\n\nexport class ConditionGroup {\n constructor(\n public condition: 'AND' | 'OR',\n public conditions: (Condition<ConditionType> | ConditionGroup)[],\n ) {}\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isNil } from 'lodash';\n\nimport { ConditionGroup } from './ConditionGroup';\nimport { Operator } from './Operator';\nimport { Condition } from './Condition';\nimport { ConditionType } from './ConditionModel';\n\nexport class ExpressionLanguageBuilder {\n private static CONDITION_MAP = {\n OR: '||',\n AND: '&&',\n };\n private static OPERATOR_MAP: Record<Operator, (field: string, value: unknown) => string> = {\n EQUALS: (field, value) => `${field} == ${value}`,\n NOT_EQUALS: (field, value) => `${field} != ${value}`,\n LESS_THAN: (field, value) => `${field} < ${value}`,\n LESS_THAN_OR_EQUALS: (field, value) => `${field} <= ${value}`,\n GREATER_THAN: (field, value) => `${field} > ${value}`,\n GREATER_THAN_OR_EQUALS: (field, value) => `${field} >= ${value}`,\n CONTAINS: (field, value) => `${field} matches \"${value}\"`,\n NOT_CONTAINS: (field, value) => `!${field} matches \"${value}\"`,\n STARTS_WITH: (field, value) => `${field} matches \"^${value}\"`,\n ENDS_WITH: (field, value) => `${field} matches \"${value}$\"`,\n };\n\n private static buildConditionGroup(conditionGroup: ConditionGroup): string {\n let el = '';\n for (const condition of conditionGroup.conditions) {\n if (condition instanceof ConditionGroup) {\n const hasMultipleConditions = condition.conditions.length > 1;\n\n if (hasMultipleConditions) {\n el += '( ';\n }\n el += ExpressionLanguageBuilder.buildConditionGroup(condition);\n if (hasMultipleConditions) {\n el += ' )';\n }\n } else {\n el += ExpressionLanguageBuilder.buildCondition(condition);\n }\n\n if (condition !== conditionGroup.conditions[conditionGroup.conditions.length - 1]) {\n el += ` ${ExpressionLanguageBuilder.CONDITION_MAP[conditionGroup.condition]} `;\n }\n }\n if (el === '') {\n return '';\n }\n return el;\n }\n\n private static buildCondition(condition: Condition<ConditionType>): string {\n const operator = ExpressionLanguageBuilder.OPERATOR_MAP[condition.operator];\n return operator(\n ExpressionLanguageBuilder.toFieldString(condition.field),\n ExpressionLanguageBuilder.valueToString(condition.type, condition.value),\n );\n }\n\n private static valueToString<T extends ConditionType>(type: T, value: unknown): string {\n if (!type) {\n return '';\n }\n\n switch (type) {\n case 'string':\n return `\"${value}\"`;\n case 'date':\n return `${(value as Date).getTime()}l`;\n default:\n return `${value}`;\n }\n }\n\n private static toFieldString(field: Condition<ConditionType>['field']): string {\n if (field instanceof Object && !isNil(field.key1Value) && !isNil(field.key2Value)) {\n return `#${field.field}?.[\"${field.key1Value}\"]?.[${field.key2Value}]`;\n } else if (field instanceof Object && !isNil(field.key1Value)) {\n return `#${field.field}?.[\"${field.key1Value}\"]`;\n } else if (field instanceof Object) {\n return `#${field.field}`;\n }\n return `#${field}`;\n }\n\n constructor(private conditionGroup: ConditionGroup) {}\n\n public build(): string {\n const el = ExpressionLanguageBuilder.buildConditionGroup(this.conditionGroup);\n\n return `{ ${el} }`;\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Operator } from './Operator';\nimport { ConditionType } from './ConditionModel';\n\ntype ConditionValue<T> = T extends 'string'\n ? string\n : T extends 'number'\n ? number\n : T extends 'date'\n ? Date\n : T extends 'boolean'\n ? boolean\n : unknown;\n\nexport class Condition<T extends ConditionType> {\n constructor(\n public field:\n | string\n | {\n field: string;\n key1Value?: string;\n key2Value?: string;\n },\n public type: T,\n public operator: Operator,\n public value?: ConditionValue<T>,\n ) {}\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isEmpty } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\n\nimport { Operator } from '../../../models/Operator';\nimport { ConditionForm } from '../../gio-el-editor.component';\n\n@Component({\n selector: 'gio-el-editor-type-boolean',\n imports: [MatFormFieldModule, MatSelectModule, ReactiveFormsModule, MatSlideToggle],\n templateUrl: './gio-el-editor-type-boolean.component.html',\n styleUrl: './gio-el-editor-type-boolean.component.scss',\n})\nexport class GioElEditorTypeBooleanComponent implements OnChanges {\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n ];\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'boolean') {\n throw new Error('Boolean field is required!');\n }\n\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(null));\n this.conditionFormGroup.get('value')?.setValue(true);\n }\n }\n}\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-slide-toggle class=\"toggle\" #valueToggle formControlName=\"value\">\n <mat-label>{{ valueToggle.checked ? 'True' : 'False' }}</mat-label>\n </mat-slide-toggle>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, DestroyRef, inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isDate, isEmpty } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Operator } from '../../../models/Operator';\nimport { ConditionForm } from '../../gio-el-editor.component';\n\n@Component({\n selector: 'gio-el-editor-type-date',\n imports: [MatFormFieldModule, MatSelectModule, MatInputModule, ReactiveFormsModule, MatDatepickerModule],\n templateUrl: './gio-el-editor-type-date.component.html',\n styleUrl: './gio-el-editor-type-date.component.scss',\n})\nexport class GioElEditorTypeDateComponent implements OnChanges {\n private readonly destroyRef = inject(DestroyRef);\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n { label: 'Less than', value: 'LESS_THAN' },\n { label: 'Less than or equals', value: 'LESS_THAN_OR_EQUALS' },\n { label: 'Greater than', value: 'GREATER_THAN' },\n { label: 'Greater than or equals', value: 'GREATER_THAN_OR_EQUALS' },\n ];\n\n protected datepickerControl = new FormControl();\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'date') {\n throw new Error('Date field is required!');\n }\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(true));\n\n this.datepickerControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n if (!isDate(value)) {\n return;\n }\n // Convert date to UTC ignoring timezone\n const dateUtc = Date.UTC(\n value.getFullYear(),\n value.getMonth(),\n value.getDate(),\n value.getHours(),\n value.getMinutes(),\n value.getSeconds(),\n );\n this.conditionFormGroup.controls.value.setValue(new Date(dateUtc));\n });\n }\n }\n}\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"picker\" [formControl]=\"datepickerControl\" />\n <mat-hint>MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isEmpty } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ConditionForm } from '../../gio-el-editor.component';\nimport { Operator } from '../../../models/Operator';\n\n@Component({\n selector: 'gio-el-editor-type-number',\n imports: [MatFormFieldModule, MatSelectModule, MatInputModule, ReactiveFormsModule],\n templateUrl: './gio-el-editor-type-number.component.html',\n styleUrl: './gio-el-editor-type-number.component.scss',\n})\nexport class GioElEditorTypeNumberComponent implements OnChanges {\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n { label: 'Less than', value: 'LESS_THAN' },\n { label: 'Less than or equals', value: 'LESS_THAN_OR_EQUALS' },\n { label: 'Greater than', value: 'GREATER_THAN' },\n { label: 'Greater than or equals', value: 'GREATER_THAN_OR_EQUALS' },\n ];\n\n protected min: number | null = null;\n protected max: number | null = null;\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'number') {\n throw new Error('Number field is required!');\n }\n if (field.min) {\n this.min = field.min;\n }\n if (field.max) {\n this.max = field.max;\n }\n\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(true));\n }\n }\n}\n","<!--\n\n Copyright (C) 2025 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"value\" placeholder=\"Value\" type=\"number\" [min]=\"min\" [max]=\"max\" />\n @if (conditionFormGroup.controls.value.hasError('min')) {\n <mat-error> Value must be at least {{ min }} </mat-error>\n }\n @if (conditionFormGroup.controls.value.hasError('max')) {\n <mat-error> Value must be at most {{ max }} </mat-error>\n }\n </mat-form-field>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, DestroyRef, inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { isEmpty, toString } from 'lodash';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ConditionForm } from '../../gio-el-editor.component';\nimport { Operator } from '../../../models/Operator';\n\ntype AutocompleteValue = { value: string; label: string };\n\n@Component({\n selector: 'gio-el-editor-type-string',\n imports: [CommonModule, MatFormFieldModule, MatSelectModule, MatInputModule, ReactiveFormsModule, MatAutocompleteModule],\n templateUrl: './gio-el-editor-type-string.component.html',\n styleUrl: './gio-el-editor-type-string.component.scss',\n})\nexport class GioElEditorTypeStringComponent implements OnChanges {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({\n required: true,\n })\n public conditionFormGroup!: FormGroup<ConditionForm>;\n\n protected operators: { label: string; value: Operator }[] = [\n { label: 'Equals', value: 'EQUALS' },\n { label: 'Not equals', value: 'NOT_EQUALS' },\n ];\n\n protected filteredOptions$ = new Observable<AutocompleteValue[]>();\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionFormGroup) {\n const field = this.conditionFormGroup.controls.field.value;\n if (isEmpty(field) || field?.type !== 'string') {\n throw new Error('String field is required!');\n }\n\n this.conditionFormGroup.addControl('operator', new FormControl(null));\n this.conditionFormGroup.addControl('value', new FormControl(null));\n\n const values = field.values?.map(value => (typeof value === 'string' ? { value, label: value } : value));\n if (values && !isEmpty(values)) {\n this.filteredOptions$ = this.conditionFormGroup.get('value')!.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n startWith(''),\n map(value => filterValues(values, toString(value) ?? '')),\n );\n }\n }\n }\n}\n\nconst filterValues = (values: AutocompleteValue[], value: string) => {\n const filterValue = value.toLowerCase();\n\n return values.filter(option => option.label.toLowerCase().includes(filterValue) || option.value.toLowerCase().includes(filterValue));\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (conditionFormGroup) {\n <div [formGroup]=\"conditionFormGroup\" class=\"condition\">\n <mat-form-field class=\"condition__operator\">\n <mat-label>Operator</mat-label>\n\n <mat-select formControlName=\"operator\" placeholder=\"Select Operator\">\n @for (operator of operators; track operator.value) {\n <mat-option [value]=\"operator.value\">{{ operator.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Value</mat-label>\n <input matInput formControlName=\"value\" placeholder=\"Value\" [matAutocomplete]=\"auto\" />\n\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n @for (option of filteredOptions$ | async; track option) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ConditionModel } from './ConditionModel';\n\nexport type ParentConditionModel = { field: string; label: string; conditions: (ParentConditionModel | ConditionModel)[] };\n\nexport type ConditionsModel = (ParentConditionModel | ConditionModel)[];\n\nexport const isConditionModel = (conditions: ParentConditionModel | ConditionModel): conditions is ConditionModel => {\n return 'field' in conditions && 'label' in conditions && 'type' in conditions;\n};\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Component,\n Input,\n SimpleChanges,\n OnChanges,\n inject,\n DestroyRef,\n HostBinding,\n Optional,\n Self,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { isEmpty, toString } from 'lodash';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs/operators';\nimport { MatButtonModule } from '@angular/material/button';\nimport { GioIconsModule } from '@gravitee/ui-particles-angular';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\nimport { ConditionModel } from '../../models/ConditionModel';\nimport { ConditionsModel, isConditionModel, ParentConditionModel } from '../../models/ConditionsModel';\n\ntype FieldAutocompleteOption = ConditionModel;\n\ntype FieldAutocompleteGroup = {\n field: string;\n label: string;\n options: FieldAutocompleteOption[];\n};\n\ntype FieldAutocompleteModel = (FieldAutocompleteOption | FieldAutocompleteGroup)[];\n\ntype Key1AutocompleteValue = { value: string; label: string };\n\n@Component({\n selector: 'gio-el-field',\n imports: [CommonModule, MatAutocompleteModule, MatInputModule, ReactiveFormsModule, MatButtonModule, GioIconsModule],\n templateUrl: './gio-el-field.component.html',\n styleUrl: './gio-el-field.component.scss',\n providers: [{ provide: MatFormFieldControl, useExisting: GioElFieldComponent }],\n})\nexport class GioElFieldComponent implements OnChanges, MatFormFieldControl<ConditionModel>, ControlValueAccessor, OnDestroy {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({ required: true })\n public conditionsModel: ConditionsModel = [];\n\n protected fieldFilteredOptions$ = new Observable<FieldAutocompleteModel>();\n protected key1FilteredOptions$ = new Observable<Key1AutocompleteValue[]>();\n\n protected selectedConditionModel: ConditionModel | null = null;\n\n protected fieldFormControl = new FormControl<ConditionModel | null>(null);\n protected key1FormControl = new FormControl<string | null>(null);\n protected key2FormControl = new FormControl<string | null>(null);\n\n // From MatFormFieldControl\n public set value(_value: ConditionModel | null) {\n // Not implemented. Only for select new value.\n }\n\n // From MatFormFieldControl\n public stateChanges = new Subject<void>();\n\n // From MatFormFieldControl\n public static nextId = 0;\n @HostBinding()\n public id = `gio-el-editor-input-${GioElFieldComponent.nextId++}`;\n\n // From MatFormFieldControl\n @Input()\n public get placeholder() {\n return this._placeholder;\n }\n public set placeholder(plh) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n private _placeholder: string = '';\n\n // From MatFormFieldControl\n public focused = false;\n\n // From MatFormFieldControl\n public get empty() {\n return !this.fieldFormControl.value;\n }\n\n // From MatFormFieldControl\n @HostBinding('class.floating')\n public get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n // From MatFormFieldControl\n @Input()\n public get required() {\n return this._required;\n }\n public set required(req: boolean) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n private _required = false;\n\n // From MatFormFieldControl\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this.fieldFormControl.disable() : this.fieldFormControl.enable();\n this.stateChanges.next();\n }\n private _disabled = false;\n\n public touched = false;\n\n // From MatFormFieldControl\n public get errorState(): boolean {\n return this.fieldFormControl.invalid && this.touched;\n }\n\n // From MatFormFieldControl\n public controlType = 'gio-el-editor-input';\n\n // From MatFormFieldControl\n @HostBinding('attr.aria-describedBy')\n public userAriaDescribedBy?: string | undefined;\n\n // From MatFormFieldControl\n public setDescribedByIds(ids: string[]): void {\n this.userAriaDescribedBy = ids.join(' ');\n }\n\n // From MatFormFieldControl\n // disableAutomaticLabeling?: boolean | undefined;\n\n protected _onChange: (_value: ConditionModel | null) => void = () => ({});\n protected _onTouched: () => void = () => ({});\n\n constructor(\n @Optional() @Self() public readonly ngControl: NgControl,\n private elementRef: ElementRef<HTMLElement>,\n private focusMonitor: FocusMonitor,\n ) {\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(origin => {\n this.focused = !!origin;\n\n this.touched = true;\n this._onTouched();\n this.stateChanges.next();\n });\n }\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.conditionsModel) {\n const flattenConditionsModelToOption = (\n conditions: ConditionsModel,\n parent: ParentConditionModel | null = null,\n ): FieldAutocompleteOption[] => {\n return conditions.flatMap(condition => {\n if (isConditionModel(condition)) {\n return {\n ...condition,\n label: parent ? `${parent.label} > ${condition.label}` : condition.label,\n field: parent ? `${parent.field}.${condition.field}` : condition.field,\n } satisfies FieldAutocompleteOption;\n }\n return flattenConditionsModelToOption(condition.conditions, {\n ...condition,\n field: parent ? `${parent.field}.${condition.field}` : condition.field,\n label: parent ? `${parent.label} > ${condition.label}` : condition.label,\n });\n });\n };\n\n const autocompleteModel: FieldAutocompleteModel = this.conditionsModel.map(conditionModel => {\n if (isConditionModel(conditionModel)) {\n return {\n ...conditionModel,\n } satisfies FieldAutocompleteOption;\n }\n return {\n field: conditionModel.field,\n label: conditionModel.label,\n options: flattenConditionsModelToOption(conditionModel.conditions).map(conditions => ({\n ...conditions,\n field: `${conditionModel.field}.${conditions.field}`,\n })),\n } satisfies FieldAutocompleteGroup;\n });\n\n if (autocompleteModel && !isEmpty(autocompleteModel)) {\n this.fieldFilteredOptions$ = this.fieldFormControl.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n startWith(''),\n map(value => fieldFilterValues(autocompleteModel, toString(value) ?? '')),\n );\n }\n\n combineLatest([\n this.fieldFormControl.valueChanges,\n this.key1FormControl.valueChanges.pipe(startWith(this.key1FormControl.value)),\n this.key2FormControl.valueChanges.pipe(startWith(this.key1FormControl.value)),\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(([fieldValue, key1Value, key2Value]) => {\n let map = fieldValue?.map;\n if (map?.type === 'Map') {\n map = { ...map, key1Value };\n }\n if (map?.type === 'MultiMap') {\n map = { ...map, key1Value, key2Value };\n }\n\n if (fieldValue && isConditionModel(fieldValue)) {\n this._onChange({\n ...fieldValue,\n map,\n });\n } else {\n this._onChange(null);\n }\n this.stateChanges.next();\n });\n }\n }\n\n public displayFn(option: FieldAutocompleteOption | FieldAutocompleteGroup): string {\n return option?.field;\n }\n\n public onFieldSelected($event: MatAutocompleteSelectedEvent) {\n this.selectedConditionModel = $event.option.value;\n\n const key1AutocompleteValues = this.selectedConditionModel?.map?.key1Values?.map(value =>\n typeof value === 'string' ? { value, label: value } : value,\n );\n\n if (key1AutocompleteValues && !isEmpty(key1AutocompleteValues)) {\n this.key1FilteredOptions$ = this.key1FormControl.valueChanges.pipe(\n takeUntilDestroyed(this.destroyRef),\n startWith(''),\n map(value => key1FilterValues(key1AutocompleteValues, toString(value) ?? '')),\n );\n }\n }\n\n // From ControlValueAccessor interface\n public writeValue(): void {\n // Not implemented. Only for select new value.\n }\n\n // From ControlValueAccessor interface\n public registerOnChange(fn: (value: ConditionModel | null) => void): void {\n this._onChange = fn;\n }\n\n // From ControlValueAccessor interface\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // From ControlValueAccessor interface\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled) {\n this.fieldFormControl.disable();\n } else {\n this.fieldFormControl.enable();\n }\n }\n\n // From ControlValueAccessor interface\n public onContainerClick(event: MouseEvent) {\n if ((event.target as Element).tagName.toLowerCase() != 'input') {\n this.elementRef.nativeElement.querySelector('input')?.focus();\n }\n }\n\n public ngOnDestroy() {\n this.stateChanges.complete();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n}\n\nconst fieldFilterValues = (autocompleteModel: FieldAutocompleteModel, value: string) => {\n const filterValue = value.toLowerCase();\n return autocompleteModel.filter(option => {\n if ('options' in option) {\n return option.options.filter(condition => condition.label.toLowerCase().includes(filterValue));\n }\n return option.label.toLowerCase().includes(filterValue);\n });\n};\n\nconst key1FilterValues = (values: Key1AutocompleteValue[], value: string) => {\n const filterValue = value.toLowerCase();\n return values.filter(option => option.label.toLowerCase().includes(filterValue) || option.value.toLowerCase().includes(filterValue));\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"container\">\n <span class=\"text\">#</span>\n <input class=\"input fieldSelect\" matInput [formControl]=\"fieldFormControl\" [matAutocomplete]=\"fieldSelectAuto\" />\n\n <mat-autocomplete\n autoActiveFirstOption\n requireSelection\n #fieldSelectAuto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [displayWith]=\"displayFn\"\n (optionSelected)=\"onFieldSelected($event)\"\n >\n @for (option of fieldFilteredOptions$ | async; track option) {\n @if (option.hasOwnProperty('options')) {\n <mat-optgroup [label]=\"option.label\">\n @for (option of $any(option).options; track option) {\n <mat-option [value]=\"option\">{{ option.label }}</mat-option>\n }\n </mat-optgroup>\n } @else {\n <mat-option [value]=\"option\">{{ option.label }}</mat-option>\n }\n }\n </mat-autocomplete>\n @if (selectedConditionModel?.map) {\n <span class=\"text\">[\"</span>\n <input class=\"input key1\" matInput [formControl]=\"key1FormControl\" [matAutocomplete]=\"key1SelectAuto\" />\n\n <mat-autocomplete #key1SelectAuto=\"matAutocomplete\" panelWidth=\"auto\">\n @for (option of key1FilteredOptions$ | async; track option) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-autocomplete>\n\n <span class=\"text\">\"]</span>\n }\n @if (selectedConditionModel?.map?.type === 'MultiMap') {\n <span class=\"text\">[</span>\n <input class=\"input key2\" type=\"number\" min=\"0\" matInput [formControl]=\"key2FormControl\" />\n\n <span class=\"text\">]</span>\n }\n</div>\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { GioIconsModule } from '@gravitee/ui-particles-angular';\n\nimport { GioElEditorTypeBooleanComponent } from '../gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.component';\nimport { GioElEditorTypeDateComponent } from '../gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.component';\nimport { GioElEditorTypeNumberComponent } from '../gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.component';\nimport { GioElEditorTypeStringComponent } from '../gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.component';\nimport { ConditionForm, ConditionGroupForm } from '../gio-el-editor.component';\nimport { ConditionsModel } from '../../models/ConditionsModel';\nimport { GioElFieldComponent } from '../gio-el-field/gio-el-field.component';\n\n@Component({\n selector: 'gio-el-editor-condition-group',\n imports: [\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatMenuModule,\n GioIconsModule,\n GioElEditorTypeBooleanComponent,\n GioElEditorTypeDateComponent,\n GioElEditorTypeStringComponent,\n GioElEditorTypeNumberComponent,\n GioElFieldComponent,\n ],\n templateUrl: './gio-el-editor-condition-group.component.html',\n styleUrl: './gio-el-editor-condition-group.component.scss',\n})\nexport class GioElEditorConditionGroupComponent {\n @Input({\n required: true,\n })\n public conditionGroupFormGroup!: FormGroup<ConditionGroupForm>;\n\n /**\n * Conditions model to generate the fields for the conditions.\n */\n @Input({\n required: true,\n })\n public conditionsModel: ConditionsModel = [];\n\n /**\n * Level of the node in the tree. Useful for testing with Harness to limit the scope of the query.\n */\n @Input()\n @HostBinding('attr.node-lvl')\n public nodeLvl = 0;\n\n @Output()\n public remove = new EventEmitter<void>();\n\n protected addConditionGroup() {\n this.conditionGroupFormGroup.controls.conditions.push(newConditionGroupFormGroup(), { emitEvent: true });\n this.checkMultipleCondition();\n }\n\n protected addCondition() {\n this.conditionGroupFormGroup.controls.conditions.push(newConditionFormGroup());\n this.checkMultipleCondition();\n }\n\n protected removeCondition(conditionIndex: number) {\n this.conditionGroupFormGroup.controls.conditions.removeAt(conditionIndex);\n this.checkMultipleCondition();\n }\n\n protected removeConditionGroup() {\n this.remove.emit();\n this.checkMultipleCondition();\n }\n\n protected isConditionGroupForm(\n formGroup: FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>,\n ): formGroup is FormGroup<ConditionGroupForm> {\n return 'condition' in formGroup.controls && 'conditions' in formGroup.controls;\n }\n\n private checkMultipleCondition(): void {\n if (this.conditionGroupFormGroup.controls.conditions.length > 1) {\n this.conditionGroupFormGroup.controls.condition.enable();\n } else {\n this.conditionGroupFormGroup.controls.condition.disable();\n }\n }\n}\n\nconst newConditionGroupFormGroup = (): FormGroup<ConditionGroupForm> => {\n return new FormGroup<ConditionGroupForm>({\n condition: new FormControl({ value: 'AND', disabled: true }, { nonNullable: true, validators: Validators.required }),\n conditions: new FormArray<FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>>([]),\n });\n};\n\nconst newConditionFormGroup = (): FormGroup<ConditionForm> => {\n return new FormGroup<ConditionForm>({\n field: new FormControl(null),\n operator: new FormControl(null),\n value: new FormControl(null),\n });\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"conditionGroup\" [formGroup]=\"conditionGroupFormGroup\">\n <div class=\"conditionGroup__header\">\n <mat-button-toggle-group\n class=\"gio-button-toggle-group\"\n name=\"condition\"\n aria-label=\"Condition\"\n formControlName=\"condition\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n <mat-button-toggle class=\"mat-button-toggle-group\" value=\"AND\">AND</mat-button-toggle>\n <mat-button-toggle class=\"mat-button-toggle-group\" value=\"OR\">OR</mat-button-toggle>\n </mat-button-toggle-group>\n\n <div class=\"conditionGroup__header__addBtn\">\n <button mat-button [matMenuTriggerFor]=\"addBtn\">\n <mat-icon svgIcon=\"gio:plus\">Add</mat-icon>\n </button>\n <mat-menu #addBtn=\"matMenu\">\n <button mat-menu-item (click)=\"addConditionGroup()\">Add Group</button>\n <button mat-menu-item (click)=\"addCondition()\">Add Condition</button>\n </mat-menu>\n </div>\n\n @if (nodeLvl > 0) {\n <button class=\"conditionGroup__header__removeBtn\" mat-button aria-label=\"Remove Group\" (click)=\"removeConditionGroup()\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n }\n </div>\n\n <div class=\"conditionGroup__conditions\">\n @for (condition of conditionGroupFormGroup.controls.conditions.controls; track conditionIndex; let conditionIndex = $index) {\n @if (isConditionGroupForm(condition)) {\n <gio-el-editor-condition-group\n class=\"conditionGroup__conditions__conditionGroup\"\n [conditionGroupFormGroup]=\"condition\"\n [conditionsModel]=\"conditionsModel\"\n [nodeLvl]=\"nodeLvl + 1\"\n (remove)=\"removeCondition(conditionIndex)\"\n ></gio-el-editor-condition-group>\n } @else {\n <div\n class=\"conditionGroup__conditions__condition\"\n [formGroup]=\"conditionGroupFormGroup.controls.conditions.at(conditionIndex)\"\n [attr.node-lvl]=\"nodeLvl\"\n >\n <mat-form-field class=\"conditionGroup__conditions__condition__field\">\n <mat-label>Field</mat-label>\n <gio-el-field formControlName=\"field\" [conditionsModel]=\"conditionsModel\"></gio-el-field>\n </mat-form-field>\n\n @switch (condition.controls.field.value?.type) {\n @case ('string') {\n <gio-el-editor-type-string [conditionFormGroup]=\"condition\"></gio-el-editor-type-string>\n }\n @case ('boolean') {\n <gio-el-editor-type-boolean [conditionFormGroup]=\"condition\"></gio-el-editor-type-boolean>\n }\n @case ('number') {\n <gio-el-editor-type-number [conditionFormGroup]=\"condition\"></gio-el-editor-type-number>\n }\n @case ('date') {\n <gio-el-editor-type-date [conditionFormGroup]=\"condition\"></gio-el-editor-type-date>\n }\n }\n\n <button\n class=\"conditionGroup__conditions__condition__removeBtn\"\n mat-button\n aria-label=\"Remove Condition\"\n (click)=\"removeCondition(conditionIndex)\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </div>\n }\n }\n </div>\n</div>\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\nimport { get, has, isEmpty, isNil } from 'lodash';\nimport { GioIconsModule } from '@gravitee/ui-particles-angular';\n\nimport { ConditionModel, ConditionType } from '../models/ConditionModel';\nimport { ConditionsModel } from '../models/ConditionsModel';\nimport { ExpressionLanguageBuilder } from '../models/ExpressionLanguageBuilder';\nimport { ConditionGroup } from '../models/ConditionGroup';\nimport { Condition } from '../models/Condition';\nimport { Operator } from '../models/Operator';\n\nimport { GioElEditorConditionGroupComponent } from './gio-el-editor-condition-group/gio-el-editor-condition-group.component';\n\nexport type ConditionForm = {\n field: FormControl<ConditionModel | null>;\n operator: FormControl<Operator | null>;\n value: FormControl<string | boolean | Date | number | null>;\n};\n\nexport type ConditionGroupForm = {\n condition: FormControl<'AND' | 'OR'>;\n conditions: FormArray<FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>>;\n};\n\n@Component({\n selector: 'gio-el-editor',\n imports: [\n MatButtonToggleModule,\n ReactiveFormsModule,\n MatButtonModule,\n GioIconsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n GioElEditorConditionGroupComponent,\n ],\n templateUrl: './gio-el-editor.component.html',\n styleUrl: './gio-el-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioElEditorComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n @Input({ required: true })\n public conditionsModel: ConditionsModel = [];\n\n @Output()\n public elChange = new EventEmitter<string>();\n\n protected conditionGroupFormGroup = newConditionGroupFormGroup();\n\n protected elOutput?: string;\n\n public ngOnInit() {\n this.conditionGroupFormGroup.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map(() => this.conditionGroupFormGroup.getRawValue()),\n map(value => {\n type ConditionGroupValue = typeof value;\n type ConditionValue = Exclude<ConditionGroupValue['conditions'], undefined>[number];\n\n const toCondition = (conditionValue: ConditionValue): Condition<ConditionType> | ConditionGroup | null => {\n if (isConditionGroupValue(conditionValue)) {\n return toConditionGroup(conditionValue as ConditionGroupValue);\n }\n if (\n !isConditionValue(conditionValue) ||\n isNil(conditionValue.field) ||\n isNil(conditionValue.operator) ||\n isNil(conditionValue.value)\n ) {\n return null;\n }\n let field: Condition<ConditionType>['field'] = conditionValue.field.field;\n if (conditionValue.field.map) {\n field = {\n field: conditionValue.field.field,\n key1Value: get(conditionValue.field.map, 'key1Value') ?? undefined,\n key2Value: get(conditionValue.field.map, 'key2Value') ?? undefined,\n };\n }\n\n return new Condition(field, conditionValue.field.type, conditionValue.operator, conditionValue.value);\n };\n\n const toConditionGroup = (conditionGroupValue: ConditionGroupValue): ConditionGroup | null => {\n const conditions: ConditionGroup['conditions'] = [];\n if (!conditionGroupValue.condition || !conditionGroupValue.conditions || isEmpty(conditionGroupValue.conditions)) {\n return null;\n }\n for (const conditionValue of conditionGroupValue.conditions) {\n const condition = toCondition(conditionValue);\n if (condition) {\n conditions.push(condition);\n }\n }\n if (isEmpty(conditions)) {\n return null;\n }\n\n return new ConditionGroup(conditionGroupValue.condition, conditions);\n };\n\n const conditionGroupValue = toConditionGroup(value);\n if (conditionGroupValue) {\n this.elOutput = new ExpressionLanguageBuilder(conditionGroupValue).build();\n this.elChange.emit(this.elOutput);\n }\n }),\n )\n .subscribe();\n }\n}\n\nconst newConditionGroupFormGroup = (): FormGroup<ConditionGroupForm> => {\n return new FormGroup<ConditionGroupForm>({\n condition: new FormControl({ value: 'AND', disabled: true }, { nonNullable: true, validators: Validators.required }),\n conditions: new FormArray<FormGroup<ConditionForm> | FormGroup<ConditionGroupForm>>([]),\n });\n};\n\nconst isConditionGroupValue = (\n value: unknown,\n): value is {\n condition: 'AND' | 'OR';\n conditions: unknown[];\n} => {\n return !!value && has(value, 'condition') && has(value, 'conditions');\n};\n\nconst isConditionValue = (\n value: unknown,\n): value is {\n field: ConditionModel;\n operator: Operator;\n value: string | boolean | Date | number;\n} => {\n return !!value && has(value, 'field') && has(value, 'operator') && has(value, 'value');\n};\n","<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<gio-el-editor-condition-group\n [conditionGroupFormGroup]=\"conditionGroupFormGroup\"\n [conditionsModel]=\"conditionsModel\"\n></gio-el-editor-condition-group>\n\n@if (elOutput) {\n <div class=\"preview\">\n {{ elOutput }}\n </div>\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentHarness, parallel } from '@angular/cdk/testing';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport abstract class GioElEditorTypeComponentHarness extends ComponentHarness {\n public getOperatorSelector = this.locatorFor(MatSelectHarness.with({ selector: '[formControlName=\"operator\"]' }));\n\n public async getAvailableOperators(): Promise<string[]> {\n const operatorSelector = await this.getOperatorSelector();\n await operatorSelector.open();\n const options = await operatorSelector.getOptions();\n return parallel(() => options.map(async option => await option.getText()));\n }\n\n public async selectOperator(operator: string): Promise<void> {\n const operatorSelector = await this.getOperatorSelector();\n await operatorSelector.clickOptions({ text: operator });\n }\n\n public async getOperatorValue(): Promise<string> {\n const operatorSelector = await this.getOperatorSelector();\n return operatorSelector.getValueText();\n }\n\n public abstract getValue(): Promise<string | boolean | number>;\n\n public abstract setValue(value: string | boolean | number | Date): Promise<void>;\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatSlideToggleHarness } from '@angular/material/slide-toggle/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeBooleanHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-boolean';\n\n public async getValue(): Promise<boolean> {\n const slideToggleHarness = await this.locatorFor(MatSlideToggleHarness)();\n return await slideToggleHarness.isChecked();\n }\n\n public async setValue(value: boolean): Promise<void> {\n const slideToggleHarness = await this.locatorFor(MatSlideToggleHarness)();\n if (value !== (await slideToggleHarness.isChecked())) {\n await slideToggleHarness.toggle();\n }\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeStringHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-string';\n\n public async getValue(): Promise<string> {\n const input = await this.locatorFor(MatInputHarness)();\n return await input.getValue();\n }\n\n public async setValue(value: string): Promise<void> {\n const input = await this.locatorFor(MatInputHarness)();\n await input.setValue(value);\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeNumberHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-number';\n\n public async getValue(): Promise<number> {\n const input = await this.locatorFor(MatInputHarness)();\n return Number(await input.getValue());\n }\n\n public async setValue(value: number): Promise<void> {\n const input = await this.locatorFor(MatInputHarness)();\n await input.setValue(value.toString());\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MatDatepickerInputHarness } from '@angular/material/datepicker/testing';\n\nimport { GioElEditorTypeComponentHarness } from '../gio-el-editor-type.harness';\n\nexport class GioElEditorTypeDateHarness extends GioElEditorTypeComponentHarness {\n public static hostSelector = 'gio-el-editor-type-date';\n\n public async getValue(): Promise<string> {\n const datepickerInputHarness = await this.locatorFor(MatDatepickerInputHarness)();\n return await datepickerInputHarness.getValue();\n }\n\n public async setValue(value: Date): Promise<void> {\n const datepickerInputHarness = await this.locatorFor(MatDatepickerInputHarness)();\n await datepickerInputHarness.setValue(value.toISOString());\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nexport class GioElFieldHarness extends ComponentHarness {\n public static hostSelector = 'gio-el-field';\n\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioElFieldHarness> {\n return new HarnessPredicate(GioElFieldHarness, options);\n }\n\n private getAutocomplete = this.locatorFor(MatAutocompleteHarness.with({ selector: '.fieldSelect' }));\n\n private getKey1Input = this.locatorForOptional(MatInputHarness.with({ selector: '.key1' }));\n private getKey2Input = this.locatorForOptional(MatInputHarness.with({ selector: '.key2' }));\n\n public async setValue(field: string, key1?: string, key2?: string) {\n const autocomplete = await this.getAutocomplete();\n await autocomplete.focus();\n await autocomplete.selectOption({ text: new RegExp(`${field}`) });\n\n if (key1) {\n const key1Input = await this.getKey1Input();\n await key1Input?.setValue(key1);\n }\n\n if (key2) {\n const key2Input = await this.getKey2Input();\n await key2Input?.setValue(key2);\n }\n }\n\n public async getValue(): Promise<{\n field: string;\n key1?: string;\n key2?: string;\n }> {\n const autocomplete = await this.getAutocomplete();\n const field = await autocomplete.getValue();\n\n const key1Input = await this.getKey1Input();\n const key1 = await key1Input?.getValue();\n\n const key2Input = await this.getKey2Input();\n const key2 = await key2Input?.getValue();\n\n return { field, key1, key2 };\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate, parallel } from '@angular/cdk/testing';\nimport { MatMenuHarness } from '@angular/material/menu/testing';\nimport { MatButtonToggleGroupHarness } from '@angular/material/button-toggle/testing';\nimport { DivHarness } from '@gravitee/ui-particles-angular/testing';\n\nimport { GioElEditorTypeBooleanHarness } from '../gio-el-type/gio-el-editor-type-boolean/gio-el-editor-type-boolean.harness';\nimport { GioElEditorTypeStringHarness } from '../gio-el-type/gio-el-editor-type-string/gio-el-editor-type-string.harness';\nimport { GioElEditorTypeNumberHarness } from '../gio-el-type/gio-el-editor-type-number/gio-el-editor-type-number.harness';\nimport { GioElEditorTypeDateHarness } from '../gio-el-type/gio-el-editor-type-date/gio-el-editor-type-date.harness';\nimport { GioElFieldHarness } from '../gio-el-field/gio-el-field.harness';\n\ntype ConditionGroupHarnessValues = {\n condition: 'AND' | 'OR';\n conditions: (ConditionGroupHarnessValues | ConditionHarnessValues)[];\n};\ntype ConditionHarnessValues = {\n field: { field: string; key1?: string; key2?: string };\n operator?: string;\n value?: string | boolean | number;\n};\n\nexport class GioElEditorConditionGroupHarness extends ComponentHarness {\n public static hostSelector = 'gio-el-editor-condition-group';\n\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioElEditorConditionGroupHarness> {\n return new HarnessPredicate(GioElEditorConditionGroupHarness, options);\n }\n\n public getNodeLvl = () => this.host().then(host => host.getAttribute('node-lvl'));\n\n private getAddMenuButton = this.locatorFor(MatMenuHarness.with({ triggerText: /Add/ }));\n private getConditionButtonToggleGroup = this.locatorFor(MatButtonToggleGroupHarness.with({ selector: '[formControlName=\"condition\"]' }));\n private getConditionsHarness = async () => {\n const nodeLvl = await this.getNodeLvl();\n if (!nodeLvl) {\n throw new Error('Node level not found');\n }\n return this.locatorForAll(\n DivHarness.with({\n selector: `.conditionGroup__conditions__condition[node-lvl=\"${nodeLvl}\"]`,\n }),\n GioElEditorConditionGroupHarness.with({\n selector: `.conditionGroup__conditions__conditionGroup[node-lvl=\"${Number(nodeLvl) + 1}\"]`,\n }),\n )();\n };\n\n private getConditionHarness = async (index: number) => (await this.getConditionsHarness()).at(index);\n private getConditionTypeHarness = (divHarness: DivHarness) =>\n divHarness.childLocatorForOptional(\n GioElEditorTypeStringHarness,\n GioElEditorTypeBooleanHarness,\n GioElEditorTypeNumberHarness,\n GioElEditorTypeDateHarness,\n )();\n private getConditionField = (divHarness: DivHarness) =>\n divHarness.childLocatorFor(GioElFieldHarness.with({ selector: '[formControlName=\"field\"]' }))();\n\n public async clickAddNewConditionButton(): Promise<void> {\n await (await this.getAddMenuButton()).clickItem({ text: /Add Condition/ });\n }\n\n public async clickAddNewGroupButton(): Promise<void> {\n await (await this.getAddMenuButton()).clickItem({ text: /Add Group/ });\n }\n\n public async getConditionValue(): Promise<'AND' | 'OR'> {\n const conditionButtonToggleGroup = await this.getConditionButtonToggleGroup();\n const selectedToggles = await conditionButtonToggleGroup.getToggles({ checked: true });\n if (selectedToggles.length !== 1) {\n throw new Error('No operator selected');\n }\n const andOrMap: Record<string, 'AND' | 'OR'> = {\n AND: 'AND',\n OR: 'OR',\n };\n\n return andOrMap[await selectedToggles[0].getText()];\n }\n\n public async selectConditionValue(operator: 'AND' | 'OR'): Promise<void> {\n const conditionButtonToggleGroup = await this.getConditionButtonToggleGroup();\n const toggles = await conditionButtonToggleGroup.getToggles({ text: operator });\n if (toggles.length !== 1) {\n throw new Error('No operator selected');\n }\n return toggles[0].check();\n }\n\n public async selectConditionField(index: number, field: string, key1?: string, key2?: string): Promise<void> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionField = await this.getConditionField(conditionDiv);\n await conditionField.setValue(field, key1, key2);\n }\n\n public async selectConditionOperator(index: number, operator: string): Promise<void> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionType = await this.getConditionTypeHarness(conditionDiv);\n if (!conditionType) {\n throw new Error(`Condition type not found. Select field first`);\n }\n\n await conditionType.selectOperator(operator);\n }\n\n public async getConditionAvailableOperators(index: number): Promise<string[]> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionType = await this.getConditionTypeHarness(conditionDiv);\n if (!conditionType) {\n throw new Error(`Condition type not found. Select field first`);\n }\n return conditionType.getAvailableOperators();\n }\n\n public async setConditionValue(index: number, value: string | boolean | number | Date): Promise<void> {\n const conditionDiv = await this.getConditionHarness(index);\n if (!conditionDiv || !(conditionDiv instanceof DivHarness)) {\n throw new Error(`Condition with index ${index} not found`);\n }\n\n const conditionType = await this.getConditionTypeHarness(conditionDiv);\n if (!conditionType) {\n throw new Error(`Condition type not found. Select field first`);\n }\n\n if (conditionType instanceof GioElEditorTypeStringHarness && typeof value === 'string') {\n await conditionType.setValue(value);\n } else if (conditionType instanceof GioElEditorTypeBooleanHarness && typeof value === 'boolean') {\n await conditionType.setValue(value);\n } else if (conditionType instanceof GioElEditorTypeNumberHarness && typeof value === 'number') {\n await conditionType.setValue(value);\n } else if (conditionType instanceof GioElEditorTypeDateHarness && value instanceof Date) {\n await conditionType.setValue(value);\n } else {\n throw new Error(`Invalid value for condition type`);\n }\n }\n\n public async getConditionGroup(index: number): Promise<GioElEditorConditionGroupHarness> {\n const conditionGroup = await this.getConditionHarness(index);\n\n if (!conditionGroup || !(conditionGroup instanceof GioElEditorConditionGroupHarness)) {\n throw new Error(`Condition group with index ${index} not found`);\n }\n return conditionGroup;\n }\n\n public async getConditions(): Promise<ConditionGroupHarnessValues> {\n const getConditionsDiv = await this.getConditionsHarness();\n\n const conditions = await parallel(() =>\n getConditionsDiv.map(async condition => {\n if (condition instanceof GioElEditorConditionGroupHarness) {\n return await condition.getConditions();\n }\n const conditionField = await this.getConditionField(condition);\n\n const conditionType = await this.getConditionTypeHarness(condition);\n return {\n field: await conditionField.getValue(),\n operator: await conditionType?.getOperatorValue(),\n value: await conditionType?.getValue(),\n };\n }),\n );\n\n return {\n condition: await this.getConditionValue(),\n conditions,\n };\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport { GioElEditorConditionGroupHarness } from './gio-el-editor-condition-group/gio-el-editor-condition-group.harness';\n\nexport class GioElEditorHarness extends ComponentHarness {\n public static hostSelector = 'gio-el-editor';\n\n public getMainConditionGroup = this.locatorFor(GioElEditorConditionGroupHarness);\n\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioElEditorHarness> {\n return new HarnessPredicate(GioElEditorHarness, options);\n }\n}\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type ConditionType = 'string' | 'number' | 'date' | 'boolean';\n\nexport type ConditionModelBase<T extends ConditionType> = {\n field: string;\n label: string;\n type: T;\n map?:\n | {\n type: 'Map';\n key1Values?: string[] | { value: string; label: string }[];\n key1Value?: string | null;\n }\n | {\n type: 'MultiMap';\n key1Value?: string | null;\n key1Values?: string[];\n key2Value?: string | null;\n };\n};\n\nexport type StringConditionModel = ConditionModelBase<'string'> & {\n values?:\n | string[]\n | {\n value: string;\n label: string;\n }[];\n};\n\nexport type NumberConditionModel = ConditionModelBase<'number'> & {\n min?: number;\n max?: number;\n};\n\nexport type DateConditionModel = ConditionModelBase<'date'>;\n\nexport type BooleanConditionModel = ConditionModelBase<'boolean'>;\n\nexport type ConditionModel = StringConditionModel | NumberConditionModel | DateConditionModel | BooleanConditionModel;\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './Condition';\nexport * from './ConditionModel';\nexport * from './ConditionsModel';\nexport * from './ExpressionLanguageBuilder';\nexport * from './Operator';\n","/*\n * Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport { GioElEditorComponent } from './gio-el-editor/gio-el-editor.component';\nexport { GioElEditorHarness } from './gio-el-editor/gio-el-editor.harness';\n\nexport * from './models/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i1","i2","i4","newConditionGroupFormGroup","i6"],"mappings":"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"}