@testgorilla/tgo-ui 11.22.3 → 12.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/fesm2022/testgorilla-tgo-ui-components-accordion.mjs +335 -229
- package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs +547 -465
- package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs +160 -75
- package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs +678 -278
- package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +337 -274
- package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs +351 -192
- package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs +1950 -960
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +1206 -1044
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +328 -182
- package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-badge.mjs +383 -203
- package/fesm2022/testgorilla-tgo-ui-components-badge.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +553 -261
- package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-button.mjs +709 -739
- package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-card.mjs +219 -184
- package/fesm2022/testgorilla-tgo-ui-components-card.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs +515 -458
- package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs +423 -162
- package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-core.mjs +10784 -10996
- package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs +810 -533
- package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs +473 -116
- package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +1149 -540
- package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-divider.mjs +148 -84
- package/fesm2022/testgorilla-tgo-ui-components-divider.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs +239 -142
- package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +599 -467
- package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs +126 -70
- package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +324 -329
- package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs +969 -648
- package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs +553 -419
- package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +847 -452
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs +398 -302
- package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs +162 -95
- package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-icon.mjs +1825 -1795
- package/fesm2022/testgorilla-tgo-ui-components-icon.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs +1018 -672
- package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +758 -368
- package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-logo.mjs +204 -212
- package/fesm2022/testgorilla-tgo-ui-components-logo.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs +183 -48
- package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs +243 -79
- package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs +751 -361
- package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs +1122 -385
- package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +689 -413
- package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs +227 -92
- package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs +174 -113
- package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs +367 -165
- package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs +253 -118
- package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs +730 -444
- package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-popover.mjs +533 -221
- package/fesm2022/testgorilla-tgo-ui-components-popover.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-popup-tip.mjs +274 -76
- package/fesm2022/testgorilla-tgo-ui-components-popup-tip.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs +184 -124
- package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +1223 -574
- package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +249 -160
- package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +447 -439
- package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-rating.mjs +226 -150
- package/fesm2022/testgorilla-tgo-ui-components-rating.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs +255 -67
- package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +205 -162
- package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs +245 -153
- package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs +274 -140
- package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-segmented-toggle.mjs +319 -147
- package/fesm2022/testgorilla-tgo-ui-components-segmented-toggle.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs +286 -84
- package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs +660 -208
- package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs +579 -320
- package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +419 -200
- package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs +132 -80
- package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +741 -390
- package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs +455 -329
- package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs +543 -514
- package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs +193 -104
- package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs +760 -524
- package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-table.mjs +714 -415
- package/fesm2022/testgorilla-tgo-ui-components-table.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs +847 -438
- package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +535 -275
- package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs +316 -246
- package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs +404 -284
- package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs +664 -383
- package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs +201 -112
- package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs +1014 -458
- package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui.mjs +147 -155
- package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
- package/mcp/catalog.json +1 -1
- package/package.json +16 -17
- package/projects/tgo-canopy-ui/theme/_palette.scss +23 -18
- package/types/testgorilla-tgo-ui-components-accordion.d.ts +214 -158
- package/types/testgorilla-tgo-ui-components-ai-audio-circle.d.ts +93 -69
- package/types/testgorilla-tgo-ui-components-ai-caveat.d.ts +37 -34
- package/types/testgorilla-tgo-ui-components-ai-feedback.d.ts +126 -86
- package/types/testgorilla-tgo-ui-components-alert-banner.d.ts +260 -185
- package/types/testgorilla-tgo-ui-components-audio-waveform.d.ts +96 -67
- package/types/testgorilla-tgo-ui-components-autocomplete-v2.d.ts +455 -256
- package/types/testgorilla-tgo-ui-components-autocomplete.d.ts +545 -390
- package/types/testgorilla-tgo-ui-components-avatar.d.ts +128 -102
- package/types/testgorilla-tgo-ui-components-badge.d.ts +191 -139
- package/types/testgorilla-tgo-ui-components-breadcrumb.d.ts +100 -62
- package/types/testgorilla-tgo-ui-components-button.d.ts +479 -340
- package/types/testgorilla-tgo-ui-components-card.d.ts +153 -114
- package/types/testgorilla-tgo-ui-components-checkbox.d.ts +299 -223
- package/types/testgorilla-tgo-ui-components-checklist.d.ts +149 -97
- package/types/testgorilla-tgo-ui-components-core.d.ts +307 -295
- package/types/testgorilla-tgo-ui-components-datepicker.d.ts +404 -299
- package/types/testgorilla-tgo-ui-components-device-control.d.ts +151 -81
- package/types/testgorilla-tgo-ui-components-dialog.d.ts +442 -329
- package/types/testgorilla-tgo-ui-components-divider.d.ts +64 -51
- package/types/testgorilla-tgo-ui-components-donut-chart.d.ts +41 -37
- package/types/testgorilla-tgo-ui-components-dropdown.d.ts +335 -241
- package/types/testgorilla-tgo-ui-components-elevation-shadow.d.ts +48 -43
- package/types/testgorilla-tgo-ui-components-empty-state.d.ts +317 -215
- package/types/testgorilla-tgo-ui-components-field.d.ts +559 -388
- package/types/testgorilla-tgo-ui-components-file-upload.d.ts +230 -168
- package/types/testgorilla-tgo-ui-components-filter-button.d.ts +263 -206
- package/types/testgorilla-tgo-ui-components-gaussian-chart.d.ts +107 -94
- package/types/testgorilla-tgo-ui-components-icon-label.d.ts +84 -61
- package/types/testgorilla-tgo-ui-components-icon.d.ts +137 -110
- package/types/testgorilla-tgo-ui-components-infinite-scroll-table.d.ts +429 -303
- package/types/testgorilla-tgo-ui-components-inline-field.d.ts +338 -254
- package/types/testgorilla-tgo-ui-components-logo.d.ts +119 -101
- package/types/testgorilla-tgo-ui-components-media-card.d.ts +51 -35
- package/types/testgorilla-tgo-ui-components-media-dialog.d.ts +40 -45
- package/types/testgorilla-tgo-ui-components-multi-input.d.ts +283 -194
- package/types/testgorilla-tgo-ui-components-navbar.d.ts +326 -208
- package/types/testgorilla-tgo-ui-components-overflow-menu.d.ts +276 -204
- package/types/testgorilla-tgo-ui-components-page-header.d.ts +67 -50
- package/types/testgorilla-tgo-ui-components-paginator.d.ts +103 -70
- package/types/testgorilla-tgo-ui-components-password-criteria.d.ts +67 -58
- package/types/testgorilla-tgo-ui-components-password-strength.d.ts +66 -57
- package/types/testgorilla-tgo-ui-components-phone-input.d.ts +217 -175
- package/types/testgorilla-tgo-ui-components-popover.d.ts +94 -53
- package/types/testgorilla-tgo-ui-components-popup-tip.d.ts +81 -44
- package/types/testgorilla-tgo-ui-components-progress-bar.d.ts +115 -84
- package/types/testgorilla-tgo-ui-components-prompt.d.ts +315 -219
- package/types/testgorilla-tgo-ui-components-radial-progress.d.ts +146 -107
- package/types/testgorilla-tgo-ui-components-radio-button.d.ts +296 -219
- package/types/testgorilla-tgo-ui-components-rating.d.ts +134 -95
- package/types/testgorilla-tgo-ui-components-scale-table.d.ts +67 -47
- package/types/testgorilla-tgo-ui-components-scale.d.ts +91 -66
- package/types/testgorilla-tgo-ui-components-segmented-bar.d.ts +118 -89
- package/types/testgorilla-tgo-ui-components-segmented-button.d.ts +107 -80
- package/types/testgorilla-tgo-ui-components-segmented-toggle.d.ts +138 -105
- package/types/testgorilla-tgo-ui-components-selectable-card.d.ts +90 -56
- package/types/testgorilla-tgo-ui-components-side-navigation.d.ts +183 -107
- package/types/testgorilla-tgo-ui-components-side-panel.d.ts +156 -145
- package/types/testgorilla-tgo-ui-components-side-sheet.d.ts +98 -89
- package/types/testgorilla-tgo-ui-components-skeleton.d.ts +50 -33
- package/types/testgorilla-tgo-ui-components-slider.d.ts +278 -198
- package/types/testgorilla-tgo-ui-components-snackbar.d.ts +211 -159
- package/types/testgorilla-tgo-ui-components-spider-chart.d.ts +140 -121
- package/types/testgorilla-tgo-ui-components-spinner.d.ts +93 -72
- package/types/testgorilla-tgo-ui-components-stepper.d.ts +480 -338
- package/types/testgorilla-tgo-ui-components-table.d.ts +280 -233
- package/types/testgorilla-tgo-ui-components-tabs.d.ts +282 -183
- package/types/testgorilla-tgo-ui-components-tag.d.ts +266 -193
- package/types/testgorilla-tgo-ui-components-toggle.d.ts +180 -132
- package/types/testgorilla-tgo-ui-components-tooltip.d.ts +142 -105
- package/types/testgorilla-tgo-ui-components-universal-skills.d.ts +165 -144
- package/types/testgorilla-tgo-ui-components-validation-error.d.ts +70 -51
- package/types/testgorilla-tgo-ui-components-write-with-ai.d.ts +210 -133
- package/types/testgorilla-tgo-ui.d.ts +52 -45
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-file-upload.mjs","sources":["../../../components/file-upload/drag-drop.directive.ts","../../../components/file-upload/file-upload.component.ts","../../../components/file-upload/file-upload.component.html","../../../components/file-upload/file-upload.component.module.ts","../../../components/file-upload/testgorilla-tgo-ui-components-file-upload.ts"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({ selector: '[uiDragDrop]' })\nexport class DragDropDirective {\n constructor() {}\n\n @HostBinding('class.file-over') file: boolean;\n @Output() fileDropped = new EventEmitter<FileList>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n let files: FileList;\n if (event.dataTransfer) {\n files = event.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { NgClass, NgTemplateOutlet, AsyncPipe, LowerCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ApplicationTheme, Color, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponent } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponent } from '@testgorilla/tgo-ui/components/progress-bar';\n\nimport { DragDropDirective } from './drag-drop.directive';\n\n@Component({\n selector: 'ui-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUploadComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* eslint-disable @typescript-eslint/no-deprecated -- the @angular/animations trigger/state/style/animate/transition DSL is deprecated in 20.2 in favor of template-level animate.enter/animate.leave; migrating every Material/component animation is out of scope for this lint pass */\n animations: [\n trigger('inOutAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationProgress', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationChange', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n ],\n imports: [\n DragDropDirective,\n NgClass,\n NgTemplateOutlet,\n IconComponent,\n ProgressBarComponent,\n AsyncPipe,\n LowerCasePipe,\n UiTranslatePipe,\n ],\n})\nexport class FileUploadComponent implements OnInit, OnChanges, ControlValueAccessor {\n @HostBinding() class = 'ui-file-upload';\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() maxFileSizeMB: number;\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() minFileSizeMB: number;\n\n /**\n * Supported files for input field\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() supportedFileTypes?: string;\n\n /**\n * Upload progress\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() uploadProgress: number;\n\n /**\n * Show Upload progress percentage or not\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showUploadProgress = true;\n\n /**\n * Custom progress message\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() fileProcessingMessage: string | undefined;\n\n /**\n * File upload errors\n *\n * @type {string[]}\n * @memberof FileUploadComponent\n */\n @Input() errors?: string[] | null;\n\n /**\n * File upload disabled\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() disabled = false;\n\n @Input() testId: string | null = null;\n\n get successInputTestId(): string {\n return this.testId ? `${this.testId}-success` : 'file-upload-success-input';\n }\n\n /**\n * Existing file information\n *\n * @type {(File | null)}\n * @memberof FileUploadComponent\n */\n @Input() file: File | null = null;\n\n /**\n * Color of the file upload.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() companyColor: string | null = '';\n\n @HostBinding('style.--color')\n compColor: string;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FileUploadComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Whether to show the file size information.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showFileSize = true;\n\n @Output() OnDrop: EventEmitter<File> = new EventEmitter<File>();\n\n @ViewChild('fileDrop') fileDrop: ElementRef<HTMLInputElement>;\n\n protected readonly translationContext = 'FILE_UPLOAD.';\n\n /**\n * @ignore\n */\n onChange = (_value: File | null) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n get fileSizeInMB(): string | null {\n return this.file ? (this.file.size / (1024 * 1024)).toFixed(2) : null;\n }\n\n isMissedMinSize = false;\n progress = false;\n success = false;\n browse: boolean;\n isCanceled = false;\n colorUploadSuccess = Color.SUCCESS_50;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.browse = true;\n }\n\n //When file is dropped\n onFileDropped(files: FileList) {\n this.emitFile(files);\n }\n\n //When input changes\n onChangeUpload(event: Event) {\n this.isCanceled = false;\n const element = event.currentTarget as HTMLInputElement;\n // Prevents clearing items when user selects cancel in the dialog. Cancel event can emit empty file list.\n if (element.files?.length) {\n this.emitFile(element.files || new FileList());\n }\n }\n\n //Emit drop file\n emitFile(files: FileList) {\n const [file] = Array.from(files);\n this.file = file;\n this.errors = null;\n this.onTouch();\n this.isMissedMinSize =\n !file?.size && !this.minFileSizeMB ? true : this.fileSizeToMB(file?.size ?? 0) <= this.minFileSizeMB;\n if (!this.isMissedMinSize) {\n this.onChange(this.file);\n this.OnDrop.emit(file);\n }\n }\n\n //Show progress-bar\n showProgress(): boolean {\n this.browse = false;\n return Boolean(this.file && !this.errors && !this.isMissedMinSize);\n }\n\n //Show success elements\n showSuccess(): boolean {\n return Boolean(this.file && this.uploadProgress === 100 && !this.errors && !this.isMissedMinSize);\n }\n\n //Show browse when there are error\n showBrowse(): boolean {\n return Boolean(this.errors) || this.isMissedMinSize;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.isCanceled) {\n if (changes['uploadProgress'] || changes['file']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['errors']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['applicationTheme']) {\n this.compColor = this.getCompanyColor();\n }\n }\n }\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n writeValue(value?: File): void {\n if (value) {\n this.file = value || null;\n } else {\n this.file = null;\n }\n // The forms API calls this from outside the component's own change\n // detection — under OnPush the view must be marked explicitly.\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: File | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n private getCompanyColor(): string {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n return this.companyColor || (this.applicationTheme === 'classic' ? '#46A997' : '#D410AA');\n }\n\n private fileSizeToMB(fileSize: number): number {\n return fileSize / 1024 / 1024;\n }\n\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n this.fileDrop?.nativeElement?.click();\n } else if (ev.key === 'Escape') {\n this.file = null;\n this.success = false;\n this.progress = false;\n this.errors = null;\n this.isMissedMinSize = false;\n this.browse = true;\n this.isCanceled = true;\n }\n }\n}\n","<ng-container>\n <div\n class=\"upload-file-container\"\n uiDragDrop\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\n (fileDropped)=\"onFileDropped($event)\"\n tabindex=\"0\"\n [tabIndex]=\"0\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"fileDrop?.nativeElement?.click()\"\n >\n @if (browse && !(success && !!file && progress)) {\n <div [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n @if (!!errors || isMissedMinSize) {\n <div class=\"errors\" role=\"alert\">\n @if (!!errors) {\n @for (error of errors; track error) {\n <span><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\n }\n }\n @if (isMissedMinSize) {\n <span>\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\n </span>\n }\n </div>\n }\n <input\n [attr.data-testid]=\"testId ?? 'file-upload-input'\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"'upload-supported-files'\"\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"file\"\n [accept]=\"supportedFileTypes\"\n [disabled]=\"disabled\"\n (change)=\"onChangeUpload($event)\"\n />\n @if (applicationTheme === 'classic') {\n <p>\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\n </p>\n } @else {\n <p id=\"drag-and-drop\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\n }\n <span class=\"upload-text\"\n >{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span\n >\n @if (minFileSizeMB) {\n <span class=\"upload-text\"\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\n >\n }\n </div>\n </div>\n }\n @if (success) {\n <div class=\"upload-success\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n <span class=\"upload-success-text\"\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\n >\n <input\n [attr.data-testid]=\"successInputTestId\"\n [tabIndex]=\"-1\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileTest\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"upload-text\">{{ file?.name }}</span>\n @if (showFileSize) {\n <span class=\"upload-text\">{{\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\n }}</span>\n }\n </div>\n }\n @if (!!progress && !!file && !success) {\n <div class=\"upload-progress\" [@inOutAnimationProgress]>\n <p>{{ file.name }}</p>\n <ui-progress-bar\n [progress]=\"uploadProgress\"\n [companyColor]=\"compColor\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-progress-bar>\n <p class=\"upload-text\">\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\n @if (showUploadProgress) {\n <span>{{ uploadProgress }}</span\n >%\n }\n </p>\n </div>\n }\n\n <ng-template #iconTpl>\n @if (applicationTheme === 'classic') {\n <ui-icon class=\"upload-icon\" name=\"File-upload\"></ui-icon>\n } @else {\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n }\n </ng-template>\n\n @if (!!supportedFileTypes) {\n <div [attr.theme]=\"applicationTheme\" class=\"upload-supported-files\" id=\"upload-supported-files\">\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\n >{{ supportedFileTypes }}\n </div>\n }\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\n\nimport { DragDropDirective } from './drag-drop.directive';\nimport { FileUploadComponent } from './file-upload.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n ProgressBarComponentModule,\n UiTranslatePipe,\n FileUploadComponent,\n DragDropDirective,\n ],\n exports: [FileUploadComponent],\n})\nexport class FileUploadComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-file-upload.mjs","names":[],"sources":["../../../components/file-upload/drag-drop.directive.ts","../../../components/file-upload/file-upload.component.ts","../../../components/file-upload/file-upload.component.html","../../../components/file-upload/file-upload.component.module.ts"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({ selector: '[uiDragDrop]' })\nexport class DragDropDirective {\n constructor() {}\n\n @HostBinding('class.file-over') file: boolean;\n @Output() fileDropped = new EventEmitter<FileList>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.file = false;\n let files: FileList;\n if (event.dataTransfer) {\n files = event.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { NgClass, NgTemplateOutlet, AsyncPipe, LowerCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ApplicationTheme, Color, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponent } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponent } from '@testgorilla/tgo-ui/components/progress-bar';\n\nimport { DragDropDirective } from './drag-drop.directive';\n\n@Component({\n selector: 'ui-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUploadComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* eslint-disable @typescript-eslint/no-deprecated -- the @angular/animations trigger/state/style/animate/transition DSL is deprecated in 20.2 in favor of template-level animate.enter/animate.leave; migrating every Material/component animation is out of scope for this lint pass */\n animations: [\n trigger('inOutAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationProgress', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n trigger('inOutAnimationChange', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '196px' }),\n animate('0.2s ease-in', style({ opacity: 0, height: 0 })),\n ]),\n ]),\n ],\n imports: [\n DragDropDirective,\n NgClass,\n NgTemplateOutlet,\n IconComponent,\n ProgressBarComponent,\n AsyncPipe,\n LowerCasePipe,\n UiTranslatePipe,\n ],\n})\nexport class FileUploadComponent implements OnInit, OnChanges, ControlValueAccessor {\n @HostBinding() class = 'ui-file-upload';\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() maxFileSizeMB: number;\n\n /**\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() minFileSizeMB: number;\n\n /**\n * Supported files for input field\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() supportedFileTypes?: string;\n\n /**\n * Upload progress\n *\n * @type {number}\n * @memberof FileUploadComponent\n */\n @Input() uploadProgress: number;\n\n /**\n * Show Upload progress percentage or not\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showUploadProgress = true;\n\n /**\n * Custom progress message\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() fileProcessingMessage: string | undefined;\n\n /**\n * File upload errors\n *\n * @type {string[]}\n * @memberof FileUploadComponent\n */\n @Input() errors?: string[] | null;\n\n /**\n * File upload disabled\n *\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() disabled = false;\n\n @Input() testId: string | null = null;\n\n get successInputTestId(): string {\n return this.testId ? `${this.testId}-success` : 'file-upload-success-input';\n }\n\n /**\n * Existing file information\n *\n * @type {(File | null)}\n * @memberof FileUploadComponent\n */\n @Input() file: File | null = null;\n\n /**\n * Color of the file upload.\n * Defaults to Test Gorilla primary color.\n *\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() companyColor: string | null = '';\n\n @HostBinding('style.--color')\n compColor: string;\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FileUploadComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * A string representing the ARIA label for accessibility.\n * This label is used to provide an accessible name for the input element.\n * @type {string}\n * @memberof FileUploadComponent\n */\n @Input() ariaLabel: string;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() ariaRequired = false;\n\n /**\n * Whether to show the file size information.\n * @type {boolean}\n * @memberof FileUploadComponent\n */\n @Input() showFileSize = true;\n\n @Output() OnDrop: EventEmitter<File> = new EventEmitter<File>();\n\n @ViewChild('fileDrop') fileDrop: ElementRef<HTMLInputElement>;\n\n protected readonly translationContext = 'FILE_UPLOAD.';\n\n /**\n * @ignore\n */\n onChange = (_value: File | null) => {};\n\n /**\n * @ignore\n */\n onTouch = () => {};\n\n get fileSizeInMB(): string | null {\n return this.file ? (this.file.size / (1024 * 1024)).toFixed(2) : null;\n }\n\n isMissedMinSize = false;\n progress = false;\n success = false;\n browse: boolean;\n isCanceled = false;\n colorUploadSuccess = Color.SUCCESS_50;\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n ngOnInit(): void {\n this.browse = true;\n }\n\n //When file is dropped\n onFileDropped(files: FileList) {\n this.emitFile(files);\n }\n\n //When input changes\n onChangeUpload(event: Event) {\n this.isCanceled = false;\n const element = event.currentTarget as HTMLInputElement;\n // Prevents clearing items when user selects cancel in the dialog. Cancel event can emit empty file list.\n if (element.files?.length) {\n this.emitFile(element.files || new FileList());\n }\n }\n\n //Emit drop file\n emitFile(files: FileList) {\n const [file] = Array.from(files);\n this.file = file;\n this.errors = null;\n this.onTouch();\n this.isMissedMinSize =\n !file?.size && !this.minFileSizeMB ? true : this.fileSizeToMB(file?.size ?? 0) <= this.minFileSizeMB;\n if (!this.isMissedMinSize) {\n this.onChange(this.file);\n this.OnDrop.emit(file);\n }\n }\n\n //Show progress-bar\n showProgress(): boolean {\n this.browse = false;\n return Boolean(this.file && !this.errors && !this.isMissedMinSize);\n }\n\n //Show success elements\n showSuccess(): boolean {\n return Boolean(this.file && this.uploadProgress === 100 && !this.errors && !this.isMissedMinSize);\n }\n\n //Show browse when there are error\n showBrowse(): boolean {\n return Boolean(this.errors) || this.isMissedMinSize;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.isCanceled) {\n if (changes['uploadProgress'] || changes['file']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['errors']) {\n this.progress = this.showProgress();\n this.success = this.showSuccess();\n this.browse = this.showBrowse();\n }\n if (changes['applicationTheme']) {\n this.compColor = this.getCompanyColor();\n }\n }\n }\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n writeValue(value?: File): void {\n if (value) {\n this.file = value || null;\n } else {\n this.file = null;\n }\n // The forms API calls this from outside the component's own change\n // detection — under OnPush the view must be marked explicitly.\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: File | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n private getCompanyColor(): string {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty companyColor falls back to the theme colour\n return this.companyColor || (this.applicationTheme === 'classic' ? '#46A997' : '#D410AA');\n }\n\n private fileSizeToMB(fileSize: number): number {\n return fileSize / 1024 / 1024;\n }\n\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n this.fileDrop?.nativeElement?.click();\n } else if (ev.key === 'Escape') {\n this.file = null;\n this.success = false;\n this.progress = false;\n this.errors = null;\n this.isMissedMinSize = false;\n this.browse = true;\n this.isCanceled = true;\n }\n }\n}\n","<ng-container>\n <div\n class=\"upload-file-container\"\n uiDragDrop\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\n (fileDropped)=\"onFileDropped($event)\"\n tabindex=\"0\"\n [tabIndex]=\"0\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"fileDrop?.nativeElement?.click()\"\n >\n @if (browse && !(success && !!file && progress)) {\n <div [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n @if (!!errors || isMissedMinSize) {\n <div class=\"errors\" role=\"alert\">\n @if (!!errors) {\n @for (error of errors; track error) {\n <span><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\n }\n }\n @if (isMissedMinSize) {\n <span>\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\n </span>\n }\n </div>\n }\n <input\n [attr.data-testid]=\"testId ?? 'file-upload-input'\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"'upload-supported-files'\"\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"file\"\n [accept]=\"supportedFileTypes\"\n [disabled]=\"disabled\"\n (change)=\"onChangeUpload($event)\"\n />\n @if (applicationTheme === 'classic') {\n <p>\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\n </p>\n } @else {\n <p id=\"drag-and-drop\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\n }\n <span class=\"upload-text\"\n >{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span\n >\n @if (minFileSizeMB) {\n <span class=\"upload-text\"\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\n >\n }\n </div>\n </div>\n }\n @if (success) {\n <div class=\"upload-success\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n <span class=\"upload-success-text\"\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\n >\n <input\n [attr.data-testid]=\"successInputTestId\"\n [tabIndex]=\"-1\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileTest\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"upload-text\">{{ file?.name }}</span>\n @if (showFileSize) {\n <span class=\"upload-text\">{{\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\n }}</span>\n }\n </div>\n }\n @if (!!progress && !!file && !success) {\n <div class=\"upload-progress\" [@inOutAnimationProgress]>\n <p>{{ file.name }}</p>\n <ui-progress-bar\n [progress]=\"uploadProgress\"\n [companyColor]=\"compColor\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-progress-bar>\n <p class=\"upload-text\">\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\n @if (showUploadProgress) {\n <span>{{ uploadProgress }}</span\n >%\n }\n </p>\n </div>\n }\n\n <ng-template #iconTpl>\n @if (applicationTheme === 'classic') {\n <ui-icon class=\"upload-icon\" name=\"File-upload\"></ui-icon>\n } @else {\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n }\n </ng-template>\n\n @if (!!supportedFileTypes) {\n <div [attr.theme]=\"applicationTheme\" class=\"upload-supported-files\" id=\"upload-supported-files\">\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\n >{{ supportedFileTypes }}\n </div>\n }\n </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { ProgressBarComponentModule } from '@testgorilla/tgo-ui/components/progress-bar';\n\nimport { DragDropDirective } from './drag-drop.directive';\nimport { FileUploadComponent } from './file-upload.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n IconComponentModule,\n ProgressBarComponentModule,\n UiTranslatePipe,\n FileUploadComponent,\n DragDropDirective,\n ],\n exports: [FileUploadComponent],\n})\nexport class FileUploadComponentModule {}\n"],"mappings":"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"}
|