@recursyve/ngx-material-components 19.0.0-beta.20 → 19.0.0-beta.21
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.
- package/chip-list/chip-list.d.ts +26 -0
- package/chip-list/icons/clear/chip-list-items-clear-icon.d.ts +5 -0
- package/chip-list/index.d.ts +2 -41
- package/chip-list/items/chip-list-items.d.ts +14 -0
- package/common/index.d.ts +4 -24
- package/common/provider.d.ts +3 -0
- package/common/translater/constant.d.ts +2 -0
- package/common/translater/options.d.ts +7 -0
- package/common/translater/translate-pipe.d.ts +8 -0
- package/common/translater/translater.d.ts +1 -0
- package/dropzone/config.d.ts +42 -0
- package/dropzone/constant.d.ts +2 -0
- package/dropzone/dropzone.d.ts +42 -0
- package/dropzone/dropzone.directive.d.ts +12 -0
- package/dropzone/icons/delete/delete-icon.component.d.ts +5 -0
- package/dropzone/icons/file/file-icon.component.d.ts +5 -0
- package/dropzone/icons/image/image-icon.component.d.ts +5 -0
- package/dropzone/index.d.ts +6 -125
- package/dropzone/models.d.ts +20 -0
- package/dropzone/options.d.ts +4 -0
- package/dropzone/pipes/file-size.pipe.d.ts +10 -0
- package/dropzone/preview/file-preview.d.ts +14 -0
- package/dropzone/provider.d.ts +3 -0
- package/fesm2022/recursyve-ngx-material-components-chip-list.mjs +13 -13
- package/fesm2022/recursyve-ngx-material-components-chip-list.mjs.map +1 -1
- package/fesm2022/recursyve-ngx-material-components-common.mjs +3 -3
- package/fesm2022/recursyve-ngx-material-components-common.mjs.map +1 -1
- package/fesm2022/recursyve-ngx-material-components-dropzone.mjs +35 -35
- package/fesm2022/recursyve-ngx-material-components-dropzone.mjs.map +1 -1
- package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs +6 -6
- package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs.map +1 -1
- package/fesm2022/recursyve-ngx-material-components-loading.mjs +10 -10
- package/fesm2022/recursyve-ngx-material-components-loading.mjs.map +1 -1
- package/fesm2022/recursyve-ngx-material-components-typeahead.mjs +49 -46
- package/fesm2022/recursyve-ngx-material-components-typeahead.mjs.map +1 -1
- package/form-field-error/constant.d.ts +3 -0
- package/form-field-error/error-transformer.d.ts +13 -0
- package/form-field-error/form-field-error.d.ts +8 -0
- package/form-field-error/form-field-error.directive.d.ts +17 -0
- package/form-field-error/index.d.ts +4 -53
- package/form-field-error/options.d.ts +9 -0
- package/form-field-error/provider.d.ts +3 -0
- package/index.d.ts +1 -3
- package/loading/constant.d.ts +2 -0
- package/loading/index.d.ts +3 -31
- package/loading/loading-spinner.d.ts +9 -0
- package/loading/loading.d.ts +13 -0
- package/loading/options.d.ts +4 -0
- package/loading/provider.d.ts +3 -0
- package/package.json +7 -7
- package/typeahead/async-typeahead.d.ts +34 -0
- package/typeahead/constants.d.ts +2 -0
- package/typeahead/icons/search/typeahead-search-icon.d.ts +5 -0
- package/typeahead/index.d.ts +4 -216
- package/typeahead/provider.d.ts +3 -0
- package/typeahead/providers/async-typeahead.provider.d.ts +11 -0
- package/typeahead/providers/async-typeahead.service.d.ts +48 -0
- package/typeahead/providers/index.d.ts +2 -0
- package/typeahead/typeahead-base.d.ts +111 -0
- 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
|
+
}
|
package/chip-list/index.d.ts
CHANGED
|
@@ -1,41 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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,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,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
|
+
}
|
package/dropzone/index.d.ts
CHANGED
|
@@ -1,125 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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,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
|
+
}
|
|
@@ -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(
|
|
10
|
-
reloadOnSelected = input(true
|
|
11
|
-
separatorKeyboardCodes = input(["Enter"]
|
|
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([]
|
|
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: "
|
|
104
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
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: "
|
|
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: "
|
|
118
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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: "
|
|
140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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":";;;;;;;MAoBa,qBAAqB,CAAA;AACd,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAAwB;AACrD,IAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,4DAAC;AACvC,IAAA,sBAAsB,GAAG,KAAK,CAAW,CAAC,OAAO,CAAC,kEAAC;AAElD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,cAAc,GAAG,MAAM,CAAwB,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtF,SAAS,GAAG,MAAM,CAAY,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE5D,IAAA,MAAM,GAAG,MAAM,CAAM,EAAE,kDAAC;AAEjC,IAAA,gBAAgB;AAExB,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACvC;QAEA,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,SAAS,CAAC,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC9D,QAAA,CAAC,CAAC;IACN;AAGO,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrD;QACJ;QAEA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC/C;QACJ;QAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACxC,KAAK,CAAC,cAAc,EAAE;IAC1B;IAEO,QAAQ,GAAA;QACX,IAAI,CAAC,mBAAmB,EAAE;QAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa;QACjE,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE;AAC9D,YAAA,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY;AAC7C,YAAA,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,gBAAgB;QACxD;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvF,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACxC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACjC,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAEvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjF;IACJ;AAEO,IAAA,UAAU,CAAC,GAAe,EAAA;QAC7B,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7B;IACJ;AAEO,IAAA,gBAAgB,CAAC,EAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC9B;IAEO,iBAAiB,GAAA;QACpB;IACJ;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB;QACJ;QAEA,IAAI,CAAC,cAAc,CAAC;AACf,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACjB,IAAI,CAAC,KAAK,EAAE;gBACR;YACJ;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE;AAC5C,QAAA,CAAC,CAAC;IACV;AAEQ,IAAA,QAAQ,CAAC,KAAQ,EAAA;QACrB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACjC,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACxB;QACJ;AAEA,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3B;AAEQ,IAAA,4BAA4B,CAAC,MAAW,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB;QACJ;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,IAAI,aAAa,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9E;uGAtHS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;wDA2BU,SAAS,EAAA,CAAA;sBADf,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCvC1B,0BAA0B,CAAA;uGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,2FCNvC,ubAGA,EAAA,CAAA;;2FDGa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACI,iCAAiC,EAAA,QAAA,EAAA,ubAAA,EAAA;;;MEelC,iBAAiB,CAAA;IACV,UAAU,GAAG,MAAM,EAAU;AAE1B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEvC,IAAA,KAAK;AACL,IAAA,aAAa;AAEb,IAAA,kBAAkB,CAAC,MAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAChF;AAEO,IAAA,cAAc,CAAC,EAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IAC3B;AAEO,IAAA,MAAM,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;uGAlBS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB9B,qgBAiBA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNQ,UAAU,mGACV,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,UAAU,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,0BAA0B,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIrB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAGvB;wBACL,UAAU;wBACV,aAAa;wBACb,UAAU;wBACV;qBACH,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qgBAAA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA;;;AEhBnD;;AAEG;;;;"}
|
|
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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"}
|