@koobiq/components 16.0.0-beta.5 → 16.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete-trigger.directive.d.ts +5 -15
- package/button/_button-theme.scss +20 -9
- package/button-toggle/button-toggle.component.d.ts +2 -2
- package/checkbox/_checkbox-theme.scss +10 -2
- package/checkbox/checkbox.d.ts +1 -1
- package/code-block/README.md +14 -14
- package/code-block/_code-block-theme.scss +8 -0
- package/code-block/code-block.component.d.ts +1 -1
- package/core/animation/index.d.ts +1 -1
- package/core/animation/select-animations.d.ts +1 -1
- package/core/formatters/index.d.ts +1 -1
- package/core/formatters/number/formatter.d.ts +56 -1
- package/core/forms/forms.directive.d.ts +2 -2
- package/core/locales/en-US.d.ts +19 -1
- package/core/locales/es-LA.d.ts +27 -0
- package/core/locales/fa-IR.d.ts +28 -0
- package/core/locales/locale-service.d.ts +148 -3
- package/core/locales/pt-BR.d.ts +27 -0
- package/core/locales/ru-RU.d.ts +20 -1
- package/core/locales/zh-CN.d.ts +26 -0
- package/core/option/action.d.ts +1 -1
- package/core/option/optgroup.d.ts +1 -1
- package/core/option/option.d.ts +37 -8
- package/core/overlay/overlay-position-map.d.ts +7 -1
- package/core/pop-up/constants.d.ts +2 -1
- package/core/public-api.d.ts +1 -0
- package/core/select/constants.d.ts +2 -2
- package/core/services/theme.service.d.ts +23 -0
- package/core/styles/_variables.scss +1 -0
- package/core/styles/common/_select.scss +24 -24
- package/core/styles/theming/_components-theming.scss +31 -5
- package/datepicker/calendar-body.component.d.ts +1 -1
- package/datepicker/calendar-header.component.d.ts +9 -3
- package/datepicker/calendar.component.d.ts +4 -5
- package/datepicker/datepicker-animations.d.ts +1 -1
- package/datepicker/datepicker-input.directive.d.ts +4 -4
- package/datepicker/datepicker-toggle.component.d.ts +3 -3
- package/datepicker/datepicker.component.d.ts +2 -2
- package/datepicker/month-view.component.d.ts +5 -6
- package/dl/_dl-theme.scss +2 -56
- package/dl/dl.component.d.ts +1 -2
- package/dl/dl.scss +10 -47
- package/dropdown/dropdown-animations.d.ts +1 -1
- package/dropdown/dropdown-content.directive.d.ts +1 -1
- package/dropdown/dropdown-item.component.d.ts +1 -1
- package/dropdown/dropdown-trigger.directive.d.ts +2 -2
- package/dropdown/dropdown.component.d.ts +1 -1
- package/dropdown/dropdown.types.d.ts +1 -1
- package/esm2022/alert/alert.component.mjs +2 -2
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +24 -21
- package/esm2022/button-toggle/button-toggle.component.mjs +8 -8
- package/esm2022/checkbox/checkbox.mjs +3 -3
- package/esm2022/code-block/actionbar.component.mjs +1 -1
- package/esm2022/code-block/code-block.component.mjs +3 -3
- package/esm2022/core/animation/index.mjs +2 -2
- package/esm2022/core/animation/select-animations.mjs +4 -4
- package/esm2022/core/formatters/index.mjs +10 -2
- package/esm2022/core/formatters/number/formatter.mjs +224 -3
- package/esm2022/core/forms/forms.directive.mjs +5 -5
- package/esm2022/core/locales/en-US.mjs +22 -4
- package/esm2022/core/locales/es-LA.mjs +31 -2
- package/esm2022/core/locales/fa-IR.mjs +30 -2
- package/esm2022/core/locales/locale-service.mjs +4 -4
- package/esm2022/core/locales/pt-BR.mjs +29 -2
- package/esm2022/core/locales/ru-RU.mjs +23 -2
- package/esm2022/core/locales/zh-CN.mjs +28 -2
- package/esm2022/core/option/action.mjs +3 -3
- package/esm2022/core/option/optgroup.mjs +3 -3
- package/esm2022/core/option/option.mjs +47 -10
- package/esm2022/core/overlay/overlay-position-map.mjs +7 -1
- package/esm2022/core/pop-up/constants.mjs +2 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +12 -3
- package/esm2022/core/public-api.mjs +2 -1
- package/esm2022/core/select/constants.mjs +3 -3
- package/esm2022/core/services/theme.service.mjs +60 -0
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-body.component.mjs +3 -3
- package/esm2022/datepicker/calendar-header.component.mjs +9 -8
- package/esm2022/datepicker/calendar.component.mjs +7 -16
- package/esm2022/datepicker/datepicker-animations.mjs +2 -2
- package/esm2022/datepicker/datepicker-input.directive.mjs +29 -20
- package/esm2022/datepicker/datepicker-toggle.component.mjs +6 -6
- package/esm2022/datepicker/datepicker.component.mjs +11 -11
- package/esm2022/datepicker/month-view.component.mjs +9 -18
- package/esm2022/dl/dl.component.mjs +3 -7
- package/esm2022/dropdown/dropdown-animations.mjs +4 -4
- package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
- package/esm2022/dropdown/dropdown-errors.mjs +6 -6
- package/esm2022/dropdown/dropdown-item.component.mjs +5 -5
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +8 -8
- package/esm2022/dropdown/dropdown.component.mjs +8 -8
- package/esm2022/dropdown/dropdown.types.mjs +1 -1
- package/esm2022/file-upload/file-drop.mjs +4 -4
- package/esm2022/file-upload/multiple-file-upload.component.mjs +12 -8
- package/esm2022/file-upload/single-file-upload.component.mjs +12 -8
- package/esm2022/form-field/cleaner.mjs +3 -3
- package/esm2022/form-field/form-field.mjs +9 -12
- package/esm2022/form-field/hint.mjs +4 -4
- package/esm2022/form-field/password-hint.mjs +22 -13
- package/esm2022/form-field/password-toggle.mjs +25 -8
- package/esm2022/form-field/suffix.mjs +3 -3
- package/esm2022/form-field/validate.directive.mjs +4 -4
- package/esm2022/input/input-number.mjs +259 -43
- package/esm2022/link/link.component.mjs +3 -3
- package/esm2022/list/list-selection.component.mjs +6 -6
- package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
- package/esm2022/modal/modal-control.service.mjs +5 -5
- package/esm2022/modal/modal-ref.class.mjs +1 -1
- package/esm2022/modal/modal.component.mjs +126 -112
- package/esm2022/modal/modal.module.mjs +13 -7
- package/esm2022/modal/modal.service.mjs +23 -23
- package/esm2022/modal/modal.type.mjs +1 -3
- package/esm2022/navbar/navbar-item.component.mjs +17 -17
- package/esm2022/navbar/navbar.component.mjs +18 -9
- package/esm2022/navbar/vertical-navbar.component.mjs +9 -6
- package/esm2022/popover/popover-animations.mjs +2 -2
- package/esm2022/popover/popover-confirm.component.mjs +9 -9
- package/esm2022/popover/popover.component.mjs +23 -23
- package/esm2022/radio/radio.component.mjs +11 -8
- package/esm2022/select/select.component.mjs +35 -21
- package/esm2022/sidebar/sidebar-animations.mjs +2 -2
- package/esm2022/sidebar/sidebar.component.mjs +9 -9
- package/esm2022/sidepanel/sidepanel-directives.mjs +2 -2
- package/esm2022/sidepanel/sidepanel.module.mjs +10 -4
- package/esm2022/splitter/splitter.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +3 -3
- package/esm2022/tabs/paginated-tab-header.mjs +11 -2
- package/esm2022/tabs/tab-body.component.mjs +7 -7
- package/esm2022/tabs/tab-content.directive.mjs +3 -3
- package/esm2022/tabs/tab-group.component.mjs +3 -3
- package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +6 -6
- package/esm2022/tabs/tab.component.mjs +14 -5
- package/esm2022/tabs/tabs-animations.mjs +2 -2
- package/esm2022/tags/tag-default-options.mjs +1 -1
- package/esm2022/tags/tag-input.mjs +12 -10
- package/esm2022/tags/tag-list.component.mjs +12 -8
- package/esm2022/tags/tag.component.mjs +13 -13
- package/esm2022/timepicker/timepicker.directive.mjs +10 -10
- package/esm2022/timezone/timezone-option.component.mjs +3 -3
- package/esm2022/timezone/timezone-select.component.mjs +5 -5
- package/esm2022/title/title.directive.mjs +6 -6
- package/esm2022/toast/toast.module.mjs +10 -4
- package/esm2022/toggle/toggle.component.mjs +3 -3
- package/esm2022/tooltip/tooltip.component.mjs +16 -16
- package/esm2022/tree/node.mjs +5 -5
- package/esm2022/tree/outlet.mjs +3 -3
- package/esm2022/tree/padding.directive.mjs +6 -6
- package/esm2022/tree/toggle.mjs +8 -8
- package/esm2022/tree/tree-base.mjs +3 -3
- package/esm2022/tree/tree-option.component.mjs +9 -5
- package/esm2022/tree/tree-selection.component.mjs +8 -6
- package/esm2022/tree/tree.mjs +3 -3
- package/esm2022/tree-select/tree-select.component.mjs +13 -13
- package/fesm2022/koobiq-components-alert.mjs +2 -2
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +24 -21
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +7 -7
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +2 -2
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +3 -3
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +526 -39
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +66 -74
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +2 -6
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +28 -28
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +23 -15
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +61 -40
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +257 -43
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +2 -2
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +5 -5
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +161 -145
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +39 -31
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +30 -30
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +10 -7
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +34 -20
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +8 -8
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +10 -4
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +2 -2
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +2 -2
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +39 -21
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +34 -28
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +9 -9
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +6 -6
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +5 -5
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +8 -2
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +15 -15
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +12 -12
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +37 -31
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/file-drop.d.ts +1 -1
- package/file-upload/multiple-file-upload.component.d.ts +4 -3
- package/file-upload/single-file-upload.component.d.ts +4 -3
- package/form-field/_hint-theme.scss +1 -1
- package/form-field/cleaner.d.ts +1 -1
- package/form-field/form-field.d.ts +2 -3
- package/form-field/form-field.scss +2 -2
- package/form-field/hint.d.ts +1 -1
- package/form-field/password-hint.d.ts +7 -3
- package/form-field/password-toggle.d.ts +12 -6
- package/form-field/suffix.d.ts +1 -1
- package/form-field/validate.directive.d.ts +1 -1
- package/icon/_icon-theme.scss +2 -1
- package/input/_input-theme.scss +2 -1
- package/input/input-number.d.ts +61 -10
- package/link/_link-theme.scss +4 -0
- package/link/link.component.d.ts +1 -1
- package/list/list-selection.component.d.ts +1 -1
- package/loader-overlay/loader-overlay.scss +3 -0
- package/modal/README.md +5 -5
- package/modal/modal-ref.class.d.ts +2 -2
- package/modal/modal.component.d.ts +51 -47
- package/modal/modal.module.d.ts +2 -1
- package/modal/modal.scss +7 -0
- package/modal/modal.type.d.ts +35 -36
- package/navbar/navbar-item.component.d.ts +4 -3
- package/navbar/navbar.component.d.ts +5 -2
- package/navbar/vertical-navbar.component.d.ts +4 -2
- package/package.json +9 -11
- package/popover/README.md +14 -14
- package/popover/_popover-theme.scss +11 -11
- package/popover/popover-animations.d.ts +1 -1
- package/popover/popover-confirm.component.d.ts +1 -1
- package/popover/popover.component.d.ts +3 -3
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/radio/_radio-theme.scss +15 -2
- package/radio/radio.component.d.ts +2 -2
- package/radio/radio.scss +13 -0
- package/select/select.component.d.ts +14 -11
- package/select/select.scss +1 -1
- package/sidebar/sidebar-animations.d.ts +1 -1
- package/sidebar/sidebar.component.d.ts +3 -3
- package/splitter/splitter.component.d.ts +1 -1
- package/table/table.component.d.ts +1 -1
- package/tabs/paginated-tab-header.d.ts +1 -0
- package/tabs/tab-body.component.d.ts +1 -1
- package/tabs/tab-content.directive.d.ts +1 -1
- package/tabs/tab-nav-bar/tab-nav-bar.d.ts +2 -2
- package/tabs/tab.component.d.ts +1 -1
- package/tabs/tabs-animations.d.ts +1 -1
- package/tags/_tag-theme.scss +1 -1
- package/tags/tag-default-options.d.ts +4 -0
- package/tags/tag-input.d.ts +2 -2
- package/tags/tag-list.component.d.ts +3 -2
- package/tags/tag-list.scss +2 -0
- package/tags/tag.component.d.ts +4 -4
- package/timepicker/timepicker.directive.d.ts +2 -2
- package/timezone/timezone-option.component.d.ts +1 -1
- package/timezone/timezone-select.component.d.ts +1 -1
- package/title/title.directive.d.ts +1 -1
- package/toggle/toggle.component.d.ts +1 -1
- package/tooltip/tooltip.component.d.ts +3 -3
- package/tree/node.d.ts +1 -1
- package/tree/outlet.d.ts +1 -1
- package/tree/padding.directive.d.ts +1 -1
- package/tree/toggle.d.ts +3 -3
- package/tree/tree-base.d.ts +1 -1
- package/tree/tree-option.component.d.ts +1 -1
- package/tree/tree-option.scss +2 -0
- package/tree/tree-selection.component.d.ts +1 -1
- package/tree/tree.d.ts +1 -1
- package/tree-select/tree-select.component.d.ts +1 -1
|
@@ -46,13 +46,13 @@ class KbqFileDropDirective {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFileDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqFileDropDirective, selector: "[
|
|
49
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: { filesDropped: "filesDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.dragover": "dragover" } }, exportAs: ["kbqFileDrop"], ngImport: i0 }); }
|
|
50
50
|
}
|
|
51
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFileDropDirective, decorators: [{
|
|
52
52
|
type: Directive,
|
|
53
53
|
args: [{
|
|
54
|
-
selector: '[
|
|
55
|
-
exportAs: '
|
|
54
|
+
selector: '[kbqFileDrop]',
|
|
55
|
+
exportAs: 'kbqFileDrop',
|
|
56
56
|
host: {
|
|
57
57
|
'[class.dragover]': 'dragover',
|
|
58
58
|
'(dragover)': 'onDragOver($event)',
|
|
@@ -83,9 +83,10 @@ class KbqMultipleFileUploadComponent {
|
|
|
83
83
|
get hasErrors() {
|
|
84
84
|
return this.errors && !!this.errors.length;
|
|
85
85
|
}
|
|
86
|
-
constructor(focusMonitor, cdr, config) {
|
|
86
|
+
constructor(focusMonitor, cdr, renderer, config) {
|
|
87
87
|
this.focusMonitor = focusMonitor;
|
|
88
88
|
this.cdr = cdr;
|
|
89
|
+
this.renderer = renderer;
|
|
89
90
|
this.config = config;
|
|
90
91
|
this.errors = [];
|
|
91
92
|
this.files = [];
|
|
@@ -116,6 +117,9 @@ class KbqMultipleFileUploadComponent {
|
|
|
116
117
|
...this.files,
|
|
117
118
|
...this.mapToFileItem(target.files)
|
|
118
119
|
];
|
|
120
|
+
/* even if the user selects the same file,
|
|
121
|
+
the onchange event will be triggered every time user clicks on the control.*/
|
|
122
|
+
this.renderer.setProperty(this.input.nativeElement, 'value', null);
|
|
119
123
|
this.onFileListChange();
|
|
120
124
|
}
|
|
121
125
|
onFileDropped(files) {
|
|
@@ -174,15 +178,15 @@ class KbqMultipleFileUploadComponent {
|
|
|
174
178
|
const fileExt = file.name.split('.').pop() || '';
|
|
175
179
|
return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;
|
|
176
180
|
}
|
|
177
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqMultipleFileUploadComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
178
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqMultipleFileUploadComponent, selector: "kbq-multiple-file-upload", inputs: { accept: "accept", disabled: "disabled", errors: "errors", files: "files", size: "size", inputId: "inputId", customValidation: "customValidation" }, outputs: { fileQueueChanged: "fileQueueChanged" }, host: { classAttribute: "kbq-multiple-file-upload" }, queries: [{ propertyName: "customFileIcon", first: true, predicate: ["mcFileIcon"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n mcFileDrop\n [class.disabled]=\"disabled\"\n [class.selected]=\"files && files.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n <ng-container *ngIf=\"!files.length; else fileOutput\">\n <div class=\"dropzone\">\n <ng-container *ngIf=\"size === 'default' else compactCaption\">\n <i kbq-icon=\"mc-upload-to-cloud_64\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <span class=\"multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n\n\n </ng-container>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n multiple\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n\n<div class=\"kbq-file-upload__info-section\">\n <kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n </kbq-hint>\n\n <ng-container *ngIf=\"hasErrors\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\"\n *ngFor=\"let error of errors\">\n {{ error }}\n </kbq-hint>\n </ng-container>\n</div>\n\n<ng-template #fileOutput>\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div [class]=\"'kbq-file-upload__' + column.cssClass\" *ngFor=\"let column of columnDefs\">\n {{ column.header }}\n </div>\n </div>\n </div>\n\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.delete)=\"deleteFile(index)\"\n (keydown.backspace)=\"deleteFile(index)\"\n *ngFor=\"let file of files; let index = index;\">\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async } as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\"\n [ngTemplateOutlet]=\"customFileIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n >\n </ng-container>\n\n <kbq-progress-spinner\n class=\"pt-nat-file-upload-name-cell__icon\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <span class=\"file-item__text\" [mcEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></span>\n </div>\n <div class=\"kbq-file-upload__size\">\n {{ file.file.size | mcDataSize }}\n </div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon=\"mc-close-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n </kbq-list-selection>\n </div>\n\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionTextWhenSelected }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #compactCaption>\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative;cursor:pointer}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .dropzone .dropzone__text{margin-left:6px}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{border-radius:var(--kbq-file-upload-size-multiple-border-radius, 8px);border-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-style:var(--kbq-file-upload-size-multiple-border-style, dashed)}.kbq-file-upload.default{min-height:176px;justify-content:center}.kbq-file-upload.compact:not(.selected){height:var(--kbq-file-upload-size-single-height, 48px);padding-top:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-bottom:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-left:12px}.kbq-file-upload .kbq-list-option{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px)}.kbq-file-upload .kbq-list-option .kbq-icon{margin-right:0}.kbq-file-upload .kbq-file-upload__grid{min-height:144px}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner,.kbq-file-upload .kbq-file-upload__row{display:flex;align-items:center}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{width:65%;max-width:65%}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size{width:64px;min-width:64px;text-align:left;flex-grow:1}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__action,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__action{padding-left:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px);padding-right:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px)}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{display:flex;align-items:center}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file .file-item__text{margin-left:0;width:90%}.kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-width:1px;border-bottom-style:solid}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px);border:2px solid transparent;border-bottom:unset;box-sizing:border-box;height:var(--kbq-list-size-item-height, 32px)}.kbq-file-upload .btn-upload .dropzone{margin:0;border-top-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-top-style:var(--kbq-file-upload-size-multiple-border-style, dashed);padding:4px 12px}.kbq-file-upload .file-upload__dropzone{width:100%;height:100%}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i5.KbqListSelection, selector: "kbq-list-selection", inputs: ["disabled", "autoSelect", "noUnselectLast", "horizontal", "tabIndex", "compareWith"], outputs: ["onSelectAll", "onCopy", "selectionChange"], exportAs: ["mcListSelection"] }, { kind: "component", type: i5.KbqListOption, selector: "kbq-list-option", inputs: ["checkboxPosition", "value", "disabled", "showCheckbox", "selected"], exportAs: ["kbqListOption"] }, { kind: "component", type: i6.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff"], exportAs: ["mcHint"] }, { kind: "directive", type: i7.KbqEllipsisCenterDirective, selector: "[mcEllipsisCenter]", inputs: ["mcEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: KbqFileDropDirective, selector: "[mcFileDrop]", outputs: ["filesDropped"], exportAs: ["mcFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.KbqDataSizePipe, name: "mcDataSize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
181
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqMultipleFileUploadComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
182
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqMultipleFileUploadComponent, selector: "kbq-multiple-file-upload", inputs: { accept: "accept", disabled: "disabled", errors: "errors", files: "files", size: "size", inputId: "inputId", customValidation: "customValidation" }, outputs: { fileQueueChanged: "fileQueueChanged" }, host: { classAttribute: "kbq-multiple-file-upload" }, queries: [{ propertyName: "customFileIcon", first: true, predicate: ["kbqFileIcon"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.disabled]=\"disabled\"\n [class.selected]=\"files && files.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n <ng-container *ngIf=\"!files.length; else fileOutput\">\n <div class=\"dropzone\">\n <ng-container *ngIf=\"size === 'default' else compactCaption\">\n <i kbq-icon=\"mc-upload-to-cloud_64\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <span class=\"multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n\n\n </ng-container>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n multiple\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n\n<div class=\"kbq-file-upload__info-section\">\n <kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n </kbq-hint>\n\n <ng-container *ngIf=\"hasErrors\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\"\n *ngFor=\"let error of errors\">\n {{ error }}\n </kbq-hint>\n </ng-container>\n</div>\n\n<ng-template #fileOutput>\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div [class]=\"'kbq-file-upload__' + column.cssClass\" *ngFor=\"let column of columnDefs\">\n {{ column.header }}\n </div>\n </div>\n </div>\n\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.delete)=\"deleteFile(index)\"\n (keydown.backspace)=\"deleteFile(index)\"\n *ngFor=\"let file of files; let index = index;\">\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async } as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\"\n [ngTemplateOutlet]=\"customFileIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n >\n </ng-container>\n\n <kbq-progress-spinner\n class=\"pt-nat-file-upload-name-cell__icon\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <span class=\"file-item__text\" [mcEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></span>\n </div>\n <div class=\"kbq-file-upload__size\">\n {{ file.file.size | mcDataSize }}\n </div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon=\"mc-close-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n </kbq-list-selection>\n </div>\n\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionTextWhenSelected }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #compactCaption>\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative;cursor:pointer}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .dropzone .dropzone__text{margin-left:6px}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{border-radius:var(--kbq-file-upload-size-multiple-border-radius, 8px);border-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-style:var(--kbq-file-upload-size-multiple-border-style, dashed)}.kbq-file-upload.default{min-height:176px;justify-content:center}.kbq-file-upload.compact:not(.selected){height:var(--kbq-file-upload-size-single-height, 48px);padding-top:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-bottom:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-left:12px}.kbq-file-upload .kbq-list-option{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px)}.kbq-file-upload .kbq-list-option .kbq-icon{margin-right:0}.kbq-file-upload .kbq-file-upload__grid{min-height:144px}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner,.kbq-file-upload .kbq-file-upload__row{display:flex;align-items:center}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{width:65%;max-width:65%}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size{width:64px;min-width:64px;text-align:left;flex-grow:1}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__action,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__action{padding-left:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px);padding-right:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px)}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{display:flex;align-items:center}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file .file-item__text{margin-left:0;width:90%}.kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-width:1px;border-bottom-style:solid}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px);border:2px solid transparent;border-bottom:unset;box-sizing:border-box;height:var(--kbq-list-size-item-height, 32px)}.kbq-file-upload .btn-upload .dropzone{margin:0;border-top-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-top-style:var(--kbq-file-upload-size-multiple-border-style, dashed);padding:4px 12px}.kbq-file-upload .file-upload__dropzone{width:100%;height:100%}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i5.KbqListSelection, selector: "kbq-list-selection", inputs: ["disabled", "autoSelect", "noUnselectLast", "horizontal", "tabIndex", "compareWith"], outputs: ["onSelectAll", "onCopy", "selectionChange"], exportAs: ["kbqListSelection"] }, { kind: "component", type: i5.KbqListOption, selector: "kbq-list-option", inputs: ["checkboxPosition", "value", "disabled", "showCheckbox", "selected"], exportAs: ["kbqListOption"] }, { kind: "component", type: i6.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff"], exportAs: ["kbqHint"] }, { kind: "directive", type: i7.KbqEllipsisCenterDirective, selector: "[mcEllipsisCenter]", inputs: ["mcEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.KbqDataSizePipe, name: "mcDataSize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
179
183
|
}
|
|
180
184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqMultipleFileUploadComponent, decorators: [{
|
|
181
185
|
type: Component,
|
|
182
186
|
args: [{ selector: 'kbq-multiple-file-upload', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
183
187
|
class: 'kbq-multiple-file-upload'
|
|
184
|
-
}, template: "<div class=\"kbq-file-upload\"\n mcFileDrop\n [class.disabled]=\"disabled\"\n [class.selected]=\"files && files.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n <ng-container *ngIf=\"!files.length; else fileOutput\">\n <div class=\"dropzone\">\n <ng-container *ngIf=\"size === 'default' else compactCaption\">\n <i kbq-icon=\"mc-upload-to-cloud_64\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <span class=\"multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n\n\n </ng-container>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n multiple\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n\n<div class=\"kbq-file-upload__info-section\">\n <kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n </kbq-hint>\n\n <ng-container *ngIf=\"hasErrors\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\"\n *ngFor=\"let error of errors\">\n {{ error }}\n </kbq-hint>\n </ng-container>\n</div>\n\n<ng-template #fileOutput>\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div [class]=\"'kbq-file-upload__' + column.cssClass\" *ngFor=\"let column of columnDefs\">\n {{ column.header }}\n </div>\n </div>\n </div>\n\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.delete)=\"deleteFile(index)\"\n (keydown.backspace)=\"deleteFile(index)\"\n *ngFor=\"let file of files; let index = index;\">\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async } as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\"\n [ngTemplateOutlet]=\"customFileIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n >\n </ng-container>\n\n <kbq-progress-spinner\n class=\"pt-nat-file-upload-name-cell__icon\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <span class=\"file-item__text\" [mcEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></span>\n </div>\n <div class=\"kbq-file-upload__size\">\n {{ file.file.size | mcDataSize }}\n </div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon=\"mc-close-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n </kbq-list-selection>\n </div>\n\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionTextWhenSelected }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #compactCaption>\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative;cursor:pointer}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .dropzone .dropzone__text{margin-left:6px}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{border-radius:var(--kbq-file-upload-size-multiple-border-radius, 8px);border-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-style:var(--kbq-file-upload-size-multiple-border-style, dashed)}.kbq-file-upload.default{min-height:176px;justify-content:center}.kbq-file-upload.compact:not(.selected){height:var(--kbq-file-upload-size-single-height, 48px);padding-top:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-bottom:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-left:12px}.kbq-file-upload .kbq-list-option{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px)}.kbq-file-upload .kbq-list-option .kbq-icon{margin-right:0}.kbq-file-upload .kbq-file-upload__grid{min-height:144px}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner,.kbq-file-upload .kbq-file-upload__row{display:flex;align-items:center}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{width:65%;max-width:65%}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size{width:64px;min-width:64px;text-align:left;flex-grow:1}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__action,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__action{padding-left:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px);padding-right:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px)}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{display:flex;align-items:center}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file .file-item__text{margin-left:0;width:90%}.kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-width:1px;border-bottom-style:solid}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px);border:2px solid transparent;border-bottom:unset;box-sizing:border-box;height:var(--kbq-list-size-item-height, 32px)}.kbq-file-upload .btn-upload .dropzone{margin:0;border-top-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-top-style:var(--kbq-file-upload-size-multiple-border-style, dashed);padding:4px 12px}.kbq-file-upload .file-upload__dropzone{width:100%;height:100%}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"] }]
|
|
185
|
-
}], ctorParameters: function () { return [{ type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
188
|
+
}, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.disabled]=\"disabled\"\n [class.selected]=\"files && files.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n <ng-container *ngIf=\"!files.length; else fileOutput\">\n <div class=\"dropzone\">\n <ng-container *ngIf=\"size === 'default' else compactCaption\">\n <i kbq-icon=\"mc-upload-to-cloud_64\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <span class=\"multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n\n\n </ng-container>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n multiple\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n\n<div class=\"kbq-file-upload__info-section\">\n <kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n </kbq-hint>\n\n <ng-container *ngIf=\"hasErrors\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\"\n *ngFor=\"let error of errors\">\n {{ error }}\n </kbq-hint>\n </ng-container>\n</div>\n\n<ng-template #fileOutput>\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div [class]=\"'kbq-file-upload__' + column.cssClass\" *ngFor=\"let column of columnDefs\">\n {{ column.header }}\n </div>\n </div>\n </div>\n\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.delete)=\"deleteFile(index)\"\n (keydown.backspace)=\"deleteFile(index)\"\n *ngFor=\"let file of files; let index = index;\">\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async } as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\"\n [ngTemplateOutlet]=\"customFileIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n >\n </ng-container>\n\n <kbq-progress-spinner\n class=\"pt-nat-file-upload-name-cell__icon\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <span class=\"file-item__text\" [mcEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></span>\n </div>\n <div class=\"kbq-file-upload__size\">\n {{ file.file.size | mcDataSize }}\n </div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon=\"mc-close-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n </kbq-list-selection>\n </div>\n\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionTextWhenSelected }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #compactCaption>\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative;cursor:pointer}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .dropzone .dropzone__text{margin-left:6px}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{border-radius:var(--kbq-file-upload-size-multiple-border-radius, 8px);border-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-style:var(--kbq-file-upload-size-multiple-border-style, dashed)}.kbq-file-upload.default{min-height:176px;justify-content:center}.kbq-file-upload.compact:not(.selected){height:var(--kbq-file-upload-size-single-height, 48px);padding-top:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-bottom:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-left:12px}.kbq-file-upload .kbq-list-option{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px)}.kbq-file-upload .kbq-list-option .kbq-icon{margin-right:0}.kbq-file-upload .kbq-file-upload__grid{min-height:144px}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner,.kbq-file-upload .kbq-file-upload__row{display:flex;align-items:center}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{width:65%;max-width:65%}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size{width:64px;min-width:64px;text-align:left;flex-grow:1}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__action,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size,.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__action{padding-left:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px);padding-right:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px)}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{display:flex;align-items:center}.kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file .file-item__text{margin-left:0;width:90%}.kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-width:1px;border-bottom-style:solid}.kbq-file-upload .kbq-file-multiple-uploaded__header-inner{padding:var(--kbq-file-upload-size-multiple-uploaded-item-horizontal-padding, 8px) var(--kbq-file-upload-size-multiple-uploaded-item-vertical-padding, 8px);border:2px solid transparent;border-bottom:unset;box-sizing:border-box;height:var(--kbq-list-size-item-height, 32px)}.kbq-file-upload .btn-upload .dropzone{margin:0;border-top-width:var(--kbq-file-upload-size-multiple-border-width, 1px);border-top-style:var(--kbq-file-upload-size-multiple-border-style, dashed);padding:4px 12px}.kbq-file-upload .file-upload__dropzone{width:100%;height:100%}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"] }]
|
|
189
|
+
}], ctorParameters: function () { return [{ type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
186
190
|
type: Optional
|
|
187
191
|
}, {
|
|
188
192
|
type: Inject,
|
|
@@ -205,7 +209,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
205
209
|
type: Output
|
|
206
210
|
}], customFileIcon: [{
|
|
207
211
|
type: ContentChild,
|
|
208
|
-
args: ['
|
|
212
|
+
args: ['kbqFileIcon', { static: false, read: TemplateRef }]
|
|
209
213
|
}], input: [{
|
|
210
214
|
type: ViewChild,
|
|
211
215
|
args: ['input']
|
|
@@ -220,9 +224,10 @@ class KbqSingleFileUploadComponent {
|
|
|
220
224
|
get acceptedFiles() {
|
|
221
225
|
return this.accept && this.accept.length > 0 ? this.accept.map((ext) => `.${ext}`).join(',') : '*/*';
|
|
222
226
|
}
|
|
223
|
-
constructor(focusMonitor, cdr, config) {
|
|
227
|
+
constructor(focusMonitor, cdr, renderer, config) {
|
|
224
228
|
this.focusMonitor = focusMonitor;
|
|
225
229
|
this.cdr = cdr;
|
|
230
|
+
this.renderer = renderer;
|
|
226
231
|
this.config = config;
|
|
227
232
|
this.disabled = false;
|
|
228
233
|
this.errors = [];
|
|
@@ -245,10 +250,13 @@ class KbqSingleFileUploadComponent {
|
|
|
245
250
|
return;
|
|
246
251
|
}
|
|
247
252
|
const files = target.files;
|
|
248
|
-
if (files) {
|
|
253
|
+
if (files?.length) {
|
|
249
254
|
this.files = [this.mapToFileItem(files[0])];
|
|
250
255
|
this.fileQueueChanged.emit(this.files[0]);
|
|
251
256
|
}
|
|
257
|
+
/* even if the user selects the same file,
|
|
258
|
+
the onchange event will be triggered every time user clicks on the control.*/
|
|
259
|
+
this.renderer.setProperty(this.input.nativeElement, 'value', null);
|
|
252
260
|
}
|
|
253
261
|
deleteItem(event) {
|
|
254
262
|
if (this.disabled) {
|
|
@@ -296,15 +304,15 @@ class KbqSingleFileUploadComponent {
|
|
|
296
304
|
const fileExt = file.name.split('.').pop() || '';
|
|
297
305
|
return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;
|
|
298
306
|
}
|
|
299
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSingleFileUploadComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
300
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqSingleFileUploadComponent, selector: "kbq-single-file-upload", inputs: { accept: "accept", disabled: "disabled", errors: "errors", files: "files", inputId: "inputId", customValidation: "customValidation" }, outputs: { fileQueueChanged: "fileQueueChanged" }, host: { classAttribute: "kbq-single-file-upload" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n mcFileDrop\n [class.disabled]=\"disabled\"\n [class.kbq-error]=\"errors && errors.length\"\n (filesDropped)=\"onFileDropped($event)\">\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors && errors.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [mcEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <button kbq-button\n class=\"kbq-button_transparent\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n <i kbq-icon=\"mc-close-circle_16\"></i>\n </button>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative;cursor:pointer}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .dropzone .dropzone__text{margin-left:6px}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{height:var(--kbq-file-upload-size-single-height, 48px);padding-top:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-bottom:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-left:12px;border-radius:var(--kbq-file-upload-size-single-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-border-width, 1px);border-style:var(--kbq-file-upload-size-single-border-style, dashed)}.kbq-file-upload .file-item{width:100%}.kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%}.kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{margin-left:8px;width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i5$1.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i5$1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: i6.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff"], exportAs: ["mcHint"] }, { kind: "directive", type: i7.KbqEllipsisCenterDirective, selector: "[mcEllipsisCenter]", inputs: ["mcEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: KbqFileDropDirective, selector: "[mcFileDrop]", outputs: ["filesDropped"], exportAs: ["mcFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
307
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSingleFileUploadComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
308
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqSingleFileUploadComponent, selector: "kbq-single-file-upload", inputs: { accept: "accept", disabled: "disabled", errors: "errors", files: "files", inputId: "inputId", customValidation: "customValidation" }, outputs: { fileQueueChanged: "fileQueueChanged" }, host: { classAttribute: "kbq-single-file-upload" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.disabled]=\"disabled\"\n [class.kbq-error]=\"errors && errors.length\"\n (filesDropped)=\"onFileDropped($event)\">\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors && errors.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [mcEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <button kbq-button\n class=\"kbq-button_transparent\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n <i kbq-icon=\"mc-close-circle_16\"></i>\n </button>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative;cursor:pointer}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .dropzone .dropzone__text{margin-left:6px}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{height:var(--kbq-file-upload-size-single-height, 48px);padding-top:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-bottom:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-left:12px;border-radius:var(--kbq-file-upload-size-single-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-border-width, 1px);border-style:var(--kbq-file-upload-size-single-border-style, dashed)}.kbq-file-upload .file-item{width:100%}.kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%}.kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{margin-left:8px;width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i5$1.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i5$1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: i6.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff"], exportAs: ["kbqHint"] }, { kind: "directive", type: i7.KbqEllipsisCenterDirective, selector: "[mcEllipsisCenter]", inputs: ["mcEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
301
309
|
}
|
|
302
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSingleFileUploadComponent, decorators: [{
|
|
303
311
|
type: Component,
|
|
304
312
|
args: [{ selector: 'kbq-single-file-upload', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
305
313
|
class: 'kbq-single-file-upload'
|
|
306
|
-
}, template: "<div class=\"kbq-file-upload\"\n
|
|
307
|
-
}], ctorParameters: function () { return [{ type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
314
|
+
}, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.disabled]=\"disabled\"\n [class.kbq-error]=\"errors && errors.length\"\n (filesDropped)=\"onFileDropped($event)\">\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors && errors.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [mcEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <button kbq-button\n class=\"kbq-button_transparent\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n <i kbq-icon=\"mc-close-circle_16\"></i>\n </button>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative;cursor:pointer}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .dropzone .dropzone__text{margin-left:6px}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.kbq-file-upload{height:var(--kbq-file-upload-size-single-height, 48px);padding-top:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-bottom:var(--kbq-file-upload-size-single-vertical-padding, 12px);padding-left:12px;border-radius:var(--kbq-file-upload-size-single-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-border-width, 1px);border-style:var(--kbq-file-upload-size-single-border-style, dashed)}.kbq-file-upload .file-item{width:100%}.kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%}.kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{margin-left:8px;width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"] }]
|
|
315
|
+
}], ctorParameters: function () { return [{ type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
308
316
|
type: Optional
|
|
309
317
|
}, {
|
|
310
318
|
type: Inject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-file-upload.mjs","sources":["../../../packages/components/file-upload/file-upload.ts","../../../packages/components/file-upload/file-drop.ts","../../../packages/components/file-upload/multiple-file-upload.component.ts","../../../packages/components/file-upload/multiple-file-upload.component.html","../../../packages/components/file-upload/single-file-upload.component.ts","../../../packages/components/file-upload/single-file-upload.component.html","../../../packages/components/file-upload/file-upload.module.ts","../../../packages/components/file-upload/koobiq-components-file-upload.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n\nexport interface KbqFileItem {\n file: File;\n hasError?: boolean;\n loading?: BehaviorSubject<boolean>;\n progress?: BehaviorSubject<number>;\n}\n\nexport interface KbqInputFile {\n disabled: boolean;\n files: KbqFileItem[] | KbqFileItem | null;\n accept?: string[];\n onFileSelectedViaClick(event: Event): void;\n onFileDropped(files: FileList): void;\n}\n\nexport interface KbqInputFileLabel {\n /* Text for description, used with `browseLink` */\n captionText: string;\n /* Text for link with which the file(s) can be selected to download */\n browseLink: string;\n /* Header for multiple file-upload in default size */\n title?: string | undefined;\n}\n\nexport type KbqFileValidatorFn = (file: File) => string | null;\n\n/* Object for labels customization inside file upload component */\nexport const KBQ_FILE_UPLOAD_CONFIGURATION = new InjectionToken<KbqInputFileLabel>('KbqFileUploadConfiguration');\n\n","import { Directive, Output, EventEmitter } from '@angular/core';\n\n\n@Directive({\n selector: '[mcFileDrop]',\n exportAs: 'mcFileDrop',\n host: {\n '[class.dragover]': 'dragover',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)'\n }\n})\nexport class KbqFileDropDirective {\n dragover: boolean;\n\n @Output() filesDropped: EventEmitter<FileList> = new EventEmitter<FileList>();\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n\n if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.filesDropped.emit(event.dataTransfer.files);\n }\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter, Inject,\n Input, OnDestroy, Optional,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CanDisable } from '@koobiq/components/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFileItem,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\n\nlet nextMultipleFileUploadUniqueId = 0;\nexport interface KbqInputFileMultipleLabel extends KbqInputFileLabel {\n captionTextWhenSelected: string;\n captionTextForCompactSize: string;\n gridHeaders: {\n file: string;\n size: string;\n };\n [k: string | number | symbol]: unknown;\n}\n\n\nexport const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileMultipleLabel = {\n captionText: 'Перетащите сюда или',\n captionTextWhenSelected: 'Перетащите еще или',\n captionTextForCompactSize: 'Перетащите файлы или',\n browseLink: 'выберите',\n title: 'Загрузите файлы',\n gridHeaders: {\n file: 'Файл',\n size: 'Размер'\n }\n};\n\n\n@Component({\n selector: 'kbq-multiple-file-upload',\n templateUrl: './multiple-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './multiple-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-multiple-file-upload'\n }\n})\nexport class KbqMultipleFileUploadComponent implements AfterViewInit, OnDestroy, KbqInputFile, CanDisable {\n @Input() accept?: string[];\n @Input() disabled: boolean;\n @Input() errors: string[] = [];\n @Input() files: KbqFileItem[] = [];\n @Input() size: 'compact' | 'default' = 'default';\n @Input() inputId: string = `kbq-multiple-file-upload-${nextMultipleFileUploadUniqueId++}`;\n @Input() customValidation?: KbqFileValidatorFn[];\n @Output() fileQueueChanged: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n\n @ContentChild('mcFileIcon', { static: false, read: TemplateRef }) customFileIcon: TemplateRef<HTMLElement>;\n\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n hasFocus = false;\n columnDefs: { header: string; cssClass: string }[];\n\n private focusMonitorSubscription = Subscription.EMPTY;\n\n get acceptedFiles(): string {\n return this.accept && this.accept.length > 0 ? this.accept.map((ext: string) => `.${ext}`).join(',') : '*/*';\n }\n\n get hasErrors(): boolean {\n return this.errors && !!this.errors.length;\n }\n\n constructor(\n private focusMonitor: FocusMonitor,\n private cdr: ChangeDetectorRef,\n @Optional() @Inject(KBQ_FILE_UPLOAD_CONFIGURATION) public config: KbqInputFileMultipleLabel\n ) {\n this.config = config || KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n }\n\n ngAfterViewInit(): void {\n this.focusMonitorSubscription = this.focusMonitor.monitor(this.input)\n .subscribe((origin) => this.onFocus(origin === 'keyboard'));\n }\n\n ngOnDestroy(): void {\n this.focusMonitorSubscription.unsubscribe();\n }\n\n onFileSelectedViaClick({ target }: Event) {\n if (this.disabled) { return; }\n this.files = [\n ...this.files,\n ...this.mapToFileItem((target as HTMLInputElement).files)\n ];\n\n this.onFileListChange();\n }\n\n onFileDropped(files: FileList) {\n if (this.disabled) { return; }\n this.files = [...this.files, ...this.mapToFileItem(files)];\n\n this.onFileListChange();\n }\n\n deleteFile(index: number, event?: MouseEvent) {\n if (this.disabled) { return; }\n event?.stopPropagation();\n this.files.splice(index, 1);\n this.files = [...this.files];\n\n this.onFileListChange();\n }\n\n onFileListChange(): void {\n this.fileQueueChanged.emit(this.files);\n }\n\n onFocus(focusState: boolean) {\n if (this.disabled) { return; }\n this.hasFocus = focusState;\n this.cdr.markForCheck();\n }\n\n private mapToFileItem(files: FileList | null): KbqFileItem[] {\n if (!files) { return []; }\n\n return Array.from(files)\n .filter((file) => this.isCorrectExtension(file))\n .map((file: File) => ({\n file,\n hasError: this.validateFile(file),\n loading: new BehaviorSubject<boolean>(false),\n progress: new BehaviorSubject<number>(0)\n }));\n }\n\n private validateFile(file: File): boolean | undefined {\n if (this.customValidation && this.customValidation.length) {\n const errorsPerFile = this.customValidation.reduce(\n (errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n },\n []).filter(Boolean) as string[];\n\n this.errors = [\n ...this.errors,\n ...errorsPerFile\n ];\n\n return !!errorsPerFile.length;\n }\n }\n\n private isCorrectExtension(file: File): boolean {\n const fileExt: string = file.name.split('.').pop() || '';\n\n return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;\n }\n}\n","<div class=\"kbq-file-upload\"\n mcFileDrop\n [class.disabled]=\"disabled\"\n [class.selected]=\"files && files.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n <ng-container *ngIf=\"!files.length; else fileOutput\">\n <div class=\"dropzone\">\n <ng-container *ngIf=\"size === 'default' else compactCaption\">\n <i kbq-icon=\"mc-upload-to-cloud_64\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <span class=\"multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n\n\n </ng-container>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n multiple\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n\n<div class=\"kbq-file-upload__info-section\">\n <kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n </kbq-hint>\n\n <ng-container *ngIf=\"hasErrors\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\"\n *ngFor=\"let error of errors\">\n {{ error }}\n </kbq-hint>\n </ng-container>\n</div>\n\n<ng-template #fileOutput>\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div [class]=\"'kbq-file-upload__' + column.cssClass\" *ngFor=\"let column of columnDefs\">\n {{ column.header }}\n </div>\n </div>\n </div>\n\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.delete)=\"deleteFile(index)\"\n (keydown.backspace)=\"deleteFile(index)\"\n *ngFor=\"let file of files; let index = index;\">\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async } as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\"\n [ngTemplateOutlet]=\"customFileIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n >\n </ng-container>\n\n <kbq-progress-spinner\n class=\"pt-nat-file-upload-name-cell__icon\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <span class=\"file-item__text\" [mcEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></span>\n </div>\n <div class=\"kbq-file-upload__size\">\n {{ file.file.size | mcDataSize }}\n </div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon=\"mc-close-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n </kbq-list-selection>\n </div>\n\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionTextWhenSelected }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #compactCaption>\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n</ng-template>\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter, Inject,\n Input, OnDestroy, Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { CanDisable } from '@koobiq/components/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFileItem,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\n\nlet nextSingleFileUploadUniqueId = 0;\n\nexport const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileLabel = {\n captionText: 'Перетащите файл или',\n browseLink: 'выберите'\n};\n\n@Component({\n selector: 'kbq-single-file-upload',\n templateUrl: './single-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './single-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-single-file-upload'\n }\n})\nexport class KbqSingleFileUploadComponent implements AfterViewInit, OnDestroy, KbqInputFile, CanDisable {\n @Input() accept: string[];\n @Input() disabled: boolean = false;\n @Input() errors: string[] = [];\n @Input() files: KbqFileItem[] = [];\n @Input() inputId: string = `kbq-single-file-upload-${nextSingleFileUploadUniqueId++}`;\n @Input() customValidation?: KbqFileValidatorFn[];\n @Output() fileQueueChanged: EventEmitter<KbqFileItem | null> = new EventEmitter<KbqFileItem | null>();\n\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n hasFocus = false;\n\n private focusMonitorSubscription = Subscription.EMPTY;\n\n get acceptedFiles(): string {\n return this.accept && this.accept.length > 0 ? this.accept.map((ext: string) => `.${ext}`).join(',') : '*/*';\n }\n\n constructor(\n private focusMonitor: FocusMonitor,\n private cdr: ChangeDetectorRef,\n @Optional() @Inject(KBQ_FILE_UPLOAD_CONFIGURATION) public config: KbqInputFileLabel\n ) {\n this.config = config || KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n }\n\n ngAfterViewInit(): void {\n this.focusMonitorSubscription = this.focusMonitor.monitor(this.input)\n .subscribe((origin) => this.onFocus(origin === 'keyboard'));\n }\n\n ngOnDestroy(): void {\n this.focusMonitorSubscription.unsubscribe();\n }\n\n onFileSelectedViaClick({ target }: Event): void {\n if (this.disabled) { return; }\n\n const files: FileList | null = (target as HTMLInputElement).files;\n if (files) {\n this.files = [this.mapToFileItem(files[0])];\n this.fileQueueChanged.emit(this.files[0]);\n }\n }\n\n deleteItem(event?: MouseEvent): void {\n if (this.disabled) { return; }\n\n event?.stopPropagation();\n this.files = [];\n this.errors = [];\n this.fileQueueChanged.emit(null);\n }\n\n onFileDropped(files: FileList): void {\n if (this.disabled) { return; }\n\n if (this.isCorrectExtension(files[0])) {\n this.files = Array.from(files)\n .map((file) => this.mapToFileItem(file));\n this.fileQueueChanged.emit(this.files[0]);\n }\n }\n\n onFocus(focusState: boolean) {\n if (this.disabled) { return; }\n this.hasFocus = focusState;\n this.cdr.markForCheck();\n }\n\n private mapToFileItem(file: File): KbqFileItem {\n this.validateFile(file);\n\n return {\n file,\n progress: new BehaviorSubject<number>(0),\n loading: new BehaviorSubject<boolean>(false)\n };\n }\n\n private validateFile(file: File): void {\n if (this.customValidation && this.customValidation.length) {\n this.errors = this.customValidation.reduce(\n (errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n },\n []).filter(Boolean) as string[];\n }\n }\n\n private isCorrectExtension(file: File): boolean {\n const fileExt: string = file.name.split('.').pop() || '';\n\n return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;\n }\n}\n","<div class=\"kbq-file-upload\"\n mcFileDrop\n [class.disabled]=\"disabled\"\n [class.kbq-error]=\"errors && errors.length\"\n (filesDropped)=\"onFileDropped($event)\">\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors && errors.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [mcEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <button kbq-button\n class=\"kbq-button_transparent\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n <i kbq-icon=\"mc-close-circle_16\"></i>\n </button>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDataSizeModule } from '@koobiq/components/core';\nimport { KbqEllipsisCenterModule } from '@koobiq/components/ellipsis-center';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqListModule } from '@koobiq/components/list';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\n\nimport { KbqFileDropDirective } from './file-drop';\nimport { KbqMultipleFileUploadComponent } from './multiple-file-upload.component';\nimport { KbqSingleFileUploadComponent } from './single-file-upload.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n KbqToolTipModule,\n KbqProgressSpinnerModule,\n KbqIconModule,\n KbqButtonModule,\n KbqListModule,\n KbqFormFieldModule,\n KbqEllipsisCenterModule,\n KbqDataSizeModule\n ],\n declarations: [\n KbqFileDropDirective,\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent\n ],\n exports: [\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent,\n KbqFileDropDirective\n ]\n})\nexport class KbqFileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i8.KbqFileDropDirective","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-file-upload.mjs","sources":["../../../packages/components/file-upload/file-upload.ts","../../../packages/components/file-upload/file-drop.ts","../../../packages/components/file-upload/multiple-file-upload.component.ts","../../../packages/components/file-upload/multiple-file-upload.component.html","../../../packages/components/file-upload/single-file-upload.component.ts","../../../packages/components/file-upload/single-file-upload.component.html","../../../packages/components/file-upload/file-upload.module.ts","../../../packages/components/file-upload/koobiq-components-file-upload.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n\nexport interface KbqFileItem {\n file: File;\n hasError?: boolean;\n loading?: BehaviorSubject<boolean>;\n progress?: BehaviorSubject<number>;\n}\n\nexport interface KbqInputFile {\n disabled: boolean;\n files: KbqFileItem[] | KbqFileItem | null;\n accept?: string[];\n onFileSelectedViaClick(event: Event): void;\n onFileDropped(files: FileList): void;\n}\n\nexport interface KbqInputFileLabel {\n /* Text for description, used with `browseLink` */\n captionText: string;\n /* Text for link with which the file(s) can be selected to download */\n browseLink: string;\n /* Header for multiple file-upload in default size */\n title?: string | undefined;\n}\n\nexport type KbqFileValidatorFn = (file: File) => string | null;\n\n/* Object for labels customization inside file upload component */\nexport const KBQ_FILE_UPLOAD_CONFIGURATION = new InjectionToken<KbqInputFileLabel>('KbqFileUploadConfiguration');\n\n","import { Directive, Output, EventEmitter } from '@angular/core';\n\n\n@Directive({\n selector: '[kbqFileDrop]',\n exportAs: 'kbqFileDrop',\n host: {\n '[class.dragover]': 'dragover',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)'\n }\n})\nexport class KbqFileDropDirective {\n dragover: boolean;\n\n @Output() filesDropped: EventEmitter<FileList> = new EventEmitter<FileList>();\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n\n if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.filesDropped.emit(event.dataTransfer.files);\n }\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter, Inject,\n Input, OnDestroy, Optional,\n Output, Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CanDisable } from '@koobiq/components/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFileItem,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\n\nlet nextMultipleFileUploadUniqueId = 0;\nexport interface KbqInputFileMultipleLabel extends KbqInputFileLabel {\n captionTextWhenSelected: string;\n captionTextForCompactSize: string;\n gridHeaders: {\n file: string;\n size: string;\n };\n [k: string | number | symbol]: unknown;\n}\n\n\nexport const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileMultipleLabel = {\n captionText: 'Перетащите сюда или',\n captionTextWhenSelected: 'Перетащите еще или',\n captionTextForCompactSize: 'Перетащите файлы или',\n browseLink: 'выберите',\n title: 'Загрузите файлы',\n gridHeaders: {\n file: 'Файл',\n size: 'Размер'\n }\n};\n\n\n@Component({\n selector: 'kbq-multiple-file-upload',\n templateUrl: './multiple-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './multiple-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-multiple-file-upload'\n }\n})\nexport class KbqMultipleFileUploadComponent implements AfterViewInit, OnDestroy, KbqInputFile, CanDisable {\n @Input() accept?: string[];\n @Input() disabled: boolean;\n @Input() errors: string[] = [];\n @Input() files: KbqFileItem[] = [];\n @Input() size: 'compact' | 'default' = 'default';\n @Input() inputId: string = `kbq-multiple-file-upload-${nextMultipleFileUploadUniqueId++}`;\n @Input() customValidation?: KbqFileValidatorFn[];\n @Output() fileQueueChanged: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n\n @ContentChild('kbqFileIcon', { static: false, read: TemplateRef }) customFileIcon: TemplateRef<HTMLElement>;\n\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n hasFocus = false;\n columnDefs: { header: string; cssClass: string }[];\n\n private focusMonitorSubscription = Subscription.EMPTY;\n\n get acceptedFiles(): string {\n return this.accept && this.accept.length > 0 ? this.accept.map((ext: string) => `.${ext}`).join(',') : '*/*';\n }\n\n get hasErrors(): boolean {\n return this.errors && !!this.errors.length;\n }\n\n constructor(\n private focusMonitor: FocusMonitor,\n private cdr: ChangeDetectorRef,\n private renderer: Renderer2,\n @Optional() @Inject(KBQ_FILE_UPLOAD_CONFIGURATION) public config: KbqInputFileMultipleLabel\n ) {\n this.config = config || KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n }\n\n ngAfterViewInit(): void {\n this.focusMonitorSubscription = this.focusMonitor.monitor(this.input)\n .subscribe((origin) => this.onFocus(origin === 'keyboard'));\n }\n\n ngOnDestroy(): void {\n this.focusMonitorSubscription.unsubscribe();\n }\n\n onFileSelectedViaClick({ target }: Event) {\n if (this.disabled) { return; }\n this.files = [\n ...this.files,\n ...this.mapToFileItem((target as HTMLInputElement).files)\n ];\n /* even if the user selects the same file,\n the onchange event will be triggered every time user clicks on the control.*/\n this.renderer.setProperty(this.input.nativeElement, 'value', null);\n this.onFileListChange();\n }\n\n onFileDropped(files: FileList) {\n if (this.disabled) { return; }\n this.files = [...this.files, ...this.mapToFileItem(files)];\n\n this.onFileListChange();\n }\n\n deleteFile(index: number, event?: MouseEvent) {\n if (this.disabled) { return; }\n event?.stopPropagation();\n this.files.splice(index, 1);\n this.files = [...this.files];\n\n this.onFileListChange();\n }\n\n onFileListChange(): void {\n this.fileQueueChanged.emit(this.files);\n }\n\n onFocus(focusState: boolean) {\n if (this.disabled) { return; }\n this.hasFocus = focusState;\n this.cdr.markForCheck();\n }\n\n private mapToFileItem(files: FileList | null): KbqFileItem[] {\n if (!files) { return []; }\n\n return Array.from(files)\n .filter((file) => this.isCorrectExtension(file))\n .map((file: File) => ({\n file,\n hasError: this.validateFile(file),\n loading: new BehaviorSubject<boolean>(false),\n progress: new BehaviorSubject<number>(0)\n }));\n }\n\n private validateFile(file: File): boolean | undefined {\n if (this.customValidation && this.customValidation.length) {\n const errorsPerFile = this.customValidation.reduce(\n (errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n },\n []).filter(Boolean) as string[];\n\n this.errors = [\n ...this.errors,\n ...errorsPerFile\n ];\n\n return !!errorsPerFile.length;\n }\n }\n\n private isCorrectExtension(file: File): boolean {\n const fileExt: string = file.name.split('.').pop() || '';\n\n return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;\n }\n}\n","<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.disabled]=\"disabled\"\n [class.selected]=\"files && files.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n <ng-container *ngIf=\"!files.length; else fileOutput\">\n <div class=\"dropzone\">\n <ng-container *ngIf=\"size === 'default' else compactCaption\">\n <i kbq-icon=\"mc-upload-to-cloud_64\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <span class=\"multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n\n\n </ng-container>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n multiple\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n\n<div class=\"kbq-file-upload__info-section\">\n <kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n </kbq-hint>\n\n <ng-container *ngIf=\"hasErrors\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\"\n *ngFor=\"let error of errors\">\n {{ error }}\n </kbq-hint>\n </ng-container>\n</div>\n\n<ng-template #fileOutput>\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div [class]=\"'kbq-file-upload__' + column.cssClass\" *ngFor=\"let column of columnDefs\">\n {{ column.header }}\n </div>\n </div>\n </div>\n\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.delete)=\"deleteFile(index)\"\n (keydown.backspace)=\"deleteFile(index)\"\n *ngFor=\"let file of files; let index = index;\">\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async } as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\"\n [ngTemplateOutlet]=\"customFileIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n >\n </ng-container>\n\n <kbq-progress-spinner\n class=\"pt-nat-file-upload-name-cell__icon\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <span class=\"file-item__text\" [mcEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></span>\n </div>\n <div class=\"kbq-file-upload__size\">\n {{ file.file.size | mcDataSize }}\n </div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon=\"mc-close-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n </kbq-list-selection>\n </div>\n\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionTextWhenSelected }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #compactCaption>\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n</ng-template>\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter, Inject,\n Input, OnDestroy, Optional,\n Output, Renderer2,\n ViewChild\n} from '@angular/core';\nimport { CanDisable } from '@koobiq/components/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFileItem,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\n\nlet nextSingleFileUploadUniqueId = 0;\n\nexport const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileLabel = {\n captionText: 'Перетащите файл или',\n browseLink: 'выберите'\n};\n\n@Component({\n selector: 'kbq-single-file-upload',\n templateUrl: './single-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './single-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-single-file-upload'\n }\n})\nexport class KbqSingleFileUploadComponent implements AfterViewInit, OnDestroy, KbqInputFile, CanDisable {\n @Input() accept: string[];\n @Input() disabled: boolean = false;\n @Input() errors: string[] = [];\n @Input() files: KbqFileItem[] = [];\n @Input() inputId: string = `kbq-single-file-upload-${nextSingleFileUploadUniqueId++}`;\n @Input() customValidation?: KbqFileValidatorFn[];\n @Output() fileQueueChanged: EventEmitter<KbqFileItem | null> = new EventEmitter<KbqFileItem | null>();\n\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n hasFocus = false;\n\n private focusMonitorSubscription = Subscription.EMPTY;\n\n get acceptedFiles(): string {\n return this.accept && this.accept.length > 0 ? this.accept.map((ext: string) => `.${ext}`).join(',') : '*/*';\n }\n\n constructor(\n private focusMonitor: FocusMonitor,\n private cdr: ChangeDetectorRef,\n private renderer: Renderer2,\n @Optional() @Inject(KBQ_FILE_UPLOAD_CONFIGURATION) public config: KbqInputFileLabel\n ) {\n this.config = config || KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;\n }\n\n ngAfterViewInit(): void {\n this.focusMonitorSubscription = this.focusMonitor.monitor(this.input)\n .subscribe((origin) => this.onFocus(origin === 'keyboard'));\n }\n\n ngOnDestroy(): void {\n this.focusMonitorSubscription.unsubscribe();\n }\n\n onFileSelectedViaClick({ target }: Event): void {\n if (this.disabled) { return; }\n\n const files: FileList | null = (target as HTMLInputElement).files;\n if (files?.length) {\n this.files = [this.mapToFileItem(files[0])];\n this.fileQueueChanged.emit(this.files[0]);\n }\n /* even if the user selects the same file,\n the onchange event will be triggered every time user clicks on the control.*/\n this.renderer.setProperty(this.input.nativeElement, 'value', null);\n }\n\n deleteItem(event?: MouseEvent): void {\n if (this.disabled) { return; }\n\n event?.stopPropagation();\n this.files = [];\n this.errors = [];\n this.fileQueueChanged.emit(null);\n }\n\n onFileDropped(files: FileList): void {\n if (this.disabled) { return; }\n\n if (this.isCorrectExtension(files[0])) {\n this.files = Array.from(files)\n .map((file) => this.mapToFileItem(file));\n this.fileQueueChanged.emit(this.files[0]);\n }\n }\n\n onFocus(focusState: boolean) {\n if (this.disabled) { return; }\n this.hasFocus = focusState;\n this.cdr.markForCheck();\n }\n\n private mapToFileItem(file: File): KbqFileItem {\n this.validateFile(file);\n\n return {\n file,\n progress: new BehaviorSubject<number>(0),\n loading: new BehaviorSubject<boolean>(false)\n };\n }\n\n private validateFile(file: File): void {\n if (this.customValidation && this.customValidation.length) {\n this.errors = this.customValidation.reduce(\n (errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n },\n []).filter(Boolean) as string[];\n }\n }\n\n private isCorrectExtension(file: File): boolean {\n const fileExt: string = file.name.split('.').pop() || '';\n\n return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;\n }\n}\n","<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.disabled]=\"disabled\"\n [class.kbq-error]=\"errors && errors.length\"\n (filesDropped)=\"onFileDropped($event)\">\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\"\n >\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors && errors.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [mcEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <button kbq-button\n class=\"kbq-button_transparent\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n <i kbq-icon=\"mc-close-circle_16\"></i>\n </button>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDataSizeModule } from '@koobiq/components/core';\nimport { KbqEllipsisCenterModule } from '@koobiq/components/ellipsis-center';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqListModule } from '@koobiq/components/list';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\n\nimport { KbqFileDropDirective } from './file-drop';\nimport { KbqMultipleFileUploadComponent } from './multiple-file-upload.component';\nimport { KbqSingleFileUploadComponent } from './single-file-upload.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n KbqToolTipModule,\n KbqProgressSpinnerModule,\n KbqIconModule,\n KbqButtonModule,\n KbqListModule,\n KbqFormFieldModule,\n KbqEllipsisCenterModule,\n KbqDataSizeModule\n ],\n declarations: [\n KbqFileDropDirective,\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent\n ],\n exports: [\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent,\n KbqFileDropDirective\n ]\n})\nexport class KbqFileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i8.KbqFileDropDirective","i5"],"mappings":"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"}
|