@abp/ng.tenant-management 5.0.1 → 5.1.3
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.
- package/config/package.json +5 -5
- package/{esm2015/abp-ng.tenant-management.js → esm2020/abp-ng.tenant-management.mjs} +0 -0
- package/{esm2015/config/abp-ng.tenant-management-config.js → esm2020/config/abp-ng.tenant-management-config.mjs} +0 -0
- package/{esm2015/config/enums/index.js → esm2020/config/enums/index.mjs} +0 -0
- package/{esm2015/config/enums/policy-names.js → esm2020/config/enums/policy-names.mjs} +0 -0
- package/{esm2015/config/enums/route-names.js → esm2020/config/enums/route-names.mjs} +0 -0
- package/{esm2015/config/providers/index.js → esm2020/config/providers/index.mjs} +0 -0
- package/{esm2015/config/providers/route.provider.js → esm2020/config/providers/route.provider.mjs} +0 -0
- package/{esm2015/config/public-api.js → esm2020/config/public-api.mjs} +0 -0
- package/{esm2015/config/tenant-management-config.module.js → esm2020/config/tenant-management-config.module.mjs} +5 -5
- package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
- package/esm2020/lib/components/tenants/tenants.component.mjs +125 -0
- package/{esm2015/lib/defaults/default-tenants-entity-actions.js → esm2020/lib/defaults/default-tenants-entity-actions.mjs} +0 -0
- package/{esm2015/lib/defaults/default-tenants-entity-props.js → esm2020/lib/defaults/default-tenants-entity-props.mjs} +0 -0
- package/{esm2015/lib/defaults/default-tenants-form-props.js → esm2020/lib/defaults/default-tenants-form-props.mjs} +0 -0
- package/{esm2015/lib/defaults/default-tenants-toolbar-actions.js → esm2020/lib/defaults/default-tenants-toolbar-actions.mjs} +0 -0
- package/{esm2015/lib/enums/components.js → esm2020/lib/enums/components.mjs} +0 -0
- package/{esm2015/lib/enums/index.js → esm2020/lib/enums/index.mjs} +0 -0
- package/{esm2015/lib/guards/extensions.guard.js → esm2020/lib/guards/extensions.guard.mjs} +4 -4
- package/{esm2015/lib/guards/index.js → esm2020/lib/guards/index.mjs} +0 -0
- package/{esm2015/lib/models/config-options.js → esm2020/lib/models/config-options.mjs} +0 -0
- package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
- package/{esm2015/lib/models/tenant-management.js → esm2020/lib/models/tenant-management.mjs} +0 -0
- package/{esm2015/lib/tenant-management-routing.module.js → esm2020/lib/tenant-management-routing.module.mjs} +5 -5
- package/{esm2015/lib/tenant-management.module.js → esm2020/lib/tenant-management.module.mjs} +5 -5
- package/{esm2015/lib/tokens/extensions.token.js → esm2020/lib/tokens/extensions.token.mjs} +0 -0
- package/{esm2015/lib/tokens/index.js → esm2020/lib/tokens/index.mjs} +0 -0
- package/{esm2015/proxy/abp-ng.tenant-management-proxy.js → esm2020/proxy/abp-ng.tenant-management-proxy.mjs} +0 -0
- package/{esm2015/proxy/lib/index.js → esm2020/proxy/lib/index.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/index.js → esm2020/proxy/lib/proxy/index.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/models.js → esm2020/proxy/lib/proxy/models.mjs} +0 -0
- package/{esm2015/proxy/lib/proxy/tenant.service.js → esm2020/proxy/lib/proxy/tenant.service.mjs} +4 -4
- package/{esm2015/proxy/public-api.js → esm2020/proxy/public-api.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{abp-ng.tenant-management-config.js → abp-ng.tenant-management-config.mjs} +5 -5
- package/fesm2015/abp-ng.tenant-management-config.mjs.map +1 -0
- package/fesm2015/{abp-ng.tenant-management-proxy.js → abp-ng.tenant-management-proxy.mjs} +5 -5
- package/fesm2015/abp-ng.tenant-management-proxy.mjs.map +1 -0
- package/fesm2015/{abp-ng.tenant-management.js → abp-ng.tenant-management.mjs} +19 -23
- package/fesm2015/abp-ng.tenant-management.mjs.map +1 -0
- package/fesm2020/abp-ng.tenant-management-config.mjs +51 -0
- package/fesm2020/abp-ng.tenant-management-config.mjs.map +1 -0
- package/fesm2020/abp-ng.tenant-management-proxy.mjs +62 -0
- package/fesm2020/abp-ng.tenant-management-proxy.mjs.map +1 -0
- package/fesm2020/abp-ng.tenant-management.mjs +370 -0
- package/fesm2020/abp-ng.tenant-management.mjs.map +1 -0
- package/package.json +38 -9
- package/proxy/package.json +5 -5
- package/proxy/src/lib/proxy/README.md +17 -0
- package/bundles/abp-ng.tenant-management-config.umd.js +0 -82
- package/bundles/abp-ng.tenant-management-config.umd.js.map +0 -1
- package/bundles/abp-ng.tenant-management-proxy.umd.js +0 -91
- package/bundles/abp-ng.tenant-management-proxy.umd.js.map +0 -1
- package/bundles/abp-ng.tenant-management.umd.js +0 -746
- package/bundles/abp-ng.tenant-management.umd.js.map +0 -1
- package/esm2015/lib/components/tenants/tenants.component.js +0 -129
- package/fesm2015/abp-ng.tenant-management-config.js.map +0 -1
- package/fesm2015/abp-ng.tenant-management-proxy.js.map +0 -1
- package/fesm2015/abp-ng.tenant-management.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.tenant-management.umd.js","sources":["../../../../packages/tenant-management/src/lib/components/tenants/tenants.component.ts","../../../../packages/tenant-management/src/lib/components/tenants/tenants.component.html","../../../../packages/tenant-management/src/lib/defaults/default-tenants-entity-actions.ts","../../../../packages/tenant-management/src/lib/defaults/default-tenants-entity-props.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../packages/tenant-management/src/lib/defaults/default-tenants-form-props.ts","../../../../packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts","../../../../packages/tenant-management/src/lib/tokens/extensions.token.ts","../../../../packages/tenant-management/src/lib/guards/extensions.guard.ts","../../../../packages/tenant-management/src/lib/tenant-management-routing.module.ts","../../../../packages/tenant-management/src/lib/tenant-management.module.ts","../../../../packages/tenant-management/src/abp-ng.tenant-management.ts"],"sourcesContent":["import { ListService, PagedResultDto } from '@abp/ng.core';\r\nimport { eFeatureManagementComponents } from '@abp/ng.feature-management';\r\nimport { GetTenantsInput, TenantDto, TenantService } from '@abp/ng.tenant-management/proxy';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Component, Injector, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { eTenantManagementComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-tenants',\r\n templateUrl: './tenants.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eTenantManagementComponents.Tenants,\r\n },\r\n ],\r\n})\r\nexport class TenantsComponent implements OnInit {\r\n data: PagedResultDto<TenantDto> = { items: [], totalCount: 0 };\r\n\r\n selected!: TenantDto;\r\n\r\n tenantForm!: FormGroup;\r\n\r\n isModalVisible!: boolean;\r\n\r\n visibleFeatures = false;\r\n\r\n providerKey!: string;\r\n\r\n modalBusy = false;\r\n\r\n featureManagementKey = eFeatureManagementComponents.FeatureManagement;\r\n\r\n get hasSelectedTenant(): boolean {\r\n return Boolean(this.selected.id);\r\n }\r\n\r\n onVisibleFeaturesChange = (value: boolean) => {\r\n this.visibleFeatures = value;\r\n };\r\n\r\n constructor(\r\n public readonly list: ListService<GetTenantsInput>,\r\n private injector: Injector,\r\n private confirmationService: ConfirmationService,\r\n private service: TenantService,\r\n private fb: FormBuilder,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n private createTenantForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.tenantForm = generateFormFromProps(data);\r\n }\r\n\r\n addTenant() {\r\n this.selected = {} as TenantDto;\r\n this.createTenantForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n editTenant(id: string) {\r\n this.service.get(id).subscribe(res => {\r\n this.selected = res;\r\n this.createTenantForm();\r\n this.isModalVisible = true;\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.tenantForm.valid || this.modalBusy) return;\r\n this.modalBusy = true;\r\n\r\n const { id } = this.selected;\r\n\r\n (id\r\n ? this.service.update(id, { ...this.selected, ...this.tenantForm.value })\r\n : this.service.create(this.tenantForm.value)\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn(\r\n 'AbpTenantManagement::TenantDeletionConfirmationMessage',\r\n 'AbpTenantManagement::AreYouSure',\r\n {\r\n messageLocalizationParams: [name],\r\n },\r\n )\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n hookToQuery() {\r\n this.list\r\n .hookToQuery(query => this.service.getList(query))\r\n .subscribe(res => {\r\n this.data = res;\r\n });\r\n }\r\n\r\n onSharedDatabaseChange(value: boolean) {\r\n if (!value) {\r\n setTimeout(() => {\r\n const defaultConnectionString = document.getElementById(\r\n 'defaultConnectionString',\r\n ) as HTMLInputElement;\r\n if (defaultConnectionString) {\r\n defaultConnectionString.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n openFeaturesModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visibleFeatures = true;\r\n }, 0);\r\n }\r\n\r\n sort(data: any) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n}\r\n","<div id=\"wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpTenantManagement::Tenants' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items || []\"\r\n [recordsTotal]=\"data.totalCount || 0\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{\r\n (selected?.id ? 'AbpTenantManagement::Edit' : 'AbpTenantManagement::NewTenant')\r\n | abpLocalization\r\n }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"tenantForm\" (ngSubmit)=\"save()\" [validateOnSubmit]=\"true\">\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" (click)=\"save()\" [disabled]=\"tenantForm?.invalid\">{{\r\n 'AbpTenantManagement::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-feature-management\r\n *abpReplaceableTemplate=\"{\r\n inputs: {\r\n providerName: { value: 'T' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visibleFeatures, twoWay: true }\r\n },\r\n outputs: { visibleChange: $any(onVisibleFeaturesChange) },\r\n componentKey: featureManagementKey\r\n }\"\r\n [(visible)]=\"visibleFeatures\"\r\n providerName=\"T\"\r\n [providerKey]=\"providerKey\"\r\n>\r\n</abp-feature-management>\r\n","import { TenantDto } from '@abp/ng.tenant-management/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { TenantsComponent } from '../components/tenants/tenants.component';\r\n\r\nexport const DEFAULT_TENANTS_ENTITY_ACTIONS = EntityAction.createMany<TenantDto>([\r\n {\r\n text: 'AbpTenantManagement::Edit',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.editTenant(data.record.id);\r\n },\r\n permission: 'AbpTenantManagement.Tenants.Update',\r\n },\r\n {\r\n text: 'AbpTenantManagement::Permission:ManageFeatures',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.openFeaturesModal(data.record.id);\r\n },\r\n permission: 'AbpTenantManagement.Tenants.ManageFeatures',\r\n },\r\n {\r\n text: 'AbpTenantManagement::Delete',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.delete(data.record.id, data.record.name);\r\n },\r\n permission: 'AbpTenantManagement.Tenants.Delete',\r\n },\r\n]);\r\n","import { TenantDto } from '@abp/ng.tenant-management/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\n\r\nexport const DEFAULT_TENANTS_ENTITY_PROPS = EntityProp.createMany<TenantDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpTenantManagement::TenantName',\r\n sortable: true,\r\n },\r\n]);\r\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 { TenantCreateDto, TenantUpdateDto } from '@abp/ng.tenant-management/proxy';\r\nimport { getPasswordValidators } from '@abp/ng.theme.shared';\r\nimport { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_TENANTS_CREATE_FORM_PROPS = FormProp.createMany<\r\n TenantCreateDto | TenantUpdateDto\r\n>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n id: 'name',\r\n displayName: 'AbpTenantManagement::TenantName',\r\n validators: () => [Validators.required, Validators.maxLength(256)],\r\n },\r\n {\r\n type: ePropType.Email,\r\n name: 'adminEmailAddress',\r\n displayName: 'AbpTenantManagement::DisplayName:AdminEmailAddress',\r\n id: 'admin-email-address',\r\n validators: () => [Validators.required, Validators.maxLength(256), Validators.email],\r\n },\r\n {\r\n type: ePropType.Password,\r\n name: 'adminPassword',\r\n displayName: 'AbpTenantManagement::DisplayName:AdminPassword',\r\n id: 'admin-password',\r\n autocomplete: 'new-password',\r\n validators: data => [Validators.required, ...getPasswordValidators({ get: data.getInjected })],\r\n },\r\n]);\r\n\r\nexport const DEFAULT_TENANTS_EDIT_FORM_PROPS = DEFAULT_TENANTS_CREATE_FORM_PROPS.slice(0, 1);\r\n","import { TenantDto } from '@abp/ng.tenant-management/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { TenantsComponent } from '../components/tenants/tenants.component';\r\n\r\nexport const DEFAULT_TENANTS_TOOLBAR_ACTIONS = ToolbarAction.createMany<TenantDto[]>([\r\n {\r\n text: 'AbpTenantManagement::ManageHostFeatures',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.openFeaturesModal('');\r\n },\r\n permission: 'FeatureManagement.ManageHostFeatures',\r\n icon: 'fa fa-cog',\r\n },\r\n {\r\n text: 'AbpTenantManagement::NewTenant',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.addTenant();\r\n },\r\n permission: 'AbpTenantManagement.Tenants.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { TenantCreateDto, TenantDto, TenantUpdateDto } from '@abp/ng.tenant-management/proxy';\r\nimport {\r\n CreateFormPropContributorCallback,\r\n EditFormPropContributorCallback,\r\n EntityActionContributorCallback,\r\n EntityPropContributorCallback,\r\n ToolbarActionContributorCallback,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { DEFAULT_TENANTS_ENTITY_ACTIONS } from '../defaults/default-tenants-entity-actions';\r\nimport { DEFAULT_TENANTS_ENTITY_PROPS } from '../defaults/default-tenants-entity-props';\r\nimport {\r\n DEFAULT_TENANTS_CREATE_FORM_PROPS,\r\n DEFAULT_TENANTS_EDIT_FORM_PROPS,\r\n} from '../defaults/default-tenants-form-props';\r\nimport { DEFAULT_TENANTS_TOOLBAR_ACTIONS } from '../defaults/default-tenants-toolbar-actions';\r\nimport { eTenantManagementComponents } from '../enums/components';\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_CREATE_FORM_PROPS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_EDIT_FORM_PROPS,\r\n};\r\n\r\nexport const TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS =\r\n new InjectionToken<EntityActionContributors>('TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS =\r\n new InjectionToken<ToolbarActionContributors>('TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS =\r\n new InjectionToken<EntityPropContributors>('TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<CreateFormPropContributors>('TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<EditFormPropContributors>('TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS');\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: EntityActionContributorCallback<TenantDto>[];\r\n}>;\r\ntype ToolbarActionContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: ToolbarActionContributorCallback<TenantDto[]>[];\r\n}>;\r\ntype EntityPropContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: EntityPropContributorCallback<TenantDto>[];\r\n}>;\r\ntype CreateFormPropContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: CreateFormPropContributorCallback<TenantCreateDto>[];\r\n}>;\r\ntype EditFormPropContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: EditFormPropContributorCallback<TenantUpdateDto>[];\r\n}>;\r\n","import { ConfigStateService } from '@abp/ng.core';\r\nimport {\r\n ExtensionsService,\r\n getObjectExtensionEntitiesFromStore,\r\n mapEntitiesToContributors,\r\n mergeWithDefaultActions,\r\n mergeWithDefaultProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map, mapTo, tap } from 'rxjs/operators';\r\nimport { eTenantManagementComponents } from '../enums/components';\r\nimport {\r\n TenantManagementCreateFormPropContributors,\r\n TenantManagementEditFormPropContributors,\r\n TenantManagementEntityActionContributors,\r\n TenantManagementEntityPropContributors,\r\n TenantManagementToolbarActionContributors,\r\n} from '../models/config-options';\r\nimport {\r\n DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS,\r\n DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS,\r\n DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS,\r\n TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from '../tokens/extensions.token';\r\n\r\n@Injectable()\r\nexport class TenantManagementExtensionsGuard implements CanActivate {\r\n constructor(private injector: Injector) {}\r\n\r\n canActivate(): Observable<boolean> {\r\n const extensions: ExtensionsService = this.injector.get(ExtensionsService);\r\n const actionContributors: TenantManagementEntityActionContributors =\r\n this.injector.get(TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n const toolbarContributors: TenantManagementToolbarActionContributors =\r\n this.injector.get(TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n const propContributors: TenantManagementEntityPropContributors =\r\n this.injector.get(TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n const createFormContributors: TenantManagementCreateFormPropContributors =\r\n this.injector.get(TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, null) || {};\r\n const editFormContributors: TenantManagementEditFormPropContributors =\r\n this.injector.get(TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n const configState = this.injector.get(ConfigStateService);\r\n return getObjectExtensionEntitiesFromStore(configState, 'TenantManagement').pipe(\r\n map(entities => ({\r\n [eTenantManagementComponents.Tenants]: entities.Tenant,\r\n })),\r\n mapEntitiesToContributors(configState, 'TenantManagement'),\r\n tap(objectExtensionContributors => {\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS,\r\n actionContributors,\r\n );\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS,\r\n toolbarContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.createFormProps,\r\n DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS,\r\n objectExtensionContributors.createForm,\r\n createFormContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.editFormProps,\r\n DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS,\r\n objectExtensionContributors.editForm,\r\n editFormContributors,\r\n );\r\n }),\r\n mapTo(true),\r\n );\r\n }\r\n}\r\n","import {\r\n AuthGuard,\r\n PermissionGuard,\r\n ReplaceableComponents,\r\n ReplaceableRouteContainerComponent,\r\n RouterOutletComponent,\r\n} from '@abp/ng.core';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TenantsComponent } from './components/tenants/tenants.component';\r\nimport { eTenantManagementComponents } from './enums/components';\r\nimport { TenantManagementExtensionsGuard } from './guards';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'tenants', pathMatch: 'full' },\r\n {\r\n path: '',\r\n component: RouterOutletComponent,\r\n canActivate: [AuthGuard, PermissionGuard, TenantManagementExtensionsGuard],\r\n children: [\r\n {\r\n path: 'tenants',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpTenantManagement.Tenants',\r\n replaceableComponent: {\r\n key: eTenantManagementComponents.Tenants,\r\n defaultComponent: TenantsComponent,\r\n } as ReplaceableComponents.RouteData<TenantsComponent>,\r\n },\r\n },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class TenantManagementRoutingModule {}\r\n","import { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { FeatureManagementModule } from '@abp/ng.feature-management';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';\r\nimport { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { TenantsComponent } from './components/tenants/tenants.component';\r\nimport { TenantManagementExtensionsGuard } from './guards/extensions.guard';\r\nimport { TenantManagementConfigOptions } from './models/config-options';\r\nimport { TenantManagementRoutingModule } from './tenant-management-routing.module';\r\nimport {\r\n TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\n\r\n@NgModule({\r\n declarations: [TenantsComponent],\r\n exports: [TenantsComponent],\r\n imports: [\r\n TenantManagementRoutingModule,\r\n NgxValidateCoreModule,\r\n CoreModule,\r\n ThemeSharedModule,\r\n NgbDropdownModule,\r\n FeatureManagementModule,\r\n UiExtensionsModule,\r\n ],\r\n})\r\nexport class TenantManagementModule {\r\n static forChild(\r\n options: TenantManagementConfigOptions = {},\r\n ): ModuleWithProviders<TenantManagementModule> {\r\n return {\r\n ngModule: TenantManagementModule,\r\n providers: [\r\n {\r\n provide: TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS,\r\n useValue: options.entityPropContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.createFormPropContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.editFormPropContributors,\r\n },\r\n TenantManagementExtensionsGuard,\r\n ],\r\n };\r\n }\r\n\r\n static forLazy(\r\n options: TenantManagementConfigOptions = {},\r\n ): NgModuleFactory<TenantManagementModule> {\r\n return new LazyModuleFactory(TenantManagementModule.forChild(options));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FormPropData","generateFormFromProps","finalize","Confirmation","ListService","EXTENSIONS_IDENTIFIER","Component","EntityAction","EntityProp","FormProp","Validators","getPasswordValidators","ToolbarAction","InjectionToken","ExtensionsService","ConfigStateService","getObjectExtensionEntitiesFromStore","map","mapEntitiesToContributors","tap","mergeWithDefaultActions","mergeWithDefaultProps","mapTo","Injectable","RouterOutletComponent","AuthGuard","PermissionGuard","ReplaceableRouteContainerComponent","RouterModule","NgModule","LazyModuleFactory","NgxValidateCoreModule","CoreModule","ThemeSharedModule","NgbDropdownModule","FeatureManagementModule","UiExtensionsModule"],"mappings":"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"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { ListService } from '@abp/ng.core';
|
|
2
|
-
import { TenantService } from '@abp/ng.tenant-management/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 { FormBuilder } from '@angular/forms';
|
|
7
|
-
import { finalize } 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.tenant-management/proxy";
|
|
12
|
-
import * as i4 from "@angular/forms";
|
|
13
|
-
import * as i5 from "@abp/ng.theme.shared/extensions";
|
|
14
|
-
import * as i6 from "@abp/ng.feature-management";
|
|
15
|
-
import * as i7 from "@ngx-validate/core";
|
|
16
|
-
export class TenantsComponent {
|
|
17
|
-
constructor(list, injector, confirmationService, service, fb) {
|
|
18
|
-
this.list = list;
|
|
19
|
-
this.injector = injector;
|
|
20
|
-
this.confirmationService = confirmationService;
|
|
21
|
-
this.service = service;
|
|
22
|
-
this.fb = fb;
|
|
23
|
-
this.data = { items: [], totalCount: 0 };
|
|
24
|
-
this.visibleFeatures = false;
|
|
25
|
-
this.modalBusy = false;
|
|
26
|
-
this.featureManagementKey = "FeatureManagement.FeatureManagementComponent" /* FeatureManagement */;
|
|
27
|
-
this.onVisibleFeaturesChange = (value) => {
|
|
28
|
-
this.visibleFeatures = value;
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
get hasSelectedTenant() {
|
|
32
|
-
return Boolean(this.selected.id);
|
|
33
|
-
}
|
|
34
|
-
ngOnInit() {
|
|
35
|
-
this.hookToQuery();
|
|
36
|
-
}
|
|
37
|
-
createTenantForm() {
|
|
38
|
-
const data = new FormPropData(this.injector, this.selected);
|
|
39
|
-
this.tenantForm = generateFormFromProps(data);
|
|
40
|
-
}
|
|
41
|
-
addTenant() {
|
|
42
|
-
this.selected = {};
|
|
43
|
-
this.createTenantForm();
|
|
44
|
-
this.isModalVisible = true;
|
|
45
|
-
}
|
|
46
|
-
editTenant(id) {
|
|
47
|
-
this.service.get(id).subscribe(res => {
|
|
48
|
-
this.selected = res;
|
|
49
|
-
this.createTenantForm();
|
|
50
|
-
this.isModalVisible = true;
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
save() {
|
|
54
|
-
if (!this.tenantForm.valid || this.modalBusy)
|
|
55
|
-
return;
|
|
56
|
-
this.modalBusy = true;
|
|
57
|
-
const { id } = this.selected;
|
|
58
|
-
(id
|
|
59
|
-
? this.service.update(id, Object.assign(Object.assign({}, this.selected), this.tenantForm.value))
|
|
60
|
-
: this.service.create(this.tenantForm.value))
|
|
61
|
-
.pipe(finalize(() => (this.modalBusy = false)))
|
|
62
|
-
.subscribe(() => {
|
|
63
|
-
this.isModalVisible = false;
|
|
64
|
-
this.list.get();
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
delete(id, name) {
|
|
68
|
-
this.confirmationService
|
|
69
|
-
.warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', {
|
|
70
|
-
messageLocalizationParams: [name],
|
|
71
|
-
})
|
|
72
|
-
.subscribe((status) => {
|
|
73
|
-
if (status === Confirmation.Status.confirm) {
|
|
74
|
-
this.service.delete(id).subscribe(() => this.list.get());
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
hookToQuery() {
|
|
79
|
-
this.list
|
|
80
|
-
.hookToQuery(query => this.service.getList(query))
|
|
81
|
-
.subscribe(res => {
|
|
82
|
-
this.data = res;
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
onSharedDatabaseChange(value) {
|
|
86
|
-
if (!value) {
|
|
87
|
-
setTimeout(() => {
|
|
88
|
-
const defaultConnectionString = document.getElementById('defaultConnectionString');
|
|
89
|
-
if (defaultConnectionString) {
|
|
90
|
-
defaultConnectionString.focus();
|
|
91
|
-
}
|
|
92
|
-
}, 0);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
openFeaturesModal(providerKey) {
|
|
96
|
-
this.providerKey = providerKey;
|
|
97
|
-
setTimeout(() => {
|
|
98
|
-
this.visibleFeatures = true;
|
|
99
|
-
}, 0);
|
|
100
|
-
}
|
|
101
|
-
sort(data) {
|
|
102
|
-
const { prop, dir } = data.sorts[0];
|
|
103
|
-
this.list.sortKey = prop;
|
|
104
|
-
this.list.sortOrder = dir;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
TenantsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TenantsComponent, deps: [{ token: i1.ListService }, { token: i0.Injector }, { token: i2.ConfirmationService }, { token: i3.TenantService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
-
TenantsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TenantsComponent, selector: "abp-tenants", providers: [
|
|
109
|
-
ListService,
|
|
110
|
-
{
|
|
111
|
-
provide: EXTENSIONS_IDENTIFIER,
|
|
112
|
-
useValue: "TenantManagement.TenantsComponent" /* Tenants */,
|
|
113
|
-
},
|
|
114
|
-
], ngImport: i0, template: "<div id=\"wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpTenantManagement::Tenants' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items || []\"\r\n [recordsTotal]=\"data.totalCount || 0\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{\r\n (selected?.id ? 'AbpTenantManagement::Edit' : 'AbpTenantManagement::NewTenant')\r\n | abpLocalization\r\n }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"tenantForm\" (ngSubmit)=\"save()\" [validateOnSubmit]=\"true\">\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" (click)=\"save()\" [disabled]=\"tenantForm?.invalid\">{{\r\n 'AbpTenantManagement::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-feature-management\r\n *abpReplaceableTemplate=\"{\r\n inputs: {\r\n providerName: { value: 'T' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visibleFeatures, twoWay: true }\r\n },\r\n outputs: { visibleChange: $any(onVisibleFeaturesChange) },\r\n componentKey: featureManagementKey\r\n }\"\r\n [(visible)]=\"visibleFeatures\"\r\n providerName=\"T\"\r\n [providerKey]=\"providerKey\"\r\n>\r\n</abp-feature-management>\r\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: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i6.FeatureManagementComponent, selector: "abp-feature-management", inputs: ["providerKey", "providerName", "visible"], outputs: ["visibleChange"], exportAs: ["abpFeatureManagement"] }], 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: 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: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TenantsComponent, decorators: [{
|
|
116
|
-
type: Component,
|
|
117
|
-
args: [{
|
|
118
|
-
selector: 'abp-tenants',
|
|
119
|
-
templateUrl: './tenants.component.html',
|
|
120
|
-
providers: [
|
|
121
|
-
ListService,
|
|
122
|
-
{
|
|
123
|
-
provide: EXTENSIONS_IDENTIFIER,
|
|
124
|
-
useValue: "TenantManagement.TenantsComponent" /* Tenants */,
|
|
125
|
-
},
|
|
126
|
-
],
|
|
127
|
-
}]
|
|
128
|
-
}], ctorParameters: function () { return [{ type: i1.ListService }, { type: i0.Injector }, { type: i2.ConfirmationService }, { type: i3.TenantService }, { type: i4.FormBuilder }]; } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90ZW5hbnQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvdGVuYW50cy90ZW5hbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RlbmFudC1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFFM0QsT0FBTyxFQUE4QixhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixZQUFZLEVBQ1oscUJBQXFCLEdBQ3RCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBYzFDLE1BQU0sT0FBTyxnQkFBZ0I7SUF5QjNCLFlBQ2tCLElBQWtDLEVBQzFDLFFBQWtCLEVBQ2xCLG1CQUF3QyxFQUN4QyxPQUFzQixFQUN0QixFQUFlO1FBSlAsU0FBSSxHQUFKLElBQUksQ0FBOEI7UUFDMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQTdCekIsU0FBSSxHQUE4QixFQUFFLEtBQUss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RUFBRSxxQkFBcUI7WUFDOUIsUUFBUSxtREFBcUM7U0FDOUM7S0FDRiwwQkN2QkgseTJFQXlFQTs0RkRoRGEsZ0JBQWdCO2tCQVg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUU7d0JBQ1QsV0FBVzt3QkFDWDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLG1EQUFxQzt5QkFDOUM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8gfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBlRmVhdHVyZU1hbmFnZW1lbnRDb21wb25lbnRzIH0gZnJvbSAnQGFicC9uZy5mZWF0dXJlLW1hbmFnZW1lbnQnO1xyXG5pbXBvcnQgeyBHZXRUZW5hbnRzSW5wdXQsIFRlbmFudER0bywgVGVuYW50U2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvcHJveHknO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb24sIENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7XHJcbiAgRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gIEZvcm1Qcm9wRGF0YSxcclxuICBnZW5lcmF0ZUZvcm1Gcm9tUHJvcHMsXHJcbn0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZVRlbmFudE1hbmFnZW1lbnRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tcG9uZW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC10ZW5hbnRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGVuYW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBMaXN0U2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gICAgICB1c2VWYWx1ZTogZVRlbmFudE1hbmFnZW1lbnRDb21wb25lbnRzLlRlbmFudHMsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZW5hbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBkYXRhOiBQYWdlZFJlc3VsdER0bzxUZW5hbnREdG8+ID0geyBpdGVtczogW10sIHRvdGFsQ291bnQ6IDAgfTtcclxuXHJcbiAgc2VsZWN0ZWQhOiBUZW5hbnREdG87XHJcblxyXG4gIHRlbmFudEZvcm0hOiBGb3JtR3JvdXA7XHJcblxyXG4gIGlzTW9kYWxWaXNpYmxlITogYm9vbGVhbjtcclxuXHJcbiAgdmlzaWJsZUZlYXR1cmVzID0gZmFsc2U7XHJcblxyXG4gIHByb3ZpZGVyS2V5ITogc3RyaW5nO1xyXG5cclxuICBtb2RhbEJ1c3kgPSBmYWxzZTtcclxuXHJcbiAgZmVhdHVyZU1hbmFnZW1lbnRLZXkgPSBlRmVhdHVyZU1hbmFnZW1lbnRDb21wb25lbnRzLkZlYXR1cmVNYW5hZ2VtZW50O1xyXG5cclxuICBnZXQgaGFzU2VsZWN0ZWRUZW5hbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnNlbGVjdGVkLmlkKTtcclxuICB9XHJcblxyXG4gIG9uVmlzaWJsZUZlYXR1cmVzQ2hhbmdlID0gKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLnZpc2libGVGZWF0dXJlcyA9IHZhbHVlO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlPEdldFRlbmFudHNJbnB1dD4sXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgc2VydmljZTogVGVuYW50U2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmhvb2tUb1F1ZXJ5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRlbmFudEZvcm0oKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1Qcm9wRGF0YSh0aGlzLmluamVjdG9yLCB0aGlzLnNlbGVjdGVkKTtcclxuICAgIHRoaXMudGVuYW50Rm9ybSA9IGdlbmVyYXRlRm9ybUZyb21Qcm9wcyhkYXRhKTtcclxuICB9XHJcblxyXG4gIGFkZFRlbmFudCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSB7fSBhcyBUZW5hbnREdG87XHJcbiAgICB0aGlzLmNyZWF0ZVRlbmFudEZvcm0oKTtcclxuICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZWRpdFRlbmFudChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0KGlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHJlcztcclxuICAgICAgdGhpcy5jcmVhdGVUZW5hbnRGb3JtKCk7XHJcbiAgICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgaWYgKCF0aGlzLnRlbmFudEZvcm0udmFsaWQgfHwgdGhpcy5tb2RhbEJ1c3kpIHJldHVybjtcclxuICAgIHRoaXMubW9kYWxCdXN5ID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB7IGlkIH0gPSB0aGlzLnNlbGVjdGVkO1xyXG5cclxuICAgIChpZFxyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoaWQsIHsgLi4udGhpcy5zZWxlY3RlZCwgLi4udGhpcy50ZW5hbnRGb3JtLnZhbHVlIH0pXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLnRlbmFudEZvcm0udmFsdWUpXHJcbiAgICApXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLm1vZGFsQnVzeSA9IGZhbHNlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgICAgIC53YXJuKFxyXG4gICAgICAgICdBYnBUZW5hbnRNYW5hZ2VtZW50OjpUZW5hbnREZWxldGlvbkNvbmZpcm1hdGlvbk1lc3NhZ2UnLFxyXG4gICAgICAgICdBYnBUZW5hbnRNYW5hZ2VtZW50OjpBcmVZb3VTdXJlJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zOiBbbmFtZV0sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICBpZiAoc3RhdHVzID09PSBDb25maXJtYXRpb24uU3RhdHVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxpc3QuZ2V0KCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBob29rVG9RdWVyeSgpIHtcclxuICAgIHRoaXMubGlzdFxyXG4gICAgICAuaG9va1RvUXVlcnkocXVlcnkgPT4gdGhpcy5zZXJ2aWNlLmdldExpc3QocXVlcnkpKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gcmVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2hhcmVkRGF0YWJhc2VDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdENvbm5lY3Rpb25TdHJpbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgICAgICdkZWZhdWx0Q29ubmVjdGlvblN0cmluZycsXHJcbiAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGlmIChkZWZhdWx0Q29ubmVjdGlvblN0cmluZykge1xyXG4gICAgICAgICAgZGVmYXVsdENvbm5lY3Rpb25TdHJpbmcuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkZlYXR1cmVzTW9kYWwocHJvdmlkZXJLZXk6IHN0cmluZykge1xyXG4gICAgdGhpcy5wcm92aWRlcktleSA9IHByb3ZpZGVyS2V5O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudmlzaWJsZUZlYXR1cmVzID0gdHJ1ZTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgc29ydChkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgcHJvcCwgZGlyIH0gPSBkYXRhLnNvcnRzWzBdO1xyXG4gICAgdGhpcy5saXN0LnNvcnRLZXkgPSBwcm9wO1xyXG4gICAgdGhpcy5saXN0LnNvcnRPcmRlciA9IGRpcjtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBpZD1cIndyYXBwZXJcIiBjbGFzcz1cImNhcmRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtbWQtNlwiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnQWJwVGVuYW50TWFuYWdlbWVudDo6VGVuYW50cycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2g1PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIGNvbCBjb2wtbWQtNlwiPlxyXG4gICAgICAgIDxhYnAtcGFnZS10b29sYmFyIFtyZWNvcmRdPVwiZGF0YS5pdGVtc1wiPjwvYWJwLXBhZ2UtdG9vbGJhcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgPGRpdiBpZD1cImRhdGEtdGFibGVzLXRhYmxlLWZpbHRlclwiIGNsYXNzPVwiZGF0YS10YWJsZXMtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FicFVpOjpQYWdlclNlYXJjaCcgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJsaXN0LmZpbHRlclwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YWJwLWV4dGVuc2libGUtdGFibGVcclxuICAgICAgW2RhdGFdPVwiZGF0YS5pdGVtcyB8fCBbXVwiXHJcbiAgICAgIFtyZWNvcmRzVG90YWxdPVwiZGF0YS50b3RhbENvdW50IHx8IDBcIlxyXG4gICAgICBbbGlzdF09XCJsaXN0XCJcclxuICAgID48L2FicC1leHRlbnNpYmxlLXRhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJpc01vZGFsVmlzaWJsZVwiIFtidXN5XT1cIm1vZGFsQnVzeVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7e1xyXG4gICAgICAgIChzZWxlY3RlZD8uaWQgPyAnQWJwVGVuYW50TWFuYWdlbWVudDo6RWRpdCcgOiAnQWJwVGVuYW50TWFuYWdlbWVudDo6TmV3VGVuYW50JylcclxuICAgICAgICAgIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICAgIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwidGVuYW50Rm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIiBbdmFsaWRhdGVPblN1Ym1pdF09XCJ0cnVlXCI+XHJcbiAgICAgIDxhYnAtZXh0ZW5zaWJsZS1mb3JtIFtzZWxlY3RlZFJlY29yZF09XCJzZWxlY3RlZFwiPjwvYWJwLWV4dGVuc2libGUtZm9ybT5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gYWJwQ2xvc2UgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIj5cclxuICAgICAge3sgJ0FicFRlbmFudE1hbmFnZW1lbnQ6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cInRlbmFudEZvcm0/LmludmFsaWRcIj57e1xyXG4gICAgICAnQWJwVGVuYW50TWFuYWdlbWVudDo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgIH19PC9hYnAtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1mZWF0dXJlLW1hbmFnZW1lbnRcclxuICAqYWJwUmVwbGFjZWFibGVUZW1wbGF0ZT1cIntcclxuICAgIGlucHV0czoge1xyXG4gICAgICBwcm92aWRlck5hbWU6IHsgdmFsdWU6ICdUJyB9LFxyXG4gICAgICBwcm92aWRlcktleTogeyB2YWx1ZTogcHJvdmlkZXJLZXkgfSxcclxuICAgICAgdmlzaWJsZTogeyB2YWx1ZTogdmlzaWJsZUZlYXR1cmVzLCB0d29XYXk6IHRydWUgfVxyXG4gICAgfSxcclxuICAgIG91dHB1dHM6IHsgdmlzaWJsZUNoYW5nZTogJGFueShvblZpc2libGVGZWF0dXJlc0NoYW5nZSkgfSxcclxuICAgIGNvbXBvbmVudEtleTogZmVhdHVyZU1hbmFnZW1lbnRLZXlcclxuICB9XCJcclxuICBbKHZpc2libGUpXT1cInZpc2libGVGZWF0dXJlc1wiXHJcbiAgcHJvdmlkZXJOYW1lPVwiVFwiXHJcbiAgW3Byb3ZpZGVyS2V5XT1cInByb3ZpZGVyS2V5XCJcclxuPlxyXG48L2FicC1mZWF0dXJlLW1hbmFnZW1lbnQ+XHJcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.tenant-management-config.js","sources":["../../../../packages/tenant-management/config/src/providers/route.provider.ts","../../../../packages/tenant-management/config/src/tenant-management-config.module.ts","../../../../packages/tenant-management/config/src/abp-ng.tenant-management-config.ts"],"sourcesContent":["import { eLayoutType, RoutesService } from '@abp/ng.core';\r\nimport { eThemeSharedRouteNames } from '@abp/ng.theme.shared';\r\nimport { APP_INITIALIZER } from '@angular/core';\r\nimport { eTenantManagementPolicyNames } from '../enums/policy-names';\r\nimport { eTenantManagementRouteNames } from '../enums/route-names';\r\n\r\nexport const TENANT_MANAGEMENT_ROUTE_PROVIDERS = [\r\n { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },\r\n];\r\n\r\nexport function configureRoutes(routes: RoutesService) {\r\n return () => {\r\n routes.add([\r\n {\r\n path: undefined,\r\n name: eTenantManagementRouteNames.TenantManagement,\r\n parentName: eThemeSharedRouteNames.Administration,\r\n requiredPolicy: eTenantManagementPolicyNames.TenantManagement,\r\n layout: eLayoutType.application,\r\n iconClass: 'fa fa-users',\r\n order: 2,\r\n },\r\n {\r\n path: '/tenant-management/tenants',\r\n name: eTenantManagementRouteNames.Tenants,\r\n parentName: eTenantManagementRouteNames.TenantManagement,\r\n requiredPolicy: eTenantManagementPolicyNames.Tenants,\r\n order: 1,\r\n },\r\n ]);\r\n };\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TENANT_MANAGEMENT_ROUTE_PROVIDERS } from './providers/route.provider';\r\n\r\n@NgModule()\r\nexport class TenantManagementConfigModule {\r\n static forRoot(): ModuleWithProviders<TenantManagementConfigModule> {\r\n return {\r\n ngModule: TenantManagementConfigModule,\r\n providers: [TENANT_MANAGEMENT_ROUTE_PROVIDERS],\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAMa,iCAAiC,GAAG;IAC/C,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;EAC7F;SAEc,eAAe,CAAC,MAAqB;IACnD,OAAO;QACL,MAAM,CAAC,GAAG,CAAC;YACT;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,UAAU;gBACV,cAAc;gBACd,MAAM;gBACN,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,IAAI;gBACJ,UAAU;gBACV,cAAc;gBACd,KAAK,EAAE,CAAC;aACT;SACF,CAAC,CAAC;KACJ,CAAC;AACJ;;MC3Ba,4BAA4B;IACvC,OAAO,OAAO;QACZ,OAAO;YACL,QAAQ,EAAE,4BAA4B;YACtC,SAAS,EAAE,CAAC,iCAAiC,CAAC;SAC/C,CAAC;KACH;;0HANU,4BAA4B;2HAA5B,4BAA4B;2HAA5B,4BAA4B;4FAA5B,4BAA4B;kBADxC,QAAQ;;;ACHT;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.tenant-management-proxy.js","sources":["../../../../packages/tenant-management/proxy/src/lib/proxy/tenant.service.ts","../../../../packages/tenant-management/proxy/src/abp-ng.tenant-management-proxy.ts"],"sourcesContent":["import type { GetTenantsInput, TenantCreateDto, TenantDto, TenantUpdateDto } from './models';\r\nimport { RestService } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantService {\r\n apiName = 'AbpTenantManagement';\r\n\r\n create = (input: TenantCreateDto) =>\r\n this.restService.request<any, TenantDto>({\r\n method: 'POST',\r\n url: '/api/multi-tenancy/tenants',\r\n body: input,\r\n },\r\n { apiName: this.apiName });\r\n\r\n delete = (id: string) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/multi-tenancy/tenants/${id}`,\r\n },\r\n { apiName: this.apiName });\r\n\r\n deleteDefaultConnectionString = (id: string) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/multi-tenancy/tenants/${id}/default-connection-string`,\r\n },\r\n { apiName: this.apiName });\r\n\r\n get = (id: string) =>\r\n this.restService.request<any, TenantDto>({\r\n method: 'GET',\r\n url: `/api/multi-tenancy/tenants/${id}`,\r\n },\r\n { apiName: this.apiName });\r\n\r\n getDefaultConnectionString = (id: string) =>\r\n this.restService.request<any, string>({\r\n method: 'GET',\r\n responseType: 'text',\r\n url: `/api/multi-tenancy/tenants/${id}/default-connection-string`,\r\n },\r\n { apiName: this.apiName });\r\n\r\n getList = (input: GetTenantsInput) =>\r\n this.restService.request<any, PagedResultDto<TenantDto>>({\r\n method: 'GET',\r\n url: '/api/multi-tenancy/tenants',\r\n params: { filter: input.filter, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName });\r\n\r\n update = (id: string, input: TenantUpdateDto) =>\r\n this.restService.request<any, TenantDto>({\r\n method: 'PUT',\r\n url: `/api/multi-tenancy/tenants/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName });\r\n\r\n updateDefaultConnectionString = (id: string, defaultConnectionString: string) =>\r\n this.restService.request<any, void>({\r\n method: 'PUT',\r\n url: `/api/multi-tenancy/tenants/${id}/default-connection-string`,\r\n params: { defaultConnectionString },\r\n },\r\n { apiName: this.apiName });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAQa,aAAa;IAgExB,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QA/D5C,YAAO,GAAG,qBAAqB,CAAC;QAEhC,WAAM,GAAG,CAAC,KAAsB,KAC9B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAiB;YACvC,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,4BAA4B;YACjC,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,WAAM,GAAG,CAAC,EAAU,KAClB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;YAClC,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,8BAA8B,EAAE,EAAE;SACxC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,kCAA6B,GAAG,CAAC,EAAU,KACzC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;YAClC,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,8BAA8B,EAAE,4BAA4B;SAClE,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,QAAG,GAAG,CAAC,EAAU,KACf,IAAI,CAAC,WAAW,CAAC,OAAO,CAAiB;YACvC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,8BAA8B,EAAE,EAAE;SACxC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,+BAA0B,GAAG,CAAC,EAAU,KACtC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAc;YACpC,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,MAAM;YACpB,GAAG,EAAE,8BAA8B,EAAE,4BAA4B;SAClE,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,YAAO,GAAG,CAAC,KAAsB,KAC/B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAiC;YACvD,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,4BAA4B;YACjC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;SAC3H,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,WAAM,GAAG,CAAC,EAAU,EAAE,KAAsB,KAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAiB;YACvC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,8BAA8B,EAAE,EAAE;YACvC,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,kCAA6B,GAAG,CAAC,EAAU,EAAE,uBAA+B,KAC1E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;YAClC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,8BAA8B,EAAE,4BAA4B;YACjE,MAAM,EAAE,EAAE,uBAAuB,EAAE;SACpC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAEmB;;2GAhErC,aAAa;+GAAb,aAAa,cAFZ,MAAM;4FAEP,aAAa;kBAHzB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;ACPD;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.tenant-management.js","sources":["../../../../packages/tenant-management/src/lib/components/tenants/tenants.component.ts","../../../../packages/tenant-management/src/lib/components/tenants/tenants.component.html","../../../../packages/tenant-management/src/lib/defaults/default-tenants-entity-actions.ts","../../../../packages/tenant-management/src/lib/defaults/default-tenants-entity-props.ts","../../../../packages/tenant-management/src/lib/defaults/default-tenants-form-props.ts","../../../../packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts","../../../../packages/tenant-management/src/lib/tokens/extensions.token.ts","../../../../packages/tenant-management/src/lib/guards/extensions.guard.ts","../../../../packages/tenant-management/src/lib/tenant-management-routing.module.ts","../../../../packages/tenant-management/src/lib/tenant-management.module.ts","../../../../packages/tenant-management/src/abp-ng.tenant-management.ts"],"sourcesContent":["import { ListService, PagedResultDto } from '@abp/ng.core';\r\nimport { eFeatureManagementComponents } from '@abp/ng.feature-management';\r\nimport { GetTenantsInput, TenantDto, TenantService } from '@abp/ng.tenant-management/proxy';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Component, Injector, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { eTenantManagementComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-tenants',\r\n templateUrl: './tenants.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eTenantManagementComponents.Tenants,\r\n },\r\n ],\r\n})\r\nexport class TenantsComponent implements OnInit {\r\n data: PagedResultDto<TenantDto> = { items: [], totalCount: 0 };\r\n\r\n selected!: TenantDto;\r\n\r\n tenantForm!: FormGroup;\r\n\r\n isModalVisible!: boolean;\r\n\r\n visibleFeatures = false;\r\n\r\n providerKey!: string;\r\n\r\n modalBusy = false;\r\n\r\n featureManagementKey = eFeatureManagementComponents.FeatureManagement;\r\n\r\n get hasSelectedTenant(): boolean {\r\n return Boolean(this.selected.id);\r\n }\r\n\r\n onVisibleFeaturesChange = (value: boolean) => {\r\n this.visibleFeatures = value;\r\n };\r\n\r\n constructor(\r\n public readonly list: ListService<GetTenantsInput>,\r\n private injector: Injector,\r\n private confirmationService: ConfirmationService,\r\n private service: TenantService,\r\n private fb: FormBuilder,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n private createTenantForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.tenantForm = generateFormFromProps(data);\r\n }\r\n\r\n addTenant() {\r\n this.selected = {} as TenantDto;\r\n this.createTenantForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n editTenant(id: string) {\r\n this.service.get(id).subscribe(res => {\r\n this.selected = res;\r\n this.createTenantForm();\r\n this.isModalVisible = true;\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.tenantForm.valid || this.modalBusy) return;\r\n this.modalBusy = true;\r\n\r\n const { id } = this.selected;\r\n\r\n (id\r\n ? this.service.update(id, { ...this.selected, ...this.tenantForm.value })\r\n : this.service.create(this.tenantForm.value)\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn(\r\n 'AbpTenantManagement::TenantDeletionConfirmationMessage',\r\n 'AbpTenantManagement::AreYouSure',\r\n {\r\n messageLocalizationParams: [name],\r\n },\r\n )\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n hookToQuery() {\r\n this.list\r\n .hookToQuery(query => this.service.getList(query))\r\n .subscribe(res => {\r\n this.data = res;\r\n });\r\n }\r\n\r\n onSharedDatabaseChange(value: boolean) {\r\n if (!value) {\r\n setTimeout(() => {\r\n const defaultConnectionString = document.getElementById(\r\n 'defaultConnectionString',\r\n ) as HTMLInputElement;\r\n if (defaultConnectionString) {\r\n defaultConnectionString.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n openFeaturesModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visibleFeatures = true;\r\n }, 0);\r\n }\r\n\r\n sort(data: any) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n}\r\n","<div id=\"wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpTenantManagement::Tenants' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items || []\"\r\n [recordsTotal]=\"data.totalCount || 0\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{\r\n (selected?.id ? 'AbpTenantManagement::Edit' : 'AbpTenantManagement::NewTenant')\r\n | abpLocalization\r\n }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"tenantForm\" (ngSubmit)=\"save()\" [validateOnSubmit]=\"true\">\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" (click)=\"save()\" [disabled]=\"tenantForm?.invalid\">{{\r\n 'AbpTenantManagement::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-feature-management\r\n *abpReplaceableTemplate=\"{\r\n inputs: {\r\n providerName: { value: 'T' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visibleFeatures, twoWay: true }\r\n },\r\n outputs: { visibleChange: $any(onVisibleFeaturesChange) },\r\n componentKey: featureManagementKey\r\n }\"\r\n [(visible)]=\"visibleFeatures\"\r\n providerName=\"T\"\r\n [providerKey]=\"providerKey\"\r\n>\r\n</abp-feature-management>\r\n","import { TenantDto } from '@abp/ng.tenant-management/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { TenantsComponent } from '../components/tenants/tenants.component';\r\n\r\nexport const DEFAULT_TENANTS_ENTITY_ACTIONS = EntityAction.createMany<TenantDto>([\r\n {\r\n text: 'AbpTenantManagement::Edit',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.editTenant(data.record.id);\r\n },\r\n permission: 'AbpTenantManagement.Tenants.Update',\r\n },\r\n {\r\n text: 'AbpTenantManagement::Permission:ManageFeatures',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.openFeaturesModal(data.record.id);\r\n },\r\n permission: 'AbpTenantManagement.Tenants.ManageFeatures',\r\n },\r\n {\r\n text: 'AbpTenantManagement::Delete',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.delete(data.record.id, data.record.name);\r\n },\r\n permission: 'AbpTenantManagement.Tenants.Delete',\r\n },\r\n]);\r\n","import { TenantDto } from '@abp/ng.tenant-management/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\n\r\nexport const DEFAULT_TENANTS_ENTITY_PROPS = EntityProp.createMany<TenantDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpTenantManagement::TenantName',\r\n sortable: true,\r\n },\r\n]);\r\n","import { TenantCreateDto, TenantUpdateDto } from '@abp/ng.tenant-management/proxy';\r\nimport { getPasswordValidators } from '@abp/ng.theme.shared';\r\nimport { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_TENANTS_CREATE_FORM_PROPS = FormProp.createMany<\r\n TenantCreateDto | TenantUpdateDto\r\n>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n id: 'name',\r\n displayName: 'AbpTenantManagement::TenantName',\r\n validators: () => [Validators.required, Validators.maxLength(256)],\r\n },\r\n {\r\n type: ePropType.Email,\r\n name: 'adminEmailAddress',\r\n displayName: 'AbpTenantManagement::DisplayName:AdminEmailAddress',\r\n id: 'admin-email-address',\r\n validators: () => [Validators.required, Validators.maxLength(256), Validators.email],\r\n },\r\n {\r\n type: ePropType.Password,\r\n name: 'adminPassword',\r\n displayName: 'AbpTenantManagement::DisplayName:AdminPassword',\r\n id: 'admin-password',\r\n autocomplete: 'new-password',\r\n validators: data => [Validators.required, ...getPasswordValidators({ get: data.getInjected })],\r\n },\r\n]);\r\n\r\nexport const DEFAULT_TENANTS_EDIT_FORM_PROPS = DEFAULT_TENANTS_CREATE_FORM_PROPS.slice(0, 1);\r\n","import { TenantDto } from '@abp/ng.tenant-management/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { TenantsComponent } from '../components/tenants/tenants.component';\r\n\r\nexport const DEFAULT_TENANTS_TOOLBAR_ACTIONS = ToolbarAction.createMany<TenantDto[]>([\r\n {\r\n text: 'AbpTenantManagement::ManageHostFeatures',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.openFeaturesModal('');\r\n },\r\n permission: 'FeatureManagement.ManageHostFeatures',\r\n icon: 'fa fa-cog',\r\n },\r\n {\r\n text: 'AbpTenantManagement::NewTenant',\r\n action: data => {\r\n const component = data.getInjected(TenantsComponent);\r\n component.addTenant();\r\n },\r\n permission: 'AbpTenantManagement.Tenants.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { TenantCreateDto, TenantDto, TenantUpdateDto } from '@abp/ng.tenant-management/proxy';\r\nimport {\r\n CreateFormPropContributorCallback,\r\n EditFormPropContributorCallback,\r\n EntityActionContributorCallback,\r\n EntityPropContributorCallback,\r\n ToolbarActionContributorCallback,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { DEFAULT_TENANTS_ENTITY_ACTIONS } from '../defaults/default-tenants-entity-actions';\r\nimport { DEFAULT_TENANTS_ENTITY_PROPS } from '../defaults/default-tenants-entity-props';\r\nimport {\r\n DEFAULT_TENANTS_CREATE_FORM_PROPS,\r\n DEFAULT_TENANTS_EDIT_FORM_PROPS,\r\n} from '../defaults/default-tenants-form-props';\r\nimport { DEFAULT_TENANTS_TOOLBAR_ACTIONS } from '../defaults/default-tenants-toolbar-actions';\r\nimport { eTenantManagementComponents } from '../enums/components';\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_CREATE_FORM_PROPS,\r\n};\r\n\r\nexport const DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS = {\r\n [eTenantManagementComponents.Tenants]: DEFAULT_TENANTS_EDIT_FORM_PROPS,\r\n};\r\n\r\nexport const TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS =\r\n new InjectionToken<EntityActionContributors>('TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS =\r\n new InjectionToken<ToolbarActionContributors>('TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS =\r\n new InjectionToken<EntityPropContributors>('TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<CreateFormPropContributors>('TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS');\r\n\r\nexport const TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<EditFormPropContributors>('TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS');\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: EntityActionContributorCallback<TenantDto>[];\r\n}>;\r\ntype ToolbarActionContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: ToolbarActionContributorCallback<TenantDto[]>[];\r\n}>;\r\ntype EntityPropContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: EntityPropContributorCallback<TenantDto>[];\r\n}>;\r\ntype CreateFormPropContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: CreateFormPropContributorCallback<TenantCreateDto>[];\r\n}>;\r\ntype EditFormPropContributors = Partial<{\r\n [eTenantManagementComponents.Tenants]: EditFormPropContributorCallback<TenantUpdateDto>[];\r\n}>;\r\n","import { ConfigStateService } from '@abp/ng.core';\r\nimport {\r\n ExtensionsService,\r\n getObjectExtensionEntitiesFromStore,\r\n mapEntitiesToContributors,\r\n mergeWithDefaultActions,\r\n mergeWithDefaultProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map, mapTo, tap } from 'rxjs/operators';\r\nimport { eTenantManagementComponents } from '../enums/components';\r\nimport {\r\n TenantManagementCreateFormPropContributors,\r\n TenantManagementEditFormPropContributors,\r\n TenantManagementEntityActionContributors,\r\n TenantManagementEntityPropContributors,\r\n TenantManagementToolbarActionContributors,\r\n} from '../models/config-options';\r\nimport {\r\n DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS,\r\n DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS,\r\n DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS,\r\n TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from '../tokens/extensions.token';\r\n\r\n@Injectable()\r\nexport class TenantManagementExtensionsGuard implements CanActivate {\r\n constructor(private injector: Injector) {}\r\n\r\n canActivate(): Observable<boolean> {\r\n const extensions: ExtensionsService = this.injector.get(ExtensionsService);\r\n const actionContributors: TenantManagementEntityActionContributors =\r\n this.injector.get(TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n const toolbarContributors: TenantManagementToolbarActionContributors =\r\n this.injector.get(TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n const propContributors: TenantManagementEntityPropContributors =\r\n this.injector.get(TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n const createFormContributors: TenantManagementCreateFormPropContributors =\r\n this.injector.get(TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, null) || {};\r\n const editFormContributors: TenantManagementEditFormPropContributors =\r\n this.injector.get(TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n const configState = this.injector.get(ConfigStateService);\r\n return getObjectExtensionEntitiesFromStore(configState, 'TenantManagement').pipe(\r\n map(entities => ({\r\n [eTenantManagementComponents.Tenants]: entities.Tenant,\r\n })),\r\n mapEntitiesToContributors(configState, 'TenantManagement'),\r\n tap(objectExtensionContributors => {\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS,\r\n actionContributors,\r\n );\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS,\r\n toolbarContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.createFormProps,\r\n DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS,\r\n objectExtensionContributors.createForm,\r\n createFormContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.editFormProps,\r\n DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS,\r\n objectExtensionContributors.editForm,\r\n editFormContributors,\r\n );\r\n }),\r\n mapTo(true),\r\n );\r\n }\r\n}\r\n","import {\r\n AuthGuard,\r\n PermissionGuard,\r\n ReplaceableComponents,\r\n ReplaceableRouteContainerComponent,\r\n RouterOutletComponent,\r\n} from '@abp/ng.core';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TenantsComponent } from './components/tenants/tenants.component';\r\nimport { eTenantManagementComponents } from './enums/components';\r\nimport { TenantManagementExtensionsGuard } from './guards';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'tenants', pathMatch: 'full' },\r\n {\r\n path: '',\r\n component: RouterOutletComponent,\r\n canActivate: [AuthGuard, PermissionGuard, TenantManagementExtensionsGuard],\r\n children: [\r\n {\r\n path: 'tenants',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpTenantManagement.Tenants',\r\n replaceableComponent: {\r\n key: eTenantManagementComponents.Tenants,\r\n defaultComponent: TenantsComponent,\r\n } as ReplaceableComponents.RouteData<TenantsComponent>,\r\n },\r\n },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class TenantManagementRoutingModule {}\r\n","import { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { FeatureManagementModule } from '@abp/ng.feature-management';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';\r\nimport { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { TenantsComponent } from './components/tenants/tenants.component';\r\nimport { TenantManagementExtensionsGuard } from './guards/extensions.guard';\r\nimport { TenantManagementConfigOptions } from './models/config-options';\r\nimport { TenantManagementRoutingModule } from './tenant-management-routing.module';\r\nimport {\r\n TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS,\r\n TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\n\r\n@NgModule({\r\n declarations: [TenantsComponent],\r\n exports: [TenantsComponent],\r\n imports: [\r\n TenantManagementRoutingModule,\r\n NgxValidateCoreModule,\r\n CoreModule,\r\n ThemeSharedModule,\r\n NgbDropdownModule,\r\n FeatureManagementModule,\r\n UiExtensionsModule,\r\n ],\r\n})\r\nexport class TenantManagementModule {\r\n static forChild(\r\n options: TenantManagementConfigOptions = {},\r\n ): ModuleWithProviders<TenantManagementModule> {\r\n return {\r\n ngModule: TenantManagementModule,\r\n providers: [\r\n {\r\n provide: TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS,\r\n useValue: options.entityPropContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.createFormPropContributors,\r\n },\r\n {\r\n provide: TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.editFormPropContributors,\r\n },\r\n TenantManagementExtensionsGuard,\r\n ],\r\n };\r\n }\r\n\r\n static forLazy(\r\n options: TenantManagementConfigOptions = {},\r\n ): NgModuleFactory<TenantManagementModule> {\r\n return new LazyModuleFactory(TenantManagementModule.forChild(options));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|