@abp/ng.components 9.3.0-rc.1 → 9.3.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.components-chart.js.mjs","sources":["../../../../packages/components/chart.js/src/chart.component.ts","../../../../packages/components/chart.js/src/chart.module.ts","../../../../packages/components/chart.js/src/widget-utils.ts","../../../../packages/components/chart.js/src/abp-ng.components-chart.js.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nlet Chart: any;\r\n\r\n@Component({\r\n selector: 'abp-chart',\r\n template: `\r\n <div\r\n style=\"position:relative\"\r\n [style.width]=\"responsive && !width ? null : width\"\r\n [style.height]=\"responsive && !height ? null : height\"\r\n >\r\n <canvas\r\n #canvas\r\n [attr.width]=\"responsive && !width ? null : width\"\r\n [attr.height]=\"responsive && !height ? null : height\"\r\n (click)=\"onCanvasClick($event)\"\r\n ></canvas>\r\n </div>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'abpChart',\r\n})\r\nexport class ChartComponent implements AfterViewInit, OnDestroy, OnChanges {\r\n @Input() type!: string;\r\n\r\n @Input() data: any = {};\r\n\r\n @Input() options: any = {};\r\n\r\n @Input() plugins: any[] = [];\r\n\r\n @Input() width?: string;\r\n\r\n @Input() height?: string;\r\n\r\n @Input() responsive = true;\r\n\r\n @Output() dataSelect = new EventEmitter();\r\n\r\n @Output() initialized = new EventEmitter<boolean>();\r\n\r\n @ViewChild('canvas') canvas!: ElementRef<HTMLCanvasElement>;\r\n\r\n chart: any;\r\n\r\n constructor(\r\n public el: ElementRef,\r\n private cdr: ChangeDetectorRef,\r\n ) {}\r\n\r\n ngAfterViewInit() {\r\n import('chart.js/auto').then(module => {\r\n Chart = module.default;\r\n this.initChart();\r\n this.initialized.emit(true);\r\n });\r\n }\r\n\r\n onCanvasClick(event: MouseEvent) {\r\n if (this.chart) {\r\n const element = this.chart.getElementsAtEventForMode(\r\n event,\r\n 'nearest',\r\n { intersect: true },\r\n false,\r\n );\r\n const dataset = this.chart.getElementsAtEventForMode(\r\n event,\r\n 'dataset',\r\n { intersect: true },\r\n false,\r\n );\r\n\r\n if (element && element[0] && dataset) {\r\n this.dataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset });\r\n }\r\n }\r\n }\r\n\r\n private initChart = () => {\r\n const opts = this.options || {};\r\n opts.responsive = this.responsive;\r\n\r\n // allows chart to resize in responsive mode\r\n if (opts.responsive && (this.height || this.width)) {\r\n opts.maintainAspectRatio = false;\r\n }\r\n\r\n this.chart = new Chart(this.canvas.nativeElement, {\r\n type: this.type as any,\r\n data: this.data,\r\n options: this.options,\r\n plugins: this.plugins,\r\n });\r\n };\r\n\r\n getCanvas = () => {\r\n return this.canvas.nativeElement;\r\n };\r\n\r\n getBase64Image = () => {\r\n return this.chart.toBase64Image();\r\n };\r\n\r\n generateLegend = () => {\r\n if (this.chart) {\r\n return this.chart.generateLegend();\r\n }\r\n };\r\n\r\n refresh = () => {\r\n if (this.chart) {\r\n this.chart.update();\r\n this.cdr.detectChanges();\r\n }\r\n };\r\n\r\n reinit = () => {\r\n if (!this.chart) return;\r\n this.chart.destroy();\r\n this.initChart();\r\n };\r\n\r\n ngOnDestroy() {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = null;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!this.chart) return;\r\n\r\n if (changes.data?.currentValue || changes.options?.currentValue) {\r\n this.chart.destroy();\r\n this.initChart();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ChartComponent } from './chart.component';\r\n\r\n@NgModule({\r\n imports: [ChartComponent],\r\n exports: [ChartComponent],\r\n declarations: [],\r\n providers: [],\r\n})\r\nexport class ChartModule {}\r\n","export function getRandomBackgroundColor(count: number) {\r\n const colors = [];\r\n\r\n for (let i = 0; i < count; i++) {\r\n const r = ((i + 5) * (i + 5) * 474) % 255;\r\n const g = ((i + 5) * (i + 5) * 1600) % 255;\r\n const b = ((i + 5) * (i + 5) * 84065) % 255;\r\n colors.push('rgba(' + r + ', ' + g + ', ' + b + ', 0.7)');\r\n }\r\n\r\n return colors;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.components-chart.js.mjs","sources":["../../../../packages/components/chart.js/src/chart.component.ts","../../../../packages/components/chart.js/src/chart.module.ts","../../../../packages/components/chart.js/src/widget-utils.ts","../../../../packages/components/chart.js/src/abp-ng.components-chart.js.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nlet Chart: any;\r\n\r\n@Component({\r\n selector: 'abp-chart',\r\n template: `\r\n <div\r\n style=\"position:relative\"\r\n [style.width]=\"responsive && !width ? null : width\"\r\n [style.height]=\"responsive && !height ? null : height\"\r\n >\r\n <canvas\r\n #canvas\r\n [attr.width]=\"responsive && !width ? null : width\"\r\n [attr.height]=\"responsive && !height ? null : height\"\r\n (click)=\"onCanvasClick($event)\"\r\n ></canvas>\r\n </div>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'abpChart',\r\n})\r\nexport class ChartComponent implements AfterViewInit, OnDestroy, OnChanges {\r\n @Input() type!: string;\r\n\r\n @Input() data: any = {};\r\n\r\n @Input() options: any = {};\r\n\r\n @Input() plugins: any[] = [];\r\n\r\n @Input() width?: string;\r\n\r\n @Input() height?: string;\r\n\r\n @Input() responsive = true;\r\n\r\n @Output() dataSelect = new EventEmitter();\r\n\r\n @Output() initialized = new EventEmitter<boolean>();\r\n\r\n @ViewChild('canvas') canvas!: ElementRef<HTMLCanvasElement>;\r\n\r\n chart: any;\r\n\r\n constructor(\r\n public el: ElementRef,\r\n private cdr: ChangeDetectorRef,\r\n ) {}\r\n\r\n ngAfterViewInit() {\r\n import('chart.js/auto').then(module => {\r\n Chart = module.default;\r\n this.initChart();\r\n this.initialized.emit(true);\r\n });\r\n }\r\n\r\n onCanvasClick(event: MouseEvent) {\r\n if (this.chart) {\r\n const element = this.chart.getElementsAtEventForMode(\r\n event,\r\n 'nearest',\r\n { intersect: true },\r\n false,\r\n );\r\n const dataset = this.chart.getElementsAtEventForMode(\r\n event,\r\n 'dataset',\r\n { intersect: true },\r\n false,\r\n );\r\n\r\n if (element && element[0] && dataset) {\r\n this.dataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset });\r\n }\r\n }\r\n }\r\n\r\n private initChart = () => {\r\n const opts = this.options || {};\r\n opts.responsive = this.responsive;\r\n\r\n // allows chart to resize in responsive mode\r\n if (opts.responsive && (this.height || this.width)) {\r\n opts.maintainAspectRatio = false;\r\n }\r\n\r\n this.chart = new Chart(this.canvas.nativeElement, {\r\n type: this.type as any,\r\n data: this.data,\r\n options: this.options,\r\n plugins: this.plugins,\r\n });\r\n };\r\n\r\n getCanvas = () => {\r\n return this.canvas.nativeElement;\r\n };\r\n\r\n getBase64Image = () => {\r\n return this.chart.toBase64Image();\r\n };\r\n\r\n generateLegend = () => {\r\n if (this.chart) {\r\n return this.chart.generateLegend();\r\n }\r\n };\r\n\r\n refresh = () => {\r\n if (this.chart) {\r\n this.chart.update();\r\n this.cdr.detectChanges();\r\n }\r\n };\r\n\r\n reinit = () => {\r\n if (!this.chart) return;\r\n this.chart.destroy();\r\n this.initChart();\r\n };\r\n\r\n ngOnDestroy() {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = null;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!this.chart) return;\r\n\r\n if (changes.data?.currentValue || changes.options?.currentValue) {\r\n this.chart.destroy();\r\n this.initChart();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ChartComponent } from './chart.component';\r\n\r\n@NgModule({\r\n imports: [ChartComponent],\r\n exports: [ChartComponent],\r\n declarations: [],\r\n providers: [],\r\n})\r\nexport class ChartModule {}\r\n","export function getRandomBackgroundColor(count: number) {\r\n const colors = [];\r\n\r\n for (let i = 0; i < count; i++) {\r\n const r = ((i + 5) * (i + 5) * 474) % 255;\r\n const g = ((i + 5) * (i + 5) * 1600) % 255;\r\n const b = ((i + 5) * (i + 5) * 84065) % 255;\r\n colors.push('rgba(' + r + ', ' + g + ', ' + b + ', 0.7)');\r\n }\r\n\r\n return colors;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.components-extensible.mjs","sources":["../../../../packages/components/extensible/src/lib/models/props.ts","../../../../packages/components/extensible/src/lib/models/form-props.ts","../../../../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/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.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":["import { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\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 | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyPropData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyPropData<R = any> = Readonly<Omit<PropData<R>, 'data'>>;\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: Omit<PropData<T>, 'data'>, auxData?: any) => R;\r\nexport type PropPredicate<T> = (data?: Omit<PropData<T>, 'data'>, auxData?: any) => boolean;\r\nexport type PropDisplayTextResolver<T> = (data?: Omit<PropData<T>, 'data'>) => 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 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","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 { CommonModule } from '@angular/common';\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} 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 CommonModule,\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 />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian\"\r\n ></ngb-timepicker>\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 @Input() prop!: FormProp;\r\n @Input() meridian = false;\r\n\r\n @ViewChild(NgbInputDatepicker) date!: NgbInputDatepicker;\r\n @ViewChild(NgbTimepicker) time!: 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, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\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, CommonModule, ReactiveFormsModule, 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 LocalizationModule,\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 Input,\r\n OnChanges,\r\n Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n ViewChild,\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 { PropData } 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 { CommonModule } 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 LocalizationModule,\r\n CommonModule,\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 OnChanges, 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 @Input() data!: PropData;\r\n @Input() prop!: FormProp;\r\n @Input() first?: boolean;\r\n @Input() isFirstGroup?: boolean;\r\n @ViewChild('field') private fieldRef!: ElementRef<HTMLElement>;\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: PropData) => false;\r\n\r\n get disabled() {\r\n return this.disabledFn(this.data);\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 this.fieldRef.nativeElement.focus();\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 ngOnChanges({ prop, data }: SimpleChanges) {\r\n const currentProp = prop?.currentValue as FormProp;\r\n const { options, readonly, disabled, validators, className, template } = currentProp || {};\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?.currentValue as PropData)?.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(this.data);\r\n if (readonly) this.readonly = readonly(this.data);\r\n\r\n if (disabled) {\r\n this.disabledFn = disabled;\r\n }\r\n if (validators) {\r\n this.validators = validators(this.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}\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 [ngClass]=\"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 [ngClass]=\"{\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\" [ngClass]=\"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 { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\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 | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyActionData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyActionData<R = any> = Readonly<Omit<ActionData<R>, 'data'>>;\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: Omit<ActionData<T>, 'data'>) => R;\r\nexport type ActionPredicate<T> = (data?: Omit<ActionData<T>, 'data'>) => 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 { InjectFlags, 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 | InjectFlags,\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 Input,\r\n OnChanges,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PropData, PropList } from '../models/props';\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<InferredData<L>>\r\n implements OnChanges, OnDestroy\r\n{\r\n @Input('abpPropDataFromList') propList?: L;\r\n\r\n @Input('abpPropDataWithRecord') record!: InferredData<L>['record'];\r\n\r\n @Input('abpPropDataAtIndex') index?: number;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n constructor(\r\n private tempRef: TemplateRef<any>,\r\n private vcRef: ViewContainerRef,\r\n injector: Injector,\r\n ) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n\r\n ngOnChanges() {\r\n this.vcRef.clear();\r\n\r\n this.vcRef.createEmbeddedView(this.tempRef, {\r\n $implicit: this.data,\r\n index: 0,\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.vcRef.clear();\r\n }\r\n}\r\n\r\ntype InferredData<L> = PropData<InferredRecord<L>>;\r\ntype InferredRecord<L> = L extends PropList<infer R> ? R : never;\r\n","import { TrackByService } from '@abp/ng.core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n Optional,\r\n QueryList,\r\n SkipSelf,\r\n ViewChildren,\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 { CommonModule } 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: [CommonModule, 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 @ViewChildren(ExtensibleFormPropComponent)\r\n formProps!: QueryList<ExtensibleFormPropComponent>;\r\n\r\n @Input()\r\n set selectedRecord(record: R) {\r\n const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\r\n this.groupedPropList = this.createGroupedList(propList);\r\n this.record = record;\r\n }\r\n\r\n extraPropertiesKey = EXTRA_PROPERTIES_KEY;\r\n groupedPropList!: GroupedFormPropList;\r\n groupedPropListOfArray: FormProp<any>[][];\r\n record!: R;\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) {\r\n const { items } = this.groupedPropList;\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\r\n [ngClass]=\"groupedProp.group?.className\"\r\n [attr.data-name]=\"groupedProp.group?.name || groupedProp.group?.className\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\"\r\n >\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\"\r\n >\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\r\n [class]=\"prop.className\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n [isFirstGroup]=\"isFirstGroup\"\r\n />\r\n }\r\n }\r\n }\r\n }\r\n</ng-template>\r\n","import { Directive, Injector, 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 @Input() record!: InferredData<L>['record'];\r\n\r\n protected constructor(injector: Injector) {\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","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Injector,\r\n Input,\r\n TrackByFunction,\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 { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\nimport { NgClass, 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 NgClass,\r\n LocalizationModule,\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 @Input() icon = 'fa fa-cog';\r\n\r\n @Input() readonly index?: number;\r\n\r\n @Input() text = '';\r\n\r\n readonly trackByFn: TrackByFunction<EntityAction<R>> = (_, item) => item.text;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}\r\n","@if (actionList.length > 1) {\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"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\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\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\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n ></ng-container>\r\n}\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n @if (action.visible(data)) {\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [ngClass]=\"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\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n [ngbTooltip]=\"action.tooltip.text | abpLocalization\"\r\n [placement]=\"action.tooltip.placement || 'auto'\"\r\n triggers=\"hover\"\r\n container=\"body\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n } @else {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n }\r\n</ng-template>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Injector,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { AsyncPipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { Observable, filter, map } from 'rxjs';\r\n\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxDatatableModule, SelectionType } from '@swimlane/ngx-datatable';\r\n\r\nimport {\r\n ABP,\r\n ConfigStateService,\r\n ListService,\r\n LocalizationModule,\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 { PropData } 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\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 LocalizationModule,\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})\r\nexport class ExtensibleTableComponent<R = any> implements OnChanges, AfterViewInit {\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\r\n protected _actionsText!: string;\r\n @Input()\r\n set actionsText(value: string) {\r\n this._actionsText = value;\r\n }\r\n\r\n get actionsText(): string {\r\n return this._actionsText ?? (this.actionList.length > 1 ? 'AbpUi::Actions' : '');\r\n }\r\n\r\n @Input() data!: R[];\r\n @Input() list!: ListService;\r\n @Input() recordsTotal!: number;\r\n\r\n @Input() set actionsColumnWidth(width: number) {\r\n this.setColumnWidths(width ? Number(width) : undefined);\r\n }\r\n\r\n @Input() actionsTemplate?: TemplateRef<any>;\r\n\r\n @Output() tableActivate = new EventEmitter();\r\n\r\n @Input() selectable = false;\r\n\r\n @Input() set selectionType(value: SelectionType | string) {\r\n this._selectionType = typeof value === 'string' ? SelectionType[value] : value;\r\n }\r\n _selectionType: SelectionType = SelectionType.multiClick;\r\n \r\n \r\n @Input() selected: any[] = [];\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n\r\n hasAtLeastOnePermittedAction: boolean;\r\n\r\n readonly columnWidths!: number[];\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 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 this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);\r\n }\r\n\r\n private setColumnWidths(actionsColumn: number | undefined) {\r\n const widths = [actionsColumn];\r\n this.propList.forEach(({ value: prop }) => {\r\n widths.push(prop.columnWidth);\r\n });\r\n (this.columnWidths as any) = widths;\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: PropData): 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 ngOnChanges({ data }: SimpleChanges) {\r\n if (!data?.currentValue) return;\r\n\r\n if (data.currentValue.length < 1) {\r\n this.list.totalCount = this.recordsTotal;\r\n }\r\n\r\n this.data = data.currentValue.map((record: any, index: number) => {\r\n this.propList.forEach(prop => {\r\n const propData = { getInjected: this.getInjected, record, index } as any;\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\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 }) {\r\n this.selected.splice(0, this.selected.length);\r\n this.selected.push(...selected);\r\n this.selectionChange.emit(selected);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.list?.requestStatus$?.pipe(filter(status => status === 'loading')).subscribe(() => {\r\n this.data = [];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n}\r\n","<ngx-datatable\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>\r\n@if(selectable) {\r\n <ngx-datatable-column [width]=\"50\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\" [resizeable]=\"false\">\r\n \r\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\r\n let-selectFn=\"selectFn\">\r\n @if (_selectionType !== 'single') {\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input table-check\" type=\"checkbox\" [checked]=\"allRowsSelected\"\r\n (change)=\"selectFn(!allRowsSelected)\" />\r\n </div>\r\n }\r\n </ng-template>\r\n \r\n <ng-template ngx-datatable-cell-template let-value=\"value\" let-row=\"row\" let-isSelected=\"isSelected\"\r\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\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 class=\"form-check-input\" type=\"radio\" [checked]=\"isSelected\" (change)=\"onCheckboxChangeFn($event)\" />\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 class=\"form-check-input\" type=\"checkbox\" [checked]=\"isSelected\" (change)=\"onCheckboxChangeFn($event)\" />\r\n </div>\r\n }\r\n </ng-template>\r\n \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]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n @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 </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 + 1] || 200\"\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\">\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 >\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n } @else {\r\n {{ column.name }}\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) | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"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 && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"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","import {\r\n InjectFlags,\r\n InjectionToken,\r\n InjectOptions,\r\n Injector,\r\n Pipe,\r\n PipeTransform,\r\n Type,\r\n} 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 | InjectFlags,\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 } 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 { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { NgClass, 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 LocalizationModule,\r\n NgClass,\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{\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(public readonly injector: Injector) {\r\n super(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\r\n *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"\r\n ></ng-container>\r\n\r\n }@else {\r\n @if (asToolbarAction(action).value; as toolbarAction ) {\r\n <button\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [ngClass]=\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\"\r\n class=\"d-inline-flex align-items-center gap-1\"\r\n >\r\n <i [ngClass]=\"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>\r\n\r\n","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 } 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>(data: PropData<R>) {\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 = 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;\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 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 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","i4","map","filter"],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.components-extensible.mjs","sources":["../../../../packages/components/extensible/src/lib/models/props.ts","../../../../packages/components/extensible/src/lib/models/form-props.ts","../../../../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/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.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":["import { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\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 | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyPropData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyPropData<R = any> = Readonly<Omit<PropData<R>, 'data'>>;\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: Omit<PropData<T>, 'data'>, auxData?: any) => R;\r\nexport type PropPredicate<T> = (data?: Omit<PropData<T>, 'data'>, auxData?: any) => boolean;\r\nexport type PropDisplayTextResolver<T> = (data?: Omit<PropData<T>, 'data'>) => 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 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","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 { CommonModule } from '@angular/common';\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} 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 CommonModule,\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 />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian\"\r\n ></ngb-timepicker>\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 @Input() prop!: FormProp;\r\n @Input() meridian = false;\r\n\r\n @ViewChild(NgbInputDatepicker) date!: NgbInputDatepicker;\r\n @ViewChild(NgbTimepicker) time!: 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, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\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, CommonModule, ReactiveFormsModule, 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 LocalizationModule,\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 Input,\r\n OnChanges,\r\n Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n ViewChild,\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 { PropData } 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 { CommonModule } 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 LocalizationModule,\r\n CommonModule,\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 OnChanges, 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 @Input() data!: PropData;\r\n @Input() prop!: FormProp;\r\n @Input() first?: boolean;\r\n @Input() isFirstGroup?: boolean;\r\n @ViewChild('field') private fieldRef!: ElementRef<HTMLElement>;\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: PropData) => false;\r\n\r\n get disabled() {\r\n return this.disabledFn(this.data);\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 this.fieldRef.nativeElement.focus();\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 ngOnChanges({ prop, data }: SimpleChanges) {\r\n const currentProp = prop?.currentValue as FormProp;\r\n const { options, readonly, disabled, validators, className, template } = currentProp || {};\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?.currentValue as PropData)?.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(this.data);\r\n if (readonly) this.readonly = readonly(this.data);\r\n\r\n if (disabled) {\r\n this.disabledFn = disabled;\r\n }\r\n if (validators) {\r\n this.validators = validators(this.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}\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 [ngClass]=\"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 [ngClass]=\"{\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\" [ngClass]=\"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 { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\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 | InjectFlags,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyActionData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyActionData<R = any> = Readonly<Omit<ActionData<R>, 'data'>>;\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: Omit<ActionData<T>, 'data'>) => R;\r\nexport type ActionPredicate<T> = (data?: Omit<ActionData<T>, 'data'>) => 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 { InjectFlags, 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 | InjectFlags,\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 Input,\r\n OnChanges,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PropData, PropList } from '../models/props';\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<InferredData<L>>\r\n implements OnChanges, OnDestroy\r\n{\r\n @Input('abpPropDataFromList') propList?: L;\r\n\r\n @Input('abpPropDataWithRecord') record!: InferredData<L>['record'];\r\n\r\n @Input('abpPropDataAtIndex') index?: number;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n constructor(\r\n private tempRef: TemplateRef<any>,\r\n private vcRef: ViewContainerRef,\r\n injector: Injector,\r\n ) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n\r\n ngOnChanges() {\r\n this.vcRef.clear();\r\n\r\n this.vcRef.createEmbeddedView(this.tempRef, {\r\n $implicit: this.data,\r\n index: 0,\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.vcRef.clear();\r\n }\r\n}\r\n\r\ntype InferredData<L> = PropData<InferredRecord<L>>;\r\ntype InferredRecord<L> = L extends PropList<infer R> ? R : never;\r\n","import { TrackByService } from '@abp/ng.core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n Optional,\r\n QueryList,\r\n SkipSelf,\r\n ViewChildren,\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 { CommonModule } 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: [CommonModule, 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 @ViewChildren(ExtensibleFormPropComponent)\r\n formProps!: QueryList<ExtensibleFormPropComponent>;\r\n\r\n @Input()\r\n set selectedRecord(record: R) {\r\n const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\r\n this.groupedPropList = this.createGroupedList(propList);\r\n this.record = record;\r\n }\r\n\r\n extraPropertiesKey = EXTRA_PROPERTIES_KEY;\r\n groupedPropList!: GroupedFormPropList;\r\n groupedPropListOfArray: FormProp<any>[][];\r\n record!: R;\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) {\r\n const { items } = this.groupedPropList;\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\r\n [ngClass]=\"groupedProp.group?.className\"\r\n [attr.data-name]=\"groupedProp.group?.name || groupedProp.group?.className\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\"\r\n >\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\"\r\n >\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\r\n [class]=\"prop.className\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n [isFirstGroup]=\"isFirstGroup\"\r\n />\r\n }\r\n }\r\n }\r\n }\r\n</ng-template>\r\n","import { Directive, Injector, 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 @Input() record!: InferredData<L>['record'];\r\n\r\n protected constructor(injector: Injector) {\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","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Injector,\r\n Input,\r\n TrackByFunction,\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 { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\nimport { NgClass, 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 NgClass,\r\n LocalizationModule,\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 @Input() icon = 'fa fa-cog';\r\n\r\n @Input() readonly index?: number;\r\n\r\n @Input() text = '';\r\n\r\n readonly trackByFn: TrackByFunction<EntityAction<R>> = (_, item) => item.text;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}\r\n","@if (actionList.length > 1) {\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"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\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\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\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n ></ng-container>\r\n}\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n @if (action.visible(data)) {\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [ngClass]=\"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\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n [ngbTooltip]=\"action.tooltip.text | abpLocalization\"\r\n [placement]=\"action.tooltip.placement || 'auto'\"\r\n triggers=\"hover\"\r\n container=\"body\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n } @else {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n }\r\n</ng-template>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Injector,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { AsyncPipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { Observable, filter, map } from 'rxjs';\r\n\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxDatatableModule, SelectionType } from '@swimlane/ngx-datatable';\r\n\r\nimport {\r\n ABP,\r\n ConfigStateService,\r\n ListService,\r\n LocalizationModule,\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 { PropData } 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\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 LocalizationModule,\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})\r\nexport class ExtensibleTableComponent<R = any> implements OnChanges, AfterViewInit {\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\r\n protected _actionsText!: string;\r\n @Input()\r\n set actionsText(value: string) {\r\n this._actionsText = value;\r\n }\r\n\r\n get actionsText(): string {\r\n return this._actionsText ?? (this.actionList.length > 1 ? 'AbpUi::Actions' : '');\r\n }\r\n\r\n @Input() data!: R[];\r\n @Input() list!: ListService;\r\n @Input() recordsTotal!: number;\r\n\r\n @Input() set actionsColumnWidth(width: number) {\r\n this.setColumnWidths(width ? Number(width) : undefined);\r\n }\r\n\r\n @Input() actionsTemplate?: TemplateRef<any>;\r\n\r\n @Output() tableActivate = new EventEmitter();\r\n\r\n @Input() selectable = false;\r\n\r\n @Input() set selectionType(value: SelectionType | string) {\r\n this._selectionType = typeof value === 'string' ? SelectionType[value] : value;\r\n }\r\n _selectionType: SelectionType = SelectionType.multiClick;\r\n \r\n \r\n @Input() selected: any[] = [];\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n\r\n hasAtLeastOnePermittedAction: boolean;\r\n\r\n readonly columnWidths!: number[];\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 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 this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);\r\n }\r\n\r\n private setColumnWidths(actionsColumn: number | undefined) {\r\n const widths = [actionsColumn];\r\n this.propList.forEach(({ value: prop }) => {\r\n widths.push(prop.columnWidth);\r\n });\r\n (this.columnWidths as any) = widths;\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: PropData): 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 ngOnChanges({ data }: SimpleChanges) {\r\n if (!data?.currentValue) return;\r\n\r\n if (data.currentValue.length < 1) {\r\n this.list.totalCount = this.recordsTotal;\r\n }\r\n\r\n this.data = data.currentValue.map((record: any, index: number) => {\r\n this.propList.forEach(prop => {\r\n const propData = { getInjected: this.getInjected, record, index } as any;\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\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 }) {\r\n this.selected.splice(0, this.selected.length);\r\n this.selected.push(...selected);\r\n this.selectionChange.emit(selected);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.list?.requestStatus$?.pipe(filter(status => status === 'loading')).subscribe(() => {\r\n this.data = [];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n}\r\n","<ngx-datatable\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>\r\n@if(selectable) {\r\n <ngx-datatable-column [width]=\"50\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\" [resizeable]=\"false\">\r\n \r\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\r\n let-selectFn=\"selectFn\">\r\n @if (_selectionType !== 'single') {\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input table-check\" type=\"checkbox\" [checked]=\"allRowsSelected\"\r\n (change)=\"selectFn(!allRowsSelected)\" />\r\n </div>\r\n }\r\n </ng-template>\r\n \r\n <ng-template ngx-datatable-cell-template let-value=\"value\" let-row=\"row\" let-isSelected=\"isSelected\"\r\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\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 class=\"form-check-input\" type=\"radio\" [checked]=\"isSelected\" (change)=\"onCheckboxChangeFn($event)\" />\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 class=\"form-check-input\" type=\"checkbox\" [checked]=\"isSelected\" (change)=\"onCheckboxChangeFn($event)\" />\r\n </div>\r\n }\r\n </ng-template>\r\n \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]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n @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 </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 + 1] || 200\"\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\">\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 >\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n } @else {\r\n {{ column.name }}\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) | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"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 && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"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","import {\r\n InjectFlags,\r\n InjectionToken,\r\n InjectOptions,\r\n Injector,\r\n Pipe,\r\n PipeTransform,\r\n Type,\r\n} 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 | InjectFlags,\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 } 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 { LocalizationModule, PermissionDirective } from '@abp/ng.core';\r\nimport { NgClass, 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 LocalizationModule,\r\n NgClass,\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{\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(public readonly injector: Injector) {\r\n super(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\r\n *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"\r\n ></ng-container>\r\n\r\n }@else {\r\n @if (asToolbarAction(action).value; as toolbarAction ) {\r\n <button\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [ngClass]=\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\"\r\n class=\"d-inline-flex align-items-center gap-1\"\r\n >\r\n <i [ngClass]=\"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>\r\n\r\n","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 } 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>(data: PropData<R>) {\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 = 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;\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 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 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","i4","map","filter"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.components-page.mjs","sources":["../../../../packages/components/page/src/page-part.directive.ts","../../../../packages/components/page/src/page-parts.component.ts","../../../../packages/components/page/src/page.component.ts","../../../../packages/components/page/src/page.component.html","../../../../packages/components/page/src/page.module.ts","../../../../packages/components/page/src/abp-ng.components-page.ts"],"sourcesContent":["import {\r\n Directive,\r\n TemplateRef,\r\n ViewContainerRef,\r\n Input,\r\n InjectionToken,\r\n Optional,\r\n Inject,\r\n OnInit,\r\n OnDestroy,\r\n Injector,\r\n OnChanges,\r\n SimpleChanges,\r\n SimpleChange,\r\n} from '@angular/core';\r\nimport { Observable, Subscription, of } from 'rxjs';\r\n\r\nexport interface PageRenderStrategy {\r\n shouldRender(type?: string): boolean | Observable<boolean>;\r\n onInit?(type?: string, injector?: Injector, context?: any): void;\r\n onDestroy?(type?: string, injector?: Injector, context?: any): void;\r\n onContextUpdate?(change?: SimpleChange): void;\r\n}\r\n\r\nexport const PAGE_RENDER_STRATEGY = new InjectionToken<PageRenderStrategy>('PAGE_RENDER_STRATEGY');\r\n\r\n@Directive({\r\n selector: '[abpPagePart]',\r\n})\r\nexport class PagePartDirective implements OnInit, OnDestroy, OnChanges {\r\n hasRendered = false;\r\n type!: string;\r\n subscription!: Subscription;\r\n\r\n @Input('abpPagePartContext') context: any;\r\n @Input() set abpPagePart(type: string) {\r\n this.type = type;\r\n this.createRenderStream(type);\r\n }\r\n\r\n render = (shouldRender: boolean) => {\r\n if (shouldRender && !this.hasRendered) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n this.hasRendered = true;\r\n } else if (!shouldRender && this.hasRendered) {\r\n this.viewContainer.clear();\r\n this.hasRendered = false;\r\n }\r\n };\r\n\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n @Optional() @Inject(PAGE_RENDER_STRATEGY) private renderLogic: PageRenderStrategy,\r\n private injector: Injector,\r\n ) {}\r\n\r\n ngOnChanges({ context }: SimpleChanges): void {\r\n if (this.renderLogic?.onContextUpdate) {\r\n this.renderLogic.onContextUpdate(context);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.renderLogic?.onInit) {\r\n this.renderLogic.onInit(this.type, this.injector, this.context);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.clearSubscription();\r\n\r\n if (this.renderLogic?.onDestroy) {\r\n this.renderLogic.onDestroy(this.type, this.injector, this.context);\r\n }\r\n }\r\n\r\n shouldRender(type: string) {\r\n if (this.renderLogic) {\r\n const willRender = this.renderLogic.shouldRender(type);\r\n return willRender instanceof Observable ? willRender : of(willRender);\r\n }\r\n return of(true);\r\n }\r\n\r\n protected createRenderStream(type: string) {\r\n this.clearSubscription();\r\n\r\n this.subscription = this.shouldRender(type).subscribe(this.render);\r\n }\r\n\r\n protected clearSubscription() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\nexport enum PageParts {\r\n title = 'PageTitleContainerComponent',\r\n breadcrumb = 'PageBreadcrumbContainerComponent',\r\n toolbar = 'PageToolbarContainerComponent',\r\n}\r\n\r\n@Component({\r\n selector: 'abp-page-title-container',\r\n template: ` <ng-content></ng-content> `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageTitleContainerComponent {}\r\n\r\n@Component({\r\n selector: 'abp-page-breadcrumb-container',\r\n template: ` <ng-content></ng-content> `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageBreadcrumbContainerComponent {}\r\n\r\n@Component({\r\n selector: 'abp-page-toolbar-container',\r\n template: ` <ng-content></ng-content> `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageToolbarContainerComponent {}\r\n","import { Component, Input, ViewEncapsulation, ContentChild } from '@angular/core';\r\nimport {\r\n PageTitleContainerComponent,\r\n PageBreadcrumbContainerComponent,\r\n PageToolbarContainerComponent,\r\n PageParts,\r\n} from './page-parts.component';\r\nimport { BreadcrumbComponent } from '@abp/ng.theme.shared';\r\nimport { PageToolbarComponent } from '@abp/ng.components/extensible';\r\nimport { PagePartDirective } from './page-part.directive';\r\n\r\n@Component({\r\n selector: 'abp-page',\r\n templateUrl: './page.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [BreadcrumbComponent, PageToolbarComponent, PagePartDirective],\r\n})\r\nexport class PageComponent {\r\n @Input() title?: string;\r\n\r\n toolbarVisible = false;\r\n _toolbarData: any;\r\n @Input() set toolbar(val: any) {\r\n this._toolbarData = val;\r\n this.toolbarVisible = true;\r\n }\r\n\r\n get toolbarData() {\r\n return this._toolbarData;\r\n }\r\n\r\n @Input() breadcrumb = true;\r\n\r\n pageParts = {\r\n title: PageParts.title,\r\n breadcrumb: PageParts.breadcrumb,\r\n toolbar: PageParts.toolbar,\r\n };\r\n\r\n @ContentChild(PageTitleContainerComponent) customTitle?: PageTitleContainerComponent;\r\n @ContentChild(PageBreadcrumbContainerComponent)\r\n customBreadcrumb?: PageBreadcrumbContainerComponent;\r\n @ContentChild(PageToolbarContainerComponent) customToolbar?: PageToolbarContainerComponent;\r\n\r\n get shouldRenderRow() {\r\n return !!(\r\n this.title ||\r\n this.toolbarVisible ||\r\n this.breadcrumb ||\r\n this.customTitle ||\r\n this.customBreadcrumb ||\r\n this.customToolbar ||\r\n this.pageParts\r\n );\r\n }\r\n}\r\n","@if (shouldRenderRow) {\r\n <div class=\"row entry-row\">\r\n @if (customTitle) {\r\n <ng-content select=\"abp-page-title-container\"></ng-content>\r\n } @else {\r\n @if (title) {\r\n <div class=\"col-auto\" *abpPagePart=\"pageParts.title\">\r\n <h1 class=\"content-header-title\">\r\n {{ title }}\r\n </h1>\r\n </div>\r\n }\r\n }\r\n\r\n @if (customBreadcrumb) {\r\n <ng-content select=\"abp-page-breadcrumb-container\"></ng-content>\r\n } @else {\r\n @if (breadcrumb) {\r\n <div class=\"col-lg-auto ps-lg-0\" *abpPagePart=\"pageParts.breadcrumb\">\r\n <abp-breadcrumb></abp-breadcrumb>\r\n </div>\r\n }\r\n }\r\n\r\n @if (customToolbar) {\r\n <ng-content select=\"abp-page-toolbar-container\"></ng-content>\r\n } @else {\r\n @if (toolbarVisible) {\r\n <div class=\"col\" *abpPagePart=\"pageParts.toolbar; context: toolbarData\">\r\n <abp-page-toolbar [record]=\"toolbarData\"></abp-page-toolbar>\r\n </div>\r\n }\r\n }\r\n </div>\r\n}\r\n\r\n<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { PagePartDirective } from './page-part.directive';\r\nimport {\r\n PageBreadcrumbContainerComponent,\r\n PageTitleContainerComponent,\r\n PageToolbarContainerComponent,\r\n} from './page-parts.component';\r\nimport { PageComponent } from './page.component';\r\n\r\nexport const PAGE_EXPORTS = [\r\n PageComponent,\r\n PageTitleContainerComponent,\r\n PageBreadcrumbContainerComponent,\r\n PageToolbarContainerComponent,\r\n PagePartDirective,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [...PAGE_EXPORTS],\r\n exports: [...PAGE_EXPORTS],\r\n})\r\nexport class PageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.components-page.mjs","sources":["../../../../packages/components/page/src/page-part.directive.ts","../../../../packages/components/page/src/page-parts.component.ts","../../../../packages/components/page/src/page.component.ts","../../../../packages/components/page/src/page.component.html","../../../../packages/components/page/src/page.module.ts","../../../../packages/components/page/src/abp-ng.components-page.ts"],"sourcesContent":["import {\r\n Directive,\r\n TemplateRef,\r\n ViewContainerRef,\r\n Input,\r\n InjectionToken,\r\n Optional,\r\n Inject,\r\n OnInit,\r\n OnDestroy,\r\n Injector,\r\n OnChanges,\r\n SimpleChanges,\r\n SimpleChange,\r\n} from '@angular/core';\r\nimport { Observable, Subscription, of } from 'rxjs';\r\n\r\nexport interface PageRenderStrategy {\r\n shouldRender(type?: string): boolean | Observable<boolean>;\r\n onInit?(type?: string, injector?: Injector, context?: any): void;\r\n onDestroy?(type?: string, injector?: Injector, context?: any): void;\r\n onContextUpdate?(change?: SimpleChange): void;\r\n}\r\n\r\nexport const PAGE_RENDER_STRATEGY = new InjectionToken<PageRenderStrategy>('PAGE_RENDER_STRATEGY');\r\n\r\n@Directive({\r\n selector: '[abpPagePart]',\r\n})\r\nexport class PagePartDirective implements OnInit, OnDestroy, OnChanges {\r\n hasRendered = false;\r\n type!: string;\r\n subscription!: Subscription;\r\n\r\n @Input('abpPagePartContext') context: any;\r\n @Input() set abpPagePart(type: string) {\r\n this.type = type;\r\n this.createRenderStream(type);\r\n }\r\n\r\n render = (shouldRender: boolean) => {\r\n if (shouldRender && !this.hasRendered) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n this.hasRendered = true;\r\n } else if (!shouldRender && this.hasRendered) {\r\n this.viewContainer.clear();\r\n this.hasRendered = false;\r\n }\r\n };\r\n\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n @Optional() @Inject(PAGE_RENDER_STRATEGY) private renderLogic: PageRenderStrategy,\r\n private injector: Injector,\r\n ) {}\r\n\r\n ngOnChanges({ context }: SimpleChanges): void {\r\n if (this.renderLogic?.onContextUpdate) {\r\n this.renderLogic.onContextUpdate(context);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.renderLogic?.onInit) {\r\n this.renderLogic.onInit(this.type, this.injector, this.context);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.clearSubscription();\r\n\r\n if (this.renderLogic?.onDestroy) {\r\n this.renderLogic.onDestroy(this.type, this.injector, this.context);\r\n }\r\n }\r\n\r\n shouldRender(type: string) {\r\n if (this.renderLogic) {\r\n const willRender = this.renderLogic.shouldRender(type);\r\n return willRender instanceof Observable ? willRender : of(willRender);\r\n }\r\n return of(true);\r\n }\r\n\r\n protected createRenderStream(type: string) {\r\n this.clearSubscription();\r\n\r\n this.subscription = this.shouldRender(type).subscribe(this.render);\r\n }\r\n\r\n protected clearSubscription() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\nexport enum PageParts {\r\n title = 'PageTitleContainerComponent',\r\n breadcrumb = 'PageBreadcrumbContainerComponent',\r\n toolbar = 'PageToolbarContainerComponent',\r\n}\r\n\r\n@Component({\r\n selector: 'abp-page-title-container',\r\n template: ` <ng-content></ng-content> `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageTitleContainerComponent {}\r\n\r\n@Component({\r\n selector: 'abp-page-breadcrumb-container',\r\n template: ` <ng-content></ng-content> `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageBreadcrumbContainerComponent {}\r\n\r\n@Component({\r\n selector: 'abp-page-toolbar-container',\r\n template: ` <ng-content></ng-content> `,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageToolbarContainerComponent {}\r\n","import { Component, Input, ViewEncapsulation, ContentChild } from '@angular/core';\r\nimport {\r\n PageTitleContainerComponent,\r\n PageBreadcrumbContainerComponent,\r\n PageToolbarContainerComponent,\r\n PageParts,\r\n} from './page-parts.component';\r\nimport { BreadcrumbComponent } from '@abp/ng.theme.shared';\r\nimport { PageToolbarComponent } from '@abp/ng.components/extensible';\r\nimport { PagePartDirective } from './page-part.directive';\r\n\r\n@Component({\r\n selector: 'abp-page',\r\n templateUrl: './page.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [BreadcrumbComponent, PageToolbarComponent, PagePartDirective],\r\n})\r\nexport class PageComponent {\r\n @Input() title?: string;\r\n\r\n toolbarVisible = false;\r\n _toolbarData: any;\r\n @Input() set toolbar(val: any) {\r\n this._toolbarData = val;\r\n this.toolbarVisible = true;\r\n }\r\n\r\n get toolbarData() {\r\n return this._toolbarData;\r\n }\r\n\r\n @Input() breadcrumb = true;\r\n\r\n pageParts = {\r\n title: PageParts.title,\r\n breadcrumb: PageParts.breadcrumb,\r\n toolbar: PageParts.toolbar,\r\n };\r\n\r\n @ContentChild(PageTitleContainerComponent) customTitle?: PageTitleContainerComponent;\r\n @ContentChild(PageBreadcrumbContainerComponent)\r\n customBreadcrumb?: PageBreadcrumbContainerComponent;\r\n @ContentChild(PageToolbarContainerComponent) customToolbar?: PageToolbarContainerComponent;\r\n\r\n get shouldRenderRow() {\r\n return !!(\r\n this.title ||\r\n this.toolbarVisible ||\r\n this.breadcrumb ||\r\n this.customTitle ||\r\n this.customBreadcrumb ||\r\n this.customToolbar ||\r\n this.pageParts\r\n );\r\n }\r\n}\r\n","@if (shouldRenderRow) {\r\n <div class=\"row entry-row\">\r\n @if (customTitle) {\r\n <ng-content select=\"abp-page-title-container\"></ng-content>\r\n } @else {\r\n @if (title) {\r\n <div class=\"col-auto\" *abpPagePart=\"pageParts.title\">\r\n <h1 class=\"content-header-title\">\r\n {{ title }}\r\n </h1>\r\n </div>\r\n }\r\n }\r\n\r\n @if (customBreadcrumb) {\r\n <ng-content select=\"abp-page-breadcrumb-container\"></ng-content>\r\n } @else {\r\n @if (breadcrumb) {\r\n <div class=\"col-lg-auto ps-lg-0\" *abpPagePart=\"pageParts.breadcrumb\">\r\n <abp-breadcrumb></abp-breadcrumb>\r\n </div>\r\n }\r\n }\r\n\r\n @if (customToolbar) {\r\n <ng-content select=\"abp-page-toolbar-container\"></ng-content>\r\n } @else {\r\n @if (toolbarVisible) {\r\n <div class=\"col\" *abpPagePart=\"pageParts.toolbar; context: toolbarData\">\r\n <abp-page-toolbar [record]=\"toolbarData\"></abp-page-toolbar>\r\n </div>\r\n }\r\n }\r\n </div>\r\n}\r\n\r\n<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { PagePartDirective } from './page-part.directive';\r\nimport {\r\n PageBreadcrumbContainerComponent,\r\n PageTitleContainerComponent,\r\n PageToolbarContainerComponent,\r\n} from './page-parts.component';\r\nimport { PageComponent } from './page.component';\r\n\r\nexport const PAGE_EXPORTS = [\r\n PageComponent,\r\n PageTitleContainerComponent,\r\n PageBreadcrumbContainerComponent,\r\n PageToolbarContainerComponent,\r\n PagePartDirective,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [...PAGE_EXPORTS],\r\n exports: [...PAGE_EXPORTS],\r\n})\r\nexport class PageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAwBa,oBAAoB,GAAG,IAAI,cAAc,CAAqB,sBAAsB;MAKpF,iBAAiB,CAAA;IAM5B,IAAa,WAAW,CAAC,IAAY,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;;AAa/B,IAAA,WAAA,CACU,WAA6B,EAC7B,aAA+B,EACW,WAA+B,EACzE,QAAkB,EAAA;QAHlB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,aAAa,GAAb,aAAa;QAC6B,IAAA,CAAA,WAAW,GAAX,WAAW;QACrD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAxBlB,IAAA,CAAA,WAAW,GAAG,KAAK;AAUnB,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,YAAqB,KAAI;AACjC,YAAA,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvD,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAClB,iBAAA,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5C,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAE5B,SAAC;;IASD,WAAW,CAAC,EAAE,OAAO,EAAiB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC;;;IAI7C,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC;;;IAInE,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC;;;AAItE,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC;AACtD,YAAA,OAAO,UAAU,YAAY,UAAU,GAAG,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;;AAEvE,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAGP,IAAA,kBAAkB,CAAC,IAAY,EAAA;QACvC,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;IAG1D,iBAAiB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;;;AAhExB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,6EAwBN,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAxB/B,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,SAAA,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;;0BAyBI;;0BAAY,MAAM;2BAAC,oBAAoB;gEAnBb,OAAO,EAAA,CAAA;sBAAnC,KAAK;uBAAC,oBAAoB;gBACd,WAAW,EAAA,CAAA;sBAAvB;;;ICjCS;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,6BAAqC;AACrC,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,kCAA+C;AAC/C,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,+BAAyC;AAC3C,CAAC,EAJW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;MAWR,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,oFAH5B,CAAA,2BAAA,CAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,CAAA,2BAAA,CAA6B;oBACvC,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;MAQY,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,yFAHjC,CAAA,2BAAA,CAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAL5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,CAAA,2BAAA,CAA6B;oBACvC,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;MAQY,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,sFAH9B,CAAA,2BAAA,CAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,CAAA,2BAAA,CAA6B;oBACvC,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;;MCTY,aAAa,CAAA;AAN1B,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,cAAc,GAAG,KAAK;QAWb,IAAA,CAAA,UAAU,GAAG,IAAI;AAE1B,QAAA,IAAA,CAAA,SAAS,GAAG;YACV,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B;AAkBF;IAjCC,IAAa,OAAO,CAAC,GAAQ,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;AAG5B,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;AAgB1B,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAC,EACN,IAAI,CAAC,KAAK;AACV,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,SAAS,CACf;;8GApCQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAsBV,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC3B,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEhC,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C7C,knCAqCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBY,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,2FAAE,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAE3D,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,UAAU,EAAA,aAAA,EAEL,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,knCAAA,EAAA;8BAG9D,KAAK,EAAA,CAAA;sBAAb;gBAIY,OAAO,EAAA,CAAA;sBAAnB;gBASQ,UAAU,EAAA,CAAA;sBAAlB;gBAQ0C,WAAW,EAAA,CAAA;sBAArD,YAAY;uBAAC,2BAA2B;gBAEzC,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,gCAAgC;gBAED,aAAa,EAAA,CAAA;sBAAzD,YAAY;uBAAC,6BAA6B;;;AEjCtC,MAAM,YAAY,GAAG;IAC1B,aAAa;IACb,2BAA2B;IAC3B,gCAAgC;IAChC,6BAA6B;IAC7B,iBAAiB;;MAQN,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAZrB,aAAa;YACb,2BAA2B;YAC3B,gCAAgC;YAChC,6BAA6B;AAC7B,YAAA,iBAAiB,aAJjB,aAAa;YACb,2BAA2B;YAC3B,gCAAgC;YAChC,6BAA6B;YAC7B,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAQN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAZrB,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAYF,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC;AAC1B,oBAAA,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC;AAC3B,iBAAA;;;ACrBD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.components-tree.mjs","sources":["../../../../packages/components/tree/src/lib/disable-tree-style-loading.token.ts","../../../../packages/components/tree/src/lib/templates/tree-node-template.directive.ts","../../../../packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts","../../../../packages/components/tree/src/lib/components/tree.component.ts","../../../../packages/components/tree/src/lib/components/tree.component.html","../../../../packages/components/tree/src/lib/tree.module.ts","../../../../packages/components/tree/src/lib/utils/nz-tree-adapter.ts","../../../../packages/components/tree/src/abp-ng.components-tree.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const DISABLE_TREE_STYLE_LOADING_TOKEN = new InjectionToken<boolean>(\r\n 'DISABLE_TREE_STYLE_LOADING_TOKEN',\r\n);\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',\r\n})\r\nexport class TreeNodeTemplateDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',\r\n})\r\nexport class ExpandedIconTemplateDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NgbDropdown, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n NzFormatBeforeDropEvent,\r\n NzFormatEmitEvent,\r\n NzTreeComponent,\r\n NzTreeNode,\r\n} from 'ng-zorro-antd/tree';\r\nimport {\r\n InitDirective,\r\n LazyLoadService,\r\n LOADING_STRATEGY,\r\n SubscriptionService,\r\n} from '@abp/ng.core';\r\nimport { of } from 'rxjs';\r\nimport { DISABLE_TREE_STYLE_LOADING_TOKEN } from '../disable-tree-style-loading.token';\r\nimport { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';\r\nimport { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\r\n\r\nexport type DropEvent = NzFormatEmitEvent & { pos: number };\r\n\r\n@Component({\r\n selector: 'abp-tree',\r\n templateUrl: 'tree.component.html',\r\n styleUrls: ['tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [SubscriptionService],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n NzTreeComponent,\r\n NgbDropdown,\r\n NgbDropdownMenu,\r\n NgbDropdownToggle,\r\n InitDirective,\r\n NzNoAnimationDirective,\r\n ],\r\n})\r\nexport class TreeComponent implements OnInit {\r\n private lazyLoadService = inject(LazyLoadService);\r\n private subscriptionService = inject(SubscriptionService);\r\n private cdr = inject(ChangeDetectorRef);\r\n private disableTreeStyleLoading = inject(DISABLE_TREE_STYLE_LOADING_TOKEN, { optional: true });\r\n\r\n dropPosition: number;\r\n\r\n dropdowns = {} as { [key: string]: NgbDropdown };\r\n\r\n @ContentChild('menu') menu: TemplateRef<any>;\r\n @ContentChild(TreeNodeTemplateDirective) customNodeTemplate: TreeNodeTemplateDirective;\r\n @ContentChild(ExpandedIconTemplateDirective) expandedIconTemplate: ExpandedIconTemplateDirective;\r\n @Output() readonly checkedKeysChange = new EventEmitter();\r\n @Output() readonly expandedKeysChange = new EventEmitter<string[]>();\r\n @Output() readonly selectedNodeChange = new EventEmitter();\r\n @Output() readonly dropOver = new EventEmitter<DropEvent>();\r\n @Output() readonly nzExpandChange = new EventEmitter<NzFormatEmitEvent>();\r\n @Input() noAnimation = true;\r\n @Input() draggable: boolean;\r\n @Input() checkable: boolean;\r\n @Input() checkStrictly: boolean;\r\n @Input() checkedKeys = [];\r\n @Input() nodes = [];\r\n @Input() expandedKeys: string[] = [];\r\n @Input() selectedNode: any;\r\n @Input() changeCheckboxWithNode: boolean;\r\n @Input() isNodeSelected = node => this.selectedNode?.id === node.key;\r\n @Input() beforeDrop = (event: NzFormatBeforeDropEvent) => {\r\n this.dropPosition = event.pos;\r\n return of(false);\r\n };\r\n\r\n ngOnInit() {\r\n this.loadStyle();\r\n }\r\n\r\n private loadStyle() {\r\n if (this.disableTreeStyleLoading) {\r\n return;\r\n }\r\n const loaded$ = this.lazyLoadService.load(\r\n LOADING_STRATEGY.AppendAnonymousStyleToHead('ng-zorro-antd-tree.css'),\r\n );\r\n this.subscriptionService.addOne(loaded$);\r\n }\r\n\r\n private findNode(target: any, nodes: any[]) {\r\n for (const node of nodes) {\r\n if (node.key === target.id) {\r\n return node;\r\n }\r\n if (node.children) {\r\n const res = this.findNode(target, node.children);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onSelectedNodeChange(node: NzTreeNode) {\r\n this.selectedNode = node.origin.entity;\r\n if (this.changeCheckboxWithNode) {\r\n let newVal;\r\n if (node.isChecked) {\r\n newVal = this.checkedKeys.filter(x => x !== node.key);\r\n } else {\r\n newVal = [...this.checkedKeys, node.key];\r\n }\r\n this.selectedNodeChange.emit(node);\r\n this.checkedKeys = newVal;\r\n this.checkedKeysChange.emit(newVal);\r\n } else {\r\n this.selectedNodeChange.emit(node.origin.entity);\r\n }\r\n }\r\n\r\n onCheckboxChange(event) {\r\n this.checkedKeys = [...event.keys];\r\n this.checkedKeysChange.emit(event.keys);\r\n }\r\n\r\n onExpandedKeysChange(event) {\r\n this.expandedKeys = [...event.keys];\r\n this.expandedKeysChange.emit(event.keys);\r\n this.nzExpandChange.emit(event);\r\n }\r\n\r\n onDrop(event: DropEvent) {\r\n event.event.stopPropagation();\r\n event.event.preventDefault();\r\n event.pos = this.dropPosition;\r\n\r\n this.dropOver.emit(event);\r\n }\r\n\r\n initDropdown(key: string, dropdown: NgbDropdown) {\r\n this.dropdowns[key] = dropdown;\r\n }\r\n\r\n onContextMenuChange(event: NzFormatEmitEvent) {\r\n const dropdownKey = event.node?.key;\r\n\r\n Object.entries(this.dropdowns).forEach(([key, dropdown]) => {\r\n if (key !== dropdownKey && dropdown?.isOpen()) {\r\n dropdown.close();\r\n }\r\n });\r\n this.dropdowns[dropdownKey]?.toggle();\r\n }\r\n\r\n setSelectedNode(node: any) {\r\n const newSelectedNode = this.findNode(node, this.nodes);\r\n this.selectedNode = { ...newSelectedNode };\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","<nz-tree\r\n [nzBeforeDrop]=\"beforeDrop\"\r\n [nzDraggable]=\"draggable\"\r\n [nzCheckStrictly]=\"checkStrictly\"\r\n [nzCheckable]=\"checkable\"\r\n [nzCheckedKeys]=\"checkedKeys\"\r\n [nzData]=\"nodes\"\r\n [nzTreeTemplate]=\"treeTemplate\"\r\n [nzExpandedKeys]=\"expandedKeys\"\r\n [nzExpandedIcon]=\"expandedIconTemplate?.template || defaultIconTemplate\"\r\n (nzExpandChange)=\"onExpandedKeysChange($event)\"\r\n (nzCheckboxChange)=\"onCheckboxChange($event)\"\r\n (nzOnDrop)=\"onDrop($event)\"\r\n [nzNoAnimation]=\"noAnimation\"\r\n (nzContextMenu)=\"onContextMenuChange($event)\"\r\n/>\r\n<ng-template #treeTemplate let-node>\r\n <div\r\n [class.selected]=\"isNodeSelected(node)\"\r\n [title]=\"node.title\"\r\n (click)=\"onSelectedNodeChange(node)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $implicit: node }\" />\r\n\r\n <ng-template #nodeTemplate let-node>\r\n <div class=\"d-inline-flex align-items-center abp-ellipsis-inline\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customNodeTemplate ? customNodeTemplate?.template : defaultNodeTemplate;\r\n context: { $implicit: node }\r\n \"\r\n />\r\n </div>\r\n\r\n @if (menu) {\r\n <div\r\n #dropdown=\"ngbDropdown\"\r\n class=\"d-inline-block ms-1\"\r\n ngbDropdown\r\n placement=\"bottom\"\r\n container=\"body\"\r\n (abpInit)=\"initDropdown(node.key, dropdown)\"\r\n >\r\n <i\r\n class=\"fas fa-caret-down text-muted\"\r\n ngbDropdownToggle\r\n [class.dropdown-toggle]=\"false\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n <div ngbDropdownMenu>\r\n <ng-template *ngTemplateOutlet=\"menu; context: { $implicit: node }\" />\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultNodeTemplate let-node>\r\n <span>{{ node.title }}</span>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"\r\n /></i>\r\n</ng-template>\r\n\r\n<ng-template #minusIcon>\r\n <svg\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\"\r\n />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #plusIcon>\r\n <svg\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\"\r\n />\r\n </svg>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { TreeComponent } from './components/tree.component';\r\nimport { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';\r\nimport { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';\r\n\r\n@NgModule({\r\n imports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n exports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n declarations: [],\r\n})\r\nexport class TreeModule {}\r\n","export abstract class BaseNode {\r\n name?: string;\r\n displayName?: string;\r\n\r\n constructor(public id: string, public parentId: string | null) {}\r\n}\r\n\r\nexport class TreeNode<T extends BaseNode> extends BaseNode {\r\n title: string | undefined;\r\n key: string;\r\n icon: string | null = null;\r\n children: TreeNode<T>[] = [];\r\n isLeaf = true;\r\n checked = false;\r\n selected = false;\r\n expanded = false;\r\n selectable = true;\r\n disabled = false;\r\n disableCheckbox = false;\r\n parentNode?: TreeNode<T> | null;\r\n\r\n constructor(public entity: T, private nameResolver = ent => ent.displayName || ent.name) {\r\n super(entity.id, entity.parentId);\r\n this.key = entity.id;\r\n this.title = nameResolver(entity);\r\n }\r\n}\r\n\r\nexport class TreeAdapter<T extends BaseNode = BaseNode> {\r\n private tree: TreeNode<T>[];\r\n\r\n constructor(private list: T[] = []) {\r\n this.tree = createTreeFromList(this.list);\r\n }\r\n\r\n getList() {\r\n return this.list;\r\n }\r\n\r\n getTree() {\r\n return this.tree;\r\n }\r\n\r\n handleDrop({ key, parentNode }: TreeNode<T>) {\r\n const index = this.list.findIndex(({ id }) => id === key);\r\n this.list[index].parentId = parentNode ? parentNode.key : null;\r\n this.tree = createTreeFromList(this.list);\r\n }\r\n\r\n handleRemove({ key }: TreeNode<T>) {\r\n this.updateTreeFromList(this.list.filter(item => item.id !== key));\r\n }\r\n\r\n handleUpdate({ key, children }: { key: string; children: T[] }) {\r\n /**\r\n * When we need to update a node with new children, first we need to remove any descendant nodes.\r\n * If we remove immediate children and create a new tree, any other descendant nodes will be removed\r\n * and we won't need to recursively remove sub children.\r\n * Then, you simply add back the new children and create a new tree.\r\n */\r\n const listWithDescendantNodesRemoved = this.updateTreeFromList(\r\n this.list.filter(item => item.parentId !== key),\r\n );\r\n this.updateTreeFromList(listWithDescendantNodesRemoved.concat(children));\r\n }\r\n\r\n updateTreeFromList(list: T[]) {\r\n this.tree = createTreeFromList(list);\r\n this.list = createListFromTree(this.tree);\r\n return this.list;\r\n }\r\n}\r\n\r\n// UTILITY FUNCTIONS\r\n\r\nfunction createTreeFromList<T extends BaseNode>(list: T[]): TreeNode<T>[] {\r\n const map = createMapFromList(list);\r\n const tree: TreeNode<T>[] = [];\r\n\r\n list.forEach(row => {\r\n const parentId = row.parentId;\r\n const node = map.get(row.id);\r\n if (parentId) {\r\n const parent = map.get(parentId);\r\n if (!parent) return;\r\n parent.children.push(node);\r\n parent.isLeaf = false;\r\n } else {\r\n tree.push(node);\r\n }\r\n });\r\n return tree;\r\n}\r\n\r\nfunction createListFromTree<T extends BaseNode>(tree: TreeNode<T>[], list: T[] = []): T[] {\r\n tree.forEach(node => {\r\n list.push({ ...node.entity, parentId: node.parentId });\r\n if (node.children) createListFromTree(node.children, list);\r\n });\r\n\r\n return list;\r\n}\r\n\r\nfunction createMapFromList<T extends BaseNode>(\r\n list: T[],\r\n map = new Map<string, TreeNode<T>>(),\r\n): Map<string, TreeNode<T>> {\r\n list.forEach(row => map.set(row.id, new TreeNode(row)));\r\n\r\n return map;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.components-tree.mjs","sources":["../../../../packages/components/tree/src/lib/disable-tree-style-loading.token.ts","../../../../packages/components/tree/src/lib/templates/tree-node-template.directive.ts","../../../../packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts","../../../../packages/components/tree/src/lib/components/tree.component.ts","../../../../packages/components/tree/src/lib/components/tree.component.html","../../../../packages/components/tree/src/lib/tree.module.ts","../../../../packages/components/tree/src/lib/utils/nz-tree-adapter.ts","../../../../packages/components/tree/src/abp-ng.components-tree.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const DISABLE_TREE_STYLE_LOADING_TOKEN = new InjectionToken<boolean>(\r\n 'DISABLE_TREE_STYLE_LOADING_TOKEN',\r\n);\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',\r\n})\r\nexport class TreeNodeTemplateDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',\r\n})\r\nexport class ExpandedIconTemplateDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NgbDropdown, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n NzFormatBeforeDropEvent,\r\n NzFormatEmitEvent,\r\n NzTreeComponent,\r\n NzTreeNode,\r\n} from 'ng-zorro-antd/tree';\r\nimport {\r\n InitDirective,\r\n LazyLoadService,\r\n LOADING_STRATEGY,\r\n SubscriptionService,\r\n} from '@abp/ng.core';\r\nimport { of } from 'rxjs';\r\nimport { DISABLE_TREE_STYLE_LOADING_TOKEN } from '../disable-tree-style-loading.token';\r\nimport { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';\r\nimport { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\r\n\r\nexport type DropEvent = NzFormatEmitEvent & { pos: number };\r\n\r\n@Component({\r\n selector: 'abp-tree',\r\n templateUrl: 'tree.component.html',\r\n styleUrls: ['tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [SubscriptionService],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n NzTreeComponent,\r\n NgbDropdown,\r\n NgbDropdownMenu,\r\n NgbDropdownToggle,\r\n InitDirective,\r\n NzNoAnimationDirective,\r\n ],\r\n})\r\nexport class TreeComponent implements OnInit {\r\n private lazyLoadService = inject(LazyLoadService);\r\n private subscriptionService = inject(SubscriptionService);\r\n private cdr = inject(ChangeDetectorRef);\r\n private disableTreeStyleLoading = inject(DISABLE_TREE_STYLE_LOADING_TOKEN, { optional: true });\r\n\r\n dropPosition: number;\r\n\r\n dropdowns = {} as { [key: string]: NgbDropdown };\r\n\r\n @ContentChild('menu') menu: TemplateRef<any>;\r\n @ContentChild(TreeNodeTemplateDirective) customNodeTemplate: TreeNodeTemplateDirective;\r\n @ContentChild(ExpandedIconTemplateDirective) expandedIconTemplate: ExpandedIconTemplateDirective;\r\n @Output() readonly checkedKeysChange = new EventEmitter();\r\n @Output() readonly expandedKeysChange = new EventEmitter<string[]>();\r\n @Output() readonly selectedNodeChange = new EventEmitter();\r\n @Output() readonly dropOver = new EventEmitter<DropEvent>();\r\n @Output() readonly nzExpandChange = new EventEmitter<NzFormatEmitEvent>();\r\n @Input() noAnimation = true;\r\n @Input() draggable: boolean;\r\n @Input() checkable: boolean;\r\n @Input() checkStrictly: boolean;\r\n @Input() checkedKeys = [];\r\n @Input() nodes = [];\r\n @Input() expandedKeys: string[] = [];\r\n @Input() selectedNode: any;\r\n @Input() changeCheckboxWithNode: boolean;\r\n @Input() isNodeSelected = node => this.selectedNode?.id === node.key;\r\n @Input() beforeDrop = (event: NzFormatBeforeDropEvent) => {\r\n this.dropPosition = event.pos;\r\n return of(false);\r\n };\r\n\r\n ngOnInit() {\r\n this.loadStyle();\r\n }\r\n\r\n private loadStyle() {\r\n if (this.disableTreeStyleLoading) {\r\n return;\r\n }\r\n const loaded$ = this.lazyLoadService.load(\r\n LOADING_STRATEGY.AppendAnonymousStyleToHead('ng-zorro-antd-tree.css'),\r\n );\r\n this.subscriptionService.addOne(loaded$);\r\n }\r\n\r\n private findNode(target: any, nodes: any[]) {\r\n for (const node of nodes) {\r\n if (node.key === target.id) {\r\n return node;\r\n }\r\n if (node.children) {\r\n const res = this.findNode(target, node.children);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onSelectedNodeChange(node: NzTreeNode) {\r\n this.selectedNode = node.origin.entity;\r\n if (this.changeCheckboxWithNode) {\r\n let newVal;\r\n if (node.isChecked) {\r\n newVal = this.checkedKeys.filter(x => x !== node.key);\r\n } else {\r\n newVal = [...this.checkedKeys, node.key];\r\n }\r\n this.selectedNodeChange.emit(node);\r\n this.checkedKeys = newVal;\r\n this.checkedKeysChange.emit(newVal);\r\n } else {\r\n this.selectedNodeChange.emit(node.origin.entity);\r\n }\r\n }\r\n\r\n onCheckboxChange(event) {\r\n this.checkedKeys = [...event.keys];\r\n this.checkedKeysChange.emit(event.keys);\r\n }\r\n\r\n onExpandedKeysChange(event) {\r\n this.expandedKeys = [...event.keys];\r\n this.expandedKeysChange.emit(event.keys);\r\n this.nzExpandChange.emit(event);\r\n }\r\n\r\n onDrop(event: DropEvent) {\r\n event.event.stopPropagation();\r\n event.event.preventDefault();\r\n event.pos = this.dropPosition;\r\n\r\n this.dropOver.emit(event);\r\n }\r\n\r\n initDropdown(key: string, dropdown: NgbDropdown) {\r\n this.dropdowns[key] = dropdown;\r\n }\r\n\r\n onContextMenuChange(event: NzFormatEmitEvent) {\r\n const dropdownKey = event.node?.key;\r\n\r\n Object.entries(this.dropdowns).forEach(([key, dropdown]) => {\r\n if (key !== dropdownKey && dropdown?.isOpen()) {\r\n dropdown.close();\r\n }\r\n });\r\n this.dropdowns[dropdownKey]?.toggle();\r\n }\r\n\r\n setSelectedNode(node: any) {\r\n const newSelectedNode = this.findNode(node, this.nodes);\r\n this.selectedNode = { ...newSelectedNode };\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","<nz-tree\r\n [nzBeforeDrop]=\"beforeDrop\"\r\n [nzDraggable]=\"draggable\"\r\n [nzCheckStrictly]=\"checkStrictly\"\r\n [nzCheckable]=\"checkable\"\r\n [nzCheckedKeys]=\"checkedKeys\"\r\n [nzData]=\"nodes\"\r\n [nzTreeTemplate]=\"treeTemplate\"\r\n [nzExpandedKeys]=\"expandedKeys\"\r\n [nzExpandedIcon]=\"expandedIconTemplate?.template || defaultIconTemplate\"\r\n (nzExpandChange)=\"onExpandedKeysChange($event)\"\r\n (nzCheckboxChange)=\"onCheckboxChange($event)\"\r\n (nzOnDrop)=\"onDrop($event)\"\r\n [nzNoAnimation]=\"noAnimation\"\r\n (nzContextMenu)=\"onContextMenuChange($event)\"\r\n/>\r\n<ng-template #treeTemplate let-node>\r\n <div\r\n [class.selected]=\"isNodeSelected(node)\"\r\n [title]=\"node.title\"\r\n (click)=\"onSelectedNodeChange(node)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $implicit: node }\" />\r\n\r\n <ng-template #nodeTemplate let-node>\r\n <div class=\"d-inline-flex align-items-center abp-ellipsis-inline\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customNodeTemplate ? customNodeTemplate?.template : defaultNodeTemplate;\r\n context: { $implicit: node }\r\n \"\r\n />\r\n </div>\r\n\r\n @if (menu) {\r\n <div\r\n #dropdown=\"ngbDropdown\"\r\n class=\"d-inline-block ms-1\"\r\n ngbDropdown\r\n placement=\"bottom\"\r\n container=\"body\"\r\n (abpInit)=\"initDropdown(node.key, dropdown)\"\r\n >\r\n <i\r\n class=\"fas fa-caret-down text-muted\"\r\n ngbDropdownToggle\r\n [class.dropdown-toggle]=\"false\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n <div ngbDropdownMenu>\r\n <ng-template *ngTemplateOutlet=\"menu; context: { $implicit: node }\" />\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultNodeTemplate let-node>\r\n <span>{{ node.title }}</span>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"\r\n /></i>\r\n</ng-template>\r\n\r\n<ng-template #minusIcon>\r\n <svg\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\"\r\n />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #plusIcon>\r\n <svg\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\"\r\n />\r\n </svg>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { TreeComponent } from './components/tree.component';\r\nimport { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';\r\nimport { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';\r\n\r\n@NgModule({\r\n imports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n exports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n declarations: [],\r\n})\r\nexport class TreeModule {}\r\n","export abstract class BaseNode {\r\n name?: string;\r\n displayName?: string;\r\n\r\n constructor(public id: string, public parentId: string | null) {}\r\n}\r\n\r\nexport class TreeNode<T extends BaseNode> extends BaseNode {\r\n title: string | undefined;\r\n key: string;\r\n icon: string | null = null;\r\n children: TreeNode<T>[] = [];\r\n isLeaf = true;\r\n checked = false;\r\n selected = false;\r\n expanded = false;\r\n selectable = true;\r\n disabled = false;\r\n disableCheckbox = false;\r\n parentNode?: TreeNode<T> | null;\r\n\r\n constructor(public entity: T, private nameResolver = ent => ent.displayName || ent.name) {\r\n super(entity.id, entity.parentId);\r\n this.key = entity.id;\r\n this.title = nameResolver(entity);\r\n }\r\n}\r\n\r\nexport class TreeAdapter<T extends BaseNode = BaseNode> {\r\n private tree: TreeNode<T>[];\r\n\r\n constructor(private list: T[] = []) {\r\n this.tree = createTreeFromList(this.list);\r\n }\r\n\r\n getList() {\r\n return this.list;\r\n }\r\n\r\n getTree() {\r\n return this.tree;\r\n }\r\n\r\n handleDrop({ key, parentNode }: TreeNode<T>) {\r\n const index = this.list.findIndex(({ id }) => id === key);\r\n this.list[index].parentId = parentNode ? parentNode.key : null;\r\n this.tree = createTreeFromList(this.list);\r\n }\r\n\r\n handleRemove({ key }: TreeNode<T>) {\r\n this.updateTreeFromList(this.list.filter(item => item.id !== key));\r\n }\r\n\r\n handleUpdate({ key, children }: { key: string; children: T[] }) {\r\n /**\r\n * When we need to update a node with new children, first we need to remove any descendant nodes.\r\n * If we remove immediate children and create a new tree, any other descendant nodes will be removed\r\n * and we won't need to recursively remove sub children.\r\n * Then, you simply add back the new children and create a new tree.\r\n */\r\n const listWithDescendantNodesRemoved = this.updateTreeFromList(\r\n this.list.filter(item => item.parentId !== key),\r\n );\r\n this.updateTreeFromList(listWithDescendantNodesRemoved.concat(children));\r\n }\r\n\r\n updateTreeFromList(list: T[]) {\r\n this.tree = createTreeFromList(list);\r\n this.list = createListFromTree(this.tree);\r\n return this.list;\r\n }\r\n}\r\n\r\n// UTILITY FUNCTIONS\r\n\r\nfunction createTreeFromList<T extends BaseNode>(list: T[]): TreeNode<T>[] {\r\n const map = createMapFromList(list);\r\n const tree: TreeNode<T>[] = [];\r\n\r\n list.forEach(row => {\r\n const parentId = row.parentId;\r\n const node = map.get(row.id);\r\n if (parentId) {\r\n const parent = map.get(parentId);\r\n if (!parent) return;\r\n parent.children.push(node);\r\n parent.isLeaf = false;\r\n } else {\r\n tree.push(node);\r\n }\r\n });\r\n return tree;\r\n}\r\n\r\nfunction createListFromTree<T extends BaseNode>(tree: TreeNode<T>[], list: T[] = []): T[] {\r\n tree.forEach(node => {\r\n list.push({ ...node.entity, parentId: node.parentId });\r\n if (node.children) createListFromTree(node.children, list);\r\n });\r\n\r\n return list;\r\n}\r\n\r\nfunction createMapFromList<T extends BaseNode>(\r\n list: T[],\r\n map = new Map<string, TreeNode<T>>(),\r\n): Map<string, TreeNode<T>> {\r\n list.forEach(row => map.set(row.id, new TreeNode(row)));\r\n\r\n return map;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@abp/ng.components",
3
- "version": "9.3.0-rc.1",
3
+ "version": "9.3.0-rc.2",
4
4
  "homepage": "https://abp.io",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/abpframework/abp.git"
8
8
  },
9
9
  "peerDependencies": {
10
- "@abp/ng.core": ">=9.3.0-rc.1",
11
- "@abp/ng.theme.shared": ">=9.3.0-rc.1"
10
+ "@abp/ng.core": ">=9.3.0-rc.2",
11
+ "@abp/ng.theme.shared": ">=9.3.0-rc.2"
12
12
  },
13
13
  "dependencies": {
14
14
  "chart.js": "^3.5.1",