{"version":3,"file":"abp-ng.components-extensible.mjs","sources":["../../../../packages/components/extensible/src/lib/utils/factory.util.ts","../../../../packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts","../../../../packages/components/extensible/src/lib/tokens/extensions.token.ts","../../../../packages/components/extensible/src/lib/constants/extra-properties.ts","../../../../packages/components/extensible/src/lib/utils/typeahead.util.ts","../../../../packages/components/extensible/src/lib/services/extensible-form-prop.service.ts","../../../../packages/components/extensible/src/lib/components/multi-select/extensible-form-multiselect.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html","../../../../packages/components/extensible/src/lib/models/props.ts","../../../../packages/components/extensible/src/lib/models/form-props.ts","../../../../packages/components/extensible/src/lib/models/actions.ts","../../../../packages/components/extensible/src/lib/models/entity-actions.ts","../../../../packages/components/extensible/src/lib/models/entity-props.ts","../../../../packages/components/extensible/src/lib/models/toolbar-actions.ts","../../../../packages/components/extensible/src/lib/services/extensions.service.ts","../../../../packages/components/extensible/src/lib/directives/prop-data.directive.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.html","../../../../packages/components/extensible/src/lib/components/abstract-actions/abstract-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/extensible-table-row-detail.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html","../../../../packages/components/extensible/src/lib/pipes/create-injector.pipe.ts","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.html","../../../../packages/components/extensible/src/lib/tokens/extensible-form-view-provider.token.ts","../../../../packages/components/extensible/src/lib/utils/actions.util.ts","../../../../packages/components/extensible/src/lib/utils/form-props.util.ts","../../../../packages/components/extensible/src/lib/utils/props.util.ts","../../../../packages/components/extensible/src/lib/utils/enum.util.ts","../../../../packages/components/extensible/src/lib/utils/localization.util.ts","../../../../packages/components/extensible/src/lib/utils/validation.util.ts","../../../../packages/components/extensible/src/lib/utils/state.util.ts","../../../../packages/components/extensible/src/lib/extensible.module.ts","../../../../packages/components/extensible/src/abp-ng.components-extensible.ts"],"sourcesContent":["export function selfFactory(dependency?: any) {\r\n  return dependency;\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  inject,\r\n  input,\r\n  Optional,\r\n  SkipSelf,\r\n  viewChild\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n  NgbDateAdapter,\r\n  NgbDatepickerModule,\r\n  NgbInputDatepicker,\r\n  NgbTimeAdapter,\r\n  NgbTimepicker,\r\n  NgbTimepickerModule,\r\n  Placement,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { DateTimeAdapter } from '@abp/ng.theme.shared';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\n\r\n@Component({\r\n  exportAs: 'abpExtensibleDateTimePicker',\r\n  imports: [\r\n    ReactiveFormsModule,\r\n    NgbDatepickerModule,\r\n    NgbTimepickerModule,\r\n    NgxValidateCoreModule,\r\n  ],\r\n  selector: 'abp-extensible-date-time-picker',\r\n  template: `\r\n    <input\r\n      [id]=\"prop().id\"\r\n      [formControlName]=\"prop().name\"\r\n      (ngModelChange)=\"setTime($event)\"\r\n      (click)=\"datepicker.open()\"\r\n      (keyup.space)=\"datepicker.open()\"\r\n      ngbDatepicker\r\n      #datepicker=\"ngbDatepicker\"\r\n      type=\"text\"\r\n      class=\"form-control\"\r\n      [placement]=\"placement()\"\r\n    />\r\n    <ngb-timepicker\r\n      #timepicker\r\n      [formControlName]=\"prop().name\"\r\n      (ngModelChange)=\"setDate($event)\"\r\n      [meridian]=\"meridian()\"\r\n    />\r\n  `,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  viewProviders: [\r\n    {\r\n      provide: ControlContainer,\r\n      useFactory: selfFactory,\r\n      deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n    },\r\n    {\r\n      provide: NgbDateAdapter,\r\n      useClass: DateTimeAdapter,\r\n    },\r\n    {\r\n      provide: NgbTimeAdapter,\r\n      useClass: DateTimeAdapter,\r\n    },\r\n  ],\r\n})\r\nexport class ExtensibleDateTimePickerComponent {\r\n  public readonly cdRef = inject(ChangeDetectorRef);\r\n\r\n  prop = input<FormProp>();\r\n  meridian = input<boolean>(false);\r\n  placement = input<Placement>('bottom-left');\r\n\r\n  readonly date = viewChild.required(NgbInputDatepicker);\r\n  readonly time = viewChild.required(NgbTimepicker);\r\n\r\n  setDate(dateStr: string) {\r\n    this.date().writeValue(dateStr);\r\n  }\r\n\r\n  setTime(dateStr: string) {\r\n    this.time().writeValue(dateStr);\r\n  }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ActionCallback, ReadonlyActionData as ActionData } from '../models/actions';\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormProp } from '../models/form-props';\r\n\r\nexport const EXTENSIONS_IDENTIFIER = new InjectionToken<string>('EXTENSIONS_IDENTIFIER');\r\nexport type ActionKeys = Extract<'entityActions' | 'toolbarActions', keyof ExtensionsService>;\r\n\r\nexport const EXTENSIONS_ACTION_TYPE = new InjectionToken<ActionKeys>('EXTENSIONS_ACTION_TYPE');\r\n\r\nexport const EXTENSIONS_ACTION_DATA = new InjectionToken<ActionData>('EXTENSIONS_ACTION_DATA');\r\nexport const EXTENSIONS_ACTION_CALLBACK = new InjectionToken<ActionCallback<unknown>>(\r\n  'EXTENSIONS_ACTION_DATA',\r\n);\r\nexport const PROP_DATA_STREAM = new InjectionToken<Observable<any>>('PROP_DATA_STREAM');\r\ntype EntityPropTypeClassMap = {\r\n  [key in ePropType]: string;\r\n};\r\n\r\nexport const ROW_RECORD = new InjectionToken<any>('ROW_RECORD');\r\n\r\nexport type EntityPropTypeClass = Partial<EntityPropTypeClassMap>;\r\nexport const ENTITY_PROP_TYPE_CLASSES = new InjectionToken<EntityPropTypeClass>(\r\n  'ENTITY_PROP_TYPE_CLASSES',\r\n  {\r\n    factory: () => ({} as EntityPropTypeClass),\r\n  },\r\n);\r\n\r\nexport const EXTENSIONS_FORM_PROP = new InjectionToken<FormProp>('EXTENSIONS_FORM_PROP');\r\nexport const EXTENSIONS_FORM_PROP_DATA = new InjectionToken<unknown>('EXTENSIONS_FORM_PROP_DATA');\r\n","export const EXTRA_PROPERTIES_KEY = 'extraProperties';\r\n","import { ABP, ExtensionPropertyUiLookupDto, RestService } from '@abp/ng.core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nconst TYPEAHEAD_TEXT_SUFFIX = '_Text';\r\nconst TYPEAHEAD_TEXT_SUFFIX_REGEX = /_Text$/;\r\n\r\nexport function createTypeaheadOptions(\r\n  lookup: ExtensionPropertyUiLookupDto,\r\n): PropCallback<any, Observable<ABP.Option<any>[]>> {\r\n  return (data, searchText) =>\r\n    searchText && data\r\n      ? data\r\n          .getInjected(RestService)\r\n          .request(\r\n            {\r\n              method: 'GET',\r\n              url: lookup.url || '',\r\n              params: {\r\n                [lookup.filterParamName || '']: searchText,\r\n              },\r\n            },\r\n            { apiName: 'Default' },\r\n          )\r\n          .pipe(\r\n            map((response: any) => {\r\n              const list = response[lookup.resultListPropertyName || ''];\r\n              const mapToOption = (item: any) => ({\r\n                key: item[lookup.displayPropertyName || ''],\r\n                value: item[lookup.valuePropertyName || ''],\r\n              });\r\n              return list.map(mapToOption);\r\n            }),\r\n          )\r\n      : of([]);\r\n}\r\n\r\nexport function getTypeaheadType(lookup: ExtensionPropertyUiLookupDto, name: string) {\r\n  if (!lookup.url) {\r\n    return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? ePropType.Hidden : undefined;\r\n  } else {\r\n    return ePropType.Typeahead;\r\n  }\r\n}\r\n\r\nexport function createTypeaheadDisplayNameGenerator(\r\n  displayNameGeneratorFn: ObjectExtensions.DisplayNameGeneratorFn,\r\n  properties: ObjectExtensions.EntityExtensionProperties,\r\n): ObjectExtensions.DisplayNameGeneratorFn {\r\n  return (displayName, fallback) => {\r\n    const name = removeTypeaheadTextSuffix(fallback.name || '');\r\n    return displayNameGeneratorFn(displayName || properties[name].displayName, {\r\n      name,\r\n      resource: fallback.resource,\r\n    });\r\n  };\r\n}\r\n\r\nexport function addTypeaheadTextSuffix(name: string) {\r\n  return name + TYPEAHEAD_TEXT_SUFFIX;\r\n}\r\n\r\nexport function hasTypeaheadTextSuffix(name: string) {\r\n  return TYPEAHEAD_TEXT_SUFFIX_REGEX.test(name);\r\n}\r\n\r\nexport function removeTypeaheadTextSuffix(name: string) {\r\n  return name.replace(TYPEAHEAD_TEXT_SUFFIX_REGEX, '');\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\n import { ValidatorFn, Validators } from '@angular/forms';\r\nimport { AbpValidators, ConfigStateService } from '@abp/ng.core';\r\nimport { map } from 'rxjs/operators';\r\nimport { FormProp } from '../models/form-props';\r\nimport { ePropType } from '../enums/props.enum';\r\n\r\n@Injectable()\r\nexport class ExtensibleFormPropService {\r\n  readonly  #configStateService = inject(ConfigStateService);\r\n\r\n  meridian$ = this.#configStateService\r\n    .getDeep$('localization.currentCulture.dateTimeFormat.shortTimePattern')\r\n    .pipe(map((shortTimePattern: string | undefined) => (shortTimePattern || '').includes('tt')));\r\n\r\n  isRequired(validator: ValidatorFn) {\r\n    return (\r\n      validator === Validators.required ||\r\n      validator === AbpValidators.required ||\r\n      validator.name === 'required'\r\n    );\r\n  }\r\n\r\n  getComponent(prop: FormProp) {\r\n    if (prop.template) {\r\n      return 'template';\r\n    }\r\n    switch (prop.type) {\r\n      case ePropType.Boolean:\r\n        return 'checkbox';\r\n      case ePropType.Date:\r\n        return 'date';\r\n      case ePropType.DateTime:\r\n        return 'dateTime';\r\n      case ePropType.Hidden:\r\n        return 'hidden';\r\n      case ePropType.MultiSelect:\r\n        return 'multiselect';\r\n      case ePropType.Text:\r\n        return 'textarea';\r\n      case ePropType.Time:\r\n        return 'time';\r\n      case ePropType.Typeahead:\r\n        return 'typeahead';\r\n      case ePropType.PasswordInputGroup:\r\n        return 'passwordinputgroup';\r\n      default:\r\n        return prop.options ? 'select' : 'input';\r\n    }\r\n  }\r\n\r\n  getType(prop: FormProp) {\r\n    switch (prop.type) {\r\n      case ePropType.Date:\r\n      case ePropType.String:\r\n        return 'text';\r\n      case ePropType.Boolean:\r\n        return 'checkbox';\r\n      case ePropType.Number:\r\n        return 'number';\r\n      case ePropType.Email:\r\n        return 'email';\r\n      case ePropType.Password:\r\n        return 'password';\r\n      case ePropType.PasswordInputGroup:\r\n        return 'passwordinputgroup';\r\n      default:\r\n        return 'hidden';\r\n    }\r\n  }\r\n\r\n  calcAsterisks(validators: ValidatorFn[]) {\r\n    if (!validators) return '';\r\n    const required = validators.find(v => this.isRequired(v));\r\n    return required ? '*' : '';\r\n  }\r\n}\r\n","import { Component, ChangeDetectionStrategy, forwardRef, input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { ABP, LocalizationPipe } from '@abp/ng.core';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\n\r\nconst EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => ExtensibleFormMultiselectComponent),\r\n  multi: true,\r\n};\r\n\r\n@Component({\r\n  selector: 'abp-extensible-form-multi-select',\r\n  template: `\r\n    <div [id]=\"prop().id\">\r\n      @for (option of options(); track option.value) {\r\n        <div class=\"form-check\" validationTarget>\r\n          <input\r\n            type=\"checkbox\"\r\n            class=\"form-check-input\"\r\n            [id]=\"'checkbox_' + option.value\"\r\n            [disabled]=\"disabled\"\r\n            [checked]=\"isChecked(option.value)\"\r\n            (change)=\"onCheckboxChange(option.value, $event.target.checked)\"\r\n          />\r\n          <label [for]=\"'checkbox_' + option.value\">\r\n            @if (prop().isExtra) {\r\n              {{ '::' + option.key | abpLocalization }}\r\n            } @else {\r\n              {{ option.key }}\r\n            }\r\n          </label>\r\n        </div>\r\n      }\r\n    </div>\r\n  `,\r\n  providers: [EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR],\r\n  imports: [LocalizationPipe, NgxValidateCoreModule],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ExtensibleFormMultiselectComponent implements ControlValueAccessor {\r\n  prop = input.required<FormProp>();\r\n  options = input.required<ABP.Option<any>[]>();\r\n\r\n  selectedValues: any[] = [];\r\n  disabled = false;\r\n\r\n  private onChange: (value: any) => void = () => {};\r\n  private onTouched: () => void = () => {};\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  isChecked(value: any): boolean {\r\n    return this.selectedValues.includes(value);\r\n  }\r\n\r\n  onCheckboxChange(value: any, checked: boolean): void {\r\n    this.selectedValues = checked\r\n      ? [...this.selectedValues, value]\r\n      : this.selectedValues.filter(item => item !== value);\r\n\r\n    this.onChange(this.selectedValues);\r\n    this.onTouched();\r\n  }\r\n\r\n  writeValue(value: any[]): void {\r\n    this.selectedValues = Array.isArray(value) ? [...value] : [];\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n}\r\n","import { EXTENSIONS_FORM_PROP, EXTENSIONS_FORM_PROP_DATA } from './../../tokens/extensions.token';\r\nimport {\r\n  ABP,\r\n  LocalizationPipe,\r\n  PermissionDirective,\r\n  ShowPasswordDirective,\r\n  TrackByService,\r\n} from '@abp/ng.core';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  inject,\r\n  Injector,\r\n  Optional,\r\n  SkipSelf,\r\n  viewChild,\r\n  effect,\r\n  input,\r\n} from '@angular/core';\r\nimport {\r\n  ControlContainer,\r\n  FormGroupDirective,\r\n  FormsModule,\r\n  ReactiveFormsModule,\r\n  ValidatorFn,\r\n} from '@angular/forms';\r\nimport {\r\n  NgbDateAdapter,\r\n  NgbDatepickerModule,\r\n  NgbTimeAdapter,\r\n  NgbTimepickerModule,\r\n  NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\r\nimport { DateAdapter, DisabledDirective, TimeAdapter } from '@abp/ng.theme.shared';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { ReadonlyPropData } from '../../models/props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { addTypeaheadTextSuffix } from '../../utils/typeahead.util';\r\nimport { eExtensibleComponents } from '../../enums/components';\r\nimport { ExtensibleDateTimePickerComponent } from '../date-time-picker/extensible-date-time-picker.component';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { ExtensibleFormPropService } from '../../services/extensible-form-prop.service';\r\nimport { AsyncPipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ExtensibleFormMultiselectComponent } from '../multi-select/extensible-form-multiselect.component';\r\n\r\n@Component({\r\n  selector: 'abp-extensible-form-prop',\r\n  templateUrl: './extensible-form-prop.component.html',\r\n  imports: [\r\n    ExtensibleDateTimePickerComponent,\r\n    ExtensibleFormMultiselectComponent,\r\n    NgbDatepickerModule,\r\n    NgbTimepickerModule,\r\n    ReactiveFormsModule,\r\n    DisabledDirective,\r\n    NgxValidateCoreModule,\r\n    NgbTooltip,\r\n    NgbTypeaheadModule,\r\n    ShowPasswordDirective,\r\n    PermissionDirective,\r\n    LocalizationPipe,\r\n    AsyncPipe,\r\n    NgComponentOutlet,\r\n    NgTemplateOutlet,\r\n    FormsModule,\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [ExtensibleFormPropService],\r\n  viewProviders: [\r\n    {\r\n      provide: ControlContainer,\r\n      useFactory: selfFactory,\r\n      deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n    },\r\n    { provide: NgbDateAdapter, useClass: DateAdapter },\r\n    { provide: NgbTimeAdapter, useClass: TimeAdapter },\r\n  ],\r\n})\r\nexport class ExtensibleFormPropComponent implements AfterViewInit {\r\n  protected service = inject(ExtensibleFormPropService);\r\n  public readonly cdRef = inject(ChangeDetectorRef);\r\n  public readonly track = inject(TrackByService);\r\n  #groupDirective = inject(FormGroupDirective);\r\n  private injector = inject(Injector);\r\n  private readonly form = this.#groupDirective.form;\r\n\r\n  readonly data = input.required<ReadonlyPropData>();\r\n  readonly prop = input.required<FormProp>();\r\n  readonly first = input<boolean | undefined>(undefined);\r\n  readonly isFirstGroup = input<boolean | undefined>(undefined);\r\n  private readonly fieldRef = viewChild.required<ElementRef<HTMLElement>>('field');\r\n\r\n  injectorForCustomComponent?: Injector;\r\n  asterisk = '';\r\n  containerClassName = 'mb-2';\r\n  showPassword = false;\r\n  options$: Observable<ABP.Option<any>[]> = of([]);\r\n  validators: ValidatorFn[] = [];\r\n  readonly!: boolean;\r\n  typeaheadModel: any;\r\n  passwordKey = eExtensibleComponents.PasswordComponent;\r\n\r\n  disabledFn = (data: ReadonlyPropData) => false;\r\n\r\n  get disabled() {\r\n    const data = this.data();\r\n    if (!data) return false;\r\n    return this.disabledFn(data);\r\n  }\r\n\r\n  constructor() {\r\n    // Watch prop changes and update state\r\n    effect(() => {\r\n      const currentProp = this.prop();\r\n      const data = this.data();\r\n      if (!currentProp || !data) return;\r\n\r\n      const { options, readonly, disabled, validators, className, template } = currentProp;\r\n\r\n      if (template) {\r\n        this.injectorForCustomComponent = Injector.create({\r\n          providers: [\r\n            {\r\n              provide: EXTENSIONS_FORM_PROP,\r\n              useValue: currentProp,\r\n            },\r\n            {\r\n              provide: EXTENSIONS_FORM_PROP_DATA,\r\n              useValue: data?.record,\r\n            },\r\n            { provide: ControlContainer, useExisting: FormGroupDirective },\r\n          ],\r\n          parent: this.injector,\r\n        });\r\n      }\r\n\r\n      if (options) this.options$ = options(data);\r\n      if (readonly) this.readonly = readonly(data);\r\n\r\n      if (disabled) {\r\n        this.disabledFn = disabled;\r\n      }\r\n      if (validators) {\r\n        this.validators = validators(data);\r\n        this.setAsterisk();\r\n      }\r\n      if (className !== undefined) {\r\n        this.containerClassName = className;\r\n      }\r\n\r\n      const [keyControl, valueControl] = this.getTypeaheadControls();\r\n      if (keyControl && valueControl)\r\n        this.typeaheadModel = { key: keyControl.value, value: valueControl.value };\r\n\r\n      this.cdRef.markForCheck();\r\n    });\r\n  }\r\n\r\n  setTypeaheadValue(selectedOption: ABP.Option<string>) {\r\n    this.typeaheadModel = selectedOption || { key: null, value: null };\r\n    const { key, value } = this.typeaheadModel;\r\n    const [keyControl, valueControl] = this.getTypeaheadControls();\r\n    if (valueControl?.value && !value) valueControl.markAsDirty();\r\n    keyControl?.setValue(key);\r\n    valueControl?.setValue(value);\r\n  }\r\n\r\n  search = (text$: Observable<string>) =>\r\n    text$\r\n      ? text$.pipe(\r\n          debounceTime(300),\r\n          distinctUntilChanged(),\r\n          switchMap(text => this.prop()?.options?.(this.data(), text) || of([])),\r\n        )\r\n      : of([]);\r\n\r\n  typeaheadFormatter = (option: ABP.Option<any>) => option.key;\r\n\r\n  meridian$ = this.service.meridian$;\r\n\r\n  get isInvalid() {\r\n    const control = this.form.get(this.prop().name);\r\n    return control?.touched && control.invalid;\r\n  }\r\n\r\n  private getTypeaheadControls() {\r\n    const { name } = this.prop();\r\n    const extraPropName = `${EXTRA_PROPERTIES_KEY}.${name}`;\r\n    const keyControl =\r\n      this.form.get(addTypeaheadTextSuffix(extraPropName)) ||\r\n      this.form.get(addTypeaheadTextSuffix(name));\r\n    const valueControl = this.form.get(extraPropName) || this.form.get(name);\r\n    return [keyControl, valueControl];\r\n  }\r\n\r\n  private setAsterisk() {\r\n    this.asterisk = this.service.calcAsterisks(this.validators);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.isFirstGroup() && this.first() && this.fieldRef()) {\r\n      requestAnimationFrame(() => {\r\n        this.fieldRef().nativeElement.focus();\r\n      });\r\n    }\r\n  }\r\n\r\n  getComponent(prop: FormProp): string {\r\n    return this.service.getComponent(prop);\r\n  }\r\n\r\n  getType(prop: FormProp): string {\r\n    return this.service.getType(prop);\r\n  }\r\n}\r\n","<ng-container *abpPermission=\"prop().permission; runChangeDetection: false\">\r\n  @switch (getComponent(prop())) {\r\n    @case ('template') {\r\n      <ng-container *ngComponentOutlet=\"prop().template; injector: injectorForCustomComponent\" />\r\n    }\r\n  }\r\n\r\n  <div [class]=\"containerClassName\" class=\"mb-2\">\r\n    @switch (getComponent(prop())) {\r\n      @case ('input') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <input\r\n          #field\r\n          [id]=\"prop().id\"\r\n          [formControlName]=\"prop().name\"\r\n          [autocomplete]=\"prop().autocomplete\"\r\n          [type]=\"getType(prop())\"\r\n          [abpDisabled]=\"disabled\"\r\n          [readonly]=\"readonly\"\r\n          class=\"form-control\"\r\n        />\r\n      }\r\n      @case ('hidden') {\r\n        <input [formControlName]=\"prop().name\" type=\"hidden\" />\r\n      }\r\n      @case ('checkbox') {\r\n        <div class=\"form-check\" validationTarget>\r\n          <input\r\n            #field\r\n            [id]=\"prop().id\"\r\n            [formControlName]=\"prop().name\"\r\n            [abpDisabled]=\"disabled\"\r\n            type=\"checkbox\"\r\n            class=\"form-check-input\"\r\n          />\r\n          <ng-template\r\n            [ngTemplateOutlet]=\"label\"\r\n            [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n          />\r\n        </div>\r\n      }\r\n      @case ('select') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <select\r\n          #field\r\n          [id]=\"prop().id\"\r\n          [formControlName]=\"prop().name\"\r\n          [abpDisabled]=\"disabled\"\r\n          class=\"form-select form-control\"\r\n        >\r\n          @for (option of options$ | async; track option.value) {\r\n            <option [ngValue]=\"option.value\">\r\n              @if (prop().isExtra) {\r\n                {{ '::' + option.key | abpLocalization }}\r\n              } @else {\r\n                {{ option.key }}\r\n              }\r\n            </option>\r\n          }\r\n        </select>\r\n      }\r\n      @case ('multiselect') {\r\n        <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n        <abp-extensible-form-multi-select\r\n          [prop]=\"prop()\"\r\n          [options]=\"options$ | async\"\r\n          [formControlName]=\"prop().name\"\r\n          [abpDisabled]=\"disabled\"\r\n        />\r\n      }\r\n      @case ('typeahead') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n          <input\r\n            #field\r\n            [id]=\"prop().id\"\r\n            [autocomplete]=\"prop().autocomplete\"\r\n            [abpDisabled]=\"disabled\"\r\n            [ngbTypeahead]=\"search\"\r\n            [editable]=\"false\"\r\n            [inputFormatter]=\"typeaheadFormatter\"\r\n            [resultFormatter]=\"typeaheadFormatter\"\r\n            [ngModelOptions]=\"{ standalone: true }\"\r\n            [(ngModel)]=\"typeaheadModel\"\r\n            (selectItem)=\"setTypeaheadValue($event.item)\"\r\n            (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n            [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n            class=\"form-control\"\r\n          />\r\n          <input [formControlName]=\"prop().name\" type=\"hidden\" />\r\n        </div>\r\n      }\r\n      @case ('date') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <input\r\n          [id]=\"prop().id\"\r\n          [formControlName]=\"prop().name\"\r\n          (click)=\"datepicker.open()\"\r\n          (keyup.space)=\"datepicker.open()\"\r\n          ngbDatepicker\r\n          #datepicker=\"ngbDatepicker\"\r\n          type=\"text\"\r\n          class=\"form-control\"\r\n        />\r\n      }\r\n      @case ('time') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <ngb-timepicker [formControlName]=\"prop().name\" />\r\n      }\r\n      @case ('dateTime') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <abp-extensible-date-time-picker [prop]=\"prop()\" [meridian]=\"meridian$ | async\" />\r\n      }\r\n      @case ('textarea') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <textarea\r\n          #field\r\n          [id]=\"prop().id\"\r\n          [formControlName]=\"prop().name\"\r\n          [abpDisabled]=\"disabled\"\r\n          [readonly]=\"readonly\"\r\n          class=\"form-control\"\r\n        ></textarea>\r\n      }\r\n      @case ('passwordinputgroup') {\r\n        <ng-template [ngTemplateOutlet]=\"label\" />\r\n        <div class=\"input-group form-group\" validationTarget>\r\n          <input\r\n            class=\"form-control\"\r\n            [id]=\"prop().id\"\r\n            [formControlName]=\"prop().name\"\r\n            [abpShowPassword]=\"showPassword\"\r\n          />\r\n          <button class=\"btn btn-secondary\" type=\"button\" (click)=\"showPassword = !showPassword\">\r\n            <i\r\n              class=\"fa\"\r\n              aria-hidden=\"true\"\r\n              [class]=\"{\r\n                'fa-eye-slash': !showPassword,\r\n                'fa-eye': showPassword,\r\n              }\"\r\n            ></i>\r\n          </button>\r\n        </div>\r\n      }\r\n    }\r\n\r\n    @if (prop().formText) {\r\n      <small class=\"text-muted d-block\">{{ prop().formText | abpLocalization }}</small>\r\n    }\r\n  </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n  <label [htmlFor]=\"prop().id\" [class]=\"classes || 'form-label d-inline-block'\">\r\n    <span class=\"d-inline-flex align-items-center gap-1 text-nowrap\">\r\n      @if (prop().displayTextResolver) {\r\n        {{ prop().displayTextResolver(data()) | abpLocalization }}\r\n      } @else {\r\n        @if (prop().isExtra) {\r\n          {{ '::' + prop().displayName | abpLocalization }}\r\n        } @else {\r\n          {{ prop().displayName | abpLocalization }}\r\n        }\r\n      }\r\n      {{ asterisk }}\r\n      @if (prop().tooltip) {\r\n        <i\r\n          [ngbTooltip]=\"prop().tooltip.text | abpLocalization\"\r\n          [placement]=\"prop().tooltip.placement || 'auto'\"\r\n          container=\"body\"\r\n          class=\"bi bi-info-circle\"\r\n        ></i>\r\n      }\r\n    </span>\r\n  </label>\r\n</ng-template>\r\n","import { InjectionToken, InjectOptions, InputSignal, isSignal, Type } from '@angular/core';\r\nimport { LinkedList } from '@abp/utils';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport abstract class PropList<R = any, A = Prop<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class PropData<R = any> {\r\n  abstract getInjected: <T>(\r\n    token: Type<T> | InjectionToken<T>,\r\n    notFoundValue?: T,\r\n    options?: InjectOptions,\r\n  ) => T;\r\n  index?: number | InputSignal<number | undefined>;\r\n  abstract record: R | InputSignal<R>;\r\n\r\n  get data(): ReadonlyPropData<R> {\r\n    return {\r\n      getInjected: this.getInjected,\r\n      // `record` / `index` may be signals; always use `data.record` / `data.index`.\r\n      index: isSignal(this.index) ? this.index() : this.index,\r\n      record: isSignal(this.record) ? this.record() : this.record,\r\n    };\r\n  }\r\n}\r\n\r\nexport type ReadonlyPropData<R = any> = Readonly<{\r\n  getInjected: <T>(\r\n    token: Type<T> | InjectionToken<T>,\r\n    notFoundValue?: T,\r\n    options?: InjectOptions,\r\n  ) => T;\r\n  index?: number;\r\n  record: R;\r\n}>;\r\n\r\nexport abstract class Prop<R = any> {\r\n  constructor(\r\n    public readonly type: ePropType,\r\n    public readonly name: string,\r\n    public readonly displayName: string,\r\n    public readonly permission: string,\r\n    public readonly visible: PropPredicate<R> = _ => true,\r\n    public readonly isExtra = false,\r\n    public readonly template?: Type<any>,\r\n    public readonly className?: string,\r\n    public readonly formText?: string,\r\n    public readonly tooltip?: FormPropTooltip,\r\n    public readonly displayTextResolver?: PropDisplayTextResolver<R>,\r\n  ) {\r\n    this.displayName = this.displayName || this.name;\r\n  }\r\n}\r\n\r\nexport type PropCallback<T, R = any> = (data: ReadonlyPropData<T>, auxData?: any) => R;\r\nexport type PropPredicate<T> = (data?: ReadonlyPropData<T>, auxData?: any) => boolean;\r\nexport type PropDisplayTextResolver<T> = (data?: ReadonlyPropData<T>) => string;\r\n\r\nexport abstract class PropsFactory<C extends Props<any>> {\r\n  protected abstract _ctor: Type<C>;\r\n  private contributorCallbacks: PropContributorCallbacks<InferredPropList<C>> = {};\r\n\r\n  get(name: string): C {\r\n    this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n    return new this._ctor(this.contributorCallbacks[name]);\r\n  }\r\n}\r\n\r\nexport abstract class Props<L extends PropList<any, InferredProp<L>>> {\r\n  protected abstract _ctor: Type<L>;\r\n\r\n  get props(): L {\r\n    const propList = new this._ctor();\r\n\r\n    this.callbackList.forEach(callback => callback(propList));\r\n\r\n    return propList;\r\n  }\r\n\r\n  constructor(private readonly callbackList: PropContributorCallback<L>[]) {}\r\n\r\n  addContributor(contributeCallback: PropContributorCallback<L>) {\r\n    this.callbackList.push(contributeCallback);\r\n  }\r\n\r\n  clearContributors() {\r\n    while (this.callbackList.length) this.callbackList.pop();\r\n  }\r\n}\r\n\r\nexport type PropContributorCallbacks<L extends PropList<any, InferredProp<L>>> = Record<\r\n  string,\r\n  PropContributorCallback<L>[]\r\n>;\r\n\r\nexport type PropContributorCallback<L extends PropList<any, InferredProp<L>>> = (\r\n  propList: L,\r\n) => any;\r\n\r\ntype InferredPropList<C> = C extends Props<infer L> ? L : never;\r\nexport type InferredProp<T> = T extends PropList<any, infer U> ? U : T;\r\n","import { ABP } from '@abp/ng.core';\r\nimport { Injector, Type } from '@angular/core';\r\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n  Prop,\r\n  PropCallback,\r\n  PropContributorCallback,\r\n  PropContributorCallbacks,\r\n  PropData,\r\n  PropDisplayTextResolver,\r\n  PropList,\r\n  PropPredicate,\r\n  Props,\r\n  PropsFactory,\r\n} from './props';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class FormPropList<R = any> extends PropList<R, FormProp<R>> {}\r\n\r\nexport class FormProps<R = any> extends Props<PropList<R, FormProp<R>>> {\r\n  protected _ctor: Type<FormPropList<R>> = FormPropList;\r\n}\r\n\r\nexport interface FormPropGroup {\r\n  name: string;\r\n  className?: string;\r\n}\r\n\r\nexport interface FormPropTooltip {\r\n  text: string;\r\n  params?: string[];\r\n  placement?: 'top' | 'end' | 'bottom' | 'start';\r\n}\r\n\r\nexport class GroupedFormPropList<R = any> {\r\n  public readonly items: GroupedFormPropItem[] = [];\r\n  count = 1;\r\n  addItem(item: FormProp<R>) {\r\n    const groupName = item.group?.name;\r\n    let group = this.items.find(i => i.group?.name === groupName);\r\n    if (group) {\r\n      group.formPropList.addTail(item);\r\n    } else {\r\n      group = {\r\n        formPropList: new FormPropList(),\r\n        group: item.group || { name: `default${this.count++}`, className: item.group?.className },\r\n      };\r\n      group.formPropList.addHead(item);\r\n      this.items.push(group);\r\n    }\r\n  }\r\n}\r\n\r\nexport interface GroupedFormPropItem {\r\n  group?: FormPropGroup;\r\n  formPropList: FormPropList;\r\n}\r\n\r\nexport class CreateFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n  protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class EditFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n  protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class FormProp<R = any> extends Prop<R> {\r\n  readonly validators: PropCallback<R, ValidatorFn[]>;\r\n  readonly asyncValidators: PropCallback<R, AsyncValidatorFn[]>;\r\n  readonly disabled: PropPredicate<R>;\r\n  readonly readonly: PropPredicate<R>;\r\n  readonly autocomplete: string;\r\n  readonly defaultValue: boolean | number | string | Date | Array<string>;\r\n  readonly options: PropCallback<R, Observable<ABP.Option<any>[]>> | undefined;\r\n  readonly id: string | undefined;\r\n  readonly template?: Type<any>;\r\n  readonly className?: string;\r\n  readonly group?: FormPropGroup | undefined;\r\n  readonly displayTextResolver?: PropDisplayTextResolver<R>;\r\n  readonly formText?: string;\r\n  readonly tooltip?: FormPropTooltip;\r\n\r\n  constructor(options: FormPropOptions<R>) {\r\n    super(\r\n      options.type,\r\n      options.name,\r\n      options.displayName || '',\r\n      options.permission || '',\r\n      options.visible,\r\n      options.isExtra,\r\n      options.template,\r\n      options.className,\r\n      options.formText,\r\n      options.tooltip,\r\n    );\r\n    this.group = options.group;\r\n    this.className = options.className;\r\n    this.formText = options.formText;\r\n    this.tooltip = options.tooltip;\r\n    this.asyncValidators = options.asyncValidators || (_ => []);\r\n    this.validators = options.validators || (_ => []);\r\n    this.disabled = options.disabled || (_ => false);\r\n    this.readonly = options.readonly || (_ => false);\r\n    this.autocomplete = options.autocomplete || 'off';\r\n    this.options = options.options;\r\n    this.id = options.id || options.name;\r\n    const defaultValue = options.defaultValue;\r\n    this.defaultValue = isFalsyValue(defaultValue) ? (defaultValue as number) : defaultValue || '';\r\n    this.displayTextResolver = options.displayTextResolver;\r\n  }\r\n\r\n  static create<R = any>(options: FormPropOptions<R>) {\r\n    return new FormProp<R>(options);\r\n  }\r\n\r\n  static createMany<R = any>(arrayOfOptions: FormPropOptions<R>[]) {\r\n    return arrayOfOptions.map(FormProp.create);\r\n  }\r\n}\r\n\r\nexport class FormPropData<R = any> extends PropData<R> {\r\n  getInjected: PropData<R>['getInjected'];\r\n\r\n  constructor(\r\n    injector: Injector,\r\n    public readonly record: R,\r\n  ) {\r\n    super();\r\n\r\n    this.getInjected = injector.get.bind(injector);\r\n  }\r\n}\r\n\r\ntype OptionalKeys =\r\n  | 'permission'\r\n  | 'visible'\r\n  | 'displayName'\r\n  | 'isExtra'\r\n  | 'validators'\r\n  | 'asyncValidators'\r\n  | 'disabled'\r\n  | 'readonly'\r\n  | 'autocomplete'\r\n  | 'defaultValue'\r\n  | 'options'\r\n  | 'id'\r\n  | 'displayTextResolver'\r\n  | 'formText'\r\n  | 'tooltip';\r\nexport type FormPropOptions<R = any> = PartialWithOptions<FormProp<R>, OptionalKeys> &\r\n  FilteredWithOptions<FormProp<R>, OptionalKeys>;\r\n\r\nexport type CreateFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type CreateFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type CreateFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\nexport type EditFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type EditFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type EditFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\n\r\nfunction isFalsyValue(defaultValue?: FormProp['defaultValue']): boolean {\r\n  return [0, '', false].indexOf(defaultValue as any) > -1;\r\n}\r\n","import { InjectionToken, InjectOptions, InputSignal, isSignal, Type } from '@angular/core';\r\nimport { LinkedList } from '@abp/utils';\r\n\r\nexport abstract class ActionList<R = any, A = Action<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class ActionData<R = any> {\r\n  abstract getInjected: <T>(\r\n    token: Type<T> | InjectionToken<T>,\r\n    notFoundValue?: T,\r\n    flags?: InjectOptions,\r\n  ) => T;\r\n  index?: number | InputSignal<number | undefined>;\r\n  abstract record: R | InputSignal<R>;\r\n\r\n  get data(): ReadonlyActionData<R> {\r\n    return {\r\n      getInjected: this.getInjected,\r\n      // `record` / `index` may be signals; always use `data.record` / `data.index`.\r\n      index: isSignal(this.index) ? this.index() : this.index,\r\n      record: isSignal(this.record) ? this.record() : this.record,\r\n    };\r\n  }\r\n}\r\n\r\nexport type ReadonlyActionData<R = any> = Readonly<{\r\n  getInjected: <T>(\r\n    token: Type<T> | InjectionToken<T>,\r\n    notFoundValue?: T,\r\n    flags?: InjectOptions,\r\n  ) => T;\r\n  index?: number;\r\n  record: R;\r\n}>;\r\n\r\nexport abstract class Action<R = any> {\r\n  constructor(\r\n    public readonly permission: string,\r\n    public readonly visible: ActionPredicate<R> = () => true,\r\n    public readonly action: ActionCallback<R> = () => {},\r\n    public readonly btnClass?: string,\r\n    public readonly btnStyle?: string,\r\n  ) {}\r\n}\r\n\r\nexport type ActionCallback<T, R = any> = (data: ReadonlyActionData<T>) => R;\r\nexport type ActionPredicate<T> = (data?: ReadonlyActionData<T>) => boolean;\r\n\r\nexport abstract class ActionsFactory<C extends Actions<any>> {\r\n  protected abstract _ctor: Type<C>;\r\n  private contributorCallbacks: ActionContributorCallbacks<InferredActionList<C>> = {};\r\n\r\n  get(name: string): C {\r\n    this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n    return new this._ctor(this.contributorCallbacks[name]);\r\n  }\r\n}\r\n\r\nexport abstract class Actions<L extends ActionList<any, InferredAction<L>>> {\r\n  protected abstract _ctor: Type<L>;\r\n\r\n  get actions(): L {\r\n    const actionList = new this._ctor();\r\n\r\n    this.callbackList.forEach(callback => callback(actionList));\r\n\r\n    return actionList;\r\n  }\r\n\r\n  constructor(private readonly callbackList: ActionContributorCallback<L>[]) {}\r\n\r\n  addContributor(contributeCallback: ActionContributorCallback<L>) {\r\n    this.callbackList.push(contributeCallback);\r\n  }\r\n\r\n  clearContributors() {\r\n    while (this.callbackList.length) this.callbackList.pop();\r\n  }\r\n}\r\n\r\nexport type ActionContributorCallbacks<L extends ActionList<any, InferredAction<L>>> = Record<\r\n  string,\r\n  ActionContributorCallback<L>[]\r\n>;\r\n\r\nexport type ActionContributorCallback<L extends ActionList<any, InferredAction<L>>> = (\r\n  actionList: L,\r\n) => any;\r\n\r\ntype InferredActionList<C> = C extends Actions<infer L> ? L : never;\r\nexport type InferredAction<T> = T extends ActionList<any, infer U> ? U : T;\r\n","import { Type } from '@angular/core';\r\nimport {\r\n  Action,\r\n  ActionContributorCallback,\r\n  ActionContributorCallbacks,\r\n  ActionList,\r\n  Actions,\r\n  ActionsFactory,\r\n} from './actions';\r\nimport { FormPropTooltip } from './form-props';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class EntityActionList<R = any> extends ActionList<R, EntityAction<R>> {}\r\n\r\nexport class EntityActions<R = any> extends Actions<EntityActionList<R>> {\r\n  protected _ctor: Type<EntityActionList<R>> = EntityActionList;\r\n}\r\n\r\nexport class EntityActionsFactory<R = any> extends ActionsFactory<EntityActions<R>> {\r\n  protected _ctor: Type<EntityActions<R>> = EntityActions;\r\n}\r\n\r\nexport class EntityAction<R = any> extends Action<R> {\r\n  readonly text: string;\r\n  readonly icon: string;\r\n  readonly btnClass?: string;\r\n  readonly btnStyle?: string;\r\n  readonly showOnlyIcon?: boolean;\r\n  readonly tooltip?: FormPropTooltip;\r\n\r\n  constructor(options: EntityActionOptions<R>) {\r\n    super(options.permission || '', options.visible, options.action);\r\n    this.text = options.text;\r\n    this.icon = options.icon || '';\r\n    this.btnClass = options.btnClass || 'btn btn-primary text-center';\r\n    this.btnStyle = options.btnStyle;\r\n    this.showOnlyIcon = options.showOnlyIcon || false;\r\n    this.tooltip = options.tooltip;\r\n  }\r\n\r\n  static create<R = any>(options: EntityActionOptions<R>) {\r\n    return new EntityAction<R>(options);\r\n  }\r\n\r\n  static createMany<R = any>(arrayOfOptions: EntityActionOptions<R>[]) {\r\n    return arrayOfOptions.map(EntityAction.create);\r\n  }\r\n}\r\n\r\ntype OptionalKeys = 'permission' | 'visible' | 'icon';\r\nexport type EntityActionOptions<R = any> = PartialWithOptions<EntityAction<R>, OptionalKeys> &\r\n  FilteredWithOptions<EntityAction<R>, OptionalKeys>;\r\n\r\nexport type EntityActionDefaults<R = any> = Record<string, EntityAction<R>[]>;\r\nexport type EntityActionContributorCallback<R = any> = ActionContributorCallback<\r\n  EntityActionList<R>\r\n>;\r\nexport type EntityActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n  EntityActionList<R>\r\n>;\r\n","import { ABP, escapeHtmlChars } from '@abp/ng.core';\r\nimport { InjectOptions, InjectionToken, Type } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { ActionCallback } from './actions';\r\nimport {\r\n  Prop,\r\n  PropCallback,\r\n  PropContributorCallback,\r\n  PropContributorCallbacks,\r\n  PropList,\r\n  Props,\r\n  PropsFactory,\r\n} from './props';\r\nimport { FormPropTooltip } from './form-props';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class EntityPropList<R = any> extends PropList<R, EntityProp<R>> {}\r\n\r\nexport class EntityProps<R = any> extends Props<EntityPropList<R>> {\r\n  protected _ctor: Type<EntityPropList<R>> = EntityPropList;\r\n}\r\n\r\nexport class EntityPropsFactory<R = any> extends PropsFactory<EntityProps<R>> {\r\n  protected _ctor: Type<EntityProps<R>> = EntityProps;\r\n}\r\n\r\nexport class EntityProp<R = any> extends Prop<R> {\r\n  readonly columnWidth: number | undefined;\r\n  readonly sortable: boolean;\r\n  readonly valueResolver: PropCallback<R, Observable<any>>;\r\n  readonly action?: ActionCallback<R>;\r\n  readonly component?: Type<any>;\r\n  readonly enumList?: Array<ABP.Option<any>>;\r\n  readonly tooltip?: FormPropTooltip;\r\n  readonly columnVisible: ColumnPredicate;\r\n\r\n  constructor(options: EntityPropOptions<R>) {\r\n    super(\r\n      options.type,\r\n      options.name,\r\n      options.displayName || '',\r\n      options.permission || '',\r\n      options.visible,\r\n      options.isExtra,\r\n    );\r\n\r\n    this.columnVisible = options.columnVisible || (() => true);\r\n    this.columnWidth = options.columnWidth;\r\n    this.sortable = options.sortable || false;\r\n    this.valueResolver =\r\n      options.valueResolver ||\r\n      (data => of(escapeHtmlChars((data.record as PropDataObject)[this.name])));\r\n    if (options.action) {\r\n      this.action = options.action;\r\n    }\r\n    if (options.component) {\r\n      this.component = options.component;\r\n    }\r\n    if (options.enumList) {\r\n      this.enumList = options.enumList;\r\n    }\r\n    this.tooltip = options.tooltip;\r\n  }\r\n\r\n  static create<R = any>(options: EntityPropOptions<R>) {\r\n    return new EntityProp<R>(options);\r\n  }\r\n\r\n  static createMany<R = any>(arrayOfOptions: EntityPropOptions<R>[]) {\r\n    return arrayOfOptions.map(EntityProp.create);\r\n  }\r\n}\r\n\r\ntype OptionalKeys =\r\n  | 'permission'\r\n  | 'visible'\r\n  | 'columnVisible'\r\n  | 'displayName'\r\n  | 'isExtra'\r\n  | 'columnWidth'\r\n  | 'sortable'\r\n  | 'valueResolver'\r\n  | 'action'\r\n  | 'component'\r\n  | 'enumList';\r\nexport type EntityPropOptions<R = any> = PartialWithOptions<EntityProp<R>, OptionalKeys> &\r\n  FilteredWithOptions<EntityProp<R>, OptionalKeys>;\r\n\r\nexport type EntityPropDefaults<R = any> = Record<string, EntityProp<R>[]>;\r\nexport type EntityPropContributorCallback<R = any> = PropContributorCallback<EntityPropList<R>>;\r\nexport type EntityPropContributorCallbacks<R = any> = PropContributorCallbacks<EntityPropList<R>>;\r\nexport type ColumnPredicate = (getInjected: GetInjected, auxData?: any) => boolean;\r\nexport type GetInjected = <T>(\r\n  token: Type<T> | InjectionToken<T>,\r\n  notFoundValue?: T,\r\n  options?: InjectOptions,\r\n) => T;\r\ntype PropDataObject = { [key: string]: any };\r\n","import { Injector, Type } from '@angular/core';\r\nimport {\r\n  Action,\r\n  ActionContributorCallback,\r\n  ActionContributorCallbacks,\r\n  ActionData,\r\n  ActionList,\r\n  Actions,\r\n  ActionsFactory,\r\n  ReadonlyActionData,\r\n} from './actions';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class ToolbarActionList<R = any> extends ActionList<R, ToolbarActionDefault<R>> {}\r\n\r\nexport class ToolbarActions<R = any> extends Actions<ToolbarActionList<R>> {\r\n  protected _ctor: Type<ToolbarActionList<R>> = ToolbarActionList;\r\n}\r\n\r\nexport class ToolbarActionsFactory<R = any> extends ActionsFactory<ToolbarActions<R>> {\r\n  protected _ctor: Type<ToolbarActions<R>> = ToolbarActions;\r\n}\r\n\r\nexport class ToolbarAction<R = any> extends Action<R> {\r\n  readonly text: string;\r\n  readonly icon: string;\r\n  readonly btnClass?: string;\r\n\r\n  constructor(options: ToolbarActionOptions<R>) {\r\n    super(options.permission || '', options.visible, options.action);\r\n    this.text = options.text;\r\n    this.icon = options.icon || '';\r\n    if (options.btnClass) {\r\n      this.btnClass = options.btnClass;\r\n    }\r\n  }\r\n\r\n  static create<R = any>(options: ToolbarActionOptions<R>) {\r\n    return new ToolbarAction<R>(options);\r\n  }\r\n\r\n  static createMany<R = any>(arrayOfOptions: ToolbarActionOptions<R>[]) {\r\n    return arrayOfOptions.map(ToolbarAction.create);\r\n  }\r\n}\r\n\r\nexport class ToolbarComponent<R = any> extends Action<R> {\r\n  readonly component: Type<any>;\r\n\r\n  constructor(options: ToolbarComponentOptions<R>) {\r\n    super(options.permission || '', options.visible, options.action);\r\n    this.component = options.component;\r\n  }\r\n\r\n  static create<R = any>(options: ToolbarComponentOptions<R>) {\r\n    return new ToolbarComponent<R>(options);\r\n  }\r\n\r\n  static createMany<R = any>(arrayOfOptions: ToolbarComponentOptions<R>[]) {\r\n    return arrayOfOptions.map(ToolbarComponent.create);\r\n  }\r\n}\r\n\r\ntype OptionalActionKeys = 'permission' | 'visible' | 'icon' | 'btnClass';\r\nexport type ToolbarActionOptions<R = any> = PartialWithOptions<\r\n  ToolbarAction<R>,\r\n  OptionalActionKeys\r\n> &\r\n  FilteredWithOptions<ToolbarAction<R>, OptionalActionKeys>;\r\n\r\ntype OptionalComponentKeys = 'permission' | 'visible' | 'action';\r\nexport type ToolbarComponentOptions<R = any> = PartialWithOptions<\r\n  ToolbarComponent<R>,\r\n  OptionalComponentKeys\r\n> &\r\n  FilteredWithOptions<ToolbarComponent<R>, OptionalComponentKeys>;\r\n\r\nexport type ToolbarActionDefault<R = any> = ToolbarAction<R> | ToolbarComponent<R>;\r\n\r\nexport type ToolbarActionDefaults<R = any> = Record<string, Array<ToolbarActionDefault<R>>>;\r\nexport type ToolbarActionContributorCallback<R = any> = ActionContributorCallback<\r\n  ToolbarActionList<R>\r\n>;\r\nexport type ToolbarActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n  ToolbarActionList<R>\r\n>;\r\nexport type InferredData<L> = ActionData<InferredRecord<L>>;\r\nexport type InferredRecord<L> = L extends ActionList<infer R> ? R : any;\r\n\r\nexport interface HasCreateInjectorPipe<R> {\r\n  getData: () => ReadonlyActionData<R>;\r\n  injector: Injector;\r\n  getInjected: InferredData<ToolbarActionList<R>>['getInjected'];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityActionsFactory } from '../models/entity-actions';\r\nimport { EntityPropsFactory } from '../models/entity-props';\r\nimport { CreateFormPropsFactory, EditFormPropsFactory } from '../models/form-props';\r\nimport { ToolbarActionsFactory } from '../models/toolbar-actions';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ExtensionsService<R = any> {\r\n  readonly entityActions = new EntityActionsFactory<R>();\r\n  readonly toolbarActions = new ToolbarActionsFactory<R[]>();\r\n  readonly entityProps = new EntityPropsFactory<R>();\r\n  readonly createFormProps = new CreateFormPropsFactory<R>();\r\n  readonly editFormProps = new EditFormPropsFactory<R>();\r\n}\r\n","/* eslint-disable @angular-eslint/no-input-rename */\r\nimport {\r\n  Directive,\r\n  Injector,\r\n  OnDestroy,\r\n  TemplateRef,\r\n  ViewContainerRef,\r\n  effect,\r\n  inject,\r\n  input\r\n} from '@angular/core';\r\nimport { PropData, PropList } from '../models/props';\r\n\r\ntype InferredRecord<L> = L extends PropList<infer R> ? R : never;\r\n\r\n@Directive({\r\n  exportAs: 'abpPropData',\r\n  selector: '[abpPropData]',\r\n})\r\nexport class PropDataDirective<L extends PropList<any>>\r\n  extends PropData<InferredRecord<L>>\r\n  implements OnDestroy\r\n{\r\n  private tempRef = inject<TemplateRef<any>>(TemplateRef);\r\n  private vcRef = inject(ViewContainerRef);\r\n\r\n  readonly propList = input<L | undefined>(undefined, { alias: 'abpPropDataFromList' });\r\n  readonly record = input.required<InferredRecord<L>>({ alias: 'abpPropDataWithRecord' });\r\n  readonly index = input<number | undefined>(undefined, { alias: 'abpPropDataAtIndex' });\r\n\r\n  readonly getInjected: PropData<InferredRecord<L>>['getInjected'];\r\n\r\n  constructor() {\r\n    const injector = inject(Injector);\r\n\r\n    super();\r\n\r\n    this.getInjected = injector.get.bind(injector);\r\n\r\n    // Watch for input changes and re-render\r\n    effect(() => {\r\n      // Read all inputs to track them\r\n      this.record();\r\n      this.index();\r\n      this.propList();\r\n      \r\n      this.vcRef.clear();\r\n      this.vcRef.createEmbeddedView(this.tempRef, {\r\n        $implicit: this.data,\r\n        index: 0,\r\n      });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.vcRef.clear();\r\n  }\r\n}\r\n","import { TrackByService } from '@abp/ng.core';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  inject,\r\n  Optional,\r\n  SkipSelf,\r\n  viewChildren,\r\n  input,\r\n  signal,\r\n  effect\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp, FormPropList, GroupedFormPropList } from '../../models/form-props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { ExtensibleFormPropComponent } from './extensible-form-prop.component';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { PropDataDirective } from '../../directives/prop-data.directive';\r\n\r\n@Component({\r\n  exportAs: 'abpExtensibleForm',\r\n  selector: 'abp-extensible-form',\r\n  templateUrl: './extensible-form.component.html',\r\n  imports: [NgTemplateOutlet, PropDataDirective, ReactiveFormsModule, ExtensibleFormPropComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  viewProviders: [\r\n    {\r\n      provide: ControlContainer,\r\n      useFactory: selfFactory,\r\n      deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n    },\r\n  ],\r\n})\r\nexport class ExtensibleFormComponent<R = any> {\r\n  public readonly cdRef = inject(ChangeDetectorRef);\r\n  public readonly track = inject(TrackByService);\r\n  private readonly container = inject(ControlContainer);\r\n  private readonly extensions = inject(ExtensionsService);\r\n  private readonly identifier = inject(EXTENSIONS_IDENTIFIER);\r\n\r\n  readonly formProps = viewChildren(ExtensibleFormPropComponent);\r\n\r\n  readonly selectedRecord = input<R | undefined>(undefined);\r\n\r\n  extraPropertiesKey = EXTRA_PROPERTIES_KEY;\r\n  readonly groupedPropList = signal<GroupedFormPropList | undefined>(undefined);\r\n  groupedPropListOfArray: FormProp<any>[][];\r\n  readonly record = signal<R | undefined>(undefined);\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      const recordValue = this.selectedRecord();\r\n      const type = !recordValue || JSON.stringify(recordValue) === '{}' ? 'create' : 'edit';\r\n      const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\r\n      this.groupedPropList.set(this.createGroupedList(propList));\r\n      this.record.set(recordValue);\r\n    });\r\n  }\r\n\r\n  get form(): UntypedFormGroup {\r\n    return (this.container ? this.container.control : { controls: {} }) as UntypedFormGroup;\r\n  }\r\n\r\n  get extraProperties(): UntypedFormGroup {\r\n    return (this.form.controls.extraProperties || { controls: {} }) as UntypedFormGroup;\r\n  }\r\n\r\n  createGroupedList(propList: FormPropList<R>) {\r\n    const groupedFormPropList = new GroupedFormPropList();\r\n    propList.forEach(item => {\r\n      groupedFormPropList.addItem(item.value);\r\n    });\r\n\r\n    return groupedFormPropList;\r\n  }\r\n\r\n  //TODO: Reactor this method\r\n  isAnyGroupMemberVisible(index: number, data: any) {\r\n    const groupedPropListValue = this.groupedPropList();\r\n    if (!groupedPropListValue) return false;\r\n    const { items } = groupedPropListValue;\r\n    const formPropList = items[index].formPropList.toArray();\r\n    return formPropList.some(prop => prop.visible(data));\r\n  }\r\n}\r\n","@if (form) {\r\n@for (groupedProp of groupedPropList()?.items; track i; let i = $index; let first = $first) {\r\n<ng-container *abpPropData=\"let data; fromList: groupedProp.formPropList; withRecord: record()\">\r\n  @if (isAnyGroupMemberVisible(i, data) && groupedProp.group?.className) {\r\n  <div [class]=\"groupedProp.group?.className\"\r\n    [attr.data-name]=\"groupedProp.group?.name || groupedProp.group?.className\">\r\n    <ng-container [ngTemplateOutlet]=\"propListTemplate\"\r\n      [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\">\r\n    </ng-container>\r\n  </div>\r\n  } @else {\r\n  <ng-container [ngTemplateOutlet]=\"propListTemplate\"\r\n    [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\">\r\n  </ng-container>\r\n  }\r\n</ng-container>\r\n}\r\n}\r\n\r\n<ng-template let-groupedProp=\"groupedProp\" let-data=\"data\" let-isFirstGroup=\"isFirstGroup\" #propListTemplate>\r\n  @for (prop of groupedProp.formPropList; let index = $index; let first = $first; track prop.name) {\r\n  @if (prop.visible(data)) {\r\n  @if (extraProperties.controls[prop.name]) {\r\n  <ng-container [formGroupName]=\"extraPropertiesKey\">\r\n    <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\" [class]=\"prop.className\" />\r\n  </ng-container>\r\n  } @else {\r\n  @if (form.get(prop.name)) {\r\n  <abp-extensible-form-prop [class]=\"prop.className\" [prop]=\"prop\" [data]=\"data\" [first]=\"first\"\r\n    [isFirstGroup]=\"isFirstGroup\" />\r\n  }\r\n  }\r\n  }\r\n  }\r\n</ng-template>","import { Directive, Injector, inject, input } from '@angular/core';\r\nimport { ActionData, ActionList, InferredAction } from '../../models/actions';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { InferredData, InferredRecord } from '../../models/toolbar-actions';\r\n\r\n// Fix for https://github.com/angular/angular/issues/23904\r\n// @dynamic\r\n@Directive()\r\nexport abstract class AbstractActionsComponent<\r\n  L extends ActionList<any, InferredAction<L>>,\r\n> extends ActionData<InferredRecord<L>> {\r\n  readonly actionList: L;\r\n\r\n  readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n  record = input.required<InferredRecord<L>>();\r\n\r\n  protected constructor() {\r\n    const injector = inject(Injector);\r\n\r\n    super();\r\n    this.getInjected = injector.get.bind(injector);\r\n    const extensions = injector.get(ExtensionsService);\r\n    const name = injector.get(EXTENSIONS_IDENTIFIER);\r\n    const type = injector.get(EXTENSIONS_ACTION_TYPE);\r\n    this.actionList = extensions[type].get(name).actions as unknown as L;\r\n  }\r\n}\r\n\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  TrackByFunction,\r\n  input\r\n} from '@angular/core';\r\nimport { EntityAction, EntityActionList } from '../../models/entity-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { LocalizationPipe, PermissionDirective } from '@abp/ng.core';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n  exportAs: 'abpGridActions',\r\n  imports: [\r\n    NgbDropdownModule,\r\n    EllipsisDirective,\r\n    PermissionDirective,\r\n    LocalizationPipe,\r\n    NgTemplateOutlet,\r\n    NgbTooltipModule,\r\n  ],\r\n  selector: 'abp-grid-actions',\r\n  templateUrl: './grid-actions.component.html',\r\n  providers: [\r\n    {\r\n      provide: EXTENSIONS_ACTION_TYPE,\r\n      useValue: 'entityActions',\r\n    },\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class GridActionsComponent<R = any> extends AbstractActionsComponent<EntityActionList<R>> {\r\n  readonly icon = input('fa fa-cog');\r\n  readonly index = input<number | undefined>(undefined);\r\n  readonly text = input('');\r\n\r\n  readonly trackByFn: TrackByFunction<EntityAction<R>> = (_, item) => item.text;\r\n\r\n  constructor() {\r\n    super();\r\n  }\r\n}\r\n","@if (actionList.length > 1) {\r\n<div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n  <button class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" ngbDropdownToggle>\r\n    <i [class]=\"icon()\" [class.me-1]=\"icon()\"></i>{{ text() | abpLocalization }}\r\n  </button>\r\n  <div ngbDropdownMenu>\r\n    @for (action of actionList; track action.text) {\r\n    <ng-container [ngTemplateOutlet]=\"dropDownBtnItemTmp\" [ngTemplateOutletContext]=\"{ $implicit: action }\">\r\n    </ng-container>\r\n    }\r\n  </div>\r\n</div>\r\n}\r\n\r\n@if (actionList.length === 1) {\r\n<ng-container [ngTemplateOutlet]=\"btnTmp\"\r\n  [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"></ng-container>\r\n}\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n  @if (action.visible(data)) {\r\n  <button ngbDropdownItem *abpPermission=\"action.permission; runChangeDetection: false\" (click)=\"action.action(data)\"\r\n    type=\"button\">\r\n    <ng-container *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"></ng-container>\r\n  </button>\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n  <i [class]=\"action.icon\" [class.me-1]=\"action.icon && !action.showOnlyIcon\"></i>\r\n  @if (!action.showOnlyIcon) {\r\n  @if (action.icon) {\r\n  <span>{{ action.text | abpLocalization }}</span>\r\n  } @else {\r\n  <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n  }\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #btnTmp let-action>\r\n  @if (action.visible(data)) {\r\n  @if (action.tooltip) {\r\n  <button *abpPermission=\"action.permission; runChangeDetection: false\" (click)=\"action.action(data)\" type=\"button\"\r\n    [class]=\"action.btnClass\" [style]=\"action.btnStyle\" [ngbTooltip]=\"action.tooltip.text | abpLocalization\"\r\n    [placement]=\"action.tooltip.placement || 'auto'\" triggers=\"hover\" container=\"body\">\r\n    <ng-container *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"></ng-container>\r\n  </button>\r\n  } @else {\r\n  <button *abpPermission=\"action.permission; runChangeDetection: false\" (click)=\"action.action(data)\" type=\"button\"\r\n    [class]=\"action.btnClass\" [style]=\"action.btnStyle\">\r\n    <ng-container *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"></ng-container>\r\n  </button>\r\n  }\r\n  }\r\n</ng-template>","import { Component, contentChild, input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'abp-extensible-table-row-detail',\r\n    template: '',\r\n})\r\nexport class ExtensibleTableRowDetailComponent<R = any> {\r\n    readonly rowHeight = input<string | number>('100%');\r\n    readonly template = contentChild(TemplateRef<{ row: R; expanded: boolean }>);\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  computed,\r\n  inject,\r\n  Injector,\r\n  LOCALE_ID,\r\n  OnDestroy,\r\n  PLATFORM_ID,\r\n  signal,\r\n  TemplateRef,\r\n  TrackByFunction,\r\n  input,\r\n  effect,\r\n  output,\r\n  contentChild,\r\n  viewChild,\r\n} from '@angular/core';\r\nimport { AsyncPipe, isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { Observable, filter, map, Subject, debounceTime, distinctUntilChanged } from 'rxjs';\r\n\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxDatatableModule, SelectionType, DatatableComponent } from '@swimlane/ngx-datatable';\r\n\r\nimport {\r\n  ABP,\r\n  ConfigStateService,\r\n  ListService,\r\n  LocalizationPipe,\r\n  PermissionDirective,\r\n  PermissionService,\r\n  TimezoneService,\r\n  UtcToLocalPipe,\r\n} from '@abp/ng.core';\r\nimport {\r\n  AbpVisibleDirective,\r\n  NgxDatatableDefaultDirective,\r\n  NgxDatatableListDirective,\r\n} from '@abp/ng.theme.shared';\r\n\r\nimport { ePropType } from '../../enums/props.enum';\r\nimport { EntityActionList } from '../../models/entity-actions';\r\nimport { EntityProp, EntityPropList } from '../../models/entity-props';\r\nimport { ReadonlyPropData } from '../../models/props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport {\r\n  ENTITY_PROP_TYPE_CLASSES,\r\n  EXTENSIONS_IDENTIFIER,\r\n  PROP_DATA_STREAM,\r\n  ROW_RECORD,\r\n} from '../../tokens/extensions.token';\r\nimport { GridActionsComponent } from '../grid-actions/grid-actions.component';\r\nimport { ExtensibleTableRowDetailComponent } from './extensible-table-row-detail';\r\nimport { RowDetailContext } from '../../models/row-detail';\r\n\r\nconst DEFAULT_ACTIONS_COLUMN_WIDTH = 150;\r\n\r\n@Component({\r\n  exportAs: 'abpExtensibleTable',\r\n  selector: 'abp-extensible-table',\r\n  imports: [\r\n    AbpVisibleDirective,\r\n    NgxDatatableModule,\r\n    GridActionsComponent,\r\n    NgbTooltip,\r\n    NgxDatatableDefaultDirective,\r\n    NgxDatatableListDirective,\r\n    PermissionDirective,\r\n    LocalizationPipe,\r\n    UtcToLocalPipe,\r\n    AsyncPipe,\r\n    NgTemplateOutlet,\r\n    NgComponentOutlet,\r\n  ],\r\n  templateUrl: './extensible-table.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styles: [\r\n    `\r\n      :host ::ng-deep .ngx-datatable.material .datatable-body .datatable-row-detail {\r\n        background: none;\r\n        padding: 0;\r\n      }\r\n    `,\r\n  ],\r\n})\r\nexport class ExtensibleTableComponent<R = any> implements AfterViewInit, OnDestroy {\r\n  readonly #injector = inject(Injector);\r\n  readonly getInjected = this.#injector.get.bind(this.#injector);\r\n  protected readonly cdr = inject(ChangeDetectorRef);\r\n  protected readonly locale = inject(LOCALE_ID);\r\n  protected readonly config = inject(ConfigStateService);\r\n  protected readonly timeZoneService = inject(TimezoneService);\r\n  protected readonly entityPropTypeClasses = inject(ENTITY_PROP_TYPE_CLASSES);\r\n  protected readonly permissionService = inject(PermissionService);\r\n  private platformId = inject(PLATFORM_ID);\r\n  protected isBrowser = isPlatformBrowser(this.platformId);\r\n\r\n  // Input signals\r\n  readonly actionsTextInput = input<string | undefined>(undefined, { alias: 'actionsText' });\r\n  readonly dataInput = input<R[]>([], { alias: 'data' });\r\n  readonly list = input.required<ListService>();\r\n  readonly recordsTotal = input.required<number>();\r\n  readonly actionsColumnWidthInput = input<number | undefined>(undefined, {\r\n    alias: 'actionsColumnWidth',\r\n  });\r\n  readonly actionsTemplate = input<TemplateRef<any> | undefined>(undefined);\r\n  readonly selectable = input(false);\r\n  readonly selectionTypeInput = input<SelectionType | keyof typeof SelectionType>(\r\n    SelectionType.multiClick,\r\n    {\r\n      alias: 'selectionType',\r\n    },\r\n  );\r\n  readonly selected = input<any[]>([]);\r\n  readonly infiniteScroll = input(false);\r\n  readonly isLoading = input(false);\r\n  readonly scrollThreshold = input(10);\r\n  readonly tableHeight = input<number | undefined>(undefined);\r\n  readonly rowDetailTemplate = input<TemplateRef<RowDetailContext<R>> | undefined>(undefined);\r\n  readonly rowDetailHeight = input<string | number>('100%');\r\n\r\n  // Output signals\r\n  readonly tableActivate = output<any>();\r\n  readonly selectionChange = output<any[]>();\r\n  readonly loadMore = output<void>();\r\n  readonly rowDetailToggle = output<R>();\r\n\r\n  // Internal signals\r\n  protected readonly _data = signal<R[]>([]);\r\n  private readonly _actionsColumnWidth = signal<number | undefined>(DEFAULT_ACTIONS_COLUMN_WIDTH);\r\n\r\n  readonly rowDetailComponent = contentChild(ExtensibleTableRowDetailComponent);\r\n\r\n  readonly table = viewChild.required<DatatableComponent>('table');\r\n\r\n  // Computed values\r\n  protected readonly actionsText = computed(() => {\r\n    return this.actionsTextInput() ?? (this.actionList.length >= 1 ? 'AbpUi::Actions' : '');\r\n  });\r\n\r\n  protected readonly selectionType = computed(() => {\r\n    const value = this.selectionTypeInput();\r\n    return typeof value === 'string' ? SelectionType[value as keyof typeof SelectionType] : value;\r\n  });\r\n\r\n  protected get data(): R[] {\r\n    return this._data();\r\n  }\r\n\r\n  protected set data(value: R[]) {\r\n    this._data.set(value);\r\n  }\r\n\r\n  protected get effectiveRowDetailTemplate(): TemplateRef<RowDetailContext<R>> | undefined {\r\n    return this.rowDetailComponent()?.template() ?? this.rowDetailTemplate();\r\n  }\r\n\r\n  protected get effectiveRowDetailHeight(): string | number {\r\n    return this.rowDetailComponent()?.rowHeight() ?? this.rowDetailHeight();\r\n  }\r\n\r\n  hasAtLeastOnePermittedAction: boolean;\r\n\r\n  readonly propList: EntityPropList<R>;\r\n\r\n  readonly actionList: EntityActionList<R>;\r\n\r\n  readonly trackByFn: TrackByFunction<EntityProp<R>> = (_, item) => item.name;\r\n\r\n  // Infinite scroll: debounced load more subject\r\n  private readonly loadMoreSubject = new Subject<void>();\r\n  private readonly loadMoreSubscription = this.loadMoreSubject\r\n    .pipe(debounceTime(100), distinctUntilChanged())\r\n    .subscribe(() => this.triggerLoadMore());\r\n\r\n  readonly columnWidths = computed(() => {\r\n    return this.propList.toArray().map(prop => prop.columnWidth);\r\n  });\r\n\r\n  constructor() {\r\n    const extensions = this.#injector.get(ExtensionsService);\r\n    const name = this.#injector.get(EXTENSIONS_IDENTIFIER);\r\n    this.propList = extensions.entityProps.get(name).props;\r\n    this.actionList = extensions['entityActions'].get(name)\r\n      .actions as unknown as EntityActionList<R>;\r\n\r\n    this.hasAtLeastOnePermittedAction =\r\n      this.permissionService.filterItemsByPolicy(\r\n        this.actionList.toArray().map(action => ({ requiredPolicy: action.permission })),\r\n      ).length > 0;\r\n\r\n    // Watch actionsColumnWidth input\r\n    effect(() => {\r\n      const width = this.actionsColumnWidthInput();\r\n      this._actionsColumnWidth.set(width ? Number(width) : undefined);\r\n    });\r\n\r\n    // Watch data input changes\r\n    effect(() => {\r\n      const dataValue = this.dataInput();\r\n      if (!dataValue) return;\r\n\r\n      if (dataValue.length < 1) {\r\n        this.list().totalCount = this.recordsTotal();\r\n      }\r\n\r\n      this._data.set(dataValue.map((record, index) => this.prepareRecord(record, index)));\r\n    });\r\n  }\r\n\r\n  private prepareRecord(record: any, index: number): any {\r\n    this.propList.forEach(prop => {\r\n      const propData = { getInjected: this.getInjected, record, index } as ReadonlyPropData;\r\n      const value = this.getContent(prop.value, propData);\r\n\r\n      const propKey = `_${prop.value.name}`;\r\n      record[propKey] = {\r\n        visible: prop.value.visible(propData),\r\n        value,\r\n      };\r\n      if (prop.value.component) {\r\n        record[propKey].injector = Injector.create({\r\n          providers: [\r\n            {\r\n              provide: PROP_DATA_STREAM,\r\n              useValue: value,\r\n            },\r\n            {\r\n              provide: ROW_RECORD,\r\n              useValue: record,\r\n            },\r\n          ],\r\n          parent: this.#injector,\r\n        });\r\n        record[propKey].component = prop.value.component;\r\n      }\r\n    });\r\n\r\n    return record;\r\n  }\r\n\r\n  private getIcon(value: boolean) {\r\n    return value\r\n      ? '<div class=\"text-success\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i></div>'\r\n      : '<div class=\"text-danger\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>';\r\n  }\r\n\r\n  private getEnum(rowValue: any, list: Array<ABP.Option<any>>) {\r\n    if (!list || list.length < 1) return rowValue;\r\n    const { key } = list.find(({ value }) => value === rowValue) || {};\r\n    return key;\r\n  }\r\n\r\n  getContent(prop: EntityProp<R>, data: ReadonlyPropData): Observable<string> {\r\n    return prop.valueResolver(data).pipe(\r\n      map(value => {\r\n        switch (prop.type) {\r\n          case ePropType.Boolean:\r\n            return this.getIcon(value);\r\n          case ePropType.Enum:\r\n            return this.getEnum(value, prop.enumList || []);\r\n          default:\r\n            return value;\r\n          // More types can be handled in the future\r\n        }\r\n      }),\r\n    );\r\n  }\r\n\r\n  isVisibleActions(rowData: any): boolean {\r\n    const actions = this.actionList.toArray();\r\n    const visibleActions = actions.filter(action => {\r\n      const { visible, permission } = action;\r\n\r\n      let isVisible = true;\r\n      let hasPermission = true;\r\n\r\n      if (visible) {\r\n        isVisible = visible({ record: rowData, getInjected: this.getInjected });\r\n      }\r\n\r\n      if (permission) {\r\n        hasPermission = this.permissionService.getGrantedPolicy(permission);\r\n      }\r\n\r\n      return isVisible && hasPermission;\r\n    });\r\n\r\n    return visibleActions.length > 0;\r\n  }\r\n\r\n  onSelect({ selected }: { selected: any[] }) {\r\n    const selectedValue = this.selected();\r\n    selectedValue.splice(0, selectedValue.length);\r\n    selectedValue.push(...selected);\r\n    this.selectionChange.emit(selected);\r\n  }\r\n\r\n  onScroll(scrollEvent: Event): void {\r\n    if (!this.shouldHandleScroll()) {\r\n      return;\r\n    }\r\n\r\n    const target = scrollEvent.target as HTMLElement;\r\n    if (!target) {\r\n      return;\r\n    }\r\n\r\n    if (this.isNearScrollBottom(target)) {\r\n      this.loadMoreSubject.next();\r\n    }\r\n  }\r\n\r\n  private shouldHandleScroll(): boolean {\r\n    return this.infiniteScroll() && !this.isLoading();\r\n  }\r\n\r\n  private isNearScrollBottom(element: HTMLElement): boolean {\r\n    const { offsetHeight, scrollTop, scrollHeight } = element;\r\n    return offsetHeight + scrollTop >= scrollHeight - this.scrollThreshold();\r\n  }\r\n\r\n  private triggerLoadMore(): void {\r\n    this.loadMore.emit();\r\n  }\r\n\r\n  getTableHeight() {\r\n    if (!this.infiniteScroll()) return 'auto';\r\n\r\n    const tableHeight = this.tableHeight();\r\n    return tableHeight ? `${tableHeight}px` : 'auto';\r\n  }\r\n\r\n  toggleExpandRow(row: R): void {\r\n    const table = this.table();\r\n    if (table && table.rowDetail) {\r\n      table.rowDetail.toggleExpandRow(row);\r\n    }\r\n    this.rowDetailToggle.emit(row);\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (!this.infiniteScroll()) {\r\n      this.list()\r\n        ?.requestStatus$?.pipe(filter(status => status === 'loading'))\r\n        .subscribe(() => {\r\n          this._data.set([]);\r\n          this.cdr.markForCheck();\r\n        });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.loadMoreSubscription.unsubscribe();\r\n  }\r\n}\r\n","@if (isBrowser) {\r\n  <ngx-datatable\r\n    #table\r\n    default\r\n    [rows]=\"data\"\r\n    [count]=\"recordsTotal()\"\r\n    [list]=\"list()\"\r\n    [selectionType]=\"selectable() ? selectionType() : undefined\"\r\n    (activate)=\"tableActivate.emit($event)\"\r\n    (select)=\"onSelect($event)\"\r\n    [selected]=\"selected()\"\r\n    (scroll)=\"onScroll($event)\"\r\n    [scrollbarV]=\"infiniteScroll()\"\r\n    [style.height]=\"getTableHeight()\"\r\n    [loadingIndicator]=\"infiniteScroll() && isLoading()\"\r\n    [footerHeight]=\"infiniteScroll() ? false : 50\"\r\n  >\r\n    @if (effectiveRowDetailTemplate) {\r\n      <ngx-datatable-row-detail [rowHeight]=\"effectiveRowDetailHeight\">\r\n        <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-row-detail-template>\r\n          <ng-container\r\n            [ngTemplateOutlet]=\"effectiveRowDetailTemplate\"\r\n            [ngTemplateOutletContext]=\"{ row: row, expanded: expanded }\"\r\n          ></ng-container>\r\n        </ng-template>\r\n      </ngx-datatable-row-detail>\r\n\r\n      <ngx-datatable-column\r\n        [width]=\"50\"\r\n        [resizeable]=\"false\"\r\n        [sortable]=\"false\"\r\n        [draggable]=\"false\"\r\n        [canAutoResize]=\"false\"\r\n      >\r\n        <ng-template let-row=\"row\" let-expanded=\"expanded\" ngx-datatable-cell-template>\r\n          <button\r\n            type=\"button\"\r\n            class=\"btn btn-link text-decoration-none text-muted p-0\"\r\n            [attr.aria-label]=\"expanded ? 'Collapse' : 'Expand'\"\r\n            (click)=\"toggleExpandRow(row)\"\r\n          >\r\n            <i class=\"fa\" [class.fa-chevron-down]=\"!expanded\" [class.fa-chevron-up]=\"expanded\"></i>\r\n          </button>\r\n        </ng-template>\r\n      </ngx-datatable-column>\r\n    }\r\n    @if (selectable()) {\r\n      <ngx-datatable-column\r\n        [width]=\"50\"\r\n        [sortable]=\"false\"\r\n        [canAutoResize]=\"false\"\r\n        [draggable]=\"false\"\r\n        [resizeable]=\"false\"\r\n      >\r\n        <ng-template\r\n          ngx-datatable-header-template\r\n          let-value=\"value\"\r\n          let-allRowsSelected=\"allRowsSelected\"\r\n          let-selectFn=\"selectFn\"\r\n        >\r\n          @if (selectionType() !== 'single') {\r\n            <div class=\"form-check\">\r\n              <input\r\n                class=\"form-check-input table-check\"\r\n                type=\"checkbox\"\r\n                [checked]=\"allRowsSelected\"\r\n                (change)=\"selectFn(!allRowsSelected)\"\r\n              />\r\n            </div>\r\n          }\r\n        </ng-template>\r\n\r\n        <ng-template\r\n          ngx-datatable-cell-template\r\n          let-value=\"value\"\r\n          let-row=\"row\"\r\n          let-isSelected=\"isSelected\"\r\n          let-onCheckboxChangeFn=\"onCheckboxChangeFn\"\r\n        >\r\n          @if (selectionType() === 'single') {\r\n            <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n              <input\r\n                class=\"form-check-input\"\r\n                type=\"radio\"\r\n                [checked]=\"isSelected\"\r\n                (change)=\"onCheckboxChangeFn($event)\"\r\n              />\r\n            </div>\r\n          }\r\n          @if (selectionType() !== 'single') {\r\n            <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n              <input\r\n                class=\"form-check-input\"\r\n                type=\"checkbox\"\r\n                [checked]=\"isSelected\"\r\n                (change)=\"onCheckboxChangeFn($event)\"\r\n              />\r\n            </div>\r\n          }\r\n        </ng-template>\r\n      </ngx-datatable-column>\r\n    }\r\n    @if (actionsTemplate() || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n      <ngx-datatable-column\r\n        [name]=\"actionsText() | abpLocalization\"\r\n        [maxWidth]=\"_actionsColumnWidth() ?? undefined\"\r\n        [width]=\"_actionsColumnWidth() ?? 200\"\r\n        [canAutoResize]=\"!_actionsColumnWidth()\"\r\n        [sortable]=\"false\"\r\n      >\r\n        <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n          @if (actionsTemplate(); as template) {\r\n            <ng-container\r\n              [ngTemplateOutlet]=\"template\"\r\n              [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\"\r\n            ></ng-container>\r\n          } @else if (isVisibleActions(row)) {\r\n            <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n          }\r\n        </ng-template>\r\n      </ngx-datatable-column>\r\n    }\r\n    @for (prop of propList; track prop.name; let i = $index) {\r\n      <ngx-datatable-column\r\n        *abpVisible=\"prop.columnVisible(getInjected)\"\r\n        [width]=\"columnWidths()[i] ?? 200\"\r\n        [canAutoResize]=\"!columnWidths()[i]\"\r\n        [name]=\"(prop.isExtra ? '::' + prop.displayName : prop.displayName) | abpLocalization\"\r\n        [prop]=\"prop.name\"\r\n        [sortable]=\"prop.sortable\"\r\n      >\r\n        <ng-template ngx-datatable-header-template let-column=\"column\" let-sortFn=\"sortFn\">\r\n          @if (prop.tooltip) {\r\n            <span\r\n              [ngbTooltip]=\"prop.tooltip.text | abpLocalization\"\r\n              [placement]=\"prop.tooltip.placement || 'auto'\"\r\n              container=\"body\"\r\n              [class.pointer]=\"prop.sortable\"\r\n              (click)=\"prop.sortable && sortFn(column)\"\r\n            >\r\n              {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n            </span>\r\n          } @else {\r\n            <span [class.pointer]=\"prop.sortable\" (click)=\"prop.sortable && sortFn(column)\">\r\n              {{ column.name }}\r\n            </span>\r\n          }\r\n        </ng-template>\r\n        <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n          <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n            <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n              @if (!row['_' + prop.name].component) {\r\n                @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') {\r\n                  <div\r\n                    [innerHTML]=\"\r\n                      !prop.isExtra\r\n                        ? (row['_' + prop.name]?.value | async | abpUtcToLocal: prop.type)\r\n                        : ('::' + (row['_' + prop.name]?.value | async | abpUtcToLocal: prop.type)\r\n                          | abpLocalization)\r\n                    \"\r\n                    (click)=\"\r\n                      prop.action &&\r\n                        prop.action({ getInjected: getInjected, record: row, index: i })\r\n                    \"\r\n                    [class]=\"entityPropTypeClasses[prop.type]\"\r\n                    [class.pointer]=\"prop.action\"\r\n                  ></div>\r\n                } @else {\r\n                  <div\r\n                    [innerHTML]=\"\r\n                      !prop.isExtra\r\n                        ? (row['_' + prop.name]?.value | async)\r\n                        : ('::' + (row['_' + prop.name]?.value | async) | abpLocalization)\r\n                    \"\r\n                    (click)=\"\r\n                      prop.action &&\r\n                        prop.action({ getInjected: getInjected, record: row, index: i })\r\n                    \"\r\n                    [class]=\"entityPropTypeClasses[prop.type]\"\r\n                    [class.pointer]=\"prop.action\"\r\n                  ></div>\r\n                }\r\n              } @else {\r\n                <ng-container\r\n                  *ngComponentOutlet=\"\r\n                    row['_' + prop.name].component;\r\n                    injector: row['_' + prop.name].injector\r\n                  \"\r\n                ></ng-container>\r\n              }\r\n            </ng-container>\r\n          </ng-container>\r\n        </ng-template>\r\n      </ngx-datatable-column>\r\n    }\r\n  </ngx-datatable>\r\n}\r\n","import { InjectionToken, InjectOptions, Injector, Pipe, PipeTransform, Type } from '@angular/core';\r\nimport { HasCreateInjectorPipe, ToolbarComponent } from '../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token';\r\n\r\n@Pipe({\r\n  name: 'createInjector',\r\n})\r\nexport class CreateInjectorPipe<R> implements PipeTransform {\r\n  public transform(\r\n    _: any,\r\n    action: ToolbarComponent<R>,\r\n    context: HasCreateInjectorPipe<R>,\r\n  ): Injector {\r\n    const get = <T>(\r\n      token: Type<T> | InjectionToken<T>,\r\n      notFoundValue?: T,\r\n      options?: InjectOptions,\r\n    ) => {\r\n      const componentData = context.getData();\r\n      const componentDataCallback = (data: any) => {\r\n        data = data ?? context.getData();\r\n        return action.action(data);\r\n      };\r\n      let extensionData;\r\n      switch (token) {\r\n        case EXTENSIONS_ACTION_DATA:\r\n          extensionData = componentData;\r\n          break;\r\n        case EXTENSIONS_ACTION_CALLBACK:\r\n          extensionData = componentDataCallback;\r\n          break;\r\n        default:\r\n          extensionData = context.getInjected.call(context.injector, token, notFoundValue, options);\r\n      }\r\n      return extensionData;\r\n    };\r\n    return { get };\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Injector, TrackByFunction, inject } from '@angular/core';\r\nimport {\r\n  HasCreateInjectorPipe,\r\n  ToolbarAction,\r\n  ToolbarActionDefault,\r\n  ToolbarActionList,\r\n  ToolbarComponent,\r\n} from '../../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { CreateInjectorPipe } from '../../pipes/create-injector.pipe';\r\nimport { LocalizationPipe, PermissionDirective } from '@abp/ng.core';\r\nimport { NgComponentOutlet } from '@angular/common';\r\n\r\n@Component({\r\n  exportAs: 'abpPageToolbar',\r\n  selector: 'abp-page-toolbar',\r\n  imports: [\r\n    CreateInjectorPipe,\r\n    PermissionDirective,\r\n    LocalizationPipe,\r\n    NgComponentOutlet,\r\n  ],\r\n  templateUrl: './page-toolbar.component.html',\r\n  providers: [\r\n    {\r\n      provide: EXTENSIONS_ACTION_TYPE,\r\n      useValue: 'toolbarActions',\r\n    },\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PageToolbarComponent<R = any>\r\n  extends AbstractActionsComponent<ToolbarActionList<R>>\r\n  implements HasCreateInjectorPipe<R> {\r\n  readonly injector: Injector;\r\n\r\n  defaultBtnClass = 'btn btn-sm btn-primary';\r\n\r\n  getData = () => this.data;\r\n\r\n  readonly trackByFn: TrackByFunction<ToolbarComponent<R>> = (_, item) =>\r\n    item.action || item.component;\r\n\r\n  constructor() {\r\n    const injector = inject(Injector);\r\n\r\n    super();\r\n\r\n    this.injector = injector;\r\n  }\r\n\r\n  asToolbarAction(value: ToolbarActionDefault): { value: ToolbarAction } {\r\n    return {\r\n      value: value as ToolbarAction,\r\n    };\r\n  }\r\n}\r\n","<div class=\"row justify-content-end mx-0 gap-2\" id=\"AbpContentToolbar\">\r\n  @for (action of actionList; track action.component || action.action; let last = $last) {\r\n  <div class=\"col-auto px-0 pt-0\" [class.pe-0]=\"last\">\r\n    @if (action.visible(data)) {\r\n    <ng-container *abpPermission=\"action.permission; runChangeDetection: false\">\r\n      @if (action.component; as component) {\r\n      <ng-container *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"></ng-container>\r\n\r\n      }@else {\r\n      @if (asToolbarAction(action).value; as toolbarAction ) {\r\n      <button (click)=\"action.action(data)\" type=\"button\"\r\n        [class]=\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\"\r\n        class=\"d-inline-flex align-items-center gap-1\">\r\n        <i [class]=\"toolbarAction?.icon\" [class.me-1]=\"toolbarAction?.icon\"></i>\r\n        {{ toolbarAction?.text | abpLocalization }}\r\n      </button>\r\n      }\r\n      }\r\n    </ng-container>\r\n    }\r\n  </div>\r\n  }\r\n</div>","import { ControlContainer, FormGroupDirective } from \"@angular/forms\";\r\n\r\nexport const EXTENSIBLE_FORM_VIEW_PROVIDER = { provide: ControlContainer, useExisting: FormGroupDirective }\r\n","import { ActionContributorCallback, ActionList, ActionsFactory, InferredAction } from \"../models/actions\";\r\nimport {\r\n  EntityActionContributorCallbacks,\r\n  EntityActionDefaults,\r\n  EntityActions,\r\n  EntityActionsFactory,\r\n} from '../models/entity-actions';\r\nimport {\r\n  ToolbarActionContributorCallbacks,\r\n  ToolbarActionDefaults,\r\n  ToolbarActions,\r\n  ToolbarActionsFactory,\r\n} from '../models/toolbar-actions';\r\n\r\nexport function mergeWithDefaultActions<F extends ActionsFactory<any>>(\r\n  extension: F,\r\n  defaultActions: InferredActionDefaults<F>,\r\n  ...contributors: InferredActionContributorCallbacks<F>[]\r\n) {\r\n  Object.keys(defaultActions).forEach((name: string) => {\r\n    const actions: InferredActions<F> = extension.get(name);\r\n    actions.clearContributors();\r\n    actions.addContributor((actionList: ActionList<any, InferredAction<any>>) =>\r\n      actionList.addManyTail(defaultActions[name]),\r\n    );\r\n    contributors.forEach(contributor =>\r\n      (contributor[name] || []).forEach((callback: ActionContributorCallback<any>) =>\r\n        actions.addContributor(callback),\r\n      ),\r\n    );\r\n  });\r\n}\r\ntype InferredActionDefaults<F> = F extends EntityActionsFactory<infer RE>\r\n  ? EntityActionDefaults<RE>\r\n  : F extends ToolbarActionsFactory<infer RT>\r\n  ? ToolbarActionDefaults<RT>\r\n  : never;\r\n\r\ntype InferredActionContributorCallbacks<F> = F extends EntityActionsFactory<infer RE>\r\n  ? EntityActionContributorCallbacks<RE>\r\n  : F extends ToolbarActionsFactory<infer RT>\r\n  ? ToolbarActionContributorCallbacks<RT>\r\n  : never;\r\n\r\ntype InferredActions<F> = F extends EntityActionsFactory<infer RE>\r\n  ? EntityActions<RE>\r\n  : F extends ToolbarActionsFactory<infer RT>\r\n  ? ToolbarActions<RT>\r\n  : never;\r\n","import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { DateTimeAdapter, DateAdapter, TimeAdapter } from '@abp/ng.theme.shared';\r\n\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropList } from '../models/form-props';\r\nimport { PropData, ReadonlyPropData } from '../models/props';\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../tokens/extensions.token';\r\n\r\nexport function generateFormFromProps<R = any>(propData: PropData<R>) {\r\n  const data: ReadonlyPropData<R> = propData.data;\r\n\r\n  const extensions = data.getInjected(ExtensionsService<R>);\r\n  const identifier = data.getInjected(EXTENSIONS_IDENTIFIER);\r\n\r\n  const form = new UntypedFormGroup({});\r\n  const extraForm = new UntypedFormGroup({});\r\n  form.addControl(EXTRA_PROPERTIES_KEY, extraForm);\r\n\r\n  const record: any = data.record || {};\r\n  const type = JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n  const props: FormPropList<R> = extensions[`${type}FormProps`].get(identifier).props;\r\n  const extraProperties = record[EXTRA_PROPERTIES_KEY] || {};\r\n\r\n  props.forEach(({ value: prop }) => {\r\n    const name = prop.name;\r\n    const isExtraProperty = prop.isExtra || name in extraProperties;\r\n\r\n    let value = undefined;\r\n\r\n    if (isExtraProperty) {\r\n      value = extraProperties[name];\r\n    } else if (name in record) {\r\n      value = record[name];\r\n    }\r\n\r\n    if (typeof value === 'undefined') value = prop.defaultValue as any;\r\n\r\n    if (value) {\r\n      let adapter: DateAdapter | TimeAdapter | DateTimeAdapter;\r\n      switch (prop.type) {\r\n        case ePropType.Date:\r\n          adapter = new DateAdapter();\r\n          value = adapter.toModel(adapter.fromModel(value));\r\n          break;\r\n        case ePropType.Time:\r\n          adapter = new TimeAdapter();\r\n          value = adapter.toModel(adapter.fromModel(value));\r\n          break;\r\n        case ePropType.DateTime:\r\n          adapter = new DateTimeAdapter();\r\n          value = adapter.toModel(adapter.fromModel(value) as any);\r\n          break;\r\n        default:\r\n          break;\r\n      }\r\n    }\r\n\r\n    const formControl = new UntypedFormControl(value, {\r\n      asyncValidators: prop.asyncValidators(data),\r\n      validators: prop.validators(data),\r\n    });\r\n\r\n    (isExtraProperty ? extraForm : form).addControl(name, formControl);\r\n  });\r\n\r\n  return form;\r\n}\r\n","import { ConfigStateService, PermissionService } from '@abp/ng.core';\r\nimport { Injector } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport {\r\n  EntityPropContributorCallbacks,\r\n  EntityPropDefaults,\r\n  EntityProps,\r\n  EntityPropsFactory,\r\n} from '../models/entity-props';\r\nimport {\r\n  CreateFormPropContributorCallbacks,\r\n  CreateFormPropDefaults,\r\n  CreateFormPropsFactory,\r\n  EditFormPropContributorCallbacks,\r\n  EditFormPropDefaults,\r\n  EditFormPropsFactory,\r\n  FormProps,\r\n} from '../models/form-props';\r\nimport {\r\n  InferredProp,\r\n  PropCallback,\r\n  PropContributorCallback,\r\n  PropList,\r\n  PropsFactory,\r\n} from '../models/props';\r\nimport { Policy } from '../models/internal/object-extensions';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function createExtraPropertyValueResolver<T>(\r\n  name: string,\r\n): PropCallback<T, Observable<any>> {\r\n  return (data?) => of((data.record as { [key: string]: any })[EXTRA_PROPERTIES_KEY][name]);\r\n}\r\n\r\nexport function mergeWithDefaultProps<F extends PropsFactory<any>>(\r\n  extension: F,\r\n  defaultProps: InferredPropDefaults<F>,\r\n  ...contributors: InferredPropContributorCallbacks<F>[]\r\n) {\r\n  Object.keys(defaultProps).forEach((name: string) => {\r\n    const props: InferredProps<F> = extension.get(name);\r\n    props.clearContributors();\r\n    props.addContributor((propList: PropList<any, InferredProp<any>>) =>\r\n      propList.addManyTail(defaultProps[name]),\r\n    );\r\n    contributors.forEach(contributor =>\r\n      (contributor[name] || []).forEach((callback: PropContributorCallback<any>) =>\r\n        props.addContributor(callback),\r\n      ),\r\n    );\r\n  });\r\n}\r\n\r\nexport function checkPolicies(\r\n  injector: Injector,\r\n  properties: ObjectExtensions.EntityExtensionProperties,\r\n) {\r\n  const configState = injector.get(ConfigStateService);\r\n  const permission = injector.get(PermissionService);\r\n  const props = Object.entries(properties);\r\n\r\n  const checkPolicy = (policy: Policy): boolean => {\r\n    const { permissions, globalFeatures, features } = policy || {};\r\n\r\n    const checks = [\r\n      {\r\n        items: permissions?.permissionNames,\r\n        requiresAll: permissions?.requiresAll,\r\n        check: (item: string) => permission.getGrantedPolicy(item),\r\n      },\r\n      {\r\n        items: globalFeatures?.features,\r\n        requiresAll: globalFeatures?.requiresAll,\r\n        check: (item: string) => configState.getGlobalFeatureIsEnabled(item),\r\n      },\r\n      {\r\n        items: features?.features,\r\n        requiresAll: features?.requiresAll,\r\n        check: (item: string) => configState.getFeatureIsEnabled(item),\r\n      },\r\n    ];\r\n\r\n    return checks.every(({ items, requiresAll, check }) => {\r\n      if (!items?.length) {\r\n        return true;\r\n      }\r\n\r\n      return requiresAll ? items.every(check) : items.some(check);\r\n    });\r\n  };\r\n\r\n  props.forEach(([name, property]) => {\r\n    if (property.policy && !checkPolicy(property.policy)) {\r\n      delete properties[name];\r\n    }\r\n  });\r\n}\r\n\r\ntype InferredPropDefaults<F> =\r\n  F extends EntityPropsFactory<infer RE>\r\n    ? EntityPropDefaults<RE>\r\n    : F extends CreateFormPropsFactory<infer RCF>\r\n      ? CreateFormPropDefaults<RCF>\r\n      : F extends EditFormPropsFactory<infer REF>\r\n        ? EditFormPropDefaults<REF>\r\n        : never;\r\n\r\ntype InferredPropContributorCallbacks<F> =\r\n  F extends EntityPropsFactory<infer RE>\r\n    ? EntityPropContributorCallbacks<RE>\r\n    : F extends CreateFormPropsFactory<infer RCF>\r\n      ? CreateFormPropContributorCallbacks<RCF>\r\n      : F extends EditFormPropsFactory<infer REF>\r\n        ? EditFormPropContributorCallbacks<REF>\r\n        : never;\r\n\r\ntype InferredProps<F> =\r\n  F extends EntityPropsFactory<infer RE>\r\n    ? EntityProps<RE>\r\n    : F extends CreateFormPropsFactory<infer RCF>\r\n      ? FormProps<RCF>\r\n      : F extends EditFormPropsFactory<infer REF>\r\n        ? FormProps<REF>\r\n        : never;\r\n","import { ABP, ExtensionEnumFieldDto, LocalizationService } from '@abp/ng.core';\r\nimport { merge, Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nexport function createEnum(members: ExtensionEnumFieldDto[]) {\r\n  const enumObject: any = {};\r\n\r\n  members.forEach(({ name = '', value }) => {\r\n    enumObject[(enumObject[name] = value as any)] = name;\r\n  });\r\n\r\n  return enumObject;\r\n}\r\n\r\nexport function createEnumValueResolver<T = any>(\r\n  enumType: string,\r\n  lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n  propName: string,\r\n): PropCallback<T, Observable<string>> {\r\n  return data => {\r\n    const value = (data.record as any)[EXTRA_PROPERTIES_KEY][propName];\r\n    const key = lookupEnum.transformed[value];\r\n    const l10n = data.getInjected(LocalizationService);\r\n    const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n    return createLocalizationStream(l10n, localizeEnum(key));\r\n  };\r\n}\r\n\r\nexport function createEnumOptions<T = any>(\r\n  enumType: string,\r\n  lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): PropCallback<T, Observable<ABP.Option<any>[]>> {\r\n  return data => {\r\n    const l10n = data.getInjected(LocalizationService);\r\n    const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n    return createLocalizationStream(\r\n      l10n,\r\n      lookupEnum.fields.map(({ name = '', value }) => ({\r\n        key: localizeEnum(name),\r\n        value,\r\n      })),\r\n    );\r\n  };\r\n}\r\n\r\nfunction createLocalizationStream(l10n: LocalizationService, mapTarget: any) {\r\n  return merge(of(null), l10n.languageChange$).pipe(map(() => mapTarget));\r\n}\r\n\r\nfunction createEnumLocalizer(\r\n  l10n: LocalizationService,\r\n  enumType: string,\r\n  lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): (key: string) => string {\r\n  const resource = lookupEnum.localizationResource;\r\n  const shortType = getShortEnumType(enumType);\r\n\r\n  return key =>\r\n    l10n.localizeWithFallbackSync(\r\n      [resource || ''],\r\n      ['Enum:' + shortType + '.' + key, shortType + '.' + key, key],\r\n      key,\r\n    );\r\n}\r\n\r\nfunction getShortEnumType(enumType: string) {\r\n  return enumType.split('.').pop();\r\n}\r\n","import {\r\n  ApplicationLocalizationConfigurationDto,\r\n  createLocalizationPipeKeyGenerator,\r\n} from '@abp/ng.core';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function createDisplayNameLocalizationPipeKeyGenerator(\r\n  localization: ApplicationLocalizationConfigurationDto,\r\n) {\r\n  const generateLocalizationPipeKey = createLocalizationPipeKeyGenerator(localization);\r\n\r\n  return (\r\n    displayName: ObjectExtensions.LocalizableStringDto,\r\n    fallback: ObjectExtensions.LocalizableStringDto,\r\n  ) => {\r\n    if (displayName && displayName.name)\r\n      return generateLocalizationPipeKey(\r\n        [displayName.resource || ''],\r\n        [displayName.name],\r\n        displayName.name,\r\n      );\r\n\r\n    const key = generateLocalizationPipeKey(\r\n      [fallback.resource || ''],\r\n      ['DisplayName:' + fallback.name],\r\n      undefined,\r\n    );\r\n\r\n    if (key) return key;\r\n\r\n    return generateLocalizationPipeKey(\r\n      [fallback.resource || ''],\r\n      [fallback.name || ''],\r\n      fallback.name,\r\n    );\r\n  };\r\n}\r\n","import { AbpValidators } from '@abp/ng.core';\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function getValidatorsFromProperty(\r\n  property: ObjectExtensions.ExtensionPropertyDto,\r\n): ValidatorFn[] {\r\n  const validators: ValidatorFn[] = [];\r\n\r\n  property.attributes.forEach(attr => {\r\n    if (attr.typeSimple && attr.typeSimple in AbpValidators) {\r\n      validators.push((AbpValidators as any)[attr.typeSimple](attr.config));\r\n    }\r\n  });\r\n\r\n  return validators;\r\n}\r\n","import {\r\n  ABP,\r\n  ApplicationLocalizationConfigurationDto,\r\n  ConfigStateService,\r\n  ExtensionEnumDto,\r\n  ExtensionPropertyUiLookupDto,\r\n  ObjectExtensionsDto,\r\n} from '@abp/ng.core';\r\nimport { Injector } from '@angular/core';\r\nimport { Observable, pipe, zip } from 'rxjs';\r\nimport { filter, map, switchMap, take } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { EntityProp, EntityPropList } from '../models/entity-props';\r\nimport { FormProp, FormPropList } from '../models/form-props';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\nimport { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';\r\nimport { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';\r\nimport { checkPolicies, createExtraPropertyValueResolver } from './props.util';\r\nimport {\r\n  createTypeaheadDisplayNameGenerator,\r\n  createTypeaheadOptions,\r\n  getTypeaheadType,\r\n  hasTypeaheadTextSuffix,\r\n} from './typeahead.util';\r\nimport { getValidatorsFromProperty } from './validation.util';\r\n\r\nfunction selectObjectExtensions(configState: ConfigStateService): Observable<ObjectExtensionsDto> {\r\n  return configState.getOne$('objectExtensions');\r\n}\r\n\r\nfunction selectLocalization(\r\n  configState: ConfigStateService,\r\n): Observable<ApplicationLocalizationConfigurationDto> {\r\n  return configState.getOne$('localization');\r\n}\r\n\r\nfunction selectEnums(\r\n  configState: ConfigStateService,\r\n): Observable<Record<string, ExtensionEnumDto>> {\r\n  return selectObjectExtensions(configState).pipe(\r\n    map((extensions: ObjectExtensionsDto) =>\r\n      Object.keys(extensions.enums).reduce(\r\n        (acc, key) => {\r\n          const { fields, localizationResource } = extensions.enums[key];\r\n          acc[key] = {\r\n            fields,\r\n            localizationResource,\r\n            transformed: createEnum(fields),\r\n          };\r\n          return acc;\r\n        },\r\n        {} as Record<string, ObjectExtensions.ExtensionEnumDto>,\r\n      ),\r\n    ),\r\n  );\r\n}\r\n\r\nexport function getObjectExtensionEntitiesFromStore(injector: Injector, moduleKey: string) {\r\n  const configState = injector.get(ConfigStateService);\r\n  return selectObjectExtensions(configState).pipe(\r\n    map(extensions => {\r\n      if (!extensions) return null;\r\n\r\n      return (extensions.modules[moduleKey] || ({} as ObjectExtensions.ModuleExtensionDto))\r\n        .entities;\r\n    }),\r\n    map(entities => (isUndefined(entities) ? ({} as any) : entities)),\r\n    filter<ObjectExtensions.EntityExtensions>(Boolean),\r\n    take(1),\r\n  );\r\n}\r\n\r\nexport function mapEntitiesToContributors<T = any>(injector: Injector, resource: string) {\r\n  const configState = injector.get(ConfigStateService);\r\n  return pipe(\r\n    switchMap((entities: any) =>\r\n      zip(selectLocalization(configState), selectEnums(configState)).pipe(\r\n        map(([localization, enums]) => {\r\n          const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization);\r\n\r\n          return Object.keys(entities).reduce(\r\n            (acc, key: keyof ObjectExtensions.EntityExtensions) => {\r\n              acc.prop[key] = [];\r\n              acc.createForm[key] = [];\r\n              acc.editForm[key] = [];\r\n\r\n              const entity: ObjectExtensions.EntityExtensionDto = entities[key];\r\n              if (!entity) {\r\n                return acc;\r\n              }\r\n\r\n              const properties = entity.properties;\r\n              if (!properties) {\r\n                return acc;\r\n              }\r\n\r\n              checkPolicies(injector, properties);\r\n\r\n              const mapPropertiesToContributors = createPropertiesToContributorsMapper<T>(\r\n                generateDisplayName,\r\n                resource,\r\n                enums,\r\n              );\r\n\r\n              return mapPropertiesToContributors(properties, acc, key);\r\n            },\r\n            {\r\n              prop: {},\r\n              createForm: {},\r\n              editForm: {},\r\n            } as ObjectExtensions.PropContributors,\r\n          );\r\n        }),\r\n      ),\r\n    ),\r\n    take(1),\r\n  );\r\n}\r\n\r\nfunction createPropertiesToContributorsMapper<T = any>(\r\n  generateDisplayName: ObjectExtensions.DisplayNameGeneratorFn,\r\n  resource: string,\r\n  enums: Record<string, ObjectExtensions.ExtensionEnumDto>,\r\n) {\r\n  return (\r\n    properties: ObjectExtensions.EntityExtensionProperties,\r\n    contributors: ObjectExtensions.PropContributors<T>,\r\n    key: string,\r\n  ) => {\r\n    const isExtra = true;\r\n    const generateTypeaheadDisplayName = createTypeaheadDisplayNameGenerator(\r\n      generateDisplayName,\r\n      properties,\r\n    );\r\n\r\n    Object.keys(properties).forEach((name: string) => {\r\n      const property = properties[name];\r\n      const propName = name;\r\n      const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto);\r\n      const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property);\r\n      const generateDN = hasTypeaheadTextSuffix(name)\r\n        ? generateTypeaheadDisplayName\r\n        : generateDisplayName;\r\n      const displayName = generateDN(property.displayName, { name, resource });\r\n\r\n      if (property.ui.onTable.isVisible) {\r\n        const sortable = Boolean(property.ui.onTable.isSortable);\r\n        const columnWidth = type === ePropType.Boolean ? 150 : 250;\r\n        const valueResolver: PropCallback<T, Observable<any>> = type === ePropType.Enum &&\r\n        property.type\r\n          ? createEnumValueResolver(property.type, enums[property.type], propName)\r\n          : createExtraPropertyValueResolver<T>(propName);\r\n\r\n        const entityProp = new EntityProp<T>({\r\n          type,\r\n          name: propName,\r\n          displayName,\r\n          sortable,\r\n          columnWidth,\r\n          valueResolver,\r\n          isExtra,\r\n        });\r\n\r\n        const contributor = (propList: EntityPropList<T>) => propList.addTail(entityProp);\r\n        contributors.prop[key].push(contributor);\r\n      }\r\n\r\n      const isOnCreateForm = property.ui.onCreateForm.isVisible;\r\n      const isOnEditForm = property.ui.onEditForm.isVisible;\r\n\r\n      if (isOnCreateForm || isOnEditForm) {\r\n        const defaultValue = property.defaultValue;\r\n        const formText = property.formText;\r\n        const validators = () => getValidatorsFromProperty(property);\r\n        let options: PropCallback<any, Observable<ABP.Option<any>[]>> | undefined;\r\n        if (type === ePropType.Enum)\r\n          options = createEnumOptions(propName, enums[property.type || '']);\r\n        else if (type === ePropType.Typeahead) options = createTypeaheadOptions(lookup);\r\n\r\n        const formProp = new FormProp({\r\n          type,\r\n          name: propName,\r\n          displayName,\r\n          options,\r\n          defaultValue,\r\n          validators,\r\n          isExtra,\r\n          formText,\r\n        });\r\n\r\n        const formContributor = (propList: FormPropList<T>) => propList.addTail(formProp);\r\n\r\n        if (isOnCreateForm) contributors.createForm[key].push(formContributor);\r\n        if (isOnEditForm) contributors.editForm[key].push(formContributor);\r\n      }\r\n    });\r\n\r\n    return contributors;\r\n  };\r\n}\r\n\r\nfunction getTypeFromProperty(property: ObjectExtensions.ExtensionPropertyDto): ePropType {\r\n  return property?.typeSimple?.replace(/\\?$/, '') as string as ePropType;\r\n}\r\n\r\nfunction isUndefined(obj: any): obj is undefined {\r\n  return typeof obj === 'undefined';\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport {\r\n  NgbDatepickerModule,\r\n  NgbDropdownModule,\r\n  NgbTimepickerModule,\r\n  NgbTooltipModule,\r\n  NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n  ExtensibleFormComponent,\r\n  ExtensibleFormPropComponent,\r\n  ExtensibleTableComponent,\r\n  ExtensibleTableRowDetailComponent,\r\n  GridActionsComponent,\r\n  PageToolbarComponent,\r\n  ExtensibleDateTimePickerComponent,\r\n  ExtensibleFormMultiselectComponent,\r\n} from './components';\r\nimport { PropDataDirective } from './directives/prop-data.directive';\r\nimport { CreateInjectorPipe } from './pipes/create-injector.pipe';\r\nimport { DisabledDirective } from '@abp/ng.theme.shared';\r\n\r\nconst importWithExport = [\r\n  DisabledDirective,\r\n  ExtensibleDateTimePickerComponent,\r\n  ExtensibleFormPropComponent,\r\n  GridActionsComponent,\r\n  PropDataDirective,\r\n  PageToolbarComponent,\r\n  CreateInjectorPipe,\r\n  ExtensibleFormComponent,\r\n  ExtensibleTableComponent,\r\n  ExtensibleTableRowDetailComponent,\r\n  ExtensibleFormMultiselectComponent,\r\n];\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [\r\n    CoreModule,\r\n    ThemeSharedModule,\r\n    NgxValidateCoreModule,\r\n    NgbDatepickerModule,\r\n    NgbDropdownModule,\r\n    NgbTimepickerModule,\r\n    NgbTypeaheadModule,\r\n    NgbTooltipModule,\r\n    ...importWithExport,\r\n  ],\r\n  exports: [...importWithExport],\r\n})\r\nexport class ExtensibleModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","debounceTime","distinctUntilChanged","map","filter"],"mappings":"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"}