@abp/ng.identity 5.0.0-rc.1 → 5.1.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 (76) hide show
  1. package/README.md +3 -3
  2. package/config/package.json +5 -5
  3. package/{esm2015/abp-ng.identity.js → esm2020/abp-ng.identity.mjs} +0 -0
  4. package/{esm2015/config/abp-ng.identity-config.js → esm2020/config/abp-ng.identity-config.mjs} +0 -0
  5. package/{esm2015/config/enums/index.js → esm2020/config/enums/index.mjs} +1 -1
  6. package/{esm2015/config/enums/policy-names.js → esm2020/config/enums/policy-names.mjs} +1 -1
  7. package/{esm2015/config/enums/route-names.js → esm2020/config/enums/route-names.mjs} +1 -1
  8. package/{esm2015/config/identity-config.module.js → esm2020/config/identity-config.module.mjs} +5 -5
  9. package/{esm2015/config/providers/index.js → esm2020/config/providers/index.mjs} +1 -1
  10. package/{esm2015/config/providers/route.provider.js → esm2020/config/providers/route.provider.mjs} +1 -1
  11. package/{esm2015/config/public-api.js → esm2020/config/public-api.mjs} +1 -1
  12. package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +1 -1
  13. package/esm2020/lib/components/roles/roles.component.mjs +108 -0
  14. package/esm2020/lib/components/users/users.component.mjs +140 -0
  15. package/{esm2015/lib/defaults/default-roles-entity-actions.js → esm2020/lib/defaults/default-roles-entity-actions.mjs} +1 -1
  16. package/esm2020/lib/defaults/default-roles-entity-props.mjs +24 -0
  17. package/{esm2015/lib/defaults/default-roles-form-props.js → esm2020/lib/defaults/default-roles-form-props.mjs} +1 -1
  18. package/{esm2015/lib/defaults/default-roles-toolbar-actions.js → esm2020/lib/defaults/default-roles-toolbar-actions.mjs} +1 -1
  19. package/{esm2015/lib/defaults/default-users-entity-actions.js → esm2020/lib/defaults/default-users-entity-actions.mjs} +1 -1
  20. package/esm2020/lib/defaults/default-users-entity-props.mjs +35 -0
  21. package/{esm2015/lib/defaults/default-users-form-props.js → esm2020/lib/defaults/default-users-form-props.mjs} +1 -1
  22. package/{esm2015/lib/defaults/default-users-toolbar-actions.js → esm2020/lib/defaults/default-users-toolbar-actions.mjs} +1 -1
  23. package/{esm2015/lib/enums/components.js → esm2020/lib/enums/components.mjs} +1 -1
  24. package/{esm2015/lib/enums/index.js → esm2020/lib/enums/index.mjs} +1 -1
  25. package/{esm2015/lib/guards/extensions.guard.js → esm2020/lib/guards/extensions.guard.mjs} +4 -4
  26. package/{esm2015/lib/guards/index.js → esm2020/lib/guards/index.mjs} +1 -1
  27. package/esm2020/lib/identity-routing.module.mjs +53 -0
  28. package/{esm2015/lib/identity.module.js → esm2020/lib/identity.module.mjs} +5 -5
  29. package/esm2020/lib/models/config-options.mjs +2 -0
  30. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +1 -1
  31. package/esm2020/lib/tokens/extensions.token.mjs +35 -0
  32. package/{esm2015/lib/tokens/index.js → esm2020/lib/tokens/index.mjs} +1 -1
  33. package/{esm2015/proxy/abp-ng.identity-proxy.js → esm2020/proxy/abp-ng.identity-proxy.mjs} +0 -0
  34. package/{esm2015/proxy/lib/index.js → esm2020/proxy/lib/index.mjs} +1 -1
  35. package/{esm2015/proxy/lib/proxy/identity/identity-role.service.js → esm2020/proxy/lib/proxy/identity/identity-role.service.mjs} +4 -4
  36. package/{esm2015/proxy/lib/proxy/identity/identity-user-lookup.service.js → esm2020/proxy/lib/proxy/identity/identity-user-lookup.service.mjs} +4 -4
  37. package/{esm2015/proxy/lib/proxy/identity/identity-user.service.js → esm2020/proxy/lib/proxy/identity/identity-user.service.mjs} +4 -4
  38. package/{esm2015/proxy/lib/proxy/identity/index.js → esm2020/proxy/lib/proxy/identity/index.mjs} +1 -1
  39. package/esm2020/proxy/lib/proxy/identity/models.mjs +2 -0
  40. package/{esm2015/proxy/lib/proxy/users/index.js → esm2020/proxy/lib/proxy/users/index.mjs} +1 -1
  41. package/esm2020/proxy/lib/proxy/users/models.mjs +2 -0
  42. package/{esm2015/proxy/public-api.js → esm2020/proxy/public-api.mjs} +1 -1
  43. package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
  44. package/fesm2015/{abp-ng.identity-config.js → abp-ng.identity-config.mjs} +5 -5
  45. package/fesm2015/abp-ng.identity-config.mjs.map +1 -0
  46. package/fesm2015/{abp-ng.identity-proxy.js → abp-ng.identity-proxy.mjs} +11 -11
  47. package/fesm2015/abp-ng.identity-proxy.mjs.map +1 -0
  48. package/fesm2015/{abp-ng.identity.js → abp-ng.identity.mjs} +31 -39
  49. package/fesm2015/abp-ng.identity.mjs.map +1 -0
  50. package/fesm2020/abp-ng.identity-config.mjs +58 -0
  51. package/fesm2020/abp-ng.identity-config.mjs.map +1 -0
  52. package/fesm2020/abp-ng.identity-proxy.mjs +144 -0
  53. package/fesm2020/abp-ng.identity-proxy.mjs.map +1 -0
  54. package/fesm2020/abp-ng.identity.mjs +636 -0
  55. package/fesm2020/abp-ng.identity.mjs.map +1 -0
  56. package/package.json +38 -9
  57. package/proxy/package.json +5 -5
  58. package/proxy/src/lib/proxy/README.md +17 -0
  59. package/bundles/abp-ng.identity-config.umd.js +0 -89
  60. package/bundles/abp-ng.identity-config.umd.js.map +0 -1
  61. package/bundles/abp-ng.identity-proxy.umd.js +0 -179
  62. package/bundles/abp-ng.identity-proxy.umd.js.map +0 -1
  63. package/bundles/abp-ng.identity.umd.js +0 -1024
  64. package/bundles/abp-ng.identity.umd.js.map +0 -1
  65. package/esm2015/lib/components/roles/roles.component.js +0 -112
  66. package/esm2015/lib/components/users/users.component.js +0 -144
  67. package/esm2015/lib/defaults/default-roles-entity-props.js +0 -24
  68. package/esm2015/lib/defaults/default-users-entity-props.js +0 -35
  69. package/esm2015/lib/identity-routing.module.js +0 -53
  70. package/esm2015/lib/models/config-options.js +0 -2
  71. package/esm2015/lib/tokens/extensions.token.js +0 -35
  72. package/esm2015/proxy/lib/proxy/identity/models.js +0 -2
  73. package/esm2015/proxy/lib/proxy/users/models.js +0 -2
  74. package/fesm2015/abp-ng.identity-config.js.map +0 -1
  75. package/fesm2015/abp-ng.identity-proxy.js.map +0 -1
  76. package/fesm2015/abp-ng.identity.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"abp-ng.identity.umd.js","sources":["../../../../packages/identity/src/lib/components/roles/roles.component.ts","../../../../packages/identity/src/lib/components/roles/roles.component.html","../../../../packages/identity/src/lib/components/users/users.component.ts","../../../../packages/identity/src/lib/components/users/users.component.html","../../../../packages/identity/src/lib/defaults/default-roles-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-roles-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-form-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-props.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../packages/identity/src/lib/defaults/default-users-form-props.ts","../../../../packages/identity/src/lib/defaults/default-users-toolbar-actions.ts","../../../../packages/identity/src/lib/tokens/extensions.token.ts","../../../../packages/identity/src/lib/guards/extensions.guard.ts","../../../../packages/identity/src/lib/identity-routing.module.ts","../../../../packages/identity/src/lib/identity.module.ts","../../../../packages/identity/src/abp-ng.identity.ts"],"sourcesContent":["import { ListService, PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core';\nimport { IdentityRoleDto, IdentityRoleService } from '@abp/ng.identity/proxy';\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\nimport {\n EXTENSIONS_IDENTIFIER,\n FormPropData,\n generateFormFromProps,\n} from '@abp/ng.theme.shared/extensions';\nimport { Component, Injector, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { finalize } from 'rxjs/operators';\nimport { eIdentityComponents } from '../../enums/components';\n\n@Component({\n selector: 'abp-roles',\n templateUrl: './roles.component.html',\n providers: [\n ListService,\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: eIdentityComponents.Roles,\n },\n ],\n})\nexport class RolesComponent implements OnInit {\n data: PagedResultDto<IdentityRoleDto> = { items: [], totalCount: 0 };\n\n form: FormGroup;\n\n selected: IdentityRoleDto;\n\n isModalVisible: boolean;\n\n visiblePermissions = false;\n\n providerKey: string;\n\n modalBusy = false;\n\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\n\n onVisiblePermissionChange = event => {\n this.visiblePermissions = event;\n };\n\n constructor(\n public readonly list: ListService<PagedAndSortedResultRequestDto>,\n protected confirmationService: ConfirmationService,\n protected injector: Injector,\n protected service: IdentityRoleService,\n ) {}\n\n ngOnInit() {\n this.hookToQuery();\n }\n\n buildForm() {\n const data = new FormPropData(this.injector, this.selected);\n this.form = generateFormFromProps(data);\n }\n\n openModal() {\n this.buildForm();\n this.isModalVisible = true;\n }\n\n add() {\n this.selected = {} as IdentityRoleDto;\n this.openModal();\n }\n\n edit(id: string) {\n this.service.get(id).subscribe(res => {\n this.selected = res;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n this.modalBusy = true;\n\n const { id } = this.selected;\n (id\n ? this.service.update(id, { ...this.selected, ...this.form.value })\n : this.service.create(this.form.value)\n )\n .pipe(finalize(() => (this.modalBusy = false)))\n .subscribe(() => {\n this.isModalVisible = false;\n this.list.get();\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Confirmation.Status) => {\n if (status === Confirmation.Status.confirm) {\n this.service.delete(id).subscribe(() => this.list.get());\n }\n });\n }\n\n private hookToQuery() {\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\n }\n\n openPermissionsModal(providerKey: string) {\n this.providerKey = providerKey;\n setTimeout(() => {\n this.visiblePermissions = true;\n }, 0);\n }\n\n sort(data) {\n const { prop, dir } = data.sorts[0];\n this.list.sortKey = prop;\n this.list.sortOrder = dir;\n }\n}\n","<div id=\"identity-roles-wrapper\" class=\"card\">\n <div class=\"card-header\">\n <div class=\"row\">\n <div class=\"col col-md-6\">\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\n </div>\n <div class=\"text-end col col-md-6\">\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\n </div>\n </div>\n </div>\n\n <div class=\"card-body\">\n <abp-extensible-table\n [data]=\"data.items\"\n [recordsTotal]=\"data.totalCount\"\n [list]=\"list\"\n ></abp-extensible-table>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\n <ng-template #abpHeader>\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\n </button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\n 'AbpIdentity::Save' | abpLocalization\n }}</abp-button>\n </ng-template>\n</abp-modal>\n\n<abp-permission-management\n #abpPermissionManagement=\"abpPermissionManagement\"\n *abpReplaceableTemplate=\"\n {\n inputs: {\n providerName: { value: 'R' },\n providerKey: { value: providerKey },\n visible: { value: visiblePermissions, twoWay: true },\n hideBadges: { value: true }\n },\n outputs: { visibleChange: onVisiblePermissionChange },\n componentKey: permissionManagementKey\n };\n let init = initTemplate\n \"\n (abpInit)=\"init(abpPermissionManagement)\"\n>\n</abp-permission-management>\n","import { ListService, PagedResultDto } from '@abp/ng.core';\nimport {\n GetIdentityUsersInput,\n IdentityRoleDto,\n IdentityUserDto,\n IdentityUserService,\n} from '@abp/ng.identity/proxy';\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\nimport {\n EXTENSIONS_IDENTIFIER,\n FormPropData,\n generateFormFromProps,\n} from '@abp/ng.theme.shared/extensions';\nimport {\n Component,\n Injector,\n OnInit,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\nimport { finalize, switchMap, tap } from 'rxjs/operators';\nimport { eIdentityComponents } from '../../enums/components';\n\n@Component({\n selector: 'abp-users',\n templateUrl: './users.component.html',\n providers: [\n ListService,\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: eIdentityComponents.Users,\n },\n ],\n})\nexport class UsersComponent implements OnInit {\n data: PagedResultDto<IdentityUserDto> = { items: [], totalCount: 0 };\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef<any>;\n\n form: FormGroup;\n\n selected: IdentityUserDto;\n\n selectedUserRoles: IdentityRoleDto[];\n\n roles: IdentityRoleDto[];\n\n visiblePermissions = false;\n\n providerKey: string;\n\n isModalVisible: boolean;\n\n modalBusy = false;\n\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\n\n trackByFn: TrackByFunction<AbstractControl> = (index, item) => Object.keys(item)[0] || index;\n\n onVisiblePermissionChange = event => {\n this.visiblePermissions = event;\n };\n\n get roleGroups(): FormGroup[] {\n return ((this.form.get('roleNames') as FormArray)?.controls as FormGroup[]) || [];\n }\n\n constructor(\n public readonly list: ListService<GetIdentityUsersInput>,\n protected confirmationService: ConfirmationService,\n protected service: IdentityUserService,\n protected fb: FormBuilder,\n protected injector: Injector,\n ) {}\n\n ngOnInit() {\n this.hookToQuery();\n }\n\n buildForm() {\n const data = new FormPropData(this.injector, this.selected);\n this.form = generateFormFromProps(data);\n\n this.service.getAssignableRoles().subscribe(({ items }) => {\n this.roles = items;\n this.form.addControl(\n 'roleNames',\n this.fb.array(\n this.roles.map(role =>\n this.fb.group({\n [role.name]: [\n this.selected.id\n ? !!this.selectedUserRoles?.find(userRole => userRole.id === role.id)\n : role.isDefault,\n ],\n }),\n ),\n ),\n );\n });\n }\n\n openModal() {\n this.buildForm();\n this.isModalVisible = true;\n }\n\n add() {\n this.selected = {} as IdentityUserDto;\n this.selectedUserRoles = [] as IdentityRoleDto[];\n this.openModal();\n }\n\n edit(id: string) {\n this.service\n .get(id)\n .pipe(\n tap(user => (this.selected = user)),\n switchMap(() => this.service.getRoles(id)),\n )\n .subscribe(userRole => {\n this.selectedUserRoles = userRole.items || [];\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid || this.modalBusy) return;\n this.modalBusy = true;\n\n const { roleNames = [] } = this.form.value;\n const mappedRoleNames =\n roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]) ||\n [];\n\n const { id } = this.selected;\n\n (id\n ? this.service.update(id, {\n ...this.selected,\n ...this.form.value,\n roleNames: mappedRoleNames,\n })\n : this.service.create({ ...this.form.value, roleNames: mappedRoleNames })\n )\n .pipe(finalize(() => (this.modalBusy = false)))\n .subscribe(() => {\n this.isModalVisible = false;\n this.list.get();\n });\n }\n\n delete(id: string, userName: string) {\n this.confirmationService\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [userName],\n })\n .subscribe((status: Confirmation.Status) => {\n if (status === Confirmation.Status.confirm) {\n this.service.delete(id).subscribe(() => this.list.get());\n }\n });\n }\n\n sort(data) {\n const { prop, dir } = data.sorts[0];\n this.list.sortKey = prop;\n this.list.sortOrder = dir;\n }\n\n private hookToQuery() {\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\n }\n\n openPermissionsModal(providerKey: string) {\n this.providerKey = providerKey;\n setTimeout(() => {\n this.visiblePermissions = true;\n }, 0);\n }\n}\n","<div id=\"identity-roles-wrapper\" class=\"card\">\n <div class=\"card-header\">\n <div class=\"row\">\n <div class=\"col col-md-6\">\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\n </div>\n <div class=\"text-end col col-md-6\">\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\n </div>\n </div>\n </div>\n <div class=\"card-body\">\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\n <div class=\"input-group\">\n <input\n type=\"search\"\n class=\"form-control\"\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\n [(ngModel)]=\"list.filter\"\n />\n </div>\n </div>\n\n <abp-extensible-table\n [data]=\"data.items\"\n [recordsTotal]=\"data.totalCount\"\n [list]=\"list\"\n ></abp-extensible-table>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\n <ng-template #abpHeader>\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <ng-template #loaderRef\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\n ></ng-template>\n\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\n <li ngbNavItem>\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\n <ng-template ngbNavContent>\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\n </ng-template>\n </li>\n\n <li ngbNavItem>\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\n <ng-template ngbNavContent>\n <div\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\n class=\"form-check mb-2\"\n >\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n [attr.id]=\"'roles-' + i\"\n [formControl]=\"roleGroup.controls[roles[i].name]\"\n />\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\n </div>\n </ng-template>\n </li>\n </ul>\n\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\n </button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\n 'AbpIdentity::Save' | abpLocalization\n }}</abp-button>\n </ng-template>\n</abp-modal>\n\n<abp-permission-management\n #abpPermissionManagement=\"abpPermissionManagement\"\n *abpReplaceableTemplate=\"\n {\n inputs: {\n providerName: { value: 'U' },\n providerKey: { value: providerKey },\n visible: { value: visiblePermissions, twoWay: true }\n },\n outputs: { visibleChange: onVisiblePermissionChange },\n componentKey: permissionManagementKey\n };\n let init = initTemplate\n \"\n (abpInit)=\"init(abpPermissionManagement)\"\n>\n</abp-permission-management>\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\nimport { RolesComponent } from '../components/roles/roles.component';\n\nexport const DEFAULT_ROLES_ENTITY_ACTIONS = EntityAction.createMany<IdentityRoleDto>([\n {\n text: 'AbpIdentity::Edit',\n action: data => {\n const component = data.getInjected(RolesComponent);\n component.edit(data.record.id);\n },\n permission: 'AbpIdentity.Roles.Update',\n },\n {\n text: 'AbpIdentity::Permissions',\n action: data => {\n const component = data.getInjected(RolesComponent);\n component.openPermissionsModal(data.record.name);\n },\n permission: 'AbpIdentity.Roles.ManagePermissions',\n },\n {\n text: 'AbpIdentity::Delete',\n action: data => {\n const component = data.getInjected(RolesComponent);\n component.delete(data.record.id, data.record.name);\n },\n permission: 'AbpIdentity.Roles.Delete',\n visible: data => !data.record.isStatic,\n },\n]);\n","import { LocalizationService } from '@abp/ng.core';\nimport { IdentityRoleDto } from '@abp/ng.identity/proxy';\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\nimport { of } from 'rxjs';\n\nexport const DEFAULT_ROLES_ENTITY_PROPS = EntityProp.createMany<IdentityRoleDto>([\n {\n type: ePropType.String,\n name: 'name',\n displayName: 'AbpIdentity::RoleName',\n sortable: true,\n valueResolver: data => {\n const l10n = data.getInjected(LocalizationService);\n const t = l10n.instant.bind(l10n);\n const { isDefault, isPublic, name } = data.record;\n\n return of(\n name +\n (isDefault\n ? `<span class=\"badge rounded-pill bg-success ms-1\">${t(\n 'AbpIdentity::DisplayName:IsDefault',\n )}</span>`\n : '') +\n (isPublic\n ? `<span class=\"badge rounded-pill bg-info ms-1\">${t(\n 'AbpIdentity::DisplayName:IsPublic',\n )}</span>`\n : ''),\n );\n },\n },\n]);\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\nimport { ePropType, FormProp, PropData } from '@abp/ng.theme.shared/extensions';\nimport { Validators } from '@angular/forms';\n\nexport const DEFAULT_ROLES_CREATE_FORM_PROPS = FormProp.createMany<IdentityRoleDto>([\n {\n type: ePropType.String,\n name: 'name',\n displayName: 'AbpIdentity::RoleName',\n id: 'role-name',\n disabled: (data: PropData<IdentityRoleDto>) => data.record && data.record.isStatic,\n validators: () => [Validators.required],\n },\n {\n type: ePropType.Boolean,\n name: 'isDefault',\n displayName: 'AbpIdentity::DisplayName:IsDefault',\n id: 'role-is-default',\n defaultValue: false,\n },\n {\n type: ePropType.Boolean,\n name: 'isPublic',\n displayName: 'AbpIdentity::DisplayName:IsPublic',\n id: 'role-is-public',\n defaultValue: false,\n },\n]);\n\nexport const DEFAULT_ROLES_EDIT_FORM_PROPS = DEFAULT_ROLES_CREATE_FORM_PROPS;\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\nimport { RolesComponent } from '../components/roles/roles.component';\n\nexport const DEFAULT_ROLES_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityRoleDto[]>([\n {\n text: 'AbpIdentity::NewRole',\n action: data => {\n const component = data.getInjected(RolesComponent);\n component.add();\n },\n permission: 'AbpIdentity.Roles.Create',\n icon: 'fa fa-plus',\n },\n]);\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\nimport { UsersComponent } from '../components/users/users.component';\n\nexport const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany<IdentityUserDto>([\n {\n text: 'AbpIdentity::Edit',\n action: data => {\n const component = data.getInjected(UsersComponent);\n component.edit(data.record.id);\n },\n permission: 'AbpIdentity.Users.Update',\n },\n {\n text: 'AbpIdentity::Permissions',\n action: data => {\n const component = data.getInjected(UsersComponent);\n component.openPermissionsModal(data.record.id);\n },\n permission: 'AbpIdentity.Users.ManagePermissions',\n },\n {\n text: 'AbpIdentity::Delete',\n action: data => {\n const component = data.getInjected(UsersComponent);\n component.delete(data.record.id, data.record.name || data.record.userName);\n },\n permission: 'AbpIdentity.Users.Delete',\n },\n]);\n","import { LocalizationService } from '@abp/ng.core';\nimport { IdentityUserDto } from '@abp/ng.identity/proxy';\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\nimport { of } from 'rxjs';\n\nexport const DEFAULT_USERS_ENTITY_PROPS = EntityProp.createMany<IdentityUserDto>([\n {\n type: ePropType.String,\n name: 'userName',\n displayName: 'AbpIdentity::UserName',\n sortable: true,\n columnWidth: 250,\n valueResolver: data => {\n const l10n = data.getInjected(LocalizationService);\n const t = l10n.instant.bind(l10n);\n\n const inactiveIcon = `<i title=\"${t(\n 'AbpIdentity::ThisUserIsNotActiveMessage',\n )}\" class=\"fas fa-ban text-danger me-1\"></i>`;\n\n return of(\n `\n ${!data.record.isActive ? inactiveIcon : ''}\n <span class=\"${!data.record.isActive ? 'text-muted' : ''}\">${data.record.userName}</span>`,\n );\n },\n },\n {\n type: ePropType.String,\n name: 'email',\n displayName: 'AbpIdentity::EmailAddress',\n sortable: true,\n columnWidth: 250,\n },\n {\n type: ePropType.String,\n name: 'phoneNumber',\n displayName: 'AbpIdentity::PhoneNumber',\n sortable: true,\n columnWidth: 250,\n },\n]);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\nimport { getPasswordValidators } from '@abp/ng.theme.shared';\nimport { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';\nimport { Validators } from '@angular/forms';\n\nexport const DEFAULT_USERS_CREATE_FORM_PROPS = FormProp.createMany<IdentityUserDto>([\n {\n type: ePropType.String,\n name: 'userName',\n displayName: 'AbpIdentity::UserName',\n id: 'user-name',\n validators: () => [Validators.required, Validators.maxLength(256)],\n },\n {\n type: ePropType.Password,\n name: 'password',\n displayName: 'AbpIdentity::Password',\n id: 'password',\n autocomplete: 'new-password',\n validators: data => [Validators.required, ...getPasswordValidators({ get: data.getInjected })],\n },\n {\n type: ePropType.String,\n name: 'name',\n displayName: 'AbpIdentity::DisplayName:Name',\n id: 'name',\n validators: () => [Validators.maxLength(64)],\n },\n {\n type: ePropType.String,\n name: 'surname',\n displayName: 'AbpIdentity::DisplayName:Surname',\n id: 'surname',\n validators: () => [Validators.maxLength(64)],\n },\n {\n type: ePropType.Email,\n name: 'email',\n displayName: 'AbpIdentity::EmailAddress',\n id: 'email',\n validators: () => [Validators.required, Validators.maxLength(256), Validators.email],\n },\n {\n type: ePropType.String,\n name: 'phoneNumber',\n displayName: 'AbpIdentity::PhoneNumber',\n id: 'phone-number',\n validators: () => [Validators.maxLength(16)],\n },\n {\n type: ePropType.Boolean,\n name: 'isActive',\n displayName: 'AbpIdentity::DisplayName:IsActive',\n id: 'active-checkbox',\n defaultValue: true,\n },\n {\n type: ePropType.Boolean,\n name: 'lockoutEnabled',\n displayName: 'AbpIdentity::DisplayName:LockoutEnabled',\n id: 'lockout-checkbox',\n defaultValue: true,\n },\n]);\n\nexport const DEFAULT_USERS_EDIT_FORM_PROPS = DEFAULT_USERS_CREATE_FORM_PROPS.filter(\n prop => prop.name !== 'password',\n);\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\nimport { UsersComponent } from '../components/users/users.component';\n\nexport const DEFAULT_USERS_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityUserDto[]>([\n {\n text: 'AbpIdentity::NewUser',\n action: data => {\n const component = data.getInjected(UsersComponent);\n component.add();\n },\n permission: 'AbpIdentity.Users.Create',\n icon: 'fa fa-plus',\n },\n]);\n","import { IdentityRoleDto, IdentityUserDto } from '@abp/ng.identity/proxy';\nimport {\n CreateFormPropContributorCallback,\n EditFormPropContributorCallback,\n EntityActionContributorCallback,\n EntityPropContributorCallback,\n ToolbarActionContributorCallback,\n} from '@abp/ng.theme.shared/extensions';\nimport { InjectionToken } from '@angular/core';\nimport { DEFAULT_ROLES_ENTITY_ACTIONS } from '../defaults/default-roles-entity-actions';\nimport { DEFAULT_ROLES_ENTITY_PROPS } from '../defaults/default-roles-entity-props';\nimport {\n DEFAULT_ROLES_CREATE_FORM_PROPS,\n DEFAULT_ROLES_EDIT_FORM_PROPS,\n} from '../defaults/default-roles-form-props';\nimport { DEFAULT_ROLES_TOOLBAR_ACTIONS } from '../defaults/default-roles-toolbar-actions';\nimport { DEFAULT_USERS_ENTITY_ACTIONS } from '../defaults/default-users-entity-actions';\nimport { DEFAULT_USERS_ENTITY_PROPS } from '../defaults/default-users-entity-props';\nimport {\n DEFAULT_USERS_CREATE_FORM_PROPS,\n DEFAULT_USERS_EDIT_FORM_PROPS,\n} from '../defaults/default-users-form-props';\nimport { DEFAULT_USERS_TOOLBAR_ACTIONS } from '../defaults/default-users-toolbar-actions';\nimport { eIdentityComponents } from '../enums/components';\n\nexport const DEFAULT_IDENTITY_ENTITY_ACTIONS = {\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_ACTIONS,\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_ACTIONS,\n};\n\nexport const DEFAULT_IDENTITY_TOOLBAR_ACTIONS = {\n [eIdentityComponents.Roles]: DEFAULT_ROLES_TOOLBAR_ACTIONS,\n [eIdentityComponents.Users]: DEFAULT_USERS_TOOLBAR_ACTIONS,\n};\n\nexport const DEFAULT_IDENTITY_ENTITY_PROPS = {\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_PROPS,\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_PROPS,\n};\n\nexport const DEFAULT_IDENTITY_CREATE_FORM_PROPS = {\n [eIdentityComponents.Roles]: DEFAULT_ROLES_CREATE_FORM_PROPS,\n [eIdentityComponents.Users]: DEFAULT_USERS_CREATE_FORM_PROPS,\n};\n\nexport const DEFAULT_IDENTITY_EDIT_FORM_PROPS = {\n [eIdentityComponents.Roles]: DEFAULT_ROLES_EDIT_FORM_PROPS,\n [eIdentityComponents.Users]: DEFAULT_USERS_EDIT_FORM_PROPS,\n};\n\nexport const IDENTITY_ENTITY_ACTION_CONTRIBUTORS = new InjectionToken<EntityActionContributors>(\n 'IDENTITY_ENTITY_ACTION_CONTRIBUTORS',\n);\n\nexport const IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS = new InjectionToken<ToolbarActionContributors>(\n 'IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS',\n);\n\nexport const IDENTITY_ENTITY_PROP_CONTRIBUTORS = new InjectionToken<EntityPropContributors>(\n 'IDENTITY_ENTITY_PROP_CONTRIBUTORS',\n);\n\nexport const IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS =\n new InjectionToken<CreateFormPropContributors>('IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS');\n\nexport const IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken<EditFormPropContributors>(\n 'IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS',\n);\n\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\ntype EntityActionContributors = Partial<{\n [eIdentityComponents.Roles]: EntityActionContributorCallback<IdentityRoleDto>[];\n [eIdentityComponents.Users]: EntityActionContributorCallback<IdentityUserDto>[];\n}>;\ntype ToolbarActionContributors = Partial<{\n [eIdentityComponents.Roles]: ToolbarActionContributorCallback<IdentityRoleDto[]>[];\n [eIdentityComponents.Users]: ToolbarActionContributorCallback<IdentityUserDto[]>[];\n}>;\ntype EntityPropContributors = Partial<{\n [eIdentityComponents.Roles]: EntityPropContributorCallback<IdentityRoleDto>[];\n [eIdentityComponents.Users]: EntityPropContributorCallback<IdentityUserDto>[];\n}>;\ntype CreateFormPropContributors = Partial<{\n [eIdentityComponents.Roles]: CreateFormPropContributorCallback<IdentityRoleDto>[];\n [eIdentityComponents.Users]: CreateFormPropContributorCallback<IdentityUserDto>[];\n}>;\ntype EditFormPropContributors = Partial<{\n [eIdentityComponents.Roles]: EditFormPropContributorCallback<IdentityRoleDto>[];\n [eIdentityComponents.Users]: EditFormPropContributorCallback<IdentityUserDto>[];\n}>;\n","import { ConfigStateService } from '@abp/ng.core';\nimport {\n ExtensionsService,\n getObjectExtensionEntitiesFromStore,\n mapEntitiesToContributors,\n mergeWithDefaultActions,\n mergeWithDefaultProps,\n} from '@abp/ng.theme.shared/extensions';\nimport { Injectable, Injector } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map, mapTo, tap } from 'rxjs/operators';\nimport { eIdentityComponents } from '../enums/components';\nimport {\n IdentityCreateFormPropContributors,\n IdentityEditFormPropContributors,\n IdentityEntityActionContributors,\n IdentityEntityPropContributors,\n IdentityToolbarActionContributors,\n} from '../models/config-options';\nimport {\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\n DEFAULT_IDENTITY_ENTITY_PROPS,\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\n} from '../tokens/extensions.token';\n\n@Injectable()\nexport class IdentityExtensionsGuard implements CanActivate {\n constructor(private injector: Injector) {}\n\n canActivate(): Observable<boolean> {\n const extensions: ExtensionsService = this.injector.get(ExtensionsService);\n const actionContributors: IdentityEntityActionContributors =\n this.injector.get(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, null) || {};\n const toolbarContributors: IdentityToolbarActionContributors =\n this.injector.get(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\n const propContributors: IdentityEntityPropContributors =\n this.injector.get(IDENTITY_ENTITY_PROP_CONTRIBUTORS, null) || {};\n const createFormContributors: IdentityCreateFormPropContributors =\n this.injector.get(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, null) || {};\n const editFormContributors: IdentityEditFormPropContributors =\n this.injector.get(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\n\n const configState = this.injector.get(ConfigStateService);\n return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe(\n map(entities => ({\n [eIdentityComponents.Roles]: entities.Role,\n [eIdentityComponents.Users]: entities.User,\n })),\n mapEntitiesToContributors(configState, 'AbpIdentity'),\n tap(objectExtensionContributors => {\n mergeWithDefaultActions(\n extensions.entityActions,\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\n actionContributors,\n );\n mergeWithDefaultActions(\n extensions.toolbarActions,\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\n toolbarContributors,\n );\n mergeWithDefaultProps(\n extensions.entityProps,\n DEFAULT_IDENTITY_ENTITY_PROPS,\n objectExtensionContributors.prop,\n propContributors,\n );\n mergeWithDefaultProps(\n extensions.createFormProps,\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\n objectExtensionContributors.createForm,\n createFormContributors,\n );\n mergeWithDefaultProps(\n extensions.editFormProps,\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\n objectExtensionContributors.editForm,\n editFormContributors,\n );\n }),\n mapTo(true),\n );\n }\n}\n","import {\n AuthGuard,\n DynamicLayoutComponent,\n PermissionGuard,\n ReplaceableComponents,\n ReplaceableRouteContainerComponent,\n} from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { UsersComponent } from './components/users/users.component';\nimport { eIdentityComponents } from './enums/components';\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\n {\n path: '',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard, IdentityExtensionsGuard],\n children: [\n {\n path: 'roles',\n component: ReplaceableRouteContainerComponent,\n data: {\n requiredPolicy: 'AbpIdentity.Roles',\n replaceableComponent: {\n key: eIdentityComponents.Roles,\n defaultComponent: RolesComponent,\n } as ReplaceableComponents.RouteData<RolesComponent>,\n },\n },\n {\n path: 'users',\n component: ReplaceableRouteContainerComponent,\n data: {\n requiredPolicy: 'AbpIdentity.Users',\n replaceableComponent: {\n key: eIdentityComponents.Users,\n defaultComponent: UsersComponent,\n } as ReplaceableComponents.RouteData<UsersComponent>,\n },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class IdentityRoutingModule {}\n","import { CoreModule, LazyModuleFactory } from '@abp/ng.core';\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';\nimport { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\nimport { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { UsersComponent } from './components/users/users.component';\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\nimport { IdentityRoutingModule } from './identity-routing.module';\nimport { IdentityConfigOptions } from './models/config-options';\nimport {\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\n} from './tokens/extensions.token';\n\n@NgModule({\n declarations: [RolesComponent, UsersComponent],\n exports: [RolesComponent, UsersComponent],\n imports: [\n CoreModule,\n IdentityRoutingModule,\n NgbNavModule,\n ThemeSharedModule,\n UiExtensionsModule,\n NgbDropdownModule,\n PermissionManagementModule,\n NgxValidateCoreModule,\n ],\n})\nexport class IdentityModule {\n static forChild(options: IdentityConfigOptions = {}): ModuleWithProviders<IdentityModule> {\n return {\n ngModule: IdentityModule,\n providers: [\n {\n provide: IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\n useValue: options.entityActionContributors,\n },\n {\n provide: IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\n useValue: options.toolbarActionContributors,\n },\n {\n provide: IDENTITY_ENTITY_PROP_CONTRIBUTORS,\n useValue: options.entityPropContributors,\n },\n {\n provide: IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\n useValue: options.createFormPropContributors,\n },\n {\n provide: IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\n useValue: options.editFormPropContributors,\n },\n IdentityExtensionsGuard,\n ],\n };\n }\n\n static forLazy(options: IdentityConfigOptions = {}): NgModuleFactory<IdentityModule> {\n return new LazyModuleFactory(IdentityModule.forChild(options));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FormPropData","generateFormFromProps","finalize","Confirmation","ListService","EXTENSIONS_IDENTIFIER","Component","tap","switchMap","ViewChild","EntityAction","EntityProp","LocalizationService","of","FormProp","Validators","ToolbarAction","getPasswordValidators","InjectionToken","ExtensionsService","ConfigStateService","getObjectExtensionEntitiesFromStore","map","mapEntitiesToContributors","mergeWithDefaultActions","mergeWithDefaultProps","mapTo","Injectable","DynamicLayoutComponent","AuthGuard","PermissionGuard","ReplaceableRouteContainerComponent","RouterModule","NgModule","LazyModuleFactory","CoreModule","NgbNavModule","ThemeSharedModule","UiExtensionsModule","NgbDropdownModule","PermissionManagementModule","NgxValidateCoreModule"],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- import { ListService } from '@abp/ng.core';
2
- import { IdentityRoleService } from '@abp/ng.identity/proxy';
3
- import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';
4
- import { EXTENSIONS_IDENTIFIER, FormPropData, generateFormFromProps, } from '@abp/ng.theme.shared/extensions';
5
- import { Component, Injector } from '@angular/core';
6
- import { finalize } from 'rxjs/operators';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@abp/ng.core";
9
- import * as i2 from "@abp/ng.theme.shared";
10
- import * as i3 from "@abp/ng.identity/proxy";
11
- import * as i4 from "@abp/ng.theme.shared/extensions";
12
- import * as i5 from "@abp/ng.permission-management";
13
- import * as i6 from "@angular/forms";
14
- import * as i7 from "@ngx-validate/core";
15
- export class RolesComponent {
16
- constructor(list, confirmationService, injector, service) {
17
- this.list = list;
18
- this.confirmationService = confirmationService;
19
- this.injector = injector;
20
- this.service = service;
21
- this.data = { items: [], totalCount: 0 };
22
- this.visiblePermissions = false;
23
- this.modalBusy = false;
24
- this.permissionManagementKey = "PermissionManagement.PermissionManagementComponent" /* PermissionManagement */;
25
- this.onVisiblePermissionChange = event => {
26
- this.visiblePermissions = event;
27
- };
28
- }
29
- ngOnInit() {
30
- this.hookToQuery();
31
- }
32
- buildForm() {
33
- const data = new FormPropData(this.injector, this.selected);
34
- this.form = generateFormFromProps(data);
35
- }
36
- openModal() {
37
- this.buildForm();
38
- this.isModalVisible = true;
39
- }
40
- add() {
41
- this.selected = {};
42
- this.openModal();
43
- }
44
- edit(id) {
45
- this.service.get(id).subscribe(res => {
46
- this.selected = res;
47
- this.openModal();
48
- });
49
- }
50
- save() {
51
- if (!this.form.valid)
52
- return;
53
- this.modalBusy = true;
54
- const { id } = this.selected;
55
- (id
56
- ? this.service.update(id, Object.assign(Object.assign({}, this.selected), this.form.value))
57
- : this.service.create(this.form.value))
58
- .pipe(finalize(() => (this.modalBusy = false)))
59
- .subscribe(() => {
60
- this.isModalVisible = false;
61
- this.list.get();
62
- });
63
- }
64
- delete(id, name) {
65
- this.confirmationService
66
- .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {
67
- messageLocalizationParams: [name],
68
- })
69
- .subscribe((status) => {
70
- if (status === Confirmation.Status.confirm) {
71
- this.service.delete(id).subscribe(() => this.list.get());
72
- }
73
- });
74
- }
75
- hookToQuery() {
76
- this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));
77
- }
78
- openPermissionsModal(providerKey) {
79
- this.providerKey = providerKey;
80
- setTimeout(() => {
81
- this.visiblePermissions = true;
82
- }, 0);
83
- }
84
- sort(data) {
85
- const { prop, dir } = data.sorts[0];
86
- this.list.sortKey = prop;
87
- this.list.sortOrder = dir;
88
- }
89
- }
90
- RolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RolesComponent, deps: [{ token: i1.ListService }, { token: i2.ConfirmationService }, { token: i0.Injector }, { token: i3.IdentityRoleService }], target: i0.ɵɵFactoryTarget.Component });
91
- RolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: RolesComponent, selector: "abp-roles", providers: [
92
- ListService,
93
- {
94
- provide: EXTENSIONS_IDENTIFIER,
95
- useValue: "Identity.RolesComponent" /* Roles */,
96
- },
97
- ], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\n <div class=\"card-header\">\n <div class=\"row\">\n <div class=\"col col-md-6\">\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\n </div>\n <div class=\"text-end col col-md-6\">\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\n </div>\n </div>\n </div>\n\n <div class=\"card-body\">\n <abp-extensible-table\n [data]=\"data.items\"\n [recordsTotal]=\"data.totalCount\"\n [list]=\"list\"\n ></abp-extensible-table>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\n <ng-template #abpHeader>\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\n </button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\n 'AbpIdentity::Save' | abpLocalization\n }}</abp-button>\n </ng-template>\n</abp-modal>\n\n<abp-permission-management\n #abpPermissionManagement=\"abpPermissionManagement\"\n *abpReplaceableTemplate=\"\n {\n inputs: {\n providerName: { value: 'R' },\n providerKey: { value: providerKey },\n visible: { value: visiblePermissions, twoWay: true },\n hideBadges: { value: true }\n },\n outputs: { visibleChange: onVisiblePermissionChange },\n componentKey: permissionManagementKey\n };\n let init = initTemplate\n \"\n (abpInit)=\"init(abpPermissionManagement)\"\n>\n</abp-permission-management>\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RolesComponent, decorators: [{
99
- type: Component,
100
- args: [{
101
- selector: 'abp-roles',
102
- templateUrl: './roles.component.html',
103
- providers: [
104
- ListService,
105
- {
106
- provide: EXTENSIONS_IDENTIFIER,
107
- useValue: "Identity.RolesComponent" /* Roles */,
108
- },
109
- ],
110
- }]
111
- }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.ConfirmationService }, { type: i0.Injector }, { type: i3.IdentityRoleService }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaWRlbnRpdHkvc3JjL2xpYi9jb21wb25lbnRzL3JvbGVzL3JvbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L3NyYy9saWIvY29tcG9uZW50cy9yb2xlcy9yb2xlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFrRCxNQUFNLGNBQWMsQ0FBQztBQUMzRixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsWUFBWSxFQUNaLHFCQUFxQixHQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBYzFDLE1BQU0sT0FBTyxjQUFjO0lBcUJ6QixZQUNrQixJQUFpRCxFQUN2RCxtQkFBd0MsRUFDeEMsUUFBa0IsRUFDbEIsT0FBNEI7UUFIdEIsU0FBSSxHQUFKLElBQUksQ0FBNkM7UUFDdkQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBeEJ4QyxTQUFJLEdBQW9DLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFRckUsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBSTNCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsNEJBQXVC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Q0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELG9CQUFvQixDQUFDLFdBQW1CO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSTtRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7OzRHQWpHVSxjQUFjO2dHQUFkLGNBQWMsb0NBUmQ7UUFDVCxXQUFXO1FBQ1g7WUFDRSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFFBQVEsdUNBQTJCO1NBQ3BDO0tBQ0YsMEJDdkJILHU1REE0REE7NEZEbkNhLGNBQWM7a0JBWDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVCxXQUFXO3dCQUNYOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsdUNBQTJCO3lCQUNwQztxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RTZXJ2aWNlLCBQYWdlZEFuZFNvcnRlZFJlc3VsdFJlcXVlc3REdG8sIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IElkZW50aXR5Um9sZUR0bywgSWRlbnRpdHlSb2xlU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuaWRlbnRpdHkvcHJveHknO1xuaW1wb3J0IHsgZVBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50cyB9IGZyb20gJ0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7XG4gIEVYVEVOU0lPTlNfSURFTlRJRklFUixcbiAgRm9ybVByb3BEYXRhLFxuICBnZW5lcmF0ZUZvcm1Gcm9tUHJvcHMsXG59IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGVJZGVudGl0eUNvbXBvbmVudHMgfSBmcm9tICcuLi8uLi9lbnVtcy9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXJvbGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JvbGVzLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTGlzdFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxuICAgICAgdXNlVmFsdWU6IGVJZGVudGl0eUNvbXBvbmVudHMuUm9sZXMsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkYXRhOiBQYWdlZFJlc3VsdER0bzxJZGVudGl0eVJvbGVEdG8+ID0geyBpdGVtczogW10sIHRvdGFsQ291bnQ6IDAgfTtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgc2VsZWN0ZWQ6IElkZW50aXR5Um9sZUR0bztcblxuICBpc01vZGFsVmlzaWJsZTogYm9vbGVhbjtcblxuICB2aXNpYmxlUGVybWlzc2lvbnMgPSBmYWxzZTtcblxuICBwcm92aWRlcktleTogc3RyaW5nO1xuXG4gIG1vZGFsQnVzeSA9IGZhbHNlO1xuXG4gIHBlcm1pc3Npb25NYW5hZ2VtZW50S2V5ID0gZVBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50cy5QZXJtaXNzaW9uTWFuYWdlbWVudDtcblxuICBvblZpc2libGVQZXJtaXNzaW9uQ2hhbmdlID0gZXZlbnQgPT4ge1xuICAgIHRoaXMudmlzaWJsZVBlcm1pc3Npb25zID0gZXZlbnQ7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlPFBhZ2VkQW5kU29ydGVkUmVzdWx0UmVxdWVzdER0bz4sXG4gICAgcHJvdGVjdGVkIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgc2VydmljZTogSWRlbnRpdHlSb2xlU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaG9va1RvUXVlcnkoKTtcbiAgfVxuXG4gIGJ1aWxkRm9ybSgpIHtcbiAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1Qcm9wRGF0YSh0aGlzLmluamVjdG9yLCB0aGlzLnNlbGVjdGVkKTtcbiAgICB0aGlzLmZvcm0gPSBnZW5lcmF0ZUZvcm1Gcm9tUHJvcHMoZGF0YSk7XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgdGhpcy5idWlsZEZvcm0oKTtcbiAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIGFkZCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0ge30gYXMgSWRlbnRpdHlSb2xlRHRvO1xuICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gIH1cblxuICBlZGl0KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0KGlkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSByZXM7XG4gICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMubW9kYWxCdXN5ID0gdHJ1ZTtcblxuICAgIGNvbnN0IHsgaWQgfSA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgKGlkXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoaWQsIHsgLi4udGhpcy5zZWxlY3RlZCwgLi4udGhpcy5mb3JtLnZhbHVlIH0pXG4gICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUodGhpcy5mb3JtLnZhbHVlKVxuICAgIClcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLm1vZGFsQnVzeSA9IGZhbHNlKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2VcbiAgICAgIC53YXJuKCdBYnBJZGVudGl0eTo6Um9sZURlbGV0aW9uQ29uZmlybWF0aW9uTWVzc2FnZScsICdBYnBJZGVudGl0eTo6QXJlWW91U3VyZScsIHtcbiAgICAgICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtczogW25hbWVdLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09PSBDb25maXJtYXRpb24uU3RhdHVzLmNvbmZpcm0pIHtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKGlkKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5saXN0LmdldCgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhvb2tUb1F1ZXJ5KCkge1xuICAgIHRoaXMubGlzdC5ob29rVG9RdWVyeShxdWVyeSA9PiB0aGlzLnNlcnZpY2UuZ2V0TGlzdChxdWVyeSkpLnN1YnNjcmliZShyZXMgPT4gKHRoaXMuZGF0YSA9IHJlcykpO1xuICB9XG5cbiAgb3BlblBlcm1pc3Npb25zTW9kYWwocHJvdmlkZXJLZXk6IHN0cmluZykge1xuICAgIHRoaXMucHJvdmlkZXJLZXkgPSBwcm92aWRlcktleTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudmlzaWJsZVBlcm1pc3Npb25zID0gdHJ1ZTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHNvcnQoZGF0YSkge1xuICAgIGNvbnN0IHsgcHJvcCwgZGlyIH0gPSBkYXRhLnNvcnRzWzBdO1xuICAgIHRoaXMubGlzdC5zb3J0S2V5ID0gcHJvcDtcbiAgICB0aGlzLmxpc3Quc29ydE9yZGVyID0gZGlyO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwiaWRlbnRpdHktcm9sZXMtd3JhcHBlclwiIGNsYXNzPVwiY2FyZFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC1tZC02XCI+XG4gICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnQWJwSWRlbnRpdHk6OlJvbGVzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBjb2wgY29sLW1kLTZcIj5cbiAgICAgICAgPGFicC1wYWdlLXRvb2xiYXIgW3JlY29yZF09XCJkYXRhLml0ZW1zXCI+PC9hYnAtcGFnZS10b29sYmFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICA8YWJwLWV4dGVuc2libGUtdGFibGVcbiAgICAgIFtkYXRhXT1cImRhdGEuaXRlbXNcIlxuICAgICAgW3JlY29yZHNUb3RhbF09XCJkYXRhLnRvdGFsQ291bnRcIlxuICAgICAgW2xpc3RdPVwibGlzdFwiXG4gICAgPjwvYWJwLWV4dGVuc2libGUtdGFibGU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJpc01vZGFsVmlzaWJsZVwiIFtidXN5XT1cIm1vZGFsQnVzeVwiPlxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICA8aDM+e3sgKHNlbGVjdGVkPy5pZCA/ICdBYnBJZGVudGl0eTo6RWRpdCcgOiAnQWJwSWRlbnRpdHk6Ok5ld1JvbGUnKSB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIiB2YWxpZGF0ZU9uU3VibWl0PlxuICAgICAgPGFicC1leHRlbnNpYmxlLWZvcm0gW3NlbGVjdGVkUmVjb3JkXT1cInNlbGVjdGVkXCI+PC9hYnAtZXh0ZW5zaWJsZS1mb3JtPlxuICAgIDwvZm9ybT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XG4gICAgICB7eyAnQWJwSWRlbnRpdHk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIFtkaXNhYmxlZF09XCJmb3JtPy5pbnZhbGlkXCIgKGNsaWNrKT1cInNhdmUoKVwiPnt7XG4gICAgICAnQWJwSWRlbnRpdHk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uXG4gICAgfX08L2FicC1idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD5cblxuPGFicC1wZXJtaXNzaW9uLW1hbmFnZW1lbnRcbiAgI2FicFBlcm1pc3Npb25NYW5hZ2VtZW50PVwiYWJwUGVybWlzc2lvbk1hbmFnZW1lbnRcIlxuICAqYWJwUmVwbGFjZWFibGVUZW1wbGF0ZT1cIlxuICAgIHtcbiAgICAgIGlucHV0czoge1xuICAgICAgICBwcm92aWRlck5hbWU6IHsgdmFsdWU6ICdSJyB9LFxuICAgICAgICBwcm92aWRlcktleTogeyB2YWx1ZTogcHJvdmlkZXJLZXkgfSxcbiAgICAgICAgdmlzaWJsZTogeyB2YWx1ZTogdmlzaWJsZVBlcm1pc3Npb25zLCB0d29XYXk6IHRydWUgfSxcbiAgICAgICAgaGlkZUJhZGdlczogeyB2YWx1ZTogdHJ1ZSB9XG4gICAgICB9LFxuICAgICAgb3V0cHV0czogeyB2aXNpYmxlQ2hhbmdlOiBvblZpc2libGVQZXJtaXNzaW9uQ2hhbmdlIH0sXG4gICAgICBjb21wb25lbnRLZXk6IHBlcm1pc3Npb25NYW5hZ2VtZW50S2V5XG4gICAgfTtcbiAgICBsZXQgaW5pdCA9IGluaXRUZW1wbGF0ZVxuICBcIlxuICAoYWJwSW5pdCk9XCJpbml0KGFicFBlcm1pc3Npb25NYW5hZ2VtZW50KVwiXG4+XG48L2FicC1wZXJtaXNzaW9uLW1hbmFnZW1lbnQ+XG4iXX0=
@@ -1,144 +0,0 @@
1
- import { ListService } from '@abp/ng.core';
2
- import { IdentityUserService, } from '@abp/ng.identity/proxy';
3
- import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';
4
- import { EXTENSIONS_IDENTIFIER, FormPropData, generateFormFromProps, } from '@abp/ng.theme.shared/extensions';
5
- import { Component, Injector, TemplateRef, ViewChild, } from '@angular/core';
6
- import { FormBuilder } from '@angular/forms';
7
- import { finalize, switchMap, tap } from 'rxjs/operators';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@abp/ng.core";
10
- import * as i2 from "@abp/ng.theme.shared";
11
- import * as i3 from "@abp/ng.identity/proxy";
12
- import * as i4 from "@angular/forms";
13
- import * as i5 from "@abp/ng.theme.shared/extensions";
14
- import * as i6 from "@ng-bootstrap/ng-bootstrap";
15
- import * as i7 from "@abp/ng.permission-management";
16
- import * as i8 from "@angular/common";
17
- import * as i9 from "@ngx-validate/core";
18
- export class UsersComponent {
19
- constructor(list, confirmationService, service, fb, injector) {
20
- this.list = list;
21
- this.confirmationService = confirmationService;
22
- this.service = service;
23
- this.fb = fb;
24
- this.injector = injector;
25
- this.data = { items: [], totalCount: 0 };
26
- this.visiblePermissions = false;
27
- this.modalBusy = false;
28
- this.permissionManagementKey = "PermissionManagement.PermissionManagementComponent" /* PermissionManagement */;
29
- this.trackByFn = (index, item) => Object.keys(item)[0] || index;
30
- this.onVisiblePermissionChange = event => {
31
- this.visiblePermissions = event;
32
- };
33
- }
34
- get roleGroups() {
35
- var _a;
36
- return ((_a = this.form.get('roleNames')) === null || _a === void 0 ? void 0 : _a.controls) || [];
37
- }
38
- ngOnInit() {
39
- this.hookToQuery();
40
- }
41
- buildForm() {
42
- const data = new FormPropData(this.injector, this.selected);
43
- this.form = generateFormFromProps(data);
44
- this.service.getAssignableRoles().subscribe(({ items }) => {
45
- this.roles = items;
46
- this.form.addControl('roleNames', this.fb.array(this.roles.map(role => {
47
- var _a;
48
- return this.fb.group({
49
- [role.name]: [
50
- this.selected.id
51
- ? !!((_a = this.selectedUserRoles) === null || _a === void 0 ? void 0 : _a.find(userRole => userRole.id === role.id))
52
- : role.isDefault,
53
- ],
54
- });
55
- })));
56
- });
57
- }
58
- openModal() {
59
- this.buildForm();
60
- this.isModalVisible = true;
61
- }
62
- add() {
63
- this.selected = {};
64
- this.selectedUserRoles = [];
65
- this.openModal();
66
- }
67
- edit(id) {
68
- this.service
69
- .get(id)
70
- .pipe(tap(user => (this.selected = user)), switchMap(() => this.service.getRoles(id)))
71
- .subscribe(userRole => {
72
- this.selectedUserRoles = userRole.items || [];
73
- this.openModal();
74
- });
75
- }
76
- save() {
77
- if (!this.form.valid || this.modalBusy)
78
- return;
79
- this.modalBusy = true;
80
- const { roleNames = [] } = this.form.value;
81
- const mappedRoleNames = roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]) ||
82
- [];
83
- const { id } = this.selected;
84
- (id
85
- ? this.service.update(id, Object.assign(Object.assign(Object.assign({}, this.selected), this.form.value), { roleNames: mappedRoleNames }))
86
- : this.service.create(Object.assign(Object.assign({}, this.form.value), { roleNames: mappedRoleNames })))
87
- .pipe(finalize(() => (this.modalBusy = false)))
88
- .subscribe(() => {
89
- this.isModalVisible = false;
90
- this.list.get();
91
- });
92
- }
93
- delete(id, userName) {
94
- this.confirmationService
95
- .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {
96
- messageLocalizationParams: [userName],
97
- })
98
- .subscribe((status) => {
99
- if (status === Confirmation.Status.confirm) {
100
- this.service.delete(id).subscribe(() => this.list.get());
101
- }
102
- });
103
- }
104
- sort(data) {
105
- const { prop, dir } = data.sorts[0];
106
- this.list.sortKey = prop;
107
- this.list.sortOrder = dir;
108
- }
109
- hookToQuery() {
110
- this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));
111
- }
112
- openPermissionsModal(providerKey) {
113
- this.providerKey = providerKey;
114
- setTimeout(() => {
115
- this.visiblePermissions = true;
116
- }, 0);
117
- }
118
- }
119
- UsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: UsersComponent, deps: [{ token: i1.ListService }, { token: i2.ConfirmationService }, { token: i3.IdentityUserService }, { token: i4.FormBuilder }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
120
- UsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: UsersComponent, selector: "abp-users", providers: [
121
- ListService,
122
- {
123
- provide: EXTENSIONS_IDENTIFIER,
124
- useValue: "Identity.UsersComponent" /* Users */,
125
- },
126
- ], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\n <div class=\"card-header\">\n <div class=\"row\">\n <div class=\"col col-md-6\">\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\n </div>\n <div class=\"text-end col col-md-6\">\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\n </div>\n </div>\n </div>\n <div class=\"card-body\">\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\n <div class=\"input-group\">\n <input\n type=\"search\"\n class=\"form-control\"\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\n [(ngModel)]=\"list.filter\"\n />\n </div>\n </div>\n\n <abp-extensible-table\n [data]=\"data.items\"\n [recordsTotal]=\"data.totalCount\"\n [list]=\"list\"\n ></abp-extensible-table>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\n <ng-template #abpHeader>\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <ng-template #loaderRef\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\n ></ng-template>\n\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\n <li ngbNavItem>\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\n <ng-template ngbNavContent>\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\n </ng-template>\n </li>\n\n <li ngbNavItem>\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\n <ng-template ngbNavContent>\n <div\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\n class=\"form-check mb-2\"\n >\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n [attr.id]=\"'roles-' + i\"\n [formControl]=\"roleGroup.controls[roles[i].name]\"\n />\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\n </div>\n </ng-template>\n </li>\n </ul>\n\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\n </button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\n 'AbpIdentity::Save' | abpLocalization\n }}</abp-button>\n </ng-template>\n</abp-modal>\n\n<abp-permission-management\n #abpPermissionManagement=\"abpPermissionManagement\"\n *abpReplaceableTemplate=\"\n {\n inputs: {\n providerName: { value: 'U' },\n providerKey: { value: providerKey },\n visible: { value: visiblePermissions, twoWay: true }\n },\n outputs: { visibleChange: onVisiblePermissionChange },\n componentKey: permissionManagementKey\n };\n let init = initTemplate\n \"\n (abpInit)=\"init(abpPermissionManagement)\"\n>\n</abp-permission-management>\n", components: [{ type: i5.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i5.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i5.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i7.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }, { type: i6.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.ValidationDirective, selector: "[formControl],[formControlName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: UsersComponent, decorators: [{
128
- type: Component,
129
- args: [{
130
- selector: 'abp-users',
131
- templateUrl: './users.component.html',
132
- providers: [
133
- ListService,
134
- {
135
- provide: EXTENSIONS_IDENTIFIER,
136
- useValue: "Identity.UsersComponent" /* Users */,
137
- },
138
- ],
139
- }]
140
- }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.ConfirmationService }, { type: i3.IdentityUserService }, { type: i4.FormBuilder }, { type: i0.Injector }]; }, propDecorators: { modalContent: [{
141
- type: ViewChild,
142
- args: ['modalContent', { static: false }]
143
- }] } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaWRlbnRpdHkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L3NyYy9saWIvY29tcG9uZW50cy91c2Vycy91c2Vycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBSUwsbUJBQW1CLEdBQ3BCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsWUFBWSxFQUNaLHFCQUFxQixHQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLFdBQVcsRUFFWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE4QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFjMUQsTUFBTSxPQUFPLGNBQWM7SUFrQ3pCLFlBQ2tCLElBQXdDLEVBQzlDLG1CQUF3QyxFQUN4QyxPQUE0QixFQUM1QixFQUFlLEVBQ2YsUUFBa0I7UUFKWixTQUFJLEdBQUosSUFBSSxDQUFvQztRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBdEM5QixTQUFJLEdB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QUcsV0FBVyxDQUFDO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7OzRHQWxKVSxjQUFjO2dHQUFkLGNBQWMsb0NBUmQ7UUFDVCxXQUFXO1FBQ1g7WUFDRSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFFBQVEsdUNBQTJCO1NBQ3BDO0tBQ0Ysd0lDbkNILHcxR0FvR0E7NEZEL0RhLGNBQWM7a0JBWDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVCxXQUFXO3dCQUNYOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsdUNBQTJCO3lCQUNwQztxQkFDRjtpQkFDRjt1TkFLQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQge1xuICBHZXRJZGVudGl0eVVzZXJzSW5wdXQsXG4gIElkZW50aXR5Um9sZUR0byxcbiAgSWRlbnRpdHlVc2VyRHRvLFxuICBJZGVudGl0eVVzZXJTZXJ2aWNlLFxufSBmcm9tICdAYWJwL25nLmlkZW50aXR5L3Byb3h5JztcbmltcG9ydCB7IGVQZXJtaXNzaW9uTWFuYWdlbWVudENvbXBvbmVudHMgfSBmcm9tICdAYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb24sIENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQge1xuICBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gIEZvcm1Qcm9wRGF0YSxcbiAgZ2VuZXJhdGVGb3JtRnJvbVByb3BzLFxufSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmluYWxpemUsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZUlkZW50aXR5Q29tcG9uZW50cyB9IGZyb20gJy4uLy4uL2VudW1zL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtdXNlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBMaXN0U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogZUlkZW50aXR5Q29tcG9uZW50cy5Vc2VycyxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBVc2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRhdGE6IFBhZ2VkUmVzdWx0RHRvPElkZW50aXR5VXNlckR0bz4gPSB7IGl0ZW1zOiBbXSwgdG90YWxDb3VudDogMCB9O1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBtb2RhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIHNlbGVjdGVkOiBJZGVudGl0eVVzZXJEdG87XG5cbiAgc2VsZWN0ZWRVc2VyUm9sZXM6IElkZW50aXR5Um9sZUR0b1tdO1xuXG4gIHJvbGVzOiBJZGVudGl0eVJvbGVEdG9bXTtcblxuICB2aXNpYmxlUGVybWlzc2lvbnMgPSBmYWxzZTtcblxuICBwcm92aWRlcktleTogc3RyaW5nO1xuXG4gIGlzTW9kYWxWaXNpYmxlOiBib29sZWFuO1xuXG4gIG1vZGFsQnVzeSA9IGZhbHNlO1xuXG4gIHBlcm1pc3Npb25NYW5hZ2VtZW50S2V5ID0gZVBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50cy5QZXJtaXNzaW9uTWFuYWdlbWVudDtcblxuICB0cmFja0J5Rm46IFRyYWNrQnlGdW5jdGlvbjxBYnN0cmFjdENvbnRyb2w+ID0gKGluZGV4LCBpdGVtKSA9PiBPYmplY3Qua2V5cyhpdGVtKVswXSB8fCBpbmRleDtcblxuICBvblZpc2libGVQZXJtaXNzaW9uQ2hhbmdlID0gZXZlbnQgPT4ge1xuICAgIHRoaXMudmlzaWJsZVBlcm1pc3Npb25zID0gZXZlbnQ7XG4gIH07XG5cbiAgZ2V0IHJvbGVHcm91cHMoKTogRm9ybUdyb3VwW10ge1xuICAgIHJldHVybiAoKHRoaXMuZm9ybS5nZXQoJ3JvbGVOYW1lcycpIGFzIEZvcm1BcnJheSk/LmNvbnRyb2xzIGFzIEZvcm1Hcm91cFtdKSB8fCBbXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZTxHZXRJZGVudGl0eVVzZXJzSW5wdXQ+LFxuICAgIHByb3RlY3RlZCBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzZXJ2aWNlOiBJZGVudGl0eVVzZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaG9va1RvUXVlcnkoKTtcbiAgfVxuXG4gIGJ1aWxkRm9ybSgpIHtcbiAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1Qcm9wRGF0YSh0aGlzLmluamVjdG9yLCB0aGlzLnNlbGVjdGVkKTtcbiAgICB0aGlzLmZvcm0gPSBnZW5lcmF0ZUZvcm1Gcm9tUHJvcHMoZGF0YSk7XG5cbiAgICB0aGlzLnNlcnZpY2UuZ2V0QXNzaWduYWJsZVJvbGVzKCkuc3Vic2NyaWJlKCh7IGl0ZW1zIH0pID0+IHtcbiAgICAgIHRoaXMucm9sZXMgPSBpdGVtcztcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKFxuICAgICAgICAncm9sZU5hbWVzJyxcbiAgICAgICAgdGhpcy5mYi5hcnJheShcbiAgICAgICAgICB0aGlzLnJvbGVzLm1hcChyb2xlID0+XG4gICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgW3JvbGUubmFtZV06IFtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmlkXG4gICAgICAgICAgICAgICAgICA/ICEhdGhpcy5zZWxlY3RlZFVzZXJSb2xlcz8uZmluZCh1c2VyUm9sZSA9PiB1c2VyUm9sZS5pZCA9PT0gcm9sZS5pZClcbiAgICAgICAgICAgICAgICAgIDogcm9sZS5pc0RlZmF1bHQsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgYWRkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB7fSBhcyBJZGVudGl0eVVzZXJEdG87XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcyA9IFtdIGFzIElkZW50aXR5Um9sZUR0b1tdO1xuICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gIH1cblxuICBlZGl0KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlcnZpY2VcbiAgICAgIC5nZXQoaWQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHVzZXIgPT4gKHRoaXMuc2VsZWN0ZWQgPSB1c2VyKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0Um9sZXMoaWQpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodXNlclJvbGUgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVzID0gdXNlclJvbGUuaXRlbXMgfHwgW107XG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgaWYgKCF0aGlzLmZvcm0udmFsaWQgfHwgdGhpcy5tb2RhbEJ1c3kpIHJldHVybjtcbiAgICB0aGlzLm1vZGFsQnVzeSA9IHRydWU7XG5cbiAgICBjb25zdCB7IHJvbGVOYW1lcyA9IFtdIH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgY29uc3QgbWFwcGVkUm9sZU5hbWVzID1cbiAgICAgIHJvbGVOYW1lcy5maWx0ZXIocm9sZSA9PiAhIXJvbGVbT2JqZWN0LmtleXMocm9sZSlbMF1dKS5tYXAocm9sZSA9PiBPYmplY3Qua2V5cyhyb2xlKVswXSkgfHxcbiAgICAgIFtdO1xuXG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5zZWxlY3RlZDtcblxuICAgIChpZFxuICAgICAgPyB0aGlzLnNlcnZpY2UudXBkYXRlKGlkLCB7XG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZCxcbiAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgICAgICAgcm9sZU5hbWVzOiBtYXBwZWRSb2xlTmFtZXMsXG4gICAgICAgIH0pXG4gICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUoeyAuLi50aGlzLmZvcm0udmFsdWUsIHJvbGVOYW1lczogbWFwcGVkUm9sZU5hbWVzIH0pXG4gICAgKVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMubW9kYWxCdXN5ID0gZmFsc2UpKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGlzdC5nZXQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcsIHVzZXJOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2VcbiAgICAgIC53YXJuKCdBYnBJZGVudGl0eTo6VXNlckRlbGV0aW9uQ29uZmlybWF0aW9uTWVzc2FnZScsICdBYnBJZGVudGl0eTo6QXJlWW91U3VyZScsIHtcbiAgICAgICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtczogW3VzZXJOYW1lXSxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZShpZCkuc3Vic2NyaWJlKCgpID0+IHRoaXMubGlzdC5nZXQoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc29ydChkYXRhKSB7XG4gICAgY29uc3QgeyBwcm9wLCBkaXIgfSA9IGRhdGEuc29ydHNbMF07XG4gICAgdGhpcy5saXN0LnNvcnRLZXkgPSBwcm9wO1xuICAgIHRoaXMubGlzdC5zb3J0T3JkZXIgPSBkaXI7XG4gIH1cblxuICBwcml2YXRlIGhvb2tUb1F1ZXJ5KCkge1xuICAgIHRoaXMubGlzdC5ob29rVG9RdWVyeShxdWVyeSA9PiB0aGlzLnNlcnZpY2UuZ2V0TGlzdChxdWVyeSkpLnN1YnNjcmliZShyZXMgPT4gKHRoaXMuZGF0YSA9IHJlcykpO1xuICB9XG5cbiAgb3BlblBlcm1pc3Npb25zTW9kYWwocHJvdmlkZXJLZXk6IHN0cmluZykge1xuICAgIHRoaXMucHJvdmlkZXJLZXkgPSBwcm92aWRlcktleTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudmlzaWJsZVBlcm1pc3Npb25zID0gdHJ1ZTtcbiAgICB9LCAwKTtcbiAgfVxufVxuIiwiPGRpdiBpZD1cImlkZW50aXR5LXJvbGVzLXdyYXBwZXJcIiBjbGFzcz1cImNhcmRcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtbWQtNlwiPlxuICAgICAgICA8aDUgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgJ0FicElkZW50aXR5OjpVc2VycycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2g1PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgY29sIGNvbC1tZC02XCI+XG4gICAgICAgIDxhYnAtcGFnZS10b29sYmFyIFtyZWNvcmRdPVwiZGF0YS5pdGVtc1wiPjwvYWJwLXBhZ2UtdG9vbGJhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxkaXYgaWQ9XCJkYXRhLXRhYmxlcy10YWJsZS1maWx0ZXJcIiBjbGFzcz1cImRhdGEtdGFibGVzLWZpbHRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FicFVpOjpQYWdlclNlYXJjaCcgfCBhYnBMb2NhbGl6YXRpb25cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwibGlzdC5maWx0ZXJcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8YWJwLWV4dGVuc2libGUtdGFibGVcbiAgICAgIFtkYXRhXT1cImRhdGEuaXRlbXNcIlxuICAgICAgW3JlY29yZHNUb3RhbF09XCJkYXRhLnRvdGFsQ291bnRcIlxuICAgICAgW2xpc3RdPVwibGlzdFwiXG4gICAgPjwvYWJwLWV4dGVuc2libGUtdGFibGU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJpc01vZGFsVmlzaWJsZVwiIFtidXN5XT1cIm1vZGFsQnVzeVwiPlxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICA8aDM+e3sgKHNlbGVjdGVkPy5pZCA/ICdBYnBJZGVudGl0eTo6RWRpdCcgOiAnQWJwSWRlbnRpdHk6Ok5ld1VzZXInKSB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVyUmVmXG4gICAgICA+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1wdWxzZSBmYS1zcGlubmVyXCI+PC9pPjwvZGl2XG4gICAgPjwvbmctdGVtcGxhdGU+XG5cbiAgICA8Zm9ybSAqbmdJZj1cImZvcm07IGVsc2UgbG9hZGVyUmVmXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInNhdmUoKVwiPlxuICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtdGFic1wiPlxuICAgICAgICA8bGkgbmdiTmF2SXRlbT5cbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdBYnBJZGVudGl0eTo6VXNlckluZm9ybWF0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2E+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICA8YWJwLWV4dGVuc2libGUtZm9ybSBbc2VsZWN0ZWRSZWNvcmRdPVwic2VsZWN0ZWRcIj48L2FicC1leHRlbnNpYmxlLWZvcm0+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8bGkgbmdiTmF2SXRlbT5cbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdBYnBJZGVudGl0eTo6Um9sZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm9sZUdyb3VwIG9mIHJvbGVHcm91cHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidyb2xlcy0nICsgaVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvbGVHcm91cC5jb250cm9sc1tyb2xlc1tpXS5uYW1lXVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbYXR0ci5mb3JdPVwiJ3JvbGVzLScgKyBpXCI+e3sgcm9sZXNbaV0ubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XG4gICAgICB7eyAnQWJwSWRlbnRpdHk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIFtkaXNhYmxlZF09XCJmb3JtPy5pbnZhbGlkXCIgKGNsaWNrKT1cInNhdmUoKVwiPnt7XG4gICAgICAnQWJwSWRlbnRpdHk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uXG4gICAgfX08L2FicC1idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD5cblxuPGFicC1wZXJtaXNzaW9uLW1hbmFnZW1lbnRcbiAgI2FicFBlcm1pc3Npb25NYW5hZ2VtZW50PVwiYWJwUGVybWlzc2lvbk1hbmFnZW1lbnRcIlxuICAqYWJwUmVwbGFjZWFibGVUZW1wbGF0ZT1cIlxuICAgIHtcbiAgICAgIGlucHV0czoge1xuICAgICAgICBwcm92aWRlck5hbWU6IHsgdmFsdWU6ICdVJyB9LFxuICAgICAgICBwcm92aWRlcktleTogeyB2YWx1ZTogcHJvdmlkZXJLZXkgfSxcbiAgICAgICAgdmlzaWJsZTogeyB2YWx1ZTogdmlzaWJsZVBlcm1pc3Npb25zLCB0d29XYXk6IHRydWUgfVxuICAgICAgfSxcbiAgICAgIG91dHB1dHM6IHsgdmlzaWJsZUNoYW5nZTogb25WaXNpYmxlUGVybWlzc2lvbkNoYW5nZSB9LFxuICAgICAgY29tcG9uZW50S2V5OiBwZXJtaXNzaW9uTWFuYWdlbWVudEtleVxuICAgIH07XG4gICAgbGV0IGluaXQgPSBpbml0VGVtcGxhdGVcbiAgXCJcbiAgKGFicEluaXQpPVwiaW5pdChhYnBQZXJtaXNzaW9uTWFuYWdlbWVudClcIlxuPlxuPC9hYnAtcGVybWlzc2lvbi1tYW5hZ2VtZW50PlxuIl19
@@ -1,24 +0,0 @@
1
- import { LocalizationService } from '@abp/ng.core';
2
- import { EntityProp } from '@abp/ng.theme.shared/extensions';
3
- import { of } from 'rxjs';
4
- export const DEFAULT_ROLES_ENTITY_PROPS = EntityProp.createMany([
5
- {
6
- type: "string" /* String */,
7
- name: 'name',
8
- displayName: 'AbpIdentity::RoleName',
9
- sortable: true,
10
- valueResolver: data => {
11
- const l10n = data.getInjected(LocalizationService);
12
- const t = l10n.instant.bind(l10n);
13
- const { isDefault, isPublic, name } = data.record;
14
- return of(name +
15
- (isDefault
16
- ? `<span class="badge rounded-pill bg-success ms-1">${t('AbpIdentity::DisplayName:IsDefault')}</span>`
17
- : '') +
18
- (isPublic
19
- ? `<span class="badge rounded-pill bg-info ms-1">${t('AbpIdentity::DisplayName:IsPublic')}</span>`
20
- : ''));
21
- },
22
- },
23
- ]);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1yb2xlcy1lbnRpdHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pZGVudGl0eS9zcmMvbGliL2RlZmF1bHRzL2RlZmF1bHQtcm9sZXMtZW50aXR5LXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFrQjtJQUMvRTtRQUNFLElBQUksdUJBQWtCO1FBQ3RCLElBQUksRUFBRSxNQUFNO1FBQ1osV0FBVyxFQUFFLHVCQUF1QjtRQUNwQyxRQUFRLEVBQUUsSUFBSTtRQUNkLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDbkQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUVsRCxPQUFPLEVBQUUsQ0FDUCxJQUFJO2dCQUNGLENBQUMsU0FBUztvQkFDUixDQUFDLENBQUMsb0RBQW9ELENBQUMsQ0FDbkQsb0NBQW9DLENBQ3JDLFNBQVM7b0JBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDUCxDQUFDLFFBQVE7b0JBQ1AsQ0FBQyxDQUFDLGlEQUFpRCxDQUFDLENBQ2hELG1DQUFtQyxDQUNwQyxTQUFTO29CQUNaLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDVixDQUFDO1FBQ0osQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBJZGVudGl0eVJvbGVEdG8gfSBmcm9tICdAYWJwL25nLmlkZW50aXR5L3Byb3h5JztcbmltcG9ydCB7IEVudGl0eVByb3AsIGVQcm9wVHlwZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUk9MRVNfRU5USVRZX1BST1BTID0gRW50aXR5UHJvcC5jcmVhdGVNYW55PElkZW50aXR5Um9sZUR0bz4oW1xuICB7XG4gICAgdHlwZTogZVByb3BUeXBlLlN0cmluZyxcbiAgICBuYW1lOiAnbmFtZScsXG4gICAgZGlzcGxheU5hbWU6ICdBYnBJZGVudGl0eTo6Um9sZU5hbWUnLFxuICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgIHZhbHVlUmVzb2x2ZXI6IGRhdGEgPT4ge1xuICAgICAgY29uc3QgbDEwbiA9IGRhdGEuZ2V0SW5qZWN0ZWQoTG9jYWxpemF0aW9uU2VydmljZSk7XG4gICAgICBjb25zdCB0ID0gbDEwbi5pbnN0YW50LmJpbmQobDEwbik7XG4gICAgICBjb25zdCB7IGlzRGVmYXVsdCwgaXNQdWJsaWMsIG5hbWUgfSA9IGRhdGEucmVjb3JkO1xuXG4gICAgICByZXR1cm4gb2YoXG4gICAgICAgIG5hbWUgK1xuICAgICAgICAgIChpc0RlZmF1bHRcbiAgICAgICAgICAgID8gYDxzcGFuIGNsYXNzPVwiYmFkZ2Ugcm91bmRlZC1waWxsIGJnLXN1Y2Nlc3MgbXMtMVwiPiR7dChcbiAgICAgICAgICAgICAgICAnQWJwSWRlbnRpdHk6OkRpc3BsYXlOYW1lOklzRGVmYXVsdCcsXG4gICAgICAgICAgICAgICl9PC9zcGFuPmBcbiAgICAgICAgICAgIDogJycpICtcbiAgICAgICAgICAoaXNQdWJsaWNcbiAgICAgICAgICAgID8gYDxzcGFuIGNsYXNzPVwiYmFkZ2Ugcm91bmRlZC1waWxsIGJnLWluZm8gbXMtMVwiPiR7dChcbiAgICAgICAgICAgICAgICAnQWJwSWRlbnRpdHk6OkRpc3BsYXlOYW1lOklzUHVibGljJyxcbiAgICAgICAgICAgICAgKX08L3NwYW4+YFxuICAgICAgICAgICAgOiAnJyksXG4gICAgICApO1xuICAgIH0sXG4gIH0sXG5dKTtcbiJdfQ==