@posiwise/admin-module 0.0.227 → 0.0.228
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.
|
@@ -9,6 +9,8 @@ import { NgxGpAutocompleteModule } from '@angular-magic/ngx-gp-autocomplete';
|
|
|
9
9
|
import * as i1 from '@posiwise/admin-module-utils';
|
|
10
10
|
import { AppAdmin, AdminService, AdminDataService } from '@posiwise/admin-module-utils';
|
|
11
11
|
import { AppConfigService } from '@posiwise/app-config-service';
|
|
12
|
+
import * as i5$2 from '@posiwise/app-loader';
|
|
13
|
+
import { AppLoaderModule } from '@posiwise/app-loader';
|
|
12
14
|
import * as i1$1 from '@posiwise/common-services';
|
|
13
15
|
import { PermissionService, ValidationService, FormHelperService, PrimeNgHelper, SubscriptionService } from '@posiwise/common-services';
|
|
14
16
|
import { CoreTranslocoModule } from '@posiwise/core-transloco';
|
|
@@ -147,6 +149,8 @@ const baseUrl = '/admin';
|
|
|
147
149
|
const ROUTERS = {
|
|
148
150
|
globalConfigDetails: `${baseUrl}/global-config/`,
|
|
149
151
|
adminCredentialsDetails: `${baseUrl}/credentials/`,
|
|
152
|
+
adminOauthClients: `${baseUrl}/oauth-clients/list`,
|
|
153
|
+
adminOauthClientsDetails: `${baseUrl}/oauth-clients/`,
|
|
150
154
|
subscriptionCredentialDetails: `${baseUrl}/credentials/subscription/`,
|
|
151
155
|
newsletter: `${baseUrl}/newsletter`,
|
|
152
156
|
mailerDetails: `${baseUrl}/mailers/`,
|
|
@@ -4961,6 +4965,182 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
4961
4965
|
args: [{ selector: 'pw-newsletter', template: `<pw-tabs [items]="items"></pw-tabs>`, standalone: false, styles: [".text-truncate{max-width:150px}.card-body{min-height:65vh}\n"] }]
|
|
4962
4966
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
4963
4967
|
|
|
4968
|
+
class OauthClientsComponent extends AppBaseComponent {
|
|
4969
|
+
constructor(oauthClientService, injector, cdr, confirmDialog) {
|
|
4970
|
+
super(injector);
|
|
4971
|
+
this.oauthClientService = oauthClientService;
|
|
4972
|
+
this.cdr = cdr;
|
|
4973
|
+
this.confirmDialog = confirmDialog;
|
|
4974
|
+
this.clients = [];
|
|
4975
|
+
this.loading = true;
|
|
4976
|
+
this.isLoaded = false;
|
|
4977
|
+
this.routers = ROUTERS;
|
|
4978
|
+
}
|
|
4979
|
+
ngOnInit() {
|
|
4980
|
+
this.loadClients();
|
|
4981
|
+
}
|
|
4982
|
+
loadClients() {
|
|
4983
|
+
this.isLoaded = false;
|
|
4984
|
+
this.loading = true;
|
|
4985
|
+
this.oauthClientService
|
|
4986
|
+
.getAll()
|
|
4987
|
+
.subscribe((response) => {
|
|
4988
|
+
this.clients = response?.mcp_oauth_clients ?? [];
|
|
4989
|
+
})
|
|
4990
|
+
.add(() => {
|
|
4991
|
+
this.loading = false;
|
|
4992
|
+
this.isLoaded = true;
|
|
4993
|
+
this.cdr.markForCheck();
|
|
4994
|
+
});
|
|
4995
|
+
}
|
|
4996
|
+
onDelete(client) {
|
|
4997
|
+
this.confirmDialog
|
|
4998
|
+
.confirmDelete({
|
|
4999
|
+
textKey: 'Common.Confirm.Delete.Text',
|
|
5000
|
+
textParams: { name: client?.name }
|
|
5001
|
+
})
|
|
5002
|
+
.then(ok => {
|
|
5003
|
+
if (!ok) {
|
|
5004
|
+
return;
|
|
5005
|
+
}
|
|
5006
|
+
this.oauthClientService.delete(client.id).subscribe(() => {
|
|
5007
|
+
this.toast.success(this.translation.translate('Admin.OauthClients.DeletedMessage'));
|
|
5008
|
+
this.loadClients();
|
|
5009
|
+
});
|
|
5010
|
+
});
|
|
5011
|
+
}
|
|
5012
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: OauthClientsComponent, deps: [{ token: i1.McpOauthClientService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i3$1.ConfirmDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5013
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: OauthClientsComponent, isStandalone: false, selector: "pw-oauth-clients", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">{{ 'Admin.OauthClients.Title' | transloco }}</h2>\n <button class=\"btn btn-sm btn-outline-primary float-end\"\n data-cy=\"add-oauth-client\"\n [routerLink]=\"[routers.adminOauthClientsDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Admin.OauthClients.Add' | transloco }}\n </button>\n </div>\n</div>\n@if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n}\n@if (isLoaded) {\n @if (clients.length > 0) {\n <div class=\"primeng-datatable-container mt table-responsive\">\n <p-table [value]=\"clients\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"col\">{{ 'Admin.OauthClients.Platform' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.ClientId' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.ClientSecret' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.RedirectUris' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.Scopes' | transloco }}</th>\n <th scope=\"col\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-client>\n <tr>\n <td data-head=\"Platform\">{{ client.name }}</td>\n <td data-head=\"Client ID\">{{ client.client_id }}</td>\n <td data-head=\"Client Secret\">{{ client.client_secret_masked }}</td>\n <td data-head=\"Redirect URIs\">{{ client.redirect_uris }}</td>\n <td data-head=\"Scopes\">{{ client.scopes }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li [ngbTooltip]=\"'Admin.OauthClients.Edit' | transloco\"\n class=\"me-2 me-sm-3\"\n data-cy=\"edit-oauth-client\"\n [routerLink]=\"[routers.adminOauthClientsDetails + 'edit/' + client.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li [ngbTooltip]=\"'Admin.OauthClients.Delete' | transloco\" class=\"me-2 me-sm-3\">\n <i (click)=\"onDelete(client)\"\n (keydown.enter)=\"onDelete(client)\"\n (keydown.space)=\"onDelete(client)\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n } @else {\n <pw-no-data [withImage]=\"true\"\n [message]=\"'Admin.OauthClients.NoDataMessage' | transloco\"></pw-no-data>\n }\n}\n", dependencies: [{ kind: "component", type: i3$2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i3$1.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
|
|
5014
|
+
}
|
|
5015
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: OauthClientsComponent, decorators: [{
|
|
5016
|
+
type: Component,
|
|
5017
|
+
args: [{ selector: 'pw-oauth-clients', standalone: false, template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">{{ 'Admin.OauthClients.Title' | transloco }}</h2>\n <button class=\"btn btn-sm btn-outline-primary float-end\"\n data-cy=\"add-oauth-client\"\n [routerLink]=\"[routers.adminOauthClientsDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Admin.OauthClients.Add' | transloco }}\n </button>\n </div>\n</div>\n@if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n}\n@if (isLoaded) {\n @if (clients.length > 0) {\n <div class=\"primeng-datatable-container mt table-responsive\">\n <p-table [value]=\"clients\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"col\">{{ 'Admin.OauthClients.Platform' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.ClientId' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.ClientSecret' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.RedirectUris' | transloco }}</th>\n <th scope=\"col\">{{ 'Admin.OauthClients.Scopes' | transloco }}</th>\n <th scope=\"col\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-client>\n <tr>\n <td data-head=\"Platform\">{{ client.name }}</td>\n <td data-head=\"Client ID\">{{ client.client_id }}</td>\n <td data-head=\"Client Secret\">{{ client.client_secret_masked }}</td>\n <td data-head=\"Redirect URIs\">{{ client.redirect_uris }}</td>\n <td data-head=\"Scopes\">{{ client.scopes }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li [ngbTooltip]=\"'Admin.OauthClients.Edit' | transloco\"\n class=\"me-2 me-sm-3\"\n data-cy=\"edit-oauth-client\"\n [routerLink]=\"[routers.adminOauthClientsDetails + 'edit/' + client.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li [ngbTooltip]=\"'Admin.OauthClients.Delete' | transloco\" class=\"me-2 me-sm-3\">\n <i (click)=\"onDelete(client)\"\n (keydown.enter)=\"onDelete(client)\"\n (keydown.space)=\"onDelete(client)\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n } @else {\n <pw-no-data [withImage]=\"true\"\n [message]=\"'Admin.OauthClients.NoDataMessage' | transloco\"></pw-no-data>\n }\n}\n" }]
|
|
5018
|
+
}], ctorParameters: () => [{ type: i1.McpOauthClientService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i3$1.ConfirmDialogService }] });
|
|
5019
|
+
|
|
5020
|
+
class OauthClientsDetailsComponent extends AppBaseComponent {
|
|
5021
|
+
constructor(fb, oauthClientService, injector, cdr) {
|
|
5022
|
+
super(injector);
|
|
5023
|
+
this.fb = fb;
|
|
5024
|
+
this.oauthClientService = oauthClientService;
|
|
5025
|
+
this.cdr = cdr;
|
|
5026
|
+
this.submitting = false;
|
|
5027
|
+
/** Set in edit mode — the record being edited. null while creating. */
|
|
5028
|
+
this.editId = null;
|
|
5029
|
+
/** Gates the form in edit mode until the client is fetched (AI54). */
|
|
5030
|
+
this.loading = false;
|
|
5031
|
+
/** Set once the client is created — the secret is shown ONCE here, never re-fetchable. */
|
|
5032
|
+
this.createdClient = null;
|
|
5033
|
+
this.routers = ROUTERS;
|
|
5034
|
+
this.form = this.fb.group({
|
|
5035
|
+
name: ['', Validators.required],
|
|
5036
|
+
redirect_uris: ['', Validators.required],
|
|
5037
|
+
scopes: ['mcp:read,mcp:write'],
|
|
5038
|
+
client_id: ['']
|
|
5039
|
+
});
|
|
5040
|
+
}
|
|
5041
|
+
ngOnInit() {
|
|
5042
|
+
const id = this.route.snapshot.paramMap.get('id');
|
|
5043
|
+
if (id) {
|
|
5044
|
+
this.editId = Number(id);
|
|
5045
|
+
this.loadClient(this.editId);
|
|
5046
|
+
}
|
|
5047
|
+
}
|
|
5048
|
+
/** In edit mode the client_id is immutable and is not part of the editable form. */
|
|
5049
|
+
loadClient(id) {
|
|
5050
|
+
this.loading = true;
|
|
5051
|
+
this.oauthClientService
|
|
5052
|
+
.getAll()
|
|
5053
|
+
.subscribe((response) => {
|
|
5054
|
+
const client = (response?.mcp_oauth_clients ?? []).find(c => c.id === id);
|
|
5055
|
+
if (!client) {
|
|
5056
|
+
this.toast.error(this.translation.translate('Admin.OauthClients.NotFound'));
|
|
5057
|
+
this.backToList();
|
|
5058
|
+
return;
|
|
5059
|
+
}
|
|
5060
|
+
this.form.patchValue({
|
|
5061
|
+
name: client.name,
|
|
5062
|
+
redirect_uris: client.redirect_uris,
|
|
5063
|
+
scopes: client.scopes
|
|
5064
|
+
});
|
|
5065
|
+
})
|
|
5066
|
+
.add(() => {
|
|
5067
|
+
this.loading = false;
|
|
5068
|
+
this.cdr.markForCheck();
|
|
5069
|
+
});
|
|
5070
|
+
}
|
|
5071
|
+
onSubmit() {
|
|
5072
|
+
if (this.form.invalid) {
|
|
5073
|
+
this.form.markAllAsTouched();
|
|
5074
|
+
return;
|
|
5075
|
+
}
|
|
5076
|
+
this.editId === null ? this.createClient() : this.updateClient(this.editId);
|
|
5077
|
+
}
|
|
5078
|
+
createClient() {
|
|
5079
|
+
this.submitting = true;
|
|
5080
|
+
this.oauthClientService
|
|
5081
|
+
.create(this.form.value)
|
|
5082
|
+
.subscribe((res) => {
|
|
5083
|
+
this.createdClient = res?.data ?? null;
|
|
5084
|
+
this.toast.success(this.translation.translate('Admin.OauthClients.CreatedMessage'));
|
|
5085
|
+
})
|
|
5086
|
+
.add(() => {
|
|
5087
|
+
this.submitting = false;
|
|
5088
|
+
this.cdr.markForCheck();
|
|
5089
|
+
});
|
|
5090
|
+
}
|
|
5091
|
+
updateClient(id) {
|
|
5092
|
+
this.submitting = true;
|
|
5093
|
+
const { name, redirect_uris, scopes } = this.form.value;
|
|
5094
|
+
this.oauthClientService
|
|
5095
|
+
.update(id, { name, redirect_uris, scopes })
|
|
5096
|
+
.subscribe(() => {
|
|
5097
|
+
this.toast.success(this.translation.translate('Admin.OauthClients.UpdatedMessage'));
|
|
5098
|
+
this.backToList();
|
|
5099
|
+
})
|
|
5100
|
+
.add(() => {
|
|
5101
|
+
this.submitting = false;
|
|
5102
|
+
this.cdr.markForCheck();
|
|
5103
|
+
});
|
|
5104
|
+
}
|
|
5105
|
+
copy(value) {
|
|
5106
|
+
navigator.clipboard?.writeText(value).then(() => {
|
|
5107
|
+
this.toast.success(this.translation.translate('Admin.OauthClients.Copied'));
|
|
5108
|
+
});
|
|
5109
|
+
}
|
|
5110
|
+
backToList() {
|
|
5111
|
+
this.router.navigate([this.routers.adminOauthClients]);
|
|
5112
|
+
}
|
|
5113
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: OauthClientsDetailsComponent, deps: [{ token: i9.FormBuilder }, { token: i1.McpOauthClientService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5114
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: OauthClientsDetailsComponent, isStandalone: false, selector: "pw-oauth-clients-details", usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a [routerLink]=\"[routers.adminOauthClients]\" class=\"previous\" aria-label=\"Back to MCP OAuth Clients list\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"mt-3\">\n {{ (editId ? 'Admin.OauthClients.EditTitle' : 'Admin.OauthClients.AddTitle') | transloco }}\n </h3>\n </div>\n\n <pw-loader [isVisible]=\"loading\"></pw-loader>\n\n <div class=\"p-2 mt-3\">\n @if (!createdClient && !loading) {\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-name\" class=\"form-label\">\n {{ 'Admin.OauthClients.Platform' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.Platform' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-name\" type=\"text\" class=\"form-control\" formControlName=\"name\" pInputText\n [placeholder]=\"'Admin.OauthClients.PlatformPlaceholder' | transloco\" />\n </div>\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-redirect\" class=\"form-label\">\n {{ 'Admin.OauthClients.RedirectUris' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.RedirectUris' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-redirect\" type=\"text\" class=\"form-control\" formControlName=\"redirect_uris\" pInputText\n [placeholder]=\"'Admin.OauthClients.RedirectUrisPlaceholder' | transloco\" />\n </div>\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-scopes\" class=\"form-label\">\n {{ 'Admin.OauthClients.Scopes' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.Scopes' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-scopes\" type=\"text\" class=\"form-control\" formControlName=\"scopes\" pInputText />\n </div>\n @if (!editId) {\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-client-id\" class=\"form-label\">\n {{ 'Admin.OauthClients.ClientIdOptional' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.ClientId' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-client-id\" type=\"text\" class=\"form-control\" formControlName=\"client_id\" pInputText\n [placeholder]=\"'Admin.OauthClients.ClientIdPlaceholder' | transloco\" />\n </div>\n }\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-2\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-secondary me-2\" (click)=\"backToList()\">\n {{ 'Admin.OauthClients.Cancel' | transloco }}\n </button>\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"submitting\">\n {{ (editId ? 'Admin.OauthClients.Save' : 'Admin.OauthClients.Create') | transloco }}\n </button>\n </div>\n </div>\n </div>\n </form>\n } @else if (createdClient) {\n <div class=\"alert alert-warning\" role=\"alert\">\n {{ 'Admin.OauthClients.SecretOnceWarning' | transloco }}\n </div>\n <div class=\"row\">\n <div class=\"col-lg-6 mb-3\">\n <label class=\"form-label\">{{ 'Admin.OauthClients.ClientId' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [value]=\"createdClient.client_id\" readonly />\n <button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"copy(createdClient.client_id)\">\n <i class=\"fa fa-copy\" aria-hidden=\"true\"></i> {{ 'Admin.OauthClients.Copy' | transloco }}\n </button>\n </div>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <label class=\"form-label\">{{ 'Admin.OauthClients.ClientSecret' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [value]=\"createdClient.client_secret\" readonly />\n <button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"copy(createdClient.client_secret)\">\n <i class=\"fa fa-copy\" aria-hidden=\"true\"></i> {{ 'Admin.OauthClients.Copy' | transloco }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"text-end\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"backToList()\">\n {{ 'Admin.OauthClients.Done' | transloco }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i6$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "directive", type: i5$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "component", type: i5$2.AppLoaderComponent, selector: "pw-loader", inputs: ["isVisible", "closeOnOutsideClick", "autoCloseTimeOut"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
|
|
5115
|
+
}
|
|
5116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: OauthClientsDetailsComponent, decorators: [{
|
|
5117
|
+
type: Component,
|
|
5118
|
+
args: [{ selector: 'pw-oauth-clients-details', standalone: false, template: "<div class=\"container-fluid pw-tab\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a [routerLink]=\"[routers.adminOauthClients]\" class=\"previous\" aria-label=\"Back to MCP OAuth Clients list\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"mt-3\">\n {{ (editId ? 'Admin.OauthClients.EditTitle' : 'Admin.OauthClients.AddTitle') | transloco }}\n </h3>\n </div>\n\n <pw-loader [isVisible]=\"loading\"></pw-loader>\n\n <div class=\"p-2 mt-3\">\n @if (!createdClient && !loading) {\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-name\" class=\"form-label\">\n {{ 'Admin.OauthClients.Platform' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.Platform' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-name\" type=\"text\" class=\"form-control\" formControlName=\"name\" pInputText\n [placeholder]=\"'Admin.OauthClients.PlatformPlaceholder' | transloco\" />\n </div>\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-redirect\" class=\"form-label\">\n {{ 'Admin.OauthClients.RedirectUris' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.RedirectUris' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-redirect\" type=\"text\" class=\"form-control\" formControlName=\"redirect_uris\" pInputText\n [placeholder]=\"'Admin.OauthClients.RedirectUrisPlaceholder' | transloco\" />\n </div>\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-scopes\" class=\"form-label\">\n {{ 'Admin.OauthClients.Scopes' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.Scopes' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-scopes\" type=\"text\" class=\"form-control\" formControlName=\"scopes\" pInputText />\n </div>\n @if (!editId) {\n <div class=\"col-lg-6 mb-3\">\n <label for=\"oc-client-id\" class=\"form-label\">\n {{ 'Admin.OauthClients.ClientIdOptional' | transloco }}\n <span class=\"tooltip-wrap ms-1\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.OauthClients.Tooltip.ClientId' | transloco\" tooltipPosition=\"top\">\n <i class=\"far fa-info-circle text-muted\" aria-hidden=\"true\"></i>\n </span>\n </label>\n <input id=\"oc-client-id\" type=\"text\" class=\"form-control\" formControlName=\"client_id\" pInputText\n [placeholder]=\"'Admin.OauthClients.ClientIdPlaceholder' | transloco\" />\n </div>\n }\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-2\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-secondary me-2\" (click)=\"backToList()\">\n {{ 'Admin.OauthClients.Cancel' | transloco }}\n </button>\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"submitting\">\n {{ (editId ? 'Admin.OauthClients.Save' : 'Admin.OauthClients.Create') | transloco }}\n </button>\n </div>\n </div>\n </div>\n </form>\n } @else if (createdClient) {\n <div class=\"alert alert-warning\" role=\"alert\">\n {{ 'Admin.OauthClients.SecretOnceWarning' | transloco }}\n </div>\n <div class=\"row\">\n <div class=\"col-lg-6 mb-3\">\n <label class=\"form-label\">{{ 'Admin.OauthClients.ClientId' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [value]=\"createdClient.client_id\" readonly />\n <button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"copy(createdClient.client_id)\">\n <i class=\"fa fa-copy\" aria-hidden=\"true\"></i> {{ 'Admin.OauthClients.Copy' | transloco }}\n </button>\n </div>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <label class=\"form-label\">{{ 'Admin.OauthClients.ClientSecret' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [value]=\"createdClient.client_secret\" readonly />\n <button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"copy(createdClient.client_secret)\">\n <i class=\"fa fa-copy\" aria-hidden=\"true\"></i> {{ 'Admin.OauthClients.Copy' | transloco }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"text-end\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"backToList()\">\n {{ 'Admin.OauthClients.Done' | transloco }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
5119
|
+
}], ctorParameters: () => [{ type: i9.FormBuilder }, { type: i1.McpOauthClientService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }] });
|
|
5120
|
+
|
|
5121
|
+
class OauthClientsTabsComponent {
|
|
5122
|
+
constructor() {
|
|
5123
|
+
this.items = [
|
|
5124
|
+
{
|
|
5125
|
+
id: 'oauth-clients',
|
|
5126
|
+
label: 'MCP OAuth Clients',
|
|
5127
|
+
icon: 'fas fa-robot',
|
|
5128
|
+
routerLink: ['/admin/oauth-clients/list']
|
|
5129
|
+
}
|
|
5130
|
+
];
|
|
5131
|
+
}
|
|
5132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: OauthClientsTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: OauthClientsTabsComponent, isStandalone: false, selector: "pw-oauth-clients-tabs", ngImport: i0, template: `<pw-tabs [items]="items"></pw-tabs>`, isInline: true, dependencies: [{ kind: "component", type: i3$1.PwTabsComponent, selector: "pw-tabs", inputs: ["items", "withSubscription"] }] }); }
|
|
5134
|
+
}
|
|
5135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: OauthClientsTabsComponent, decorators: [{
|
|
5136
|
+
type: Component,
|
|
5137
|
+
args: [{
|
|
5138
|
+
selector: 'pw-oauth-clients-tabs',
|
|
5139
|
+
template: `<pw-tabs [items]="items"></pw-tabs>`,
|
|
5140
|
+
standalone: false
|
|
5141
|
+
}]
|
|
5142
|
+
}] });
|
|
5143
|
+
|
|
4964
5144
|
class PermissionsDetailsComponent extends AppBaseComponent {
|
|
4965
5145
|
constructor(adminService, injector, cdr) {
|
|
4966
5146
|
super(injector);
|
|
@@ -8255,11 +8435,11 @@ class InviteUsersComponent extends AppBaseComponent {
|
|
|
8255
8435
|
super.ngOnDestroy();
|
|
8256
8436
|
}
|
|
8257
8437
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: InviteUsersComponent, deps: [{ token: i9.UntypedFormBuilder }, { token: i1.AdminService }, { token: i1$1.ProductService }, { token: i0.Injector }, { token: i1$1.CommonService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8258
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: InviteUsersComponent, isStandalone: false, selector: "pw-invite-users", viewQueries: [{ propertyName: "refProduct", first: true, predicate: ["refProduct"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Invite New User</h3>\n <p>Here you can send an invitation to a new user to try any of our products</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"first_name\"\n controlId=\"invite-first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n id=\"invite-first_name\"\n class=\"form-control\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid':\n form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"last_name\"\n controlId=\"invite-last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n id=\"invite-last_name\"\n class=\"form-control\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"email\"\n controlId=\"invite-email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n id=\"invite-email\"\n class=\"form-control\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n controlId=\"invite-product_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete appendTo=\"body\" #refProduct\n [suggestions]=\"filteredProducts\"\n [ariaLabelledBy]=\"'invite-product_id-label'\"\n [ariaLabel]=\"'Label.Product' | transloco\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n optionLabel=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search products...\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : {}\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"units\"\n controlId=\"invite-units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n id=\"invite-units\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n controlId=\"invite-min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n id=\"invite-min_units\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n @if (organizationIndustries$ | async; as industries) {\n <div class=\"mb-3 col-sm-4\"\n >\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\" controlId=\"invite-organization_industry_id\" [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry'| transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_industry_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationIndustry' | transloco\"\n [options]=\"industries['organization_industries']\"\n formControlName=\"organization_industry_id\"\n [placeholder]=\"'Select Organization Industry'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationSizes$ | async; as sizes) {\n <div class=\"mb-3 col-sm-4\"\n >\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\" controlId=\"invite-organization_size_id\" [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize'| transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_size_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationSize' | transloco\"\n [options]=\"sizes['organization_sizes']\"\n formControlName=\"organization_size_id\"\n [placeholder]=\"'Select Organization Size'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationTypes$ | async; as types) {\n <div class=\"mb-3 col-sm-4\"\n >\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\" controlId=\"invite-organization_type_id\" [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType'| transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_type_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationType' | transloco\"\n [options]=\"types['organization_types']\"\n formControlName=\"organization_type_id\"\n [placeholder]=\"'Select Organization Type'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName'| transloco\"\n class=\"col-md-6 p-0\"\n name=\"name\" controlId=\"invite-organization-name\">\n <input type=\"text\"\n id=\"invite-organization-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <input type=\"button\"\n class=\"btn btn-secondary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; back()\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Invite</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>", styles: ["@charset \"UTF-8\";:root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--public-btn-radius: 24px}\n"], dependencies: [{ kind: "component", type: i4$2.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "addOnTab", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "addOnBlur", "separator", "appendTo", "motionOptions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onAdd", "onFocus", "onBlur", "onDropdownClick", "onClear", "onInputKeydown", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i9.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "component", type: i3$1.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "controlId", "useAriaLabelledbyOnly", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "directive", type: i11.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
|
|
8438
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: InviteUsersComponent, isStandalone: false, selector: "pw-invite-users", viewQueries: [{ propertyName: "refProduct", first: true, predicate: ["refProduct"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">{{ 'Admin.Subscriptions.InviteNewUser' | transloco }}</h3>\n <p>{{ 'Admin.Subscriptions.InviteNewUserDescription' | transloco }}</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n\n <h3>{{ 'Admin.Subscriptions.Section.UserDetails' | transloco }}</h3>\n <div class=\"row\">\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n name=\"first_name\"\n controlId=\"invite-first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n id=\"invite-first_name\"\n class=\"form-control\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.InviteFirstName' | transloco\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n name=\"last_name\"\n controlId=\"invite-last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n id=\"invite-last_name\"\n class=\"form-control\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.InviteLastName' | transloco\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n name=\"email\"\n controlId=\"invite-email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n id=\"invite-email\"\n class=\"form-control\"\n [placeholder]=\"'Label.EmailPlaceholder' | transloco\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Admin.Subscriptions.Section.ProductSeats' | transloco }}</h3>\n <div class=\"row\">\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n controlId=\"invite-product_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete appendTo=\"body\" #refProduct\n [suggestions]=\"filteredProducts\"\n [ariaLabelledBy]=\"'invite-product_id-label'\"\n [ariaLabel]=\"'Label.Product' | transloco\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n optionLabel=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.SearchProducts' | transloco\"\n [inputStyleClass]=\"form.get('product_id').touched && form.get('product_id').invalid ? 'is-invalid' : ''\"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n name=\"units\"\n controlId=\"invite-units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n id=\"invite-units\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n controlId=\"invite-min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n id=\"invite-min_units\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Admin.Subscriptions.Section.Organization' | transloco }}</h3>\n <div class=\"row\">\n @if (organizationIndustries$ | async; as industries) {\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\"\n controlId=\"invite-organization_industry_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry' | transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_industry_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationIndustry' | transloco\"\n [options]=\"industries['organization_industries']\"\n formControlName=\"organization_industry_id\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.OrganizationIndustry' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationSizes$ | async; as sizes) {\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\"\n controlId=\"invite-organization_size_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize' | transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_size_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationSize' | transloco\"\n [options]=\"sizes['organization_sizes']\"\n formControlName=\"organization_size_id\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.OrganizationSize' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationTypes$ | async; as types) {\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\"\n controlId=\"invite-organization_type_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType' | transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_type_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationType' | transloco\"\n [options]=\"types['organization_types']\"\n formControlName=\"organization_type_id\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.OrganizationType' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName' | transloco\"\n name=\"name\"\n controlId=\"invite-organization-name\">\n <input type=\"text\"\n id=\"invite-organization-name\"\n class=\"form-control\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.Organization' | transloco\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <button type=\"button\"\n class=\"btn btn-secondary me-3\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Invite' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--public-btn-radius: 24px}:host form>h3{display:block;border-top:1px solid #e2e5ea;margin-top:2rem;padding-top:1.25rem}:host form>h3:first-child{border-top:0;margin-top:.5rem;padding-top:0}\n"], dependencies: [{ kind: "component", type: i4$2.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "addOnTab", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "addOnBlur", "separator", "appendTo", "motionOptions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onAdd", "onFocus", "onBlur", "onDropdownClick", "onClear", "onInputKeydown", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i9.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "component", type: i3$1.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "controlId", "useAriaLabelledbyOnly", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "directive", type: i11.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
|
|
8259
8439
|
}
|
|
8260
8440
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: InviteUsersComponent, decorators: [{
|
|
8261
8441
|
type: Component,
|
|
8262
|
-
args: [{ selector: 'pw-invite-users', standalone: false, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Invite New User</h3>\n <p>Here you can send an invitation to a new user to try any of our products</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"first_name\"\n controlId=\"invite-first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n id=\"invite-first_name\"\n class=\"form-control\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid':\n form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"last_name\"\n controlId=\"invite-last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n id=\"invite-last_name\"\n class=\"form-control\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"email\"\n controlId=\"invite-email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n id=\"invite-email\"\n class=\"form-control\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n controlId=\"invite-product_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete appendTo=\"body\" #refProduct\n [suggestions]=\"filteredProducts\"\n [ariaLabelledBy]=\"'invite-product_id-label'\"\n [ariaLabel]=\"'Label.Product' | transloco\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n optionLabel=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search products...\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : {}\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"units\"\n controlId=\"invite-units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n id=\"invite-units\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n controlId=\"invite-min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n id=\"invite-min_units\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n @if (organizationIndustries$ | async; as industries) {\n <div class=\"mb-3 col-sm-4\"\n >\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\" controlId=\"invite-organization_industry_id\" [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry'| transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_industry_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationIndustry' | transloco\"\n [options]=\"industries['organization_industries']\"\n formControlName=\"organization_industry_id\"\n [placeholder]=\"'Select Organization Industry'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationSizes$ | async; as sizes) {\n <div class=\"mb-3 col-sm-4\"\n >\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\" controlId=\"invite-organization_size_id\" [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize'| transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_size_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationSize' | transloco\"\n [options]=\"sizes['organization_sizes']\"\n formControlName=\"organization_size_id\"\n [placeholder]=\"'Select Organization Size'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationTypes$ | async; as types) {\n <div class=\"mb-3 col-sm-4\"\n >\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\" controlId=\"invite-organization_type_id\" [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType'| transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_type_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationType' | transloco\"\n [options]=\"types['organization_types']\"\n formControlName=\"organization_type_id\"\n [placeholder]=\"'Select Organization Type'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName'| transloco\"\n class=\"col-md-6 p-0\"\n name=\"name\" controlId=\"invite-organization-name\">\n <input type=\"text\"\n id=\"invite-organization-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <input type=\"button\"\n class=\"btn btn-secondary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; back()\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Invite</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>", styles: ["@charset \"UTF-8\";:root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--public-btn-radius: 24px}\n"] }]
|
|
8442
|
+
args: [{ selector: 'pw-invite-users', standalone: false, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">{{ 'Admin.Subscriptions.InviteNewUser' | transloco }}</h3>\n <p>{{ 'Admin.Subscriptions.InviteNewUserDescription' | transloco }}</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n\n <h3>{{ 'Admin.Subscriptions.Section.UserDetails' | transloco }}</h3>\n <div class=\"row\">\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n name=\"first_name\"\n controlId=\"invite-first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n id=\"invite-first_name\"\n class=\"form-control\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.InviteFirstName' | transloco\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n name=\"last_name\"\n controlId=\"invite-last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n id=\"invite-last_name\"\n class=\"form-control\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.InviteLastName' | transloco\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n name=\"email\"\n controlId=\"invite-email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n id=\"invite-email\"\n class=\"form-control\"\n [placeholder]=\"'Label.EmailPlaceholder' | transloco\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Admin.Subscriptions.Section.ProductSeats' | transloco }}</h3>\n <div class=\"row\">\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n controlId=\"invite-product_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete appendTo=\"body\" #refProduct\n [suggestions]=\"filteredProducts\"\n [ariaLabelledBy]=\"'invite-product_id-label'\"\n [ariaLabel]=\"'Label.Product' | transloco\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n optionLabel=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.SearchProducts' | transloco\"\n [inputStyleClass]=\"form.get('product_id').touched && form.get('product_id').invalid ? 'is-invalid' : ''\"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n name=\"units\"\n controlId=\"invite-units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n id=\"invite-units\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n controlId=\"invite-min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n id=\"invite-min_units\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Admin.Subscriptions.Section.Organization' | transloco }}</h3>\n <div class=\"row\">\n @if (organizationIndustries$ | async; as industries) {\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\"\n controlId=\"invite-organization_industry_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry' | transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_industry_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationIndustry' | transloco\"\n [options]=\"industries['organization_industries']\"\n formControlName=\"organization_industry_id\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.OrganizationIndustry' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationSizes$ | async; as sizes) {\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\"\n controlId=\"invite-organization_size_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize' | transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_size_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationSize' | transloco\"\n [options]=\"sizes['organization_sizes']\"\n formControlName=\"organization_size_id\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.OrganizationSize' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n @if (organizationTypes$ | async; as types) {\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\"\n controlId=\"invite-organization_type_id\"\n [useAriaLabelledbyOnly]=\"true\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType' | transloco\">\n <p-select\n [ariaLabelledBy]=\"'invite-organization_type_id-label'\"\n [ariaLabel]=\"'Organization.OrganizationType' | transloco\"\n [options]=\"types['organization_types']\"\n formControlName=\"organization_type_id\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.OrganizationType' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n }\n <div class=\"mb-3 col-12 col-md-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName' | transloco\"\n name=\"name\"\n controlId=\"invite-organization-name\">\n <input type=\"text\"\n id=\"invite-organization-name\"\n class=\"form-control\"\n [placeholder]=\"'Admin.Subscriptions.Placeholder.Organization' | transloco\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <button type=\"button\"\n class=\"btn btn-secondary me-3\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Invite' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--public-btn-radius: 24px}:host form>h3{display:block;border-top:1px solid #e2e5ea;margin-top:2rem;padding-top:1.25rem}:host form>h3:first-child{border-top:0;margin-top:.5rem;padding-top:0}\n"] }]
|
|
8263
8443
|
}], ctorParameters: () => [{ type: i9.UntypedFormBuilder }, { type: i1.AdminService }, { type: i1$1.ProductService }, { type: i0.Injector }, { type: i1$1.CommonService }, { type: i0.ChangeDetectorRef }], propDecorators: { refProduct: [{
|
|
8264
8444
|
type: ViewChild,
|
|
8265
8445
|
args: ['refProduct']
|
|
@@ -11658,6 +11838,46 @@ const routes = [
|
|
|
11658
11838
|
}
|
|
11659
11839
|
]
|
|
11660
11840
|
},
|
|
11841
|
+
{
|
|
11842
|
+
path: 'oauth-clients',
|
|
11843
|
+
data: {
|
|
11844
|
+
title: 'MCP OAuth Clients',
|
|
11845
|
+
permission: 'Pages.Admin'
|
|
11846
|
+
},
|
|
11847
|
+
children: [
|
|
11848
|
+
{
|
|
11849
|
+
path: '',
|
|
11850
|
+
component: OauthClientsTabsComponent,
|
|
11851
|
+
children: [
|
|
11852
|
+
{
|
|
11853
|
+
path: '',
|
|
11854
|
+
redirectTo: 'list',
|
|
11855
|
+
pathMatch: 'full'
|
|
11856
|
+
},
|
|
11857
|
+
{
|
|
11858
|
+
path: 'list',
|
|
11859
|
+
component: OauthClientsComponent
|
|
11860
|
+
}
|
|
11861
|
+
]
|
|
11862
|
+
},
|
|
11863
|
+
{
|
|
11864
|
+
path: 'add',
|
|
11865
|
+
component: OauthClientsDetailsComponent,
|
|
11866
|
+
data: {
|
|
11867
|
+
title: 'Add MCP OAuth Client',
|
|
11868
|
+
permission: 'Pages.Admin'
|
|
11869
|
+
}
|
|
11870
|
+
},
|
|
11871
|
+
{
|
|
11872
|
+
path: 'edit/:id',
|
|
11873
|
+
component: OauthClientsDetailsComponent,
|
|
11874
|
+
data: {
|
|
11875
|
+
title: 'Edit MCP OAuth Client',
|
|
11876
|
+
permission: 'Pages.Admin'
|
|
11877
|
+
}
|
|
11878
|
+
}
|
|
11879
|
+
]
|
|
11880
|
+
},
|
|
11661
11881
|
{
|
|
11662
11882
|
path: 'tracking',
|
|
11663
11883
|
component: TrackingComponent,
|
|
@@ -11839,6 +12059,9 @@ class AdminModule {
|
|
|
11839
12059
|
SubscriptionCredentialsDetailsComponent,
|
|
11840
12060
|
CredentialsDetailsComponent,
|
|
11841
12061
|
CredentialsTabComponent,
|
|
12062
|
+
OauthClientsTabsComponent,
|
|
12063
|
+
OauthClientsComponent,
|
|
12064
|
+
OauthClientsDetailsComponent,
|
|
11842
12065
|
AhoyEventsComponent,
|
|
11843
12066
|
TrackingComponent,
|
|
11844
12067
|
AhoyMessagesComponent,
|
|
@@ -11868,7 +12091,7 @@ class AdminModule {
|
|
|
11868
12091
|
MultiSelectModule,
|
|
11869
12092
|
InputTextModule,
|
|
11870
12093
|
IconFieldModule,
|
|
11871
|
-
InputIconModule, i1$2.NgxDaterangepickerMd, NgxJsonViewerModule,
|
|
12094
|
+
InputIconModule, AppLoaderModule, i1$2.NgxDaterangepickerMd, NgxJsonViewerModule,
|
|
11872
12095
|
DatePickerModule,
|
|
11873
12096
|
PlotlyViaCDNModule,
|
|
11874
12097
|
FileUploadModule,
|
|
@@ -11906,7 +12129,8 @@ class AdminModule {
|
|
|
11906
12129
|
},
|
|
11907
12130
|
deps: [AppConfigService]
|
|
11908
12131
|
}
|
|
11909
|
-
], imports: [primeNgModules,
|
|
12132
|
+
], imports: [primeNgModules, AppLoaderModule,
|
|
12133
|
+
NgxDaterangepickerMd.forRoot(),
|
|
11910
12134
|
NgxJsonViewerModule,
|
|
11911
12135
|
DatePickerModule,
|
|
11912
12136
|
PlotlyViaCDNModule,
|
|
@@ -12024,6 +12248,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
12024
12248
|
SubscriptionCredentialsDetailsComponent,
|
|
12025
12249
|
CredentialsDetailsComponent,
|
|
12026
12250
|
CredentialsTabComponent,
|
|
12251
|
+
OauthClientsTabsComponent,
|
|
12252
|
+
OauthClientsComponent,
|
|
12253
|
+
OauthClientsDetailsComponent,
|
|
12027
12254
|
AhoyEventsComponent,
|
|
12028
12255
|
TrackingComponent,
|
|
12029
12256
|
AhoyMessagesComponent,
|
|
@@ -12049,6 +12276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
12049
12276
|
],
|
|
12050
12277
|
imports: [
|
|
12051
12278
|
...primeNgModules,
|
|
12279
|
+
AppLoaderModule,
|
|
12052
12280
|
NgxDaterangepickerMd.forRoot(),
|
|
12053
12281
|
NgxJsonViewerModule,
|
|
12054
12282
|
DatePickerModule,
|