@rolatech/angular-common 20.3.2-beta.3 → 20.3.3-beta.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.
@@ -10,11 +10,11 @@ import { MAT_ICON_DEFAULT_OPTIONS } from '@angular/material/icon';
10
10
  import { provideHttpClient, withInterceptors, HttpParams } from '@angular/common/http';
11
11
 
12
12
  class AngularCommonModule {
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AngularCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: AngularCommonModule, imports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule], exports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule] });
15
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AngularCommonModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, CommonModule, FormsModule, ReactiveFormsModule] });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AngularCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: AngularCommonModule, imports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule], exports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule] });
15
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AngularCommonModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, CommonModule, FormsModule, ReactiveFormsModule] });
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AngularCommonModule, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AngularCommonModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{
20
20
  imports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule],
@@ -31,10 +31,10 @@ class PrettyjsonPipe {
31
31
  return '{}';
32
32
  }
33
33
  }
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PrettyjsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
35
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: PrettyjsonPipe, isStandalone: true, name: "prettyjson" });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PrettyjsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
35
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: PrettyjsonPipe, isStandalone: true, name: "prettyjson" });
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PrettyjsonPipe, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PrettyjsonPipe, decorators: [{
38
38
  type: Pipe,
39
39
  args: [{
40
40
  name: 'prettyjson',
@@ -48,10 +48,10 @@ class TimePipe {
48
48
  format(date) {
49
49
  return moment(date).fromNow();
50
50
  }
51
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
52
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: TimePipe, isStandalone: true, name: "time", pure: false });
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
52
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: TimePipe, isStandalone: true, name: "time", pure: false });
53
53
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: TimePipe, decorators: [{
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TimePipe, decorators: [{
55
55
  type: Pipe,
56
56
  args: [{ name: 'time', pure: false }]
57
57
  }] });
@@ -78,10 +78,10 @@ class DurationPipe {
78
78
  return num < 10 ? `0${num}` : `${num}`;
79
79
  // return num !== undefined && num !== null && num >= 0 && num < 10 ? `0${num}` : `${num}`;
80
80
  }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DurationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
82
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: DurationPipe, isStandalone: true, name: "duration" });
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DurationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
82
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: DurationPipe, isStandalone: true, name: "duration" });
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DurationPipe, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DurationPipe, decorators: [{
85
85
  type: Pipe,
86
86
  args: [{
87
87
  name: 'duration',
@@ -100,10 +100,10 @@ class OptionsFormatPipe {
100
100
  });
101
101
  return result;
102
102
  }
103
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: OptionsFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
104
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: OptionsFormatPipe, isStandalone: true, name: "options" });
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: OptionsFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
104
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: OptionsFormatPipe, isStandalone: true, name: "options" });
105
105
  }
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: OptionsFormatPipe, decorators: [{
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: OptionsFormatPipe, decorators: [{
107
107
  type: Pipe,
108
108
  args: [{
109
109
  name: 'options',
@@ -117,10 +117,10 @@ class AddressFormatPipe {
117
117
  }
118
118
  return 'Unset';
119
119
  }
120
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AddressFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
121
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: AddressFormatPipe, isStandalone: true, name: "address" });
120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AddressFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
121
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: AddressFormatPipe, isStandalone: true, name: "address" });
122
122
  }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AddressFormatPipe, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AddressFormatPipe, decorators: [{
124
124
  type: Pipe,
125
125
  args: [{
126
126
  name: 'address',
@@ -131,10 +131,10 @@ class FixedPipe {
131
131
  transform(value, ...args) {
132
132
  return value ? (value / 100).toFixed(2) : '0.00';
133
133
  }
134
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FixedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
135
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: FixedPipe, isStandalone: true, name: "fixed" });
134
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FixedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
135
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: FixedPipe, isStandalone: true, name: "fixed" });
136
136
  }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: FixedPipe, decorators: [{
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FixedPipe, decorators: [{
138
138
  type: Pipe,
139
139
  args: [{
140
140
  name: 'fixed',
@@ -153,10 +153,10 @@ class ShippingAddressPipe {
153
153
  }
154
154
  return '无';
155
155
  }
156
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ShippingAddressPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
157
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: ShippingAddressPipe, isStandalone: true, name: "shippingAddress" });
156
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShippingAddressPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
157
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: ShippingAddressPipe, isStandalone: true, name: "shippingAddress" });
158
158
  }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ShippingAddressPipe, decorators: [{
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShippingAddressPipe, decorators: [{
160
160
  type: Pipe,
161
161
  args: [{
162
162
  name: 'shippingAddress',
@@ -175,10 +175,10 @@ class PricePipe {
175
175
  maximumFractionDigits: 2,
176
176
  }).format(amount);
177
177
  }
178
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PricePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
179
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: PricePipe, isStandalone: true, name: "price" });
178
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PricePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
179
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: PricePipe, isStandalone: true, name: "price" });
180
180
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: PricePipe, decorators: [{
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PricePipe, decorators: [{
182
182
  type: Pipe,
183
183
  args: [{
184
184
  name: 'price',
@@ -194,10 +194,10 @@ class SafeUrlPipe {
194
194
  // If you want to allow in [href], [src], [poster], [srcdoc], etc.
195
195
  return this.sanitizer.bypassSecurityTrustResourceUrl(url);
196
196
  }
197
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SafeUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
198
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.1", ngImport: i0, type: SafeUrlPipe, isStandalone: true, name: "safeUrl" });
197
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SafeUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
198
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: SafeUrlPipe, isStandalone: true, name: "safeUrl" });
199
199
  }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SafeUrlPipe, decorators: [{
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SafeUrlPipe, decorators: [{
201
201
  type: Pipe,
202
202
  args: [{
203
203
  name: 'safeUrl',
@@ -237,10 +237,10 @@ class DecimalDirective {
237
237
  event.preventDefault();
238
238
  }
239
239
  }
240
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DecimalDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
241
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.1", type: DecimalDirective, isStandalone: true, selector: "[rolatechDecimal]", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 });
240
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DecimalDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
241
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: DecimalDirective, isStandalone: true, selector: "[rolatechDecimal]", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 });
242
242
  }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: DecimalDirective, decorators: [{
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DecimalDirective, decorators: [{
244
244
  type: Directive,
245
245
  args: [{
246
246
  selector: '[rolatechDecimal]',
@@ -347,33 +347,25 @@ function provideAngularCommon(environment) {
347
347
  return makeEnvironmentProviders(providers);
348
348
  }
349
349
 
350
- function toApiRequestParams(options, extra) {
350
+ function toApiRequestParams(options) {
351
+ if (!options) {
352
+ return new HttpParams();
353
+ }
351
354
  let params = new HttpParams();
352
- const values = {
353
- page: options?.page,
354
- limit: options?.limit,
355
- lang: options?.lang,
356
- include: options?.include,
357
- q: options?.q,
358
- search: options?.search,
359
- filter: options?.filter,
360
- fields: options?.fields,
361
- ...(extra ?? {}),
362
- };
363
- for (const [key, value] of Object.entries(values)) {
364
- if (value === null || value === undefined || value === '') {
355
+ for (const [key, rawValue] of Object.entries(options)) {
356
+ if (rawValue === undefined || rawValue === null || rawValue === '') {
365
357
  continue;
366
358
  }
367
- if (Array.isArray(value)) {
368
- for (const item of value) {
369
- if (item === null || item === undefined || item === '') {
359
+ if (Array.isArray(rawValue)) {
360
+ for (const item of rawValue) {
361
+ if (item === undefined || item === null || item === '') {
370
362
  continue;
371
363
  }
372
364
  params = params.append(key, String(item));
373
365
  }
374
366
  continue;
375
367
  }
376
- params = params.set(key, String(value));
368
+ params = params.set(key, String(rawValue));
377
369
  }
378
370
  return params;
379
371
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-common.mjs","sources":["../../../../packages/angular-common/src/lib/angular-common.module.ts","../../../../packages/angular-common/src/lib/pipes/prettyjson.pipe.ts","../../../../packages/angular-common/src/lib/pipes/time.pipe.ts","../../../../packages/angular-common/src/lib/pipes/duration.pipe.ts","../../../../packages/angular-common/src/lib/pipes/options.pipe.ts","../../../../packages/angular-common/src/lib/pipes/address.pipe.ts","../../../../packages/angular-common/src/lib/pipes/fixed.pipe.ts","../../../../packages/angular-common/src/lib/pipes/shipping-address.pipe.ts","../../../../packages/angular-common/src/lib/pipes/price.pipe.ts","../../../../packages/angular-common/src/lib/pipes/safe-url.pipe.ts","../../../../packages/angular-common/src/lib/pipes/index.ts","../../../../packages/angular-common/src/lib/directive/decimal.directive.ts","../../../../packages/angular-common/src/lib/directive/index.ts","../../../../packages/angular-common/src/lib/interfaces/auth.interface.ts","../../../../packages/angular-common/src/lib/router/username-matcher.ts","../../../../packages/angular-common/src/lib/tokens.ts","../../../../packages/angular-common/src/lib/http/credentials.interceptor.ts","../../../../packages/angular-common/src/provider.ts","../../../../packages/angular-common/src/lib/http/api-request-options.utils.ts","../../../../packages/angular-common/src/rolatech-angular-common.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';\n\n@NgModule({\n imports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule],\n exports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule],\n})\nexport class AngularCommonModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'prettyjson',\n})\nexport class PrettyjsonPipe implements PipeTransform {\n transform(value: any, ...args: any[]): any {\n if (value) {\n return JSON.stringify(value, null, 4).replace(/ /g, '&nbsp;').replace(/\\n/g, '<br/>');\n } else {\n return '{}';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\n\n@Pipe({ name: 'time', pure: false })\nexport class TimePipe implements PipeTransform {\n transform(date: string): string {\n return this.format(Date.parse(date));\n }\n\n format(date: number) {\n return moment(date).fromNow();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'duration',\n})\nexport class DurationPipe implements PipeTransform {\n transform(value: number): string {\n if (!value || isNaN(value) || value < 0) {\n return '00:00';\n }\n const hours = Math.floor(value / 3600);\n const minutes = Math.floor((value % 3600) / 60);\n const seconds = Math.floor(value % 60);\n\n const formattedHours = this.padNumber(hours);\n const formattedMinutes = this.padNumber(minutes);\n const formattedSeconds = this.padNumber(seconds);\n if (formattedHours === '00') {\n return `${formattedMinutes}:${formattedSeconds}`;\n } else {\n return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;\n }\n }\n private padNumber(num: number): string {\n return num < 10 ? `0${num}` : `${num}`;\n // return num !== undefined && num !== null && num >= 0 && num < 10 ? `0${num}` : `${num}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'options',\n})\nexport class OptionsFormatPipe implements PipeTransform {\n transform(options: any[]): any {\n if (!options) {\n return;\n }\n let result = '';\n options.forEach((item, index) => {\n const tmp = index === options.length - 1 ? '' : ', ';\n result += item.value ? item.value.name + tmp : item.name + tmp;\n });\n return result;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'address',\n})\nexport class AddressFormatPipe implements PipeTransform {\n transform(address: any): any {\n if (address) {\n return address.province + ' ' + address.city + ' ' + address.district + ' ' + address.street + ' ' + address.detail;\n }\n return 'Unset';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'fixed',\n})\nexport class FixedPipe implements PipeTransform {\n transform(value: number, ...args: unknown[]): string {\n return value ? (value / 100).toFixed(2) : '0.00';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'shippingAddress',\n})\nexport class ShippingAddressPipe implements PipeTransform {\n transform(address: any, ...args: unknown[]): unknown {\n const includedKeys = ['province', 'city', 'district', 'street', 'detail', 'name', 'phone'];\n if (address) {\n return Object.entries(address)\n .filter(([key]) => includedKeys.includes(key))\n .sort(([keyA], [keyB]) => includedKeys.indexOf(keyA) - includedKeys.indexOf(keyB)) // Sort by includedKeys order\n .map(([key, value]) => value)\n .join(' ');\n }\n return '无';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'price',\n})\nexport class PricePipe implements PipeTransform {\n transform(value: number | string | null | undefined): string {\n if (value == null || value === '') return '£0.00';\n const amount = typeof value === 'string' ? parseFloat(value) : value;\n return new Intl.NumberFormat('en-GB', {\n style: 'currency',\n currency: 'GBP',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(amount);\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeUrl',\n standalone: true,\n})\nexport class SafeUrlPipe implements PipeTransform {\n sanitizer = inject(DomSanitizer);\n\n transform(url: string | null | undefined): SafeUrl | SafeResourceUrl | null {\n if (!url) {\n return null;\n }\n // If you want to allow in [href], [src], [poster], [srcdoc], etc.\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n","import { PrettyjsonPipe } from './prettyjson.pipe';\nimport { TimePipe } from '../pipes/time.pipe';\nimport { DurationPipe } from './duration.pipe';\nimport { OptionsFormatPipe } from './options.pipe';\nimport { AddressFormatPipe } from './address.pipe';\nimport { FixedPipe } from './fixed.pipe';\nimport { ShippingAddressPipe } from './shipping-address.pipe';\nimport { PricePipe } from './price.pipe';\nimport { SafeUrlPipe } from './safe-url.pipe';\nexport {\n PrettyjsonPipe,\n TimePipe,\n DurationPipe,\n OptionsFormatPipe,\n AddressFormatPipe,\n ShippingAddressPipe,\n FixedPipe,\n PricePipe,\n SafeUrlPipe,\n};\nexport const COMMON_PIPES = [\n PrettyjsonPipe,\n TimePipe,\n DurationPipe,\n OptionsFormatPipe,\n AddressFormatPipe,\n ShippingAddressPipe,\n FixedPipe,\n PricePipe,\n SafeUrlPipe,\n];\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n@Directive({\n selector: '[rolatechDecimal]',\n})\nexport class DecimalDirective {\n private regex = new RegExp(/^\\d*\\.?\\d{0,2}$/g);\n\n // Test\n // Allow decimal numbers and negative values\n // Allow key codes for special events. Reflect :\n // Backspace, tab, end, home\n private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight', 'Del', 'Delete'];\n\n private el = inject(ElementRef);\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // Allow Backspace, tab, end, and home keys\n if (this.specialKeys.indexOf(event.key) !== -1) {\n return;\n }\n const current: string = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n const next: string = [current.slice(0, position), event.key == 'Decimal' ? '.' : event.key, current.slice(position)].join(\n '',\n );\n if (next && !String(next).match(this.regex)) {\n event.preventDefault();\n }\n }\n}\n","import { Provider } from '@angular/core';\nimport { DecimalDirective } from './decimal.directive';\n\nexport { DecimalDirective };\n\nexport const COMMON_DIRECTIVES: Provider[] = [DecimalDirective];\n","export interface User {\n id?: string;\n name: string;\n username?: string;\n status: UserStatus;\n roles: Role[];\n avatar: string;\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n createdAt: string;\n}\nexport interface Role {\n id: string;\n name: string; // \"USER\"\n authority: string; // \"USER\"\n description?: string | null;\n permissions?: any[] | null;\n}\nexport interface PasswordChange {\n oldPassword: string;\n newPassword: string;\n ne2Password: string;\n}\nexport interface PasswordResetConfirmRequest {\n token: string;\n newPassword: string;\n}\nexport enum UserStatus {\n ACTIVE = 'Active',\n AWAITING = 'Pending',\n DELETED = 'Deleted',\n}\n","import { UrlSegment, UrlMatchResult } from '@angular/router';\n\nexport function UsernameMatcher(url: UrlSegment[]): UrlMatchResult | null {\n // const regex = /^@(\\w+)$/; // Matches strings like \"@username\"\n // const matched = regex.test(url[0].path);\n const matched = url[0].path.startsWith('@');\n if (!matched) {\n return null;\n }\n if (url.length === 1) {\n return { consumed: url, posParams: { username: new UrlSegment(url[0].path.substring(1), {}) } };\n }\n if (url.length === 2) {\n return {\n consumed: url.slice(0, 1),\n posParams: {\n username: new UrlSegment(url[0].path.substring(1), {}),\n path: url[1],\n },\n };\n }\n return { consumed: url };\n}\n","import { InjectionToken, PLATFORM_ID, inject } from '@angular/core';\nimport { Request, Response } from 'express';\nexport interface AppConfig {\n name: string;\n baseUrl: string;\n clientId: string;\n cookieName: string;\n accountsUrl: string;\n myaccountUrl: string;\n www: string;\n endpoint?: EndpointBasicAuth;\n wechat?: WeChatConfig;\n onboarding?: OnboardingConfig;\n}\nexport interface EndpointBasicAuth {\n username: string;\n password: string;\n}\nexport interface OnboardingConfig {\n requireDocuments?: boolean;\n requireBanking?: boolean;\n}\nexport interface WeChatConfig {\n appId: string;\n}\nexport const APP_CONFIG = new InjectionToken<AppConfig | any>('@rolatech/angular-common config');\n\nexport const REQUEST: any = new InjectionToken<Request>('REQUEST');\nexport const RESPONSE: any = new InjectionToken<Response>('RESPONSE');\n\nexport const WINDOW = new InjectionToken<Window>('@rolatech/angular-common global Window object', {\n providedIn: 'root',\n factory: () => {\n const platform = inject(PLATFORM_ID);\n return platform === 'browser' ? window : ({} as Window);\n },\n});\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { APP_CONFIG, AppConfig } from '../tokens';\n\nexport const credentialsInterceptor: HttpInterceptorFn = (req, next) => {\n const config = inject(APP_CONFIG) as AppConfig;\n\n /**\n * Only apply credentials to API requests\n */\n if (!req.url.startsWith(config.baseUrl)) {\n return next(req);\n }\n\n const request = req.clone({\n withCredentials: true,\n });\n\n return next(request);\n};\n","import {\n APP_ID,\n EnvironmentProviders,\n InjectionToken,\n Provider,\n importProvidersFrom,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';\nimport { APP_CONFIG, WINDOW } from './lib/tokens';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { COMMON_PIPES } from './lib/pipes';\nimport { COMMON_DIRECTIVES } from './lib/directive';\nimport { CommonModule, IMAGE_CONFIG } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MAT_ICON_DEFAULT_OPTIONS } from '@angular/material/icon';\nimport { provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { credentialsInterceptor } from './lib/http/credentials.interceptor';\nexport interface NotificationLink {\n name: string;\n icon: string;\n type?: string;\n}\nexport interface NotificationsConfig {\n title?: string;\n items: NotificationLink[];\n}\nexport const NOTIFICATIONS_CONFIG = new InjectionToken<NotificationsConfig>('NOTIFICATIONS_CONFIG');\n\nexport function provideAngularCommon(environment?: any): EnvironmentProviders {\n const resolveConfig = () => {\n const baseConfig = environment ?? {};\n const win = inject(WINDOW, { optional: true });\n const runtimeConfig = (win as any)?.__APP_CONFIG__ ?? {};\n return { ...baseConfig, ...runtimeConfig };\n };\n\n const providers: (Provider | EnvironmentProviders)[] = [\n ...COMMON_PIPES,\n ...COMMON_DIRECTIVES,\n {\n provide: APP_CONFIG,\n useFactory: resolveConfig,\n },\n {\n provide: IMAGE_CONFIG,\n useValue: {\n disableImageSizeWarning: true,\n disableImageLazyLoadWarning: true,\n },\n },\n {\n provide: NOTIFICATIONS_CONFIG,\n useFactory: () => {\n const config = inject(APP_CONFIG);\n return config?.notification;\n },\n },\n { provide: APP_ID, useValue: 'serverApp' },\n { provide: MAT_SNACK_BAR_DEFAULT_OPTIONS, useValue: { duration: 2000 } },\n { provide: MAT_ICON_DEFAULT_OPTIONS, useValue: { fontSet: 'material-symbols-outlined' } },\n /**\n * Register HTTP client + interceptors\n */\n provideHttpClient(withInterceptors([credentialsInterceptor])),\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { HttpParams } from '@angular/common/http';\nimport { ApiRequestOptions } from '../interfaces';\n\nexport function toApiRequestParams(options?: ApiRequestOptions | null, extra?: Record<string, unknown>): HttpParams {\n let params = new HttpParams();\n\n const values: Record<string, unknown> = {\n page: options?.page,\n limit: options?.limit,\n lang: options?.lang,\n include: options?.include,\n q: options?.q,\n search: options?.search,\n filter: options?.filter,\n fields: options?.fields,\n ...(extra ?? {}),\n };\n\n for (const [key, value] of Object.entries(values)) {\n if (value === null || value === undefined || value === '') {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item === null || item === undefined || item === '') {\n continue;\n }\n params = params.append(key, String(item));\n }\n continue;\n }\n\n params = params.set(key, String(value));\n }\n\n return params;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-common.mjs","sources":["../../../../packages/angular-common/src/lib/angular-common.module.ts","../../../../packages/angular-common/src/lib/pipes/prettyjson.pipe.ts","../../../../packages/angular-common/src/lib/pipes/time.pipe.ts","../../../../packages/angular-common/src/lib/pipes/duration.pipe.ts","../../../../packages/angular-common/src/lib/pipes/options.pipe.ts","../../../../packages/angular-common/src/lib/pipes/address.pipe.ts","../../../../packages/angular-common/src/lib/pipes/fixed.pipe.ts","../../../../packages/angular-common/src/lib/pipes/shipping-address.pipe.ts","../../../../packages/angular-common/src/lib/pipes/price.pipe.ts","../../../../packages/angular-common/src/lib/pipes/safe-url.pipe.ts","../../../../packages/angular-common/src/lib/pipes/index.ts","../../../../packages/angular-common/src/lib/directive/decimal.directive.ts","../../../../packages/angular-common/src/lib/directive/index.ts","../../../../packages/angular-common/src/lib/interfaces/auth.interface.ts","../../../../packages/angular-common/src/lib/router/username-matcher.ts","../../../../packages/angular-common/src/lib/tokens.ts","../../../../packages/angular-common/src/lib/http/credentials.interceptor.ts","../../../../packages/angular-common/src/provider.ts","../../../../packages/angular-common/src/lib/http/api-request-options.utils.ts","../../../../packages/angular-common/src/rolatech-angular-common.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';\n\n@NgModule({\n imports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule],\n exports: [CommonModule, RouterLink, RouterLinkActive, RouterOutlet, FormsModule, ReactiveFormsModule],\n})\nexport class AngularCommonModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'prettyjson',\n})\nexport class PrettyjsonPipe implements PipeTransform {\n transform(value: any, ...args: any[]): any {\n if (value) {\n return JSON.stringify(value, null, 4).replace(/ /g, '&nbsp;').replace(/\\n/g, '<br/>');\n } else {\n return '{}';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\n\n@Pipe({ name: 'time', pure: false })\nexport class TimePipe implements PipeTransform {\n transform(date: string): string {\n return this.format(Date.parse(date));\n }\n\n format(date: number) {\n return moment(date).fromNow();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'duration',\n})\nexport class DurationPipe implements PipeTransform {\n transform(value: number): string {\n if (!value || isNaN(value) || value < 0) {\n return '00:00';\n }\n const hours = Math.floor(value / 3600);\n const minutes = Math.floor((value % 3600) / 60);\n const seconds = Math.floor(value % 60);\n\n const formattedHours = this.padNumber(hours);\n const formattedMinutes = this.padNumber(minutes);\n const formattedSeconds = this.padNumber(seconds);\n if (formattedHours === '00') {\n return `${formattedMinutes}:${formattedSeconds}`;\n } else {\n return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;\n }\n }\n private padNumber(num: number): string {\n return num < 10 ? `0${num}` : `${num}`;\n // return num !== undefined && num !== null && num >= 0 && num < 10 ? `0${num}` : `${num}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'options',\n})\nexport class OptionsFormatPipe implements PipeTransform {\n transform(options: any[]): any {\n if (!options) {\n return;\n }\n let result = '';\n options.forEach((item, index) => {\n const tmp = index === options.length - 1 ? '' : ', ';\n result += item.value ? item.value.name + tmp : item.name + tmp;\n });\n return result;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'address',\n})\nexport class AddressFormatPipe implements PipeTransform {\n transform(address: any): any {\n if (address) {\n return address.province + ' ' + address.city + ' ' + address.district + ' ' + address.street + ' ' + address.detail;\n }\n return 'Unset';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'fixed',\n})\nexport class FixedPipe implements PipeTransform {\n transform(value: number, ...args: unknown[]): string {\n return value ? (value / 100).toFixed(2) : '0.00';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'shippingAddress',\n})\nexport class ShippingAddressPipe implements PipeTransform {\n transform(address: any, ...args: unknown[]): unknown {\n const includedKeys = ['province', 'city', 'district', 'street', 'detail', 'name', 'phone'];\n if (address) {\n return Object.entries(address)\n .filter(([key]) => includedKeys.includes(key))\n .sort(([keyA], [keyB]) => includedKeys.indexOf(keyA) - includedKeys.indexOf(keyB)) // Sort by includedKeys order\n .map(([key, value]) => value)\n .join(' ');\n }\n return '无';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'price',\n})\nexport class PricePipe implements PipeTransform {\n transform(value: number | string | null | undefined): string {\n if (value == null || value === '') return '£0.00';\n const amount = typeof value === 'string' ? parseFloat(value) : value;\n return new Intl.NumberFormat('en-GB', {\n style: 'currency',\n currency: 'GBP',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(amount);\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeUrl',\n standalone: true,\n})\nexport class SafeUrlPipe implements PipeTransform {\n sanitizer = inject(DomSanitizer);\n\n transform(url: string | null | undefined): SafeUrl | SafeResourceUrl | null {\n if (!url) {\n return null;\n }\n // If you want to allow in [href], [src], [poster], [srcdoc], etc.\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n","import { PrettyjsonPipe } from './prettyjson.pipe';\nimport { TimePipe } from '../pipes/time.pipe';\nimport { DurationPipe } from './duration.pipe';\nimport { OptionsFormatPipe } from './options.pipe';\nimport { AddressFormatPipe } from './address.pipe';\nimport { FixedPipe } from './fixed.pipe';\nimport { ShippingAddressPipe } from './shipping-address.pipe';\nimport { PricePipe } from './price.pipe';\nimport { SafeUrlPipe } from './safe-url.pipe';\nexport {\n PrettyjsonPipe,\n TimePipe,\n DurationPipe,\n OptionsFormatPipe,\n AddressFormatPipe,\n ShippingAddressPipe,\n FixedPipe,\n PricePipe,\n SafeUrlPipe,\n};\nexport const COMMON_PIPES = [\n PrettyjsonPipe,\n TimePipe,\n DurationPipe,\n OptionsFormatPipe,\n AddressFormatPipe,\n ShippingAddressPipe,\n FixedPipe,\n PricePipe,\n SafeUrlPipe,\n];\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n@Directive({\n selector: '[rolatechDecimal]',\n})\nexport class DecimalDirective {\n private regex = new RegExp(/^\\d*\\.?\\d{0,2}$/g);\n\n // Test\n // Allow decimal numbers and negative values\n // Allow key codes for special events. Reflect :\n // Backspace, tab, end, home\n private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight', 'Del', 'Delete'];\n\n private el = inject(ElementRef);\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // Allow Backspace, tab, end, and home keys\n if (this.specialKeys.indexOf(event.key) !== -1) {\n return;\n }\n const current: string = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n const next: string = [current.slice(0, position), event.key == 'Decimal' ? '.' : event.key, current.slice(position)].join(\n '',\n );\n if (next && !String(next).match(this.regex)) {\n event.preventDefault();\n }\n }\n}\n","import { Provider } from '@angular/core';\nimport { DecimalDirective } from './decimal.directive';\n\nexport { DecimalDirective };\n\nexport const COMMON_DIRECTIVES: Provider[] = [DecimalDirective];\n","export interface User {\n id?: string;\n name: string;\n username?: string;\n status: UserStatus;\n roles: Role[];\n avatar: string;\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n createdAt: string;\n}\nexport interface Role {\n id: string;\n name: string; // \"USER\"\n authority: string; // \"USER\"\n description?: string | null;\n permissions?: any[] | null;\n}\nexport interface PasswordChange {\n oldPassword: string;\n newPassword: string;\n ne2Password: string;\n}\nexport interface PasswordResetConfirmRequest {\n token: string;\n newPassword: string;\n}\nexport enum UserStatus {\n ACTIVE = 'Active',\n AWAITING = 'Pending',\n DELETED = 'Deleted',\n}\n","import { UrlSegment, UrlMatchResult } from '@angular/router';\n\nexport function UsernameMatcher(url: UrlSegment[]): UrlMatchResult | null {\n // const regex = /^@(\\w+)$/; // Matches strings like \"@username\"\n // const matched = regex.test(url[0].path);\n const matched = url[0].path.startsWith('@');\n if (!matched) {\n return null;\n }\n if (url.length === 1) {\n return { consumed: url, posParams: { username: new UrlSegment(url[0].path.substring(1), {}) } };\n }\n if (url.length === 2) {\n return {\n consumed: url.slice(0, 1),\n posParams: {\n username: new UrlSegment(url[0].path.substring(1), {}),\n path: url[1],\n },\n };\n }\n return { consumed: url };\n}\n","import { InjectionToken, PLATFORM_ID, inject } from '@angular/core';\nimport { Request, Response } from 'express';\n\nexport interface UserAccessMenuConfig {\n wishlist?: boolean;\n viewings?: boolean;\n offers?: boolean;\n invoices?: boolean;\n payments?: boolean;\n}\n\nexport interface AppConfig {\n name: string;\n baseUrl: string;\n clientId: string;\n cookieName: string;\n accountsUrl: string;\n myaccountUrl: string;\n www: string;\n endpoint?: EndpointBasicAuth;\n wechat?: WeChatConfig;\n onboarding?: OnboardingConfig;\n userAccessMenu?: UserAccessMenuConfig;\n}\nexport interface EndpointBasicAuth {\n username: string;\n password: string;\n}\nexport interface OnboardingConfig {\n requireDocuments?: boolean;\n requireBanking?: boolean;\n}\nexport interface WeChatConfig {\n appId: string;\n}\nexport const APP_CONFIG = new InjectionToken<AppConfig | any>('@rolatech/angular-common config');\n\nexport const REQUEST: any = new InjectionToken<Request>('REQUEST');\nexport const RESPONSE: any = new InjectionToken<Response>('RESPONSE');\n\nexport const WINDOW = new InjectionToken<Window>('@rolatech/angular-common global Window object', {\n providedIn: 'root',\n factory: () => {\n const platform = inject(PLATFORM_ID);\n return platform === 'browser' ? window : ({} as Window);\n },\n});\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { APP_CONFIG, AppConfig } from '../tokens';\n\nexport const credentialsInterceptor: HttpInterceptorFn = (req, next) => {\n const config = inject(APP_CONFIG) as AppConfig;\n\n /**\n * Only apply credentials to API requests\n */\n if (!req.url.startsWith(config.baseUrl)) {\n return next(req);\n }\n\n const request = req.clone({\n withCredentials: true,\n });\n\n return next(request);\n};\n","import {\n APP_ID,\n EnvironmentProviders,\n InjectionToken,\n Provider,\n importProvidersFrom,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';\nimport { APP_CONFIG, WINDOW } from './lib/tokens';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { COMMON_PIPES } from './lib/pipes';\nimport { COMMON_DIRECTIVES } from './lib/directive';\nimport { CommonModule, IMAGE_CONFIG } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MAT_ICON_DEFAULT_OPTIONS } from '@angular/material/icon';\nimport { provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { credentialsInterceptor } from './lib/http/credentials.interceptor';\nexport interface NotificationLink {\n name: string;\n icon: string;\n type?: string;\n}\nexport interface NotificationsConfig {\n title?: string;\n items: NotificationLink[];\n}\nexport const NOTIFICATIONS_CONFIG = new InjectionToken<NotificationsConfig>('NOTIFICATIONS_CONFIG');\n\nexport function provideAngularCommon(environment?: any): EnvironmentProviders {\n const resolveConfig = () => {\n const baseConfig = environment ?? {};\n const win = inject(WINDOW, { optional: true });\n const runtimeConfig = (win as any)?.__APP_CONFIG__ ?? {};\n return { ...baseConfig, ...runtimeConfig };\n };\n\n const providers: (Provider | EnvironmentProviders)[] = [\n ...COMMON_PIPES,\n ...COMMON_DIRECTIVES,\n {\n provide: APP_CONFIG,\n useFactory: resolveConfig,\n },\n {\n provide: IMAGE_CONFIG,\n useValue: {\n disableImageSizeWarning: true,\n disableImageLazyLoadWarning: true,\n },\n },\n {\n provide: NOTIFICATIONS_CONFIG,\n useFactory: () => {\n const config = inject(APP_CONFIG);\n return config?.notification;\n },\n },\n { provide: APP_ID, useValue: 'serverApp' },\n { provide: MAT_SNACK_BAR_DEFAULT_OPTIONS, useValue: { duration: 2000 } },\n { provide: MAT_ICON_DEFAULT_OPTIONS, useValue: { fontSet: 'material-symbols-outlined' } },\n /**\n * Register HTTP client + interceptors\n */\n provideHttpClient(withInterceptors([credentialsInterceptor])),\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { HttpParams } from '@angular/common/http';\nimport { ApiRequestOptions } from '../interfaces';\n\nexport function toApiRequestParams(options?: ApiRequestOptions | null): HttpParams {\n if (!options) {\n return new HttpParams();\n }\n\n let params = new HttpParams();\n\n for (const [key, rawValue] of Object.entries(options)) {\n if (rawValue === undefined || rawValue === null || rawValue === '') {\n continue;\n }\n\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n if (item === undefined || item === null || item === '') {\n continue;\n }\n params = params.append(key, String(item));\n }\n continue;\n }\n\n params = params.set(key, String(rawValue));\n }\n\n return params;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-common",
3
- "version": "20.3.2-beta.3",
3
+ "version": "20.3.3-beta.0",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "moment": "^2.30.1",
@@ -111,27 +111,27 @@ interface ApiRequestOptions {
111
111
  interface ApiResponse<T> {
112
112
  code: number;
113
113
  data: T;
114
- meta: ApiResponseMeta;
115
- message: string;
114
+ meta?: ApiResponseMeta | null;
115
+ message?: string | null;
116
116
  }
117
117
  interface ApiResponseMeta {
118
- pagination: Pagination;
118
+ pagination?: Pagination | null;
119
119
  }
120
120
  interface Pagination {
121
121
  /**
122
- * total page
122
+ * total number of pages, not total item count
123
123
  */
124
124
  total: number;
125
125
  /**
126
- * data total count
126
+ * total number of items across all pages
127
127
  */
128
128
  count: number;
129
129
  /**
130
- * limit count for fetch
130
+ * page size
131
131
  */
132
132
  limit: number;
133
133
  /**
134
- * current page
134
+ * current page, 1-based
135
135
  */
136
136
  page: number;
137
137
  }
@@ -215,6 +215,13 @@ interface NotificationsConfig {
215
215
  declare const NOTIFICATIONS_CONFIG: InjectionToken<NotificationsConfig>;
216
216
  declare function provideAngularCommon(environment?: any): EnvironmentProviders;
217
217
 
218
+ interface UserAccessMenuConfig {
219
+ wishlist?: boolean;
220
+ viewings?: boolean;
221
+ offers?: boolean;
222
+ invoices?: boolean;
223
+ payments?: boolean;
224
+ }
218
225
  interface AppConfig {
219
226
  name: string;
220
227
  baseUrl: string;
@@ -226,6 +233,7 @@ interface AppConfig {
226
233
  endpoint?: EndpointBasicAuth;
227
234
  wechat?: WeChatConfig;
228
235
  onboarding?: OnboardingConfig;
236
+ userAccessMenu?: UserAccessMenuConfig;
229
237
  }
230
238
  interface EndpointBasicAuth {
231
239
  username: string;
@@ -243,7 +251,7 @@ declare const REQUEST: any;
243
251
  declare const RESPONSE: any;
244
252
  declare const WINDOW: InjectionToken<Window>;
245
253
 
246
- declare function toApiRequestParams(options?: ApiRequestOptions | null, extra?: Record<string, unknown>): HttpParams;
254
+ declare function toApiRequestParams(options?: ApiRequestOptions | null): HttpParams;
247
255
 
248
256
  export { APP_CONFIG, AddressFormatPipe, AngularCommonModule, COMMON_DIRECTIVES, COMMON_PIPES, DecimalDirective, DurationPipe, FixedPipe, NOTIFICATIONS_CONFIG, OptionsFormatPipe, PrettyjsonPipe, PricePipe, REQUEST, RESPONSE, SafeUrlPipe, ShippingAddressPipe, TimePipe, UserStatus, UsernameMatcher, WINDOW, provideAngularCommon, toApiRequestParams };
249
- export type { ApiRequestOptions, ApiResponse, ApiResponseMeta, AppConfig, Media, NavLink, NotificationLink, NotificationsConfig, Pagination, PasswordChange, PasswordResetConfirmRequest, Role, User };
257
+ export type { ApiRequestOptions, ApiResponse, ApiResponseMeta, AppConfig, Media, NavLink, NotificationLink, NotificationsConfig, Pagination, PasswordChange, PasswordResetConfirmRequest, Role, User, UserAccessMenuConfig };