@recursyve/ngx-material-components 19.0.0-beta.20 → 19.0.0-beta.22

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 (60) hide show
  1. package/chip-list/chip-list.d.ts +26 -0
  2. package/chip-list/icons/clear/chip-list-items-clear-icon.d.ts +5 -0
  3. package/chip-list/index.d.ts +2 -41
  4. package/chip-list/items/chip-list-items.d.ts +14 -0
  5. package/common/index.d.ts +4 -24
  6. package/common/provider.d.ts +3 -0
  7. package/common/translater/constant.d.ts +2 -0
  8. package/common/translater/options.d.ts +7 -0
  9. package/common/translater/translate-pipe.d.ts +8 -0
  10. package/common/translater/translater.d.ts +1 -0
  11. package/dropzone/config.d.ts +42 -0
  12. package/dropzone/constant.d.ts +2 -0
  13. package/dropzone/dropzone.d.ts +42 -0
  14. package/dropzone/dropzone.directive.d.ts +12 -0
  15. package/dropzone/icons/delete/delete-icon.component.d.ts +5 -0
  16. package/dropzone/icons/file/file-icon.component.d.ts +5 -0
  17. package/dropzone/icons/image/image-icon.component.d.ts +5 -0
  18. package/dropzone/index.d.ts +6 -125
  19. package/dropzone/models.d.ts +20 -0
  20. package/dropzone/options.d.ts +4 -0
  21. package/dropzone/pipes/file-size.pipe.d.ts +10 -0
  22. package/dropzone/preview/file-preview.d.ts +14 -0
  23. package/dropzone/provider.d.ts +3 -0
  24. package/fesm2022/recursyve-ngx-material-components-chip-list.mjs +13 -13
  25. package/fesm2022/recursyve-ngx-material-components-chip-list.mjs.map +1 -1
  26. package/fesm2022/recursyve-ngx-material-components-common.mjs +3 -3
  27. package/fesm2022/recursyve-ngx-material-components-common.mjs.map +1 -1
  28. package/fesm2022/recursyve-ngx-material-components-dropzone.mjs +35 -35
  29. package/fesm2022/recursyve-ngx-material-components-dropzone.mjs.map +1 -1
  30. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs +6 -6
  31. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs.map +1 -1
  32. package/fesm2022/recursyve-ngx-material-components-loading.mjs +10 -10
  33. package/fesm2022/recursyve-ngx-material-components-loading.mjs.map +1 -1
  34. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs +90 -56
  35. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs.map +1 -1
  36. package/form-field-error/constant.d.ts +3 -0
  37. package/form-field-error/error-transformer.d.ts +13 -0
  38. package/form-field-error/form-field-error.d.ts +8 -0
  39. package/form-field-error/form-field-error.directive.d.ts +17 -0
  40. package/form-field-error/index.d.ts +4 -53
  41. package/form-field-error/options.d.ts +9 -0
  42. package/form-field-error/provider.d.ts +3 -0
  43. package/index.d.ts +1 -3
  44. package/loading/constant.d.ts +2 -0
  45. package/loading/index.d.ts +3 -31
  46. package/loading/loading-spinner.d.ts +9 -0
  47. package/loading/loading.d.ts +13 -0
  48. package/loading/options.d.ts +4 -0
  49. package/loading/provider.d.ts +3 -0
  50. package/package.json +7 -7
  51. package/typeahead/async-typeahead.d.ts +42 -0
  52. package/typeahead/constants.d.ts +2 -0
  53. package/typeahead/icons/search/typeahead-search-icon.d.ts +5 -0
  54. package/typeahead/index.d.ts +4 -216
  55. package/typeahead/provider.d.ts +3 -0
  56. package/typeahead/providers/async-typeahead.provider.d.ts +11 -0
  57. package/typeahead/providers/async-typeahead.service.d.ts +50 -0
  58. package/typeahead/providers/index.d.ts +2 -0
  59. package/typeahead/typeahead-base.d.ts +111 -0
  60. package/typeahead/typeahead.d.ts +12 -0
@@ -0,0 +1,26 @@
1
+ import { OnInit } from "@angular/core";
2
+ import { ControlValueAccessor } from "@angular/forms";
3
+ import { NiceChipListItems } from "./items/chip-list-items";
4
+ import * as i0 from "@angular/core";
5
+ export declare class NiceChipListDirective<T> implements ControlValueAccessor, OnInit {
6
+ readonly withItemList: import("@angular/core").InputSignal<NiceChipListItems<T>>;
7
+ readonly reloadOnSelected: import("@angular/core").InputSignal<boolean>;
8
+ readonly separatorKeyboardCodes: import("@angular/core").InputSignal<string[]>;
9
+ private readonly elementRef;
10
+ private readonly injector;
11
+ private readonly asyncTypeahead;
12
+ private readonly ngControl;
13
+ private readonly values;
14
+ private propagateChanges?;
15
+ constructor();
16
+ onKeyDown(event: KeyboardEvent): void;
17
+ ngOnInit(): void;
18
+ writeValue(obj: T[] | null): void;
19
+ registerOnChange(fn: (_: T[]) => void): void;
20
+ registerOnTouched(): void;
21
+ private setupAsyncTypeahead;
22
+ private addValue;
23
+ private updateTypeaheadSearchOptions;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceChipListDirective<any>, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceChipListDirective<any>, "input[niceChipList], nice-async-typeahead[niceChipList]", never, { "withItemList": { "alias": "withItemList"; "required": true; "isSignal": true; }; "reloadOnSelected": { "alias": "reloadOnSelected"; "required": false; "isSignal": true; }; "separatorKeyboardCodes": { "alias": "separatorKeyboardCodes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
26
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NiceChipListItemsClearIcon {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceChipListItemsClearIcon, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceChipListItemsClearIcon, "nice-chip-list-items-clear-icon", never, {}, {}, never, never, true, never>;
5
+ }
@@ -1,41 +1,2 @@
1
- import * as _angular_core from '@angular/core';
2
- import { Injector, Signal, OnInit } from '@angular/core';
3
- import { ControlValueAccessor } from '@angular/forms';
4
- import { Observable } from 'rxjs';
5
-
6
- declare class NiceChipListItems<T> {
7
- readonly removeChip: _angular_core.OutputEmitterRef<number>;
8
- protected readonly injector: Injector;
9
- items?: Signal<T[]>;
10
- formatLabelFn?: (value: T) => string;
11
- setItemsReactivity(items$: Observable<T[]>): void;
12
- setFormatLabel(fn: (value: T) => string): void;
13
- remove(index: number): void;
14
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NiceChipListItems<any>, never>;
15
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NiceChipListItems<any>, "nice-chip-list-items", never, {}, { "removeChip": "removeChip"; }, never, never, true, never>;
16
- }
17
-
18
- declare class NiceChipListDirective<T> implements ControlValueAccessor, OnInit {
19
- readonly withItemList: _angular_core.InputSignal<NiceChipListItems<T>>;
20
- readonly reloadOnSelected: _angular_core.InputSignal<boolean>;
21
- readonly separatorKeyboardCodes: _angular_core.InputSignal<string[]>;
22
- private readonly elementRef;
23
- private readonly injector;
24
- private readonly asyncTypeahead;
25
- private readonly ngControl;
26
- private readonly values;
27
- private propagateChanges?;
28
- constructor();
29
- onKeyDown(event: KeyboardEvent): void;
30
- ngOnInit(): void;
31
- writeValue(obj: T[] | null): void;
32
- registerOnChange(fn: (_: T[]) => void): void;
33
- registerOnTouched(): void;
34
- private setupAsyncTypeahead;
35
- private addValue;
36
- private updateTypeaheadSearchOptions;
37
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NiceChipListDirective<any>, never>;
38
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NiceChipListDirective<any>, "input[niceChipList], nice-async-typeahead[niceChipList]", never, { "withItemList": { "alias": "withItemList"; "required": true; "isSignal": true; }; "reloadOnSelected": { "alias": "reloadOnSelected"; "required": false; "isSignal": true; }; "separatorKeyboardCodes": { "alias": "separatorKeyboardCodes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
39
- }
40
-
41
- export { NiceChipListDirective, NiceChipListItems };
1
+ export * from "./chip-list";
2
+ export * from "./items/chip-list-items";
@@ -0,0 +1,14 @@
1
+ import { Injector, Signal } from "@angular/core";
2
+ import { Observable } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ export declare class NiceChipListItems<T> {
5
+ readonly removeChip: import("@angular/core").OutputEmitterRef<number>;
6
+ protected readonly injector: Injector;
7
+ items?: Signal<T[]>;
8
+ formatLabelFn?: (value: T) => string;
9
+ setItemsReactivity(items$: Observable<T[]>): void;
10
+ setFormatLabel(fn: (value: T) => string): void;
11
+ remove(index: number): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceChipListItems<any>, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceChipListItems<any>, "nice-chip-list-items", never, {}, { "removeChip": "removeChip"; }, never, never, true, never>;
14
+ }
package/common/index.d.ts CHANGED
@@ -1,24 +1,4 @@
1
- import * as i0 from '@angular/core';
2
- import { FactoryProvider, Provider, InjectionToken, PipeTransform } from '@angular/core';
3
-
4
- type NiceTranslater = (key: string, params?: Record<string, string>) => string;
5
-
6
- type NiceTranslaterOptions = {
7
- translater: Omit<FactoryProvider, "provide" | "multi"> & {
8
- useFactory: (...args: any[]) => NiceTranslater;
9
- };
10
- };
11
-
12
- declare function provideNiceComponents(options: NiceTranslaterOptions): Provider[];
13
-
14
- declare const NICE_COMPONENTS_TRANSLATER: InjectionToken<unknown>;
15
-
16
- declare class NiceTranslatePipe implements PipeTransform {
17
- private readonly translater;
18
- transform(key: string, params?: Record<string, string>): string;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<NiceTranslatePipe, never>;
20
- static ɵpipe: i0.ɵɵPipeDeclaration<NiceTranslatePipe, "niceTranslate", true>;
21
- }
22
-
23
- export { NICE_COMPONENTS_TRANSLATER, NiceTranslatePipe, provideNiceComponents };
24
- export type { NiceTranslater };
1
+ export * from "./provider";
2
+ export * from "./translater/constant";
3
+ export * from "./translater/translate-pipe";
4
+ export * from "./translater/translater";
@@ -0,0 +1,3 @@
1
+ import { Provider } from "@angular/core";
2
+ import { NiceTranslaterOptions } from "./translater/options";
3
+ export declare function provideNiceComponents(options: NiceTranslaterOptions): Provider[];
@@ -0,0 +1,2 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const NICE_COMPONENTS_TRANSLATER: InjectionToken<unknown>;
@@ -0,0 +1,7 @@
1
+ import { FactoryProvider } from "@angular/core";
2
+ import { NiceTranslater } from "./translater";
3
+ export type NiceTranslaterOptions = {
4
+ translater: Omit<FactoryProvider, "provide" | "multi"> & {
5
+ useFactory: (...args: any[]) => NiceTranslater;
6
+ };
7
+ };
@@ -0,0 +1,8 @@
1
+ import { PipeTransform } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class NiceTranslatePipe implements PipeTransform {
4
+ private readonly translater;
5
+ transform(key: string, params?: Record<string, string>): string;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceTranslatePipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<NiceTranslatePipe, "niceTranslate", true>;
8
+ }
@@ -0,0 +1 @@
1
+ export type NiceTranslater = (key: string, params?: Record<string, string>) => string;
@@ -0,0 +1,42 @@
1
+ export type NiceDropzoneImageConfig = {
2
+ minSize?: {
3
+ width: number;
4
+ height: number;
5
+ };
6
+ maxSize?: {
7
+ width: number;
8
+ height: number;
9
+ };
10
+ recommendedSize?: {
11
+ width: number;
12
+ height: number;
13
+ };
14
+ };
15
+ export type NiceDropzoneFileSizeConfig = {
16
+ size: number;
17
+ unit: "B" | "KB" | "MB" | "GB";
18
+ };
19
+ export type NiceDropzoneTranslationKeyConfig = {
20
+ upload: {
21
+ file: string;
22
+ files: string;
23
+ image: string;
24
+ images: string;
25
+ };
26
+ format: {
27
+ label: string;
28
+ };
29
+ ratio: {
30
+ label: string;
31
+ pixels: string;
32
+ };
33
+ size: {
34
+ label: string;
35
+ units: {
36
+ B: string;
37
+ KB: string;
38
+ MB: string;
39
+ GB: string;
40
+ };
41
+ };
42
+ };
@@ -0,0 +1,2 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const NICE_DROPZONE_TRANSLATION_KEYS: InjectionToken<unknown>;
@@ -0,0 +1,42 @@
1
+ import { ElementRef, OnDestroy } from "@angular/core";
2
+ import { ControlValueAccessor } from "@angular/forms";
3
+ import { MatRippleLoader } from "@angular/material/core";
4
+ import { NiceDropzoneFileSizeConfig, NiceDropzoneImageConfig, NiceDropzoneTranslationKeyConfig } from "./config";
5
+ import { NiceFileDimensions, NiceSelectedFiles } from "./models";
6
+ import * as i0 from "@angular/core";
7
+ export declare const niceDropzoneModes: readonly ["image", "file", "all"];
8
+ export type NiceDropzoneModes = (typeof niceDropzoneModes)[number];
9
+ export declare class NiceDropzone implements OnDestroy, ControlValueAccessor {
10
+ readonly mode: import("@angular/core").InputSignal<"file" | "image" | "all">;
11
+ readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, any>;
12
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, any>;
13
+ readonly accept: import("@angular/core").InputSignal<string[] | undefined>;
14
+ readonly config: import("@angular/core").InputSignal<NiceDropzoneImageConfig | undefined>;
15
+ readonly maxFileSize: import("@angular/core").InputSignal<NiceDropzoneFileSizeConfig | undefined>;
16
+ protected readonly _elementRef: import("@angular/core").Signal<ElementRef<any> | undefined>;
17
+ protected readonly _inputRef: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
18
+ /**
19
+ * Handles the lazy creation of the MatButton ripple.
20
+ * Used to improve the initial load time of large applications.
21
+ */
22
+ protected readonly _rippleLoader: MatRippleLoader;
23
+ protected readonly _translationKeys: NiceDropzoneTranslationKeyConfig;
24
+ protected readonly files: import("@angular/core").WritableSignal<NiceSelectedFiles[]>;
25
+ protected _disabled: boolean;
26
+ private _onChange;
27
+ private _value;
28
+ constructor();
29
+ ngOnDestroy(): void;
30
+ writeValue(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void;
31
+ registerOnChange(fn: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void): void;
32
+ registerOnTouched(): void;
33
+ setDisabledState(disabled: boolean): void;
34
+ onFileChanged(event: Event): void;
35
+ onFilesDropped(fileList: FileList): Promise<void>;
36
+ onFileDelete(index: number): void;
37
+ protected propagateChanges(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void;
38
+ protected getImageDimension(file: File): Promise<NiceFileDimensions>;
39
+ protected resetInput(): void;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceDropzone, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceDropzone, "nice-dropzone", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
42
+ }
@@ -0,0 +1,12 @@
1
+ import { EventEmitter } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class NiceDropzoneDirective {
4
+ fileOver: boolean;
5
+ filesDropped: EventEmitter<FileList>;
6
+ files: import("@angular/core").OutputEmitterRef<void>;
7
+ onDragOver(event: DragEvent): void;
8
+ onDragLeave(event: DragEvent): void;
9
+ ondrop(event: DragEvent): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceDropzoneDirective, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceDropzoneDirective, "[niceDropzone]", never, {}, { "filesDropped": "filesDropped"; "files": "files"; }, never, never, true, never>;
12
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NiceDropzoneDeleteIcon {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceDropzoneDeleteIcon, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceDropzoneDeleteIcon, "nice-dropzone-delete-icon", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NiceDropzoneFileIcon {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceDropzoneFileIcon, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceDropzoneFileIcon, "nice-dropzone-file-icon", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NiceDropzoneImageIcon {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceDropzoneImageIcon, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceDropzoneImageIcon, "nice-dropzone-image-icon", never, {}, {}, never, never, true, never>;
5
+ }
@@ -1,125 +1,6 @@
1
- import * as _angular_core from '@angular/core';
2
- import { EventEmitter, OnDestroy, ElementRef, Provider } from '@angular/core';
3
- import { ControlValueAccessor } from '@angular/forms';
4
- import { MatRippleLoader } from '@angular/material/core';
5
-
6
- declare class NiceDropzoneDirective {
7
- fileOver: boolean;
8
- filesDropped: EventEmitter<FileList>;
9
- files: _angular_core.OutputEmitterRef<void>;
10
- onDragOver(event: DragEvent): void;
11
- onDragLeave(event: DragEvent): void;
12
- ondrop(event: DragEvent): void;
13
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NiceDropzoneDirective, never>;
14
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NiceDropzoneDirective, "[niceDropzone]", never, {}, { "filesDropped": "filesDropped"; "files": "files"; }, never, never, true, never>;
15
- }
16
-
17
- type NiceDropzoneImageConfig = {
18
- minSize?: {
19
- width: number;
20
- height: number;
21
- };
22
- maxSize?: {
23
- width: number;
24
- height: number;
25
- };
26
- recommendedSize?: {
27
- width: number;
28
- height: number;
29
- };
30
- };
31
- type NiceDropzoneFileSizeConfig = {
32
- size: number;
33
- unit: "B" | "KB" | "MB" | "GB";
34
- };
35
- type NiceDropzoneTranslationKeyConfig = {
36
- upload: {
37
- file: string;
38
- files: string;
39
- image: string;
40
- images: string;
41
- };
42
- format: {
43
- label: string;
44
- };
45
- ratio: {
46
- label: string;
47
- pixels: string;
48
- };
49
- size: {
50
- label: string;
51
- units: {
52
- B: string;
53
- KB: string;
54
- MB: string;
55
- GB: string;
56
- };
57
- };
58
- };
59
-
60
- type NiceFileDimensions = {
61
- width: number;
62
- height: number;
63
- ratio: number;
64
- };
65
- type NiceLocalFile = {
66
- file: File;
67
- name: string;
68
- size?: number;
69
- dimensions?: NiceFileDimensions;
70
- };
71
- type NiceRemoteFile = {
72
- id: string | number;
73
- name: string;
74
- url: string;
75
- size?: number;
76
- };
77
- type NiceSelectedFiles = NiceLocalFile | NiceRemoteFile;
78
- declare function isLocalFile(file: NiceSelectedFiles): file is NiceLocalFile;
79
- declare function isRemoteFile(file: NiceSelectedFiles): file is NiceRemoteFile;
80
-
81
- declare const niceDropzoneModes: readonly ["image", "file", "all"];
82
- type NiceDropzoneModes = (typeof niceDropzoneModes)[number];
83
- declare class NiceDropzone implements OnDestroy, ControlValueAccessor {
84
- readonly mode: _angular_core.InputSignal<"file" | "image" | "all">;
85
- readonly multiple: _angular_core.InputSignalWithTransform<boolean, any>;
86
- readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
87
- readonly accept: _angular_core.InputSignal<string[] | undefined>;
88
- readonly config: _angular_core.InputSignal<NiceDropzoneImageConfig | undefined>;
89
- readonly maxFileSize: _angular_core.InputSignal<NiceDropzoneFileSizeConfig | undefined>;
90
- protected readonly _elementRef: _angular_core.Signal<ElementRef<any> | undefined>;
91
- protected readonly _inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
92
- /**
93
- * Handles the lazy creation of the MatButton ripple.
94
- * Used to improve the initial load time of large applications.
95
- */
96
- protected readonly _rippleLoader: MatRippleLoader;
97
- protected readonly _translationKeys: NiceDropzoneTranslationKeyConfig;
98
- protected readonly files: _angular_core.WritableSignal<NiceSelectedFiles[]>;
99
- protected _disabled: boolean;
100
- private _onChange;
101
- private _value;
102
- constructor();
103
- ngOnDestroy(): void;
104
- writeValue(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void;
105
- registerOnChange(fn: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void): void;
106
- registerOnTouched(): void;
107
- setDisabledState(disabled: boolean): void;
108
- onFileChanged(event: Event): void;
109
- onFilesDropped(fileList: FileList): Promise<void>;
110
- onFileDelete(index: number): void;
111
- protected propagateChanges(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void;
112
- protected getImageDimension(file: File): Promise<NiceFileDimensions>;
113
- protected resetInput(): void;
114
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NiceDropzone, never>;
115
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NiceDropzone, "nice-dropzone", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
116
- }
117
-
118
- type NiceDropzoneOptions = {
119
- translationKeys: NiceDropzoneTranslationKeyConfig;
120
- };
121
-
122
- declare function provideDropzone(options?: NiceDropzoneOptions): Provider[];
123
-
124
- export { NiceDropzone, NiceDropzoneDirective, isLocalFile, isRemoteFile, niceDropzoneModes, provideDropzone };
125
- export type { NiceDropzoneFileSizeConfig, NiceDropzoneImageConfig, NiceDropzoneModes, NiceDropzoneOptions, NiceDropzoneTranslationKeyConfig, NiceFileDimensions, NiceLocalFile, NiceRemoteFile, NiceSelectedFiles };
1
+ export * from "./dropzone.directive";
2
+ export * from "./dropzone";
3
+ export * from "./config";
4
+ export * from "./models";
5
+ export * from "./options";
6
+ export * from "./provider";
@@ -0,0 +1,20 @@
1
+ export type NiceFileDimensions = {
2
+ width: number;
3
+ height: number;
4
+ ratio: number;
5
+ };
6
+ export type NiceLocalFile = {
7
+ file: File;
8
+ name: string;
9
+ size?: number;
10
+ dimensions?: NiceFileDimensions;
11
+ };
12
+ export type NiceRemoteFile = {
13
+ id: string | number;
14
+ name: string;
15
+ url: string;
16
+ size?: number;
17
+ };
18
+ export type NiceSelectedFiles = NiceLocalFile | NiceRemoteFile;
19
+ export declare function isLocalFile(file: NiceSelectedFiles): file is NiceLocalFile;
20
+ export declare function isRemoteFile(file: NiceSelectedFiles): file is NiceRemoteFile;
@@ -0,0 +1,4 @@
1
+ import { NiceDropzoneTranslationKeyConfig } from "./config";
2
+ export type NiceDropzoneOptions = {
3
+ translationKeys: NiceDropzoneTranslationKeyConfig;
4
+ };
@@ -0,0 +1,10 @@
1
+ import { PipeTransform } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class FileSizePipe implements PipeTransform {
4
+ private readonly units;
5
+ private readonly translater;
6
+ private readonly translationKeys;
7
+ transform(bytes: number | null | undefined, precision?: number): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileSizePipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<FileSizePipe, "niceFileSize", true>;
10
+ }
@@ -0,0 +1,14 @@
1
+ import { NiceDropzoneTranslationKeyConfig } from "../config";
2
+ import { NiceFileDimensions, NiceSelectedFiles } from "../models";
3
+ import * as i0 from "@angular/core";
4
+ export declare class NiceDropzoneFilePreview {
5
+ readonly file: import("@angular/core").InputSignal<NiceSelectedFiles>;
6
+ readonly mode: import("@angular/core").InputSignal<"file" | "image" | "all">;
7
+ protected readonly clickDelete: import("@angular/core").OutputEmitterRef<void>;
8
+ protected readonly isImage: import("@angular/core").Signal<boolean>;
9
+ protected readonly imageDimensions: import("@angular/core").Signal<NiceFileDimensions | null>;
10
+ protected readonly imageUrl: import("@angular/core").Signal<string>;
11
+ protected _translationKeys: NiceDropzoneTranslationKeyConfig;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceDropzoneFilePreview, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceDropzoneFilePreview, "nice-dropzone-file-preview", never, { "file": { "alias": "file"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": true; "isSignal": true; }; }, { "clickDelete": "clickDelete"; }, never, never, true, never>;
14
+ }
@@ -0,0 +1,3 @@
1
+ import { Provider } from "@angular/core";
2
+ import { NiceDropzoneOptions } from "./options";
3
+ export declare function provideDropzone(options?: NiceDropzoneOptions): Provider[];
@@ -6,14 +6,14 @@ import { NiceAsyncTypeahead } from '@recursyve/ngx-material-components/typeahead
6
6
  import { MatChipSet, MatChipRemove, MatChipRow } from '@angular/material/chips';
7
7
 
8
8
  class NiceChipListDirective {
9
- withItemList = input.required(...(ngDevMode ? [{ debugName: "withItemList" }] : []));
10
- reloadOnSelected = input(true, ...(ngDevMode ? [{ debugName: "reloadOnSelected" }] : []));
11
- separatorKeyboardCodes = input(["Enter"], ...(ngDevMode ? [{ debugName: "separatorKeyboardCodes" }] : []));
9
+ withItemList = input.required();
10
+ reloadOnSelected = input(true);
11
+ separatorKeyboardCodes = input(["Enter"]);
12
12
  elementRef = inject(ElementRef);
13
13
  injector = inject(Injector);
14
14
  asyncTypeahead = inject(NiceAsyncTypeahead, { optional: true });
15
15
  ngControl = inject(NgControl, { optional: true });
16
- values = signal([], ...(ngDevMode ? [{ debugName: "values" }] : []));
16
+ values = signal([]);
17
17
  propagateChanges;
18
18
  constructor() {
19
19
  if (this.ngControl) {
@@ -100,10 +100,10 @@ class NiceChipListDirective {
100
100
  const searchOptions = this.asyncTypeahead.searchOptions();
101
101
  this.asyncTypeahead.setSearchOptions({ ...(searchOptions ?? {}), ignore });
102
102
  }
103
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceChipListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
104
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: NiceChipListDirective, isStandalone: true, selector: "input[niceChipList], nice-async-typeahead[niceChipList]", inputs: { withItemList: { classPropertyName: "withItemList", publicName: "withItemList", isSignal: true, isRequired: true, transformFunction: null }, reloadOnSelected: { classPropertyName: "reloadOnSelected", publicName: "reloadOnSelected", isSignal: true, isRequired: false, transformFunction: null }, separatorKeyboardCodes: { classPropertyName: "separatorKeyboardCodes", publicName: "separatorKeyboardCodes", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 });
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceChipListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
104
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.10", type: NiceChipListDirective, isStandalone: true, selector: "input[niceChipList], nice-async-typeahead[niceChipList]", inputs: { withItemList: { classPropertyName: "withItemList", publicName: "withItemList", isSignal: true, isRequired: true, transformFunction: null }, reloadOnSelected: { classPropertyName: "reloadOnSelected", publicName: "reloadOnSelected", isSignal: true, isRequired: false, transformFunction: null }, separatorKeyboardCodes: { classPropertyName: "separatorKeyboardCodes", publicName: "separatorKeyboardCodes", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 });
105
105
  }
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceChipListDirective, decorators: [{
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceChipListDirective, decorators: [{
107
107
  type: Directive,
108
108
  args: [{
109
109
  selector: "input[niceChipList], nice-async-typeahead[niceChipList]"
@@ -114,10 +114,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
114
114
  }] } });
115
115
 
116
116
  class NiceChipListItemsClearIcon {
117
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceChipListItemsClearIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
118
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: NiceChipListItemsClearIcon, isStandalone: true, selector: "nice-chip-list-items-clear-icon", ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1 -1.41 1.42l-3.9 -3.9a0.25 0.25 0 0 0 -0.36 0l-3.9 3.9a1 1 0 1 1 -1.41 -1.42l3.9 -3.89a0.25 0.25 0 0 0 0 -0.36l-3.9 -3.9a1 1 0 0 1 1.41 -1.41l3.9 3.9a0.25 0.25 0 0 0 0.36 0l3.9 -3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a0.25 0.25 0 0 0 0 0.36Z\" fill=\"currentColor\" stroke-width=\"1\"></path>\n</svg>\n" });
117
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceChipListItemsClearIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
118
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: NiceChipListItemsClearIcon, isStandalone: true, selector: "nice-chip-list-items-clear-icon", ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1 -1.41 1.42l-3.9 -3.9a0.25 0.25 0 0 0 -0.36 0l-3.9 3.9a1 1 0 1 1 -1.41 -1.42l3.9 -3.89a0.25 0.25 0 0 0 0 -0.36l-3.9 -3.9a1 1 0 0 1 1.41 -1.41l3.9 3.9a0.25 0.25 0 0 0 0.36 0l3.9 -3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a0.25 0.25 0 0 0 0 0.36Z\" fill=\"currentColor\" stroke-width=\"1\"></path>\n</svg>\n" });
119
119
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceChipListItemsClearIcon, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceChipListItemsClearIcon, decorators: [{
121
121
  type: Component,
122
122
  args: [{ selector: "nice-chip-list-items-clear-icon", template: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1 -1.41 1.42l-3.9 -3.9a0.25 0.25 0 0 0 -0.36 0l-3.9 3.9a1 1 0 1 1 -1.41 -1.42l3.9 -3.89a0.25 0.25 0 0 0 0 -0.36l-3.9 -3.9a1 1 0 0 1 1.41 -1.41l3.9 3.9a0.25 0.25 0 0 0 0.36 0l3.9 -3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a0.25 0.25 0 0 0 0 0.36Z\" fill=\"currentColor\" stroke-width=\"1\"></path>\n</svg>\n" }]
123
123
  }] });
@@ -136,10 +136,10 @@ class NiceChipListItems {
136
136
  remove(index) {
137
137
  this.removeChip.emit(index);
138
138
  }
139
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceChipListItems, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: NiceChipListItems, isStandalone: true, selector: "nice-chip-list-items", outputs: { removeChip: "removeChip" }, ngImport: i0, template: "@if (items) {\n <mat-chip-set>\n @for (item of items(); track item) {\n <mat-chip-row [highlighted]=\"true\" (removed)=\"remove($index)\">\n @if (formatLabelFn) {\n {{ formatLabelFn(item) }}\n } @else {\n {{ item }}\n }\n\n <button matChipRemove>\n <nice-chip-list-items-clear-icon />\n </button>\n </mat-chip-row>\n }\n </mat-chip-set>\n}\n", styles: ["nice-chip-list-items-clear-icon{margin-top:-1px;width:16px;height:16px}\n"], dependencies: [{ kind: "component", type: MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "directive", type: MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: NiceChipListItemsClearIcon, selector: "nice-chip-list-items-clear-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceChipListItems, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: NiceChipListItems, isStandalone: true, selector: "nice-chip-list-items", outputs: { removeChip: "removeChip" }, ngImport: i0, template: "@if (items) {\n <mat-chip-set>\n @for (item of items(); track item) {\n <mat-chip-row [highlighted]=\"true\" (removed)=\"remove($index)\">\n @if (formatLabelFn) {\n {{ formatLabelFn(item) }}\n } @else {\n {{ item }}\n }\n\n <button matChipRemove>\n <nice-chip-list-items-clear-icon />\n </button>\n </mat-chip-row>\n }\n </mat-chip-set>\n}\n", styles: ["nice-chip-list-items-clear-icon{margin-top:-1px;width:16px;height:16px}\n"], dependencies: [{ kind: "component", type: MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "directive", type: MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: NiceChipListItemsClearIcon, selector: "nice-chip-list-items-clear-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
141
141
  }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceChipListItems, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceChipListItems, decorators: [{
143
143
  type: Component,
144
144
  args: [{ selector: "nice-chip-list-items", imports: [
145
145
  MatChipSet,
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-ngx-material-components-chip-list.mjs","sources":["../../../src/material-components/chip-list/chip-list.ts","../../../src/material-components/chip-list/icons/clear/chip-list-items-clear-icon.ts","../../../src/material-components/chip-list/icons/clear/chip-list-items-clear-icon.svg","../../../src/material-components/chip-list/items/chip-list-items.ts","../../../src/material-components/chip-list/items/chip-list-items.html","../../../src/material-components/chip-list/recursyve-ngx-material-components-chip-list.ts"],"sourcesContent":["import {\n Directive,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n OnInit,\n signal,\n untracked\n} from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport { ControlValueAccessor, NgControl } from \"@angular/forms\";\nimport { NiceAsyncTypeahead } from \"@recursyve/ngx-material-components/typeahead\";\nimport { NiceChipListItems } from \"./items/chip-list-items\";\n\n@Directive({\n selector: \"input[niceChipList], nice-async-typeahead[niceChipList]\"\n})\nexport class NiceChipListDirective<T> implements ControlValueAccessor, OnInit {\n public readonly withItemList = input.required<NiceChipListItems<T>>();\n public readonly reloadOnSelected = input<boolean>(true);\n public readonly separatorKeyboardCodes = input<string[]>([\"Enter\"]);\n\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n private readonly asyncTypeahead = inject<NiceAsyncTypeahead<T>>(NiceAsyncTypeahead, { optional: true });\n private readonly ngControl = inject<NgControl>(NgControl, { optional: true });\n\n private readonly values = signal<T[]>([]);\n\n private propagateChanges?: (_: T[]) => void;\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n effect(() => {\n const values = this.values();\n untracked(() => this.updateTypeaheadSearchOptions(values));\n });\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n public onKeyDown(event: KeyboardEvent): void {\n if (this.asyncTypeahead) {\n return;\n }\n\n if (!this.separatorKeyboardCodes().includes(event.code)) {\n return;\n }\n\n if (!this.elementRef.nativeElement.validity.valid) {\n return;\n }\n\n this.addValue(this.elementRef.nativeElement.value);\n this.elementRef.nativeElement.value = \"\";\n event.preventDefault();\n }\n\n public ngOnInit(): void {\n this.setupAsyncTypeahead();\n\n const parentElement = this.elementRef.nativeElement.parentElement;\n if (parentElement.classList.contains(\"mat-mdc-form-field-infix\")) {\n parentElement.style.alignItems = \"flex-start\";\n parentElement.style.flexDirection = \"column-reverse\";\n }\n\n const withItemList = this.withItemList();\n withItemList.setItemsReactivity(toObservable(this.values, { injector: this.injector }));\n withItemList.removeChip.subscribe((index) => {\n const values = [...this.values()];\n values.splice(index, 1);\n\n this.propagateChanges?.(values);\n this.values.set(values);\n });\n\n if (this.asyncTypeahead) {\n withItemList.setFormatLabel((item) => this.asyncTypeahead!.formatLabel(item));\n }\n }\n\n public writeValue(obj: T[] | null): void {\n if (!obj) {\n this.values.set([]);\n } else if (Array.isArray(obj)) {\n this.values.set([...obj]);\n }\n }\n\n public registerOnChange(fn: (_: T[]) => void): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(): void {\n return;\n }\n\n private setupAsyncTypeahead(): void {\n if (!this.asyncTypeahead) {\n return;\n }\n\n this.asyncTypeahead.selected\n .subscribe((value) => {\n if (!value) {\n return;\n }\n\n this.addValue(value);\n this.asyncTypeahead?.removeActiveValue();\n });\n }\n\n private addValue(value: T): void {\n const values = [...this.values()];\n if (values.includes(value)) {\n return;\n }\n\n values.push(value);\n this.propagateChanges?.(values);\n this.values.set(values);\n }\n\n private updateTypeaheadSearchOptions(ignore: T[]): void {\n if (!this.asyncTypeahead) {\n return;\n }\n\n const searchOptions = this.asyncTypeahead.searchOptions();\n this.asyncTypeahead.setSearchOptions({ ...(searchOptions ?? {}), ignore });\n }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-chip-list-items-clear-icon\",\n templateUrl: \"chip-list-items-clear-icon.svg\"\n})\nexport class NiceChipListItemsClearIcon {}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1 -1.41 1.42l-3.9 -3.9a0.25 0.25 0 0 0 -0.36 0l-3.9 3.9a1 1 0 1 1 -1.41 -1.42l3.9 -3.89a0.25 0.25 0 0 0 0 -0.36l-3.9 -3.9a1 1 0 0 1 1.41 -1.41l3.9 3.9a0.25 0.25 0 0 0 0.36 0l3.9 -3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a0.25 0.25 0 0 0 0 0.36Z\" fill=\"currentColor\" stroke-width=\"1\"></path>\n</svg>\n","import { ChangeDetectionStrategy, Component, inject, Injector, output, Signal } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { MatChipRemove, MatChipRow, MatChipSet } from \"@angular/material/chips\";\nimport { Observable } from \"rxjs\";\nimport { NiceChipListItemsClearIcon } from \"../icons/clear/chip-list-items-clear-icon\";\n\n@Component({\n selector: \"nice-chip-list-items\",\n templateUrl: \"./chip-list-items.html\",\n styleUrls: [\"./chip-list-items.scss\"],\n imports: [\n MatChipSet,\n MatChipRemove,\n MatChipRow,\n NiceChipListItemsClearIcon\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceChipListItems<T> {\n public readonly removeChip = output<number>();\n\n protected readonly injector = inject(Injector);\n\n public items?: Signal<T[]>;\n public formatLabelFn?: (value: T) => string;\n\n public setItemsReactivity(items$: Observable<T[]>): void {\n this.items = toSignal(items$, { injector: this.injector, initialValue: [] });\n }\n\n public setFormatLabel(fn: (value: T) => string): void {\n this.formatLabelFn = fn;\n }\n\n public remove(index: number): void {\n this.removeChip.emit(index);\n }\n}\n","@if (items) {\n <mat-chip-set>\n @for (item of items(); track item) {\n <mat-chip-row [highlighted]=\"true\" (removed)=\"remove($index)\">\n @if (formatLabelFn) {\n {{ formatLabelFn(item) }}\n } @else {\n {{ item }}\n }\n\n <button matChipRemove>\n <nice-chip-list-items-clear-icon />\n </button>\n </mat-chip-row>\n }\n </mat-chip-set>\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":"recursyve-ngx-material-components-chip-list.mjs","sources":["../../../src/material-components/chip-list/chip-list.ts","../../../src/material-components/chip-list/icons/clear/chip-list-items-clear-icon.ts","../../../src/material-components/chip-list/icons/clear/chip-list-items-clear-icon.svg","../../../src/material-components/chip-list/items/chip-list-items.ts","../../../src/material-components/chip-list/items/chip-list-items.html","../../../src/material-components/chip-list/recursyve-ngx-material-components-chip-list.ts"],"sourcesContent":["import {\n Directive,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n OnInit,\n signal,\n untracked\n} from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport { ControlValueAccessor, NgControl } from \"@angular/forms\";\nimport { NiceAsyncTypeahead } from \"@recursyve/ngx-material-components/typeahead\";\nimport { NiceChipListItems } from \"./items/chip-list-items\";\n\n@Directive({\n selector: \"input[niceChipList], nice-async-typeahead[niceChipList]\"\n})\nexport class NiceChipListDirective<T> implements ControlValueAccessor, OnInit {\n public readonly withItemList = input.required<NiceChipListItems<T>>();\n public readonly reloadOnSelected = input<boolean>(true);\n public readonly separatorKeyboardCodes = input<string[]>([\"Enter\"]);\n\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n private readonly asyncTypeahead = inject<NiceAsyncTypeahead<T>>(NiceAsyncTypeahead, { optional: true });\n private readonly ngControl = inject<NgControl>(NgControl, { optional: true });\n\n private readonly values = signal<T[]>([]);\n\n private propagateChanges?: (_: T[]) => void;\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n effect(() => {\n const values = this.values();\n untracked(() => this.updateTypeaheadSearchOptions(values));\n });\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n public onKeyDown(event: KeyboardEvent): void {\n if (this.asyncTypeahead) {\n return;\n }\n\n if (!this.separatorKeyboardCodes().includes(event.code)) {\n return;\n }\n\n if (!this.elementRef.nativeElement.validity.valid) {\n return;\n }\n\n this.addValue(this.elementRef.nativeElement.value);\n this.elementRef.nativeElement.value = \"\";\n event.preventDefault();\n }\n\n public ngOnInit(): void {\n this.setupAsyncTypeahead();\n\n const parentElement = this.elementRef.nativeElement.parentElement;\n if (parentElement.classList.contains(\"mat-mdc-form-field-infix\")) {\n parentElement.style.alignItems = \"flex-start\";\n parentElement.style.flexDirection = \"column-reverse\";\n }\n\n const withItemList = this.withItemList();\n withItemList.setItemsReactivity(toObservable(this.values, { injector: this.injector }));\n withItemList.removeChip.subscribe((index) => {\n const values = [...this.values()];\n values.splice(index, 1);\n\n this.propagateChanges?.(values);\n this.values.set(values);\n });\n\n if (this.asyncTypeahead) {\n withItemList.setFormatLabel((item) => this.asyncTypeahead!.formatLabel(item));\n }\n }\n\n public writeValue(obj: T[] | null): void {\n if (!obj) {\n this.values.set([]);\n } else if (Array.isArray(obj)) {\n this.values.set([...obj]);\n }\n }\n\n public registerOnChange(fn: (_: T[]) => void): void {\n this.propagateChanges = fn;\n }\n\n public registerOnTouched(): void {\n return;\n }\n\n private setupAsyncTypeahead(): void {\n if (!this.asyncTypeahead) {\n return;\n }\n\n this.asyncTypeahead.selected\n .subscribe((value) => {\n if (!value) {\n return;\n }\n\n this.addValue(value);\n this.asyncTypeahead?.removeActiveValue();\n });\n }\n\n private addValue(value: T): void {\n const values = [...this.values()];\n if (values.includes(value)) {\n return;\n }\n\n values.push(value);\n this.propagateChanges?.(values);\n this.values.set(values);\n }\n\n private updateTypeaheadSearchOptions(ignore: T[]): void {\n if (!this.asyncTypeahead) {\n return;\n }\n\n const searchOptions = this.asyncTypeahead.searchOptions();\n this.asyncTypeahead.setSearchOptions({ ...(searchOptions ?? {}), ignore });\n }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-chip-list-items-clear-icon\",\n templateUrl: \"chip-list-items-clear-icon.svg\"\n})\nexport class NiceChipListItemsClearIcon {}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1 -1.41 1.42l-3.9 -3.9a0.25 0.25 0 0 0 -0.36 0l-3.9 3.9a1 1 0 1 1 -1.41 -1.42l3.9 -3.89a0.25 0.25 0 0 0 0 -0.36l-3.9 -3.9a1 1 0 0 1 1.41 -1.41l3.9 3.9a0.25 0.25 0 0 0 0.36 0l3.9 -3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a0.25 0.25 0 0 0 0 0.36Z\" fill=\"currentColor\" stroke-width=\"1\"></path>\n</svg>\n","import { ChangeDetectionStrategy, Component, inject, Injector, output, Signal } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { MatChipRemove, MatChipRow, MatChipSet } from \"@angular/material/chips\";\nimport { Observable } from \"rxjs\";\nimport { NiceChipListItemsClearIcon } from \"../icons/clear/chip-list-items-clear-icon\";\n\n@Component({\n selector: \"nice-chip-list-items\",\n templateUrl: \"./chip-list-items.html\",\n styleUrls: [\"./chip-list-items.scss\"],\n imports: [\n MatChipSet,\n MatChipRemove,\n MatChipRow,\n NiceChipListItemsClearIcon\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NiceChipListItems<T> {\n public readonly removeChip = output<number>();\n\n protected readonly injector = inject(Injector);\n\n public items?: Signal<T[]>;\n public formatLabelFn?: (value: T) => string;\n\n public setItemsReactivity(items$: Observable<T[]>): void {\n this.items = toSignal(items$, { injector: this.injector, initialValue: [] });\n }\n\n public setFormatLabel(fn: (value: T) => string): void {\n this.formatLabelFn = fn;\n }\n\n public remove(index: number): void {\n this.removeChip.emit(index);\n }\n}\n","@if (items) {\n <mat-chip-set>\n @for (item of items(); track item) {\n <mat-chip-row [highlighted]=\"true\" (removed)=\"remove($index)\">\n @if (formatLabelFn) {\n {{ formatLabelFn(item) }}\n } @else {\n {{ item }}\n }\n\n <button matChipRemove>\n <nice-chip-list-items-clear-icon />\n </button>\n </mat-chip-row>\n }\n </mat-chip-set>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}