@webilix/ngx-helper-m3 0.0.6 → 0.0.7

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.
@@ -33,6 +33,7 @@ export declare class NgxHelperCardComponent implements OnInit, OnChanges {
33
33
  actions: NgxHelperAction[];
34
34
  padding: string;
35
35
  backgroundColor?: string;
36
+ hasShadow: boolean;
36
37
  isMobile: boolean;
37
38
  buttons: Button[];
38
39
  private componentConfig;
@@ -41,6 +42,6 @@ export declare class NgxHelperCardComponent implements OnInit, OnChanges {
41
42
  ngOnChanges(changes: SimpleChanges): void;
42
43
  onResize(): void;
43
44
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperCardComponent, [null, { optional: true; }]>;
44
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxHelperCardComponent, "ngx-helper-card", never, { "title": { "alias": "title"; "required": true; }; "subTitle": { "alias": "subTitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "padding": { "alias": "padding"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; }, {}, never, ["*"], true, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxHelperCardComponent, "ngx-helper-card", never, { "title": { "alias": "title"; "required": true; }; "subTitle": { "alias": "subTitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "padding": { "alias": "padding"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "hasShadow": { "alias": "hasShadow"; "required": false; }; }, {}, never, ["*"], true, never>;
45
46
  }
46
47
  export {};
@@ -0,0 +1,43 @@
1
+ import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { INgxHelperConfig } from '../../../ngx-helper.config';
4
+ import { ComponentService } from '../../component.service';
5
+ import { INgxHelperValue } from '../ngx-helper-value.interface';
6
+ import * as i0 from "@angular/core";
7
+ export declare class NgxHelperValueBoxComponent implements OnInit, OnChanges {
8
+ private readonly router;
9
+ private readonly componentService;
10
+ private readonly config?;
11
+ private className;
12
+ private gridTemplateColumns;
13
+ private boxGap;
14
+ values: INgxHelperValue[];
15
+ column?: number | {
16
+ desktop?: number;
17
+ mobile?: number;
18
+ };
19
+ clearBox: boolean;
20
+ emptyText: string;
21
+ gapSize: string;
22
+ hideShadow: boolean;
23
+ data: {
24
+ title: string;
25
+ value: string;
26
+ action?: () => string[] | void;
27
+ copyToClipboard?: boolean;
28
+ ltr?: boolean;
29
+ english?: boolean;
30
+ }[];
31
+ copyIndex?: number;
32
+ private copyTimeout;
33
+ private componentConfig;
34
+ private pipeTransform;
35
+ constructor(router: Router, componentService: ComponentService, config?: Partial<INgxHelperConfig> | undefined);
36
+ ngOnInit(): void;
37
+ ngOnChanges(changes: SimpleChanges): void;
38
+ onResize(): void;
39
+ onClick(action?: () => string[] | void): void;
40
+ onCopy(event: Event, index: number): void;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperValueBoxComponent, [null, null, { optional: true; }]>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxHelperValueBoxComponent, "ngx-helper-value-box", never, { "values": { "alias": "values"; "required": true; }; "column": { "alias": "column"; "required": false; }; "clearBox": { "alias": "clearBox"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "gapSize": { "alias": "gapSize"; "required": false; }; "hideShadow": { "alias": "hideShadow"; "required": false; }; }, {}, never, never, true, never>;
43
+ }
@@ -0,0 +1,28 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { INgxHelperValue } from '../ngx-helper-value.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class NgxHelperValueListComponent implements OnChanges {
6
+ private readonly router;
7
+ private className;
8
+ values: INgxHelperValue[];
9
+ titleWidth: string;
10
+ emptyText: string;
11
+ data: {
12
+ title: string;
13
+ value: string;
14
+ action?: () => string[] | void;
15
+ copyToClipboard?: boolean;
16
+ ltr?: boolean;
17
+ english?: boolean;
18
+ }[];
19
+ copyIndex?: number;
20
+ private copyTimeout;
21
+ private pipeTransform;
22
+ constructor(router: Router);
23
+ ngOnChanges(changes: SimpleChanges): void;
24
+ onClick(action?: () => string[] | void): void;
25
+ onCopy(event: Event, index: number): void;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperValueListComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxHelperValueListComponent, "ngx-helper-value-list", never, { "values": { "alias": "values"; "required": true; }; "titleWidth": { "alias": "titleWidth"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; }, {}, never, never, true, never>;
28
+ }
@@ -0,0 +1,2 @@
1
+ import { NgxHelperValue } from './ngx-helper-value.interface';
2
+ export declare const ltrValues: NgxHelperValue['type'][];
@@ -0,0 +1,76 @@
1
+ import { DateFormats, DurationFormats } from '../../pipe.types';
2
+ export type NgxHelperValue = {
3
+ type: 'BANK-CARD';
4
+ value?: string;
5
+ view?: 'CARD' | 'BANK';
6
+ join?: string;
7
+ english?: boolean;
8
+ } | {
9
+ type: 'DATE';
10
+ value?: Date | number;
11
+ format?: DateFormats;
12
+ timezone?: string;
13
+ } | {
14
+ type: 'DURATION';
15
+ value?: number | Date | {
16
+ from: Date;
17
+ } | {
18
+ to: Date;
19
+ } | {
20
+ from: Date;
21
+ to: Date;
22
+ };
23
+ format?: DurationFormats;
24
+ english?: boolean;
25
+ } | {
26
+ type: 'FILE-SIZE';
27
+ value?: number;
28
+ english?: boolean;
29
+ } | {
30
+ type: 'MOBILE';
31
+ value?: string;
32
+ join?: string;
33
+ english?: boolean;
34
+ } | {
35
+ type: 'NUMBER';
36
+ value?: number;
37
+ fractionDigits?: number;
38
+ english?: boolean;
39
+ } | {
40
+ type: 'PERIOD';
41
+ value?: Date | {
42
+ from: Date;
43
+ } | {
44
+ to: Date;
45
+ } | {
46
+ from: Date;
47
+ to: Date;
48
+ };
49
+ timezone?: string;
50
+ } | {
51
+ type: 'PRICE';
52
+ value?: number;
53
+ currency?: string;
54
+ short?: boolean;
55
+ english?: boolean;
56
+ } | {
57
+ type: 'STRING';
58
+ value?: string;
59
+ english?: boolean;
60
+ } | {
61
+ type: 'VOLUME';
62
+ value?: number;
63
+ short?: boolean;
64
+ english?: boolean;
65
+ } | {
66
+ type: 'WEIGHT';
67
+ value?: number;
68
+ short?: boolean;
69
+ english?: boolean;
70
+ };
71
+ export interface INgxHelperValue {
72
+ readonly title: string;
73
+ readonly value?: string | NgxHelperValue;
74
+ readonly action?: () => string[] | void;
75
+ readonly copyToClipboard?: boolean;
76
+ }
@@ -0,0 +1,10 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { NgxHelperValue } from './ngx-helper-value.interface';
3
+ import * as i0 from "@angular/core";
4
+ export declare class NgxHelperValuePipe implements PipeTransform {
5
+ transform(value?: NgxHelperValue, options?: {
6
+ emptyText?: string;
7
+ }): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperValuePipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<NgxHelperValuePipe, "ngxHelperValue", true>;
10
+ }
@@ -0,0 +1,2 @@
1
+ export type DateFormats = string | 'FULL' | 'SHORT' | 'DATE' | 'TIME' | 'WEEK' | 'MONTH' | 'YEAR';
2
+ export type DurationFormats = 'TEXT' | 'FULL' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND';
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperBankCardPipe implements PipeTransform {
4
- transform(value: string, options?: {
4
+ transform(value?: string | null, options?: {
5
5
  view?: 'CARD' | 'BANK';
6
6
  join?: string;
7
7
  }): string;
@@ -1,16 +1,15 @@
1
1
  import { PipeTransform } from '@angular/core';
2
+ import { DateFormats } from '../pipe.types';
2
3
  import * as i0 from "@angular/core";
3
- type Formats = string | 'FULL' | 'SHORT' | 'DATE' | 'TIME' | 'WEEK' | 'MONTH' | 'YEAR';
4
4
  export declare class NgxHelperDatePipe implements PipeTransform {
5
- transform(value: Date, options?: {
6
- format?: Formats;
5
+ transform(value?: Date | null, options?: {
6
+ format?: DateFormats;
7
7
  timezone?: string;
8
8
  }): string;
9
- transform(value: number, options?: {
10
- format?: Formats;
9
+ transform(value?: number | null, options?: {
10
+ format?: DateFormats;
11
11
  timezone?: string;
12
12
  }): string;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperDatePipe, never>;
14
14
  static ɵpipe: i0.ɵɵPipeDeclaration<NgxHelperDatePipe, "ngxHelperDate", true>;
15
15
  }
16
- export {};
@@ -1,35 +1,34 @@
1
1
  import { PipeTransform } from '@angular/core';
2
+ import { DurationFormats } from '../pipe.types';
2
3
  import * as i0 from "@angular/core";
3
- type Formats = 'TEXT' | 'FULL' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND';
4
4
  export declare class NgxHelperDurationPipe implements PipeTransform {
5
- transform(value: number, options?: {
6
- format?: Formats;
5
+ transform(value?: number | null, options?: {
6
+ format?: DurationFormats;
7
7
  english?: boolean;
8
8
  }): string;
9
- transform(value: Date, options?: {
10
- format?: Formats;
9
+ transform(value?: Date | null, options?: {
10
+ format?: DurationFormats;
11
11
  english?: boolean;
12
12
  }): string;
13
- transform(value: {
13
+ transform(value?: {
14
14
  from: Date;
15
- }, options?: {
16
- format?: Formats;
15
+ } | null, options?: {
16
+ format?: DurationFormats;
17
17
  english?: boolean;
18
18
  }): string;
19
- transform(value: {
19
+ transform(value?: {
20
20
  to: Date;
21
- }, options?: {
22
- format?: Formats;
21
+ } | null, options?: {
22
+ format?: DurationFormats;
23
23
  english?: boolean;
24
24
  }): string;
25
- transform(value: {
25
+ transform(value?: {
26
26
  from: Date;
27
27
  to: Date;
28
- }, options?: {
29
- format?: Formats;
28
+ } | null, options?: {
29
+ format?: DurationFormats;
30
30
  english?: boolean;
31
31
  }): string;
32
32
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperDurationPipe, never>;
33
33
  static ɵpipe: i0.ɵɵPipeDeclaration<NgxHelperDurationPipe, "ngxHelperDuration", true>;
34
34
  }
35
- export {};
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperFileSizePipe implements PipeTransform {
4
- transform(size: number, options?: {
4
+ transform(value?: number | null, options?: {
5
5
  english?: boolean;
6
6
  }): string;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperFileSizePipe, never>;
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperMobilePipe implements PipeTransform {
4
- transform(value: string, options?: {
4
+ transform(value?: string | null, options?: {
5
5
  join?: string;
6
6
  }): string;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperMobilePipe, never>;
@@ -2,9 +2,9 @@ import { PipeTransform } from '@angular/core';
2
2
  import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class NgxHelperMultiLinePipe implements PipeTransform {
5
- private readonly sanitizer;
6
- constructor(sanitizer: DomSanitizer);
7
- transform(value: string, options?: {
5
+ private readonly domSanitizer;
6
+ constructor(domSanitizer: DomSanitizer);
7
+ transform(value?: string | null, options?: {
8
8
  html?: boolean;
9
9
  }): string | SafeHtml;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperMultiLinePipe, never>;
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperNumberPipe implements PipeTransform {
4
- transform(value: number, options?: {
4
+ transform(value?: number | null, options?: {
5
5
  fractionDigits?: number;
6
6
  english?: boolean;
7
7
  }): string;
@@ -1,23 +1,23 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperPeriodPipe implements PipeTransform {
4
- transform(value: Date, options?: {
4
+ transform(value?: Date | null, options?: {
5
5
  timezone?: string;
6
6
  }): string;
7
- transform(value: {
7
+ transform(value?: {
8
8
  from: Date;
9
- }, options?: {
9
+ } | null, options?: {
10
10
  timezone?: string;
11
11
  }): string;
12
- transform(value: {
12
+ transform(value?: {
13
13
  to: Date;
14
- }, options?: {
14
+ } | null, options?: {
15
15
  timezone?: string;
16
16
  }): string;
17
- transform(value: {
17
+ transform(value?: {
18
18
  from: Date;
19
19
  to: Date;
20
- }, options?: {
20
+ } | null, options?: {
21
21
  timezone?: string;
22
22
  }): string;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperPeriodPipe, never>;
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperPricePipe implements PipeTransform {
4
- transform(value: number, options?: {
4
+ transform(value?: number | null, options?: {
5
5
  currency?: string;
6
6
  short?: boolean;
7
7
  english?: boolean;
@@ -5,7 +5,7 @@ type Types = 'HTML' | 'STYLE' | 'SCRIPT' | 'URL' | 'RESOURCE_URL';
5
5
  export declare class NgxHelperSafePipe implements PipeTransform {
6
6
  private readonly domSanitizer;
7
7
  constructor(domSanitizer: DomSanitizer);
8
- transform(value: string, options?: {
8
+ transform(value?: string | null, options?: {
9
9
  type?: Types;
10
10
  }): string | SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperSafePipe, never>;
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperVolumePipe implements PipeTransform {
4
- transform(value: number, options?: {
4
+ transform(value?: number | null, options?: {
5
5
  short?: boolean;
6
6
  english?: boolean;
7
7
  }): string;
@@ -1,7 +1,7 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class NgxHelperWeightPipe implements PipeTransform {
4
- transform(value: number, options?: {
4
+ transform(value?: number | null, options?: {
5
5
  short?: boolean;
6
6
  english?: boolean;
7
7
  }): string;
package/ngx-helper-m3.css CHANGED
@@ -204,6 +204,8 @@
204
204
  display: block;
205
205
  direction: rtl;
206
206
 
207
+ overflow: hidden;
208
+ position: relative;
207
209
  border-radius: 8px;
208
210
  border: 1px solid var(--outline-variant);
209
211
 
@@ -296,3 +298,193 @@
296
298
  background-color: var(--surface-container-low);
297
299
  }
298
300
  }
301
+ .ngx-helper-m3-card.has-shadow::after {
302
+ display: block;
303
+ content: ' ';
304
+
305
+ position: absolute;
306
+ top: 0;
307
+ right: 0;
308
+ bottom: 0;
309
+ left: 0;
310
+
311
+ pointer-events: none;
312
+ box-shadow: inset 0 0 5px 0 var(--outline-variant);
313
+ }
314
+
315
+ /* NGX HELPER VALUE BOX */
316
+ .ngx-helper-m3-value-box {
317
+ display: grid;
318
+ row-gap: var(--gap-size);
319
+ column-gap: var(--gap-size);
320
+
321
+ direction: rtl;
322
+
323
+ .box {
324
+ display: flex;
325
+ flex-direction: column;
326
+ align-items: center;
327
+
328
+ position: relative;
329
+
330
+ .title {
331
+ width: 100%;
332
+ font-size: var(--ngx-helper-m3-font-small);
333
+ font-weight: 500;
334
+ padding: 1rem 1rem 0.5rem 1rem;
335
+ text-align: center;
336
+ box-sizing: border-box;
337
+ }
338
+
339
+ .value {
340
+ width: 100%;
341
+ font-weight: normal;
342
+ padding: 0 1rem 1rem 1rem;
343
+ text-align: center;
344
+ box-sizing: border-box;
345
+ }
346
+
347
+ .value.en {
348
+ direction: ltr;
349
+ font-family: Roboto, 'Helvetica Neue', sans-serif;
350
+ }
351
+
352
+ .value.empty {
353
+ opacity: 0.75;
354
+ font-style: italic;
355
+ font-size: var(--ngx-helper-m3-font-small);
356
+ }
357
+
358
+ button {
359
+ position: absolute;
360
+ top: 0;
361
+ left: 0;
362
+
363
+ font-size: 100%;
364
+ line-height: 1;
365
+
366
+ mat-icon {
367
+ font-size: 100%;
368
+ line-height: 1;
369
+ }
370
+ }
371
+ }
372
+
373
+ .box.click {
374
+ cursor: pointer;
375
+ }
376
+
377
+ .box:not(.clear-box) {
378
+ border-radius: 4px;
379
+ border: 1px solid var(--outline-variant);
380
+ background-color: var(--surface-container-low);
381
+ }
382
+ }
383
+ .ngx-helper-m3-value-box:not(.hide-shadow) {
384
+ .box:not(.clear-box)::after {
385
+ display: block;
386
+ content: ' ';
387
+
388
+ position: absolute;
389
+ top: 0;
390
+ right: 0;
391
+ bottom: 0;
392
+ left: 0;
393
+
394
+ pointer-events: none;
395
+ box-shadow: inset 0 0 5px 0 var(--outline-variant);
396
+ }
397
+ }
398
+
399
+ /* NGX HELPER VALUE LIST */
400
+ .ngx-helper-m3-value-list {
401
+ display: flex;
402
+ flex-direction: column;
403
+ direction: rtl;
404
+
405
+ .item {
406
+ display: flex;
407
+ align-items: flex-start;
408
+ column-gap: 1rem;
409
+
410
+ min-height: 40px;
411
+
412
+ .title {
413
+ font-size: var(--ngx-helper-m3-font-small);
414
+ font-weight: 500;
415
+ padding: 0.5rem 1rem 0.5rem 0;
416
+
417
+ white-space: nowrap;
418
+ overflow: hidden;
419
+ text-overflow: ellipsis;
420
+ }
421
+
422
+ .value {
423
+ flex: 1;
424
+
425
+ display: flex;
426
+ align-items: center;
427
+ font-weight: normal;
428
+
429
+ min-height: 40px;
430
+
431
+ .en {
432
+ direction: ltr;
433
+ font-family: Roboto, 'Helvetica Neue', sans-serif;
434
+ }
435
+
436
+ .empty {
437
+ opacity: 0.75;
438
+ font-style: italic;
439
+ font-size: var(--ngx-helper-m3-font-small);
440
+ }
441
+
442
+ .click {
443
+ cursor: pointer;
444
+ }
445
+ }
446
+
447
+ button {
448
+ font-size: 100%;
449
+ line-height: 1;
450
+
451
+ mat-icon {
452
+ font-size: 100%;
453
+ line-height: 1;
454
+ }
455
+ }
456
+ }
457
+
458
+ .item.odd {
459
+ background-color: var(--surface-container);
460
+ }
461
+
462
+ .item.even {
463
+ background-color: var(--background);
464
+ }
465
+ }
466
+
467
+ /* NGX HELPER VALUE LIST */
468
+ .ngx-helper-m3-box {
469
+ display: block;
470
+ direction: rtl;
471
+
472
+ position: relative;
473
+ overflow: hidden;
474
+ border-radius: 4px;
475
+ border: 1px solid var(--outline-variant);
476
+ background-color: var(--surface-container-low);
477
+ }
478
+ .ngx-helper-m3-box:not(.hide-shadow)::after {
479
+ display: block;
480
+ content: ' ';
481
+
482
+ position: absolute;
483
+ top: 0;
484
+ right: 0;
485
+ bottom: 0;
486
+ left: 0;
487
+
488
+ pointer-events: none;
489
+ box-shadow: inset 0 0 5px 0 var(--outline-variant);
490
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webilix/ngx-helper-m3",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "author": "Ali Amirnezhad",
5
5
  "description": "Helper library for Angular and Material 3",
6
6
  "repository": {
package/public-api.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './lib/ngx-helper.config';
2
+ export * from './lib/components/box/ngx-helper-box.component';
3
+ export * from './lib/components/box/ngx-helper-box.interface';
2
4
  export * from './lib/components/card/ngx-helper-card.component';
3
5
  export * from './lib/components/card/ngx-helper-card.interface';
4
6
  export * from './lib/components/loader/ngx-helper-loader.component';
@@ -7,6 +9,10 @@ export * from './lib/components/page-group/ngx-helper-page-group.interface';
7
9
  export * from './lib/components/section/ngx-helper-section-sticky.directive';
8
10
  export * from './lib/components/section/ngx-helper-section.component';
9
11
  export * from './lib/components/section/column/ngx-helper-section-column.component';
12
+ export * from './lib/components/value/box/ngx-helper-value-box.component';
13
+ export * from './lib/components/value/list/ngx-helper-value-list.component';
14
+ export * from './lib/components/value/ngx-helper-value.interface';
15
+ export * from './lib/components/value/ngx-helper-value.pipe';
10
16
  export * from './lib/pipes/bank-card.pipe';
11
17
  export * from './lib/pipes/date.pipe';
12
18
  export * from './lib/pipes/duration.pipe';