UNPKG

@tapsellorg/angular-material-library

Version:

Angular library for Tapsell

1 lines 22.8 kB
{"version":3,"file":"tapsellorg-angular-material-library-condition-builder.mjs","sources":["../../projects/pegah-library/condition-builder/condition-operator/condition-operator.component.ts","../../projects/pegah-library/condition-builder/condition-operator/condition-operator.component.html","../../projects/pegah-library/condition-builder/condition-builder.utils.ts","../../projects/pegah-library/condition-builder/config.ts","../../projects/pegah-library/condition-builder/condition-builder.component.ts","../../projects/pegah-library/condition-builder/condition-builder.component.html","../../projects/pegah-library/condition-builder/condition-builder.module.ts","../../projects/pegah-library/condition-builder/tapsellorg-angular-material-library-condition-builder.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n effect,\n forwardRef,\n input,\n OnInit,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { PghConditionOperators } from '../models';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\n\n@Component({\n selector: 'pgh-condition-operator',\n templateUrl: './condition-operator.component.html',\n styleUrls: ['./condition-operator.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PghConditionOperatorComponent),\n multi: true,\n },\n ],\n standalone: false,\n})\nexport class PghConditionOperatorComponent implements OnInit, ControlValueAccessor {\n value = input<PghConditionOperators>();\n valueChanges = output<PghConditionOperators>();\n\n operatorControl: UntypedFormControl = new UntypedFormControl('AND');\n onChange?: (newValue: PghConditionOperators) => void;\n onTouched?: (value: any) => void;\n\n constructor() {\n effect(() => {\n if (this.value()) {\n this.operatorControl.setValue(this.value());\n }\n });\n }\n\n ngOnInit(): void {\n this.setUpOperatorChangeValueListener();\n }\n\n registerOnChange(fn: (newValue: PghConditionOperators) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: (value: any) => void): void {\n this.onTouched = fn;\n }\n\n writeValue(value: PghConditionOperators): void {\n this.operatorControl.setValue(value);\n }\n\n private setUpOperatorChangeValueListener(): void {\n this.operatorControl.valueChanges.subscribe(value => {\n if (this.onChange) this.onChange?.(value);\n else this.valueChanges.emit(value);\n });\n }\n}\n","<div class=\"pgh-condition-operator\">\n <div class=\"pgh-condition-operator-horizontal-line\"></div>\n <div class=\"pgh-condition-operator-vertical-line\"></div>\n <div>\n <mat-button-toggle-group [formControl]=\"operatorControl\" vertical>\n <mat-button-toggle\n value=\"AND\"\n [ngClass]=\"operatorControl.value === 'AND' ? ['font-weight-bold', 'text-primary'] : ''\"\n >\n {{ 'CONDITION_BUILDER_AND' | translate }}\n </mat-button-toggle>\n <mat-button-toggle\n value=\"OR\"\n [ngClass]=\"operatorControl.value === 'OR' ? ['font-weight-bold', 'text-accent'] : ''\"\n >\n {{ 'CONDITION_BUILDER_OR' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div class=\"pgh-condition-operator-vertical-line\"></div>\n <div class=\"pgh-condition-operator-horizontal-line\"></div>\n</div>\n","import {\n AbstractControl,\n UntypedFormArray,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\n\n/**\n * Deep clones the given AbstractControl, preserving values, validators, async validators, and disabled status.\n * @param control AbstractControl\n * @returns AbstractControl\n */\nexport function pghCloneAbstractControl<T extends AbstractControl>(control: T): T {\n let newControl: T;\n\n if (control instanceof UntypedFormGroup) {\n const formGroup = new UntypedFormGroup({}, control.validator, control.asyncValidator);\n const { controls } = control;\n\n Object.keys(controls).forEach(key => {\n formGroup.addControl(key, pghCloneAbstractControl(controls[key]));\n });\n\n newControl = formGroup as any;\n } else if (control instanceof UntypedFormArray) {\n const formArray = new UntypedFormArray([], control.validator, control.asyncValidator);\n\n control.controls.forEach(formControl => formArray.push(pghCloneAbstractControl(formControl)));\n\n newControl = formArray as any;\n } else if (control instanceof UntypedFormControl) {\n newControl = new UntypedFormControl(\n control.value,\n control.validator,\n control.asyncValidator,\n ) as any;\n } else {\n throw new Error('Error: unexpected control value');\n }\n\n if (control.disabled) newControl.disable({ emitEvent: false });\n\n return newControl;\n}\n","import { InjectionToken } from '@angular/core';\nimport { PghConditionBuilderConfig } from './models';\n\nexport const PGH_CONDITION_BUILDER_CONFIG = new InjectionToken<PghConditionBuilderConfig>(\n 'condition-builder-config',\n {\n providedIn: 'root',\n factory: () => {\n const result: PghConditionBuilderConfig = {\n hasReset: true,\n hasValidation: true,\n addButtonText: 'CONDITION_BUILDER_NEW_FILTER_BUTTON',\n resetButtonText: 'CONDITION_BUILDER_RESET_BUTTON',\n deleteButtonTooltip: 'CONDITION_BUILDER_DELETE_BUTTON',\n validationHintTooltip: 'CONDITION_BUILDER_VALIDATION_HINT',\n hasDeleteButtonOnLengthOne: false,\n };\n return result;\n },\n },\n);\n","import {\n Component,\n Input,\n forwardRef,\n Inject,\n OnInit,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChild,\n TemplateRef,\n ChangeDetectorRef,\n input,\n} from '@angular/core';\nimport {\n PghConditionBuilderConfig,\n PghConditionBuilderValue,\n PghConditionOperators,\n} from './models';\nimport {\n AbstractControl,\n ControlValueAccessor,\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { pghCloneAbstractControl } from './condition-builder.utils';\nimport { PGH_CONDITION_BUILDER_CONFIG } from './config';\n\n@Component({\n selector: 'pgh-condition-builder',\n templateUrl: './condition-builder.component.html',\n styleUrls: ['./condition-builder.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PghConditionBuilderComponent),\n multi: true,\n },\n ],\n standalone: false,\n})\nexport class PghConditionBuilderComponent implements OnInit, ControlValueAccessor {\n filterControl = input<AbstractControl>();\n addButtonText = input<string>();\n\n @ContentChild(TemplateRef) filterFormTemplateRef!: TemplateRef<unknown>;\n\n conditionBuilderForm: UntypedFormGroup = this.formBuilder.group({\n operator: 'AND',\n filters: this.formBuilder.array([]),\n });\n\n onChange?: (value: PghConditionBuilderValue | null) => void;\n onTouched?: (value: PghConditionBuilderValue | null) => void;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(PGH_CONDITION_BUILDER_CONFIG) public conditionBuilderConfig: PghConditionBuilderConfig,\n ) {}\n\n ngOnInit(): void {\n this.setupFormChangeValueListener();\n this.addNewFilter();\n }\n\n get filters(): UntypedFormArray {\n return this.conditionBuilderForm.controls['filters'] as UntypedFormArray;\n }\n\n get operator(): UntypedFormControl {\n return this.conditionBuilderForm.controls['operator'] as UntypedFormControl;\n }\n\n addNewFilter(): void {\n if (this.filterControl()) this.filters.push(pghCloneAbstractControl(this.filterControl()!));\n }\n\n onOperatorChange(event: PghConditionOperators): void {\n this.operator.setValue(event);\n }\n\n deleteFilter(index: number): void {\n this.filters.removeAt(index);\n if (!this.filters.length) {\n this.addNewFilter();\n }\n }\n\n private setupFormChangeValueListener(): void {\n this.conditionBuilderForm.valueChanges.subscribe((value: PghConditionBuilderValue | null) => {\n if (value?.filters) value.filters = value.filters.filter(filter => filter);\n this.onChange?.(value);\n });\n }\n\n registerOnChange(fn: (value: PghConditionBuilderValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: (value: PghConditionBuilderValue | null) => void): void {\n this.onTouched = fn;\n }\n\n writeValue(value: PghConditionBuilderValue | null): void {\n this.filters.clear();\n if (value) {\n value.filters.forEach(_ => this.addNewFilter());\n this.conditionBuilderForm.patchValue(value);\n } else {\n this.addNewFilter();\n }\n this.changeDetectorRef.markForCheck();\n }\n\n reset() {\n this.writeValue(null);\n }\n}\n","<div class=\"pgh-condition-builder\">\n <div class=\"d-flex ps-3\" [formGroup]=\"conditionBuilderForm\">\n @if (filters.length > 1) {\n <div class=\"py-3 me-3\">\n <pgh-condition-operator\n [value]=\"operator.value\"\n (valueChanges)=\"onOperatorChange($event)\"\n ></pgh-condition-operator>\n </div>\n }\n <div class=\"pgh-condition-builder-filters\" formArrayName=\"filters\">\n @for (filter of filters.controls; track filter; let i = $index) { @if (i > 0) {\n <mat-divider class=\"pgh-condition-builder-divider\"></mat-divider>\n }\n <div class=\"d-flex align-items-center\">\n <div class=\"flex-grow-1\" [formGroupName]=\"i\">\n <ng-container\n *ngTemplateOutlet=\"filterFormTemplateRef; context: { $implicit: filter, index: i }\"\n ></ng-container>\n </div>\n @if (conditionBuilderConfig.hasDeleteButtonOnLengthOne || filters.length > 1) {\n <button\n mat-icon-button\n class=\"text-gray\"\n [matTooltip]=\"conditionBuilderConfig.deleteButtonTooltip | translate\"\n (click)=\"deleteFilter(i)\"\n >\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"pgh-condition-builder-actions\">\n <div class=\"d-flex align-items-center\">\n <button\n mat-button\n color=\"primary\"\n (click)=\"addNewFilter()\"\n [disabled]=\"conditionBuilderConfig.hasValidation ? conditionBuilderForm.invalid : false\"\n >\n <mat-icon svgIcon=\"add\" class=\"me-1\"></mat-icon>\n <span>{{ addButtonText() ?? (conditionBuilderConfig.addButtonText | translate) }}</span>\n </button>\n @if (conditionBuilderConfig.hasValidation ? conditionBuilderForm.invalid : false) {\n <mat-icon\n svgIcon=\"info\"\n class=\"text-gray\"\n [matTooltip]=\"conditionBuilderConfig.validationHintTooltip | translate\"\n ></mat-icon>\n }\n </div>\n @if (conditionBuilderConfig.hasReset) {\n <button mat-button color=\"primary\" (click)=\"reset()\">\n {{ 'CONDITION_BUILDER_RESET_BUTTON' | translate }}\n </button>\n }\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { PghConditionOperatorComponent } from './condition-operator/condition-operator.component';\nimport { PghConditionBuilderComponent } from './condition-builder.component';\nimport { TranslateModule } from '@tapsellorg/angular-material-library/src/lib/translate';\n\n@NgModule({\n declarations: [PghConditionBuilderComponent, PghConditionOperatorComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n ReactiveFormsModule,\n MatDividerModule,\n MatButtonToggleModule,\n TranslateModule,\n ],\n exports: [PghConditionBuilderComponent, PghConditionOperatorComponent],\n})\nexport class PghConditionBuilderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i1","i7.PghConditionOperatorComponent","i8"],"mappings":"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"}