@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
|
@@ -17,10 +17,10 @@ class NiceTranslatePipe {
|
|
|
17
17
|
transform(key, params) {
|
|
18
18
|
return this.translater(key, params);
|
|
19
19
|
}
|
|
20
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
21
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceTranslatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
21
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: NiceTranslatePipe, isStandalone: true, name: "niceTranslate" });
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceTranslatePipe, decorators: [{
|
|
24
24
|
type: Pipe,
|
|
25
25
|
args: [{
|
|
26
26
|
name: "niceTranslate"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursyve-ngx-material-components-common.mjs","sources":["../../../src/material-components/common/translater/constant.ts","../../../src/material-components/common/provider.ts","../../../src/material-components/common/translater/translate-pipe.ts","../../../src/material-components/common/index.ts","../../../src/material-components/common/recursyve-ngx-material-components-common.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_COMPONENTS_TRANSLATER = new InjectionToken(\"nice_components_translater\");\n","import { Provider } from \"@angular/core\";\nimport { NICE_COMPONENTS_TRANSLATER } from \"./translater/constant\";\nimport { NiceTranslaterOptions } from \"./translater/options\";\n\nexport function provideNiceComponents(options: NiceTranslaterOptions): Provider[] {\n return [\n { \n provide: NICE_COMPONENTS_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { NICE_COMPONENTS_TRANSLATER } from \"./constant\";\nimport { NiceTranslater } from \"./translater\";\n\n@Pipe({\n name: \"niceTranslate\"\n})\nexport class NiceTranslatePipe implements PipeTransform {\n private readonly translater = inject<NiceTranslater>(NICE_COMPONENTS_TRANSLATER);\n\n public transform(key: string, params?: Record<string, string>): string {\n return this.translater(key, params);\n }\n}\n","/*\n * Public API Surface of dropzone\n */\n\nexport * from \"./provider\";\nexport * from \"./translater/constant\";\nexport * from \"./translater/translate-pipe\";\nexport * from \"./translater/translater\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAEa,0BAA0B,GAAG,IAAI,cAAc,CAAC,4BAA4B;;ACEnF,SAAU,qBAAqB,CAAC,OAA8B,EAAA;IAChE,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAE,0BAA0B;YACnC,GAAG,OAAO,CAAC;AACd;KACJ;AACL;;MCJa,iBAAiB,CAAA;AACT,IAAA,UAAU,GAAG,MAAM,CAAiB,0BAA0B,CAAC;IAEzE,SAAS,CAAC,GAAW,EAAE,MAA+B,EAAA;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"recursyve-ngx-material-components-common.mjs","sources":["../../../src/material-components/common/translater/constant.ts","../../../src/material-components/common/provider.ts","../../../src/material-components/common/translater/translate-pipe.ts","../../../src/material-components/common/index.ts","../../../src/material-components/common/recursyve-ngx-material-components-common.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_COMPONENTS_TRANSLATER = new InjectionToken(\"nice_components_translater\");\n","import { Provider } from \"@angular/core\";\nimport { NICE_COMPONENTS_TRANSLATER } from \"./translater/constant\";\nimport { NiceTranslaterOptions } from \"./translater/options\";\n\nexport function provideNiceComponents(options: NiceTranslaterOptions): Provider[] {\n return [\n { \n provide: NICE_COMPONENTS_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { NICE_COMPONENTS_TRANSLATER } from \"./constant\";\nimport { NiceTranslater } from \"./translater\";\n\n@Pipe({\n name: \"niceTranslate\"\n})\nexport class NiceTranslatePipe implements PipeTransform {\n private readonly translater = inject<NiceTranslater>(NICE_COMPONENTS_TRANSLATER);\n\n public transform(key: string, params?: Record<string, string>): string {\n return this.translater(key, params);\n }\n}\n","/*\n * Public API Surface of dropzone\n */\n\nexport * from \"./provider\";\nexport * from \"./translater/constant\";\nexport * from \"./translater/translate-pipe\";\nexport * from \"./translater/translater\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAEa,0BAA0B,GAAG,IAAI,cAAc,CAAC,4BAA4B;;ACEnF,SAAU,qBAAqB,CAAC,OAA8B,EAAA;IAChE,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAE,0BAA0B;YACnC,GAAG,OAAO,CAAC;AACd;KACJ;AACL;;MCJa,iBAAiB,CAAA;AACT,IAAA,UAAU,GAAG,MAAM,CAAiB,0BAA0B,CAAC;IAEzE,SAAS,CAAC,GAAW,EAAE,MAA+B,EAAA;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;;wGAJ9B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACND;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -34,10 +34,10 @@ class NiceDropzoneDirective {
|
|
|
34
34
|
this.filesDropped.emit(files);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
38
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
38
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.10", type: NiceDropzoneDirective, isStandalone: true, selector: "[niceDropzone]", outputs: { filesDropped: "filesDropped", files: "files" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "ondrop($event)" }, properties: { "class.file-over": "this.fileOver" } }, ngImport: i0 });
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneDirective, decorators: [{
|
|
41
41
|
type: Directive,
|
|
42
42
|
args: [{
|
|
43
43
|
selector: "[niceDropzone]",
|
|
@@ -62,19 +62,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
|
|
|
62
62
|
const NICE_DROPZONE_TRANSLATION_KEYS = new InjectionToken("nice_dropzone_translation_keys");
|
|
63
63
|
|
|
64
64
|
class NiceDropzoneFileIcon {
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
65
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneFileIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: NiceDropzoneFileIcon, isStandalone: true, selector: "nice-dropzone-file-icon", ngImport: i0, template: "<svg fill=\"none\" viewBox=\"-1.25 -1.25 40 40\" height=\"40\" width=\"40\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.859375 36.328125h25.78125c1.294375 0 2.34375 -1.049375 2.34375 -2.34375V12.6890625c-0.00015625 -0.621171875 -0.246875 -1.2168750000000002 -0.6859375 -1.65625l-9.175 -9.175c-0.439375 -0.43909062499999996 -1.03515625 -0.6858046875 -1.65625 -0.6859375H5.859375c-1.2765624999999998 0 -2.34375 1.0671875000000002 -2.34375 2.34375v30.46875c0 1.2765624999999998 1.0671875000000002 2.34375 2.34375 2.34375Z\" stroke-width=\"2.5\"></path>\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M33.984375 12.890625h-9.375c-0.6215625 0 -1.2178125 -0.24693750000000003 -1.65734375 -0.68646875S22.265625 11.16846875 22.265625 10.546875v-9.375\" stroke-width=\"2.5\"></path>\n</svg>" });
|
|
67
67
|
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneFileIcon, decorators: [{
|
|
69
69
|
type: Component,
|
|
70
70
|
args: [{ selector: "nice-dropzone-file-icon", template: "<svg fill=\"none\" viewBox=\"-1.25 -1.25 40 40\" height=\"40\" width=\"40\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.859375 36.328125h25.78125c1.294375 0 2.34375 -1.049375 2.34375 -2.34375V12.6890625c-0.00015625 -0.621171875 -0.246875 -1.2168750000000002 -0.6859375 -1.65625l-9.175 -9.175c-0.439375 -0.43909062499999996 -1.03515625 -0.6858046875 -1.65625 -0.6859375H5.859375c-1.2765624999999998 0 -2.34375 1.0671875000000002 -2.34375 2.34375v30.46875c0 1.2765624999999998 1.0671875000000002 2.34375 2.34375 2.34375Z\" stroke-width=\"2.5\"></path>\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M33.984375 12.890625h-9.375c-0.6215625 0 -1.2178125 -0.24693750000000003 -1.65734375 -0.68646875S22.265625 11.16846875 22.265625 10.546875v-9.375\" stroke-width=\"2.5\"></path>\n</svg>" }]
|
|
71
71
|
}] });
|
|
72
72
|
|
|
73
73
|
class NiceDropzoneImageIcon {
|
|
74
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
75
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
74
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneImageIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: NiceDropzoneImageIcon, isStandalone: true, selector: "nice-dropzone-image-icon", ngImport: i0, template: "<svg width=\"40\" height=\"43\" viewBox=\"0 0 40 43\" fill=\"none\">\n <path d=\"M29.333 1.5H2.66634C1.92996 1.5 1.33301 2.09695 1.33301 2.83333V33.0556C1.33301 33.7919 1.92996 34.3889 2.66634 34.3889H29.333C30.0694 34.3889 30.6663 33.7919 30.6663 33.0556V2.83333C30.6663 2.09695 30.0694 1.5 29.333 1.5Z\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M38.6667 11.2778V40.1667C38.6621 40.5189 38.5201 40.8554 38.2711 41.1044C38.022 41.3535 37.6855 41.4954 37.3333 41.5001H12\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M30.6663 27.2778H1.33301\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.55566 27.2778L16.8001 14.0689C17.0316 13.7366 17.3357 13.4614 17.6895 13.2642C18.0432 13.0669 18.4372 12.9528 18.8415 12.9306C19.2459 12.9083 19.6501 12.9784 20.0233 13.1356C20.3965 13.2928 20.7291 13.533 20.9957 13.8378L30.6668 25.0556\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.33268 6.8335C9.8601 6.8335 10.3757 6.98989 10.8142 7.28291C11.2527 7.57593 11.5945 7.9924 11.7964 8.47967C11.9982 8.96694 12.051 9.50312 11.9481 10.0204C11.8452 10.5377 11.5912 11.0128 11.2183 11.3858C10.8454 11.7587 10.3702 12.0127 9.85292 12.1156C9.33564 12.2185 8.79946 12.1657 8.31219 11.9638C7.82492 11.762 7.40845 11.4202 7.11543 10.9817C6.82241 10.5432 6.66602 10.0276 6.66602 9.50016C6.66602 8.79292 6.94697 8.11464 7.44706 7.61454C7.94716 7.11445 8.62544 6.8335 9.33268 6.8335\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n" });
|
|
76
76
|
}
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneImageIcon, decorators: [{
|
|
78
78
|
type: Component,
|
|
79
79
|
args: [{ selector: "nice-dropzone-image-icon", template: "<svg width=\"40\" height=\"43\" viewBox=\"0 0 40 43\" fill=\"none\">\n <path d=\"M29.333 1.5H2.66634C1.92996 1.5 1.33301 2.09695 1.33301 2.83333V33.0556C1.33301 33.7919 1.92996 34.3889 2.66634 34.3889H29.333C30.0694 34.3889 30.6663 33.7919 30.6663 33.0556V2.83333C30.6663 2.09695 30.0694 1.5 29.333 1.5Z\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M38.6667 11.2778V40.1667C38.6621 40.5189 38.5201 40.8554 38.2711 41.1044C38.022 41.3535 37.6855 41.4954 37.3333 41.5001H12\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M30.6663 27.2778H1.33301\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.55566 27.2778L16.8001 14.0689C17.0316 13.7366 17.3357 13.4614 17.6895 13.2642C18.0432 13.0669 18.4372 12.9528 18.8415 12.9306C19.2459 12.9083 19.6501 12.9784 20.0233 13.1356C20.3965 13.2928 20.7291 13.533 20.9957 13.8378L30.6668 25.0556\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.33268 6.8335C9.8601 6.8335 10.3757 6.98989 10.8142 7.28291C11.2527 7.57593 11.5945 7.9924 11.7964 8.47967C11.9982 8.96694 12.051 9.50312 11.9481 10.0204C11.8452 10.5377 11.5912 11.0128 11.2183 11.3858C10.8454 11.7587 10.3702 12.0127 9.85292 12.1156C9.33564 12.2185 8.79946 12.1657 8.31219 11.9638C7.82492 11.762 7.40845 11.4202 7.11543 10.9817C6.82241 10.5432 6.66602 10.0276 6.66602 9.50016C6.66602 8.79292 6.94697 8.11464 7.44706 7.61454C7.94716 7.11445 8.62544 6.8335 9.33268 6.8335\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n" }]
|
|
80
80
|
}] });
|
|
@@ -101,10 +101,10 @@ class FileSizePipe {
|
|
|
101
101
|
const unit = this.translater(this.translationKeys.size.units[this.units[boundedUnitIndex]]);
|
|
102
102
|
return `${size.toFixed(precision)} ${unit}`;
|
|
103
103
|
}
|
|
104
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
105
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
104
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: FileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
105
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: FileSizePipe, isStandalone: true, name: "niceFileSize" });
|
|
106
106
|
}
|
|
107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: FileSizePipe, decorators: [{
|
|
108
108
|
type: Pipe,
|
|
109
109
|
args: [{
|
|
110
110
|
name: "niceFileSize"
|
|
@@ -112,38 +112,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
|
|
|
112
112
|
}] });
|
|
113
113
|
|
|
114
114
|
class NiceDropzoneDeleteIcon {
|
|
115
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
116
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
115
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneDeleteIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
116
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: NiceDropzoneDeleteIcon, isStandalone: true, selector: "nice-dropzone-delete-icon", ngImport: i0, template: "<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\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>" });
|
|
117
117
|
}
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneDeleteIcon, decorators: [{
|
|
119
119
|
type: Component,
|
|
120
120
|
args: [{ selector: "nice-dropzone-delete-icon", template: "<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\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>" }]
|
|
121
121
|
}] });
|
|
122
122
|
|
|
123
123
|
class NiceDropzoneFilePreview {
|
|
124
|
-
file = input.required(
|
|
125
|
-
mode = input.required(
|
|
124
|
+
file = input.required();
|
|
125
|
+
mode = input.required();
|
|
126
126
|
clickDelete = output();
|
|
127
|
-
isImage = computed(() => this.mode() === "image"
|
|
127
|
+
isImage = computed(() => this.mode() === "image");
|
|
128
128
|
imageDimensions = computed(() => {
|
|
129
129
|
const file = this.file();
|
|
130
130
|
if (isLocalFile(file)) {
|
|
131
131
|
return file.dimensions ?? null;
|
|
132
132
|
}
|
|
133
133
|
return null;
|
|
134
|
-
}
|
|
134
|
+
});
|
|
135
135
|
imageUrl = computed(() => {
|
|
136
136
|
const file = this.file();
|
|
137
137
|
if (isLocalFile(file)) {
|
|
138
138
|
return URL.createObjectURL(file.file);
|
|
139
139
|
}
|
|
140
140
|
return file.url;
|
|
141
|
-
}
|
|
141
|
+
});
|
|
142
142
|
_translationKeys = inject(NICE_DROPZONE_TRANSLATION_KEYS);
|
|
143
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
144
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
143
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneFilePreview, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: NiceDropzoneFilePreview, isStandalone: true, selector: "nice-dropzone-file-preview", inputs: { file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { clickDelete: "clickDelete" }, host: { styleAttribute: "flex: 1 1 auto;" }, ngImport: i0, template: "<div class=\"nice-dropzone-preview\">\n @if (isImage()) {\n <img class=\"nice-dropzone-preview-image\" alt=\"\" draggable=\"false\" [src]=\"imageUrl()\" />\n } @else {\n <div class=\"nice-dropzone-preview-file\">\n <nice-dropzone-file-icon />\n </div>\n }\n\n <div class=\"nice-dropzone-preview-file-info\">\n <span class=\"mat-body-medium\">{{ file().name }}</span>\n\n @if (imageDimensions(); as dimension) {\n <span class=\"mat-label-medium\">\n {{ `${dimension.width}x${dimension.height}` }} {{ _translationKeys.ratio.pixels | niceTranslate }}\n </span>\n }\n\n @if (file().size; as size) {\n <span class=\"mat-label-medium\">{{ size | niceFileSize }}</span>\n }\n </div>\n\n <div class=\"nice-dropzone-preview-actions\">\n <button class=\"nice-dropzone-preview-actions-delete\" (click)=\"$event.stopPropagation(); clickDelete.emit()\">\n <nice-dropzone-delete-icon />\n </button>\n </div>\n</div>\n", styles: [".nice-dropzone-preview{position:relative;display:flex;align-items:center;justify-content:center;flex:1 1 auto;gap:32px;height:100px;padding-top:12px;padding-bottom:12px;border-style:solid;border-radius:var(--nice-dropzone-shape, 8px);border-width:var(--nice-dropzone-border-width, 1px);border-color:var(--nice-dropzone-border-color, var(--mat-sys-primary))}.nice-dropzone-preview .nice-dropzone-preview-image{max-height:100%;max-width:min(200px,50%);-webkit-user-select:none;user-select:none}.nice-dropzone-preview .nice-dropzone-preview-file{color:var(--mat-sys-primary)}.nice-dropzone-preview .nice-dropzone-preview-file-info{display:flex;flex-direction:column;gap:4px;max-width:min(400px,40%);-webkit-user-select:none;user-select:none}.nice-dropzone-preview .nice-dropzone-preview-actions{position:absolute;width:24px;height:24px;background-color:var(--mat-sys-on-primary);border-radius:50%;top:-12px;right:-12px;opacity:0;transition:opacity .1s ease-in-out}.nice-dropzone-preview .nice-dropzone-preview-actions .nice-dropzone-preview-actions-delete{background-color:transparent;color:var(--mat-sys-primary);border:none;cursor:pointer;padding:0}.nice-dropzone-preview:hover .nice-dropzone-preview-actions,.nice-dropzone-preview:focus .nice-dropzone-preview-actions{opacity:1}\n"], dependencies: [{ kind: "component", type: NiceDropzoneDeleteIcon, selector: "nice-dropzone-delete-icon" }, { kind: "pipe", type: NiceTranslatePipe, name: "niceTranslate" }, { kind: "pipe", type: FileSizePipe, name: "niceFileSize" }, { kind: "component", type: NiceDropzoneFileIcon, selector: "nice-dropzone-file-icon" }] });
|
|
145
145
|
}
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzoneFilePreview, decorators: [{
|
|
147
147
|
type: Component,
|
|
148
148
|
args: [{ selector: "nice-dropzone-file-preview", imports: [NiceDropzoneDeleteIcon, NiceTranslatePipe, FileSizePipe, NiceDropzoneFileIcon], host: {
|
|
149
149
|
style: "flex: 1 1 auto;"
|
|
@@ -152,21 +152,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
|
|
|
152
152
|
|
|
153
153
|
const niceDropzoneModes = ["image", "file", "all"];
|
|
154
154
|
class NiceDropzone {
|
|
155
|
-
mode = input("all"
|
|
156
|
-
multiple = input(false,
|
|
157
|
-
disabled = input(false,
|
|
158
|
-
accept = input(
|
|
159
|
-
config = input(
|
|
160
|
-
maxFileSize = input(
|
|
161
|
-
_elementRef = viewChild("element",
|
|
162
|
-
_inputRef = viewChild("fileInput"
|
|
155
|
+
mode = input("all");
|
|
156
|
+
multiple = input(false, { transform: coerceBooleanProperty });
|
|
157
|
+
disabled = input(false, { transform: coerceBooleanProperty });
|
|
158
|
+
accept = input();
|
|
159
|
+
config = input();
|
|
160
|
+
maxFileSize = input();
|
|
161
|
+
_elementRef = viewChild("element", { read: ElementRef });
|
|
162
|
+
_inputRef = viewChild("fileInput");
|
|
163
163
|
/**
|
|
164
164
|
* Handles the lazy creation of the MatButton ripple.
|
|
165
165
|
* Used to improve the initial load time of large applications.
|
|
166
166
|
*/
|
|
167
167
|
_rippleLoader = inject(MatRippleLoader);
|
|
168
168
|
_translationKeys = inject(NICE_DROPZONE_TRANSLATION_KEYS);
|
|
169
|
-
files = signal([]
|
|
169
|
+
files = signal([]);
|
|
170
170
|
_disabled = false;
|
|
171
171
|
_onChange;
|
|
172
172
|
_value = null;
|
|
@@ -283,8 +283,8 @@ class NiceDropzone {
|
|
|
283
283
|
}
|
|
284
284
|
input.nativeElement.value = "";
|
|
285
285
|
}
|
|
286
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
287
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
286
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzone, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
287
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: NiceDropzone, isStandalone: true, selector: "nice-dropzone", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
288
288
|
{
|
|
289
289
|
provide: NG_VALUE_ACCESSOR,
|
|
290
290
|
useExisting: forwardRef(() => NiceDropzone),
|
|
@@ -292,7 +292,7 @@ class NiceDropzone {
|
|
|
292
292
|
}
|
|
293
293
|
], viewQueries: [{ propertyName: "_elementRef", first: true, predicate: ["element"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_inputRef", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"nice-dropzone-container\"\n>\n <div\n #element\n role=\"none\"\n class=\"nice-dropzone\"\n [class.nice-dropzone-disabled]=\"_disabled\"\n [class.nice-dropzone-multiple]=\"multiple()\"\n [class.nice-dropzone-single]=\"!multiple()\"\n [class.nice-dropzone-image]=\"mode() === 'image'\"\n [class.nice-dropzone-file]=\"mode() === 'file'\"\n [class.nice-dropzone-all]=\"mode() === 'all'\"\n [class.nice-dropzone-selected]=\"files().length > 0\"\n\n niceDropzone\n (filesDropped)=\"onFilesDropped($event)\"\n (click)=\"fileInput.click()\"\n (keyup.enter)=\"fileInput.click()\"\n >\n <div class=\"nice-dropzone-ripple\"></div>\n\n @if (multiple() || (!multiple() && !files().length)) {\n <div class=\"nice-dropzone-placeholder\">\n <div class=\"nice-dropzone-icon\">\n @if (mode() === \"image\") {\n <nice-dropzone-image-icon />\n } @else {\n <nice-dropzone-file-icon />\n }\n </div>\n\n <div class=\"nice-dropzone-content\">\n <span class=\"nice-dropzone-content-title\">\n @if (mode() === \"image\") {\n @if (multiple()) {\n {{ _translationKeys.upload.images | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.image | niceTranslate }}\n }\n } @else {\n @if (multiple()) {\n {{ _translationKeys.upload.files | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.file | niceTranslate }}\n }\n }\n </span>\n\n <div class=\"nice-dropzone-content-description\">\n @if (accept()?.length) {\n <span>\n {{ _translationKeys.format.label | niceTranslate }}: \n\n <span>\n {{ accept()?.join(\", \") }}\n </span>\n </span>\n }\n\n @if (mode() === \"image\" && config()?.recommendedSize; as recommendedSize) {\n <span>\n {{ _translationKeys.ratio.label | niceTranslate }}: \n\n <span>{{ recommendedSize.width }}x{{ recommendedSize.height }} {{ _translationKeys.ratio.pixels | niceTranslate }}</span>\n </span>\n }\n\n @if (maxFileSize(); as maxFileSize) {\n <span>\n {{ _translationKeys.size.label | niceTranslate }}: \n\n <span>{{ maxFileSize.size }} {{ _translationKeys.size.units[maxFileSize.unit] | niceTranslate }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n } @else {\n <nice-dropzone-file-preview [file]=\"files()[0]\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete(0)\" />\n }\n </div>\n\n @if (multiple()) {\n <div class=\"nice-dropzone-multiple-files-preview\">\n @for (file of files(); track file) {\n <nice-dropzone-file-preview [file]=\"file\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete($index)\" />\n }\n </div>\n }\n</div>\n\n<input #fileInput style=\"display: none;\" type=\"file\" [accept]=\"accept()\" [multiple]=\"multiple()\" (change)=\"onFileChanged($event)\" />\n", styles: [".nice-dropzone-container{--nice-dropzone-ripple-color: color-mix(in srgb, var(--mat-sys-primary) 10%, transparent);--mat-ripple-color: var(--nice-dropzone-ripple-color)}.nice-dropzone-container .nice-dropzone{position:relative;display:flex;justify-content:center;place-items:center;cursor:pointer;min-height:124px;border-radius:var(--nice-dropzone-shape, 8px)}.nice-dropzone-container .nice-dropzone.nice-dropzone-single:not(.nice-dropzone-selected),.nice-dropzone-container .nice-dropzone.nice-dropzone-multiple{border-style:dashed;border-width:var(--nice-dropzone-border-width, 1px);border-color:var(--nice-dropzone-border-color, var(--mat-sys-primary))}.nice-dropzone-container .nice-dropzone .nice-dropzone-placeholder{display:flex;justify-content:center;place-items:center;gap:32px}.nice-dropzone-container .nice-dropzone .nice-dropzone-icon{color:var(--nice-dropzone-icon-color, var(--mat-sys-primary))}.nice-dropzone-container .nice-dropzone .nice-dropzone-content{-webkit-user-select:none;user-select:none;color:var(--nice-dropzone-text-color, var(--mat-sys-primary))}.nice-dropzone-container .nice-dropzone .nice-dropzone-content .nice-dropzone-content-title{font-size:var(--nice-dropzone-content-title-font-size, 18px);font-weight:var(--nice-dropzone-content-title-font-weight, 600);line-height:var(--nice-dropzone-content-title-line-height, 22px)}.nice-dropzone-container .nice-dropzone .nice-dropzone-content .nice-dropzone-content-description{padding-top:4px;display:flex;flex-direction:column;gap:4px;font-size:var(--nice-dropzone-content-description-font-size, 14px);font-weight:var(--nice-dropzone-content-description-font-weight, 400);line-height:var(--nice-dropzone-content-description-line-height, 16px)}.nice-dropzone-container .nice-dropzone .nice-dropzone-ripple,.nice-dropzone-container .nice-dropzone .nice-dropzone-ripple:before{inset:0;position:absolute;pointer-events:none;border-radius:inherit}.nice-dropzone-container .nice-dropzone .nice-dropzone-ripple{overflow:hidden}.nice-dropzone-container .nice-dropzone .mat-ripple-element{background-color:var(--nice-dropzone-ripple-color)}.nice-dropzone-container .nice-dropzone:hover{background-color:var(--nice-dropzone-hover-color, color-mix(in srgb, var(--mat-sys-primary) 20%, transparent))}.nice-dropzone-container .nice-dropzone.nice-dropzone-disabled{cursor:default;pointer-events:none;opacity:.5}.nice-dropzone-container .nice-dropzone-multiple-files-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding-top:16px}\n"], dependencies: [{ kind: "directive", type: NiceDropzoneDirective, selector: "[niceDropzone]", outputs: ["filesDropped", "files"] }, { kind: "component", type: NiceDropzoneImageIcon, selector: "nice-dropzone-image-icon" }, { kind: "component", type: NiceDropzoneFileIcon, selector: "nice-dropzone-file-icon" }, { kind: "component", type: NiceDropzoneFilePreview, selector: "nice-dropzone-file-preview", inputs: ["file", "mode"], outputs: ["clickDelete"] }, { kind: "pipe", type: NiceTranslatePipe, name: "niceTranslate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
294
294
|
}
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceDropzone, decorators: [{
|
|
296
296
|
type: Component,
|
|
297
297
|
args: [{ selector: "nice-dropzone", imports: [
|
|
298
298
|
NiceDropzoneDirective,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursyve-ngx-material-components-dropzone.mjs","sources":["../../../src/material-components/dropzone/dropzone.directive.ts","../../../src/material-components/dropzone/constant.ts","../../../src/material-components/dropzone/icons/file/file-icon.component.ts","../../../src/material-components/dropzone/icons/file/file-icon.template.svg","../../../src/material-components/dropzone/icons/image/image-icon.component.ts","../../../src/material-components/dropzone/icons/image/image-icon.template.svg","../../../src/material-components/dropzone/models.ts","../../../src/material-components/dropzone/pipes/file-size.pipe.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.component.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.template.svg","../../../src/material-components/dropzone/preview/file-preview.ts","../../../src/material-components/dropzone/preview/file-preview.html","../../../src/material-components/dropzone/dropzone.ts","../../../src/material-components/dropzone/dropzone.html","../../../src/material-components/dropzone/provider.ts","../../../src/material-components/dropzone/index.ts","../../../src/material-components/dropzone/recursyve-ngx-material-components-dropzone.ts"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, output, Output } from \"@angular/core\";\n\n@Directive({\n selector: \"[niceDropzone]\",\n standalone: true\n})\nexport class NiceDropzoneDirective {\n @HostBinding(\"class.file-over\")\n public fileOver!: boolean;\n\n @Output()\n public filesDropped = new EventEmitter<FileList>();\n\n public files = output()\n\n // Dragover listener\n @HostListener(\"dragover\", [\"$event\"])\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener(\"dragleave\", [\"$event\"])\n public onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener(\"drop\", [\"$event\"])\n public ondrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n\n if (!event.dataTransfer) {\n return;\n }\n\n const files = event.dataTransfer.files;\n if (files.length > 0) {\n this.filesDropped.emit(files);\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_DROPZONE_TRANSLATION_KEYS = new InjectionToken(\"nice_dropzone_translation_keys\");\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-file-icon\",\n templateUrl: \"./file-icon.template.svg\"\n})\nexport class NiceDropzoneFileIcon {}\n","<svg fill=\"none\" viewBox=\"-1.25 -1.25 40 40\" height=\"40\" width=\"40\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.859375 36.328125h25.78125c1.294375 0 2.34375 -1.049375 2.34375 -2.34375V12.6890625c-0.00015625 -0.621171875 -0.246875 -1.2168750000000002 -0.6859375 -1.65625l-9.175 -9.175c-0.439375 -0.43909062499999996 -1.03515625 -0.6858046875 -1.65625 -0.6859375H5.859375c-1.2765624999999998 0 -2.34375 1.0671875000000002 -2.34375 2.34375v30.46875c0 1.2765624999999998 1.0671875000000002 2.34375 2.34375 2.34375Z\" stroke-width=\"2.5\"></path>\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M33.984375 12.890625h-9.375c-0.6215625 0 -1.2178125 -0.24693750000000003 -1.65734375 -0.68646875S22.265625 11.16846875 22.265625 10.546875v-9.375\" stroke-width=\"2.5\"></path>\n</svg>","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-image-icon\",\n templateUrl: \"./image-icon.template.svg\"\n})\nexport class NiceDropzoneImageIcon {}\n","<svg width=\"40\" height=\"43\" viewBox=\"0 0 40 43\" fill=\"none\">\n <path d=\"M29.333 1.5H2.66634C1.92996 1.5 1.33301 2.09695 1.33301 2.83333V33.0556C1.33301 33.7919 1.92996 34.3889 2.66634 34.3889H29.333C30.0694 34.3889 30.6663 33.7919 30.6663 33.0556V2.83333C30.6663 2.09695 30.0694 1.5 29.333 1.5Z\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M38.6667 11.2778V40.1667C38.6621 40.5189 38.5201 40.8554 38.2711 41.1044C38.022 41.3535 37.6855 41.4954 37.3333 41.5001H12\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M30.6663 27.2778H1.33301\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.55566 27.2778L16.8001 14.0689C17.0316 13.7366 17.3357 13.4614 17.6895 13.2642C18.0432 13.0669 18.4372 12.9528 18.8415 12.9306C19.2459 12.9083 19.6501 12.9784 20.0233 13.1356C20.3965 13.2928 20.7291 13.533 20.9957 13.8378L30.6668 25.0556\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.33268 6.8335C9.8601 6.8335 10.3757 6.98989 10.8142 7.28291C11.2527 7.57593 11.5945 7.9924 11.7964 8.47967C11.9982 8.96694 12.051 9.50312 11.9481 10.0204C11.8452 10.5377 11.5912 11.0128 11.2183 11.3858C10.8454 11.7587 10.3702 12.0127 9.85292 12.1156C9.33564 12.2185 8.79946 12.1657 8.31219 11.9638C7.82492 11.762 7.40845 11.4202 7.11543 10.9817C6.82241 10.5432 6.66602 10.0276 6.66602 9.50016C6.66602 8.79292 6.94697 8.11464 7.44706 7.61454C7.94716 7.11445 8.62544 6.8335 9.33268 6.8335\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","export type NiceFileDimensions = {\n width: number;\n height: number;\n ratio: number;\n};\n\nexport type NiceLocalFile = {\n file: File;\n name: string;\n size?: number;\n dimensions?: NiceFileDimensions;\n};\n\nexport type NiceRemoteFile = {\n id: string | number;\n name: string;\n url: string;\n size?: number;\n};\n\nexport type NiceSelectedFiles = NiceLocalFile | NiceRemoteFile;\n\nexport function isLocalFile(file: NiceSelectedFiles): file is NiceLocalFile {\n return \"file\" in file;\n}\n\nexport function isRemoteFile(file: NiceSelectedFiles): file is NiceRemoteFile {\n return \"id\" in file;\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceTranslater, NICE_COMPONENTS_TRANSLATER } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\n\n@Pipe({\n name: \"niceFileSize\"\n})\nexport class FileSizePipe implements PipeTransform {\n private readonly units = [\"B\", \"KB\", \"MB\", \"GB\"] as const;\n\n private readonly translater = inject<NiceTranslater>(NICE_COMPONENTS_TRANSLATER);\n private readonly translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n public transform(bytes: number | null | undefined, precision = 0): string {\n const defaultUnit = this.translater(this.translationKeys.size.units.B);\n\n if (!bytes) {\n return `0 ${defaultUnit}`;\n }\n\n const unitIndex = Math.floor(Math.log(bytes) / Math.log(1000));\n const boundedUnitIndex = Math.min(unitIndex, this.units.length - 1);\n\n const size = bytes / Math.pow(1000, boundedUnitIndex);\n\n const unit = this.translater(this.translationKeys.size.units[this.units[boundedUnitIndex]]);\n return `${size.toFixed(precision)} ${unit}`;\n }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-delete-icon\",\n templateUrl: \"./delete-icon.template.svg\"\n})\nexport class NiceDropzoneDeleteIcon {}\n","<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\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>","import { Component, computed, inject, input, output } from \"@angular/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneModes } from \"../dropzone\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\nimport { isLocalFile, NiceFileDimensions, NiceSelectedFiles } from \"../models\";\nimport { FileSizePipe } from \"../pipes/file-size.pipe\";\nimport { NiceDropzoneDeleteIcon } from \"../icons/delete/delete-icon.component\";\nimport { NiceDropzoneFileIcon } from \"../icons/file/file-icon.component\";\n\n@Component({\n selector: \"nice-dropzone-file-preview\",\n templateUrl: \"./file-preview.html\",\n styleUrls: [\"./file-preview.scss\"],\n imports: [NiceDropzoneDeleteIcon, NiceTranslatePipe, FileSizePipe, NiceDropzoneFileIcon],\n host: {\n style: \"flex: 1 1 auto;\"\n }\n})\nexport class NiceDropzoneFilePreview {\n public readonly file = input.required<NiceSelectedFiles>();\n public readonly mode = input.required<NiceDropzoneModes>();\n\n protected readonly clickDelete = output<void>();\n\n protected readonly isImage = computed(() => this.mode() === \"image\");\n protected readonly imageDimensions = computed<NiceFileDimensions | null>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return file.dimensions ?? null;\n }\n\n return null;\n });\n protected readonly imageUrl = computed<string>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return URL.createObjectURL(file.file);\n }\n\n return file.url;\n });\n\n protected _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n}\n","<div class=\"nice-dropzone-preview\">\n @if (isImage()) {\n <img class=\"nice-dropzone-preview-image\" alt=\"\" draggable=\"false\" [src]=\"imageUrl()\" />\n } @else {\n <div class=\"nice-dropzone-preview-file\">\n <nice-dropzone-file-icon />\n </div>\n }\n\n <div class=\"nice-dropzone-preview-file-info\">\n <span class=\"mat-body-medium\">{{ file().name }}</span>\n\n @if (imageDimensions(); as dimension) {\n <span class=\"mat-label-medium\">\n {{ `${dimension.width}x${dimension.height}` }} {{ _translationKeys.ratio.pixels | niceTranslate }}\n </span>\n }\n\n @if (file().size; as size) {\n <span class=\"mat-label-medium\">{{ size | niceFileSize }}</span>\n }\n </div>\n\n <div class=\"nice-dropzone-preview-actions\">\n <button class=\"nice-dropzone-preview-actions-delete\" (click)=\"$event.stopPropagation(); clickDelete.emit()\">\n <nice-dropzone-delete-icon />\n </button>\n </div>\n</div>\n","import { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n signal,\n viewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { MatRippleLoader } from \"@angular/material/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport {\n NiceDropzoneFileSizeConfig,\n NiceDropzoneImageConfig,\n NiceDropzoneTranslationKeyConfig\n} from \"./config\";\nimport { NiceDropzoneDirective } from \"./dropzone.directive\";\nimport { NiceDropzoneFileIcon } from \"./icons/file/file-icon.component\";\nimport { NiceDropzoneImageIcon } from \"./icons/image/image-icon.component\";\nimport { NiceFileDimensions, NiceSelectedFiles } from \"./models\";\nimport { NiceDropzoneFilePreview } from \"./preview/file-preview\";\n\nexport const niceDropzoneModes = [\"image\", \"file\", \"all\"] as const;\nexport type NiceDropzoneModes = (typeof niceDropzoneModes)[number];\n\n@Component({\n selector: \"nice-dropzone\",\n templateUrl: \"dropzone.html\",\n styleUrl: \"dropzone.scss\",\n imports: [\n NiceDropzoneDirective,\n NiceDropzoneImageIcon,\n NiceDropzoneFileIcon,\n NiceDropzoneFilePreview,\n NiceTranslatePipe\n ],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceDropzone),\n multi: true\n }\n ]\n})\nexport class NiceDropzone implements OnDestroy, ControlValueAccessor {\n public readonly mode = input<NiceDropzoneModes>(\"all\");\n public readonly multiple = input(false, { transform: coerceBooleanProperty });\n public readonly disabled = input(false, { transform: coerceBooleanProperty });\n public readonly accept = input<string[]>();\n public readonly config = input<NiceDropzoneImageConfig>();\n public readonly maxFileSize = input<NiceDropzoneFileSizeConfig>();\n\n protected readonly _elementRef = viewChild(\"element\", { read: ElementRef });\n protected readonly _inputRef = viewChild<ElementRef<HTMLInputElement>>(\"fileInput\");\n\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve the initial load time of large applications.\n */\n protected readonly _rippleLoader: MatRippleLoader = inject(MatRippleLoader);\n protected readonly _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n protected readonly files = signal<NiceSelectedFiles[]>([]);\n\n protected _disabled = false;\n\n private _onChange!: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void;\n private _value: NiceSelectedFiles | NiceSelectedFiles[] | null = null;\n\n constructor() {\n effect(() => {\n const elementRef = this._elementRef();\n if (!elementRef) {\n return;\n }\n\n this._rippleLoader.configureRipple(elementRef.nativeElement, { className: \"nice-dropzone-ripple\" });\n });\n\n effect(() => {\n this._disabled = this.disabled();\n });\n }\n\n public ngOnDestroy(): void {\n this._rippleLoader.destroyRipple(this._elementRef()?.nativeElement);\n }\n\n public writeValue(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n this._value = value;\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n }\n }\n\n public registerOnChange(fn: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(): void {\n // Do nothing\n }\n\n public setDisabledState(disabled: boolean): void {\n this._disabled = disabled;\n }\n\n public onFileChanged(event: Event): void {\n const files = (event.target as HTMLInputElement).files;\n if (!files) {\n return;\n }\n\n this.onFilesDropped(files);\n }\n\n public async onFilesDropped(fileList: FileList): Promise<void> {\n if (this.multiple() && !this._value) {\n this._value = [];\n }\n\n const accept = this.accept();\n for (const file of Array.from(fileList)) {\n if (accept && !accept.includes(file.type)) {\n continue;\n }\n\n const isImage = file.type.startsWith(\"image/\");\n const value = {\n file,\n name: file.name,\n size: file.size,\n ...(isImage && { dimensions: await this.getImageDimension(file) })\n } satisfies NiceSelectedFiles;\n if (this.multiple()) {\n (this._value as NiceSelectedFiles[]).push(value);\n } else {\n this._value = value;\n this.propagateChanges(this._value);\n return;\n }\n }\n\n if (this._value) {\n this.propagateChanges(this._value);\n }\n\n this.resetInput();\n }\n\n public onFileDelete(index: number): void {\n if (this.multiple()) {\n const files = [...this.files()];\n files.splice(index, 1);\n this.propagateChanges(files);\n } else {\n this.propagateChanges(null);\n this.resetInput();\n }\n }\n\n protected propagateChanges(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n } else {\n this.files.set([]);\n }\n\n this._value = value;\n this._onChange(value);\n }\n\n protected getImageDimension(file: File): Promise<NiceFileDimensions> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const image = new Image();\n image.onload = () => {\n resolve({\n width: image.width,\n height: image.height,\n ratio: image.width / image.height\n });\n };\n image.onerror = reject;\n image.src = reader.result as string;\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n protected resetInput(): void {\n const input = this._inputRef();\n if (!input) {\n return;\n }\n\n input.nativeElement.value = \"\";\n }\n}\n","<div\n class=\"nice-dropzone-container\"\n>\n <div\n #element\n role=\"none\"\n class=\"nice-dropzone\"\n [class.nice-dropzone-disabled]=\"_disabled\"\n [class.nice-dropzone-multiple]=\"multiple()\"\n [class.nice-dropzone-single]=\"!multiple()\"\n [class.nice-dropzone-image]=\"mode() === 'image'\"\n [class.nice-dropzone-file]=\"mode() === 'file'\"\n [class.nice-dropzone-all]=\"mode() === 'all'\"\n [class.nice-dropzone-selected]=\"files().length > 0\"\n\n niceDropzone\n (filesDropped)=\"onFilesDropped($event)\"\n (click)=\"fileInput.click()\"\n (keyup.enter)=\"fileInput.click()\"\n >\n <div class=\"nice-dropzone-ripple\"></div>\n\n @if (multiple() || (!multiple() && !files().length)) {\n <div class=\"nice-dropzone-placeholder\">\n <div class=\"nice-dropzone-icon\">\n @if (mode() === \"image\") {\n <nice-dropzone-image-icon />\n } @else {\n <nice-dropzone-file-icon />\n }\n </div>\n\n <div class=\"nice-dropzone-content\">\n <span class=\"nice-dropzone-content-title\">\n @if (mode() === \"image\") {\n @if (multiple()) {\n {{ _translationKeys.upload.images | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.image | niceTranslate }}\n }\n } @else {\n @if (multiple()) {\n {{ _translationKeys.upload.files | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.file | niceTranslate }}\n }\n }\n </span>\n\n <div class=\"nice-dropzone-content-description\">\n @if (accept()?.length) {\n <span>\n {{ _translationKeys.format.label | niceTranslate }}: \n\n <span>\n {{ accept()?.join(\", \") }}\n </span>\n </span>\n }\n\n @if (mode() === \"image\" && config()?.recommendedSize; as recommendedSize) {\n <span>\n {{ _translationKeys.ratio.label | niceTranslate }}: \n\n <span>{{ recommendedSize.width }}x{{ recommendedSize.height }} {{ _translationKeys.ratio.pixels | niceTranslate }}</span>\n </span>\n }\n\n @if (maxFileSize(); as maxFileSize) {\n <span>\n {{ _translationKeys.size.label | niceTranslate }}: \n\n <span>{{ maxFileSize.size }} {{ _translationKeys.size.units[maxFileSize.unit] | niceTranslate }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n } @else {\n <nice-dropzone-file-preview [file]=\"files()[0]\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete(0)\" />\n }\n </div>\n\n @if (multiple()) {\n <div class=\"nice-dropzone-multiple-files-preview\">\n @for (file of files(); track file) {\n <nice-dropzone-file-preview [file]=\"file\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete($index)\" />\n }\n </div>\n }\n</div>\n\n<input #fileInput style=\"display: none;\" type=\"file\" [accept]=\"accept()\" [multiple]=\"multiple()\" (change)=\"onFileChanged($event)\" />\n","import { Provider } from \"@angular/core\";\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"./config\";\nimport { NiceDropzoneOptions } from \"./options\";\n\nconst defaultTranslationKeys: NiceDropzoneTranslationKeyConfig = {\n upload: {\n file: \"components.dropzone.upload.file\",\n files: \"components.dropzone.upload.files\",\n image: \"components.dropzone.upload.image\",\n images: \"components.dropzone.upload.images\"\n },\n format: {\n label: \"components.dropzone.format.label\"\n },\n ratio: {\n label: \"components.dropzone.ratio.label\",\n pixels: \"components.dropzone.ratio.pixels\"\n },\n size: {\n label: \"components.dropzone.size.label\",\n units: {\n B: \"components.dropzone.size.units.B\",\n KB: \"components.dropzone.size.units.KB\",\n MB: \"components.dropzone.size.units.MB\",\n GB: \"components.dropzone.size.units.GB\"\n }\n }\n};\n\nexport function provideDropzone(options?: NiceDropzoneOptions): Provider[] {\n return [\n {\n provide: NICE_DROPZONE_TRANSLATION_KEYS,\n useValue: options?.translationKeys ?? defaultTranslationKeys\n }\n ];\n}\n","/*\n * Public API Surface of dropzone\n */\n\nexport * from \"./dropzone.directive\";\nexport * from \"./dropzone\";\nexport * from \"./config\";\nexport * from \"./models\";\nexport * from \"./options\";\nexport * from \"./provider\";\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-dropzone.mjs","sources":["../../../src/material-components/dropzone/dropzone.directive.ts","../../../src/material-components/dropzone/constant.ts","../../../src/material-components/dropzone/icons/file/file-icon.component.ts","../../../src/material-components/dropzone/icons/file/file-icon.template.svg","../../../src/material-components/dropzone/icons/image/image-icon.component.ts","../../../src/material-components/dropzone/icons/image/image-icon.template.svg","../../../src/material-components/dropzone/models.ts","../../../src/material-components/dropzone/pipes/file-size.pipe.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.component.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.template.svg","../../../src/material-components/dropzone/preview/file-preview.ts","../../../src/material-components/dropzone/preview/file-preview.html","../../../src/material-components/dropzone/dropzone.ts","../../../src/material-components/dropzone/dropzone.html","../../../src/material-components/dropzone/provider.ts","../../../src/material-components/dropzone/index.ts","../../../src/material-components/dropzone/recursyve-ngx-material-components-dropzone.ts"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, output, Output } from \"@angular/core\";\n\n@Directive({\n selector: \"[niceDropzone]\",\n standalone: true\n})\nexport class NiceDropzoneDirective {\n @HostBinding(\"class.file-over\")\n public fileOver!: boolean;\n\n @Output()\n public filesDropped = new EventEmitter<FileList>();\n\n public files = output()\n\n // Dragover listener\n @HostListener(\"dragover\", [\"$event\"])\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener(\"dragleave\", [\"$event\"])\n public onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener(\"drop\", [\"$event\"])\n public ondrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n\n if (!event.dataTransfer) {\n return;\n }\n\n const files = event.dataTransfer.files;\n if (files.length > 0) {\n this.filesDropped.emit(files);\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_DROPZONE_TRANSLATION_KEYS = new InjectionToken(\"nice_dropzone_translation_keys\");\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-file-icon\",\n templateUrl: \"./file-icon.template.svg\"\n})\nexport class NiceDropzoneFileIcon {}\n","<svg fill=\"none\" viewBox=\"-1.25 -1.25 40 40\" height=\"40\" width=\"40\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.859375 36.328125h25.78125c1.294375 0 2.34375 -1.049375 2.34375 -2.34375V12.6890625c-0.00015625 -0.621171875 -0.246875 -1.2168750000000002 -0.6859375 -1.65625l-9.175 -9.175c-0.439375 -0.43909062499999996 -1.03515625 -0.6858046875 -1.65625 -0.6859375H5.859375c-1.2765624999999998 0 -2.34375 1.0671875000000002 -2.34375 2.34375v30.46875c0 1.2765624999999998 1.0671875000000002 2.34375 2.34375 2.34375Z\" stroke-width=\"2.5\"></path>\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M33.984375 12.890625h-9.375c-0.6215625 0 -1.2178125 -0.24693750000000003 -1.65734375 -0.68646875S22.265625 11.16846875 22.265625 10.546875v-9.375\" stroke-width=\"2.5\"></path>\n</svg>","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-image-icon\",\n templateUrl: \"./image-icon.template.svg\"\n})\nexport class NiceDropzoneImageIcon {}\n","<svg width=\"40\" height=\"43\" viewBox=\"0 0 40 43\" fill=\"none\">\n <path d=\"M29.333 1.5H2.66634C1.92996 1.5 1.33301 2.09695 1.33301 2.83333V33.0556C1.33301 33.7919 1.92996 34.3889 2.66634 34.3889H29.333C30.0694 34.3889 30.6663 33.7919 30.6663 33.0556V2.83333C30.6663 2.09695 30.0694 1.5 29.333 1.5Z\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M38.6667 11.2778V40.1667C38.6621 40.5189 38.5201 40.8554 38.2711 41.1044C38.022 41.3535 37.6855 41.4954 37.3333 41.5001H12\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M30.6663 27.2778H1.33301\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.55566 27.2778L16.8001 14.0689C17.0316 13.7366 17.3357 13.4614 17.6895 13.2642C18.0432 13.0669 18.4372 12.9528 18.8415 12.9306C19.2459 12.9083 19.6501 12.9784 20.0233 13.1356C20.3965 13.2928 20.7291 13.533 20.9957 13.8378L30.6668 25.0556\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.33268 6.8335C9.8601 6.8335 10.3757 6.98989 10.8142 7.28291C11.2527 7.57593 11.5945 7.9924 11.7964 8.47967C11.9982 8.96694 12.051 9.50312 11.9481 10.0204C11.8452 10.5377 11.5912 11.0128 11.2183 11.3858C10.8454 11.7587 10.3702 12.0127 9.85292 12.1156C9.33564 12.2185 8.79946 12.1657 8.31219 11.9638C7.82492 11.762 7.40845 11.4202 7.11543 10.9817C6.82241 10.5432 6.66602 10.0276 6.66602 9.50016C6.66602 8.79292 6.94697 8.11464 7.44706 7.61454C7.94716 7.11445 8.62544 6.8335 9.33268 6.8335\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","export type NiceFileDimensions = {\n width: number;\n height: number;\n ratio: number;\n};\n\nexport type NiceLocalFile = {\n file: File;\n name: string;\n size?: number;\n dimensions?: NiceFileDimensions;\n};\n\nexport type NiceRemoteFile = {\n id: string | number;\n name: string;\n url: string;\n size?: number;\n};\n\nexport type NiceSelectedFiles = NiceLocalFile | NiceRemoteFile;\n\nexport function isLocalFile(file: NiceSelectedFiles): file is NiceLocalFile {\n return \"file\" in file;\n}\n\nexport function isRemoteFile(file: NiceSelectedFiles): file is NiceRemoteFile {\n return \"id\" in file;\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceTranslater, NICE_COMPONENTS_TRANSLATER } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\n\n@Pipe({\n name: \"niceFileSize\"\n})\nexport class FileSizePipe implements PipeTransform {\n private readonly units = [\"B\", \"KB\", \"MB\", \"GB\"] as const;\n\n private readonly translater = inject<NiceTranslater>(NICE_COMPONENTS_TRANSLATER);\n private readonly translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n public transform(bytes: number | null | undefined, precision = 0): string {\n const defaultUnit = this.translater(this.translationKeys.size.units.B);\n\n if (!bytes) {\n return `0 ${defaultUnit}`;\n }\n\n const unitIndex = Math.floor(Math.log(bytes) / Math.log(1000));\n const boundedUnitIndex = Math.min(unitIndex, this.units.length - 1);\n\n const size = bytes / Math.pow(1000, boundedUnitIndex);\n\n const unit = this.translater(this.translationKeys.size.units[this.units[boundedUnitIndex]]);\n return `${size.toFixed(precision)} ${unit}`;\n }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-delete-icon\",\n templateUrl: \"./delete-icon.template.svg\"\n})\nexport class NiceDropzoneDeleteIcon {}\n","<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\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>","import { Component, computed, inject, input, output } from \"@angular/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneModes } from \"../dropzone\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\nimport { isLocalFile, NiceFileDimensions, NiceSelectedFiles } from \"../models\";\nimport { FileSizePipe } from \"../pipes/file-size.pipe\";\nimport { NiceDropzoneDeleteIcon } from \"../icons/delete/delete-icon.component\";\nimport { NiceDropzoneFileIcon } from \"../icons/file/file-icon.component\";\n\n@Component({\n selector: \"nice-dropzone-file-preview\",\n templateUrl: \"./file-preview.html\",\n styleUrls: [\"./file-preview.scss\"],\n imports: [NiceDropzoneDeleteIcon, NiceTranslatePipe, FileSizePipe, NiceDropzoneFileIcon],\n host: {\n style: \"flex: 1 1 auto;\"\n }\n})\nexport class NiceDropzoneFilePreview {\n public readonly file = input.required<NiceSelectedFiles>();\n public readonly mode = input.required<NiceDropzoneModes>();\n\n protected readonly clickDelete = output<void>();\n\n protected readonly isImage = computed(() => this.mode() === \"image\");\n protected readonly imageDimensions = computed<NiceFileDimensions | null>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return file.dimensions ?? null;\n }\n\n return null;\n });\n protected readonly imageUrl = computed<string>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return URL.createObjectURL(file.file);\n }\n\n return file.url;\n });\n\n protected _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n}\n","<div class=\"nice-dropzone-preview\">\n @if (isImage()) {\n <img class=\"nice-dropzone-preview-image\" alt=\"\" draggable=\"false\" [src]=\"imageUrl()\" />\n } @else {\n <div class=\"nice-dropzone-preview-file\">\n <nice-dropzone-file-icon />\n </div>\n }\n\n <div class=\"nice-dropzone-preview-file-info\">\n <span class=\"mat-body-medium\">{{ file().name }}</span>\n\n @if (imageDimensions(); as dimension) {\n <span class=\"mat-label-medium\">\n {{ `${dimension.width}x${dimension.height}` }} {{ _translationKeys.ratio.pixels | niceTranslate }}\n </span>\n }\n\n @if (file().size; as size) {\n <span class=\"mat-label-medium\">{{ size | niceFileSize }}</span>\n }\n </div>\n\n <div class=\"nice-dropzone-preview-actions\">\n <button class=\"nice-dropzone-preview-actions-delete\" (click)=\"$event.stopPropagation(); clickDelete.emit()\">\n <nice-dropzone-delete-icon />\n </button>\n </div>\n</div>\n","import { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n signal,\n viewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { MatRippleLoader } from \"@angular/material/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport {\n NiceDropzoneFileSizeConfig,\n NiceDropzoneImageConfig,\n NiceDropzoneTranslationKeyConfig\n} from \"./config\";\nimport { NiceDropzoneDirective } from \"./dropzone.directive\";\nimport { NiceDropzoneFileIcon } from \"./icons/file/file-icon.component\";\nimport { NiceDropzoneImageIcon } from \"./icons/image/image-icon.component\";\nimport { NiceFileDimensions, NiceSelectedFiles } from \"./models\";\nimport { NiceDropzoneFilePreview } from \"./preview/file-preview\";\n\nexport const niceDropzoneModes = [\"image\", \"file\", \"all\"] as const;\nexport type NiceDropzoneModes = (typeof niceDropzoneModes)[number];\n\n@Component({\n selector: \"nice-dropzone\",\n templateUrl: \"dropzone.html\",\n styleUrl: \"dropzone.scss\",\n imports: [\n NiceDropzoneDirective,\n NiceDropzoneImageIcon,\n NiceDropzoneFileIcon,\n NiceDropzoneFilePreview,\n NiceTranslatePipe\n ],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceDropzone),\n multi: true\n }\n ]\n})\nexport class NiceDropzone implements OnDestroy, ControlValueAccessor {\n public readonly mode = input<NiceDropzoneModes>(\"all\");\n public readonly multiple = input(false, { transform: coerceBooleanProperty });\n public readonly disabled = input(false, { transform: coerceBooleanProperty });\n public readonly accept = input<string[]>();\n public readonly config = input<NiceDropzoneImageConfig>();\n public readonly maxFileSize = input<NiceDropzoneFileSizeConfig>();\n\n protected readonly _elementRef = viewChild(\"element\", { read: ElementRef });\n protected readonly _inputRef = viewChild<ElementRef<HTMLInputElement>>(\"fileInput\");\n\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve the initial load time of large applications.\n */\n protected readonly _rippleLoader: MatRippleLoader = inject(MatRippleLoader);\n protected readonly _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n protected readonly files = signal<NiceSelectedFiles[]>([]);\n\n protected _disabled = false;\n\n private _onChange!: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void;\n private _value: NiceSelectedFiles | NiceSelectedFiles[] | null = null;\n\n constructor() {\n effect(() => {\n const elementRef = this._elementRef();\n if (!elementRef) {\n return;\n }\n\n this._rippleLoader.configureRipple(elementRef.nativeElement, { className: \"nice-dropzone-ripple\" });\n });\n\n effect(() => {\n this._disabled = this.disabled();\n });\n }\n\n public ngOnDestroy(): void {\n this._rippleLoader.destroyRipple(this._elementRef()?.nativeElement);\n }\n\n public writeValue(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n this._value = value;\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n }\n }\n\n public registerOnChange(fn: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(): void {\n // Do nothing\n }\n\n public setDisabledState(disabled: boolean): void {\n this._disabled = disabled;\n }\n\n public onFileChanged(event: Event): void {\n const files = (event.target as HTMLInputElement).files;\n if (!files) {\n return;\n }\n\n this.onFilesDropped(files);\n }\n\n public async onFilesDropped(fileList: FileList): Promise<void> {\n if (this.multiple() && !this._value) {\n this._value = [];\n }\n\n const accept = this.accept();\n for (const file of Array.from(fileList)) {\n if (accept && !accept.includes(file.type)) {\n continue;\n }\n\n const isImage = file.type.startsWith(\"image/\");\n const value = {\n file,\n name: file.name,\n size: file.size,\n ...(isImage && { dimensions: await this.getImageDimension(file) })\n } satisfies NiceSelectedFiles;\n if (this.multiple()) {\n (this._value as NiceSelectedFiles[]).push(value);\n } else {\n this._value = value;\n this.propagateChanges(this._value);\n return;\n }\n }\n\n if (this._value) {\n this.propagateChanges(this._value);\n }\n\n this.resetInput();\n }\n\n public onFileDelete(index: number): void {\n if (this.multiple()) {\n const files = [...this.files()];\n files.splice(index, 1);\n this.propagateChanges(files);\n } else {\n this.propagateChanges(null);\n this.resetInput();\n }\n }\n\n protected propagateChanges(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n } else {\n this.files.set([]);\n }\n\n this._value = value;\n this._onChange(value);\n }\n\n protected getImageDimension(file: File): Promise<NiceFileDimensions> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const image = new Image();\n image.onload = () => {\n resolve({\n width: image.width,\n height: image.height,\n ratio: image.width / image.height\n });\n };\n image.onerror = reject;\n image.src = reader.result as string;\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n protected resetInput(): void {\n const input = this._inputRef();\n if (!input) {\n return;\n }\n\n input.nativeElement.value = \"\";\n }\n}\n","<div\n class=\"nice-dropzone-container\"\n>\n <div\n #element\n role=\"none\"\n class=\"nice-dropzone\"\n [class.nice-dropzone-disabled]=\"_disabled\"\n [class.nice-dropzone-multiple]=\"multiple()\"\n [class.nice-dropzone-single]=\"!multiple()\"\n [class.nice-dropzone-image]=\"mode() === 'image'\"\n [class.nice-dropzone-file]=\"mode() === 'file'\"\n [class.nice-dropzone-all]=\"mode() === 'all'\"\n [class.nice-dropzone-selected]=\"files().length > 0\"\n\n niceDropzone\n (filesDropped)=\"onFilesDropped($event)\"\n (click)=\"fileInput.click()\"\n (keyup.enter)=\"fileInput.click()\"\n >\n <div class=\"nice-dropzone-ripple\"></div>\n\n @if (multiple() || (!multiple() && !files().length)) {\n <div class=\"nice-dropzone-placeholder\">\n <div class=\"nice-dropzone-icon\">\n @if (mode() === \"image\") {\n <nice-dropzone-image-icon />\n } @else {\n <nice-dropzone-file-icon />\n }\n </div>\n\n <div class=\"nice-dropzone-content\">\n <span class=\"nice-dropzone-content-title\">\n @if (mode() === \"image\") {\n @if (multiple()) {\n {{ _translationKeys.upload.images | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.image | niceTranslate }}\n }\n } @else {\n @if (multiple()) {\n {{ _translationKeys.upload.files | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.file | niceTranslate }}\n }\n }\n </span>\n\n <div class=\"nice-dropzone-content-description\">\n @if (accept()?.length) {\n <span>\n {{ _translationKeys.format.label | niceTranslate }}: \n\n <span>\n {{ accept()?.join(\", \") }}\n </span>\n </span>\n }\n\n @if (mode() === \"image\" && config()?.recommendedSize; as recommendedSize) {\n <span>\n {{ _translationKeys.ratio.label | niceTranslate }}: \n\n <span>{{ recommendedSize.width }}x{{ recommendedSize.height }} {{ _translationKeys.ratio.pixels | niceTranslate }}</span>\n </span>\n }\n\n @if (maxFileSize(); as maxFileSize) {\n <span>\n {{ _translationKeys.size.label | niceTranslate }}: \n\n <span>{{ maxFileSize.size }} {{ _translationKeys.size.units[maxFileSize.unit] | niceTranslate }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n } @else {\n <nice-dropzone-file-preview [file]=\"files()[0]\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete(0)\" />\n }\n </div>\n\n @if (multiple()) {\n <div class=\"nice-dropzone-multiple-files-preview\">\n @for (file of files(); track file) {\n <nice-dropzone-file-preview [file]=\"file\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete($index)\" />\n }\n </div>\n }\n</div>\n\n<input #fileInput style=\"display: none;\" type=\"file\" [accept]=\"accept()\" [multiple]=\"multiple()\" (change)=\"onFileChanged($event)\" />\n","import { Provider } from \"@angular/core\";\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"./config\";\nimport { NiceDropzoneOptions } from \"./options\";\n\nconst defaultTranslationKeys: NiceDropzoneTranslationKeyConfig = {\n upload: {\n file: \"components.dropzone.upload.file\",\n files: \"components.dropzone.upload.files\",\n image: \"components.dropzone.upload.image\",\n images: \"components.dropzone.upload.images\"\n },\n format: {\n label: \"components.dropzone.format.label\"\n },\n ratio: {\n label: \"components.dropzone.ratio.label\",\n pixels: \"components.dropzone.ratio.pixels\"\n },\n size: {\n label: \"components.dropzone.size.label\",\n units: {\n B: \"components.dropzone.size.units.B\",\n KB: \"components.dropzone.size.units.KB\",\n MB: \"components.dropzone.size.units.MB\",\n GB: \"components.dropzone.size.units.GB\"\n }\n }\n};\n\nexport function provideDropzone(options?: NiceDropzoneOptions): Provider[] {\n return [\n {\n provide: NICE_DROPZONE_TRANSLATION_KEYS,\n useValue: options?.translationKeys ?? defaultTranslationKeys\n }\n ];\n}\n","/*\n * Public API Surface of dropzone\n */\n\nexport * from \"./dropzone.directive\";\nexport * from \"./dropzone\";\nexport * from \"./config\";\nexport * from \"./models\";\nexport * from \"./options\";\nexport * from \"./provider\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -67,8 +67,8 @@ class NiceFormErrorComponent {
|
|
|
67
67
|
}
|
|
68
68
|
this.message = value;
|
|
69
69
|
}
|
|
70
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
71
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
70
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
71
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
|
|
72
72
|
@if (message) {
|
|
73
73
|
<div [@animation]="increment">
|
|
74
74
|
<mat-error>{{ message }}</mat-error>
|
|
@@ -85,7 +85,7 @@ class NiceFormErrorComponent {
|
|
|
85
85
|
])
|
|
86
86
|
], encapsulation: i0.ViewEncapsulation.None });
|
|
87
87
|
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
|
|
89
89
|
type: Component,
|
|
90
90
|
args: [{ selector: "nice-form-field-error", template: `
|
|
91
91
|
@if (message) {
|
|
@@ -179,10 +179,10 @@ class NiceFormFieldErrorDirective {
|
|
|
179
179
|
}
|
|
180
180
|
this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;
|
|
181
181
|
}
|
|
182
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
183
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
182
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
183
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.10", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
|
|
184
184
|
}
|
|
185
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
|
|
186
186
|
type: Directive,
|
|
187
187
|
args: [{ selector: "[niceFormFieldError]", standalone: true }]
|
|
188
188
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursyve-ngx-material-components-form-field-error.mjs","sources":["../../../src/material-components/form-field-error/error-transformer.ts","../../../src/material-components/form-field-error/form-field-error.ts","../../../src/material-components/form-field-error/constant.ts","../../../src/material-components/form-field-error/form-field-error.directive.ts","../../../src/material-components/form-field-error/provider.ts","../../../src/material-components/form-field-error/recursyve-ngx-material-components-form-field-error.ts"],"sourcesContent":["import { ValidationErrors } from \"@angular/forms\";\n\nexport type TransformedError = { key: string; params?: Record<string, string> };\nexport type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;\nexport type ErrorTransformers = Record<string, ErrorTransformer>;\n\nexport const PatternErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredPattern\"]) {\n return {\n key: details[\"requiredPattern\"]\n }\n }\n\n return { key: error };\n};\n\nexport const MaskErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredMask\"]) {\n return {\n key: details[\"requiredMask\"]\n }\n }\n\n return { key: error };\n};\n\nexport const LengthErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n value: details[\"requiredLength\"]\n }\n };\n};\n\nexport const MinErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n min: details[\"min\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const MaxErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n max: details[\"max\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const DefaultErrorTransformers: ErrorTransformers = {\n pattern: PatternErrorTransformer,\n mask: MaskErrorTransformer,\n minlength: LengthErrorTransformer,\n maxlength: LengthErrorTransformer,\n min: MinErrorTransformer,\n max: MaxErrorTransformer\n};\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatError } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"nice-form-field-error\",\n template: `\n @if (message) {\n <div [@animation]=\"increment\">\n <mat-error>{{ message }}</mat-error>\n </div>\n }\n `,\n styleUrls: [\"./form-field-error.scss\"],\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatError\n ]\n})\nexport class NiceFormErrorComponent {\n public message = \"\";\n public increment = 0;\n\n @Input()\n public set error(value: string) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken(\"nice_form_field_error_transformers\");\nexport const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken(\"nice_form_field_error_translater\");\n","import {\n AfterViewInit,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n ViewContainerRef\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AbstractControlDirective, NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { NiceTranslater } from \"@recursyve/ngx-material-components/common\";\nimport { combineLatest, startWith } from \"rxjs\";\n\nimport { NiceFormErrorComponent } from \"./form-field-error\";\nimport { ErrorTransformers } from \"./error-transformer\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\n\n@Directive({ selector: \"[niceFormFieldError]\", standalone: true })\nexport class NiceFormFieldErrorDirective implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly formField = inject(MatFormField);\n private readonly transformers = inject<ErrorTransformers>(NICE_FORM_FIELD_ERROR_TRANSFORMERS);\n private readonly translater = inject<NiceTranslater>(NICE_FORM_FIELD_ERROR_TRANSLATER);\n\n private ref: ComponentRef<NiceFormErrorComponent> | null = null ;\n private control: NgControl | AbstractControlDirective | null = null;\n\n public onChange = () => {\n if (this.control === null || this.control.pending) {\n return;\n }\n\n if (this.control.valid || this.control.untouched) {\n this.setError(\"\", {});\n return;\n }\n\n for (const error in this.control.errors) {\n const details = this.control.errors[error];\n if (typeof details !== \"object\") {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const transformer = this.transformers[error];\n if (!transformer) {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const { key, params } = transformer(error, details);\n this.setError(`errors.${key}`, params ?? {});\n }\n }\n\n public ngAfterViewInit(): void {\n this.control = this.formField._control.ngControl;\n\n if (this.control !== null && this.control.statusChanges !== null) {\n combineLatest([\n this.formField._control.stateChanges,\n this.control.statusChanges.pipe(startWith(this.control.status))\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onChange());\n }\n }\n\n public setError(text: string, params: Record<string, string>): void {\n if (!this.ref) {\n this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);\n if (this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\").item(0)) {\n const hint = this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-hint\").item(0);\n (this.ref.location.nativeElement as HTMLDivElement).style.position = \"absolute\";\n (this.ref.location.nativeElement as HTMLDivElement).style.top = hint ? \"16px\" : \"0\";\n\n const wrapper = this.elementRef.nativeElement\n .getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\")\n .item(0);\n if (hint) {\n wrapper.classList.add(\"override-height\");\n }\n\n wrapper.prepend(this.ref.location.nativeElement);\n }\n }\n\n if (text) {\n this.elementRef.nativeElement.classList.add(\"form-error-show\");\n } else {\n this.elementRef.nativeElement.classList.remove(\"form-error-show\");\n }\n\n this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\nimport { NiceFormFieldErrorsOptions } from \"./options\";\nimport { DefaultErrorTransformers } from \"./error-transformer\";\n\nexport function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[] {\n return [\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,\n useValue: {\n ...DefaultErrorTransformers,\n ...options.errorTransformers\n }\n },\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSLATER,\n ...options.translater\n }\n ];\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-form-field-error.mjs","sources":["../../../src/material-components/form-field-error/error-transformer.ts","../../../src/material-components/form-field-error/form-field-error.ts","../../../src/material-components/form-field-error/constant.ts","../../../src/material-components/form-field-error/form-field-error.directive.ts","../../../src/material-components/form-field-error/provider.ts","../../../src/material-components/form-field-error/recursyve-ngx-material-components-form-field-error.ts"],"sourcesContent":["import { ValidationErrors } from \"@angular/forms\";\n\nexport type TransformedError = { key: string; params?: Record<string, string> };\nexport type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;\nexport type ErrorTransformers = Record<string, ErrorTransformer>;\n\nexport const PatternErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredPattern\"]) {\n return {\n key: details[\"requiredPattern\"]\n }\n }\n\n return { key: error };\n};\n\nexport const MaskErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredMask\"]) {\n return {\n key: details[\"requiredMask\"]\n }\n }\n\n return { key: error };\n};\n\nexport const LengthErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n value: details[\"requiredLength\"]\n }\n };\n};\n\nexport const MinErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n min: details[\"min\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const MaxErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n max: details[\"max\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const DefaultErrorTransformers: ErrorTransformers = {\n pattern: PatternErrorTransformer,\n mask: MaskErrorTransformer,\n minlength: LengthErrorTransformer,\n maxlength: LengthErrorTransformer,\n min: MinErrorTransformer,\n max: MaxErrorTransformer\n};\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatError } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"nice-form-field-error\",\n template: `\n @if (message) {\n <div [@animation]=\"increment\">\n <mat-error>{{ message }}</mat-error>\n </div>\n }\n `,\n styleUrls: [\"./form-field-error.scss\"],\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatError\n ]\n})\nexport class NiceFormErrorComponent {\n public message = \"\";\n public increment = 0;\n\n @Input()\n public set error(value: string) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken(\"nice_form_field_error_transformers\");\nexport const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken(\"nice_form_field_error_translater\");\n","import {\n AfterViewInit,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n ViewContainerRef\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AbstractControlDirective, NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { NiceTranslater } from \"@recursyve/ngx-material-components/common\";\nimport { combineLatest, startWith } from \"rxjs\";\n\nimport { NiceFormErrorComponent } from \"./form-field-error\";\nimport { ErrorTransformers } from \"./error-transformer\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\n\n@Directive({ selector: \"[niceFormFieldError]\", standalone: true })\nexport class NiceFormFieldErrorDirective implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly formField = inject(MatFormField);\n private readonly transformers = inject<ErrorTransformers>(NICE_FORM_FIELD_ERROR_TRANSFORMERS);\n private readonly translater = inject<NiceTranslater>(NICE_FORM_FIELD_ERROR_TRANSLATER);\n\n private ref: ComponentRef<NiceFormErrorComponent> | null = null ;\n private control: NgControl | AbstractControlDirective | null = null;\n\n public onChange = () => {\n if (this.control === null || this.control.pending) {\n return;\n }\n\n if (this.control.valid || this.control.untouched) {\n this.setError(\"\", {});\n return;\n }\n\n for (const error in this.control.errors) {\n const details = this.control.errors[error];\n if (typeof details !== \"object\") {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const transformer = this.transformers[error];\n if (!transformer) {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const { key, params } = transformer(error, details);\n this.setError(`errors.${key}`, params ?? {});\n }\n }\n\n public ngAfterViewInit(): void {\n this.control = this.formField._control.ngControl;\n\n if (this.control !== null && this.control.statusChanges !== null) {\n combineLatest([\n this.formField._control.stateChanges,\n this.control.statusChanges.pipe(startWith(this.control.status))\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onChange());\n }\n }\n\n public setError(text: string, params: Record<string, string>): void {\n if (!this.ref) {\n this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);\n if (this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\").item(0)) {\n const hint = this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-hint\").item(0);\n (this.ref.location.nativeElement as HTMLDivElement).style.position = \"absolute\";\n (this.ref.location.nativeElement as HTMLDivElement).style.top = hint ? \"16px\" : \"0\";\n\n const wrapper = this.elementRef.nativeElement\n .getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\")\n .item(0);\n if (hint) {\n wrapper.classList.add(\"override-height\");\n }\n\n wrapper.prepend(this.ref.location.nativeElement);\n }\n }\n\n if (text) {\n this.elementRef.nativeElement.classList.add(\"form-error-show\");\n } else {\n this.elementRef.nativeElement.classList.remove(\"form-error-show\");\n }\n\n this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\nimport { NiceFormFieldErrorsOptions } from \"./options\";\nimport { DefaultErrorTransformers } from \"./error-transformer\";\n\nexport function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[] {\n return [\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,\n useValue: {\n ...DefaultErrorTransformers,\n ...options.errorTransformers\n }\n },\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|