@rolatech/angular-authorization 20.1.6-beta.1 → 20.1.6-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/fesm2022/{rolatech-angular-authorization-clients.routes-CUhnGT3n.mjs → rolatech-angular-authorization-clients.routes-vq9pfnDd.mjs} +22 -22
  2. package/fesm2022/rolatech-angular-authorization-clients.routes-vq9pfnDd.mjs.map +1 -0
  3. package/fesm2022/{rolatech-angular-authorization-endpoint.service-Bb2Q9peT.mjs → rolatech-angular-authorization-endpoint.service-Dt_4NG3P.mjs} +4 -4
  4. package/fesm2022/rolatech-angular-authorization-endpoint.service-Dt_4NG3P.mjs.map +1 -0
  5. package/fesm2022/{rolatech-angular-authorization-endpoints.routes-C2H0ELRe.mjs → rolatech-angular-authorization-endpoints.routes-Cpz-uZiY.mjs} +8 -8
  6. package/fesm2022/rolatech-angular-authorization-endpoints.routes-Cpz-uZiY.mjs.map +1 -0
  7. package/fesm2022/{rolatech-angular-authorization-permission.service-C67beh-B.mjs → rolatech-angular-authorization-permission.service-JWYhB6dG.mjs} +4 -4
  8. package/fesm2022/rolatech-angular-authorization-permission.service-JWYhB6dG.mjs.map +1 -0
  9. package/fesm2022/{rolatech-angular-authorization-permissions.routes-DrLSLkzq.mjs → rolatech-angular-authorization-permissions.routes-DXBr3b4S.mjs} +16 -16
  10. package/fesm2022/rolatech-angular-authorization-permissions.routes-DXBr3b4S.mjs.map +1 -0
  11. package/fesm2022/{rolatech-angular-authorization-role.service-CJ9OWfn-.mjs → rolatech-angular-authorization-role.service-CcnqnLZD.mjs} +4 -4
  12. package/fesm2022/rolatech-angular-authorization-role.service-CcnqnLZD.mjs.map +1 -0
  13. package/fesm2022/{rolatech-angular-authorization-roles.routes-7viqa6ZE.mjs → rolatech-angular-authorization-roles.routes-aB8e5OUK.mjs} +17 -17
  14. package/fesm2022/rolatech-angular-authorization-roles.routes-aB8e5OUK.mjs.map +1 -0
  15. package/fesm2022/{rolatech-angular-authorization-settings.routes-CALsjEEv.mjs → rolatech-angular-authorization-settings.routes-BSm3OkNO.mjs} +4 -4
  16. package/fesm2022/rolatech-angular-authorization-settings.routes-BSm3OkNO.mjs.map +1 -0
  17. package/fesm2022/{rolatech-angular-authorization-users.routes-BJPW9u0u.mjs → rolatech-angular-authorization-users.routes-Dcyrh1Ca.mjs} +19 -19
  18. package/fesm2022/rolatech-angular-authorization-users.routes-Dcyrh1Ca.mjs.map +1 -0
  19. package/fesm2022/rolatech-angular-authorization.mjs +9 -9
  20. package/fesm2022/rolatech-angular-authorization.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/fesm2022/rolatech-angular-authorization-clients.routes-CUhnGT3n.mjs.map +0 -1
  23. package/fesm2022/rolatech-angular-authorization-endpoint.service-Bb2Q9peT.mjs.map +0 -1
  24. package/fesm2022/rolatech-angular-authorization-endpoints.routes-C2H0ELRe.mjs.map +0 -1
  25. package/fesm2022/rolatech-angular-authorization-permission.service-C67beh-B.mjs.map +0 -1
  26. package/fesm2022/rolatech-angular-authorization-permissions.routes-DrLSLkzq.mjs.map +0 -1
  27. package/fesm2022/rolatech-angular-authorization-role.service-CJ9OWfn-.mjs.map +0 -1
  28. package/fesm2022/rolatech-angular-authorization-roles.routes-7viqa6ZE.mjs.map +0 -1
  29. package/fesm2022/rolatech-angular-authorization-settings.routes-CALsjEEv.mjs.map +0 -1
  30. package/fesm2022/rolatech-angular-authorization-users.routes-BJPW9u0u.mjs.map +0 -1
@@ -53,10 +53,10 @@ class ClientService extends BaseService {
53
53
  withCredentials: true,
54
54
  });
55
55
  }
56
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ClientService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
57
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ClientService, providedIn: 'root' });
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ClientService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
57
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ClientService, providedIn: 'root' });
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ClientService, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ClientService, decorators: [{
60
60
  type: Injectable,
61
61
  args: [{
62
62
  providedIn: 'root',
@@ -69,13 +69,13 @@ class ClientSecretCopyComponent {
69
69
  ngDoCheck() {
70
70
  this.output.emit(this.clientSecret());
71
71
  }
72
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ClientSecretCopyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.4", type: ClientSecretCopyComponent, isStandalone: true, selector: "rolatech-authorization-client-secret-copy", inputs: { clientSecret: { classPropertyName: "clientSecret", publicName: "clientSecret", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { clientSecret: "clientSecretChange", output: "output" }, ngImport: i0, template: "<div class=\"flex items-center gap-3\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <input matInput type=\"password\" [value]=\"clientSecret()\" readonly />\n </mat-form-field>\n <button mat-icon-button [cdkCopyToClipboard]=\"clientSecret()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ClipboardModule }, { kind: "directive", type: i7.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }] });
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ClientSecretCopyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.12", type: ClientSecretCopyComponent, isStandalone: true, selector: "rolatech-authorization-client-secret-copy", inputs: { clientSecret: { classPropertyName: "clientSecret", publicName: "clientSecret", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { clientSecret: "clientSecretChange", output: "output" }, ngImport: i0, template: "<div class=\"flex items-center gap-3\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <input matInput type=\"password\" [value]=\"clientSecret()\" readonly />\n </mat-form-field>\n <button mat-icon-button [cdkCopyToClipboard]=\"clientSecret()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ClipboardModule }, { kind: "directive", type: i7.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }] });
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ClientSecretCopyComponent, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ClientSecretCopyComponent, decorators: [{
76
76
  type: Component,
77
77
  args: [{ selector: 'rolatech-authorization-client-secret-copy', imports: [MatFormFieldModule, MatInputModule, MatButtonModule, MatIcon, ClipboardModule], template: "<div class=\"flex items-center gap-3\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <input matInput type=\"password\" [value]=\"clientSecret()\" readonly />\n </mat-form-field>\n <button mat-icon-button [cdkCopyToClipboard]=\"clientSecret()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
78
- }] });
78
+ }], propDecorators: { clientSecret: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientSecret", required: true }] }, { type: i0.Output, args: ["clientSecretChange"] }], output: [{ type: i0.Output, args: ["output"] }] } });
79
79
 
80
80
  class CreateComponent extends BaseComponent {
81
81
  formBuilder = inject(FormBuilder);
@@ -122,10 +122,10 @@ class CreateComponent extends BaseComponent {
122
122
  },
123
123
  });
124
124
  }
125
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: CreateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
126
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: CreateComponent, isStandalone: true, selector: "rolatech-authorization-create", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"Create\"></rolatech-toolbar>\n<div class=\"px-4\">\n <form [formGroup]=\"clientCreateForm\" (submit)=\"submit()\">\n <div class=\"flex flex-col lg:w-1/2\">\n <!-- name -->\n <rolatech-title title=\"Info\"></rolatech-title>\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n </div>\n <button mat-raised-button type=\"submit\">Save</button>\n </form>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: TitleComponent, selector: "rolatech-title", inputs: ["title", "subtitle", "large"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }] });
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CreateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.12", type: CreateComponent, isStandalone: true, selector: "rolatech-authorization-create", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"Create\"></rolatech-toolbar>\n<div class=\"px-4\">\n <form [formGroup]=\"clientCreateForm\" (submit)=\"submit()\">\n <div class=\"flex flex-col lg:w-1/2\">\n <!-- name -->\n <rolatech-title title=\"Info\"></rolatech-title>\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n </div>\n <button mat-raised-button type=\"submit\">Save</button>\n </form>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: TitleComponent, selector: "rolatech-title", inputs: ["title", "subtitle", "large"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }] });
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: CreateComponent, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CreateComponent, decorators: [{
129
129
  type: Component,
130
130
  args: [{ imports: [AngularCommonModule, AngularComponentsModule, TitleComponent, ToolbarComponent], selector: 'rolatech-authorization-create', template: "<rolatech-toolbar title=\"Create\"></rolatech-toolbar>\n<div class=\"px-4\">\n <form [formGroup]=\"clientCreateForm\" (submit)=\"submit()\">\n <div class=\"flex flex-col lg:w-1/2\">\n <!-- name -->\n <rolatech-title title=\"Info\"></rolatech-title>\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n </div>\n <button mat-raised-button type=\"submit\">Save</button>\n </form>\n</div>\n" }]
131
131
  }] });
@@ -161,13 +161,13 @@ class ClientBindDialogComponent {
161
161
  ngDoCheck() {
162
162
  this.output.emit(this.wechatClientBindForm.value);
163
163
  }
164
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ClientBindDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
165
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: ClientBindDialogComponent, isStandalone: true, selector: "rolatech-authorization-client-bind-dialog", inputs: { apps: { classPropertyName: "apps", publicName: "apps", isSignal: true, isRequired: false, transformFunction: null }, app: { classPropertyName: "app", publicName: "app", isSignal: true, isRequired: false, transformFunction: null }, selectedApp: { classPropertyName: "selectedApp", publicName: "selectedApp", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apps: "appsChange", app: "appChange", selectedApp: "selectedAppChange", output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field appearance=\"fill\">\n <mat-label>App Type</mat-label>\n <mat-select [compareWith]=\"compareFn\" (selectionChange)=\"onSelectionChange($event)\" [(ngModel)]=\"selectedApp\">\n @for (item of apps(); track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <form [formGroup]=\"wechatClientBindForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppId </mat-label>\n <input matInput formControlName=\"appId\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppSecret </mat-label>\n <input matInput formControlName=\"appSecret\" required />\n </mat-form-field>\n </form>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] });
164
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ClientBindDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
165
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: ClientBindDialogComponent, isStandalone: true, selector: "rolatech-authorization-client-bind-dialog", inputs: { apps: { classPropertyName: "apps", publicName: "apps", isSignal: true, isRequired: false, transformFunction: null }, app: { classPropertyName: "app", publicName: "app", isSignal: true, isRequired: false, transformFunction: null }, selectedApp: { classPropertyName: "selectedApp", publicName: "selectedApp", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apps: "appsChange", app: "appChange", selectedApp: "selectedAppChange", output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field appearance=\"fill\">\n <mat-label>App Type</mat-label>\n <mat-select [compareWith]=\"compareFn\" (selectionChange)=\"onSelectionChange($event)\" [(ngModel)]=\"selectedApp\">\n @for (item of apps(); track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <form [formGroup]=\"wechatClientBindForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppId </mat-label>\n <input matInput formControlName=\"appId\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppSecret </mat-label>\n <input matInput formControlName=\"appSecret\" required />\n </mat-form-field>\n </form>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] });
166
166
  }
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ClientBindDialogComponent, decorators: [{
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ClientBindDialogComponent, decorators: [{
168
168
  type: Component,
169
169
  args: [{ selector: 'rolatech-authorization-client-bind-dialog', imports: [AngularCommonModule, AngularComponentsModule], template: "<div>\n <mat-form-field appearance=\"fill\">\n <mat-label>App Type</mat-label>\n <mat-select [compareWith]=\"compareFn\" (selectionChange)=\"onSelectionChange($event)\" [(ngModel)]=\"selectedApp\">\n @for (item of apps(); track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <form [formGroup]=\"wechatClientBindForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppId </mat-label>\n <input matInput formControlName=\"appId\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppSecret </mat-label>\n <input matInput formControlName=\"appSecret\" required />\n </mat-form-field>\n </form>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
170
- }] });
170
+ }], propDecorators: { apps: [{ type: i0.Input, args: [{ isSignal: true, alias: "apps", required: false }] }, { type: i0.Output, args: ["appsChange"] }], app: [{ type: i0.Input, args: [{ isSignal: true, alias: "app", required: false }] }, { type: i0.Output, args: ["appChange"] }], selectedApp: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedApp", required: false }] }, { type: i0.Output, args: ["selectedAppChange"] }], output: [{ type: i0.Output, args: ["output"] }] } });
171
171
 
172
172
  class DetailsComponent extends BaseComponent {
173
173
  clientServide = inject(ClientService);
@@ -326,10 +326,10 @@ class DetailsComponent extends BaseComponent {
326
326
  next: (result) => { },
327
327
  });
328
328
  }
329
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DetailsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
330
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: DetailsComponent, isStandalone: true, selector: "rolatech-authorization-details", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"Client details\"></rolatech-toolbar>\n<div class=\"max-w-[820px] p-3\">\n @if (client) {\n <!-- contact -->\n <div class=\"border border-[--rt-border-color] rounded px-3 pt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">Info</span>\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"editClient()\">\n <mat-icon>edit</mat-icon>\n <span i18n>Update</span>\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"deleteClient()\" i18n>Delete</button>\n </div>\n </div>\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" Update>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Name</span>\n <span i18n>{{ client.clientName || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">ClientId</span>\n <span i18n>{{ client.clientId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Client Secret</span>\n <span i18n>Set</span>\n </div>\n <button mat-button (click)=\"resetClientSecret()\">Reset</button>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Issued At</span>\n <span>{{ client.clientIdIssuedAt | date }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n <!-- wechat client -->\n <div class=\"border border-[--rt-border-color] rounded p-3 mt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">WeChat Client</span>\n @if (client.weChatClient) {\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"updateWeChatclient()\">\n <mat-icon>edit</mat-icon>\n Update\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"unBindWeChatclient()\">Delete</button>\n </div>\n } @else {\n <button mat-flat-button class=\"max-h-8\" (click)=\"bindWeChatclient()\">Bind</button>\n }\n </div>\n @if (client.weChatClient) {\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>Name</span>\n <span i18n>{{ client.weChatClient.name || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Id</span>\n <span i18n>{{ client.weChatClient.appId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Secret</span>\n <span>{{ client.weChatClient.appSecret || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n } @else {\n <div class=\"p-3\">\n <span class=\"py-11 opacity-70\" i18n>Not bound to WeChat</span>\n </div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i4$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "pipe", type: i5$1.DatePipe, name: "date" }] });
329
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: DetailsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
330
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: DetailsComponent, isStandalone: true, selector: "rolatech-authorization-details", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"Client details\"></rolatech-toolbar>\n<div class=\"max-w-[820px] p-3\">\n @if (client) {\n <!-- contact -->\n <div class=\"border border-[--rt-border-color] rounded px-3 pt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">Info</span>\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"editClient()\">\n <mat-icon>edit</mat-icon>\n <span i18n>Update</span>\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"deleteClient()\" i18n>Delete</button>\n </div>\n </div>\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" Update>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Name</span>\n <span i18n>{{ client.clientName || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">ClientId</span>\n <span i18n>{{ client.clientId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Client Secret</span>\n <span i18n>Set</span>\n </div>\n <button mat-button (click)=\"resetClientSecret()\">Reset</button>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Issued At</span>\n <span>{{ client.clientIdIssuedAt | date }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n <!-- wechat client -->\n <div class=\"border border-[--rt-border-color] rounded p-3 mt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">WeChat Client</span>\n @if (client.weChatClient) {\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"updateWeChatclient()\">\n <mat-icon>edit</mat-icon>\n Update\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"unBindWeChatclient()\">Delete</button>\n </div>\n } @else {\n <button mat-flat-button class=\"max-h-8\" (click)=\"bindWeChatclient()\">Bind</button>\n }\n </div>\n @if (client.weChatClient) {\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>Name</span>\n <span i18n>{{ client.weChatClient.name || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Id</span>\n <span i18n>{{ client.weChatClient.appId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Secret</span>\n <span>{{ client.weChatClient.appSecret || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n } @else {\n <div class=\"p-3\">\n <span class=\"py-11 opacity-70\" i18n>Not bound to WeChat</span>\n </div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i4$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "pipe", type: i5$1.DatePipe, name: "date" }] });
331
331
  }
332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DetailsComponent, decorators: [{
332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: DetailsComponent, decorators: [{
333
333
  type: Component,
334
334
  args: [{ imports: [AngularCommonModule, AngularComponentsModule, ToolbarComponent], selector: 'rolatech-authorization-details', template: "<rolatech-toolbar title=\"Client details\"></rolatech-toolbar>\n<div class=\"max-w-[820px] p-3\">\n @if (client) {\n <!-- contact -->\n <div class=\"border border-[--rt-border-color] rounded px-3 pt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">Info</span>\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"editClient()\">\n <mat-icon>edit</mat-icon>\n <span i18n>Update</span>\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"deleteClient()\" i18n>Delete</button>\n </div>\n </div>\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" Update>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Name</span>\n <span i18n>{{ client.clientName || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">ClientId</span>\n <span i18n>{{ client.clientId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Client Secret</span>\n <span i18n>Set</span>\n </div>\n <button mat-button (click)=\"resetClientSecret()\">Reset</button>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Issued At</span>\n <span>{{ client.clientIdIssuedAt | date }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n <!-- wechat client -->\n <div class=\"border border-[--rt-border-color] rounded p-3 mt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">WeChat Client</span>\n @if (client.weChatClient) {\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"updateWeChatclient()\">\n <mat-icon>edit</mat-icon>\n Update\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"unBindWeChatclient()\">Delete</button>\n </div>\n } @else {\n <button mat-flat-button class=\"max-h-8\" (click)=\"bindWeChatclient()\">Bind</button>\n }\n </div>\n @if (client.weChatClient) {\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>Name</span>\n <span i18n>{{ client.weChatClient.name || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Id</span>\n <span i18n>{{ client.weChatClient.appId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Secret</span>\n <span>{{ client.weChatClient.appSecret || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n } @else {\n <div class=\"p-3\">\n <span class=\"py-11 opacity-70\" i18n>Not bound to WeChat</span>\n </div>\n }\n </div>\n }\n</div>\n" }]
335
335
  }] });
@@ -414,13 +414,13 @@ class IndexComponent {
414
414
  },
415
415
  });
416
416
  }
417
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
418
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: IndexComponent, isStandalone: true, selector: "rolatech-authorization-index", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], ngImport: i0, template: "<rolatech-toolbar title=\"Clients\">\n <button mat-icon-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"isSearch = true\">\n <mat-icon>search</mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"beforeMenu\">\n <mat-icon>reorder</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n @for (item of orderOptions; track item) {\n <button mat-menu-item (click)=\"onClick(item)\">\n <span>{{ item.value }}</span>\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n }\n </mat-menu>\n</rolatech-toolbar>\n@if (isSearch) {\n <mat-form-field floatLabel=\"auto\">\n <input type=\"text\" matInput placeholder=\"Name\" (keyup.enter)=\"search($event)\" />\n <button matSuffix mat-icon-button (click)=\"findAll(null); isSearch = false\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n}\n<div class=\"py-3\">\n <rolatech-spinner></rolatech-spinner>\n <table mat-table [dataSource]=\"dataSource\">\n <!-- clientName Column -->\n <ng-container matColumnDef=\"clientName\">\n <th mat-header-cell *matHeaderCellDef>Name</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientName }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientId\">\n <th mat-header-cell *matHeaderCellDef>CLIENT_ID</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientId }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientIdIssuedAt\">\n <th mat-header-cell *matHeaderCellDef>Issued At</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientIdIssuedAt | date }}</td>\n </ng-container>\n\n <!-- actions Column -->\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"actions\"></th>\n <td mat-cell *matCellDef=\"let item\" class=\"actions\">\n <mat-icon>navigate_next</mat-icon>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n [routerLink]=\"['./', row.id]\"\n class=\"cursor-pointer hover:bg-[--rt-raised-background]\"\n ></tr>\n </table>\n</div>\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findAll($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;min-width:80px;font-size:.8rem;padding:0 28px}.mat-mdc-header-cell.actions{text-align:right;max-width:120px;width:120px;padding:0 28px}td.mat-column-clientName{min-width:128px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i7$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "pipe", type: i5$1.DatePipe, name: "date" }] });
417
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: IndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
418
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: IndexComponent, isStandalone: true, selector: "rolatech-authorization-index", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], ngImport: i0, template: "<rolatech-toolbar title=\"Clients\">\n <button mat-icon-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"isSearch = true\">\n <mat-icon>search</mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"beforeMenu\">\n <mat-icon>reorder</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n @for (item of orderOptions; track item) {\n <button mat-menu-item (click)=\"onClick(item)\">\n <span>{{ item.value }}</span>\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n }\n </mat-menu>\n</rolatech-toolbar>\n@if (isSearch) {\n <mat-form-field floatLabel=\"auto\">\n <input type=\"text\" matInput placeholder=\"Name\" (keyup.enter)=\"search($event)\" />\n <button matSuffix mat-icon-button (click)=\"findAll(null); isSearch = false\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n}\n<div class=\"py-3\">\n <rolatech-spinner></rolatech-spinner>\n <table mat-table [dataSource]=\"dataSource\">\n <!-- clientName Column -->\n <ng-container matColumnDef=\"clientName\">\n <th mat-header-cell *matHeaderCellDef>Name</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientName }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientId\">\n <th mat-header-cell *matHeaderCellDef>CLIENT_ID</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientId }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientIdIssuedAt\">\n <th mat-header-cell *matHeaderCellDef>Issued At</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientIdIssuedAt | date }}</td>\n </ng-container>\n\n <!-- actions Column -->\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"actions\"></th>\n <td mat-cell *matCellDef=\"let item\" class=\"actions\">\n <mat-icon>navigate_next</mat-icon>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n [routerLink]=\"['./', row.id]\"\n class=\"cursor-pointer hover:bg-[--rt-raised-background]\"\n ></tr>\n </table>\n</div>\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findAll($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;min-width:80px;font-size:.8rem;padding:0 28px}.mat-mdc-header-cell.actions{text-align:right;max-width:120px;width:120px;padding:0 28px}td.mat-column-clientName{min-width:128px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i7$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "pipe", type: i5$1.DatePipe, name: "date" }] });
419
419
  }
420
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IndexComponent, decorators: [{
420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: IndexComponent, decorators: [{
421
421
  type: Component,
422
422
  args: [{ imports: [AngularCommonModule, AngularComponentsModule, SpinnerComponent, ToolbarComponent], selector: 'rolatech-authorization-index', template: "<rolatech-toolbar title=\"Clients\">\n <button mat-icon-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"isSearch = true\">\n <mat-icon>search</mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"beforeMenu\">\n <mat-icon>reorder</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n @for (item of orderOptions; track item) {\n <button mat-menu-item (click)=\"onClick(item)\">\n <span>{{ item.value }}</span>\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n }\n </mat-menu>\n</rolatech-toolbar>\n@if (isSearch) {\n <mat-form-field floatLabel=\"auto\">\n <input type=\"text\" matInput placeholder=\"Name\" (keyup.enter)=\"search($event)\" />\n <button matSuffix mat-icon-button (click)=\"findAll(null); isSearch = false\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n}\n<div class=\"py-3\">\n <rolatech-spinner></rolatech-spinner>\n <table mat-table [dataSource]=\"dataSource\">\n <!-- clientName Column -->\n <ng-container matColumnDef=\"clientName\">\n <th mat-header-cell *matHeaderCellDef>Name</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientName }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientId\">\n <th mat-header-cell *matHeaderCellDef>CLIENT_ID</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientId }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientIdIssuedAt\">\n <th mat-header-cell *matHeaderCellDef>Issued At</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientIdIssuedAt | date }}</td>\n </ng-container>\n\n <!-- actions Column -->\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"actions\"></th>\n <td mat-cell *matCellDef=\"let item\" class=\"actions\">\n <mat-icon>navigate_next</mat-icon>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n [routerLink]=\"['./', row.id]\"\n class=\"cursor-pointer hover:bg-[--rt-raised-background]\"\n ></tr>\n </table>\n</div>\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findAll($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;min-width:80px;font-size:.8rem;padding:0 28px}.mat-mdc-header-cell.actions{text-align:right;max-width:120px;width:120px;padding:0 28px}td.mat-column-clientName{min-width:128px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}\n"] }]
423
- }] });
423
+ }], propDecorators: { paginator: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatPaginator), { isSignal: true }] }] } });
424
424
 
425
425
  const clientsRoutes = [
426
426
  {
@@ -438,4 +438,4 @@ const clientsRoutes = [
438
438
  ];
439
439
 
440
440
  export { clientsRoutes as default };
441
- //# sourceMappingURL=rolatech-angular-authorization-clients.routes-CUhnGT3n.mjs.map
441
+ //# sourceMappingURL=rolatech-angular-authorization-clients.routes-vq9pfnDd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-authorization-clients.routes-vq9pfnDd.mjs","sources":["../../../../packages/angular-authorization/src/lib/services/client.service.ts","../../../../packages/angular-authorization/src/lib/components/client-secret-copy/client-secret-copy.component.ts","../../../../packages/angular-authorization/src/lib/components/client-secret-copy/client-secret-copy.component.html","../../../../packages/angular-authorization/src/lib/pages/clients/create/create.component.ts","../../../../packages/angular-authorization/src/lib/pages/clients/create/create.component.html","../../../../packages/angular-authorization/src/lib/components/client-bind-dialog/client-bind-dialog.component.ts","../../../../packages/angular-authorization/src/lib/components/client-bind-dialog/client-bind-dialog.component.html","../../../../packages/angular-authorization/src/lib/pages/clients/details/details.component.ts","../../../../packages/angular-authorization/src/lib/pages/clients/details/details.component.html","../../../../packages/angular-authorization/src/lib/pages/clients/index/index.component.ts","../../../../packages/angular-authorization/src/lib/pages/clients/index/index.component.html","../../../../packages/angular-authorization/src/lib/pages/clients/clients.routes.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseService } from '@rolatech/angular-services';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClientService extends BaseService {\n override init() {\n this.endpoint = 'auth/clients';\n super.init();\n }\n resetClientSecret(id: string): Observable<any> {\n return this.http.post(\n `${this.actionUrl}/${id}/reset`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n bindWeChatClient(id: string, data: any): Observable<any> {\n return this.http.post(`${this.actionUrl}/${id}/wechat`, data, {\n withCredentials: true,\n });\n }\n unBindWeChatClient(id: string): Observable<any> {\n return this.http.delete(`${this.actionUrl}/${id}/wechat`, {\n withCredentials: true,\n });\n }\n updateWeChatClient(id: string, data: any): Observable<any> {\n return this.http.put(`${this.actionUrl}/${id}/wechat`, data, {\n withCredentials: true,\n });\n }\n}\n","import { Component, DoCheck, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'rolatech-authorization-client-secret-copy',\n imports: [MatFormFieldModule, MatInputModule, MatButtonModule, MatIcon, ClipboardModule],\n templateUrl: './client-secret-copy.component.html',\n styleUrl: './client-secret-copy.component.scss',\n})\nexport class ClientSecretCopyComponent implements DoCheck {\n clientSecret = model.required<string>();\n output = output<any>();\n ngDoCheck(): void {\n this.output.emit(this.clientSecret());\n }\n}\n","<div class=\"flex items-center gap-3\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <input matInput type=\"password\" [value]=\"clientSecret()\" readonly />\n </mat-form-field>\n <button mat-icon-button [cdkCopyToClipboard]=\"clientSecret()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ClientService } from '../../../services/client.service';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, TitleComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { ClientSecretCopyComponent } from '../../../components/client-secret-copy/client-secret-copy.component';\n\n@Component({\n imports: [AngularCommonModule, AngularComponentsModule, TitleComponent, ToolbarComponent],\n selector: 'rolatech-authorization-create',\n templateUrl: './create.component.html',\n styleUrls: ['./create.component.scss'],\n})\nexport class CreateComponent extends BaseComponent implements OnInit {\n formBuilder = inject(FormBuilder);\n snackBar = inject(MatSnackBar);\n clientService = inject(ClientService);\n fileName = '';\n uploadProgress = 0;\n file!: File;\n url = '';\n clientCreateForm!: FormGroup;\n\n ngOnInit(): void {\n this.clientCreateForm = this.formBuilder.group({\n name: [null, Validators.required],\n });\n }\n submit() {\n if (!this.clientCreateForm.valid) {\n return;\n }\n this.clientService.create(this.clientCreateForm.value).subscribe({\n next: (res: any) => {\n this.copyClientSecret(res.data.id, res.data.clientSecret);\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n copyClientSecret(id: string, clientSecret: string) {\n const options = {\n title: 'Copy client secret',\n confirmText: 'Confirm',\n component: ClientSecretCopyComponent,\n data: {\n clientSecret: clientSecret,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => {\n this.router.navigate([`../${id}`], {\n relativeTo: this.route,\n });\n },\n });\n }\n}\n","<rolatech-toolbar title=\"Create\"></rolatech-toolbar>\n<div class=\"px-4\">\n <form [formGroup]=\"clientCreateForm\" (submit)=\"submit()\">\n <div class=\"flex flex-col lg:w-1/2\">\n <!-- name -->\n <rolatech-title title=\"Info\"></rolatech-title>\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n </div>\n <button mat-raised-button type=\"submit\">Save</button>\n </form>\n</div>\n","import { Component, DoCheck, OnInit, computed, inject, input, model, output } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'rolatech-authorization-client-bind-dialog',\n imports: [AngularCommonModule, AngularComponentsModule],\n templateUrl: './client-bind-dialog.component.html',\n styleUrl: './client-bind-dialog.component.scss',\n})\nexport class ClientBindDialogComponent implements OnInit, DoCheck {\n formBuilder = inject(FormBuilder);\n apps = model<any>();\n app = model<any>();\n selectedApp = model<any>();\n output = output<any>();\n wechatClientBindForm!: FormGroup;\n\n ngOnInit(): void {\n this.wechatClientBindForm = this.formBuilder.group({\n name: [null, Validators.required],\n appId: [null, Validators.required],\n appSecret: [null, Validators.required],\n });\n if (this.app()) {\n const { name, appId, appSecret } = this.app();\n this.wechatClientBindForm.setValue({\n name,\n appId,\n appSecret,\n });\n }\n }\n onSelectionChange(event: any) {\n this.selectedApp.set(event.value);\n }\n compareFn(o1: any, o2: any) {\n return o1.name === o2.name;\n }\n ngDoCheck(): void {\n this.output.emit(this.wechatClientBindForm.value);\n }\n}\n","<div>\n <mat-form-field appearance=\"fill\">\n <mat-label>App Type</mat-label>\n <mat-select [compareWith]=\"compareFn\" (selectionChange)=\"onSelectionChange($event)\" [(ngModel)]=\"selectedApp\">\n @for (item of apps(); track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <form [formGroup]=\"wechatClientBindForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> Name </mat-label>\n <input matInput formControlName=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppId </mat-label>\n <input matInput formControlName=\"appId\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> AppSecret </mat-label>\n <input matInput formControlName=\"appSecret\" required />\n </mat-form-field>\n </form>\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Permission } from '../../../models/permission.model';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, ConfirmationComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { ClientService } from '../../../services/client.service';\nimport { ClientBindDialogComponent } from '../../../components/client-bind-dialog/client-bind-dialog.component';\nimport { ClientSecretCopyComponent } from '../../../components/client-secret-copy/client-secret-copy.component';\n\n@Component({\n imports: [AngularCommonModule, AngularComponentsModule, ToolbarComponent],\n selector: 'rolatech-authorization-details',\n templateUrl: './details.component.html',\n styleUrls: ['./details.component.scss'],\n})\nexport class DetailsComponent extends BaseComponent implements OnInit {\n clientServide = inject(ClientService);\n snackBar = inject(MatSnackBar);\n permissions: Permission[] = [];\n allComplete = false;\n isLoading = false;\n formattedPermissions: any = [];\n client: any;\n // results: any;\n\n ngOnInit(): void {\n this.get();\n }\n get(): any {\n this.isLoading = true;\n this.clientServide.get(this.id).subscribe({\n next: (res: any) => {\n this.client = res.data;\n this.isLoading = false;\n },\n error: (error) => {\n this.isLoading = false;\n this.snackBar.open(error.message);\n },\n });\n }\n editClient() { }\n deleteClient() {\n const options = {\n title: 'Delete client',\n component: ConfirmationComponent,\n data: {\n message: 'Delete confirm?',\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => {\n if (result) {\n this.clientServide.delete(this.id).subscribe({\n next: (res) => {\n this.snackBarService.open('Deleted');\n this.router.navigate([`../`], {\n relativeTo: this.route,\n });\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n resetClientSecret() {\n this.clientServide.resetClientSecret(this.id).subscribe({\n next: (res: any) => {\n this.copyClientSecret(res.data.clientSecret);\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n bindWeChatclient() {\n const options = {\n title: '绑定应用',\n cancelText: 'Cancel',\n confirmText: 'Confirm',\n component: ClientBindDialogComponent,\n data: {\n selectedApp: { name: '微信' },\n apps: [{ name: '微信' }, { name: '支付宝' }],\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => {\n if (result) {\n this.clientServide.bindWeChatClient(this.id, result).subscribe({\n next: (res) => {\n this.client.weChatClient = res.data;\n this.snackBarService.open('绑定成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n unBindWeChatclient() {\n const options = {\n title: '解绑应用',\n message: '解除绑定前, 请确认是否正在使用此应用',\n cancelText: 'Cancel',\n confirmText: 'Confirm',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => {\n if (result) {\n this.clientServide.unBindWeChatClient(this.id).subscribe({\n next: (res) => {\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n updateWeChatclient() {\n const options = {\n title: '修改应用',\n cancelText: 'Cancel',\n confirmText: 'Confirm',\n component: ClientBindDialogComponent,\n data: {\n selectedApp: { name: '微信' },\n app: this.client.weChatClient,\n apps: [{ name: '微信' }, { name: '支付宝' }],\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => {\n if (result) {\n this.clientServide.updateWeChatClient(this.client.weChatClient.id, result).subscribe({\n next: (res) => {\n this.client.weChatClient = res.data;\n this.snackBarService.open('Update successfully');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n copyClientSecret(clientSecret: string) {\n const options = {\n title: 'Copy client secret',\n confirmText: 'Confirm',\n component: ClientSecretCopyComponent,\n data: {\n clientSecret: clientSecret,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => { },\n });\n }\n}\n","<rolatech-toolbar title=\"Client details\"></rolatech-toolbar>\n<div class=\"max-w-[820px] p-3\">\n @if (client) {\n <!-- contact -->\n <div class=\"border border-[--rt-border-color] rounded px-3 pt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">Info</span>\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"editClient()\">\n <mat-icon>edit</mat-icon>\n <span i18n>Update</span>\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"deleteClient()\" i18n>Delete</button>\n </div>\n </div>\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" Update>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Name</span>\n <span i18n>{{ client.clientName || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">ClientId</span>\n <span i18n>{{ client.clientId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Client Secret</span>\n <span i18n>Set</span>\n </div>\n <button mat-button (click)=\"resetClientSecret()\">Reset</button>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\">Issued At</span>\n <span>{{ client.clientIdIssuedAt | date }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n </div>\n <!-- wechat client -->\n <div class=\"border border-[--rt-border-color] rounded p-3 mt-3\">\n <div class=\"p-3 flex justify-between items-center\">\n <span class=\"text-xl\">WeChat Client</span>\n @if (client.weChatClient) {\n <div class=\"flex gap-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"updateWeChatclient()\">\n <mat-icon>edit</mat-icon>\n Update\n </button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"unBindWeChatclient()\">Delete</button>\n </div>\n } @else {\n <button mat-flat-button class=\"max-h-8\" (click)=\"bindWeChatclient()\">Bind</button>\n }\n </div>\n @if (client.weChatClient) {\n <mat-nav-list>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>#ID</span>\n <span i18n>{{ client.id || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>Name</span>\n <span i18n>{{ client.weChatClient.name || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Id</span>\n <span i18n>{{ client.weChatClient.appId || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n <mat-divider class=\"mx-3\"></mat-divider>\n\n <mat-list-item>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex flex-1 items-center\">\n <span class=\"w-24 text-sm\" i18n>App Secret</span>\n <span>{{ client.weChatClient.appSecret || 'Unset' }}</span>\n </div>\n </div>\n </mat-list-item>\n </mat-nav-list>\n } @else {\n <div class=\"p-3\">\n <span class=\"py-11 opacity-70\" i18n>Not bound to WeChat</span>\n </div>\n }\n </div>\n }\n</div>\n","import { Client } from '../../../models/client.model';\nimport { ClientService } from '../../../services/client.service';\nimport { Component, OnInit, inject, viewChild } from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, SpinnerComponent, ToolbarComponent } from '@rolatech/angular-components';\n\n@Component({\n imports: [AngularCommonModule, AngularComponentsModule, SpinnerComponent, ToolbarComponent],\n selector: 'rolatech-authorization-index',\n templateUrl: './index.component.html',\n styleUrls: ['./index.component.scss'],\n})\nexport class IndexComponent implements OnInit {\n clientService = inject(ClientService);\n snackBar = inject(MatSnackBar);\n pageEvent!: PageEvent;\n isLoading = false;\n isSearch = false;\n length = 100;\n pageSize = 15;\n pageSizeOptions: number[] = [5, 10, 25, 100];\n clients: Client[] = [];\n displayedColumns: string[] = ['clientName', 'clientId', 'clientIdIssuedAt', 'actions'];\n paginator = viewChild(MatPaginator);\n orderOptions = [\n {\n key: 'clientIdIssuedAt',\n value: 'Issued At',\n icon: 'arrow_upward',\n sort: 'asc',\n },\n {\n key: 'clientIdIssuedAt',\n value: 'Issued At',\n icon: 'arrow_downward',\n sort: 'desc',\n },\n ];\n\n orderString = 'clientIdIssuedAt desc';\n dataSource = new MatTableDataSource<Client>();\n searchWord!: string;\n\n ngOnInit(): void {\n this.findAll(null);\n }\n onClick(item: any) {\n this.orderString = item.key + ' ' + item.sort;\n this.paginator()?.firstPage();\n this.findAll(null);\n }\n findAll(event?: PageEvent | null): any {\n this.isLoading = true;\n this.isSearch = false;\n const page = event ? event.pageIndex + 1 : 1;\n const limit = event ? event.pageSize : 15;\n const sort = this.orderString;\n const options = {\n page,\n limit,\n sort,\n };\n this.clientService.find(options).subscribe({\n next: (res: any) => {\n this.clients = res.data;\n this.dataSource.data = this.clients;\n this.length = res.meta.pagination.count;\n this.isLoading = false;\n },\n error: (error) => {\n this.isLoading = false;\n this.snackBar.open(error.message);\n },\n });\n }\n search(e: any) {\n this.isLoading = true;\n const word = e.target.value;\n const options = {\n filter: `clientName:${word}`,\n };\n this.clientService.find(options).subscribe({\n next: (res: any) => {\n this.clients = res.data;\n this.dataSource.data = this.clients;\n this.length = res.meta.pagination.count;\n this.isLoading = false;\n },\n error: (error) => {\n this.isLoading = false;\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<rolatech-toolbar title=\"Clients\">\n <button mat-icon-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"isSearch = true\">\n <mat-icon>search</mat-icon>\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"beforeMenu\">\n <mat-icon>reorder</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n @for (item of orderOptions; track item) {\n <button mat-menu-item (click)=\"onClick(item)\">\n <span>{{ item.value }}</span>\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n }\n </mat-menu>\n</rolatech-toolbar>\n@if (isSearch) {\n <mat-form-field floatLabel=\"auto\">\n <input type=\"text\" matInput placeholder=\"Name\" (keyup.enter)=\"search($event)\" />\n <button matSuffix mat-icon-button (click)=\"findAll(null); isSearch = false\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n}\n<div class=\"py-3\">\n <rolatech-spinner></rolatech-spinner>\n <table mat-table [dataSource]=\"dataSource\">\n <!-- clientName Column -->\n <ng-container matColumnDef=\"clientName\">\n <th mat-header-cell *matHeaderCellDef>Name</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientName }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientId\">\n <th mat-header-cell *matHeaderCellDef>CLIENT_ID</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientId }}</td>\n </ng-container>\n\n <!-- clientId Column -->\n <ng-container matColumnDef=\"clientIdIssuedAt\">\n <th mat-header-cell *matHeaderCellDef>Issued At</th>\n <td mat-cell *matCellDef=\"let item\">{{ item.clientIdIssuedAt | date }}</td>\n </ng-container>\n\n <!-- actions Column -->\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"actions\"></th>\n <td mat-cell *matCellDef=\"let item\" class=\"actions\">\n <mat-icon>navigate_next</mat-icon>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n [routerLink]=\"['./', row.id]\"\n class=\"cursor-pointer hover:bg-[--rt-raised-background]\"\n ></tr>\n </table>\n</div>\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findAll($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n","import { Routes } from '@angular/router';\nimport { CreateComponent } from './create/create.component';\nimport { DetailsComponent } from './details/details.component';\nimport { IndexComponent } from './index/index.component';\n\nconst clientsRoutes: Routes = [\n {\n path: '',\n component: IndexComponent,\n },\n {\n path: 'create',\n component: CreateComponent,\n },\n {\n path: ':id',\n component: DetailsComponent,\n },\n];\nexport default clientsRoutes;\n"],"names":["i1","i2","i3","i4","i5","i7","i9"],"mappings":"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"}
@@ -28,10 +28,10 @@ class EndpointService extends BaseService {
28
28
  .set('Content-Type', 'application/json');
29
29
  return httpHeaders;
30
30
  }
31
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EndpointService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
32
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EndpointService, providedIn: 'root' });
31
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: EndpointService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
32
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: EndpointService, providedIn: 'root' });
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EndpointService, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: EndpointService, decorators: [{
35
35
  type: Injectable,
36
36
  args: [{
37
37
  providedIn: 'root',
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
39
39
  }] });
40
40
 
41
41
  export { EndpointService as E };
42
- //# sourceMappingURL=rolatech-angular-authorization-endpoint.service-Bb2Q9peT.mjs.map
42
+ //# sourceMappingURL=rolatech-angular-authorization-endpoint.service-Dt_4NG3P.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-authorization-endpoint.service-Dt_4NG3P.mjs","sources":["../../../../packages/angular-authorization/src/lib/services/endpoint.service.ts"],"sourcesContent":["import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BaseService } from '@rolatech/angular-services';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EndpointService extends BaseService {\n override init() {\n this.endpoint = 'auth/endpoints';\n super.init();\n }\n findByUrl(url: string): Observable<any> {\n return this.http.get(url, {\n withCredentials: false,\n headers: this.buildHeaders(),\n });\n }\n findByResource(resource: string): Observable<any> {\n return this.http.get(`${this.environment.baseUrl}/${resource}/.well-known/endpoints`, {\n withCredentials: false,\n headers: this.buildHeaders(),\n });\n }\n private buildHeaders() {\n const username = this.environment.endpoint.username;\n const password = this.environment.endpoint.password;\n\n const httpHeaders = new HttpHeaders()\n .set('Authorization', 'Basic ' + btoa(`${username}:${password}`))\n .set('Content-Type', 'application/json');\n\n return httpHeaders;\n }\n}\n"],"names":[],"mappings":";;;;;AAQM,MAAO,eAAgB,SAAQ,WAAW,CAAA;IACrC,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB;QAChC,KAAK,CAAC,IAAI,EAAE;IACd;AACA,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACxB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;AAC7B,SAAA,CAAC;IACJ;AACA,IAAA,cAAc,CAAC,QAAgB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAA,CAAA,EAAI,QAAQ,wBAAwB,EAAE;AACpF,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;AAC7B,SAAA,CAAC;IACJ;IACQ,YAAY,GAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ;AAEnD,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW;AAChC,aAAA,GAAG,CAAC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC;AAC/D,aAAA,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;AAE1C,QAAA,OAAO,WAAW;IACpB;wGA1BW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component } from '@angular/core';
3
3
  import * as i2 from '@angular/material/snack-bar';
4
- import { E as EndpointService } from './rolatech-angular-authorization-endpoint.service-Bb2Q9peT.mjs';
4
+ import { E as EndpointService } from './rolatech-angular-authorization-endpoint.service-Dt_4NG3P.mjs';
5
5
  import { AngularCommonModule, PrettyjsonPipe } from '@rolatech/angular-common';
6
6
  import { AngularComponentsModule, ToolbarComponent } from '@rolatech/angular-components';
7
7
  import * as i4 from '@angular/material/list';
@@ -9,10 +9,10 @@ import * as i4 from '@angular/material/list';
9
9
  class DetailsComponent {
10
10
  constructor() { }
11
11
  ngOnInit() { }
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: DetailsComponent, isStandalone: true, selector: "rolatech-authorization-details", ngImport: i0, template: "<p>details works!</p>\n", styles: [""] });
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: DetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.12", type: DetailsComponent, isStandalone: true, selector: "rolatech-authorization-details", ngImport: i0, template: "<p>details works!</p>\n", styles: [""] });
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DetailsComponent, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: DetailsComponent, decorators: [{
16
16
  type: Component,
17
17
  args: [{ imports: [], selector: 'rolatech-authorization-details', template: "<p>details works!</p>\n" }]
18
18
  }], ctorParameters: () => [] });
@@ -84,10 +84,10 @@ class IndexComponent {
84
84
  },
85
85
  });
86
86
  }
87
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IndexComponent, deps: [{ token: EndpointService }, { token: i2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
88
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: IndexComponent, isStandalone: true, selector: "rolatech-authorization-index", ngImport: i0, template: "<rolatech-toolbar title=\"Endpoints\"></rolatech-toolbar>\n<div class=\"flex flex-row gap-2 px-3\">\n <div class=\"w-[256px]\">\n <mat-selection-list #endpoint [multiple]=\"false\" (selectionChange)=\"selectionChange($event)\">\n @for (endpoint of endpoints; track endpoint; let i = $index) {\n <mat-list-option [value]=\"endpoint\" [selected]=\"endpoint && i === 0\">\n {{ endpoint.resource }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n <div\n class=\"p-3 w-full bg-[--rt-raised-background] h-[calc(100vh-10rem)] text-[--rt-text-primary] overflow-scroll\"\n [innerHTML]=\"obj | prettyjson\"\n ></div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i4.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i4.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "pipe", type: PrettyjsonPipe, name: "prettyjson" }] });
87
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: IndexComponent, deps: [{ token: EndpointService }, { token: i2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
88
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: IndexComponent, isStandalone: true, selector: "rolatech-authorization-index", ngImport: i0, template: "<rolatech-toolbar title=\"Endpoints\"></rolatech-toolbar>\n<div class=\"flex flex-row gap-2 px-3\">\n <div class=\"w-[256px]\">\n <mat-selection-list #endpoint [multiple]=\"false\" (selectionChange)=\"selectionChange($event)\">\n @for (endpoint of endpoints; track endpoint; let i = $index) {\n <mat-list-option [value]=\"endpoint\" [selected]=\"endpoint && i === 0\">\n {{ endpoint.resource }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n <div\n class=\"p-3 w-full bg-[--rt-raised-background] h-[calc(100vh-10rem)] text-[--rt-text-primary] overflow-scroll\"\n [innerHTML]=\"obj | prettyjson\"\n ></div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i4.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i4.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "pipe", type: PrettyjsonPipe, name: "prettyjson" }] });
89
89
  }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IndexComponent, decorators: [{
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: IndexComponent, decorators: [{
91
91
  type: Component,
92
92
  args: [{ selector: 'rolatech-authorization-index', imports: [AngularCommonModule, AngularComponentsModule, PrettyjsonPipe, ToolbarComponent], template: "<rolatech-toolbar title=\"Endpoints\"></rolatech-toolbar>\n<div class=\"flex flex-row gap-2 px-3\">\n <div class=\"w-[256px]\">\n <mat-selection-list #endpoint [multiple]=\"false\" (selectionChange)=\"selectionChange($event)\">\n @for (endpoint of endpoints; track endpoint; let i = $index) {\n <mat-list-option [value]=\"endpoint\" [selected]=\"endpoint && i === 0\">\n {{ endpoint.resource }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n <div\n class=\"p-3 w-full bg-[--rt-raised-background] h-[calc(100vh-10rem)] text-[--rt-text-primary] overflow-scroll\"\n [innerHTML]=\"obj | prettyjson\"\n ></div>\n</div>\n" }]
93
93
  }], ctorParameters: () => [{ type: EndpointService }, { type: i2.MatSnackBar }] });
@@ -104,4 +104,4 @@ const endpointsRoutes = [
104
104
  ];
105
105
 
106
106
  export { endpointsRoutes as default };
107
- //# sourceMappingURL=rolatech-angular-authorization-endpoints.routes-C2H0ELRe.mjs.map
107
+ //# sourceMappingURL=rolatech-angular-authorization-endpoints.routes-Cpz-uZiY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-authorization-endpoints.routes-Cpz-uZiY.mjs","sources":["../../../../packages/angular-authorization/src/lib/pages/endpoints/details/details.component.ts","../../../../packages/angular-authorization/src/lib/pages/endpoints/details/details.component.html","../../../../packages/angular-authorization/src/lib/pages/endpoints/index/index.component.ts","../../../../packages/angular-authorization/src/lib/pages/endpoints/index/index.component.html","../../../../packages/angular-authorization/src/lib/pages/endpoints/endpoints.routes.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n imports: [],\n selector: 'rolatech-authorization-details',\n templateUrl: './details.component.html',\n styleUrls: ['./details.component.scss'],\n})\nexport class DetailsComponent implements OnInit {\n constructor() { }\n\n ngOnInit(): void { }\n}\n","<p>details works!</p>\n","import { Component, OnInit } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { EndpointService } from '../../../services/endpoint.service';\nimport { AngularCommonModule, PrettyjsonPipe } from '@rolatech/angular-common';\nimport { AngularComponentsModule, ToolbarComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-authorization-index',\n templateUrl: './index.component.html',\n styleUrls: ['./index.component.scss'],\n imports: [AngularCommonModule, AngularComponentsModule, PrettyjsonPipe, ToolbarComponent],\n})\nexport class IndexComponent implements OnInit {\n endpoints: any = [];\n orderOptions = [\n {\n key: 'createdAt',\n value: '创建时间',\n icon: 'arrow_upward',\n sort: 'asc',\n },\n {\n key: 'createdAt',\n value: '创建时间',\n icon: 'arrow_downward',\n sort: 'desc',\n },\n {\n key: 'status',\n value: '状态',\n icon: 'arrow_upward',\n sort: 'asc',\n },\n {\n key: 'status',\n value: '状态',\n icon: 'arrow_downward',\n sort: 'desc',\n },\n ];\n orderString = 'createdAt desc';\n obj = {};\n constructor(\n private endpointService: EndpointService,\n private snackBar: MatSnackBar,\n ) { }\n\n ngOnInit(): void {\n this.findAllEndpoints();\n }\n findAllEndpoints() {\n this.endpointService.find({}).subscribe({\n next: (res: any) => {\n this.endpoints = res.data;\n this.selectionChange(null);\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n selectionChange(event: any) {\n let url: string;\n if (event) {\n url = event.options[0].value.endpointUrl;\n } else {\n url = this.endpoints[0].endpointUrl;\n }\n this.endpointService.findByUrl(url).subscribe({\n next: (res) => {\n this.obj = res;\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<rolatech-toolbar title=\"Endpoints\"></rolatech-toolbar>\n<div class=\"flex flex-row gap-2 px-3\">\n <div class=\"w-[256px]\">\n <mat-selection-list #endpoint [multiple]=\"false\" (selectionChange)=\"selectionChange($event)\">\n @for (endpoint of endpoints; track endpoint; let i = $index) {\n <mat-list-option [value]=\"endpoint\" [selected]=\"endpoint && i === 0\">\n {{ endpoint.resource }}\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n <div\n class=\"p-3 w-full bg-[--rt-raised-background] h-[calc(100vh-10rem)] text-[--rt-text-primary] overflow-scroll\"\n [innerHTML]=\"obj | prettyjson\"\n ></div>\n</div>\n","import { Routes } from '@angular/router';\nimport { DetailsComponent } from './details/details.component';\nimport { IndexComponent } from './index/index.component';\n\nconst endpointsRoutes: Routes = [\n {\n path: '',\n component: IndexComponent,\n },\n {\n path: ':id',\n component: DetailsComponent,\n },\n];\nexport default endpointsRoutes;\n"],"names":["i1.EndpointService","i3"],"mappings":"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"}
@@ -7,10 +7,10 @@ class PermissionService extends BaseService {
7
7
  this.endpoint = 'auth/permissions';
8
8
  super.init();
9
9
  }
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PermissionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
11
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PermissionService, providedIn: 'root' });
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: PermissionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
11
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: PermissionService, providedIn: 'root' });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: PermissionService, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: PermissionService, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{
16
16
  providedIn: 'root',
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
18
18
  }] });
19
19
 
20
20
  export { PermissionService as P };
21
- //# sourceMappingURL=rolatech-angular-authorization-permission.service-C67beh-B.mjs.map
21
+ //# sourceMappingURL=rolatech-angular-authorization-permission.service-JWYhB6dG.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-authorization-permission.service-JWYhB6dG.mjs","sources":["../../../../packages/angular-authorization/src/lib/services/permission.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseService } from '@rolatech/angular-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionService extends BaseService {\n override init() {\n this.endpoint = 'auth/permissions';\n super.init();\n }\n}\n"],"names":[],"mappings":";;;;AAMM,MAAO,iBAAkB,SAAQ,WAAW,CAAA;IACvC,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,kBAAkB;QAClC,KAAK,CAAC,IAAI,EAAE;IACd;wGAJW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;;;"}