@unipin/angular-applet 21.3.2 → 21.6.0

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 (70) hide show
  1. package/README.md +4 -2
  2. package/fesm2022/unipin-angular-applet-accordion.mjs +39 -37
  3. package/fesm2022/unipin-angular-applet-accordion.mjs.map +1 -1
  4. package/fesm2022/unipin-angular-applet-alert-dialog.mjs +9 -9
  5. package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/unipin-angular-applet-alert.mjs +16 -19
  7. package/fesm2022/unipin-angular-applet-alert.mjs.map +1 -1
  8. package/fesm2022/unipin-angular-applet-approval.mjs +124 -15
  9. package/fesm2022/unipin-angular-applet-approval.mjs.map +1 -1
  10. package/fesm2022/{unipin-angular-applet-audit-audit-modal.component-wPoNvU2r.mjs → unipin-angular-applet-audit-audit-modal.component-DNlMbUda.mjs} +6 -7
  11. package/fesm2022/unipin-angular-applet-audit-audit-modal.component-DNlMbUda.mjs.map +1 -0
  12. package/fesm2022/unipin-angular-applet-audit.mjs +14 -14
  13. package/fesm2022/unipin-angular-applet-audit.mjs.map +1 -1
  14. package/fesm2022/unipin-angular-applet-auth.mjs +23 -26
  15. package/fesm2022/unipin-angular-applet-auth.mjs.map +1 -1
  16. package/fesm2022/unipin-angular-applet-avatar.mjs +6 -7
  17. package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -1
  18. package/fesm2022/unipin-angular-applet-badge.mjs +6 -7
  19. package/fesm2022/unipin-angular-applet-badge.mjs.map +1 -1
  20. package/fesm2022/unipin-angular-applet-buttons.mjs +13 -15
  21. package/fesm2022/unipin-angular-applet-buttons.mjs.map +1 -1
  22. package/fesm2022/unipin-angular-applet-calendar.mjs +23 -27
  23. package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -1
  24. package/fesm2022/unipin-angular-applet-collapsible.mjs +17 -20
  25. package/fesm2022/unipin-angular-applet-collapsible.mjs.map +1 -1
  26. package/fesm2022/unipin-angular-applet-common.mjs +25 -30
  27. package/fesm2022/unipin-angular-applet-common.mjs.map +1 -1
  28. package/fesm2022/unipin-angular-applet-containers.mjs +23 -26
  29. package/fesm2022/unipin-angular-applet-containers.mjs.map +1 -1
  30. package/fesm2022/unipin-angular-applet-dialog.mjs +64 -70
  31. package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -1
  32. package/fesm2022/unipin-angular-applet-forms.mjs +328 -277
  33. package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -1
  34. package/fesm2022/unipin-angular-applet-froala.mjs +10 -11
  35. package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -1
  36. package/fesm2022/unipin-angular-applet-grids.mjs +408 -5
  37. package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -1
  38. package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +5 -6
  39. package/fesm2022/unipin-angular-applet-infinite-scroll.mjs.map +1 -1
  40. package/fesm2022/unipin-angular-applet-json-viewer.mjs +8 -9
  41. package/fesm2022/unipin-angular-applet-json-viewer.mjs.map +1 -1
  42. package/fesm2022/unipin-angular-applet-kbd.mjs +5 -6
  43. package/fesm2022/unipin-angular-applet-kbd.mjs.map +1 -1
  44. package/fesm2022/unipin-angular-applet-loading-dialog.mjs +8 -9
  45. package/fesm2022/unipin-angular-applet-loading-dialog.mjs.map +1 -1
  46. package/fesm2022/unipin-angular-applet-markdown.mjs +24 -22
  47. package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -1
  48. package/fesm2022/unipin-angular-applet-popover.mjs +26 -30
  49. package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -1
  50. package/fesm2022/unipin-angular-applet-progress-bar.mjs +8 -9
  51. package/fesm2022/unipin-angular-applet-progress-bar.mjs.map +1 -1
  52. package/fesm2022/unipin-angular-applet-skeleton.mjs +5 -6
  53. package/fesm2022/unipin-angular-applet-skeleton.mjs.map +1 -1
  54. package/fesm2022/unipin-angular-applet-spinner.mjs +7 -7
  55. package/fesm2022/unipin-angular-applet-spinner.mjs.map +1 -1
  56. package/fesm2022/unipin-angular-applet-stepper.mjs +17 -19
  57. package/fesm2022/unipin-angular-applet-stepper.mjs.map +1 -1
  58. package/fesm2022/unipin-angular-applet-swipeable.mjs +26 -30
  59. package/fesm2022/unipin-angular-applet-swipeable.mjs.map +1 -1
  60. package/fesm2022/unipin-angular-applet-tabs.mjs +22 -25
  61. package/fesm2022/unipin-angular-applet-tabs.mjs.map +1 -1
  62. package/fesm2022/unipin-angular-applet-tooltip.mjs +5 -6
  63. package/fesm2022/unipin-angular-applet-tooltip.mjs.map +1 -1
  64. package/package.json +5 -2
  65. package/types/unipin-angular-applet-accordion.d.ts +4 -2
  66. package/types/unipin-angular-applet-approval.d.ts +42 -11
  67. package/types/unipin-angular-applet-forms.d.ts +29 -5
  68. package/types/unipin-angular-applet-grids.d.ts +101 -14
  69. package/types/unipin-angular-applet-popover.d.ts +3 -3
  70. package/fesm2022/unipin-angular-applet-audit-audit-modal.component-wPoNvU2r.mjs.map +0 -1
@@ -108,10 +108,10 @@ class ProfileService {
108
108
  `,
109
109
  });
110
110
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProfileService, deps: [{ token: i1.GqlParser }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProfileService, providedIn: 'root' }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ProfileService, deps: [{ token: i1.GqlParser }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ProfileService, providedIn: 'root' }); }
113
113
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProfileService, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ProfileService, decorators: [{
115
115
  type: Injectable,
116
116
  args: [{
117
117
  providedIn: 'root'
@@ -136,7 +136,7 @@ class AuthService {
136
136
  * @type {User} An interface contain user information.
137
137
  * @default {} as User
138
138
  */
139
- this.user = signal({}, ...(ngDevMode ? [{ debugName: "user" }] : []));
139
+ this.user = signal({}, ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
140
140
  }
141
141
  static logout() {
142
142
  AuthService.authToken = '';
@@ -242,10 +242,10 @@ class AuthService {
242
242
  localStorage.setItem('refreshToken', AuthService.refreshToken);
243
243
  }));
244
244
  }
245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AuthService, deps: [{ token: i1.GqlParser }, { token: ProfileService }], target: i0.ɵɵFactoryTarget.Injectable }); }
246
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AuthService, providedIn: 'root' }); }
245
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthService, deps: [{ token: i1.GqlParser }, { token: ProfileService }], target: i0.ɵɵFactoryTarget.Injectable }); }
246
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthService, providedIn: 'root' }); }
247
247
  }
248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AuthService, decorators: [{
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthService, decorators: [{
249
249
  type: Injectable,
250
250
  args: [{
251
251
  providedIn: 'root'
@@ -378,10 +378,10 @@ class AuthResolver {
378
378
  buffer = chars.indexOf(buffer);
379
379
  return output;
380
380
  }
381
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AuthResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
382
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AuthResolver, providedIn: 'root' }); }
381
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
382
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthResolver, providedIn: 'root' }); }
383
383
  }
384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AuthResolver, decorators: [{
384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthResolver, decorators: [{
385
385
  type: Injectable,
386
386
  args: [{
387
387
  providedIn: 'root'
@@ -401,7 +401,7 @@ const authGuard = () => {
401
401
  class PermissionService {
402
402
  constructor(gql) {
403
403
  this.gql = gql;
404
- this.permissions = signal(new Map(), ...(ngDevMode ? [{ debugName: "permissions" }] : []));
404
+ this.permissions = signal(new Map(), ...(ngDevMode ? [{ debugName: "permissions" }] : /* istanbul ignore next */ []));
405
405
  /**
406
406
  * A boolean value that tells the permission service is initiated (permissions list is retrieved from Backend) or not.
407
407
  * @default false
@@ -456,10 +456,10 @@ class PermissionService {
456
456
  `
457
457
  });
458
458
  }
459
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PermissionService, deps: [{ token: i1.GqlParser }], target: i0.ɵɵFactoryTarget.Injectable }); }
460
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PermissionService, providedIn: 'root' }); }
459
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PermissionService, deps: [{ token: i1.GqlParser }], target: i0.ɵɵFactoryTarget.Injectable }); }
460
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PermissionService, providedIn: 'root' }); }
461
461
  }
462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PermissionService, decorators: [{
462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PermissionService, decorators: [{
463
463
  type: Injectable,
464
464
  args: [{
465
465
  providedIn: 'root'
@@ -582,13 +582,12 @@ class PermissionDirective {
582
582
  }
583
583
  this.viewContainer.clear();
584
584
  }
585
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PermissionDirective, deps: [{ token: PermissionService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
586
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: PermissionDirective, isStandalone: true, selector: "[hasPermission]", inputs: { hasPermission: "hasPermission" }, exportAs: ["hasPermission"], ngImport: i0 }); }
585
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PermissionDirective, deps: [{ token: PermissionService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
586
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.10", type: PermissionDirective, isStandalone: true, selector: "[hasPermission]", inputs: { hasPermission: "hasPermission" }, exportAs: ["hasPermission"], ngImport: i0 }); }
587
587
  }
588
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PermissionDirective, decorators: [{
588
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PermissionDirective, decorators: [{
589
589
  type: Directive,
590
590
  args: [{
591
- standalone: true,
592
591
  exportAs: 'hasPermission',
593
592
  selector: '[hasPermission]'
594
593
  }]
@@ -597,8 +596,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
597
596
  }] } });
598
597
 
599
598
  class UnauthorizedPage {
600
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UnauthorizedPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
601
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: UnauthorizedPage, isStandalone: true, selector: "up-unauthorized", host: { classAttribute: "flex flex-col items-center justify-center size-full gap-4 p-5 select-none" }, providers: [
599
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UnauthorizedPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
600
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: UnauthorizedPage, isStandalone: true, selector: "up-unauthorized", host: { classAttribute: "flex flex-col items-center justify-center size-full gap-4 p-5 select-none" }, providers: [
602
601
  provideIcons({
603
602
  matLockRound
604
603
  })
@@ -614,10 +613,9 @@ class UnauthorizedPage {
614
613
  <p class="text-center">Please log in or re-check your permissions.</p>
615
614
  `, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
616
615
  }
617
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UnauthorizedPage, decorators: [{
616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UnauthorizedPage, decorators: [{
618
617
  type: Component,
619
618
  args: [{
620
- standalone: true,
621
619
  selector: 'up-unauthorized',
622
620
  changeDetection: ChangeDetectionStrategy.OnPush,
623
621
  host: {
@@ -684,8 +682,8 @@ class LoadingPage {
684
682
  ngOnDestroy() {
685
683
  this.sub?.unsubscribe();
686
684
  }
687
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: LoadingPage, deps: [{ token: LOADING_CONFIG }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
688
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: LoadingPage, isStandalone: true, selector: "up-loading", host: { classAttribute: "flex flex-col items-center gap-6 p-5 justify-center size-full select-none" }, ngImport: i0, template: `
685
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: LoadingPage, deps: [{ token: LOADING_CONFIG }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
686
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: LoadingPage, isStandalone: true, selector: "up-loading", host: { classAttribute: "flex flex-col items-center gap-6 p-5 justify-center size-full select-none" }, ngImport: i0, template: `
689
687
  <up-spinner class="size-10" />
690
688
 
691
689
  <h3 class="text-center text-lg lg:text-2xl font-bold">
@@ -693,10 +691,9 @@ class LoadingPage {
693
691
  </h3>
694
692
  `, isInline: true, dependencies: [{ kind: "component", type: UpSpinnerComponent, selector: "up-spinner", inputs: ["stokeWidth", "inlineClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
695
693
  }
696
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: LoadingPage, decorators: [{
694
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: LoadingPage, decorators: [{
697
695
  type: Component,
698
696
  args: [{
699
- standalone: true,
700
697
  selector: 'up-loading',
701
698
  changeDetection: ChangeDetectionStrategy.OnPush,
702
699
  host: {
@@ -1 +1 @@
1
- {"version":3,"file":"unipin-angular-applet-auth.mjs","sources":["../../../projects/unipin-angular/auth/authorization/utils/provide-loading-config.util.ts","../../../projects/unipin-angular/auth/authentication/services/profile.service.ts","../../../projects/unipin-angular/auth/authentication/services/auth.service.ts","../../../projects/unipin-angular/auth/authentication/resolvers/auth.resolver.ts","../../../projects/unipin-angular/auth/authentication/guards/auth.guard.ts","../../../projects/unipin-angular/auth/authorization/services/permission.service.ts","../../../projects/unipin-angular/auth/authorization/guards/permission.guard.ts","../../../projects/unipin-angular/auth/authorization/interceptors/authorization.interceptor.ts","../../../projects/unipin-angular/auth/authentication/interceptors/refresh-token.interceptor.ts","../../../projects/unipin-angular/auth/authorization/directives/permission.directive.ts","../../../projects/unipin-angular/auth/authorization/pages/unauthorized.page.ts","../../../projects/unipin-angular/auth/authorization/pages/loading.page.ts","../../../projects/unipin-angular/auth/unipin-angular-applet-auth.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport const LOADING_CONFIG = new InjectionToken<LoadingConfig>('LOADING_CONFIG');\n\nexport type LoadingConfig = {\n permTypes: string[];\n permModules: string[];\n subjectGuidStorageKey?: string;\n}\n\nexport function provideLoadingConfig(config: LoadingConfig): Provider{\n return {\n provide: LOADING_CONFIG,\n useValue: config\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GqlParser, CacheStrategy, QueryResult } from '@unipin/angular-gql';\nimport type { AppLoginSubject, Maybe } from '@unipin/graphql-schema';\nimport { User } from '../types/user.type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfileService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public transformSubjetToUser(subject: AppLoginSubject): User{\n const user: User = { \n ...subject,\n email: '',\n photo: '/assets/imgs/profile.svg'\n };\n\n subject.appLoginExt?.forEach(\n ({ paramCode, file: { publicUrl }}: any) => {\n if (paramCode === 'USER_PROFILE_PHOTO') {\n user.photo = publicUrl;\n }\n }\n ); \n\n subject.appLoginPrincipal?.forEach(\n ({ principalId, principalType }: any) => {\n if (principalType === 'EMAIL_USERNAME') {\n user.email = principalId;\n }\n }\n );\n return user;\n }\n\n /**\n * A method to get the user profile information.\n * @param {string} extraAttr - Contain extra attribute to get the user profile information.\n * @param {CacheStrategy | undefined} cacheStrategy - Specifies how Apollo Client should handle data retrieval, determining whether it should make a network request to fetch fresh data from the server or use data from the local cache.\n * \n * @returns {Observable<QueryResult<{ authMsMyProfile: Maybe<AppLoginSubject> }>>} Contain user profile information.\n */\n public getMyProfile(extraAttr = '', cacheStrategy?: CacheStrategy): Observable<QueryResult<{ authMsMyProfile: Maybe<AppLoginSubject> }>>{\n return this.gql.query({\n cacheStrategy,\n operationName: 'getMyProfile',\n query: `\n query getMyProfile {\n authMsMyProfile {\n guid\n name\n status\n gender\n birthday\n category\n totpSecretGuid\n appLoginPrincipal {\n guid\n principalId\n principalType\n }\n appLoginExt {\n guid\n paramCode\n paramType\n file {\n publicUrl\n }\n }\n company {\n code\n guid\n isInternal\n name\n status\n }\n merchants {\n guid\n name\n status\n }\n roles {\n guid\n code\n name\n status\n isInternal\n }\n departments {\n isLead\n department {\n hierarchyCode\n hierarchyPath\n name\n guid\n status\n }\n }\n ${ extraAttr }\n }\n }\n `,\n });\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { Observable, tap } from 'rxjs';\nimport { GqlParser, MutationResult } from '@unipin/angular-gql';\nimport type { LoginResponse, LoginRq, MutationAuthMsRefreshAccessTokenArgs, Token } from '@unipin/graphql-schema';\nimport { User } from '../types/user.type';\nimport { ProfileService } from './profile.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n /**\n * Both `authToken` and `refreshToken` are public static variable to store the auth token and refresh token obtained form the login API.\n * They will be set as header param inside API calls.\n * @type {string}\n * \n * @default ''\n */\n public static authToken: string = '';\n public static refreshToken: string = '';\n\n /**\n * A public variable to store the logined user information.\n * @type {User} An interface contain user information.\n * @default {} as User\n */\n public user: WritableSignal<User> = signal({} as User);\n\n constructor(\n protected readonly gql: GqlParser,\n protected readonly profileService: ProfileService\n ) { }\n\n public static logout(): void{\n AuthService.authToken = '';\n AuthService.refreshToken = '';\n \n localStorage.removeItem('userGuid');\n localStorage.removeItem('authToken');\n localStorage.removeItem('refreshToken');\n }\n\n public logout(): void{\n this.user.set({} as User);\n AuthService.logout();\n }\n\n /**\n * This method is used by the `refreshTokenInterceptor`, to get the new token shortly before the auth token is expired.\n * @param {MutationAuthMsRefreshAccessTokenArgs} variables - Contain `refreshToken` attribute which is the current refresh token.\n * @returns {Observable<MutationResult<{ authMsRefreshAccessToken: Token }>>} Contain new `authToken` and `refreshToken`.\n */\n public refreshToken(variables: MutationAuthMsRefreshAccessTokenArgs): Observable<MutationResult<{ authMsRefreshAccessToken: Token }>>{\n return this.gql.mutate({\n variables,\n operationName: 'RefreshToken',\n headers: {\n 'operation-type': 'Mutation',\n 'operation-name': 'RefreshToken'\n },\n mutation: `\n mutation RefreshToken($refreshToken: String!) {\n authMsRefreshAccessToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n `\n });\n } \n\n /**\n * A method to authenticate the user to get the session for applet or platform.\n * When successful it will set the user information to the `user` variable, `authToken` and `refreshToken`.\n * It will set the `authToken`, `refreshToken`, `userGuid` and `roles` to the localStorage also for API calls.\n * \n * @param {{ email: string, password: string, sourcePlatform: string }} input - Contain `email` which is registered user email, `password` which is registered user password and `sourcePlatform` it's value can be `ADMIN` to get the applet session or `CP_COMMERCE` to get the platform session.\n * \n * @returns {Observable<MutationResult<{ authMsLogin: LoginResponse }>>} Contain logined user information.\n */\n public login(input: LoginRq): Observable<MutationResult<{ authMsLogin: LoginResponse }>>{\n return this.gql.mutate<{ authMsLogin: LoginResponse }>({\n operationName: 'Login',\n variables: { \n input \n },\n mutation: `\n mutation Login($input: LoginRq!) {\n authMsLogin(input: $input) {\n accessToken\n refreshToken\n suggestedAction\n user {\n birthday\n category\n email\n gender\n guid\n mobileNumber\n name\n status\n departments {\n department {\n hierarchyCode\n hierarchyPath\n name\n guid\n status\n }\n isLead\n }\n }\n roles {\n guid\n code\n name\n isInternal\n status\n }\n }\n }\n `\n }).pipe(\n tap(({ data }) => {\n if (!data?.authMsLogin){\n return;\n }\n const { accessToken, user, refreshToken, suggestedAction, roles } = data.authMsLogin;\n\n this.user.set(\n {\n ...user as any,\n roles: roles as any,\n photo: '/assets/imgs/profile.svg'\n }\n );\n\n AuthService.authToken = accessToken ?? '';\n AuthService.refreshToken = refreshToken ?? '';\n\n if (suggestedAction !== 'CHANGE_PASSWORD') { \n localStorage.setItem('authToken', AuthService.authToken); \n }\n\n localStorage.setItem('userGuid', this.user().guid ?? '');\n localStorage.setItem('refreshToken', AuthService.refreshToken);\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AuthService } from '../services/auth.service';\n\n/**\n * The `AuthResolver` service provides methods for handling authentication-related tasks,\n * such as checking user login status, retrieving authentication tokens, and managing token expiration.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthResolver {\n\n /**\n * Checks if the user is logged in by verifying the presence of an authentication token.\n * @returns {boolean} - True if the user is logged in; otherwise, false.\n */\n public isUserLoggedIn(): boolean{ \n return AuthService.authToken !== ''; \n }\n\n /**\n * Retrieves the authentication token, resolving it if needed.\n * @returns {string | null} - The authentication token if the user is logged in; otherwise, null.\n */\n public getAuthToken(): string | null{\n this.resolveUserAuthToken();\n \n if (this.isUserLoggedIn()) {\n return AuthService.authToken;\n }\n return null;\n }\n\n /**\n * Resolves the user's authentication token by checking expiration and whether the user still logged in or not.\n */\n protected resolveUserAuthToken(): void{\n if (\n !this.isUserLoggedIn() || \n !this.isTokenExpired(AuthService.authToken)\n ) {\n return;\n }\n AuthService.logout();\n }\n\n /**\n * Checks if a given token is expired or not yet.\n * @param {string | null} token - The token to be checked for expiration.\n * @returns {boolean} - True if the token is expired; otherwise, false.\n */\n protected isTokenExpired(token: string | null): boolean{\n if (!token || token === '') {\n return true;\n }\n \n const date = this.getTokenExpirationDate(token);\n if (date === null) {\n return false;\n }\n return !(<number>date.valueOf() > new Date().valueOf() + 0 * 1000);\n }\n\n /**\n * Retrieves the expiration date of a token.\n * @param {string | null} token - The token for which to retrieve the expiration date.\n * @returns {Date | null} - The expiration date of the token if available; otherwise, null.\n */\n protected getTokenExpirationDate(token: string | null): Date | null{\n const decoded: any = this.decodeToken(token); \n if (!decoded || !decoded.hasOwnProperty('exp')) {\n return null;\n }\n \n const date = new Date(0);\n date.setUTCSeconds(decoded.exp);\n return date;\n }\n\n /**\n * Decodes a JWT token to extract payload information.\n * @param {string | null} token - The JWT token to be decoded.\n * @returns {string | null} - The decoded payload as a string if successful; otherwise, null.\n */\n protected decodeToken(token: string | null): string | null{\n if (!token || token === '') {\n return null;\n }\n\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error(`The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`);\n }\n\n const decoded = this.urlBase64Decode(parts[1]);\n if (!decoded) {\n throw new Error('Cannot decode the token.');\n }\n return JSON.parse(decoded);\n }\n\n /**\n * Decodes a base64url-encoded string.\n * @param {string} str - The base64url-encoded string to be decoded.\n * @returns {string} - The decoded string.\n */\n protected urlBase64Decode(str: string): string{\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n \n case 2: \n output += '==';\n break;\n\n case 3:\n output += '=';\n break;\n\n default: \n throw new Error('Illegal base64url string!');\n }\n return this.b64DecodeUnicode(output);\n }\n\n /**\n * Decodes a Unicode string from a base64-encoded string.\n * @param {string} str - The base64-encoded string to be decoded.\n * @returns {string} - The decoded Unicode string.\n */\n protected b64DecodeUnicode(str: string): string{\n return decodeURIComponent(\n Array.prototype.map.call(\n this.b64decode(str), \n (c: any) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n ).join('')\n );\n }\n\n /**\n * Decodes a base64-encoded string.\n * @param {string} str - The base64-encoded string to be decoded.\n * @returns {string} - The decoded string.\n */\n protected b64decode(str: string): string{\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let output = '';\n\n str = String(str).replace(/=+$/, '');\n if (str.length % 4 === 1) {\n throw new Error(`'atob' failed: The string to be decoded is not correctly encoded.`);\n }\n\n for (\n let bc = 0, bs: any, buffer: any, idx = 0;\n (buffer = str.charAt(idx++));\n \n ~buffer && ((bs = bc % 4? bs * 64 + buffer : buffer), bc++ % 4)? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) : 0\n ) buffer = chars.indexOf(buffer);\n\n return output;\n }\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { AuthResolver } from '../resolvers/auth.resolver';\n\nexport const authGuard: CanActivateFn = (): boolean => {\n \n const router = inject(Router);\n const resolver = inject(AuthResolver);\n \n if (!resolver.isUserLoggedIn()) {\n router.navigateByUrl('/auth/login');\n return false;\n }\n return true;\n};\n","import { Injectable, signal } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GqlParser, CacheStrategy, QueryResult } from '@unipin/angular-gql';\nimport type { AppPermDfn, PermissionFilter } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n\n public readonly permissions = signal(new Map<string, boolean>());\n\n /**\n * A boolean value that tells the permission service is initiated (permissions list is retrieved from Backend) or not.\n * @default false\n */\n public isInitiated = false;\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n /**\n * A method that checking if the user has the permission or not based on the params value.\n * @param {string} permission - Permission code that wanted to be checked\n * \n * @returns {boolean} Contain boolean value that tells the user has the permission or not.\n */\n public has(permission: string): boolean{\n const permissions = this.permissions();\n const [ scope, module, type ] = permission.split('.');\n\n return (\n permissions.has(`${ scope }.${ module }.ADMIN`) ||\n permissions.has(`${ scope }.${ module }.${ type }`)\n );\n }\n\n /**\n * A method that set the permissions and permission modules.\n * @param {string[]} permCodes - Contain list of permission codes.\n */\n public setPermission(permCodes: string[]): void{\n this.permissions.update(\n (map) => {\n const newMap = new Map(map);\n \n for (const code of permCodes) {\n newMap.set(code, true);\n }\n return newMap;\n }\n );\n }\n\n /**\n * A method that get the query value with authMsPermission as the object.\n * @param {PermissionFilter} filter - Contain filter as a conditions for the query.\n * @returns {Observable<ApolloQueryResult<{ authMsPermission: { data: AppPermDfn[] }}>>} Contain query value.\n */\n public getPermissions(filter: PermissionFilter, cacheStrategy?: CacheStrategy): Observable<QueryResult<{ authMsPermission: { data: AppPermDfn[] }}>>{\n return this.gql.query({\n cacheStrategy,\n operationName: 'QueryPermission',\n variables: { \n filter \n },\n query: `\n query QueryPermission($filter: PermissionFilter!) {\n authMsPermission(filter: $filter) {\n data {\n permCode\n }\n }\n }\n `\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\nimport { PermissionService } from '../services/permission.service';\n\nexport const permissionGuard: CanActivateFn = (route: ActivatedRouteSnapshot): boolean => {\n \n const router: Router = inject(Router);\n const location: Location = inject(Location);\n const permissionService: PermissionService = inject(PermissionService);\n\n const permissions: string[] = route.data['permissions'];\n const aggregator: 'AND' | 'OR' = route.data['aggregator']?? 'OR';\n\n if (\n !permissions ||\n !permissions.length\n ) {\n console.error('Invalid config: permissions is a required parameter in route data for PermissionGuard');\n return false;\n }\n\n if (!permissionService.isInitiated) {\n router.navigate(\n [ 'loading' ], \n { \n queryParams: { \n url: `${ location.path() + window.location.hash }` \n } \n }\n );\n return false;\n }\n \n if (aggregator === 'OR') {\n for (let i = 0; i < permissions.length; i++) {\n if (permissionService.has(permissions[i])) {\n return true;\n }\n }\n }\n\n let hasPermission = true;\n for (let i = 0; i < permissions.length; i++) {\n if (!permissionService.has(permissions[i])) {\n hasPermission = false;\n break;\n }\n }\n\n if (hasPermission) {\n return true;\n }\n router.navigateByUrl('/401');\n return false;\n};\n","import { HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '../../authentication/services/auth.service';\n\nexport const authorizationInterceptor: HttpInterceptorFn = (\n request: HttpRequest<any>,\n next: HttpHandlerFn\n): Observable<HttpEvent<any>> => {\n \n return next(\n request.clone(\n {\n headers: request.headers,\n setHeaders: {\n authorization: AuthService.authToken,\n }\n }\n )\n );\n};\n","import { inject } from '@angular/core';\nimport { HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { catchError, Observable, switchMap, tap, throwError } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\n\n\nexport const refreshTokenInterceptor: HttpInterceptorFn = (\n request: HttpRequest<any>, \n next: HttpHandlerFn\n): Observable<HttpEvent<any>> => {\n \n const router = inject(Router);\n const authService = inject(AuthService);\n\n return next(request).pipe(\n tap(\n ({ type, body }: any) => {\n if (\n type === 0 ||\n !body\n ) {\n return;\n }\n \n const { errors } = body;\n if (\n !errors ||\n !errors.length ||\n errors[0].extensions.code !== 'USER_INVALID_TOKEN'\n ) {\n return;\n }\n throw body;\n }\n ),\n catchError(\n (error: any) => {\n const { errors } = error;\n if (\n !errors || \n !errors.length\n ) {\n return throwError(() => error);\n }\n \n if (\n (\n errors[0].message &&\n errors[0].extensions.code !== 'USER_INVALID_TOKEN'\n ) ||\n request.url.includes('RefreshToken')\n ) {\n return throwError(() => errors[0]);\n }\n \n return authService.refreshToken({ refreshToken: AuthService.refreshToken }).pipe(\n switchMap(\n ({ data }) => {\n const { accessToken, refreshToken } = data!.authMsRefreshAccessToken;\n\n AuthService.authToken = accessToken!;\n AuthService.refreshToken = refreshToken!;\n\n localStorage.setItem('authToken', accessToken!);\n localStorage.setItem('refreshToken', refreshToken!);\n\n return next(\n request.clone(\n {\n setHeaders: {\n authorization: accessToken!,\n },\n }\n )\n );\n }\n ),\n catchError(\n () => {\n authService.logout();\n location.href = `/auth/login?url=${ encodeURIComponent(router.url + location.hash) }`;\n return throwError(() => errors[0]);\n }\n )\n );\n }\n )\n );\n};\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PermissionService } from '../services/permission.service';\n\n/**\n * The `PermissionDirective` is a directive that conditionally renders content based on user permissions.\n * @selector '[hasPermission]'\n * \n * @example\n * ```html\n * <div *hasPermission=\"'MERCHANT.CONTRACT.READ'\"></div>\n * ```\n */\n@Directive({\n standalone: true,\n exportAs: 'hasPermission',\n selector: '[hasPermission]'\n})\nexport class PermissionDirective {\n\n constructor(\n protected readonly service: PermissionService,\n protected readonly templateRef: TemplateRef<any>,\n protected readonly viewContainer: ViewContainerRef,\n ) { }\n\n @Input()\n set hasPermission(permission: string) {\n if (this.service.has(permission)) {\n this.viewContainer.createEmbeddedView(\n this.templateRef\n );\n return;\n }\n this.viewContainer.clear();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matLockRound } from '@ng-icons/material-icons/round';\n\n@Component({\n standalone: true,\n selector: 'up-unauthorized',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col items-center justify-center size-full gap-4 p-5 select-none'\n },\n providers: [\n provideIcons(\n { \n matLockRound \n }\n )\n ],\n imports: [\n NgIcon\n ],\n template: `\n <ng-icon \n name=\"matLockRound\" \n class=\"text-3xl lg:text-5xl\" \n />\n \n <h3 class=\"text-center text-lg lg:text-2xl font-bold\">\n Oops! You're not authorized to access this page.\n </h3>\n <p class=\"text-center\">Please log in or re-check your permissions.</p>\n `,\n})\nexport class UnauthorizedPage {}\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { UpSpinnerComponent } from '@unipin/angular-applet/spinner';\nimport { LOADING_CONFIG, LoadingConfig } from '../utils/provide-loading-config.util';\nimport { PermissionService } from '../services/permission.service';\n\n@Component({\n standalone: true,\n selector: 'up-loading',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col items-center gap-6 p-5 justify-center size-full select-none'\n },\n imports: [\n UpSpinnerComponent\n ],\n template: `\n <up-spinner class=\"size-10\" />\n \n <h3 class=\"text-center text-lg lg:text-2xl font-bold\">\n Please wait, we're preparing the applet. Drink water or coffee while waiting.\n </h3>\n `,\n})\nexport class LoadingPage implements OnInit, OnDestroy {\n\n protected sub?: Subscription;\n\n constructor(\n @Inject(LOADING_CONFIG) public readonly config: LoadingConfig,\n protected readonly router: Router,\n protected readonly route: ActivatedRoute,\n protected readonly permissionService: PermissionService\n ) { }\n\n public ngOnInit(): void{\n const subjectGuid = localStorage.getItem(this.config.subjectGuidStorageKey || 'userGuid');\n if (!subjectGuid) {\n this.router.navigate([ '401' ]);\n return;\n }\n\n const permCodeList: string[] = [];\n this.sub = this.permissionService.getPermissions(\n { \n subjectGuid, \n pageSize: 1000,\n permType: this.config.permTypes,\n permModule: this.config.permModules, \n }, \n 'no-cache'\n ).subscribe({\n error: () => {\n this.router.navigate([ '401' ]);\n },\n next: ({ data: { authMsPermission: { data }}}) => {\n data.forEach(\n ({ permCode }) => {\n if (!permCode) {\n return;\n }\n permCodeList.push(permCode);\n }\n );\n\n this.permissionService.isInitiated = true;\n this.permissionService.setPermission(permCodeList);\n this.router.navigateByUrl(this.route.snapshot.queryParamMap.get('url')?? '');\n }\n });\n }\n\n public ngOnDestroy(): void{\n this.sub?.unsubscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ProfileService","i1.PermissionService","i1","i2.PermissionService"],"mappings":"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"}
1
+ {"version":3,"file":"unipin-angular-applet-auth.mjs","sources":["../../../projects/unipin-angular/auth/authorization/utils/provide-loading-config.util.ts","../../../projects/unipin-angular/auth/authentication/services/profile.service.ts","../../../projects/unipin-angular/auth/authentication/services/auth.service.ts","../../../projects/unipin-angular/auth/authentication/resolvers/auth.resolver.ts","../../../projects/unipin-angular/auth/authentication/guards/auth.guard.ts","../../../projects/unipin-angular/auth/authorization/services/permission.service.ts","../../../projects/unipin-angular/auth/authorization/guards/permission.guard.ts","../../../projects/unipin-angular/auth/authorization/interceptors/authorization.interceptor.ts","../../../projects/unipin-angular/auth/authentication/interceptors/refresh-token.interceptor.ts","../../../projects/unipin-angular/auth/authorization/directives/permission.directive.ts","../../../projects/unipin-angular/auth/authorization/pages/unauthorized.page.ts","../../../projects/unipin-angular/auth/authorization/pages/loading.page.ts","../../../projects/unipin-angular/auth/unipin-angular-applet-auth.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport const LOADING_CONFIG = new InjectionToken<LoadingConfig>('LOADING_CONFIG');\n\nexport type LoadingConfig = {\n permTypes: string[];\n permModules: string[];\n subjectGuidStorageKey?: string;\n}\n\nexport function provideLoadingConfig(config: LoadingConfig): Provider{\n return {\n provide: LOADING_CONFIG,\n useValue: config\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GqlParser, CacheStrategy, QueryResult } from '@unipin/angular-gql';\nimport type { AppLoginSubject, Maybe } from '@unipin/graphql-schema';\nimport { User } from '../types/user.type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfileService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public transformSubjetToUser(subject: AppLoginSubject): User{\n const user: User = { \n ...subject,\n email: '',\n photo: '/assets/imgs/profile.svg'\n };\n\n subject.appLoginExt?.forEach(\n ({ paramCode, file: { publicUrl }}: any) => {\n if (paramCode === 'USER_PROFILE_PHOTO') {\n user.photo = publicUrl;\n }\n }\n ); \n\n subject.appLoginPrincipal?.forEach(\n ({ principalId, principalType }: any) => {\n if (principalType === 'EMAIL_USERNAME') {\n user.email = principalId;\n }\n }\n );\n return user;\n }\n\n /**\n * A method to get the user profile information.\n * @param {string} extraAttr - Contain extra attribute to get the user profile information.\n * @param {CacheStrategy | undefined} cacheStrategy - Specifies how Apollo Client should handle data retrieval, determining whether it should make a network request to fetch fresh data from the server or use data from the local cache.\n * \n * @returns {Observable<QueryResult<{ authMsMyProfile: Maybe<AppLoginSubject> }>>} Contain user profile information.\n */\n public getMyProfile(extraAttr = '', cacheStrategy?: CacheStrategy): Observable<QueryResult<{ authMsMyProfile: Maybe<AppLoginSubject> }>>{\n return this.gql.query({\n cacheStrategy,\n operationName: 'getMyProfile',\n query: `\n query getMyProfile {\n authMsMyProfile {\n guid\n name\n status\n gender\n birthday\n category\n totpSecretGuid\n appLoginPrincipal {\n guid\n principalId\n principalType\n }\n appLoginExt {\n guid\n paramCode\n paramType\n file {\n publicUrl\n }\n }\n company {\n code\n guid\n isInternal\n name\n status\n }\n merchants {\n guid\n name\n status\n }\n roles {\n guid\n code\n name\n status\n isInternal\n }\n departments {\n isLead\n department {\n hierarchyCode\n hierarchyPath\n name\n guid\n status\n }\n }\n ${ extraAttr }\n }\n }\n `,\n });\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { Observable, tap } from 'rxjs';\nimport { GqlParser, MutationResult } from '@unipin/angular-gql';\nimport type { LoginResponse, LoginRq, MutationAuthMsRefreshAccessTokenArgs, Token } from '@unipin/graphql-schema';\nimport { User } from '../types/user.type';\nimport { ProfileService } from './profile.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n /**\n * Both `authToken` and `refreshToken` are public static variable to store the auth token and refresh token obtained form the login API.\n * They will be set as header param inside API calls.\n * @type {string}\n * \n * @default ''\n */\n public static authToken: string = '';\n public static refreshToken: string = '';\n\n /**\n * A public variable to store the logined user information.\n * @type {User} An interface contain user information.\n * @default {} as User\n */\n public user: WritableSignal<User> = signal({} as User);\n\n constructor(\n protected readonly gql: GqlParser,\n protected readonly profileService: ProfileService\n ) { }\n\n public static logout(): void{\n AuthService.authToken = '';\n AuthService.refreshToken = '';\n \n localStorage.removeItem('userGuid');\n localStorage.removeItem('authToken');\n localStorage.removeItem('refreshToken');\n }\n\n public logout(): void{\n this.user.set({} as User);\n AuthService.logout();\n }\n\n /**\n * This method is used by the `refreshTokenInterceptor`, to get the new token shortly before the auth token is expired.\n * @param {MutationAuthMsRefreshAccessTokenArgs} variables - Contain `refreshToken` attribute which is the current refresh token.\n * @returns {Observable<MutationResult<{ authMsRefreshAccessToken: Token }>>} Contain new `authToken` and `refreshToken`.\n */\n public refreshToken(variables: MutationAuthMsRefreshAccessTokenArgs): Observable<MutationResult<{ authMsRefreshAccessToken: Token }>>{\n return this.gql.mutate({\n variables,\n operationName: 'RefreshToken',\n headers: {\n 'operation-type': 'Mutation',\n 'operation-name': 'RefreshToken'\n },\n mutation: `\n mutation RefreshToken($refreshToken: String!) {\n authMsRefreshAccessToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n `\n });\n } \n\n /**\n * A method to authenticate the user to get the session for applet or platform.\n * When successful it will set the user information to the `user` variable, `authToken` and `refreshToken`.\n * It will set the `authToken`, `refreshToken`, `userGuid` and `roles` to the localStorage also for API calls.\n * \n * @param {{ email: string, password: string, sourcePlatform: string }} input - Contain `email` which is registered user email, `password` which is registered user password and `sourcePlatform` it's value can be `ADMIN` to get the applet session or `CP_COMMERCE` to get the platform session.\n * \n * @returns {Observable<MutationResult<{ authMsLogin: LoginResponse }>>} Contain logined user information.\n */\n public login(input: LoginRq): Observable<MutationResult<{ authMsLogin: LoginResponse }>>{\n return this.gql.mutate<{ authMsLogin: LoginResponse }>({\n operationName: 'Login',\n variables: { \n input \n },\n mutation: `\n mutation Login($input: LoginRq!) {\n authMsLogin(input: $input) {\n accessToken\n refreshToken\n suggestedAction\n user {\n birthday\n category\n email\n gender\n guid\n mobileNumber\n name\n status\n departments {\n department {\n hierarchyCode\n hierarchyPath\n name\n guid\n status\n }\n isLead\n }\n }\n roles {\n guid\n code\n name\n isInternal\n status\n }\n }\n }\n `\n }).pipe(\n tap(({ data }) => {\n if (!data?.authMsLogin){\n return;\n }\n const { accessToken, user, refreshToken, suggestedAction, roles } = data.authMsLogin;\n\n this.user.set(\n {\n ...user as any,\n roles: roles as any,\n photo: '/assets/imgs/profile.svg'\n }\n );\n\n AuthService.authToken = accessToken ?? '';\n AuthService.refreshToken = refreshToken ?? '';\n\n if (suggestedAction !== 'CHANGE_PASSWORD') { \n localStorage.setItem('authToken', AuthService.authToken); \n }\n\n localStorage.setItem('userGuid', this.user().guid ?? '');\n localStorage.setItem('refreshToken', AuthService.refreshToken);\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AuthService } from '../services/auth.service';\n\n/**\n * The `AuthResolver` service provides methods for handling authentication-related tasks,\n * such as checking user login status, retrieving authentication tokens, and managing token expiration.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthResolver {\n\n /**\n * Checks if the user is logged in by verifying the presence of an authentication token.\n * @returns {boolean} - True if the user is logged in; otherwise, false.\n */\n public isUserLoggedIn(): boolean{ \n return AuthService.authToken !== ''; \n }\n\n /**\n * Retrieves the authentication token, resolving it if needed.\n * @returns {string | null} - The authentication token if the user is logged in; otherwise, null.\n */\n public getAuthToken(): string | null{\n this.resolveUserAuthToken();\n \n if (this.isUserLoggedIn()) {\n return AuthService.authToken;\n }\n return null;\n }\n\n /**\n * Resolves the user's authentication token by checking expiration and whether the user still logged in or not.\n */\n protected resolveUserAuthToken(): void{\n if (\n !this.isUserLoggedIn() || \n !this.isTokenExpired(AuthService.authToken)\n ) {\n return;\n }\n AuthService.logout();\n }\n\n /**\n * Checks if a given token is expired or not yet.\n * @param {string | null} token - The token to be checked for expiration.\n * @returns {boolean} - True if the token is expired; otherwise, false.\n */\n protected isTokenExpired(token: string | null): boolean{\n if (!token || token === '') {\n return true;\n }\n \n const date = this.getTokenExpirationDate(token);\n if (date === null) {\n return false;\n }\n return !(<number>date.valueOf() > new Date().valueOf() + 0 * 1000);\n }\n\n /**\n * Retrieves the expiration date of a token.\n * @param {string | null} token - The token for which to retrieve the expiration date.\n * @returns {Date | null} - The expiration date of the token if available; otherwise, null.\n */\n protected getTokenExpirationDate(token: string | null): Date | null{\n const decoded: any = this.decodeToken(token); \n if (!decoded || !decoded.hasOwnProperty('exp')) {\n return null;\n }\n \n const date = new Date(0);\n date.setUTCSeconds(decoded.exp);\n return date;\n }\n\n /**\n * Decodes a JWT token to extract payload information.\n * @param {string | null} token - The JWT token to be decoded.\n * @returns {string | null} - The decoded payload as a string if successful; otherwise, null.\n */\n protected decodeToken(token: string | null): string | null{\n if (!token || token === '') {\n return null;\n }\n\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error(`The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`);\n }\n\n const decoded = this.urlBase64Decode(parts[1]);\n if (!decoded) {\n throw new Error('Cannot decode the token.');\n }\n return JSON.parse(decoded);\n }\n\n /**\n * Decodes a base64url-encoded string.\n * @param {string} str - The base64url-encoded string to be decoded.\n * @returns {string} - The decoded string.\n */\n protected urlBase64Decode(str: string): string{\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n \n case 2: \n output += '==';\n break;\n\n case 3:\n output += '=';\n break;\n\n default: \n throw new Error('Illegal base64url string!');\n }\n return this.b64DecodeUnicode(output);\n }\n\n /**\n * Decodes a Unicode string from a base64-encoded string.\n * @param {string} str - The base64-encoded string to be decoded.\n * @returns {string} - The decoded Unicode string.\n */\n protected b64DecodeUnicode(str: string): string{\n return decodeURIComponent(\n Array.prototype.map.call(\n this.b64decode(str), \n (c: any) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n ).join('')\n );\n }\n\n /**\n * Decodes a base64-encoded string.\n * @param {string} str - The base64-encoded string to be decoded.\n * @returns {string} - The decoded string.\n */\n protected b64decode(str: string): string{\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let output = '';\n\n str = String(str).replace(/=+$/, '');\n if (str.length % 4 === 1) {\n throw new Error(`'atob' failed: The string to be decoded is not correctly encoded.`);\n }\n\n for (\n let bc = 0, bs: any, buffer: any, idx = 0;\n (buffer = str.charAt(idx++));\n \n ~buffer && ((bs = bc % 4? bs * 64 + buffer : buffer), bc++ % 4)? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) : 0\n ) buffer = chars.indexOf(buffer);\n\n return output;\n }\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { AuthResolver } from '../resolvers/auth.resolver';\n\nexport const authGuard: CanActivateFn = (): boolean => {\n \n const router = inject(Router);\n const resolver = inject(AuthResolver);\n \n if (!resolver.isUserLoggedIn()) {\n router.navigateByUrl('/auth/login');\n return false;\n }\n return true;\n};\n","import { Injectable, signal } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GqlParser, CacheStrategy, QueryResult } from '@unipin/angular-gql';\nimport type { AppPermDfn, PermissionFilter } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n\n public readonly permissions = signal(new Map<string, boolean>());\n\n /**\n * A boolean value that tells the permission service is initiated (permissions list is retrieved from Backend) or not.\n * @default false\n */\n public isInitiated = false;\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n /**\n * A method that checking if the user has the permission or not based on the params value.\n * @param {string} permission - Permission code that wanted to be checked\n * \n * @returns {boolean} Contain boolean value that tells the user has the permission or not.\n */\n public has(permission: string): boolean{\n const permissions = this.permissions();\n const [ scope, module, type ] = permission.split('.');\n\n return (\n permissions.has(`${ scope }.${ module }.ADMIN`) ||\n permissions.has(`${ scope }.${ module }.${ type }`)\n );\n }\n\n /**\n * A method that set the permissions and permission modules.\n * @param {string[]} permCodes - Contain list of permission codes.\n */\n public setPermission(permCodes: string[]): void{\n this.permissions.update(\n (map) => {\n const newMap = new Map(map);\n \n for (const code of permCodes) {\n newMap.set(code, true);\n }\n return newMap;\n }\n );\n }\n\n /**\n * A method that get the query value with authMsPermission as the object.\n * @param {PermissionFilter} filter - Contain filter as a conditions for the query.\n * @returns {Observable<ApolloQueryResult<{ authMsPermission: { data: AppPermDfn[] }}>>} Contain query value.\n */\n public getPermissions(filter: PermissionFilter, cacheStrategy?: CacheStrategy): Observable<QueryResult<{ authMsPermission: { data: AppPermDfn[] }}>>{\n return this.gql.query({\n cacheStrategy,\n operationName: 'QueryPermission',\n variables: { \n filter \n },\n query: `\n query QueryPermission($filter: PermissionFilter!) {\n authMsPermission(filter: $filter) {\n data {\n permCode\n }\n }\n }\n `\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\nimport { PermissionService } from '../services/permission.service';\n\nexport const permissionGuard: CanActivateFn = (route: ActivatedRouteSnapshot): boolean => {\n \n const router: Router = inject(Router);\n const location: Location = inject(Location);\n const permissionService: PermissionService = inject(PermissionService);\n\n const permissions: string[] = route.data['permissions'];\n const aggregator: 'AND' | 'OR' = route.data['aggregator']?? 'OR';\n\n if (\n !permissions ||\n !permissions.length\n ) {\n console.error('Invalid config: permissions is a required parameter in route data for PermissionGuard');\n return false;\n }\n\n if (!permissionService.isInitiated) {\n router.navigate(\n [ 'loading' ], \n { \n queryParams: { \n url: `${ location.path() + window.location.hash }` \n } \n }\n );\n return false;\n }\n \n if (aggregator === 'OR') {\n for (let i = 0; i < permissions.length; i++) {\n if (permissionService.has(permissions[i])) {\n return true;\n }\n }\n }\n\n let hasPermission = true;\n for (let i = 0; i < permissions.length; i++) {\n if (!permissionService.has(permissions[i])) {\n hasPermission = false;\n break;\n }\n }\n\n if (hasPermission) {\n return true;\n }\n router.navigateByUrl('/401');\n return false;\n};\n","import { HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '../../authentication/services/auth.service';\n\nexport const authorizationInterceptor: HttpInterceptorFn = (\n request: HttpRequest<any>,\n next: HttpHandlerFn\n): Observable<HttpEvent<any>> => {\n \n return next(\n request.clone(\n {\n headers: request.headers,\n setHeaders: {\n authorization: AuthService.authToken,\n }\n }\n )\n );\n};\n","import { inject } from '@angular/core';\nimport { HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { catchError, Observable, switchMap, tap, throwError } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\n\n\nexport const refreshTokenInterceptor: HttpInterceptorFn = (\n request: HttpRequest<any>, \n next: HttpHandlerFn\n): Observable<HttpEvent<any>> => {\n \n const router = inject(Router);\n const authService = inject(AuthService);\n\n return next(request).pipe(\n tap(\n ({ type, body }: any) => {\n if (\n type === 0 ||\n !body\n ) {\n return;\n }\n \n const { errors } = body;\n if (\n !errors ||\n !errors.length ||\n errors[0].extensions.code !== 'USER_INVALID_TOKEN'\n ) {\n return;\n }\n throw body;\n }\n ),\n catchError(\n (error: any) => {\n const { errors } = error;\n if (\n !errors || \n !errors.length\n ) {\n return throwError(() => error);\n }\n \n if (\n (\n errors[0].message &&\n errors[0].extensions.code !== 'USER_INVALID_TOKEN'\n ) ||\n request.url.includes('RefreshToken')\n ) {\n return throwError(() => errors[0]);\n }\n \n return authService.refreshToken({ refreshToken: AuthService.refreshToken }).pipe(\n switchMap(\n ({ data }) => {\n const { accessToken, refreshToken } = data!.authMsRefreshAccessToken;\n\n AuthService.authToken = accessToken!;\n AuthService.refreshToken = refreshToken!;\n\n localStorage.setItem('authToken', accessToken!);\n localStorage.setItem('refreshToken', refreshToken!);\n\n return next(\n request.clone(\n {\n setHeaders: {\n authorization: accessToken!,\n },\n }\n )\n );\n }\n ),\n catchError(\n () => {\n authService.logout();\n location.href = `/auth/login?url=${ encodeURIComponent(router.url + location.hash) }`;\n return throwError(() => errors[0]);\n }\n )\n );\n }\n )\n );\n};\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { PermissionService } from '../services/permission.service';\n\n\n/**\n * The `PermissionDirective` is a directive that conditionally renders content based on user permissions.\n * @selector '[hasPermission]'\n * \n * @example\n * ```html\n * <div *hasPermission=\"'MERCHANT.CONTRACT.READ'\"></div>\n * ```\n */\n@Directive({\n exportAs: 'hasPermission',\n selector: '[hasPermission]'\n})\nexport class PermissionDirective {\n\n constructor(\n protected readonly service: PermissionService,\n protected readonly templateRef: TemplateRef<any>,\n protected readonly viewContainer: ViewContainerRef,\n ) { }\n\n @Input()\n set hasPermission(permission: string) {\n if (this.service.has(permission)) {\n this.viewContainer.createEmbeddedView(\n this.templateRef\n );\n return;\n }\n this.viewContainer.clear();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matLockRound } from '@ng-icons/material-icons/round';\n\n\n@Component({\n selector: 'up-unauthorized',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col items-center justify-center size-full gap-4 p-5 select-none'\n },\n providers: [\n provideIcons(\n { \n matLockRound \n }\n )\n ],\n imports: [\n NgIcon\n ],\n template: `\n <ng-icon \n name=\"matLockRound\" \n class=\"text-3xl lg:text-5xl\" \n />\n \n <h3 class=\"text-center text-lg lg:text-2xl font-bold\">\n Oops! You're not authorized to access this page.\n </h3>\n <p class=\"text-center\">Please log in or re-check your permissions.</p>\n `,\n})\nexport class UnauthorizedPage {}\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { UpSpinnerComponent } from '@unipin/angular-applet/spinner';\nimport { LOADING_CONFIG, LoadingConfig } from '../utils/provide-loading-config.util';\nimport { PermissionService } from '../services/permission.service';\n\n\n@Component({\n selector: 'up-loading',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col items-center gap-6 p-5 justify-center size-full select-none'\n },\n imports: [\n UpSpinnerComponent\n ],\n template: `\n <up-spinner class=\"size-10\" />\n \n <h3 class=\"text-center text-lg lg:text-2xl font-bold\">\n Please wait, we're preparing the applet. Drink water or coffee while waiting.\n </h3>\n `,\n})\nexport class LoadingPage implements OnInit, OnDestroy {\n\n protected sub?: Subscription;\n\n constructor(\n @Inject(LOADING_CONFIG) public readonly config: LoadingConfig,\n protected readonly router: Router,\n protected readonly route: ActivatedRoute,\n protected readonly permissionService: PermissionService\n ) { }\n\n public ngOnInit(): void{\n const subjectGuid = localStorage.getItem(this.config.subjectGuidStorageKey || 'userGuid');\n if (!subjectGuid) {\n this.router.navigate([ '401' ]);\n return;\n }\n\n const permCodeList: string[] = [];\n this.sub = this.permissionService.getPermissions(\n { \n subjectGuid, \n pageSize: 1000,\n permType: this.config.permTypes,\n permModule: this.config.permModules, \n }, \n 'no-cache'\n ).subscribe({\n error: () => {\n this.router.navigate([ '401' ]);\n },\n next: ({ data: { authMsPermission: { data }}}) => {\n data.forEach(\n ({ permCode }) => {\n if (!permCode) {\n return;\n }\n permCodeList.push(permCode);\n }\n );\n\n this.permissionService.isInitiated = true;\n this.permissionService.setPermission(permCodeList);\n this.router.navigateByUrl(this.route.snapshot.queryParamMap.get('url')?? '');\n }\n });\n }\n\n public ngOnDestroy(): void{\n this.sub?.unsubscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ProfileService","i1.PermissionService","i1","i2.PermissionService"],"mappings":"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"}
@@ -6,11 +6,11 @@ class UpAvatarDirective {
6
6
  constructor(el, renderer) {
7
7
  this.el = el;
8
8
  this.renderer = renderer;
9
- this.initialText = input('', { ...(ngDevMode ? { debugName: "initialText" } : {}), alias: 'initial' });
10
- this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
9
+ this.initialText = input('', { ...(ngDevMode ? { debugName: "initialText" } : /* istanbul ignore next */ {}), alias: 'initial' });
10
+ this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : /* istanbul ignore next */ {}), alias: 'class' });
11
11
  this._computedClass = computed(() => {
12
12
  return up('inline-flex items-center justify-center rounded-full overflow-hidden select-none size-16 relative', this.initialText() ? 'bg-gray-400 text-white font-semibold text-3xl' : 'object-cover', this.inlineClass());
13
- }, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
13
+ }, ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
14
14
  effect(() => {
15
15
  const el = this.el.nativeElement;
16
16
  if (this.initialText() &&
@@ -32,13 +32,12 @@ class UpAvatarDirective {
32
32
  this.renderer.insertBefore(parent, div, el);
33
33
  this.renderer.removeChild(parent, el);
34
34
  }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpAvatarDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
36
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: UpAvatarDirective, isStandalone: true, selector: "[upAvatar]", inputs: { initialText: { classPropertyName: "initialText", publicName: "initial", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "error": "setFallback()" }, properties: { "class": "_computedClass()" } }, exportAs: ["upAvatar"], ngImport: i0 }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpAvatarDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: UpAvatarDirective, isStandalone: true, selector: "[upAvatar]", inputs: { initialText: { classPropertyName: "initialText", publicName: "initial", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "error": "setFallback()" }, properties: { "class": "_computedClass()" } }, exportAs: ["upAvatar"], ngImport: i0 }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpAvatarDirective, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpAvatarDirective, decorators: [{
39
39
  type: Directive,
40
40
  args: [{
41
- standalone: true,
42
41
  exportAs: 'upAvatar',
43
42
  selector: '[upAvatar]',
44
43
  host: {
@@ -1 +1 @@
1
- {"version":3,"file":"unipin-angular-applet-avatar.mjs","sources":["../../../projects/unipin-angular/avatar/avatar.directive.ts","../../../projects/unipin-angular/avatar/unipin-angular-applet-avatar.ts"],"sourcesContent":["import { Directive, ElementRef, Renderer2, effect, computed, input, HostListener } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { formatInitial, up } from '@unipin/angular-applet/common';\n\n\n@Directive({\n standalone: true,\n exportAs: 'upAvatar',\n selector: '[upAvatar]',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class UpAvatarDirective {\n\n public readonly initialText = input<string>('', { alias: 'initial' });\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n \n protected readonly _computedClass = computed(\n () => {\n return up(\n 'inline-flex items-center justify-center rounded-full overflow-hidden select-none size-16 relative',\n this.initialText()? 'bg-gray-400 text-white font-semibold text-3xl' : 'object-cover',\n this.inlineClass()\n );\n }\n );\n\n constructor(\n protected readonly el: ElementRef<HTMLElement>,\n protected readonly renderer: Renderer2\n ) {\n effect(\n () => {\n const el = this.el.nativeElement;\n \n if (\n this.initialText() &&\n !el.getAttribute('src')\n ) {\n this.renderer.setProperty(\n el, \n 'textContent', \n formatInitial(this.initialText())\n );\n }\n }\n );\n }\n\n @HostListener('error')\n public setFallback(): void{ \n const el = this.el.nativeElement;\n\n const parent = el.parentNode;\n if (!parent) {\n return;\n }\n\n const t: any = this.initialText;\n const div = this.renderer.createElement('div');\n\n this.renderer.setAttribute(div, 'class', el.className);\n this.renderer.setProperty(div, 'textContent', formatInitial(t));\n\n this.renderer.insertBefore(parent, div, el);\n this.renderer.removeChild(parent, el);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unipin-angular-applet-avatar.mjs","sources":["../../../projects/unipin-angular/avatar/avatar.directive.ts","../../../projects/unipin-angular/avatar/unipin-angular-applet-avatar.ts"],"sourcesContent":["import { Directive, ElementRef, Renderer2, effect, computed, input, HostListener } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { formatInitial, up } from '@unipin/angular-applet/common';\n\n\n@Directive({\n exportAs: 'upAvatar',\n selector: '[upAvatar]',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class UpAvatarDirective {\n\n public readonly initialText = input<string>('', { alias: 'initial' });\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n \n protected readonly _computedClass = computed(\n () => {\n return up(\n 'inline-flex items-center justify-center rounded-full overflow-hidden select-none size-16 relative',\n this.initialText()? 'bg-gray-400 text-white font-semibold text-3xl' : 'object-cover',\n this.inlineClass()\n );\n }\n );\n\n constructor(\n protected readonly el: ElementRef<HTMLElement>,\n protected readonly renderer: Renderer2\n ) {\n effect(\n () => {\n const el = this.el.nativeElement;\n \n if (\n this.initialText() &&\n !el.getAttribute('src')\n ) {\n this.renderer.setProperty(\n el, \n 'textContent', \n formatInitial(this.initialText())\n );\n }\n }\n );\n }\n\n @HostListener('error')\n public setFallback(): void{ \n const el = this.el.nativeElement;\n\n const parent = el.parentNode;\n if (!parent) {\n return;\n }\n\n const t: any = this.initialText;\n const div = this.renderer.createElement('div');\n\n this.renderer.setAttribute(div, 'class', el.className);\n this.renderer.setProperty(div, 'textContent', formatInitial(t));\n\n this.renderer.insertBefore(parent, div, el);\n this.renderer.removeChild(parent, el);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -19,21 +19,20 @@ const badgeVariants = cva('inline-flex items-center justify-center rounded-md bo
19
19
 
20
20
  class UpBadgeDirective {
21
21
  constructor() {
22
- this.variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
23
- this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
22
+ this.variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
23
+ this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : /* istanbul ignore next */ {}), alias: 'class' });
24
24
  this._computedClass = computed(() => {
25
25
  return up(badgeVariants({
26
26
  variant: this.variant()
27
27
  }), this.inlineClass());
28
- }, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
28
+ }, ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpBadgeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
31
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: UpBadgeDirective, isStandalone: true, selector: "[upBadge]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, exportAs: ["upBadge"], ngImport: i0 }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpBadgeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
31
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: UpBadgeDirective, isStandalone: true, selector: "[upBadge]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, exportAs: ["upBadge"], ngImport: i0 }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpBadgeDirective, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpBadgeDirective, decorators: [{
34
34
  type: Directive,
35
35
  args: [{
36
- standalone: true,
37
36
  exportAs: 'upBadge',
38
37
  selector: '[upBadge]',
39
38
  host: {
@@ -1 +1 @@
1
- {"version":3,"file":"unipin-angular-applet-badge.mjs","sources":["../../../projects/unipin-angular/badge/badge-variant.type.ts","../../../projects/unipin-angular/badge/badge.directive.ts","../../../projects/unipin-angular/badge/unipin-angular-applet-badge.ts"],"sourcesContent":["import { type VariantProps, cva } from 'class-variance-authority';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&_ng-icon]:size-3 gap-1 [&_ng-icon]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n secondary: 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n destructive: 'border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline: 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground border-border',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport type BadgeVariants = VariantProps<typeof badgeVariants>;\n","import { computed, Directive, input } from \"@angular/core\";\nimport { ClassValue } from \"clsx\";\nimport { up } from '@unipin/angular-applet/common';\nimport { BadgeVariants, badgeVariants } from \"./badge-variant.type\";\n\n@Directive({\n standalone: true,\n exportAs: 'upBadge',\n selector: '[upBadge]',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class UpBadgeDirective {\n\n public readonly variant = input<BadgeVariants['variant']>('default');\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n badgeVariants(\n {\n variant: this.variant()\n }\n ), \n this.inlineClass(),\n );\n }\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAEO,MAAM,aAAa,GAAG,GAAG,CAC9B,wZAAwZ,EACxZ;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,gFAAgF;AACzF,YAAA,SAAS,EAAE,sFAAsF;AACjG,YAAA,WAAW,EAAE,2KAA2K;AACxL,YAAA,OAAO,EAAE,sFAAsF;AAChG,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;;MCHU,gBAAgB,CAAA;AAR7B,IAAA,WAAA,GAAA;AAUkB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA2B,SAAS,mDAAC;QACpD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAa,EAAE,wDAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAEpD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAC1C,MAAK;YACH,OAAO,EAAE,CACP,aAAa,CACX;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA,CACF,EACD,IAAI,CAAC,WAAW,EAAE,CACnB;AACH,QAAA,CAAC,0DACF;AACF,IAAA;8GAjBY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA;AACF,iBAAA;;;ACZD;;AAEG;;;;"}
1
+ {"version":3,"file":"unipin-angular-applet-badge.mjs","sources":["../../../projects/unipin-angular/badge/badge-variant.type.ts","../../../projects/unipin-angular/badge/badge.directive.ts","../../../projects/unipin-angular/badge/unipin-angular-applet-badge.ts"],"sourcesContent":["import { type VariantProps, cva } from 'class-variance-authority';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&_ng-icon]:size-3 gap-1 [&_ng-icon]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n secondary: 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n destructive: 'border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline: 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground border-border',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport type BadgeVariants = VariantProps<typeof badgeVariants>;\n","import { computed, Directive, input } from \"@angular/core\";\nimport { ClassValue } from \"clsx\";\nimport { up } from '@unipin/angular-applet/common';\nimport { BadgeVariants, badgeVariants } from \"./badge-variant.type\";\n\n\n@Directive({\n exportAs: 'upBadge',\n selector: '[upBadge]',\n host: {\n '[class]': '_computedClass()',\n },\n})\nexport class UpBadgeDirective {\n\n public readonly variant = input<BadgeVariants['variant']>('default');\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n badgeVariants(\n {\n variant: this.variant()\n }\n ), \n this.inlineClass(),\n );\n }\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAEO,MAAM,aAAa,GAAG,GAAG,CAC9B,wZAAwZ,EACxZ;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,gFAAgF;AACzF,YAAA,SAAS,EAAE,sFAAsF;AACjG,YAAA,WAAW,EAAE,2KAA2K;AACxL,YAAA,OAAO,EAAE,sFAAsF;AAChG,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;;MCHU,gBAAgB,CAAA;AAP7B,IAAA,WAAA,GAAA;AASkB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA2B,SAAS,8EAAC;QACpD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAa,EAAE,mFAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAEpD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAC1C,MAAK;YACH,OAAO,EAAE,CACP,aAAa,CACX;AACE,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA,CACF,EACD,IAAI,CAAC,WAAW,EAAE,CACnB;AACH,QAAA,CAAC,qFACF;AACF,IAAA;+GAjBY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA;AACF,iBAAA;;;ACZD;;AAEG;;;;"}
@@ -31,23 +31,22 @@ const buttonVariants = cva('inline-flex items-center justify-center gap-2 whites
31
31
 
32
32
  class UpButtonDirective {
33
33
  constructor() {
34
- this.size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : []));
35
- this.variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
36
- this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
34
+ this.size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
35
+ this.variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
36
+ this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : /* istanbul ignore next */ {}), alias: 'class' });
37
37
  this._computedClass = computed(() => {
38
38
  return up(buttonVariants({
39
39
  size: this.size(),
40
40
  variant: this.variant(),
41
41
  }), this.inlineClass());
42
- }, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
42
+ }, ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
43
43
  }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
45
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: UpButtonDirective, isStandalone: true, selector: "[upButton]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, exportAs: ["upButton"], ngImport: i0 }); }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
45
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: UpButtonDirective, isStandalone: true, selector: "[upButton]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, exportAs: ["upButton"], ngImport: i0 }); }
46
46
  }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpButtonDirective, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpButtonDirective, decorators: [{
48
48
  type: Directive,
49
49
  args: [{
50
- standalone: true,
51
50
  exportAs: 'upButton',
52
51
  selector: '[upButton]',
53
52
  host: {
@@ -58,9 +57,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
58
57
 
59
58
  class UpSplitButtonComponent {
60
59
  constructor() {
61
- this._buttons = contentChildren('upSplitBtnItem', { ...(ngDevMode ? { debugName: "_buttons" } : {}), read: ElementRef });
62
- this._descriptions = contentChildren('upSplitBtnDescription', { ...(ngDevMode ? { debugName: "_descriptions" } : {}), read: ElementRef });
63
- this.activeIndex = model(0, ...(ngDevMode ? [{ debugName: "activeIndex" }] : []));
60
+ this._buttons = contentChildren('upSplitBtnItem', { ...(ngDevMode ? { debugName: "_buttons" } : /* istanbul ignore next */ {}), read: ElementRef });
61
+ this._descriptions = contentChildren('upSplitBtnDescription', { ...(ngDevMode ? { debugName: "_descriptions" } : /* istanbul ignore next */ {}), read: ElementRef });
62
+ this.activeIndex = model(0, ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
64
63
  this.splitBtnItems = {
65
64
  labels: [],
66
65
  descriptions: [],
@@ -91,8 +90,8 @@ class UpSplitButtonComponent {
91
90
  });
92
91
  });
93
92
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpSplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: UpSplitButtonComponent, isStandalone: true, selector: "up-split-button", inputs: { activeIndex: { classPropertyName: "activeIndex", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeIndex: "activeIndexChange" }, host: { classAttribute: "flex" }, providers: [
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpSplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: UpSplitButtonComponent, isStandalone: true, selector: "up-split-button", inputs: { activeIndex: { classPropertyName: "activeIndex", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeIndex: "activeIndexChange" }, host: { classAttribute: "flex" }, providers: [
96
95
  provideIcons({
97
96
  matCheckRound,
98
97
  matArrowDropDownRound
@@ -159,10 +158,9 @@ class UpSplitButtonComponent {
159
158
  }
160
159
  `, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpButtonDirective, selector: "[upButton]", inputs: ["size", "variant", "class"], exportAs: ["upButton"] }, { kind: "component", type: UpPopoverComponent, selector: "up-popover", inputs: ["placement", "alignment", "placementOffset", "alignmentOffset"] }, { kind: "directive", type: UpPopoverCloseDirective, selector: "[upPopoverClose]", exportAs: ["upPopoverClose"] }, { kind: "directive", type: UpPopoverTriggerDirective, selector: "[upPopoverTrigger]", exportAs: ["upPopoverTrigger"] }, { kind: "directive", type: UpPopoverContentDirective, selector: "[upPopoverContent]", inputs: ["class"], exportAs: ["upPopoverContent"] }, { kind: "directive", type: UpPopoverContentRefDirective, selector: "[upPopoverContentRef]", exportAs: ["upPopoverContentRef"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
161
160
  }
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: UpSplitButtonComponent, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpSplitButtonComponent, decorators: [{
163
162
  type: Component,
164
163
  args: [{
165
- standalone: true,
166
164
  selector: 'up-split-button',
167
165
  changeDetection: ChangeDetectionStrategy.OnPush,
168
166
  host: {