@abp/ng.components 7.4.2 → 8.0.0-rc.1

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.
Files changed (95) hide show
  1. package/esm2022/chart.js/chart.component.mjs +5 -5
  2. package/esm2022/chart.js/chart.module.mjs +5 -5
  3. package/esm2022/extensible/abp-ng.components-extensible.mjs +5 -0
  4. package/esm2022/extensible/lib/components/abstract-actions/abstract-actions.component.mjs +25 -0
  5. package/esm2022/extensible/lib/components/date-time-picker/extensible-date-time-picker.component.mjs +111 -0
  6. package/esm2022/extensible/lib/components/extensible-form/extensible-form-prop.component.mjs +164 -0
  7. package/esm2022/extensible/lib/components/extensible-form/extensible-form.component.mjs +67 -0
  8. package/esm2022/extensible/lib/components/extensible-table/extensible-table.component.mjs +145 -0
  9. package/esm2022/extensible/lib/components/grid-actions/grid-actions.component.mjs +41 -0
  10. package/esm2022/extensible/lib/components/index.mjs +8 -0
  11. package/esm2022/extensible/lib/components/page-toolbar/page-toolbar.component.mjs +39 -0
  12. package/esm2022/extensible/lib/constants/extra-properties.mjs +2 -0
  13. package/esm2022/extensible/lib/directives/prop-data.directive.mjs +42 -0
  14. package/esm2022/extensible/lib/enums/components.mjs +2 -0
  15. package/esm2022/extensible/lib/enums/props.enum.mjs +2 -0
  16. package/esm2022/extensible/lib/extensible.module.mjs +80 -0
  17. package/esm2022/extensible/lib/models/actions.mjs +48 -0
  18. package/esm2022/extensible/lib/models/entity-actions.mjs +31 -0
  19. package/esm2022/extensible/lib/models/entity-props.mjs +45 -0
  20. package/esm2022/extensible/lib/models/form-props.mjs +76 -0
  21. package/esm2022/extensible/lib/models/internal/object-extensions.mjs +2 -0
  22. package/esm2022/extensible/lib/models/object-extensions.mjs +3 -0
  23. package/esm2022/extensible/lib/models/props.mjs +54 -0
  24. package/esm2022/extensible/lib/models/toolbar-actions.mjs +44 -0
  25. package/esm2022/extensible/lib/pipes/create-injector.pipe.mjs +37 -0
  26. package/esm2022/extensible/lib/services/extensible-form-prop.service.mjs +77 -0
  27. package/esm2022/extensible/lib/services/extensions.service.mjs +24 -0
  28. package/esm2022/extensible/lib/tokens/extensible-form-view-provider.token.mjs +3 -0
  29. package/esm2022/extensible/lib/tokens/extensions.token.mjs +12 -0
  30. package/esm2022/extensible/lib/utils/actions.util.mjs +9 -0
  31. package/esm2022/extensible/lib/utils/enum.util.mjs +42 -0
  32. package/esm2022/extensible/lib/utils/factory.util.mjs +4 -0
  33. package/esm2022/extensible/lib/utils/form-props.util.mjs +49 -0
  34. package/esm2022/extensible/lib/utils/localization.util.mjs +13 -0
  35. package/esm2022/extensible/lib/utils/props.util.mjs +14 -0
  36. package/esm2022/extensible/lib/utils/state.util.mjs +126 -0
  37. package/esm2022/extensible/lib/utils/typeahead.util.mjs +53 -0
  38. package/esm2022/extensible/lib/utils/validation.util.mjs +11 -0
  39. package/esm2022/extensible/public-api.mjs +27 -0
  40. package/esm2022/page/page-part.directive.mjs +6 -6
  41. package/esm2022/page/page-parts.component.mjs +10 -10
  42. package/esm2022/page/page.component.mjs +6 -6
  43. package/esm2022/page/page.module.mjs +10 -11
  44. package/esm2022/tree/lib/components/tree.component.mjs +6 -6
  45. package/esm2022/tree/lib/templates/expanded-icon-template.directive.mjs +5 -5
  46. package/esm2022/tree/lib/templates/tree-node-template.directive.mjs +5 -5
  47. package/esm2022/tree/lib/tree.module.mjs +5 -5
  48. package/extensible/README.md +3 -0
  49. package/extensible/index.d.ts +5 -0
  50. package/extensible/lib/components/abstract-actions/abstract-actions.component.d.ts +12 -0
  51. package/extensible/lib/components/date-time-picker/extensible-date-time-picker.component.d.ts +16 -0
  52. package/extensible/lib/components/extensible-form/extensible-form-prop.component.d.ts +44 -0
  53. package/extensible/lib/components/extensible-form/extensible-form.component.d.ts +23 -0
  54. package/extensible/lib/components/extensible-table/extensible-table.component.d.ts +52 -0
  55. package/extensible/lib/components/grid-actions/grid-actions.component.d.ts +13 -0
  56. package/extensible/lib/components/index.d.ts +7 -0
  57. package/extensible/lib/components/page-toolbar/page-toolbar.component.d.ts +20 -0
  58. package/extensible/lib/constants/extra-properties.d.ts +1 -0
  59. package/extensible/lib/directives/prop-data.directive.d.ts +19 -0
  60. package/extensible/lib/enums/components.d.ts +3 -0
  61. package/extensible/lib/enums/props.enum.d.ts +16 -0
  62. package/extensible/lib/extensible.module.d.ts +18 -0
  63. package/extensible/lib/models/actions.d.ts +38 -0
  64. package/extensible/lib/models/entity-actions.d.ts +24 -0
  65. package/extensible/lib/models/entity-props.d.ts +33 -0
  66. package/extensible/lib/models/form-props.d.ts +59 -0
  67. package/extensible/lib/models/internal/object-extensions.d.ts +86 -0
  68. package/extensible/lib/models/object-extensions.d.ts +2 -0
  69. package/extensible/lib/models/props.d.ts +45 -0
  70. package/extensible/lib/models/toolbar-actions.d.ts +38 -0
  71. package/extensible/lib/pipes/create-injector.pipe.d.ts +8 -0
  72. package/extensible/lib/services/extensible-form-prop.service.d.ts +13 -0
  73. package/extensible/lib/services/extensions.service.d.ts +14 -0
  74. package/extensible/lib/tokens/extensible-form-view-provider.token.d.ts +5 -0
  75. package/extensible/lib/tokens/extensions.token.d.ts +20 -0
  76. package/extensible/lib/utils/actions.util.d.ts +7 -0
  77. package/extensible/lib/utils/enum.util.d.ts +7 -0
  78. package/extensible/lib/utils/factory.util.d.ts +1 -0
  79. package/extensible/lib/utils/form-props.util.d.ts +3 -0
  80. package/extensible/lib/utils/localization.util.d.ts +3 -0
  81. package/extensible/lib/utils/props.util.d.ts +9 -0
  82. package/extensible/lib/utils/state.util.d.ts +5 -0
  83. package/extensible/lib/utils/typeahead.util.d.ts +11 -0
  84. package/extensible/lib/utils/validation.util.d.ts +3 -0
  85. package/extensible/public-api.d.ts +26 -0
  86. package/fesm2022/abp-ng.components-chart.js.mjs +8 -8
  87. package/fesm2022/abp-ng.components-chart.js.mjs.map +1 -1
  88. package/fesm2022/abp-ng.components-extensible.mjs +1371 -0
  89. package/fesm2022/abp-ng.components-extensible.mjs.map +1 -0
  90. package/fesm2022/abp-ng.components-page.mjs +29 -30
  91. package/fesm2022/abp-ng.components-page.mjs.map +1 -1
  92. package/fesm2022/abp-ng.components-tree.mjs +17 -17
  93. package/fesm2022/abp-ng.components-tree.mjs.map +1 -1
  94. package/package.json +10 -4
  95. package/page/page.module.d.ts +4 -5
@@ -0,0 +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/pipes/create-injector.pipe.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/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 { O } from 'ts-toolbelt';\r\nimport { ePropType } from '../enums/props.enum';\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> = O.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 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 { O } from 'ts-toolbelt';\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\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 class GroupedFormPropList<R = any> {\r\n public readonly items: GroupedFormPropItem[] = [];\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,\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;\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\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 );\r\n this.group = options.group;\r\n this.className = options.className;\r\n this.formText = options.formText;\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(injector: Injector, public readonly record: R) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n}\r\n\r\nexport type FormPropOptions<R = any> = O.Optional<\r\n O.Writable<FormProp<R>>,\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>;\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 Input,\r\n Optional,\r\n SkipSelf,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbDatepickerModule,\r\n NgbInputDatepicker,\r\n NgbTimeAdapter,\r\n NgbTimepicker,\r\n NgbTimepickerModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { DateTimeAdapter } from '@abp/ng.theme.shared';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleDateTimePicker',\r\n standalone: true,\r\n imports: [CommonModule, NgbDatepickerModule, ReactiveFormsModule, NgbTimepickerModule],\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 @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 constructor(public readonly cdRef: ChangeDetectorRef) {}\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\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 ePropType.Typeahead;\r\n } else {\r\n return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? ePropType.Hidden : undefined;\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 {\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 standalone: true,\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 { EXTENSIONS_FORM_PROP, EXTENSIONS_FORM_PROP_DATA } from './../../tokens/extensions.token';\r\nimport { ABP, CoreModule, TrackByService } 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 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 {\r\n DateAdapter,\r\n DisabledDirective,\r\n PasswordComponent,\r\n TimeAdapter,\r\n} 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 { eThemeSharedComponents } 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 {CreateInjectorPipe} from \"../../pipes/create-injector.pipe\";\r\n\r\n@Component({\r\n selector: 'abp-extensible-form-prop',\r\n templateUrl: './extensible-form-prop.component.html',\r\n standalone: true,\r\n imports: [\r\n CoreModule,\r\n ExtensibleDateTimePickerComponent,\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n ReactiveFormsModule,\r\n DisabledDirective,\r\n NgxValidateCoreModule,\r\n NgbTypeaheadModule,\r\n PasswordComponent,\r\n CreateInjectorPipe\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 @ViewChild('field') private fieldRef!: ElementRef<HTMLElement>;\r\n\r\n injectorForCustomComponent?: Injector;\r\n asterisk = '';\r\n containerClassName = 'mb-2';\r\n options$: Observable<ABP.Option<any>[]> = of([]);\r\n validators: ValidatorFn[] = [];\r\n readonly!: boolean;\r\n typeaheadModel: any;\r\n passwordKey = eThemeSharedComponents.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.first && this.fieldRef) {\r\n this.fieldRef.nativeElement.focus();\r\n this.cdRef.detectChanges();\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\r\n [ngSwitch]=\"getComponent(prop)\"\r\n *abpPermission=\"prop.permission; runChangeDetection: false\"\r\n>\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-2\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\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 </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"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 ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\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 <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\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 </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\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 </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-extensible-date-time-picker [prop]=\"prop\" [meridian]=\"meridian$ | async\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\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 </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"passwordinputgroup\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\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 </ng-template>\r\n\r\n <small *ngIf=\"prop.formText\" class=\"text-muted d-block\">{{\r\n prop.formText | abpLocalization\r\n }}</small>\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'\">\r\n <ng-container *ngIf=\"prop.displayTextResolver; else displayNameTemplate\">\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n </ng-container>\r\n <ng-template #displayNameTemplate> {{ prop.displayName | abpLocalization }}</ng-template>\r\n {{ asterisk }}\r\n </label>\r\n</ng-template>\r\n","import { LinkedList } from '@abp/utils';\r\nimport { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\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> = O.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 { O } from 'ts-toolbelt';\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\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\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 }\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\nexport type EntityActionOptions<R = any> = O.Optional<\r\n O.Writable<EntityAction<R>>,\r\n 'permission' | 'visible' | 'icon'\r\n>;\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 { O } from 'ts-toolbelt';\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\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?: string;\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\nexport type EntityPropOptions<R = any> = O.Optional<\r\n O.Writable<EntityProp<R>>,\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\n>;\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 { O } from 'ts-toolbelt';\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\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\nexport type ToolbarActionOptions<R = any> = O.Optional<\r\n O.Writable<ToolbarAction<R>>,\r\n 'permission' | 'visible' | 'icon' | 'btnClass'\r\n>;\r\n\r\nexport type ToolbarComponentOptions<R = any> = O.Optional<\r\n O.Writable<ToolbarComponent<R>>,\r\n 'permission' | 'visible' | 'action'\r\n>;\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 standalone: true,\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, 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 {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 standalone:true,\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\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 record!: R;\r\n\r\n public readonly cdRef = inject(ChangeDetectorRef)\r\n public readonly track = inject(TrackByService)\r\n private container = inject(ControlContainer)\r\n private extensions = inject(ExtensionsService);\r\n private identifier = inject(EXTENSIONS_IDENTIFIER)\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 return groupedFormPropList;\r\n }\r\n\r\n get form(): UntypedFormGroup {\r\n return (this.container ? this.container.control : {controls: {}}) as UntypedFormGroup;\r\n }\r\n\r\n get extraProperties(): UntypedFormGroup {\r\n return (this.form.controls.extraProperties || {controls: {}}) as UntypedFormGroup;\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"form\">\r\n\r\n <ng-container *ngFor=\"let groupedProp of groupedPropList.items\">\r\n <ng-container *abpPropData=\"let data; fromList: groupedProp.formPropList; withRecord: record\">\r\n\r\n <div *ngIf=\"groupedProp.group?.className; else withoutClassName\"\r\n [class]=\"groupedProp.group?.className\" [attr.data-name]=\"groupedProp.group?.className\">\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\" [ngTemplateOutletContext]=\"{groupedProp:groupedProp,data:data}\">\r\n </ng-container>\r\n </div>\r\n\r\n <ng-template #withoutClassName>\r\n <ng-container [ngTemplateOutlet]=\"propListTemplate\" [ngTemplateOutletContext]=\"{groupedProp:groupedProp,data:data}\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n </ng-container>\r\n</ng-container>\r\n\r\n\r\n<ng-template let-groupedProp=\"groupedProp\" let-data=\"data\" #propListTemplate>\r\n <ng-container *ngFor=\"let prop of groupedProp.formPropList; let first = first; trackBy: track.by('name')\">\r\n <ng-container *ngIf=\"prop.visible(data)\">\r\n <ng-container\r\n [formGroupName]=\"extraPropertiesKey\"\r\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\r\n >\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"\r\n [class]=\"prop.className\">\r\n </abp-extensible-form-prop>\r\n </ng-container>\r\n\r\n <ng-template #tempDefault>\r\n <abp-extensible-form-prop\r\n [class]=\"prop.className\"\r\n *ngIf=\"form.get(prop.name)\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n ></abp-extensible-form-prop>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\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 } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport {EllipsisDirective} from \"@abp/ng.theme.shared\";\r\n\r\n@Component({\r\n exportAs: 'abpGridActions',\r\n standalone: true,\r\n imports: [ CoreModule, NgbDropdownModule, EllipsisDirective],\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","<div *ngIf=\"actionList.length > 1\" 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 <ng-container\r\n *ngFor=\"let action of actionList; trackBy: trackByFn\"\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-container\r\n *ngIf=\"actionList.length === 1\"\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n></ng-container>\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon\"></i>\r\n <span *ngIf=\"action.icon; else ellipsis\">{{ action.text | abpLocalization }}</span>\r\n <ng-template #ellipsis>\r\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n </ng-template>\r\n</ng-template>\r\n\r\n<ng-template #btnTmp let-action>\r\n <ng-container *ngIf=\"action.visible(data)\">\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 </ng-container>\r\n</ng-template>\r\n","import {\r\n ABP,\r\n ConfigStateService,\r\n CoreModule,\r\n getShortDateFormat,\r\n getShortDateShortTimeFormat,\r\n getShortTimeFormat,\r\n ListService,\r\n PermissionService,\r\n} from '@abp/ng.core';\r\nimport { formatDate } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\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 { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\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} from '../../tokens/extensions.token';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\nimport { GridActionsComponent } from '../grid-actions/grid-actions.component';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n AbpVisibleDirective,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n} from '@abp/ng.theme.shared';\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 standalone: true,\r\n imports: [\r\n CoreModule,\r\n AbpVisibleDirective,\r\n NgxDatatableModule,\r\n GridActionsComponent,\r\n NgbTooltip,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n ],\r\n templateUrl: './extensible-table.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ExtensibleTableComponent<R = any> implements OnChanges {\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 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 locale = inject(LOCALE_ID);\r\n private config = inject(ConfigStateService);\r\n entityPropTypeClasses = inject(ENTITY_PROP_TYPE_CLASSES);\r\n #injector = inject(Injector);\r\n getInjected = this.#injector.get.bind(this.#injector);\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 const permissionService = this.#injector.get(PermissionService);\r\n this.hasAtLeastOnePermittedAction =\r\n 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 getDate(value: Date | undefined, format: string | undefined) {\r\n return value && format ? formatDate(value, format, this.locale) : '';\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.Date:\r\n return this.getDate(value, getShortDateFormat(this.config));\r\n case ePropType.Time:\r\n return this.getDate(value, getShortTimeFormat(this.config));\r\n case ePropType.DateTime:\r\n return this.getDate(value, getShortDateShortTimeFormat(this.config));\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 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","<ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n>\r\n <ngx-datatable-column\r\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\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 <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"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 <span\r\n *ngIf=\"prop.tooltip; else elseBlock\"\r\n [ngbTooltip]=\"prop.tooltip | abpLocalization\"\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 <ng-template #elseBlock>\r\n {{ column.name }}\r\n </ng-template>\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 <div\r\n *ngIf=\"!row['_' + prop.name].component; else component\"\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\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 </ng-container>\r\n <ng-template #component>\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 </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ng-container>\r\n</ngx-datatable>\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 { CoreModule } from '@abp/ng.core';\r\n\r\n@Component({\r\n exportAs: 'abpPageToolbar',\r\n selector: 'abp-page-toolbar',\r\n standalone: true,\r\n imports: [ CoreModule, CreateInjectorPipe],\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 <div\r\n class=\"col-auto px-0 pt-0 \"\r\n [class.pe-0]=\"last\"\r\n *ngFor=\"let action of actionList; trackBy: trackByFn; let last = last\"\r\n >\r\n <ng-container *ngIf=\"action.visible(data)\">\r\n <ng-container *abpPermission=\"action.permission;runChangeDetection: false\">\r\n <ng-container *ngIf=\"action.component as component; else button\">\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"\r\n ></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #button>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\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 let value = isExtraProperty ? extraProperties[name] : name in record ? record[name] : undefined;\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 { 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\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\ntype InferredPropDefaults<F> = 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> = 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> = 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 { 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 { 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((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 }, {} as Record<string, ObjectExtensions.ExtensionEnumDto>),\r\n ),\r\n );\r\n}\r\n\r\nexport function getObjectExtensionEntitiesFromStore(\r\n configState: ConfigStateService,\r\n moduleKey: string,\r\n) {\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>(\r\n configState: ConfigStateService,\r\n resource: string,\r\n) {\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) return acc;\r\n\r\n const properties = entity.properties;\r\n if (!properties) return acc;\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} 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];\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","i3","i4","i2"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  import { CoreModule } from '@abp/ng.core';
2
- import * as i3 from '@abp/ng.theme.shared';
2
+ import * as i2 from '@abp/ng.theme.shared';
3
3
  import { ThemeSharedModule } from '@abp/ng.theme.shared';
4
- import * as i2 from '@abp/ng.theme.shared/extensions';
5
- import { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';
6
- import * as i1 from '@angular/common';
7
- import { CommonModule } from '@angular/common';
8
4
  import * as i0 from '@angular/core';
9
5
  import { InjectionToken, Directive, Optional, Inject, Input, Component, ViewEncapsulation, ContentChild, NgModule } from '@angular/core';
10
6
  import { Observable, of } from 'rxjs';
7
+ import * as i1 from '@angular/common';
8
+ import * as i3 from '@abp/ng.components/extensible';
9
+ import { PageToolbarComponent } from '@abp/ng.components/extensible';
11
10
 
12
11
  const PAGE_RENDER_STRATEGY = new InjectionToken('PAGE_RENDER_STRATEGY');
13
12
  class PagePartDirective {
@@ -64,18 +63,18 @@ class PagePartDirective {
64
63
  this.subscription.unsubscribe();
65
64
  }
66
65
  }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagePartDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: PAGE_RENDER_STRATEGY, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
68
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagePartDirective, selector: "[abpPagePart]", inputs: { context: ["abpPagePartContext", "context"], abpPagePart: "abpPagePart" }, usesOnChanges: true, ngImport: i0 }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PagePartDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: PAGE_RENDER_STRATEGY, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
67
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: PagePartDirective, selector: "[abpPagePart]", inputs: { context: ["abpPagePartContext", "context"], abpPagePart: "abpPagePart" }, usesOnChanges: true, ngImport: i0 }); }
69
68
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagePartDirective, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PagePartDirective, decorators: [{
71
70
  type: Directive,
72
71
  args: [{ selector: '[abpPagePart]' }]
73
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
72
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
74
73
  type: Optional
75
74
  }, {
76
75
  type: Inject,
77
76
  args: [PAGE_RENDER_STRATEGY]
78
- }] }, { type: i0.Injector }]; }, propDecorators: { context: [{
77
+ }] }, { type: i0.Injector }], propDecorators: { context: [{
79
78
  type: Input,
80
79
  args: ['abpPagePartContext']
81
80
  }], abpPagePart: [{
@@ -89,10 +88,10 @@ var PageParts;
89
88
  PageParts["toolbar"] = "PageToolbarContainerComponent";
90
89
  })(PageParts || (PageParts = {}));
91
90
  class PageTitleContainerComponent {
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageTitleContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageTitleContainerComponent, selector: "abp-page-title-container", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageTitleContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: PageTitleContainerComponent, selector: "abp-page-title-container", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
94
93
  }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageTitleContainerComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageTitleContainerComponent, decorators: [{
96
95
  type: Component,
97
96
  args: [{
98
97
  selector: 'abp-page-title-container',
@@ -101,10 +100,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
101
100
  }]
102
101
  }] });
103
102
  class PageBreadcrumbContainerComponent {
104
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageBreadcrumbContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageBreadcrumbContainerComponent, selector: "abp-page-breadcrumb-container", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageBreadcrumbContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: PageBreadcrumbContainerComponent, selector: "abp-page-breadcrumb-container", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
106
105
  }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageBreadcrumbContainerComponent, decorators: [{
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageBreadcrumbContainerComponent, decorators: [{
108
107
  type: Component,
109
108
  args: [{
110
109
  selector: 'abp-page-breadcrumb-container',
@@ -113,10 +112,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
113
112
  }]
114
113
  }] });
115
114
  class PageToolbarContainerComponent {
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageToolbarContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageToolbarContainerComponent, selector: "abp-page-toolbar-container", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageToolbarContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: PageToolbarContainerComponent, selector: "abp-page-toolbar-container", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
118
117
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageToolbarContainerComponent, decorators: [{
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageToolbarContainerComponent, decorators: [{
120
119
  type: Component,
121
120
  args: [{
122
121
  selector: 'abp-page-toolbar-container',
@@ -150,10 +149,10 @@ class PageComponent {
150
149
  this.customBreadcrumb ||
151
150
  this.customToolbar);
152
151
  }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageComponent, selector: "abp-page", inputs: { title: "title", toolbar: "toolbar", breadcrumb: "breadcrumb" }, queries: [{ propertyName: "customTitle", first: true, predicate: PageTitleContainerComponent, descendants: true }, { propertyName: "customBreadcrumb", first: true, predicate: PageBreadcrumbContainerComponent, descendants: true }, { propertyName: "customToolbar", first: true, predicate: PageToolbarContainerComponent, descendants: true }], ngImport: i0, template: "<div class=\"row entry-row\" *ngIf=\"shouldRenderRow\">\r\n <ng-container *ngIf=\"customTitle; else defaultTitleTemplate\">\r\n <ng-content select=\"abp-page-title-container\"></ng-content>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customBreadcrumb; else defaultBreadcrumbTemplate\">\r\n <ng-content select=\"abp-page-breadcrumb-container\"></ng-content>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customToolbar; else defaultPageToolbarTemplate\">\r\n <ng-content select=\"abp-page-toolbar-container\"></ng-content>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #defaultTitleTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultBreadcrumbTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultPageToolbarTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "abp-breadcrumb" }, { kind: "directive", type: PagePartDirective, selector: "[abpPagePart]", inputs: ["abpPagePartContext", "abpPagePart"] }], encapsulation: i0.ViewEncapsulation.None }); }
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: PageComponent, selector: "abp-page", inputs: { title: "title", toolbar: "toolbar", breadcrumb: "breadcrumb" }, queries: [{ propertyName: "customTitle", first: true, predicate: PageTitleContainerComponent, descendants: true }, { propertyName: "customBreadcrumb", first: true, predicate: PageBreadcrumbContainerComponent, descendants: true }, { propertyName: "customToolbar", first: true, predicate: PageToolbarContainerComponent, descendants: true }], ngImport: i0, template: "<div class=\"row entry-row\" *ngIf=\"shouldRenderRow\">\r\n <ng-container *ngIf=\"customTitle; else defaultTitleTemplate\">\r\n <ng-content select=\"abp-page-title-container\"></ng-content>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customBreadcrumb; else defaultBreadcrumbTemplate\">\r\n <ng-content select=\"abp-page-breadcrumb-container\"></ng-content>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customToolbar; else defaultPageToolbarTemplate\">\r\n <ng-content select=\"abp-page-toolbar-container\"></ng-content>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #defaultTitleTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultBreadcrumbTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultPageToolbarTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BreadcrumbComponent, selector: "abp-breadcrumb" }, { kind: "component", type: i3.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { kind: "directive", type: PagePartDirective, selector: "[abpPagePart]", inputs: ["abpPagePartContext", "abpPagePart"] }], encapsulation: i0.ViewEncapsulation.None }); }
155
154
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageComponent, decorators: [{
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageComponent, decorators: [{
157
156
  type: Component,
158
157
  args: [{ selector: 'abp-page', encapsulation: ViewEncapsulation.None, template: "<div class=\"row entry-row\" *ngIf=\"shouldRenderRow\">\r\n <ng-container *ngIf=\"customTitle; else defaultTitleTemplate\">\r\n <ng-content select=\"abp-page-title-container\"></ng-content>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customBreadcrumb; else defaultBreadcrumbTemplate\">\r\n <ng-content select=\"abp-page-breadcrumb-container\"></ng-content>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customToolbar; else defaultPageToolbarTemplate\">\r\n <ng-content select=\"abp-page-toolbar-container\"></ng-content>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #defaultTitleTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultBreadcrumbTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultPageToolbarTemplate>\r\n <ng-container *ngIf=\"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 </ng-container>\r\n</ng-template>\r\n" }]
159
158
  }], propDecorators: { title: [{
@@ -181,24 +180,24 @@ const exportedDeclarations = [
181
180
  PagePartDirective,
182
181
  ];
183
182
  class PageModule {
184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
185
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PageModule, declarations: [PageComponent,
183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
184
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: PageModule, declarations: [PageComponent,
186
185
  PageTitleContainerComponent,
187
186
  PageBreadcrumbContainerComponent,
188
187
  PageToolbarContainerComponent,
189
- PagePartDirective], imports: [CommonModule, UiExtensionsModule, CoreModule, ThemeSharedModule], exports: [PageComponent,
188
+ PagePartDirective], imports: [CoreModule, ThemeSharedModule, PageToolbarComponent], exports: [PageComponent,
190
189
  PageTitleContainerComponent,
191
190
  PageBreadcrumbContainerComponent,
192
191
  PageToolbarContainerComponent,
193
- PagePartDirective, UiExtensionsModule] }); }
194
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageModule, imports: [CommonModule, UiExtensionsModule, CoreModule, ThemeSharedModule, UiExtensionsModule] }); }
192
+ PagePartDirective] }); }
193
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageModule, imports: [CoreModule, ThemeSharedModule, PageToolbarComponent] }); }
195
194
  }
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageModule, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PageModule, decorators: [{
197
196
  type: NgModule,
198
197
  args: [{
199
198
  declarations: [...exportedDeclarations],
200
- imports: [CommonModule, UiExtensionsModule, CoreModule, ThemeSharedModule],
201
- exports: [...exportedDeclarations, UiExtensionsModule],
199
+ imports: [CoreModule, ThemeSharedModule, PageToolbarComponent],
200
+ exports: [...exportedDeclarations],
202
201
  }]
203
202
  }] });
204
203