@covalent/core 6.3.0 → 7.0.0
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/breadcrumbs/breadcrumbs.component.d.ts +1 -1
- package/dialogs/window-dialog/window-dialog.component.d.ts +1 -1
- package/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.d.ts +1 -1
- package/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.d.ts +1 -1
- package/dynamic-menu/dynamic-menu.component.d.ts +1 -1
- package/esm2022/breadcrumbs/breadcrumb/breadcrumb.component.mjs +94 -0
- package/esm2022/breadcrumbs/breadcrumbs.component.mjs +135 -0
- package/{esm2020 → esm2022}/breadcrumbs/breadcrumbs.module.mjs +5 -5
- package/esm2022/common/behaviors/control-value-accesor.mixin.mjs +43 -0
- package/esm2022/common/behaviors/disable-ripple.mixin.mjs +24 -0
- package/{esm2020 → esm2022}/common/behaviors/disabled.mixin.mjs +2 -2
- package/{esm2020 → esm2022}/common/common.module.mjs +17 -17
- package/esm2022/common/directives/fullscreen/fullscreen.directive.mjs +87 -0
- package/esm2022/common/forms/auto-trim/auto-trim.directive.mjs +37 -0
- package/esm2022/common/functions/convert.mjs +84 -0
- package/esm2022/common/functions/download.mjs +75 -0
- package/esm2022/common/pipes/bytes/bytes.pipe.mjs +42 -0
- package/esm2022/common/pipes/decimal-bytes/decimal-bytes.pipe.mjs +42 -0
- package/esm2022/common/pipes/digits/digits.pipe.mjs +41 -0
- package/{esm2020 → esm2022}/common/pipes/time-ago/time-ago.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/common/pipes/time-difference/time-difference.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/common/pipes/time-until/time-until.pipe.mjs +4 -4
- package/esm2022/common/pipes/truncate/truncate.pipe.mjs +27 -0
- package/esm2022/common/services/icon.service.mjs +1087 -0
- package/esm2022/common/services/router-path.service.mjs +30 -0
- package/esm2022/dialogs/alert-dialog/alert-dialog.component.mjs +26 -0
- package/esm2022/dialogs/confirm-dialog/confirm-dialog.component.mjs +31 -0
- package/esm2022/dialogs/dialog.component.mjs +60 -0
- package/{esm2020 → esm2022}/dialogs/dialogs.module.mjs +39 -39
- package/esm2022/dialogs/prompt-dialog/prompt-dialog.component.mjs +84 -0
- package/esm2022/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.mjs +220 -0
- package/esm2022/dialogs/services/dialog.service.mjs +179 -0
- package/esm2022/dialogs/window-dialog/window-dialog.component.mjs +40 -0
- package/esm2022/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.mjs +30 -0
- package/esm2022/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.mjs +23 -0
- package/esm2022/dynamic-menu/dynamic-menu.component.mjs +28 -0
- package/{esm2020 → esm2022}/dynamic-menu/dynamic-menu.module.mjs +19 -19
- package/esm2022/file/directives/file-drop.directive.mjs +145 -0
- package/esm2022/file/directives/file-select.directive.mjs +78 -0
- package/esm2022/file/file-input/file-input.component.mjs +146 -0
- package/esm2022/file/file-upload/file-upload.component.mjs +185 -0
- package/{esm2020 → esm2022}/file/file.module.mjs +21 -21
- package/esm2022/file/services/file.service.mjs +66 -0
- package/esm2022/json-formatter/json-formatter.component.mjs +222 -0
- package/{esm2020 → esm2022}/json-formatter/json-formatter.module.mjs +5 -5
- package/esm2022/layout/layout-card-over/layout-card-over.component.mjs +50 -0
- package/esm2022/layout/layout-footer/layout-footer.component.mjs +36 -0
- package/esm2022/layout/layout-manage-list/layout-manage-list.component.mjs +92 -0
- package/{esm2020 → esm2022}/layout/layout-manage-list/layout-manage-list.directives.mjs +10 -10
- package/esm2022/layout/layout-nav/layout-nav.component.mjs +76 -0
- package/esm2022/layout/layout-nav-list/layout-nav-list.component.mjs +154 -0
- package/{esm2020 → esm2022}/layout/layout-nav-list/layout-nav-list.directives.mjs +10 -10
- package/esm2022/layout/layout-toggle.class.mjs +96 -0
- package/esm2022/layout/layout.component.mjs +91 -0
- package/{esm2020 → esm2022}/layout/layout.directives.mjs +10 -10
- package/{esm2020 → esm2022}/layout/layout.module.mjs +55 -55
- package/esm2022/layout/navigation-drawer/navigation-drawer.component.mjs +221 -0
- package/esm2022/loading/directives/loading.directive.mjs +133 -0
- package/esm2022/loading/loading.component.mjs +193 -0
- package/{esm2020 → esm2022}/loading/loading.module.mjs +13 -13
- package/esm2022/loading/services/loading.factory.mjs +210 -0
- package/esm2022/loading/services/loading.service.mjs +219 -0
- package/{esm2020 → esm2022}/menu/menu.component.mjs +4 -4
- package/{esm2020 → esm2022}/menu/menu.module.mjs +5 -5
- package/esm2022/message/message.component.mjs +222 -0
- package/{esm2020 → esm2022}/message/message.module.mjs +7 -7
- package/esm2022/search/search-box/search-box.component.mjs +198 -0
- package/esm2022/search/search-input/search-input.component.mjs +214 -0
- package/{esm2020 → esm2022}/search/search.module.mjs +13 -13
- package/esm2022/side-sheet/side-sheet-container.mjs +285 -0
- package/esm2022/side-sheet/side-sheet-ref.mjs +30 -0
- package/{esm2020 → esm2022}/side-sheet/side-sheet.config.mjs +2 -5
- package/esm2022/side-sheet/side-sheet.content-directives.mjs +206 -0
- package/esm2022/side-sheet/side-sheet.mjs +236 -0
- package/{esm2020 → esm2022}/side-sheet/side-sheet.module.mjs +14 -14
- package/esm2022/user-profile/user-profile-menu/user-profile-menu.component.mjs +25 -0
- package/esm2022/user-profile/user-profile.component.mjs +21 -0
- package/{esm2020 → esm2022}/user-profile/user-profile.module.mjs +15 -15
- package/{fesm2015 → fesm2022}/covalent-core-breadcrumbs.mjs +28 -22
- package/{fesm2015 → fesm2022}/covalent-core-breadcrumbs.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-common.mjs +1131 -1125
- package/fesm2022/covalent-core-common.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/covalent-core-dialogs.mjs +109 -80
- package/{fesm2020 → fesm2022}/covalent-core-dialogs.mjs.map +1 -1
- package/fesm2022/covalent-core-dynamic-menu.mjs +125 -0
- package/{fesm2015 → fesm2022}/covalent-core-dynamic-menu.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-file.mjs +148 -110
- package/{fesm2020 → fesm2022}/covalent-core-file.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-json-formatter.mjs +26 -21
- package/{fesm2020 → fesm2022}/covalent-core-json-formatter.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-layout.mjs +396 -271
- package/{fesm2015 → fesm2022}/covalent-core-layout.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-loading.mjs +100 -78
- package/{fesm2020 → fesm2022}/covalent-core-loading.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/covalent-core-menu.mjs +7 -7
- package/{fesm2015 → fesm2022}/covalent-core-menu.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-message.mjs +42 -23
- package/{fesm2020 → fesm2022}/covalent-core-message.mjs.map +1 -1
- package/fesm2022/covalent-core-search.mjs +438 -0
- package/fesm2022/covalent-core-search.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/covalent-core-side-sheet.mjs +124 -99
- package/{fesm2020 → fesm2022}/covalent-core-side-sheet.mjs.map +1 -1
- package/fesm2022/covalent-core-user-profile.mjs +87 -0
- package/fesm2022/covalent-core-user-profile.mjs.map +1 -0
- package/file/directives/file-drop.directive.d.ts +1 -1
- package/file/directives/file-select.directive.d.ts +1 -1
- package/file/file-input/file-input.component.d.ts +1 -1
- package/file/file-upload/file-upload.component.d.ts +1 -1
- package/json-formatter/json-formatter.component.d.ts +1 -1
- package/layout/layout-card-over/layout-card-over.component.d.ts +1 -1
- package/layout/layout-footer/layout-footer.component.d.ts +1 -1
- package/layout/layout-manage-list/layout-manage-list.component.d.ts +1 -1
- package/layout/layout-manage-list/layout-manage-list.directives.d.ts +3 -3
- package/layout/layout-nav/layout-nav.component.d.ts +1 -1
- package/layout/layout-nav-list/layout-nav-list.component.d.ts +1 -1
- package/layout/layout-nav-list/layout-nav-list.directives.d.ts +3 -3
- package/layout/layout-toggle.class.d.ts +1 -1
- package/layout/layout.component.d.ts +1 -1
- package/layout/layout.directives.d.ts +3 -3
- package/layout/navigation-drawer/navigation-drawer.component.d.ts +1 -1
- package/loading/directives/loading.directive.d.ts +1 -1
- package/message/message.component.d.ts +1 -1
- package/package.json +55 -91
- package/search/search-box/search-box.component.d.ts +1 -1
- package/search/search-input/search-input.component.d.ts +1 -1
- package/side-sheet/side-sheet.content-directives.d.ts +2 -2
- package/user-profile/user-profile-menu/user-profile-menu.component.d.ts +1 -1
- package/user-profile/user-profile.component.d.ts +1 -1
- package/common/styles/font/README.md +0 -11
- package/dialogs/src/README.md +0 -223
- package/esm2020/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -92
- package/esm2020/breadcrumbs/breadcrumbs.component.mjs +0 -131
- package/esm2020/common/behaviors/control-value-accesor.mixin.mjs +0 -41
- package/esm2020/common/behaviors/disable-ripple.mixin.mjs +0 -24
- package/esm2020/common/directives/fullscreen/fullscreen.directive.mjs +0 -85
- package/esm2020/common/forms/auto-trim/auto-trim.directive.mjs +0 -36
- package/esm2020/common/functions/convert.mjs +0 -84
- package/esm2020/common/functions/download.mjs +0 -75
- package/esm2020/common/pipes/bytes/bytes.pipe.mjs +0 -42
- package/esm2020/common/pipes/decimal-bytes/decimal-bytes.pipe.mjs +0 -42
- package/esm2020/common/pipes/digits/digits.pipe.mjs +0 -39
- package/esm2020/common/pipes/truncate/truncate.pipe.mjs +0 -27
- package/esm2020/common/services/icon.service.mjs +0 -1089
- package/esm2020/common/services/router-path.service.mjs +0 -29
- package/esm2020/dialogs/alert-dialog/alert-dialog.component.mjs +0 -23
- package/esm2020/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -28
- package/esm2020/dialogs/dialog.component.mjs +0 -57
- package/esm2020/dialogs/prompt-dialog/prompt-dialog.component.mjs +0 -75
- package/esm2020/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.mjs +0 -216
- package/esm2020/dialogs/services/dialog.service.mjs +0 -174
- package/esm2020/dialogs/window-dialog/window-dialog.component.mjs +0 -38
- package/esm2020/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.mjs +0 -30
- package/esm2020/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.mjs +0 -24
- package/esm2020/dynamic-menu/dynamic-menu.component.mjs +0 -28
- package/esm2020/file/directives/file-drop.directive.mjs +0 -139
- package/esm2020/file/directives/file-select.directive.mjs +0 -77
- package/esm2020/file/file-input/file-input.component.mjs +0 -128
- package/esm2020/file/file-upload/file-upload.component.mjs +0 -174
- package/esm2020/file/services/file.service.mjs +0 -64
- package/esm2020/json-formatter/json-formatter.component.mjs +0 -217
- package/esm2020/layout/layout-card-over/layout-card-over.component.mjs +0 -40
- package/esm2020/layout/layout-footer/layout-footer.component.mjs +0 -33
- package/esm2020/layout/layout-manage-list/layout-manage-list.component.mjs +0 -93
- package/esm2020/layout/layout-nav/layout-nav.component.mjs +0 -50
- package/esm2020/layout/layout-nav-list/layout-nav-list.component.mjs +0 -128
- package/esm2020/layout/layout-toggle.class.mjs +0 -92
- package/esm2020/layout/layout.component.mjs +0 -92
- package/esm2020/layout/navigation-drawer/navigation-drawer.component.mjs +0 -163
- package/esm2020/loading/directives/loading.directive.mjs +0 -126
- package/esm2020/loading/loading.component.mjs +0 -187
- package/esm2020/loading/services/loading.factory.mjs +0 -207
- package/esm2020/loading/services/loading.service.mjs +0 -213
- package/esm2020/message/message.component.mjs +0 -203
- package/esm2020/search/search-box/search-box.component.mjs +0 -194
- package/esm2020/search/search-input/search-input.component.mjs +0 -207
- package/esm2020/side-sheet/side-sheet-container.mjs +0 -274
- package/esm2020/side-sheet/side-sheet-ref.mjs +0 -26
- package/esm2020/side-sheet/side-sheet.content-directives.mjs +0 -201
- package/esm2020/side-sheet/side-sheet.mjs +0 -228
- package/esm2020/user-profile/user-profile-menu/user-profile-menu.component.mjs +0 -23
- package/esm2020/user-profile/user-profile.component.mjs +0 -19
- package/fesm2015/covalent-core-common.mjs +0 -2281
- package/fesm2015/covalent-core-common.mjs.map +0 -1
- package/fesm2015/covalent-core-dialogs.mjs +0 -668
- package/fesm2015/covalent-core-dialogs.mjs.map +0 -1
- package/fesm2015/covalent-core-dynamic-menu.mjs +0 -126
- package/fesm2015/covalent-core-file.mjs +0 -621
- package/fesm2015/covalent-core-file.mjs.map +0 -1
- package/fesm2015/covalent-core-json-formatter.mjs +0 -298
- package/fesm2015/covalent-core-json-formatter.mjs.map +0 -1
- package/fesm2015/covalent-core-layout.mjs +0 -1024
- package/fesm2015/covalent-core-loading.mjs +0 -766
- package/fesm2015/covalent-core-loading.mjs.map +0 -1
- package/fesm2015/covalent-core-message.mjs +0 -284
- package/fesm2015/covalent-core-message.mjs.map +0 -1
- package/fesm2015/covalent-core-search.mjs +0 -430
- package/fesm2015/covalent-core-search.mjs.map +0 -1
- package/fesm2015/covalent-core-side-sheet.mjs +0 -784
- package/fesm2015/covalent-core-side-sheet.mjs.map +0 -1
- package/fesm2015/covalent-core-user-profile.mjs +0 -83
- package/fesm2015/covalent-core-user-profile.mjs.map +0 -1
- package/fesm2020/covalent-core-breadcrumbs.mjs +0 -243
- package/fesm2020/covalent-core-breadcrumbs.mjs.map +0 -1
- package/fesm2020/covalent-core-common.mjs.map +0 -1
- package/fesm2020/covalent-core-dynamic-menu.mjs +0 -126
- package/fesm2020/covalent-core-dynamic-menu.mjs.map +0 -1
- package/fesm2020/covalent-core-layout.mjs.map +0 -1
- package/fesm2020/covalent-core-menu.mjs +0 -37
- package/fesm2020/covalent-core-menu.mjs.map +0 -1
- package/fesm2020/covalent-core-search.mjs +0 -427
- package/fesm2020/covalent-core-search.mjs.map +0 -1
- package/fesm2020/covalent-core-user-profile.mjs +0 -83
- package/fesm2020/covalent-core-user-profile.mjs.map +0 -1
- package/fesm2020/covalent-core.mjs +0 -4
- package/fesm2020/covalent-core.mjs.map +0 -1
- package/file/src/file-input/README.md +0 -147
- package/file/src/file-upload/README.md +0 -136
- package/layout/src/layout-card-over/README.md +0 -43
- package/layout/src/layout-manage-list/README.md +0 -80
- package/layout/src/layout-nav/README.md +0 -50
- package/layout/src/layout-nav-list/README.md +0 -105
- package/search/src/search-box/README.md +0 -73
- package/search/src/search-input/README.md +0 -74
- /package/{esm2020 → esm2022}/breadcrumbs/covalent-core-breadcrumbs.mjs +0 -0
- /package/{esm2020 → esm2022}/breadcrumbs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/bounce/bounce.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/collapse/collapse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/common/interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/fade/fadeInOut.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/flash/flash.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/headshake/headshake.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/jello/jello.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/pulse/pulse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/rotate/rotate.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/covalent-core-common.mjs +0 -0
- /package/{esm2020 → esm2022}/common/forms/validators/validators.mjs +0 -0
- /package/{esm2020 → esm2022}/common/functions/clipboard.mjs +0 -0
- /package/{esm2020 → esm2022}/common/functions/file.mjs +0 -0
- /package/{esm2020 → esm2022}/common/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/covalent-core.mjs +0 -0
- /package/{esm2020 → esm2022}/dialogs/covalent-core-dialogs.mjs +0 -0
- /package/{esm2020 → esm2022}/dialogs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-menu/covalent-core-dynamic-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-menu/dynamic-menu.menu.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-menu/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/file/covalent-core-file.mjs +0 -0
- /package/{esm2020 → esm2022}/file/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/json-formatter/collapse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/json-formatter/covalent-core-json-formatter.mjs +0 -0
- /package/{esm2020 → esm2022}/json-formatter/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/covalent-core-layout.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/loading/covalent-core-loading.mjs +0 -0
- /package/{esm2020 → esm2022}/loading/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/covalent-core-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/message/collapse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/message/covalent-core-message.mjs +0 -0
- /package/{esm2020 → esm2022}/message/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/search/covalent-core-search.mjs +0 -0
- /package/{esm2020 → esm2022}/search/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/side-sheet/covalent-core-side-sheet.mjs +0 -0
- /package/{esm2020 → esm2022}/side-sheet/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/side-sheet/side-sheet.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/user-profile/covalent-core-user-profile.mjs +0 -0
- /package/{esm2020 → esm2022}/user-profile/public_api.mjs +0 -0
- /package/{fesm2015 → fesm2022}/covalent-core.mjs +0 -0
- /package/{fesm2015 → fesm2022}/covalent-core.mjs.map +0 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@angular/common";
|
4
|
+
import * as i2 from "@angular/material/button";
|
5
|
+
import * as i3 from "@angular/material/icon";
|
6
|
+
import * as i4 from "@angular/material/menu";
|
7
|
+
import * as i5 from "./dynamic-menu-item/dynamic-menu-item.component";
|
8
|
+
export class TdDynamicMenuComponent {
|
9
|
+
trigger;
|
10
|
+
items;
|
11
|
+
itemClicked = new EventEmitter();
|
12
|
+
emitClicked(event) {
|
13
|
+
this.itemClicked.emit(event);
|
14
|
+
}
|
15
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdDynamicMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
16
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TdDynamicMenuComponent, selector: "td-dynamic-menu", inputs: { trigger: "trigger", items: "items" }, outputs: { itemClicked: "itemClicked" }, ngImport: i0, template: "<button\n *ngIf=\"!trigger.text\"\n mat-icon-button\n id=\"{{ trigger.id }}\"\n [matMenuTriggerFor]=\"menu.childMenu\"\n>\n <mat-icon\n *ngIf=\"trigger.svgIcon\"\n [class]=\"trigger.iconClasses\"\n [svgIcon]=\"trigger.svgIcon\"\n ></mat-icon>\n <mat-icon *ngIf=\"trigger.icon\" [class]=\"trigger.iconClasses\">{{\n trigger.icon\n }}</mat-icon>\n</button>\n<button\n *ngIf=\"trigger.text\"\n mat-button\n id=\"{{ trigger.id }}\"\n [matMenuTriggerFor]=\"menu.childMenu\"\n>\n <mat-icon\n *ngIf=\"trigger.svgIcon\"\n [class]=\"trigger.iconClasses\"\n [svgIcon]=\"trigger.svgIcon\"\n ></mat-icon>\n <mat-icon *ngIf=\"trigger.icon\" [class]=\"trigger.iconClasses\">{{\n trigger.icon\n }}</mat-icon>\n <span *ngIf=\"trigger.text\">\n {{ trigger.text }}\n </span>\n</button>\n\n<td-dynamic-menu-item\n #menu\n [items]=\"items\"\n (itemClicked)=\"emitClicked($event)\"\n></td-dynamic-menu-item>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.TdDynamicMenuItemComponent, selector: "td-dynamic-menu-item", inputs: ["items"], outputs: ["itemClicked"] }] });
|
17
|
+
}
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdDynamicMenuComponent, decorators: [{
|
19
|
+
type: Component,
|
20
|
+
args: [{ selector: 'td-dynamic-menu', template: "<button\n *ngIf=\"!trigger.text\"\n mat-icon-button\n id=\"{{ trigger.id }}\"\n [matMenuTriggerFor]=\"menu.childMenu\"\n>\n <mat-icon\n *ngIf=\"trigger.svgIcon\"\n [class]=\"trigger.iconClasses\"\n [svgIcon]=\"trigger.svgIcon\"\n ></mat-icon>\n <mat-icon *ngIf=\"trigger.icon\" [class]=\"trigger.iconClasses\">{{\n trigger.icon\n }}</mat-icon>\n</button>\n<button\n *ngIf=\"trigger.text\"\n mat-button\n id=\"{{ trigger.id }}\"\n [matMenuTriggerFor]=\"menu.childMenu\"\n>\n <mat-icon\n *ngIf=\"trigger.svgIcon\"\n [class]=\"trigger.iconClasses\"\n [svgIcon]=\"trigger.svgIcon\"\n ></mat-icon>\n <mat-icon *ngIf=\"trigger.icon\" [class]=\"trigger.iconClasses\">{{\n trigger.icon\n }}</mat-icon>\n <span *ngIf=\"trigger.text\">\n {{ trigger.text }}\n </span>\n</button>\n\n<td-dynamic-menu-item\n #menu\n [items]=\"items\"\n (itemClicked)=\"emitClicked($event)\"\n></td-dynamic-menu-item>\n" }]
|
21
|
+
}], propDecorators: { trigger: [{
|
22
|
+
type: Input
|
23
|
+
}], items: [{
|
24
|
+
type: Input
|
25
|
+
}], itemClicked: [{
|
26
|
+
type: Output
|
27
|
+
}] } });
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9keW5hbWljLW1lbnUvc3JjL2R5bmFtaWMtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvZHluYW1pYy1tZW51L3NyYy9keW5hbWljLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVl2RSxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLE9BQU8sQ0FBZ0I7SUFDdkIsS0FBSyxDQUFlO0lBRW5CLFdBQVcsR0FDbkIsSUFBSSxZQUFZLEVBQWdDLENBQUM7SUFFbkQsV0FBVyxDQUFDLEtBQW1DO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7dUdBVFUsc0JBQXNCOzJGQUF0QixzQkFBc0IsZ0pDWm5DLDA2QkF1Q0E7OzJGRDNCYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUtsQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSU1lbnVJdGVtLFxuICBJTWVudVRyaWdnZXIsXG4gIElUZER5bmFtaWNNZW51TGlua0NsaWNrRXZlbnQsXG59IGZyb20gJy4vZHluYW1pYy1tZW51Lm1lbnUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZC1keW5hbWljLW1lbnUnLFxuICBzdHlsZVVybHM6IFsnZHluYW1pYy1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZER5bmFtaWNNZW51Q29tcG9uZW50IHtcbiAgQElucHV0KCkgdHJpZ2dlciE6IElNZW51VHJpZ2dlcjtcbiAgQElucHV0KCkgaXRlbXMhOiBJTWVudUl0ZW1bXTtcblxuICBAT3V0cHV0KCkgaXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJVGREeW5hbWljTWVudUxpbmtDbGlja0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJVGREeW5hbWljTWVudUxpbmtDbGlja0V2ZW50PigpO1xuXG4gIGVtaXRDbGlja2VkKGV2ZW50OiBJVGREeW5hbWljTWVudUxpbmtDbGlja0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtQ2xpY2tlZC5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICAqbmdJZj1cIiF0cmlnZ2VyLnRleHRcIlxuICBtYXQtaWNvbi1idXR0b25cbiAgaWQ9XCJ7eyB0cmlnZ2VyLmlkIH19XCJcbiAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnUuY2hpbGRNZW51XCJcbj5cbiAgPG1hdC1pY29uXG4gICAgKm5nSWY9XCJ0cmlnZ2VyLnN2Z0ljb25cIlxuICAgIFtjbGFzc109XCJ0cmlnZ2VyLmljb25DbGFzc2VzXCJcbiAgICBbc3ZnSWNvbl09XCJ0cmlnZ2VyLnN2Z0ljb25cIlxuICA+PC9tYXQtaWNvbj5cbiAgPG1hdC1pY29uICpuZ0lmPVwidHJpZ2dlci5pY29uXCIgW2NsYXNzXT1cInRyaWdnZXIuaWNvbkNsYXNzZXNcIj57e1xuICAgIHRyaWdnZXIuaWNvblxuICB9fTwvbWF0LWljb24+XG48L2J1dHRvbj5cbjxidXR0b25cbiAgKm5nSWY9XCJ0cmlnZ2VyLnRleHRcIlxuICBtYXQtYnV0dG9uXG4gIGlkPVwie3sgdHJpZ2dlci5pZCB9fVwiXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51LmNoaWxkTWVudVwiXG4+XG4gIDxtYXQtaWNvblxuICAgICpuZ0lmPVwidHJpZ2dlci5zdmdJY29uXCJcbiAgICBbY2xhc3NdPVwidHJpZ2dlci5pY29uQ2xhc3Nlc1wiXG4gICAgW3N2Z0ljb25dPVwidHJpZ2dlci5zdmdJY29uXCJcbiAgPjwvbWF0LWljb24+XG4gIDxtYXQtaWNvbiAqbmdJZj1cInRyaWdnZXIuaWNvblwiIFtjbGFzc109XCJ0cmlnZ2VyLmljb25DbGFzc2VzXCI+e3tcbiAgICB0cmlnZ2VyLmljb25cbiAgfX08L21hdC1pY29uPlxuICA8c3BhbiAqbmdJZj1cInRyaWdnZXIudGV4dFwiPlxuICAgIHt7IHRyaWdnZXIudGV4dCB9fVxuICA8L3NwYW4+XG48L2J1dHRvbj5cblxuPHRkLWR5bmFtaWMtbWVudS1pdGVtXG4gICNtZW51XG4gIFtpdGVtc109XCJpdGVtc1wiXG4gIChpdGVtQ2xpY2tlZCk9XCJlbWl0Q2xpY2tlZCgkZXZlbnQpXCJcbj48L3RkLWR5bmFtaWMtbWVudS1pdGVtPlxuIl19
|
@@ -10,25 +10,25 @@ import { TdDynamicMenuItemComponent } from './dynamic-menu-item/dynamic-menu-ite
|
|
10
10
|
import { TdDynamicMenuLinkComponent } from './dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component';
|
11
11
|
import * as i0 from "@angular/core";
|
12
12
|
export class CovalentDynamicMenuModule {
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentDynamicMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
14
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: CovalentDynamicMenuModule, declarations: [TdDynamicMenuComponent,
|
15
|
+
TdDynamicMenuItemComponent,
|
16
|
+
TdDynamicMenuLinkComponent], imports: [CommonModule,
|
17
|
+
MatButtonModule,
|
18
|
+
MatIconModule,
|
19
|
+
MatListModule,
|
20
|
+
MatMenuModule,
|
21
|
+
MatTooltipModule], exports: [TdDynamicMenuComponent,
|
22
|
+
TdDynamicMenuItemComponent,
|
23
|
+
TdDynamicMenuLinkComponent] });
|
24
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentDynamicMenuModule, imports: [CommonModule,
|
25
|
+
MatButtonModule,
|
26
|
+
MatIconModule,
|
27
|
+
MatListModule,
|
28
|
+
MatMenuModule,
|
29
|
+
MatTooltipModule] });
|
13
30
|
}
|
14
|
-
|
15
|
-
CovalentDynamicMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentDynamicMenuModule, declarations: [TdDynamicMenuComponent,
|
16
|
-
TdDynamicMenuItemComponent,
|
17
|
-
TdDynamicMenuLinkComponent], imports: [CommonModule,
|
18
|
-
MatButtonModule,
|
19
|
-
MatIconModule,
|
20
|
-
MatListModule,
|
21
|
-
MatMenuModule,
|
22
|
-
MatTooltipModule], exports: [TdDynamicMenuComponent,
|
23
|
-
TdDynamicMenuItemComponent,
|
24
|
-
TdDynamicMenuLinkComponent] });
|
25
|
-
CovalentDynamicMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentDynamicMenuModule, imports: [CommonModule,
|
26
|
-
MatButtonModule,
|
27
|
-
MatIconModule,
|
28
|
-
MatListModule,
|
29
|
-
MatMenuModule,
|
30
|
-
MatTooltipModule] });
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentDynamicMenuModule, decorators: [{
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentDynamicMenuModule, decorators: [{
|
32
32
|
type: NgModule,
|
33
33
|
args: [{
|
34
34
|
declarations: [
|
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
52
52
|
],
|
53
53
|
}]
|
54
54
|
}] });
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tZW51Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9keW5hbWljLW1lbnUvc3JjL2R5bmFtaWMtbWVudS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDOztBQXVCL0csTUFBTSxPQUFPLHlCQUF5Qjt1R0FBekIseUJBQXlCO3dHQUF6Qix5QkFBeUIsaUJBbkJsQyxzQkFBc0I7WUFDdEIsMEJBQTBCO1lBQzFCLDBCQUEwQixhQUcxQixZQUFZO1lBQ1osZUFBZTtZQUNmLGFBQWE7WUFDYixhQUFhO1lBQ2IsYUFBYTtZQUNiLGdCQUFnQixhQUloQixzQkFBc0I7WUFDdEIsMEJBQTBCO1lBQzFCLDBCQUEwQjt3R0FHakIseUJBQXlCLFlBZGxDLFlBQVk7WUFDWixlQUFlO1lBQ2YsYUFBYTtZQUNiLGFBQWE7WUFDYixhQUFhO1lBQ2IsZ0JBQWdCOzsyRkFTUCx5QkFBeUI7a0JBckJyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixzQkFBc0I7d0JBQ3RCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7cUJBQzNCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBUZER5bmFtaWNNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRkRHluYW1pY01lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLW1lbnUtaXRlbS9keW5hbWljLW1lbnUtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGREeW5hbWljTWVudUxpbmtDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtbWVudS1pdGVtL2R5bmFtaWMtbWVudS1saW5rL2R5bmFtaWMtbWVudS1saW5rLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRkRHluYW1pY01lbnVDb21wb25lbnQsXG4gICAgVGREeW5hbWljTWVudUl0ZW1Db21wb25lbnQsXG4gICAgVGREeW5hbWljTWVudUxpbmtDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG4gIGV4cG9ydHM6IFtcbiAgICBUZER5bmFtaWNNZW51Q29tcG9uZW50LFxuICAgIFRkRHluYW1pY01lbnVJdGVtQ29tcG9uZW50LFxuICAgIFRkRHluYW1pY01lbnVMaW5rQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3ZhbGVudER5bmFtaWNNZW51TW9kdWxlIHt9XG4iXX0=
|
@@ -0,0 +1,145 @@
|
|
1
|
+
import { Directive, Input, Output, EventEmitter, HostListener, HostBinding, ElementRef, Renderer2, NgZone, } from '@angular/core';
|
2
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export class TdFileDropBase {
|
5
|
+
}
|
6
|
+
export class TdFileDropDirective {
|
7
|
+
_renderer;
|
8
|
+
_element;
|
9
|
+
_ngZone;
|
10
|
+
_multiple = false;
|
11
|
+
_dragenterListener;
|
12
|
+
_dragleaveListener;
|
13
|
+
_dragoverListener;
|
14
|
+
/**
|
15
|
+
* multiple?: boolean
|
16
|
+
* Sets whether multiple files can be dropped at once in host element, or just a single file.
|
17
|
+
* Can also be 'multiple' native attribute.
|
18
|
+
*/
|
19
|
+
set multiple(multiple) {
|
20
|
+
this._multiple = coerceBooleanProperty(multiple);
|
21
|
+
}
|
22
|
+
disabled = false;
|
23
|
+
/**
|
24
|
+
* fileDrop?: function
|
25
|
+
* Event emitted when a file or files are dropped in host element after being validated.
|
26
|
+
* Emits a [FileList | File] object.
|
27
|
+
*/
|
28
|
+
fileDrop = new EventEmitter();
|
29
|
+
/**
|
30
|
+
* Binds native 'multiple' attribute if [multiple] property is 'true'.
|
31
|
+
*/
|
32
|
+
get multipleBinding() {
|
33
|
+
return this._multiple ? '' : undefined;
|
34
|
+
}
|
35
|
+
/**
|
36
|
+
* Binds native 'disabled' attribute if [disabled] property is 'true'.
|
37
|
+
*/
|
38
|
+
get disabledBinding() {
|
39
|
+
return this.disabled ? '' : undefined;
|
40
|
+
}
|
41
|
+
constructor(_renderer, _element, _ngZone) {
|
42
|
+
this._renderer = _renderer;
|
43
|
+
this._element = _element;
|
44
|
+
this._ngZone = _ngZone;
|
45
|
+
}
|
46
|
+
ngOnInit() {
|
47
|
+
this._ngZone.runOutsideAngular(() => {
|
48
|
+
// Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.
|
49
|
+
// Stops event propagation and default action from browser for 'dragenter' event.
|
50
|
+
this._dragenterListener = this._renderer.listen(this._element.nativeElement, 'dragenter', (event) => {
|
51
|
+
if (!this.disabled) {
|
52
|
+
this._renderer.addClass(this._element.nativeElement, 'drop-zone');
|
53
|
+
}
|
54
|
+
this._stopEvent(event);
|
55
|
+
});
|
56
|
+
// Listens to 'dragleave' host event to remove animation class 'drop-zone'.
|
57
|
+
// Stops event propagation and default action from browser for 'dragleave' event.
|
58
|
+
this._dragleaveListener = this._renderer.listen(this._element.nativeElement, 'dragleave', (event) => {
|
59
|
+
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
60
|
+
this._stopEvent(event);
|
61
|
+
});
|
62
|
+
// Listens to 'dragover' host event to validate transfer items.
|
63
|
+
// Checks if 'multiple' attr exists in host to allow multiple file drops.
|
64
|
+
// Stops event propagation and default action from browser for 'dragover' event.
|
65
|
+
this._dragoverListener = this._renderer.listen(this._element.nativeElement, 'dragover', (event) => {
|
66
|
+
const transfer = event.dataTransfer || new DataTransfer();
|
67
|
+
transfer.dropEffect = this._typeCheck(transfer.types);
|
68
|
+
if (this.disabled ||
|
69
|
+
(!this._multiple &&
|
70
|
+
((transfer.items && transfer.items.length > 1) ||
|
71
|
+
transfer.mozItemCount > 1))) {
|
72
|
+
transfer.dropEffect = 'none';
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
transfer.dropEffect = 'copy';
|
76
|
+
}
|
77
|
+
this._stopEvent(event);
|
78
|
+
});
|
79
|
+
});
|
80
|
+
}
|
81
|
+
ngOnDestroy() {
|
82
|
+
this._dragenterListener?.();
|
83
|
+
this._dragleaveListener?.();
|
84
|
+
this._dragoverListener?.();
|
85
|
+
}
|
86
|
+
/**
|
87
|
+
* Listens to 'drop' host event to get validated transfer items.
|
88
|
+
* Emits the 'fileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.
|
89
|
+
* Stops event propagation and default action from browser for 'drop' event.
|
90
|
+
*/
|
91
|
+
onDrop(event) {
|
92
|
+
if (!this.disabled) {
|
93
|
+
const transfer = event.dataTransfer ?? new DataTransfer();
|
94
|
+
const files = transfer.files;
|
95
|
+
if (files.length) {
|
96
|
+
const value = this._multiple
|
97
|
+
? files.length > 1
|
98
|
+
? files
|
99
|
+
: files[0]
|
100
|
+
: files[0];
|
101
|
+
this.fileDrop.emit(value);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
105
|
+
this._stopEvent(event);
|
106
|
+
}
|
107
|
+
/**
|
108
|
+
* Validates if the transfer item types are 'Files'.
|
109
|
+
*/
|
110
|
+
_typeCheck(types) {
|
111
|
+
let dropEffect = 'none';
|
112
|
+
if (types &&
|
113
|
+
((types.contains && types.contains('Files')) ||
|
114
|
+
(types.indexOf && types.indexOf('Files') !== -1))) {
|
115
|
+
dropEffect = 'copy';
|
116
|
+
}
|
117
|
+
return dropEffect;
|
118
|
+
}
|
119
|
+
_stopEvent(event) {
|
120
|
+
event.preventDefault();
|
121
|
+
event.stopPropagation();
|
122
|
+
}
|
123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileDropDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
124
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)" }, properties: { "attr.multiple": "this.multipleBinding", "attr.disabled": "this.disabledBinding" } }, ngImport: i0 });
|
125
|
+
}
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileDropDirective, decorators: [{
|
127
|
+
type: Directive,
|
128
|
+
args: [{ selector: '[tdFileDrop]' }]
|
129
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { multiple: [{
|
130
|
+
type: Input
|
131
|
+
}], disabled: [{
|
132
|
+
type: Input
|
133
|
+
}], fileDrop: [{
|
134
|
+
type: Output
|
135
|
+
}], multipleBinding: [{
|
136
|
+
type: HostBinding,
|
137
|
+
args: ['attr.multiple']
|
138
|
+
}], disabledBinding: [{
|
139
|
+
type: HostBinding,
|
140
|
+
args: ['attr.disabled']
|
141
|
+
}], onDrop: [{
|
142
|
+
type: HostListener,
|
143
|
+
args: ['drop', ['$event']]
|
144
|
+
}] } });
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9maWxlL3NyYy9kaXJlY3RpdmVzL2ZpbGUtZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixTQUFTLEVBR1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU5RCxNQUFNLE9BQU8sY0FBYztDQUFHO0FBRzlCLE1BQU0sT0FBTyxtQkFBbUI7SUE0Q3BCO0lBQ0E7SUFDQTtJQTdDRixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLGtCQUFrQixDQUFnQjtJQUNsQyxrQkFBa0IsQ0FBZ0I7SUFDbEMsaUJBQWlCLENBQWdCO0lBRXpDOzs7O09BSUc7SUFDSCxJQUNJLFFBQVEsQ0FBQyxRQUEwQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUSxRQUFRLEdBQUksS0FBSyxDQUFDO0lBRTNCOzs7O09BSUc7SUFDTyxRQUFRLEdBQWtDLElBQUksWUFBWSxFQUVqRSxDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUNJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFDVSxTQUFvQixF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c0JBQWpCLE1BQU07Z0JBUUgsZUFBZTtzQkFEbEIsV0FBVzt1QkFBQyxlQUFlO2dCQVN4QixlQUFlO3NCQURsQixXQUFXO3VCQUFDLGVBQWU7Z0JBMkU1QixNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSG9zdEJpbmRpbmcsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5leHBvcnQgY2xhc3MgVGRGaWxlRHJvcEJhc2Uge31cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RkRmlsZURyb3BdJyB9KVxuZXhwb3J0IGNsYXNzIFRkRmlsZURyb3BEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX211bHRpcGxlID0gZmFsc2U7XG4gIHByaXZhdGUgX2RyYWdlbnRlckxpc3RlbmVyPzogVm9pZEZ1bmN0aW9uO1xuICBwcml2YXRlIF9kcmFnbGVhdmVMaXN0ZW5lcj86IFZvaWRGdW5jdGlvbjtcbiAgcHJpdmF0ZSBfZHJhZ292ZXJMaXN0ZW5lcj86IFZvaWRGdW5jdGlvbjtcblxuICAvKipcbiAgICogbXVsdGlwbGU/OiBib29sZWFuXG4gICAqIFNldHMgd2hldGhlciBtdWx0aXBsZSBmaWxlcyBjYW4gYmUgZHJvcHBlZCBhdCBvbmNlIGluIGhvc3QgZWxlbWVudCwgb3IganVzdCBhIHNpbmdsZSBmaWxlLlxuICAgKiBDYW4gYWxzbyBiZSAnbXVsdGlwbGUnIG5hdGl2ZSBhdHRyaWJ1dGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbXVsdGlwbGUobXVsdGlwbGU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aXBsZSk7XG4gIH1cblxuICBASW5wdXQoKSBkaXNhYmxlZD8gPSBmYWxzZTtcblxuICAvKipcbiAgICogZmlsZURyb3A/OiBmdW5jdGlvblxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBmaWxlIG9yIGZpbGVzIGFyZSBkcm9wcGVkIGluIGhvc3QgZWxlbWVudCBhZnRlciBiZWluZyB2YWxpZGF0ZWQuXG4gICAqIEVtaXRzIGEgW0ZpbGVMaXN0IHwgRmlsZV0gb2JqZWN0LlxuICAgKi9cbiAgQE91dHB1dCgpIGZpbGVEcm9wOiBFdmVudEVtaXR0ZXI8RmlsZUxpc3QgfCBGaWxlPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRmlsZUxpc3QgfCBGaWxlXG4gID4oKTtcblxuICAvKipcbiAgICogQmluZHMgbmF0aXZlICdtdWx0aXBsZScgYXR0cmlidXRlIGlmIFttdWx0aXBsZV0gcHJvcGVydHkgaXMgJ3RydWUnLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm11bHRpcGxlJylcbiAgZ2V0IG11bHRpcGxlQmluZGluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZSA/ICcnIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIG5hdGl2ZSAnZGlzYWJsZWQnIGF0dHJpYnV0ZSBpZiBbZGlzYWJsZWRdIHByb3BlcnR5IGlzICd0cnVlJy5cbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZEJpbmRpbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIC8vIExpc3RlbnMgdG8gJ2RyYWdlbnRlcicgaG9zdCBldmVudCB0byBhZGQgYW5pbWF0aW9uIGNsYXNzICdkcm9wLXpvbmUnIHdoaWNoIGNhbiBiZSBvdmVycmlkZW4gaW4gaG9zdC5cbiAgICAgIC8vIFN0b3BzIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBkZWZhdWx0IGFjdGlvbiBmcm9tIGJyb3dzZXIgZm9yICdkcmFnZW50ZXInIGV2ZW50LlxuICAgICAgdGhpcy5fZHJhZ2VudGVyTGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2RyYWdlbnRlcicsXG4gICAgICAgIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Ryb3Atem9uZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9zdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICAvLyBMaXN0ZW5zIHRvICdkcmFnbGVhdmUnIGhvc3QgZXZlbnQgdG8gcmVtb3ZlIGFuaW1hdGlvbiBjbGFzcyAnZHJvcC16b25lJy5cbiAgICAgIC8vIFN0b3BzIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBkZWZhdWx0IGFjdGlvbiBmcm9tIGJyb3dzZXIgZm9yICdkcmFnbGVhdmUnIGV2ZW50LlxuICAgICAgdGhpcy5fZHJhZ2xlYXZlTGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2RyYWdsZWF2ZScsXG4gICAgICAgIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdkcm9wLXpvbmUnKTtcbiAgICAgICAgICB0aGlzLl9zdG9wRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICAvLyBMaXN0ZW5zIHRvICdkcmFnb3ZlcicgaG9zdCBldmVudCB0byB2YWxpZGF0ZSB0cmFuc2ZlciBpdGVtcy5cbiAgICAgIC8vIENoZWNrcyBpZiAnbXVsdGlwbGUnIGF0dHIgZXhpc3RzIGluIGhvc3QgdG8gYWxsb3cgbXVsdGlwbGUgZmlsZSBkcm9wcy5cbiAgICAgIC8vIFN0b3BzIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBkZWZhdWx0IGFjdGlvbiBmcm9tIGJyb3dzZXIgZm9yICdkcmFnb3ZlcicgZXZlbnQuXG4gICAgICB0aGlzLl9kcmFnb3Zlckxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKFxuICAgICAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdkcmFnb3ZlcicsXG4gICAgICAgIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJhbnNmZXI6IERhdGFUcmFuc2ZlciA9XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIgfHwgbmV3IERhdGFUcmFuc2ZlcigpO1xuICAgICAgICAgIHRyYW5zZmVyLmRyb3BFZmZlY3QgPSB0aGlzLl90eXBlQ2hlY2sodHJhbnNmZXIudHlwZXMpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICghdGhpcy5fbXVsdGlwbGUgJiZcbiAgICAgICAgICAgICAgKCh0cmFuc2Zlci5pdGVtcyAmJiB0cmFuc2Zlci5pdGVtcy5sZW5ndGggPiAxKSB8fFxuICAgICAgICAgICAgICAgICg8YW55PnRyYW5zZmVyKS5tb3pJdGVtQ291bnQgPiAxKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3N0b3BFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kcmFnZW50ZXJMaXN0ZW5lcj8uKCk7XG4gICAgdGhpcy5fZHJhZ2xlYXZlTGlzdGVuZXI/LigpO1xuICAgIHRoaXMuX2RyYWdvdmVyTGlzdGVuZXI/LigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gJ2Ryb3AnIGhvc3QgZXZlbnQgdG8gZ2V0IHZhbGlkYXRlZCB0cmFuc2ZlciBpdGVtcy5cbiAgICogRW1pdHMgdGhlICdmaWxlRHJvcCcgZXZlbnQgd2l0aCBhIFtGaWxlTGlzdF0gb3IgW0ZpbGVdIGRlcGVuZGluZyBpZiAnbXVsdGlwbGUnIGF0dHIgZXhpc3RzIGluIGhvc3QuXG4gICAqIFN0b3BzIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBkZWZhdWx0IGFjdGlvbiBmcm9tIGJyb3dzZXIgZm9yICdkcm9wJyBldmVudC5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICBvbkRyb3AoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBjb25zdCB0cmFuc2ZlcjogRGF0YVRyYW5zZmVyID1cbiAgICAgICAgKDxEcmFnRXZlbnQ+ZXZlbnQpLmRhdGFUcmFuc2ZlciA/PyBuZXcgRGF0YVRyYW5zZmVyKCk7XG4gICAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSB0cmFuc2Zlci5maWxlcztcbiAgICAgIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdmFsdWU6IEZpbGVMaXN0IHwgRmlsZSA9IHRoaXMuX211bHRpcGxlXG4gICAgICAgICAgPyBmaWxlcy5sZW5ndGggPiAxXG4gICAgICAgICAgICA/IGZpbGVzXG4gICAgICAgICAgICA6IGZpbGVzWzBdXG4gICAgICAgICAgOiBmaWxlc1swXTtcbiAgICAgICAgdGhpcy5maWxlRHJvcC5lbWl0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZHJvcC16b25lJyk7XG4gICAgdGhpcy5fc3RvcEV2ZW50KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaWYgdGhlIHRyYW5zZmVyIGl0ZW0gdHlwZXMgYXJlICdGaWxlcycuXG4gICAqL1xuICBwcml2YXRlIF90eXBlQ2hlY2soXG4gICAgdHlwZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IERPTVN0cmluZ0xpc3RcbiAgKTogJ25vbmUnIHwgJ2NvcHknIHwgJ2xpbmsnIHwgJ21vdmUnIHtcbiAgICBsZXQgZHJvcEVmZmVjdDogJ25vbmUnIHwgJ2NvcHknIHwgJ2xpbmsnIHwgJ21vdmUnID0gJ25vbmUnO1xuICAgIGlmIChcbiAgICAgIHR5cGVzICYmXG4gICAgICAoKCg8YW55PnR5cGVzKS5jb250YWlucyAmJiAoPGFueT50eXBlcykuY29udGFpbnMoJ0ZpbGVzJykpIHx8XG4gICAgICAgICgoPGFueT50eXBlcykuaW5kZXhPZiAmJiAoPGFueT50eXBlcykuaW5kZXhPZignRmlsZXMnKSAhPT0gLTEpKVxuICAgICkge1xuICAgICAgZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICB9XG5cbiAgICByZXR1cm4gZHJvcEVmZmVjdDtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BFdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iXX0=
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import { Directive, Input, Output, EventEmitter } from '@angular/core';
|
2
|
+
import { HostListener, HostBinding, Host, Optional } from '@angular/core';
|
3
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
4
|
+
import { NgModel } from '@angular/forms';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "@angular/forms";
|
7
|
+
export class TdFileSelectDirective {
|
8
|
+
model;
|
9
|
+
_multiple = false;
|
10
|
+
/**
|
11
|
+
* multiple?: boolean
|
12
|
+
* Sets whether multiple files can be selected at once in host element, or just a single file.
|
13
|
+
* Can also be 'multiple' native attribute.
|
14
|
+
*/
|
15
|
+
set multiple(multiple) {
|
16
|
+
this._multiple = coerceBooleanProperty(multiple);
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* fileSelect?: function
|
20
|
+
* Event emitted when a file or files are selected in host [HTMLInputElement].
|
21
|
+
* Emits a [FileList | File] object.
|
22
|
+
* Alternative to not use [(ngModel)].
|
23
|
+
*/
|
24
|
+
fileSelect = new EventEmitter();
|
25
|
+
/**
|
26
|
+
* Binds native 'multiple' attribute if [multiple] property is 'true'.
|
27
|
+
*/
|
28
|
+
get multipleBinding() {
|
29
|
+
return this._multiple ? '' : undefined;
|
30
|
+
}
|
31
|
+
constructor(model) {
|
32
|
+
this.model = model;
|
33
|
+
}
|
34
|
+
/**
|
35
|
+
* Listens to 'change' host event to get [HTMLInputElement] files.
|
36
|
+
* Emits the 'fileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.
|
37
|
+
* Uses [(ngModel)] if declared, instead of emitting 'fileSelect' event.
|
38
|
+
*/
|
39
|
+
onChange(event) {
|
40
|
+
if (event.target instanceof HTMLInputElement) {
|
41
|
+
const fileInputEl = event.target;
|
42
|
+
const files = fileInputEl.files || new FileList();
|
43
|
+
if (files.length) {
|
44
|
+
const value = this._multiple
|
45
|
+
? files.length > 1
|
46
|
+
? files
|
47
|
+
: files[0]
|
48
|
+
: files[0];
|
49
|
+
this.model
|
50
|
+
? this.model.update.emit(value)
|
51
|
+
: this.fileSelect.emit(value);
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileSelectDirective, deps: [{ token: i1.NgModel, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
56
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: TdFileSelectDirective, selector: "[tdFileSelect]", inputs: { multiple: "multiple" }, outputs: { fileSelect: "fileSelect" }, host: { listeners: { "change": "onChange($event)" }, properties: { "attr.multiple": "this.multipleBinding" } }, ngImport: i0 });
|
57
|
+
}
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileSelectDirective, decorators: [{
|
59
|
+
type: Directive,
|
60
|
+
args: [{
|
61
|
+
selector: '[tdFileSelect]',
|
62
|
+
}]
|
63
|
+
}], ctorParameters: function () { return [{ type: i1.NgModel, decorators: [{
|
64
|
+
type: Optional
|
65
|
+
}, {
|
66
|
+
type: Host
|
67
|
+
}] }]; }, propDecorators: { multiple: [{
|
68
|
+
type: Input
|
69
|
+
}], fileSelect: [{
|
70
|
+
type: Output
|
71
|
+
}], multipleBinding: [{
|
72
|
+
type: HostBinding,
|
73
|
+
args: ['attr.multiple']
|
74
|
+
}], onChange: [{
|
75
|
+
type: HostListener,
|
76
|
+
args: ['change', ['$event']]
|
77
|
+
}] } });
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2ZpbGUvc3JjL2RpcmVjdGl2ZXMvZmlsZS1zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt6QyxNQUFNLE9BQU8scUJBQXFCO0lBK0JRO0lBOUJoQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRTFCOzs7O09BSUc7SUFDSCxJQUNJLFFBQVEsQ0FBQyxRQUEwQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFVBQVUsR0FBa0MsSUFBSSxZQUFZLEVBRW5FLENBQUM7SUFFSjs7T0FFRztJQUNILElBQ0ksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUF3QyxLQUFjO1FBQWQsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUFHLENBQUM7SUFFMUQ7Ozs7T0FJRztJQUVILFFBQVEsQ0FBQyxLQUFZO1FBQ25CLElBQUksS0FBSyxDQUFDLE1BQU0sWUFBWSxnQkFBZ0IsRUFBRTtZQUM1QyxNQUFNLFdBQVcsR0FBcUIsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNuRCxNQUFNLEtBQUssR0FBYSxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUQsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUNoQixNQUFNLEtBQUssR0FBb0IsSUFBSSxDQUFDLFNBQVM7b0JBQzNDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ2hCLENBQUMsQ0FBQyxLQUFLO3dCQUNQLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNaLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEtBQUs7b0JBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNqQztTQUNGO0lBQ0gsQ0FBQzt1R0F0RFUscUJBQXFCOzJGQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQWdDYyxRQUFROzswQkFBSSxJQUFJOzRDQXRCekIsUUFBUTtzQkFEWCxLQUFLO2dCQVdJLFVBQVU7c0JBQW5CLE1BQU07Z0JBUUgsZUFBZTtzQkFEbEIsV0FBVzt1QkFBQyxlQUFlO2dCQWE1QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhvc3RMaXN0ZW5lciwgSG9zdEJpbmRpbmcsIEhvc3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RkRmlsZVNlbGVjdF0nLFxufSlcbmV4cG9ydCBjbGFzcyBUZEZpbGVTZWxlY3REaXJlY3RpdmUge1xuICBwcml2YXRlIF9tdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBtdWx0aXBsZT86IGJvb2xlYW5cbiAgICogU2V0cyB3aGV0aGVyIG11bHRpcGxlIGZpbGVzIGNhbiBiZSBzZWxlY3RlZCBhdCBvbmNlIGluIGhvc3QgZWxlbWVudCwgb3IganVzdCBhIHNpbmdsZSBmaWxlLlxuICAgKiBDYW4gYWxzbyBiZSAnbXVsdGlwbGUnIG5hdGl2ZSBhdHRyaWJ1dGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbXVsdGlwbGUobXVsdGlwbGU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aXBsZSk7XG4gIH1cblxuICAvKipcbiAgICogZmlsZVNlbGVjdD86IGZ1bmN0aW9uXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGZpbGUgb3IgZmlsZXMgYXJlIHNlbGVjdGVkIGluIGhvc3QgW0hUTUxJbnB1dEVsZW1lbnRdLlxuICAgKiBFbWl0cyBhIFtGaWxlTGlzdCB8IEZpbGVdIG9iamVjdC5cbiAgICogQWx0ZXJuYXRpdmUgdG8gbm90IHVzZSBbKG5nTW9kZWwpXS5cbiAgICovXG4gIEBPdXRwdXQoKSBmaWxlU2VsZWN0OiBFdmVudEVtaXR0ZXI8RmlsZUxpc3QgfCBGaWxlPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRmlsZUxpc3QgfCBGaWxlXG4gID4oKTtcblxuICAvKipcbiAgICogQmluZHMgbmF0aXZlICdtdWx0aXBsZScgYXR0cmlidXRlIGlmIFttdWx0aXBsZV0gcHJvcGVydHkgaXMgJ3RydWUnLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm11bHRpcGxlJylcbiAgZ2V0IG11bHRpcGxlQmluZGluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZSA/ICcnIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIG1vZGVsOiBOZ01vZGVsKSB7fVxuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIHRvICdjaGFuZ2UnIGhvc3QgZXZlbnQgdG8gZ2V0IFtIVE1MSW5wdXRFbGVtZW50XSBmaWxlcy5cbiAgICogRW1pdHMgdGhlICdmaWxlU2VsZWN0JyBldmVudCB3aXRoIGEgW0ZpbGVMaXN0XSBvciBbRmlsZV0gZGVwZW5kaW5nIGlmICdtdWx0aXBsZScgYXR0ciBleGlzdHMgaW4gaG9zdC5cbiAgICogVXNlcyBbKG5nTW9kZWwpXSBpZiBkZWNsYXJlZCwgaW5zdGVhZCBvZiBlbWl0dGluZyAnZmlsZVNlbGVjdCcgZXZlbnQuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICBvbkNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgY29uc3QgZmlsZUlucHV0RWw6IEhUTUxJbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSBmaWxlSW5wdXRFbC5maWxlcyB8fCBuZXcgRmlsZUxpc3QoKTtcbiAgICAgIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdmFsdWU6IEZpbGVMaXN0IHwgRmlsZSA9IHRoaXMuX211bHRpcGxlXG4gICAgICAgICAgPyBmaWxlcy5sZW5ndGggPiAxXG4gICAgICAgICAgICA/IGZpbGVzXG4gICAgICAgICAgICA6IGZpbGVzWzBdXG4gICAgICAgICAgOiBmaWxlc1swXTtcbiAgICAgICAgdGhpcy5tb2RlbFxuICAgICAgICAgID8gdGhpcy5tb2RlbC51cGRhdGUuZW1pdCh2YWx1ZSlcbiAgICAgICAgICA6IHRoaXMuZmlsZVNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,146 @@
|
|
1
|
+
import { Component, Directive, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef, forwardRef, NgZone, } from '@angular/core';
|
2
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
3
|
+
import { TemplatePortalDirective } from '@angular/cdk/portal';
|
4
|
+
import { ENTER } from '@angular/cdk/keycodes';
|
5
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
6
|
+
import { fromEvent, merge, Subject } from 'rxjs';
|
7
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
8
|
+
import { mixinControlValueAccessor, mixinDisabled, } from '@covalent/core/common';
|
9
|
+
import * as i0 from "@angular/core";
|
10
|
+
import * as i1 from "@angular/material/button";
|
11
|
+
import * as i2 from "../directives/file-select.directive";
|
12
|
+
import * as i3 from "../directives/file-drop.directive";
|
13
|
+
export class TdFileInputLabelDirective extends TemplatePortalDirective {
|
14
|
+
constructor(templateRef, viewContainerRef) {
|
15
|
+
super(templateRef, viewContainerRef);
|
16
|
+
}
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileInputLabelDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
18
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: TdFileInputLabelDirective, selector: "[tdFileInputLabel]ng-template", usesInheritance: true, ngImport: i0 });
|
19
|
+
}
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileInputLabelDirective, decorators: [{
|
21
|
+
type: Directive,
|
22
|
+
args: [{
|
23
|
+
selector: '[tdFileInputLabel]ng-template',
|
24
|
+
}]
|
25
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
|
26
|
+
export class TdFileInputBase {
|
27
|
+
_changeDetectorRef;
|
28
|
+
constructor(_changeDetectorRef) {
|
29
|
+
this._changeDetectorRef = _changeDetectorRef;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
export const _TdFileInputMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileInputBase));
|
33
|
+
export class TdFileInputComponent extends _TdFileInputMixinBase {
|
34
|
+
_ngZone;
|
35
|
+
_renderer;
|
36
|
+
_multiple = false;
|
37
|
+
/** The native `<button class="td-file-input"></button>` element */
|
38
|
+
_inputButton;
|
39
|
+
/** The native `<input type="file"> element */
|
40
|
+
_inputElement;
|
41
|
+
get inputElement() {
|
42
|
+
return this._inputElement.nativeElement;
|
43
|
+
}
|
44
|
+
/**
|
45
|
+
* color?: 'accent' | 'primary' | 'warn'
|
46
|
+
* Sets button color. Uses same color palette accepted as [MatButton].
|
47
|
+
*/
|
48
|
+
color;
|
49
|
+
/**
|
50
|
+
* multiple?: boolean
|
51
|
+
* Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].
|
52
|
+
*/
|
53
|
+
set multiple(multiple) {
|
54
|
+
this._multiple = coerceBooleanProperty(multiple);
|
55
|
+
}
|
56
|
+
get multiple() {
|
57
|
+
return this._multiple;
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* accept?: string
|
61
|
+
* Sets files accepted when opening the file browser dialog.
|
62
|
+
* Same as 'accept' attribute in <input/> element.
|
63
|
+
*/
|
64
|
+
accept;
|
65
|
+
/**
|
66
|
+
* select?: function
|
67
|
+
* Event emitted a file is selected
|
68
|
+
* Emits a [File | FileList] object.
|
69
|
+
*/
|
70
|
+
selectFile = new EventEmitter();
|
71
|
+
_destroy$ = new Subject();
|
72
|
+
constructor(_ngZone, _renderer, _changeDetectorRef) {
|
73
|
+
super(_changeDetectorRef);
|
74
|
+
this._ngZone = _ngZone;
|
75
|
+
this._renderer = _renderer;
|
76
|
+
}
|
77
|
+
ngOnInit() {
|
78
|
+
this._ngZone.runOutsideAngular(() => {
|
79
|
+
merge(fromEvent(this._inputButton.nativeElement, 'click'), fromEvent(this._inputButton.nativeElement, 'keyup').pipe(filter((event) => event.keyCode === ENTER)))
|
80
|
+
.pipe(takeUntil(this._destroy$))
|
81
|
+
.subscribe(() => this._inputElement.nativeElement.click());
|
82
|
+
});
|
83
|
+
}
|
84
|
+
ngOnDestroy() {
|
85
|
+
this._destroy$.next();
|
86
|
+
}
|
87
|
+
/**
|
88
|
+
* Method executed when a file is selected.
|
89
|
+
*/
|
90
|
+
handleSelect(files) {
|
91
|
+
this.writeValue(files);
|
92
|
+
this.selectFile.emit(files);
|
93
|
+
}
|
94
|
+
/**
|
95
|
+
* Used to clear the selected files from the [TdFileInputComponent].
|
96
|
+
*/
|
97
|
+
clear() {
|
98
|
+
this.writeValue(undefined);
|
99
|
+
this._renderer.setProperty(this.inputElement, 'value', '');
|
100
|
+
}
|
101
|
+
/** Method executed when the disabled value changes */
|
102
|
+
onDisabledChange(v) {
|
103
|
+
if (v) {
|
104
|
+
this.clear();
|
105
|
+
}
|
106
|
+
}
|
107
|
+
/**
|
108
|
+
* Sets disable to the component. Implemented as part of ControlValueAccessor.
|
109
|
+
*/
|
110
|
+
setDisabledState(isDisabled) {
|
111
|
+
this.disabled = isDisabled;
|
112
|
+
}
|
113
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileInputComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
114
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TdFileInputComponent, selector: "td-file-input", inputs: { disabled: "disabled", value: "value", color: "color", multiple: "multiple", accept: "accept" }, outputs: { selectFile: "selectFile" }, providers: [
|
115
|
+
{
|
116
|
+
provide: NG_VALUE_ACCESSOR,
|
117
|
+
useExisting: forwardRef(() => TdFileInputComponent),
|
118
|
+
multi: true,
|
119
|
+
},
|
120
|
+
], viewQueries: [{ propertyName: "_inputButton", first: true, predicate: ["fileInputButton"], descendants: true, read: ElementRef, static: true }, { propertyName: "_inputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host ::ng-deep .mdc-button__label{display:flex;align-items:center}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i2.TdFileSelectDirective, selector: "[tdFileSelect]", inputs: ["multiple"], outputs: ["fileSelect"] }, { kind: "directive", type: i3.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
121
|
+
}
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdFileInputComponent, decorators: [{
|
123
|
+
type: Component,
|
124
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
125
|
+
{
|
126
|
+
provide: NG_VALUE_ACCESSOR,
|
127
|
+
useExisting: forwardRef(() => TdFileInputComponent),
|
128
|
+
multi: true,
|
129
|
+
},
|
130
|
+
], selector: 'td-file-input', inputs: ['disabled', 'value'], template: "<button\n #fileInputButton\n mat-raised-button\n class=\"td-file-input\"\n type=\"button\"\n [color]=\"color\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (fileDrop)=\"handleSelect($event)\"\n tdFileDrop\n>\n <ng-content></ng-content>\n</button>\n<input\n #fileInput\n class=\"td-file-input-hidden\"\n type=\"file\"\n [attr.accept]=\"accept\"\n (fileSelect)=\"handleSelect($event)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n tdFileSelect\n/>\n", styles: [":host .td-file-input{padding-left:8px;padding-right:8px}:host input.td-file-input-hidden{display:none}:host ::ng-deep .mdc-button__label{display:flex;align-items:center}:host .drop-zone{border-radius:3px}:host .drop-zone *{pointer-events:none}\n"] }]
|
131
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _inputButton: [{
|
132
|
+
type: ViewChild,
|
133
|
+
args: ['fileInputButton', { static: true, read: ElementRef }]
|
134
|
+
}], _inputElement: [{
|
135
|
+
type: ViewChild,
|
136
|
+
args: ['fileInput', { static: true }]
|
137
|
+
}], color: [{
|
138
|
+
type: Input
|
139
|
+
}], multiple: [{
|
140
|
+
type: Input
|
141
|
+
}], accept: [{
|
142
|
+
type: Input
|
143
|
+
}], selectFile: [{
|
144
|
+
type: Output
|
145
|
+
}] } });
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvZmlsZS9zcmMvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9maWxlL3NyYy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFHVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsYUFBYSxHQUNkLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBSy9CLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx1QkFBdUI7SUFDcEUsWUFDRSxXQUFpQyxFQUNqQyxnQkFBa0M7UUFFbEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZDLENB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QkFBZ0IsQ0FBQyxVQUFtQjtRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO3VHQXpHVSxvQkFBb0I7MkZBQXBCLG9CQUFvQix5TEFicEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUNuRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysc0hBY21ELFVBQVUsNktDekVoRSxxZUF1QkE7OzJGRDJDYSxvQkFBb0I7a0JBZmhDLFNBQVM7c0NBQ1MsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsWUFDUyxlQUFlLFVBRWpCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztxSkFZN0IsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtoRSxhQUFhO3NCQURaLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFVL0IsS0FBSztzQkFBYixLQUFLO2dCQU9GLFFBQVE7c0JBRFgsS0FBSztnQkFhRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBmb3J3YXJkUmVmLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIElDYW5EaXNhYmxlLFxuICBJQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIG1peGluQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIG1peGluRGlzYWJsZWQsXG59IGZyb20gJ0Bjb3ZhbGVudC9jb3JlL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZEZpbGVJbnB1dExhYmVsXW5nLXRlbXBsYXRlJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRGaWxlSW5wdXRMYWJlbERpcmVjdGl2ZSBleHRlbmRzIFRlbXBsYXRlUG9ydGFsRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+LFxuICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZEZpbGVJbnB1dEJhc2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbn1cblxuZXhwb3J0IGNvbnN0IF9UZEZpbGVJbnB1dE1peGluQmFzZSA9IG1peGluQ29udHJvbFZhbHVlQWNjZXNzb3IoXG4gIG1peGluRGlzYWJsZWQoVGRGaWxlSW5wdXRCYXNlKVxuKTtcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRkRmlsZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAndGQtZmlsZS1pbnB1dCcsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXNhYmxlZCcsICd2YWx1ZSddLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRGaWxlSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBfVGRGaWxlSW5wdXRNaXhpbkJhc2VcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLCBJQ2FuRGlzYWJsZVxue1xuICBwcml2YXRlIF9tdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgbmF0aXZlIGA8YnV0dG9uIGNsYXNzPVwidGQtZmlsZS1pbnB1dFwiPjwvYnV0dG9uPmAgZWxlbWVudCAqL1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXRCdXR0b24nLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBfaW5wdXRCdXR0b24hOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKiogVGhlIG5hdGl2ZSBgPGlucHV0IHR5cGU9XCJmaWxlXCI+IGVsZW1lbnQgKi9cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgX2lucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIGdldCBpbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbG9yPzogJ2FjY2VudCcgfCAncHJpbWFyeScgfCAnd2FybidcbiAgICogU2V0cyBidXR0b24gY29sb3IuIFVzZXMgc2FtZSBjb2xvciBwYWxldHRlIGFjY2VwdGVkIGFzIFtNYXRCdXR0b25dLlxuICAgKi9cbiAgQElucHV0KCkgY29sb3I/OiAnYWNjZW50JyB8ICdwcmltYXJ5JyB8ICd3YXJuJztcblxuICAvKipcbiAgICogbXVsdGlwbGU/OiBib29sZWFuXG4gICAqIFNldHMgaWYgbXVsdGlwbGUgZmlsZXMgY2FuIGJlIGRyb3BwZWQvc2VsZWN0ZWQgYXQgb25jZSBpbiBbVGRGaWxlSW5wdXRDb21wb25lbnRdLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG11bHRpcGxlKG11bHRpcGxlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkobXVsdGlwbGUpO1xuICB9XG4gIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cblxuICAvKipcbiAgICogYWNjZXB0Pzogc3RyaW5nXG4gICAqIFNldHMgZmlsZXMgYWNjZXB0ZWQgd2hlbiBvcGVuaW5nIHRoZSBmaWxlIGJyb3dzZXIgZGlhbG9nLlxuICAgKiBTYW1lIGFzICdhY2NlcHQnIGF0dHJpYnV0ZSBpbiA8aW5wdXQvPiBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgYWNjZXB0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzZWxlY3Q/OiBmdW5jdGlvblxuICAgKiBFdmVudCBlbWl0dGVkIGEgZmlsZSBpcyBzZWxlY3RlZFxuICAgKiBFbWl0cyBhIFtGaWxlIHwgRmlsZUxpc3RdIG9iamVjdC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RGaWxlOiBFdmVudEVtaXR0ZXI8RmlsZSB8IEZpbGVMaXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRmlsZSB8IEZpbGVMaXN0XG4gID4oKTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKF9jaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgbWVyZ2UoXG4gICAgICAgIGZyb21FdmVudCh0aGlzLl9pbnB1dEJ1dHRvbi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKSxcbiAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuX2lucHV0QnV0dG9uLm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGljaygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgZXhlY3V0ZWQgd2hlbiBhIGZpbGUgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBoYW5kbGVTZWxlY3QoZmlsZXM6IEZpbGUgfCBGaWxlTGlzdCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZShmaWxlcyk7XG4gICAgdGhpcy5zZWxlY3RGaWxlLmVtaXQoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGVzIGZyb20gdGhlIFtUZEZpbGVJbnB1dENvbXBvbmVudF0uXG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodW5kZWZpbmVkKTtcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0RWxlbWVudCwgJ3ZhbHVlJywgJycpO1xuICB9XG5cbiAgLyoqIE1ldGhvZCBleGVjdXRlZCB3aGVuIHRoZSBkaXNhYmxlZCB2YWx1ZSBjaGFuZ2VzICovXG4gIG92ZXJyaWRlIG9uRGlzYWJsZWRDaGFuZ2UodjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTZXRzIGRpc2FibGUgdG8gdGhlIGNvbXBvbmVudC4gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gICNmaWxlSW5wdXRCdXR0b25cbiAgbWF0LXJhaXNlZC1idXR0b25cbiAgY2xhc3M9XCJ0ZC1maWxlLWlucHV0XCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIFtjb2xvcl09XCJjb2xvclwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIChmaWxlRHJvcCk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50KVwiXG4gIHRkRmlsZURyb3Bcbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9idXR0b24+XG48aW5wdXRcbiAgI2ZpbGVJbnB1dFxuICBjbGFzcz1cInRkLWZpbGUtaW5wdXQtaGlkZGVuXCJcbiAgdHlwZT1cImZpbGVcIlxuICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0XCJcbiAgKGZpbGVTZWxlY3QpPVwiaGFuZGxlU2VsZWN0KCRldmVudClcIlxuICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICB0ZEZpbGVTZWxlY3Rcbi8+XG4iXX0=
|