@bravura/ui 7.0.0 → 8.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/CHANGELOG.md +12 -4
- package/fesm2022/bravura-ui-alert.mjs +11 -11
- package/fesm2022/bravura-ui-alert.mjs.map +1 -1
- package/fesm2022/bravura-ui-behavior.mjs +16 -16
- package/fesm2022/bravura-ui-behavior.mjs.map +1 -1
- package/fesm2022/bravura-ui-clip-note.mjs +10 -10
- package/fesm2022/bravura-ui-clip-note.mjs.map +1 -1
- package/fesm2022/bravura-ui-common.mjs +4 -4
- package/fesm2022/bravura-ui-common.mjs.map +1 -1
- package/fesm2022/bravura-ui-currency-input.mjs +7 -7
- package/fesm2022/bravura-ui-currency-input.mjs.map +1 -1
- package/fesm2022/bravura-ui-decimal-input.mjs +7 -7
- package/fesm2022/bravura-ui-decimal-input.mjs.map +1 -1
- package/fesm2022/bravura-ui-discrete-input.mjs +7 -7
- package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -1
- package/fesm2022/bravura-ui-file-upload.mjs +10 -10
- package/fesm2022/bravura-ui-file-upload.mjs.map +1 -1
- package/fesm2022/bravura-ui-form-field.mjs +10 -10
- package/fesm2022/bravura-ui-form-field.mjs.map +1 -1
- package/fesm2022/bravura-ui-icon-font.mjs +7 -7
- package/fesm2022/bravura-ui-icon-font.mjs.map +1 -1
- package/fesm2022/bravura-ui-panel.mjs +13 -13
- package/fesm2022/bravura-ui-panel.mjs.map +1 -1
- package/fesm2022/bravura-ui-phone-number.mjs +13 -13
- package/fesm2022/bravura-ui-phone-number.mjs.map +1 -1
- package/fesm2022/bravura-ui-radio-panel.mjs +10 -10
- package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -1
- package/fesm2022/bravura-ui-selection-panel.mjs +10 -10
- package/fesm2022/bravura-ui-selection-panel.mjs.map +1 -1
- package/fesm2022/bravura-ui-skeletons.mjs +10 -10
- package/fesm2022/bravura-ui-skeletons.mjs.map +1 -1
- package/fesm2022/bravura-ui-stepper.mjs +13 -13
- package/fesm2022/bravura-ui-stepper.mjs.map +1 -1
- package/fesm2022/bravura-ui-tooltip.mjs +12 -30
- package/fesm2022/bravura-ui-tooltip.mjs.map +1 -1
- package/package.json +22 -22
- package/{currency-input/index.d.ts → types/bravura-ui-currency-input.d.ts} +4 -4
- package/{decimal-input/index.d.ts → types/bravura-ui-decimal-input.d.ts} +4 -4
- package/{file-upload/index.d.ts → types/bravura-ui-file-upload.d.ts} +1 -1
- package/{tooltip/index.d.ts → types/bravura-ui-tooltip.d.ts} +16 -38
- /package/{alert/testing/index.d.ts → types/bravura-ui-alert-testing.d.ts} +0 -0
- /package/{alert/index.d.ts → types/bravura-ui-alert.d.ts} +0 -0
- /package/{behavior/index.d.ts → types/bravura-ui-behavior.d.ts} +0 -0
- /package/{clip-note/index.d.ts → types/bravura-ui-clip-note.d.ts} +0 -0
- /package/{common/index.d.ts → types/bravura-ui-common.d.ts} +0 -0
- /package/{discrete-input/index.d.ts → types/bravura-ui-discrete-input.d.ts} +0 -0
- /package/{form-field/index.d.ts → types/bravura-ui-form-field.d.ts} +0 -0
- /package/{icon-font/index.d.ts → types/bravura-ui-icon-font.d.ts} +0 -0
- /package/{panel/index.d.ts → types/bravura-ui-panel.d.ts} +0 -0
- /package/{phone-number/index.d.ts → types/bravura-ui-phone-number.d.ts} +0 -0
- /package/{radio-panel/testing/index.d.ts → types/bravura-ui-radio-panel-testing.d.ts} +0 -0
- /package/{radio-panel/index.d.ts → types/bravura-ui-radio-panel.d.ts} +0 -0
- /package/{selection-panel/index.d.ts → types/bravura-ui-selection-panel.d.ts} +0 -0
- /package/{skeletons/index.d.ts → types/bravura-ui-skeletons.d.ts} +0 -0
- /package/{stepper/index.d.ts → types/bravura-ui-stepper.d.ts} +0 -0
- /package/{index.d.ts → types/bravura-ui.d.ts} +0 -0
|
@@ -39,10 +39,10 @@ class FileUploadItem {
|
|
|
39
39
|
* Please extend this type and provide it in an injector at the same level, or ancestral to that, of the `FileUploadComponent`.
|
|
40
40
|
*/
|
|
41
41
|
class FileUploadService {
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
43
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadService }); }
|
|
44
44
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadService, decorators: [{
|
|
46
46
|
type: Injectable
|
|
47
47
|
}] });
|
|
48
48
|
|
|
@@ -378,8 +378,8 @@ class FileUploadComponent {
|
|
|
378
378
|
}
|
|
379
379
|
this._onChange(completedIds);
|
|
380
380
|
}
|
|
381
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
382
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
381
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadComponent, deps: [{ token: FileUploadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
382
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: FileUploadComponent, isStandalone: false, selector: "bui-file-upload", inputs: { uploadActionText: "uploadActionText", fileUploadedLabel: "fileUploadedLabel", dragHint: "dragHint", dropHint: "dropHint", limit: "limit", fileSize: "fileSize", types: "types" }, host: { listeners: { "dragenter": "onDragEnter($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDndDrop($event)" }, properties: { "class.bui-dnd-active": "_overFrame && remaining >= _numberOfFilesDragged", "class.bui-dnd-over": "_overDropZone && remaining >= _numberOfFilesDragged", "class.bui-dnd-invalid": "_invalidFilesDragged" }, classAttribute: "bui-host bui-file-upload" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }], viewQueries: [{ propertyName: "_fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"bui-file-upload-container\">\n\t@if (!_initialising && remaining > 0 && (!_itemAnimationInProgress || remaining > 1)) {\n\t\t<div class=\"bui-file-upload-hint\">\n\t\t\t@if (_invalidFilesDragged) {\n\t\t\t\t<mat-icon [buiIcon]=\"'block'\" [size]=\"32\" color=\"warn\" variant=\"outlined\" style=\"opacity: 0.6\"></mat-icon>\n\t\t\t} @else {\n\t\t\t\t@if (!_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-muted bui-upload-icon-link\" (click)=\"selectFiles()\">\n\t\t\t\t\t\t<mat-icon [buiIcon]=\"'fas fa-cloud-upload-alt'\" [size]=\"32\"></mat-icon>\n\t\t\t\t\t\t<a role=\"button\">{{ uploadActionText }}</a>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dragHint }}</div>\n\t\t\t\t}\n\t\t\t\t@if (_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dropHint }}</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t@if (_uploadingItems.length) {\n\t\t<div\n\t\t\tclass=\"bui-file-upload-list\"\n\t\t\t[@slideOut]=\"_uploadingItems.length\"\n\t\t\t(@slideOut.start)=\"_itemAnimationStart.next()\"\n\t\t\t(@slideOut.done)=\"_itemAnimationDone.next()\"\n\t\t>\n\t\t\t<span class=\"bui-file-uploaded-label\">{{ fileUploadedLabel }}</span>\n\t\t\t@for (item of _uploadingItems; track item; let idx = $index) {\n\t\t\t\t<div class=\"bui-file-upload-item\" [class.in-progress]=\"!item.done\" #itemDiv>\n\t\t\t\t\t<div class=\"bui-file-upload-item-name\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<mat-icon class=\"bui-color-muted\">description</mat-icon>\n\t\t\t\t\t\t\t@if (item.done && !item.downloading) {\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\tclass=\"text\"\n\t\t\t\t\t\t\t\t\thref=\"#{{ item.uploadedItem?.id }}\"\n\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); _openItem(item)\"\n\t\t\t\t\t\t\t\t\tcontextmenu=\"false\"\n\t\t\t\t\t\t\t\t\tmatTooltip=\"Download\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text\">{{ item.name }}</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class=\"bui-file-upload-item-progress\">\n\t\t\t\t\t\t\t@if (!item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar\n\t\t\t\t\t\t\t\t\tmode=\"determinate\"\n\t\t\t\t\t\t\t\t\t[class.upload-completed]=\"item.done\"\n\t\t\t\t\t\t\t\t\t[value]=\"item.done ? 100 : item.progress * 100\"\n\t\t\t\t\t\t\t\t></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@if (item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar mode=\"buffer\"></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t@if (item.done) {\n\t\t\t\t\t\t\t\t\t100%\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t{{ item.progress | percent }}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"bui-file-upload-item-action\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t(click)=\"item.cancel()\"\n\t\t\t\t\t\t\t(mouseenter)=\"itemDiv.classList.add('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\t(mouseleave)=\"itemDiv.classList.remove('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\tmatTooltip=\"Delete\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<mat-icon [buiIcon]=\"'cancel'\" style=\"line-height: 0.9\"></mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t@if (idx < _uploadingItems.length - 1) {\n\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t<input\n\t\ttype=\"file\"\n\t\t#fileInput\n\t\tstyle=\"display: none\"\n\t\taccept=\"{{ _accept }}\"\n\t\t(change)=\"_handleFileSelection()\"\n\t\t[multiple]=\"remaining > 1\"\n\t/>\n\n\t@if (_fileSizeExceedMsg) {\n\t\t<div class=\"bui-color-warn bui-file-size-exceed\">\n\t\t\t<span> {{ _fileSizeExceedMsg }}</span> <mat-icon role=\"button\" (click)=\"_fileSizeExceedMsg = ''\">cancel</mat-icon>\n\t\t</div>\n\t}\n</div>\n", styles: [":host:not([hidden]){display:block;border-style:dashed;border-width:1px;border-color:var(--bui-color-muted);transition:all .12s;padding:3px}:host:not([hidden]).bui-dnd-active,:host:not([hidden]).bui-dnd-over{padding:0;border-width:4px}:host:not([hidden]) .bui-file-size-exceed{display:flex;align-items:center;margin-bottom:1rem}:host:not([hidden]) .bui-file-size-exceed mat-icon{margin-left:.2rem}:host:not([hidden]).bui-dnd-invalid{cursor:no-drop}:host:not([hidden]) .bui-file-upload-hint{margin:.5rem;height:40px;justify-content:center;display:flex;align-items:center}:host:not([hidden]) .bui-file-upload-container{min-height:4rem;display:flex;align-items:center;flex-direction:column;justify-content:center;transition:initial}:host:not([hidden]) .bui-file-upload-container .bui-upload-icon-link{cursor:pointer;transition:color .1s cubic-bezier(.55,0,.55,.2);display:flex;align-items:center}:host:not([hidden]) .bui-file-upload-container .bui-upload-icon-link:hover{color:var(--bui-color-light)!important}:host:not([hidden]) .bui-file-upload-container .bui-upload-icon-link>*{margin:4px}:host:not([hidden]) .bui-file-upload-list{align-self:stretch;margin-top:calc(1rem - 4px)}:host:not([hidden]) .bui-file-upload-list .bui-file-uploaded-label{display:block;font-size:smaller;margin:0 calc(1rem - 4px) .5rem calc(1rem - 4px)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item{display:flex;align-items:center;margin:0 calc(1rem - 4px);padding:.25rem 0;justify-content:space-between}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item:last-child{margin-bottom:calc(.5rem - 4px)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item.in-progress .bui-file-upload-item-name{font-style:italic}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item.bui-file-upload-item-deleting{background-color:#8080801a;transition:background-color .1s cubic-bezier(.55,0,.55,.2)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name{flex-grow:1;font-size:80%;display:flex;align-items:center;flex-wrap:wrap}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name>span{word-break:break-all;display:flex;align-items:center}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name>span>mat-icon{width:20px;height:20px;font-size:20px}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name a{color:var(--bui-color-primary)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name .text{margin-left:.5rem;margin-right:.5rem}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-progress{flex-grow:1;min-width:50%;display:flex;justify-content:flex-start;align-items:center;margin:12px 0;--mat-progress-bar-track-height: 8px}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-progress .mat-mdc-progress-bar{border-radius:1rem}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-progress>span{margin-inline-start:.5rem}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-action{display:flex;align-items:center;height:1em;width:1.75em}:host:not([hidden]) .bui-file-upload-list .mat-divider{margin:0 calc(1rem - 4px) 0 calc(1rem - 4px)}:host:not([hidden]) .upload-completed{animation:pulse 1s ease-in-out}@keyframes pulse{0%{transform:scaleY(1)}50%{transform:scaleY(1.5)}to{transform:scaleY(1)}}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.IconDirective, selector: "[buiIcon]", inputs: ["buiIcon", "size", "variant"] }, { kind: "component", type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i8.PercentPipe, name: "percent" }], animations: [
|
|
383
383
|
trigger('slideOut', [
|
|
384
384
|
transition('* => *', [
|
|
385
385
|
query(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })
|
|
@@ -387,7 +387,7 @@ class FileUploadComponent {
|
|
|
387
387
|
])
|
|
388
388
|
] }); }
|
|
389
389
|
}
|
|
390
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
390
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
391
391
|
type: Component,
|
|
392
392
|
args: [{ host: {
|
|
393
393
|
class: 'bui-host bui-file-upload',
|
|
@@ -433,15 +433,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
433
433
|
}] } });
|
|
434
434
|
|
|
435
435
|
class FileUploadModule {
|
|
436
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
437
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
436
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
437
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: FileUploadModule, declarations: [FileUploadComponent], imports: [CommonModule,
|
|
438
438
|
MatIconModule,
|
|
439
439
|
IconFontModule,
|
|
440
440
|
MatProgressBarModule,
|
|
441
441
|
MatButtonModule,
|
|
442
442
|
MatDividerModule,
|
|
443
443
|
MatTooltipModule], exports: [FileUploadComponent] }); }
|
|
444
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
444
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadModule, imports: [CommonModule,
|
|
445
445
|
MatIconModule,
|
|
446
446
|
IconFontModule,
|
|
447
447
|
MatProgressBarModule,
|
|
@@ -449,7 +449,7 @@ class FileUploadModule {
|
|
|
449
449
|
MatDividerModule,
|
|
450
450
|
MatTooltipModule] }); }
|
|
451
451
|
}
|
|
452
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploadModule, decorators: [{
|
|
453
453
|
type: NgModule,
|
|
454
454
|
args: [{
|
|
455
455
|
declarations: [FileUploadComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-file-upload.mjs","sources":["../../../projects/ui/file-upload/file-upload.service.ts","../../../projects/ui/file-upload/file-upload.component.ts","../../../projects/ui/file-upload/file-upload.component.html","../../../projects/ui/file-upload/file-upload.module.ts","../../../projects/ui/file-upload/bravura-ui-file-upload.ts"],"sourcesContent":["import { HttpEvent } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * This type represents a file or form item that has been sent as part of a multipart/form-data POST request.\r\n */\r\nexport class FileUploadItem {\r\n\t/** The original filename in the client's filesystem, as provided by the browser. */\r\n\tname: string;\r\n\r\n\t/** The size of the file item. */\r\n\tsize: number;\r\n\r\n\t/** An alpha-numeric string that uniquely identifies the file item. */\r\n\tid: string;\r\n\r\n\t/** The content type (MIME type) of the file. */\r\n\ttype: string;\r\n\r\n\t/** @internal */\r\n\tconstructor(_id: string, _name: string, _size: number, _type: string) {\r\n\t\tthis.id = _id;\r\n\t\tthis.name = _name;\r\n\t\tthis.size = _size;\r\n\t\tthis.type = _type;\r\n\t}\r\n}\r\n\r\n/**\r\n * This is an API for processing file upload requests.\r\n *\r\n * A sub class of this type handles multiple file requests, sent using multipart/form-data encoding type, as specified by RFC 1867.\r\n *\r\n * Please extend this type and provide it in an injector at the same level, or ancestral to that, of the `FileUploadComponent`.\r\n */\r\n@Injectable()\r\nexport abstract class FileUploadService {\r\n\t/**\r\n\t * Upload a list of selected files from the browser. The returned `Observable` array provides the update of the uploading progress\r\n\t * through HTTP events.\r\n\t */\r\n\tabstract upload(files: File[]): Array<Observable<HttpEvent<FileUploadItem>>>;\r\n\r\n\t/** List all the uploaded file items in the current HTTP session. This list excludes the files still in the process of being uploaded*/\r\n\tabstract list(): Observable<FileUploadItem[]>;\r\n\r\n\t/** Get the content of an uploaded file item as a `Blob`. */\r\n\tabstract get(id: string): Observable<Blob>;\r\n\r\n\t/** Delete an uploaded file item from the server. */\r\n\tabstract delete(id: string): Observable<void>;\r\n\r\n\t/** Delete all uploaded file items in the current HTTP session. */\r\n\tabstract clear?(): Observable<void>;\r\n}\r\n","import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\r\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\r\nimport { Component, ElementRef, forwardRef, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { FileUploadItem, FileUploadService } from './file-upload.service';\r\n\r\n/** @ignore */\r\nclass UploadingItem {\r\n\tprogress = 0;\r\n\tuploadedItem: FileUploadItem | null | undefined;\r\n\tdownloadingSubs?: Subscription;\r\n\tprivate subscription: Subscription;\r\n\tprivate file?: File;\r\n\r\n\tconstructor(item: FileUploadItem, oncancel: (item: UploadingItem) => void);\r\n\tconstructor(\r\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\r\n\t\tfile: File,\r\n\t\toncomplete: () => void,\r\n\t\toncancel: (item: UploadingItem) => void\r\n\t);\r\n\tconstructor(\r\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\r\n\t\tfileOrOncancel?: File | ((item: UploadingItem) => void),\r\n\t\toncomplete?: () => void,\r\n\t\tprivate oncancel?: (item: UploadingItem) => void\r\n\t) {\r\n\t\tif (event$ instanceof Observable) {\r\n\t\t\tthis.file = fileOrOncancel as File;\r\n\t\t\tthis.subscription = event$.subscribe({\r\n\t\t\t\tnext: evt => {\r\n\t\t\t\t\tif (evt.type === HttpEventType.UploadProgress) {\r\n\t\t\t\t\t\tthis.progress = evt.loaded / (this.file as File).size;\r\n\t\t\t\t\t} else if (evt.type === HttpEventType.Response) {\r\n\t\t\t\t\t\tthis.uploadedItem = evt.body;\r\n\t\t\t\t\t\tthis.progress = 1;\r\n\t\t\t\t\t\toncomplete!();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.subscription = of(event$).subscribe();\r\n\t\t\tthis.uploadedItem = event$;\r\n\t\t\tthis.oncancel = fileOrOncancel as (item: UploadingItem) => void;\r\n\t\t}\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.subscription.unsubscribe();\r\n\t\tthis.oncancel!(this);\r\n\t}\r\n\r\n\tget done() {\r\n\t\treturn !!this.uploadedItem;\r\n\t}\r\n\r\n\tget name() {\r\n\t\treturn this.uploadedItem?.name || this.file?.name;\r\n\t}\r\n\r\n\tget downloading() {\r\n\t\treturn this.downloadingSubs && !this.downloadingSubs.closed;\r\n\t}\r\n}\r\n/**\r\n * A control value accessor component to provide the user interface for uploading files.\r\n *\r\n * The application that integrates this UI must provide an implementation of `FileUploadService`.\r\n *\r\n * The control's value is a list of alpha-numerical strings, which are the identifiers to the uploaded files.\r\n *\r\n * Example:\r\n *\r\n * ```html\r\n * <form>\r\n * <bui-file-upload [(ngModel)]=\"uploadedFileIds\" name=\"myFiles\"></bui-file-upload>\r\n * </form>\r\n * ```\r\n *\r\n * @see FileUploadService\r\n */\r\n@Component({\r\n\thost: {\r\n\t\tclass: 'bui-host bui-file-upload',\r\n\t\t'[class.bui-dnd-active]': '_overFrame && remaining >= _numberOfFilesDragged',\r\n\t\t'[class.bui-dnd-over]': '_overDropZone && remaining >= _numberOfFilesDragged',\r\n\t\t'[class.bui-dnd-invalid]': '_invalidFilesDragged'\r\n\t},\r\n\tselector: 'bui-file-upload',\r\n\ttemplateUrl: './file-upload.component.html',\r\n\tstyleUrls: ['./file-upload.component.scss'],\r\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }],\r\n\tanimations: [\r\n\t\ttrigger('slideOut', [\r\n\t\t\ttransition('* => *', [\r\n\t\t\t\tquery(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })\r\n\t\t\t])\r\n\t\t])\r\n\t],\r\n\tstandalone: false\r\n})\r\nexport class FileUploadComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\t/** @ignore */\r\n\t_value: string[] | null = null;\r\n\r\n\t/**\r\n\t * The caption of the button for opening file selection dialog.\r\n\t */\r\n\t@Input()\r\n\tuploadActionText = 'Drag files here to attach or browse';\r\n\r\n\t/**\r\n\t * The label for listing successful uploaded files.\r\n\t */\r\n\t@Input()\r\n\tfileUploadedLabel = 'List of files uploaded successfully';\r\n\r\n\t/**\r\n\t * The text to be displayed when the user starts to drag file items over the browser window.\r\n\t */\r\n\t@Input()\r\n\tdragHint = 'Please drag the files here.';\r\n\r\n\t/**\r\n\t * The text to be displayed when the user is dragging the file items over the drop zone.\r\n\t */\r\n\t@Input()\r\n\tdropHint = 'Please release the mouse button to start uploading.';\r\n\r\n\t/** Specifies the total number of files accepted. A falsy value removes the limit.*/\r\n\t@Input()\r\n\tlimit = 0;\r\n\r\n\t/**\r\n\t * specify the number of maximum bytes that can be uploaded.\r\n\t * if number is specified, bytes are assumed, otherwise enter a string for specific size type.\r\n\t */\r\n\t@Input()\r\n\tfileSize: number | string = '10MB';\r\n\r\n\t/**\r\n\t * Accepted MIME types\r\n\t *\r\n\t * @example ['text/*', 'image/png']\r\n\t */\r\n\t@Input()\r\n\tget types(): string[] {\r\n\t\treturn this._types;\r\n\t}\r\n\tset types(types: string[]) {\r\n\t\tif (Array.isArray(types) && types?.length) {\r\n\t\t\tthis._typeRegExps = [];\r\n\t\t\tthis._types = Array.from(types);\r\n\t\t\tthis._accept = this._types.join(',');\r\n\t\t\ttypes.forEach(t => this._typeRegExps.push(new RegExp(t.replace(/\\*/g, '.*'))));\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_fileSizeExceedMsg: string = '';\r\n\r\n\t/** @ignore */\r\n\t_uploadingItems: UploadingItem[] = [];\r\n\r\n\t/** @ignore */\r\n\t_accept = '*/*';\r\n\r\n\t/** @ignore */\r\n\t_itemAnimationStart = new Subject<void>();\r\n\t/** @ignore */\r\n\t_itemAnimationDone = new Subject<void>();\r\n\t/** @ignore */\r\n\t_itemAnimationInProgress = false;\r\n\r\n\tprivate _onChange = (_: string[]) => {};\r\n\tprivate _onTouch = () => {};\r\n\tprivate _frameDndEnter: (event: DragEvent) => void;\r\n\tprivate _frameDndLeave: () => void;\r\n\tprivate _frameDndOver: (event: DragEvent) => void;\r\n\tprivate _frameDndStop: () => void;\r\n\tprivate _overFrameCounter = 0;\r\n\tprivate _overCounter = 0;\r\n\tprivate _typeRegExps: RegExp[] = [/.*\\/.*/];\r\n\tprivate _types: string[] = ['*/*'];\r\n\tprivate _initSubs?: Subscription;\r\n\tprivate _numberOfFilesDragged = 0;\r\n\r\n\t@ViewChild('fileInput', { read: ElementRef, static: true })\r\n\tprivate _fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n\tconstructor(private _service: FileUploadService) {\r\n\t\tthis._onChange([]);\r\n\t\tthis._onTouch();\r\n\t\tthis._frameDndEnter = this._onDndEnterFrame.bind(this);\r\n\t\tthis._frameDndLeave = this._onDndLeaveFrame.bind(this);\r\n\t\tthis._frameDndStop = this._onDndStopFrame.bind(this);\r\n\t\tthis._frameDndOver = event => event.preventDefault();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tngOnInit(): void {\r\n\t\tdocument.addEventListener('dragenter', this._frameDndEnter);\r\n\t\tdocument.addEventListener('dragleave', this._frameDndLeave);\r\n\t\tdocument.addEventListener('dragend', this._frameDndStop);\r\n\t\tdocument.addEventListener('drop', this._frameDndStop);\r\n\t\tdocument.addEventListener('dragover', this._frameDndOver);\r\n\t\tthis._itemAnimationStart.subscribe(() => (this._itemAnimationInProgress = true));\r\n\t\tthis._itemAnimationDone.subscribe(() => (this._itemAnimationInProgress = false));\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tdocument.removeEventListener('dragenter', this._frameDndEnter);\r\n\t\tdocument.removeEventListener('dragleave', this._frameDndLeave);\r\n\t\tdocument.removeEventListener('dragend', this._frameDndStop);\r\n\t\tdocument.removeEventListener('drop', this._frameDndStop);\r\n\t\tdocument.removeEventListener('dragover', this._frameDndOver);\r\n\t\tthis._itemAnimationStart.complete();\r\n\t\tthis._itemAnimationDone.complete();\r\n\t}\r\n\r\n\t/** @internal */\r\n\twriteValue(obj: any): void {\r\n\t\tif (Array.isArray(obj)) {\r\n\t\t\tif (!this._value) {\r\n\t\t\t\tthis._acceptChange(obj);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst common = obj.filter(v => this._value!.includes(v));\r\n\t\t\tif (common.length === obj.length && common.length === this._value.length) {\r\n\t\t\t\treturn; // no change\r\n\t\t\t}\r\n\t\t\tthis._acceptChange(obj);\r\n\t\t} else {\r\n\t\t\tthis._value = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tregisterOnChange(fn: any): void {\r\n\t\tthis._onChange = fn;\r\n\t}\r\n\r\n\t/** @internal */\r\n\tregisterOnTouched(fn: any): void {\r\n\t\tthis._onTouch = fn;\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('dragenter', ['$event'])\r\n\tonDragEnter(event: DragEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis._overCounter++;\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('dragover', ['$event'])\r\n\tonDragOver(event: Event) {\r\n\t\tevent.preventDefault();\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('dragleave', ['$event'])\r\n\tonDragLeave(event: Event) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis._overCounter--;\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('drop', ['$event'])\r\n\tonDndDrop(event: DragEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis._onDndStopFrame();\r\n\t\tconst files = event.dataTransfer?.files;\r\n\t\tif (files?.length && this._validateFileSize(files)) {\r\n\t\t\tthis._uploadFiles(Array.from(files));\r\n\t\t}\r\n\t}\r\n\r\n\t/** Open the file selection dialog */\r\n\tselectFiles() {\r\n\t\tthis._fileInput.nativeElement.click();\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_openItem(item: UploadingItem) {\r\n\t\titem.downloadingSubs = this._service.get(item.uploadedItem!.id).subscribe(blob => {\r\n\t\t\tconst url = URL.createObjectURL(blob);\r\n\t\t\twindow.open(url, '_blank');\r\n\t\t});\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _overFrame(): boolean {\r\n\t\treturn this._overFrameCounter > 0;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _overDropZone(): boolean {\r\n\t\treturn this._overCounter > 0;\r\n\t}\r\n\r\n\t/** Whether file uploading is in progress */\r\n\tget uploading(): boolean {\r\n\t\treturn this._uploadingItems.some(i => !i.done);\r\n\t}\r\n\r\n\t/** The remaining number of files allowed.*/\r\n\tget remaining(): number {\r\n\t\treturn this.limit ? this.limit - this._uploadingItems.length : Infinity;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_handleFileSelection() {\r\n\t\tconst fileList = this._fileInput.nativeElement.files;\r\n\t\tif (fileList?.length && this._validateFileSize(fileList)) {\r\n\t\t\tthis._uploadFiles(Array.from(fileList));\r\n\t\t\tthis._fileInput.nativeElement.value = '';\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _invalidFilesDragged(): boolean {\r\n\t\treturn this._numberOfFilesDragged > this.remaining && (this._overFrame || this._overDropZone);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _initialising(): boolean {\r\n\t\treturn !!this._initSubs && !this._initSubs.closed;\r\n\t}\r\n\r\n\tprivate returnFileSize(size: number) {\r\n\t\tif (size < 1024) {\r\n\t\t\treturn `${size} bytes`;\r\n\t\t} else if (size >= 1024 && size < 1048576) {\r\n\t\t\treturn `${(size / 1024).toFixed(1)} KB`;\r\n\t\t} else {\r\n\t\t\treturn `${(size / 1048576).toFixed(1)} MB`;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _validateFileSize(files: FileList) {\r\n\t\tthis._fileSizeExceedMsg = '';\r\n\t\tconst maxSize = this.returnFileSize(this._getMaxBytes());\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\tif (files[i]!.size > this._getMaxBytes()) {\r\n\t\t\t\tthis._fileSizeExceedMsg = `Selected file/s has exceeded the allowable size of ${maxSize} per file`;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate _getMaxBytes(): number {\r\n\t\tif (typeof this.fileSize === 'string') {\r\n\t\t\tif (this.fileSize.toUpperCase().endsWith('KB')) {\r\n\t\t\t\tconst kiloBytes = this.fileSize.substring(0, this.fileSize.indexOf('KB'));\r\n\t\t\t\treturn Number(kiloBytes) * 1024;\r\n\t\t\t} else if (this.fileSize.toUpperCase().endsWith('MB')) {\r\n\t\t\t\tconst megaBytes = this.fileSize.substring(0, this.fileSize.indexOf('MB'));\r\n\t\t\t\treturn Number(megaBytes) * 1048576;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.fileSize as number;\r\n\t}\r\n\r\n\tprivate _uploadFiles(files: File[]) {\r\n\t\tif (this._initialising || files.length > this.remaining) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst filtered = files.filter(\r\n\t\t\tf =>\r\n\t\t\t\t(!f.type || this._typeRegExps.some(regexp => f.type.match(regexp))) &&\r\n\t\t\t\t!this._uploadingItems.some(i => i.name === f.name)\r\n\t\t);\r\n\t\tconst observables = this._service.upload(filtered);\r\n\t\tconst items = filtered.map(\r\n\t\t\t(f, i) => new UploadingItem(observables[i], f, this._updateItems.bind(this), this._deleteItem.bind(this))\r\n\t\t);\r\n\t\tthis._uploadingItems = [...this._uploadingItems, ...items];\r\n\t}\r\n\r\n\tprivate _onDndEnterFrame(event: DragEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tthis._numberOfFilesDragged = event.dataTransfer?.items?.length || 0;\r\n\t\tthis._overFrameCounter++;\r\n\t}\r\n\r\n\tprivate _onDndLeaveFrame() {\r\n\t\tthis._overFrameCounter--;\r\n\t}\r\n\r\n\tprivate _onDndStopFrame() {\r\n\t\tthis._overFrameCounter = 0;\r\n\t\tthis._overCounter = 0;\r\n\t}\r\n\r\n\tprivate _acceptChange(v: string[]) {\r\n\t\tthis._initSubs = this._service.list().subscribe(list => {\r\n\t\t\tthis._uploadingItems = list\r\n\t\t\t\t.filter(i => v.includes(i.id))\r\n\t\t\t\t.map(f => new UploadingItem(f, this._deleteItem.bind(this)));\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _updateItems() {\r\n\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\r\n\t\tthis._uploadingItems = [...completed, ...this._uploadingItems.filter(i => !i.uploadedItem)];\r\n\t\tthis._updateValue(completed);\r\n\t}\r\n\r\n\tprivate _deleteItem(item: UploadingItem) {\r\n\t\tconst key = item.uploadedItem?.id;\r\n\t\tif (key) {\r\n\t\t\tthis._service.delete(key).subscribe(() => {\r\n\t\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\r\n\t\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\r\n\t\t\t\tthis._updateValue(completed);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\r\n\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\r\n\t\t\tthis._updateValue(completed);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _updateValue(completed: UploadingItem[]) {\r\n\t\tconst completedIds = completed.map(c => c.uploadedItem!.id);\r\n\t\tthis._value = completedIds;\r\n\t\tif (!this._value.length) {\r\n\t\t\tthis._value = null;\r\n\t\t}\r\n\t\tthis._onChange(completedIds);\r\n\t}\r\n}\r\n","<div class=\"bui-file-upload-container\">\n\t@if (!_initialising && remaining > 0 && (!_itemAnimationInProgress || remaining > 1)) {\n\t\t<div class=\"bui-file-upload-hint\">\n\t\t\t@if (_invalidFilesDragged) {\n\t\t\t\t<mat-icon [buiIcon]=\"'block'\" [size]=\"32\" color=\"warn\" variant=\"outlined\" style=\"opacity: 0.6\"></mat-icon>\n\t\t\t} @else {\n\t\t\t\t@if (!_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-muted bui-upload-icon-link\" (click)=\"selectFiles()\">\n\t\t\t\t\t\t<mat-icon [buiIcon]=\"'fas fa-cloud-upload-alt'\" [size]=\"32\"></mat-icon>\n\t\t\t\t\t\t<a role=\"button\">{{ uploadActionText }}</a>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dragHint }}</div>\n\t\t\t\t}\n\t\t\t\t@if (_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dropHint }}</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t@if (_uploadingItems.length) {\n\t\t<div\n\t\t\tclass=\"bui-file-upload-list\"\n\t\t\t[@slideOut]=\"_uploadingItems.length\"\n\t\t\t(@slideOut.start)=\"_itemAnimationStart.next()\"\n\t\t\t(@slideOut.done)=\"_itemAnimationDone.next()\"\n\t\t>\n\t\t\t<span class=\"bui-file-uploaded-label\">{{ fileUploadedLabel }}</span>\n\t\t\t@for (item of _uploadingItems; track item; let idx = $index) {\n\t\t\t\t<div class=\"bui-file-upload-item\" [class.in-progress]=\"!item.done\" #itemDiv>\n\t\t\t\t\t<div class=\"bui-file-upload-item-name\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<mat-icon class=\"bui-color-muted\">description</mat-icon>\n\t\t\t\t\t\t\t@if (item.done && !item.downloading) {\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\tclass=\"text\"\n\t\t\t\t\t\t\t\t\thref=\"#{{ item.uploadedItem?.id }}\"\n\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); _openItem(item)\"\n\t\t\t\t\t\t\t\t\tcontextmenu=\"false\"\n\t\t\t\t\t\t\t\t\tmatTooltip=\"Download\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text\">{{ item.name }}</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class=\"bui-file-upload-item-progress\">\n\t\t\t\t\t\t\t@if (!item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar\n\t\t\t\t\t\t\t\t\tmode=\"determinate\"\n\t\t\t\t\t\t\t\t\t[class.upload-completed]=\"item.done\"\n\t\t\t\t\t\t\t\t\t[value]=\"item.done ? 100 : item.progress * 100\"\n\t\t\t\t\t\t\t\t></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@if (item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar mode=\"buffer\"></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t@if (item.done) {\n\t\t\t\t\t\t\t\t\t100%\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t{{ item.progress | percent }}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"bui-file-upload-item-action\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t(click)=\"item.cancel()\"\n\t\t\t\t\t\t\t(mouseenter)=\"itemDiv.classList.add('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\t(mouseleave)=\"itemDiv.classList.remove('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\tmatTooltip=\"Delete\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<mat-icon [buiIcon]=\"'cancel'\" style=\"line-height: 0.9\"></mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t@if (idx < _uploadingItems.length - 1) {\n\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t<input\n\t\ttype=\"file\"\n\t\t#fileInput\n\t\tstyle=\"display: none\"\n\t\taccept=\"{{ _accept }}\"\n\t\t(change)=\"_handleFileSelection()\"\n\t\t[multiple]=\"remaining > 1\"\n\t/>\n\n\t@if (_fileSizeExceedMsg) {\n\t\t<div class=\"bui-color-warn bui-file-size-exceed\">\n\t\t\t<span> {{ _fileSizeExceedMsg }}</span> <mat-icon role=\"button\" (click)=\"_fileSizeExceedMsg = ''\">cancel</mat-icon>\n\t\t</div>\n\t}\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileUploadComponent } from './file-upload.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IconFontModule } from '@bravura/ui/icon-font';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n\tdeclarations: [FileUploadComponent],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tMatIconModule,\r\n\t\tIconFontModule,\r\n\t\tMatProgressBarModule,\r\n\t\tMatButtonModule,\r\n\t\tMatDividerModule,\r\n\t\tMatTooltipModule\r\n\t],\r\n\texports: [FileUploadComponent]\r\n})\r\nexport class FileUploadModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileUploadService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-file-upload.mjs","sources":["../../../projects/ui/file-upload/file-upload.service.ts","../../../projects/ui/file-upload/file-upload.component.ts","../../../projects/ui/file-upload/file-upload.component.html","../../../projects/ui/file-upload/file-upload.module.ts","../../../projects/ui/file-upload/bravura-ui-file-upload.ts"],"sourcesContent":["import { HttpEvent } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * This type represents a file or form item that has been sent as part of a multipart/form-data POST request.\r\n */\r\nexport class FileUploadItem {\r\n\t/** The original filename in the client's filesystem, as provided by the browser. */\r\n\tname: string;\r\n\r\n\t/** The size of the file item. */\r\n\tsize: number;\r\n\r\n\t/** An alpha-numeric string that uniquely identifies the file item. */\r\n\tid: string;\r\n\r\n\t/** The content type (MIME type) of the file. */\r\n\ttype: string;\r\n\r\n\t/** @internal */\r\n\tconstructor(_id: string, _name: string, _size: number, _type: string) {\r\n\t\tthis.id = _id;\r\n\t\tthis.name = _name;\r\n\t\tthis.size = _size;\r\n\t\tthis.type = _type;\r\n\t}\r\n}\r\n\r\n/**\r\n * This is an API for processing file upload requests.\r\n *\r\n * A sub class of this type handles multiple file requests, sent using multipart/form-data encoding type, as specified by RFC 1867.\r\n *\r\n * Please extend this type and provide it in an injector at the same level, or ancestral to that, of the `FileUploadComponent`.\r\n */\r\n@Injectable()\r\nexport abstract class FileUploadService {\r\n\t/**\r\n\t * Upload a list of selected files from the browser. The returned `Observable` array provides the update of the uploading progress\r\n\t * through HTTP events.\r\n\t */\r\n\tabstract upload(files: File[]): Array<Observable<HttpEvent<FileUploadItem>>>;\r\n\r\n\t/** List all the uploaded file items in the current HTTP session. This list excludes the files still in the process of being uploaded*/\r\n\tabstract list(): Observable<FileUploadItem[]>;\r\n\r\n\t/** Get the content of an uploaded file item as a `Blob`. */\r\n\tabstract get(id: string): Observable<Blob>;\r\n\r\n\t/** Delete an uploaded file item from the server. */\r\n\tabstract delete(id: string): Observable<void>;\r\n\r\n\t/** Delete all uploaded file items in the current HTTP session. */\r\n\tabstract clear?(): Observable<void>;\r\n}\r\n","import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { Component, ElementRef, HostListener, Input, OnDestroy, OnInit, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, Subject, Subscription, of } from 'rxjs';\nimport { FileUploadItem, FileUploadService } from './file-upload.service';\n\n/** @ignore */\nclass UploadingItem {\n\tprogress = 0;\n\tuploadedItem: FileUploadItem | null | undefined;\n\tdownloadingSubs?: Subscription;\n\tprivate subscription: Subscription;\n\tprivate file?: File;\n\n\tconstructor(item: FileUploadItem, oncancel: (item: UploadingItem) => void);\n\tconstructor(\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\n\t\tfile: File,\n\t\toncomplete: () => void,\n\t\toncancel: (item: UploadingItem) => void\n\t);\n\tconstructor(\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\n\t\tfileOrOncancel?: File | ((item: UploadingItem) => void),\n\t\toncomplete?: () => void,\n\t\tprivate oncancel?: (item: UploadingItem) => void\n\t) {\n\t\tif (event$ instanceof Observable) {\n\t\t\tthis.file = fileOrOncancel as File;\n\t\t\tthis.subscription = event$.subscribe({\n\t\t\t\tnext: evt => {\n\t\t\t\t\tif (evt.type === HttpEventType.UploadProgress) {\n\t\t\t\t\t\tthis.progress = evt.loaded / (this.file as File).size;\n\t\t\t\t\t} else if (evt.type === HttpEventType.Response) {\n\t\t\t\t\t\tthis.uploadedItem = evt.body;\n\t\t\t\t\t\tthis.progress = 1;\n\t\t\t\t\t\toncomplete!();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.subscription = of(event$).subscribe();\n\t\t\tthis.uploadedItem = event$;\n\t\t\tthis.oncancel = fileOrOncancel as (item: UploadingItem) => void;\n\t\t}\n\t}\n\n\tcancel() {\n\t\tthis.subscription.unsubscribe();\n\t\tthis.oncancel!(this);\n\t}\n\n\tget done() {\n\t\treturn !!this.uploadedItem;\n\t}\n\n\tget name() {\n\t\treturn this.uploadedItem?.name || this.file?.name;\n\t}\n\n\tget downloading() {\n\t\treturn this.downloadingSubs && !this.downloadingSubs.closed;\n\t}\n}\n/**\n * A control value accessor component to provide the user interface for uploading files.\n *\n * The application that integrates this UI must provide an implementation of `FileUploadService`.\n *\n * The control's value is a list of alpha-numerical strings, which are the identifiers to the uploaded files.\n *\n * Example:\n *\n * ```html\n * <form>\n * <bui-file-upload [(ngModel)]=\"uploadedFileIds\" name=\"myFiles\"></bui-file-upload>\n * </form>\n * ```\n *\n * @see FileUploadService\n */\n@Component({\n\thost: {\n\t\tclass: 'bui-host bui-file-upload',\n\t\t'[class.bui-dnd-active]': '_overFrame && remaining >= _numberOfFilesDragged',\n\t\t'[class.bui-dnd-over]': '_overDropZone && remaining >= _numberOfFilesDragged',\n\t\t'[class.bui-dnd-invalid]': '_invalidFilesDragged'\n\t},\n\tselector: 'bui-file-upload',\n\ttemplateUrl: './file-upload.component.html',\n\tstyleUrls: ['./file-upload.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }],\n\tanimations: [\n\t\ttrigger('slideOut', [\n\t\t\ttransition('* => *', [\n\t\t\t\tquery(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })\n\t\t\t])\n\t\t])\n\t],\n\tstandalone: false\n})\nexport class FileUploadComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\t/** @ignore */\n\t_value: string[] | null = null;\n\n\t/**\n\t * The caption of the button for opening file selection dialog.\n\t */\n\t@Input()\n\tuploadActionText = 'Drag files here to attach or browse';\n\n\t/**\n\t * The label for listing successful uploaded files.\n\t */\n\t@Input()\n\tfileUploadedLabel = 'List of files uploaded successfully';\n\n\t/**\n\t * The text to be displayed when the user starts to drag file items over the browser window.\n\t */\n\t@Input()\n\tdragHint = 'Please drag the files here.';\n\n\t/**\n\t * The text to be displayed when the user is dragging the file items over the drop zone.\n\t */\n\t@Input()\n\tdropHint = 'Please release the mouse button to start uploading.';\n\n\t/** Specifies the total number of files accepted. A falsy value removes the limit.*/\n\t@Input()\n\tlimit = 0;\n\n\t/**\n\t * specify the number of maximum bytes that can be uploaded.\n\t * if number is specified, bytes are assumed, otherwise enter a string for specific size type.\n\t */\n\t@Input()\n\tfileSize: number | string = '10MB';\n\n\t/**\n\t * Accepted MIME types\n\t *\n\t * @example ['text/*', 'image/png']\n\t */\n\t@Input()\n\tget types(): string[] {\n\t\treturn this._types;\n\t}\n\tset types(types: string[]) {\n\t\tif (Array.isArray(types) && types?.length) {\n\t\t\tthis._typeRegExps = [];\n\t\t\tthis._types = Array.from(types);\n\t\t\tthis._accept = this._types.join(',');\n\t\t\ttypes.forEach(t => this._typeRegExps.push(new RegExp(t.replace(/\\*/g, '.*'))));\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_fileSizeExceedMsg: string = '';\n\n\t/** @ignore */\n\t_uploadingItems: UploadingItem[] = [];\n\n\t/** @ignore */\n\t_accept = '*/*';\n\n\t/** @ignore */\n\t_itemAnimationStart = new Subject<void>();\n\t/** @ignore */\n\t_itemAnimationDone = new Subject<void>();\n\t/** @ignore */\n\t_itemAnimationInProgress = false;\n\n\tprivate _onChange = (_: string[]) => {};\n\tprivate _onTouch = () => {};\n\tprivate _frameDndEnter: (event: DragEvent) => void;\n\tprivate _frameDndLeave: () => void;\n\tprivate _frameDndOver: (event: DragEvent) => void;\n\tprivate _frameDndStop: () => void;\n\tprivate _overFrameCounter = 0;\n\tprivate _overCounter = 0;\n\tprivate _typeRegExps: RegExp[] = [/.*\\/.*/];\n\tprivate _types: string[] = ['*/*'];\n\tprivate _initSubs?: Subscription;\n\tprotected _numberOfFilesDragged = 0;\n\n\t@ViewChild('fileInput', { read: ElementRef, static: true })\n\tprivate _fileInput!: ElementRef<HTMLInputElement>;\n\n\tconstructor(private _service: FileUploadService) {\n\t\tthis._onChange([]);\n\t\tthis._onTouch();\n\t\tthis._frameDndEnter = this._onDndEnterFrame.bind(this);\n\t\tthis._frameDndLeave = this._onDndLeaveFrame.bind(this);\n\t\tthis._frameDndStop = this._onDndStopFrame.bind(this);\n\t\tthis._frameDndOver = event => event.preventDefault();\n\t}\n\n\t/** @internal */\n\tngOnInit(): void {\n\t\tdocument.addEventListener('dragenter', this._frameDndEnter);\n\t\tdocument.addEventListener('dragleave', this._frameDndLeave);\n\t\tdocument.addEventListener('dragend', this._frameDndStop);\n\t\tdocument.addEventListener('drop', this._frameDndStop);\n\t\tdocument.addEventListener('dragover', this._frameDndOver);\n\t\tthis._itemAnimationStart.subscribe(() => (this._itemAnimationInProgress = true));\n\t\tthis._itemAnimationDone.subscribe(() => (this._itemAnimationInProgress = false));\n\t}\n\n\tngOnDestroy(): void {\n\t\tdocument.removeEventListener('dragenter', this._frameDndEnter);\n\t\tdocument.removeEventListener('dragleave', this._frameDndLeave);\n\t\tdocument.removeEventListener('dragend', this._frameDndStop);\n\t\tdocument.removeEventListener('drop', this._frameDndStop);\n\t\tdocument.removeEventListener('dragover', this._frameDndOver);\n\t\tthis._itemAnimationStart.complete();\n\t\tthis._itemAnimationDone.complete();\n\t}\n\n\t/** @internal */\n\twriteValue(obj: any): void {\n\t\tif (Array.isArray(obj)) {\n\t\t\tif (!this._value) {\n\t\t\t\tthis._acceptChange(obj);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst common = obj.filter(v => this._value!.includes(v));\n\t\t\tif (common.length === obj.length && common.length === this._value.length) {\n\t\t\t\treturn; // no change\n\t\t\t}\n\t\t\tthis._acceptChange(obj);\n\t\t} else {\n\t\t\tthis._value = null;\n\t\t}\n\t}\n\n\t/** @internal */\n\tregisterOnChange(fn: any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\t/** @internal */\n\tregisterOnTouched(fn: any): void {\n\t\tthis._onTouch = fn;\n\t}\n\n\t/** @internal */\n\t@HostListener('dragenter', ['$event'])\n\tonDragEnter(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._overCounter++;\n\t}\n\n\t/** @internal */\n\t@HostListener('dragover', ['$event'])\n\tonDragOver(event: Event) {\n\t\tevent.preventDefault();\n\t}\n\n\t/** @internal */\n\t@HostListener('dragleave', ['$event'])\n\tonDragLeave(event: Event) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._overCounter--;\n\t}\n\n\t/** @internal */\n\t@HostListener('drop', ['$event'])\n\tonDndDrop(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._onDndStopFrame();\n\t\tconst files = event.dataTransfer?.files;\n\t\tif (files?.length && this._validateFileSize(files)) {\n\t\t\tthis._uploadFiles(Array.from(files));\n\t\t}\n\t}\n\n\t/** Open the file selection dialog */\n\tselectFiles() {\n\t\tthis._fileInput.nativeElement.click();\n\t}\n\n\t/** @ignore */\n\t_openItem(item: UploadingItem) {\n\t\titem.downloadingSubs = this._service.get(item.uploadedItem!.id).subscribe(blob => {\n\t\t\tconst url = URL.createObjectURL(blob);\n\t\t\twindow.open(url, '_blank');\n\t\t});\n\t}\n\n\t/** @ignore */\n\tget _overFrame(): boolean {\n\t\treturn this._overFrameCounter > 0;\n\t}\n\n\t/** @ignore */\n\tget _overDropZone(): boolean {\n\t\treturn this._overCounter > 0;\n\t}\n\n\t/** Whether file uploading is in progress */\n\tget uploading(): boolean {\n\t\treturn this._uploadingItems.some(i => !i.done);\n\t}\n\n\t/** The remaining number of files allowed.*/\n\tget remaining(): number {\n\t\treturn this.limit ? this.limit - this._uploadingItems.length : Infinity;\n\t}\n\n\t/** @ignore */\n\t_handleFileSelection() {\n\t\tconst fileList = this._fileInput.nativeElement.files;\n\t\tif (fileList?.length && this._validateFileSize(fileList)) {\n\t\t\tthis._uploadFiles(Array.from(fileList));\n\t\t\tthis._fileInput.nativeElement.value = '';\n\t\t}\n\t}\n\n\t/** @ignore */\n\tget _invalidFilesDragged(): boolean {\n\t\treturn this._numberOfFilesDragged > this.remaining && (this._overFrame || this._overDropZone);\n\t}\n\n\t/** @ignore */\n\tget _initialising(): boolean {\n\t\treturn !!this._initSubs && !this._initSubs.closed;\n\t}\n\n\tprivate returnFileSize(size: number) {\n\t\tif (size < 1024) {\n\t\t\treturn `${size} bytes`;\n\t\t} else if (size >= 1024 && size < 1048576) {\n\t\t\treturn `${(size / 1024).toFixed(1)} KB`;\n\t\t} else {\n\t\t\treturn `${(size / 1048576).toFixed(1)} MB`;\n\t\t}\n\t}\n\n\tprivate _validateFileSize(files: FileList) {\n\t\tthis._fileSizeExceedMsg = '';\n\t\tconst maxSize = this.returnFileSize(this._getMaxBytes());\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tif (files[i]!.size > this._getMaxBytes()) {\n\t\t\t\tthis._fileSizeExceedMsg = `Selected file/s has exceeded the allowable size of ${maxSize} per file`;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate _getMaxBytes(): number {\n\t\tif (typeof this.fileSize === 'string') {\n\t\t\tif (this.fileSize.toUpperCase().endsWith('KB')) {\n\t\t\t\tconst kiloBytes = this.fileSize.substring(0, this.fileSize.indexOf('KB'));\n\t\t\t\treturn Number(kiloBytes) * 1024;\n\t\t\t} else if (this.fileSize.toUpperCase().endsWith('MB')) {\n\t\t\t\tconst megaBytes = this.fileSize.substring(0, this.fileSize.indexOf('MB'));\n\t\t\t\treturn Number(megaBytes) * 1048576;\n\t\t\t}\n\t\t}\n\t\treturn this.fileSize as number;\n\t}\n\n\tprivate _uploadFiles(files: File[]) {\n\t\tif (this._initialising || files.length > this.remaining) {\n\t\t\treturn;\n\t\t}\n\t\tconst filtered = files.filter(\n\t\t\tf =>\n\t\t\t\t(!f.type || this._typeRegExps.some(regexp => f.type.match(regexp))) &&\n\t\t\t\t!this._uploadingItems.some(i => i.name === f.name)\n\t\t);\n\t\tconst observables = this._service.upload(filtered);\n\t\tconst items = filtered.map(\n\t\t\t(f, i) => new UploadingItem(observables[i], f, this._updateItems.bind(this), this._deleteItem.bind(this))\n\t\t);\n\t\tthis._uploadingItems = [...this._uploadingItems, ...items];\n\t}\n\n\tprivate _onDndEnterFrame(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tthis._numberOfFilesDragged = event.dataTransfer?.items?.length || 0;\n\t\tthis._overFrameCounter++;\n\t}\n\n\tprivate _onDndLeaveFrame() {\n\t\tthis._overFrameCounter--;\n\t}\n\n\tprivate _onDndStopFrame() {\n\t\tthis._overFrameCounter = 0;\n\t\tthis._overCounter = 0;\n\t}\n\n\tprivate _acceptChange(v: string[]) {\n\t\tthis._initSubs = this._service.list().subscribe(list => {\n\t\t\tthis._uploadingItems = list\n\t\t\t\t.filter(i => v.includes(i.id))\n\t\t\t\t.map(f => new UploadingItem(f, this._deleteItem.bind(this)));\n\t\t});\n\t}\n\n\tprivate _updateItems() {\n\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\tthis._uploadingItems = [...completed, ...this._uploadingItems.filter(i => !i.uploadedItem)];\n\t\tthis._updateValue(completed);\n\t}\n\n\tprivate _deleteItem(item: UploadingItem) {\n\t\tconst key = item.uploadedItem?.id;\n\t\tif (key) {\n\t\t\tthis._service.delete(key).subscribe(() => {\n\t\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\n\t\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\t\t\tthis._updateValue(completed);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\n\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\t\tthis._updateValue(completed);\n\t\t}\n\t}\n\n\tprivate _updateValue(completed: UploadingItem[]) {\n\t\tconst completedIds = completed.map(c => c.uploadedItem!.id);\n\t\tthis._value = completedIds;\n\t\tif (!this._value.length) {\n\t\t\tthis._value = null;\n\t\t}\n\t\tthis._onChange(completedIds);\n\t}\n}\n","<div class=\"bui-file-upload-container\">\n\t@if (!_initialising && remaining > 0 && (!_itemAnimationInProgress || remaining > 1)) {\n\t\t<div class=\"bui-file-upload-hint\">\n\t\t\t@if (_invalidFilesDragged) {\n\t\t\t\t<mat-icon [buiIcon]=\"'block'\" [size]=\"32\" color=\"warn\" variant=\"outlined\" style=\"opacity: 0.6\"></mat-icon>\n\t\t\t} @else {\n\t\t\t\t@if (!_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-muted bui-upload-icon-link\" (click)=\"selectFiles()\">\n\t\t\t\t\t\t<mat-icon [buiIcon]=\"'fas fa-cloud-upload-alt'\" [size]=\"32\"></mat-icon>\n\t\t\t\t\t\t<a role=\"button\">{{ uploadActionText }}</a>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dragHint }}</div>\n\t\t\t\t}\n\t\t\t\t@if (_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dropHint }}</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t@if (_uploadingItems.length) {\n\t\t<div\n\t\t\tclass=\"bui-file-upload-list\"\n\t\t\t[@slideOut]=\"_uploadingItems.length\"\n\t\t\t(@slideOut.start)=\"_itemAnimationStart.next()\"\n\t\t\t(@slideOut.done)=\"_itemAnimationDone.next()\"\n\t\t>\n\t\t\t<span class=\"bui-file-uploaded-label\">{{ fileUploadedLabel }}</span>\n\t\t\t@for (item of _uploadingItems; track item; let idx = $index) {\n\t\t\t\t<div class=\"bui-file-upload-item\" [class.in-progress]=\"!item.done\" #itemDiv>\n\t\t\t\t\t<div class=\"bui-file-upload-item-name\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<mat-icon class=\"bui-color-muted\">description</mat-icon>\n\t\t\t\t\t\t\t@if (item.done && !item.downloading) {\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\tclass=\"text\"\n\t\t\t\t\t\t\t\t\thref=\"#{{ item.uploadedItem?.id }}\"\n\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); _openItem(item)\"\n\t\t\t\t\t\t\t\t\tcontextmenu=\"false\"\n\t\t\t\t\t\t\t\t\tmatTooltip=\"Download\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text\">{{ item.name }}</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class=\"bui-file-upload-item-progress\">\n\t\t\t\t\t\t\t@if (!item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar\n\t\t\t\t\t\t\t\t\tmode=\"determinate\"\n\t\t\t\t\t\t\t\t\t[class.upload-completed]=\"item.done\"\n\t\t\t\t\t\t\t\t\t[value]=\"item.done ? 100 : item.progress * 100\"\n\t\t\t\t\t\t\t\t></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@if (item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar mode=\"buffer\"></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t@if (item.done) {\n\t\t\t\t\t\t\t\t\t100%\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t{{ item.progress | percent }}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"bui-file-upload-item-action\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t(click)=\"item.cancel()\"\n\t\t\t\t\t\t\t(mouseenter)=\"itemDiv.classList.add('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\t(mouseleave)=\"itemDiv.classList.remove('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\tmatTooltip=\"Delete\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<mat-icon [buiIcon]=\"'cancel'\" style=\"line-height: 0.9\"></mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t@if (idx < _uploadingItems.length - 1) {\n\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t<input\n\t\ttype=\"file\"\n\t\t#fileInput\n\t\tstyle=\"display: none\"\n\t\taccept=\"{{ _accept }}\"\n\t\t(change)=\"_handleFileSelection()\"\n\t\t[multiple]=\"remaining > 1\"\n\t/>\n\n\t@if (_fileSizeExceedMsg) {\n\t\t<div class=\"bui-color-warn bui-file-size-exceed\">\n\t\t\t<span> {{ _fileSizeExceedMsg }}</span> <mat-icon role=\"button\" (click)=\"_fileSizeExceedMsg = ''\">cancel</mat-icon>\n\t\t</div>\n\t}\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileUploadComponent } from './file-upload.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IconFontModule } from '@bravura/ui/icon-font';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n\tdeclarations: [FileUploadComponent],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tMatIconModule,\r\n\t\tIconFontModule,\r\n\t\tMatProgressBarModule,\r\n\t\tMatButtonModule,\r\n\t\tMatDividerModule,\r\n\t\tMatTooltipModule\r\n\t],\r\n\texports: [FileUploadComponent]\r\n})\r\nexport class FileUploadModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileUploadService"],"mappings":"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"}
|
|
@@ -23,10 +23,10 @@ const BUI_FORM_FIELD_CONFIG = new InjectionToken('@bravura/ui/buiFormFieldConfig
|
|
|
23
23
|
* component.
|
|
24
24
|
*/
|
|
25
25
|
class FormFieldComponent extends MatFormField {
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: FormFieldComponent, isStandalone: false, selector: "bui-dummy-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [".bui-form-field-bound,.bui-form-field-detach{padding-top:24px;--mat-mdc-form-field-floating-label-scale: 1 !important;--mat-mdc-form-field-floating-label-translate-y: -3.3rem}.bui-form-field-bound .mdc-floating-label,.bui-form-field-detach .mdc-floating-label{--mat-mdc-form-field-label-transform: translateY(var(--mat-mdc-form-field-floating-label-translate-y)) translateX(-4px) scale(var(--mat-mdc-form-field-floating-label-scale, .75)) !important;transition:none!important}[dir=rtl] .bui-form-field-bound .mdc-floating-label,[dir=rtl] .bui-form-field-detach .mdc-floating-label{--mat-mdc-form-field-label-transform: translateY(var(--mat-mdc-form-field-floating-label-translate-y)) translateX(4px) scale(var(--mat-mdc-form-field-floating-label-scale, .75)) !important}.bui-form-field-bound .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix,.bui-form-field-detach .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{display:flex;flex-direction:column;justify-content:center;align-self:stretch}.bui-form-field-bound.mat-focused{--mat-mdc-form-field-floating-label-translate-y: calc(-3.3rem - 1px) }.bui-form-field-bound .mat-mdc-form-field-hint-wrapper,.bui-form-field-bound .mat-mdc-form-field-error-wrapper{padding-left:initial;padding-inline-start:4px}.bui-form-field-bound .mat-mdc-form-field-infix{min-height:48px}.bui-form-field-bound .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.bui-form-field-bound .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:4px}.bui-form-field-bound .mdc-notched-outline--notched .mdc-notched-outline__notch{border-top-width:1px;border-top-style:solid}.bui-form-field-bound .mdc-text-field--focused .mdc-notched-outline--notched .mdc-notched-outline__notch{border-top-width:2px}.bui-form-field-bound .mat-mdc-form-field-icon-prefix>.mat-icon{padding:0 6px 0 12px}.bui-form-field-bound .mat-mdc-form-field-icon-prefix>span,.bui-form-field-bound .mat-mdc-form-field-icon-prefix>div{padding-inline-start:6px}.bui-form-field-bound .mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px 0 6px}.bui-form-field-bound .mat-mdc-form-field-icon-suffix>span,.bui-form-field-bound .mat-mdc-form-field-icon-suffix>div{padding-inline-end:6px}.bui-form-field-detach .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:0;padding-bottom:0}.bui-form-field-detach .mat-mdc-form-field-hint-wrapper,.bui-form-field-detach .mat-mdc-form-field-error-wrapper{padding-inline-start:0}.bui-form-field-detach .mat-mdc-form-field-infix{min-height:40px}.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{border:none!important}.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:0}.bui-form-field-detach .mat-mdc-text-field-wrapper.mdc-text-field--outlined{padding-inline-start:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{ selector: 'bui-dummy-component', template: ``, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [".bui-form-field-bound,.bui-form-field-detach{padding-top:24px;--mat-mdc-form-field-floating-label-scale: 1 !important;--mat-mdc-form-field-floating-label-translate-y: -3.3rem}.bui-form-field-bound .mdc-floating-label,.bui-form-field-detach .mdc-floating-label{--mat-mdc-form-field-label-transform: translateY(var(--mat-mdc-form-field-floating-label-translate-y)) translateX(-4px) scale(var(--mat-mdc-form-field-floating-label-scale, .75)) !important;transition:none!important}[dir=rtl] .bui-form-field-bound .mdc-floating-label,[dir=rtl] .bui-form-field-detach .mdc-floating-label{--mat-mdc-form-field-label-transform: translateY(var(--mat-mdc-form-field-floating-label-translate-y)) translateX(4px) scale(var(--mat-mdc-form-field-floating-label-scale, .75)) !important}.bui-form-field-bound .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix,.bui-form-field-detach .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{display:flex;flex-direction:column;justify-content:center;align-self:stretch}.bui-form-field-bound.mat-focused{--mat-mdc-form-field-floating-label-translate-y: calc(-3.3rem - 1px) }.bui-form-field-bound .mat-mdc-form-field-hint-wrapper,.bui-form-field-bound .mat-mdc-form-field-error-wrapper{padding-left:initial;padding-inline-start:4px}.bui-form-field-bound .mat-mdc-form-field-infix{min-height:48px}.bui-form-field-bound .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.bui-form-field-bound .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:4px}.bui-form-field-bound .mdc-notched-outline--notched .mdc-notched-outline__notch{border-top-width:1px;border-top-style:solid}.bui-form-field-bound .mdc-text-field--focused .mdc-notched-outline--notched .mdc-notched-outline__notch{border-top-width:2px}.bui-form-field-bound .mat-mdc-form-field-icon-prefix>.mat-icon{padding:0 6px 0 12px}.bui-form-field-bound .mat-mdc-form-field-icon-prefix>span,.bui-form-field-bound .mat-mdc-form-field-icon-prefix>div{padding-inline-start:6px}.bui-form-field-bound .mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px 0 6px}.bui-form-field-bound .mat-mdc-form-field-icon-suffix>span,.bui-form-field-bound .mat-mdc-form-field-icon-suffix>div{padding-inline-end:6px}.bui-form-field-detach .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:0;padding-bottom:0}.bui-form-field-detach .mat-mdc-form-field-hint-wrapper,.bui-form-field-detach .mat-mdc-form-field-error-wrapper{padding-inline-start:0}.bui-form-field-detach .mat-mdc-form-field-infix{min-height:40px}.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{border:none!important}.bui-form-field-detach .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:0}.bui-form-field-detach .mat-mdc-text-field-wrapper.mdc-text-field--outlined{padding-inline-start:0}\n"] }]
|
|
32
32
|
}] });
|
|
@@ -57,10 +57,10 @@ class FormFieldStyleDirective {
|
|
|
57
57
|
this._flowDetection = matFormField._shouldAlwaysFloat;
|
|
58
58
|
this.appearance = config.appearance;
|
|
59
59
|
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
61
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormFieldStyleDirective, deps: [{ token: i1.MatFormField, host: true }, { token: i0.ElementRef }, { token: BUI_FORM_FIELD_CONFIG }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
61
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: FormFieldStyleDirective, isStandalone: false, selector: "bui-form-field, mat-form-field", inputs: { appearance: "appearance" }, host: { classAttribute: "bui-host" }, ngImport: i0 }); }
|
|
62
62
|
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormFieldStyleDirective, decorators: [{
|
|
64
64
|
type: Directive,
|
|
65
65
|
args: [{
|
|
66
66
|
selector: 'bui-form-field, mat-form-field',
|
|
@@ -98,11 +98,11 @@ class FormFieldModule {
|
|
|
98
98
|
]
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
102
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
103
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
102
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: FormFieldModule, declarations: [FormFieldComponent, FormFieldStyleDirective], imports: [CommonModule, MatFormFieldModule, ObserversModule], exports: [FormFieldComponent, FormFieldStyleDirective, MatFormFieldModule] }); }
|
|
103
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormFieldModule, imports: [CommonModule, MatFormFieldModule, ObserversModule, MatFormFieldModule] }); }
|
|
104
104
|
}
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormFieldModule, decorators: [{
|
|
106
106
|
type: NgModule,
|
|
107
107
|
args: [{
|
|
108
108
|
declarations: [FormFieldComponent, FormFieldStyleDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-form-field.mjs","sources":["../../../projects/ui/form-field/form-field.component.ts","../../../projects/ui/form-field/form-field.module.ts","../../../projects/ui/form-field/bravura-ui-form-field.ts"],"sourcesContent":["import {\r\n\tChangeDetectionStrategy,\r\n\tComponent,\r\n\tDirective,\r\n\tElementRef,\r\n\tHost,\r\n\tInject,\r\n\tInjectionToken,\r\n\tInput,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\n\r\nexport interface BuiFormFieldConfig {\r\n\tappearance?: 'fill' | 'outline' | 'bound';\r\n}\r\n\r\nexport const BUI_FORM_FIELD_CONFIG = new InjectionToken<BuiFormFieldConfig>('@bravura/ui/buiFormFieldConfig', {\r\n\tfactory: () => ({ appearance: 'fill' }),\r\n\tprovidedIn: 'root'\r\n});\r\n/**\r\n * Container for form controls that applies Material Design styling and behavior.\r\n *\r\n * This component extends Angular Material's [mat-form-field](https://material.angular.io/components/form-field) and provides two additional appearances\r\n * `bound` and `detach`. `bound` renders the label outside the outlined area of the field, while `detach` remove the borders all together. `detach`\r\n * is generally used with form controls that render their own borders.\r\n *\r\n * ** IMPORTANT NOTICE **\r\n *\r\n * From version 3.0 onward, the selector `bui-form-field` is deprecated and will be removed in later releases. You no longer need to use this tag name\r\n * for the new appearances. As long as you import the `NgModule` from this package, the new appearances will be supported by Material's `mat-form-field`\r\n * component.\r\n */\r\n@Component({\r\n\tselector: 'bui-dummy-component',\r\n\ttemplate: ``,\r\n\tstyleUrls: ['./form-field.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tstandalone: false\r\n})\r\nexport class FormFieldComponent extends MatFormField {}\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Directive({\r\n\tselector: 'bui-form-field, mat-form-field',\r\n\thost: {\r\n\t\tclass: 'bui-host'\r\n\t},\r\n\tstandalone: false\r\n})\r\nexport class FormFieldStyleDirective {\r\n\tprivate _appearance: any;\r\n\tprivate _flowDetection: any;\r\n\r\n\t/** The form field appearance style. */\r\n\t@Input()\r\n\tget appearance(): any {\r\n\t\treturn this._appearance;\r\n\t}\r\n\tset appearance(value: any) {\r\n\t\tthis._appearance = value;\r\n\t\tthis.elemRef.nativeElement.classList.remove('bui-form-field-bound', 'bui-form-field-detach');\r\n\t\tif (['bound', 'detach'].includes(this._appearance)) {\r\n\t\t\tthis.matFormField.appearance = 'outline';\r\n\t\t\tthis.elemRef.nativeElement.classList.add(`bui-form-field-${value}`);\r\n\t\t\tthis.matFormField._shouldAlwaysFloat = () => true;\r\n\t\t} else {\r\n\t\t\tthis.matFormField.appearance = ['outline', 'fill'].includes(this._appearance) ? this._appearance : undefined;\r\n\t\t\tthis.matFormField._shouldAlwaysFloat = this._flowDetection;\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(\r\n\t\t@Host() private matFormField: MatFormField,\r\n\t\tprivate elemRef: ElementRef<HTMLElement>,\r\n\t\t@Inject(BUI_FORM_FIELD_CONFIG) config: BuiFormFieldConfig\r\n\t) {\r\n\t\tthis._flowDetection = matFormField._shouldAlwaysFloat;\r\n\t\tthis.appearance = config.appearance;\r\n\t}\r\n}\r\n\r\nconst matFormFieldRef: any = MatFormField.ɵcmp;\r\nconst formFieldRef: any = FormFieldComponent.ɵcmp;\r\n\r\nmatFormFieldRef.styles.push(...formFieldRef.styles);\r\nmatFormFieldRef.selectors.push(['bui-form-field']);\r\ndelete matFormFieldRef.inputs.appearance;\r\ndelete matFormFieldRef.declaredInputs.appearance;\r\n","import { ObserversModule } from '@angular/cdk/observers';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport {\r\n\tBuiFormFieldConfig,\r\n\tBUI_FORM_FIELD_CONFIG,\r\n\tFormFieldComponent,\r\n\tFormFieldStyleDirective\r\n} from './form-field.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [FormFieldComponent, FormFieldStyleDirective],\r\n\timports: [CommonModule, MatFormFieldModule, ObserversModule],\r\n\texports: [FormFieldComponent, FormFieldStyleDirective, MatFormFieldModule]\r\n})\r\nexport class FormFieldModule {\r\n\tstatic forConfig(config: BuiFormFieldConfig): ModuleWithProviders<FormFieldModule> {\r\n\t\tconst cfg = { ...config };\r\n\t\tcfg.appearance = cfg.appearance || 'fill';\r\n\t\treturn {\r\n\t\t\tngModule: FormFieldModule,\r\n\t\t\tproviders: [\r\n\t\t\t\t{\r\n\t\t\t\t\tprovide: BUI_FORM_FIELD_CONFIG,\r\n\t\t\t\t\tuseValue: cfg\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t};\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAiBO,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAqB,gCAAgC,EAAE;IAC7G,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACvC,IAAA,UAAU,EAAE;AACZ,CAAA,CAAC;AACF;;;;;;;;;;;;AAYG;AASG,MAAO,kBAAmB,SAAQ,YAAY,CAAA
|
|
1
|
+
{"version":3,"file":"bravura-ui-form-field.mjs","sources":["../../../projects/ui/form-field/form-field.component.ts","../../../projects/ui/form-field/form-field.module.ts","../../../projects/ui/form-field/bravura-ui-form-field.ts"],"sourcesContent":["import {\r\n\tChangeDetectionStrategy,\r\n\tComponent,\r\n\tDirective,\r\n\tElementRef,\r\n\tHost,\r\n\tInject,\r\n\tInjectionToken,\r\n\tInput,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\n\r\nexport interface BuiFormFieldConfig {\r\n\tappearance?: 'fill' | 'outline' | 'bound';\r\n}\r\n\r\nexport const BUI_FORM_FIELD_CONFIG = new InjectionToken<BuiFormFieldConfig>('@bravura/ui/buiFormFieldConfig', {\r\n\tfactory: () => ({ appearance: 'fill' }),\r\n\tprovidedIn: 'root'\r\n});\r\n/**\r\n * Container for form controls that applies Material Design styling and behavior.\r\n *\r\n * This component extends Angular Material's [mat-form-field](https://material.angular.io/components/form-field) and provides two additional appearances\r\n * `bound` and `detach`. `bound` renders the label outside the outlined area of the field, while `detach` remove the borders all together. `detach`\r\n * is generally used with form controls that render their own borders.\r\n *\r\n * ** IMPORTANT NOTICE **\r\n *\r\n * From version 3.0 onward, the selector `bui-form-field` is deprecated and will be removed in later releases. You no longer need to use this tag name\r\n * for the new appearances. As long as you import the `NgModule` from this package, the new appearances will be supported by Material's `mat-form-field`\r\n * component.\r\n */\r\n@Component({\r\n\tselector: 'bui-dummy-component',\r\n\ttemplate: ``,\r\n\tstyleUrls: ['./form-field.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tstandalone: false\r\n})\r\nexport class FormFieldComponent extends MatFormField {}\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Directive({\r\n\tselector: 'bui-form-field, mat-form-field',\r\n\thost: {\r\n\t\tclass: 'bui-host'\r\n\t},\r\n\tstandalone: false\r\n})\r\nexport class FormFieldStyleDirective {\r\n\tprivate _appearance: any;\r\n\tprivate _flowDetection: any;\r\n\r\n\t/** The form field appearance style. */\r\n\t@Input()\r\n\tget appearance(): any {\r\n\t\treturn this._appearance;\r\n\t}\r\n\tset appearance(value: any) {\r\n\t\tthis._appearance = value;\r\n\t\tthis.elemRef.nativeElement.classList.remove('bui-form-field-bound', 'bui-form-field-detach');\r\n\t\tif (['bound', 'detach'].includes(this._appearance)) {\r\n\t\t\tthis.matFormField.appearance = 'outline';\r\n\t\t\tthis.elemRef.nativeElement.classList.add(`bui-form-field-${value}`);\r\n\t\t\tthis.matFormField._shouldAlwaysFloat = () => true;\r\n\t\t} else {\r\n\t\t\tthis.matFormField.appearance = ['outline', 'fill'].includes(this._appearance) ? this._appearance : undefined;\r\n\t\t\tthis.matFormField._shouldAlwaysFloat = this._flowDetection;\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(\r\n\t\t@Host() private matFormField: MatFormField,\r\n\t\tprivate elemRef: ElementRef<HTMLElement>,\r\n\t\t@Inject(BUI_FORM_FIELD_CONFIG) config: BuiFormFieldConfig\r\n\t) {\r\n\t\tthis._flowDetection = matFormField._shouldAlwaysFloat;\r\n\t\tthis.appearance = config.appearance;\r\n\t}\r\n}\r\n\r\nconst matFormFieldRef: any = MatFormField.ɵcmp;\r\nconst formFieldRef: any = FormFieldComponent.ɵcmp;\r\n\r\nmatFormFieldRef.styles.push(...formFieldRef.styles);\r\nmatFormFieldRef.selectors.push(['bui-form-field']);\r\ndelete matFormFieldRef.inputs.appearance;\r\ndelete matFormFieldRef.declaredInputs.appearance;\r\n","import { ObserversModule } from '@angular/cdk/observers';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport {\r\n\tBuiFormFieldConfig,\r\n\tBUI_FORM_FIELD_CONFIG,\r\n\tFormFieldComponent,\r\n\tFormFieldStyleDirective\r\n} from './form-field.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [FormFieldComponent, FormFieldStyleDirective],\r\n\timports: [CommonModule, MatFormFieldModule, ObserversModule],\r\n\texports: [FormFieldComponent, FormFieldStyleDirective, MatFormFieldModule]\r\n})\r\nexport class FormFieldModule {\r\n\tstatic forConfig(config: BuiFormFieldConfig): ModuleWithProviders<FormFieldModule> {\r\n\t\tconst cfg = { ...config };\r\n\t\tcfg.appearance = cfg.appearance || 'fill';\r\n\t\treturn {\r\n\t\t\tngModule: FormFieldModule,\r\n\t\t\tproviders: [\r\n\t\t\t\t{\r\n\t\t\t\t\tprovide: BUI_FORM_FIELD_CONFIG,\r\n\t\t\t\t\tuseValue: cfg\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t};\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -137,10 +137,10 @@ class IconDirective {
|
|
|
137
137
|
element.style.width = `${this.size}px`;
|
|
138
138
|
element.style.height = `${this.size}px`;
|
|
139
139
|
}
|
|
140
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
141
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
140
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IconDirective, deps: [{ token: i1.MatIcon }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
141
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: IconDirective, isStandalone: false, selector: "[buiIcon]", inputs: { buiIcon: "buiIcon", size: "size", variant: "variant" }, usesOnChanges: true, ngImport: i0 }); }
|
|
142
142
|
}
|
|
143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IconDirective, decorators: [{
|
|
144
144
|
type: Directive,
|
|
145
145
|
args: [{
|
|
146
146
|
selector: '[buiIcon]',
|
|
@@ -158,11 +158,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
158
158
|
* Module for utility functions and directives based on `mat-icon` and icon fonts.
|
|
159
159
|
*/
|
|
160
160
|
class IconFontModule {
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
162
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
163
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
161
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IconFontModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
162
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: IconFontModule, declarations: [IconDirective], imports: [CommonModule, MatIconModule], exports: [MatIconModule, IconDirective] }); }
|
|
163
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IconFontModule, imports: [CommonModule, MatIconModule, MatIconModule] }); }
|
|
164
164
|
}
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IconFontModule, decorators: [{
|
|
166
166
|
type: NgModule,
|
|
167
167
|
args: [{
|
|
168
168
|
declarations: [IconDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-icon-font.mjs","sources":["../../../projects/ui/icon-font/utilities.ts","../../../projects/ui/icon-font/icon.directive.ts","../../../projects/ui/icon-font/icon-font.module.ts","../../../projects/ui/icon-font/bravura-ui-icon-font.ts"],"sourcesContent":["/**\r\n * @ignore\r\n */\r\nconst faReplacementMap: { [key: string]: string } = {\r\n\t'fa-shield': 'fa-shield-alt',\r\n\t'fa-line-chart': 'fa-chart-line'\r\n};\r\n\r\n/**\r\n * Decode the FontAwesome icon font set name from the icon name\r\n *\r\n * `'far fa-alarm' => 'far'`\r\n *\r\n * `'home' => ''`\r\n *\r\n * `'fa-user' => 'fas'`\r\n */\r\nexport function decodeFAIconFontSet(iconName: string): string {\r\n\tlet fontSet = '';\r\n\tlet isFA = false;\r\n\tif (iconName) {\r\n\t\ticonName.split(/\\s/).forEach(s => {\r\n\t\t\tif (s.startsWith('fa-')) {\r\n\t\t\t\tisFA = true;\r\n\t\t\t} else {\r\n\t\t\t\tfontSet = s;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tif (isFA) {\r\n\t\treturn fontSet || 'fas';\r\n\t}\r\n\r\n\treturn '';\r\n}\r\n\r\n/**\r\n * Decode the FontAwesome icon font name from the icon name\r\n *\r\n * `'far fa-alarm' => 'fa-alarm'`\r\n *\r\n * `'home' => ''`\r\n *\r\n * `'fa-user' => 'fa-user'`\r\n */\r\nexport function decodeFAIconFontName(iconName: string): string {\r\n\tif (iconName) {\r\n\t\tconst name = iconName.split(/\\s/).find(s => s && s.startsWith('fa-')) || '';\r\n\t\treturn faReplacementMap[name] || name;\r\n\t}\r\n\r\n\treturn '';\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nimport { decodeFAIconFontName, decodeFAIconFontSet } from './utilities';\r\n\r\n/**\r\n * @ignore\r\n */\r\nconst BUI_ICON_CLASS = 'bui-font-awesome-icon';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const BUI_ICON_MAT_VARIANTS = ['filled', 'outlined', 'round', 'two-tone', 'sharp'];\r\n\r\n/**\r\n * @ignore\r\n */\r\nfunction variantToClass(variant: string) {\r\n\treturn `material-icons-${variant}`.replace(/-filled$/, '');\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nconst ALL_MAT_CLASSES = BUI_ICON_MAT_VARIANTS.map(variantToClass);\r\n\r\n/**\r\n * Use this directive, together with `<mat-icon>`, to display an icon font character/symbol\r\n * from Material or FontAwesome icons.\r\n *\r\n * To use the icon fonts, add the following statements to one of your global SCSS files:\r\n *\r\n * ```css\r\n * @import url(https://fonts.googleapis.com/css2?family=Material+Icons);\r\n * @import url(https://use.fontawesome.com/releases/v5.15.0/css/all.css);\r\n * ```\r\n *\r\n * @example <mat-icon buiIcon=\"far fa-circle\"></mat-icon> <!-- FontAwesome -->\r\n * @example <mat-icon buiIcon=\"home\" [size]=\"42\"></mat-icon> <!-- Material -->\r\n */\r\n@Directive({\r\n\tselector: '[buiIcon]',\r\n\tstandalone: false\r\n})\r\nexport class IconDirective implements OnChanges {\r\n\t/**\r\n\t * The icon name\r\n\t *\r\n\t * @example 'far fa-circle'\r\n\t * @example 'home'\r\n\t */\r\n\t@Input()\r\n\tbuiIcon = '';\r\n\r\n\t/**\r\n\t * Override the default icon size\r\n\t *\r\n\t * @default 24\r\n\t */\r\n\t@Input()\r\n\tsize = 24;\r\n\r\n\t/**\r\n\t * The style variant of Material Icons. It is not applicable for Font Awesome Icons or any other custom font icon sets.\r\n\t * @default `filled`\r\n\t */\r\n\t@Input()\r\n\tvariant: 'filled' | 'outlined' | 'round' | 'two-tone' | 'sharp' = 'filled';\r\n\r\n\tconstructor(private _icon: MatIcon) {\r\n\t\tif (!this._icon) {\r\n\t\t\tthrow new Error('Directive [buiIcon] must be used on a mat-icon!');\r\n\t\t}\r\n\t}\r\n\r\n\tngOnChanges(_: SimpleChanges) {\r\n\t\tconst iconFontSet = this.buiIcon && decodeFAIconFontSet(this.buiIcon);\r\n\t\tconst iconFontName = this.buiIcon && decodeFAIconFontName(this.buiIcon);\r\n\r\n\t\tconst element: HTMLElement = this._icon._elementRef.nativeElement;\r\n\t\tif (iconFontSet) {\r\n\t\t\tthis._icon.fontSet = iconFontSet;\r\n\t\t\tthis._icon.fontIcon = iconFontName;\r\n\t\t\telement.textContent = '';\r\n\t\t\telement.classList.add(BUI_ICON_CLASS);\r\n\t\t\telement.style.fontSize = `${(this.size * 20) / 24}px`;\r\n\t\t\tthis._icon['_updateFontIconClasses']();\r\n\t\t} else {\r\n\t\t\telement.textContent = this.buiIcon;\r\n\t\t\tthis._icon.fontSet = '';\r\n\t\t\tthis._icon.fontIcon = '';\r\n\t\t\telement.classList.remove(BUI_ICON_CLASS);\r\n\t\t\telement.style.fontSize = `${this.size}px`;\r\n\t\t\tthis._icon['_updateFontIconClasses']();\r\n\t\t\telement.classList.remove(...ALL_MAT_CLASSES);\r\n\t\t\telement.classList.add(variantToClass(this.variant));\r\n\t\t}\r\n\t\telement.style.width = `${this.size}px`;\r\n\t\telement.style.height = `${this.size}px`;\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconDirective } from './icon.directive';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n/**\r\n * Module for utility functions and directives based on `mat-icon` and icon fonts.\r\n */\r\n@NgModule({\r\n\tdeclarations: [IconDirective],\r\n\timports: [CommonModule, MatIconModule],\r\n\texports: [MatIconModule, IconDirective]\r\n})\r\nexport class IconFontModule {}\r\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":"bravura-ui-icon-font.mjs","sources":["../../../projects/ui/icon-font/utilities.ts","../../../projects/ui/icon-font/icon.directive.ts","../../../projects/ui/icon-font/icon-font.module.ts","../../../projects/ui/icon-font/bravura-ui-icon-font.ts"],"sourcesContent":["/**\r\n * @ignore\r\n */\r\nconst faReplacementMap: { [key: string]: string } = {\r\n\t'fa-shield': 'fa-shield-alt',\r\n\t'fa-line-chart': 'fa-chart-line'\r\n};\r\n\r\n/**\r\n * Decode the FontAwesome icon font set name from the icon name\r\n *\r\n * `'far fa-alarm' => 'far'`\r\n *\r\n * `'home' => ''`\r\n *\r\n * `'fa-user' => 'fas'`\r\n */\r\nexport function decodeFAIconFontSet(iconName: string): string {\r\n\tlet fontSet = '';\r\n\tlet isFA = false;\r\n\tif (iconName) {\r\n\t\ticonName.split(/\\s/).forEach(s => {\r\n\t\t\tif (s.startsWith('fa-')) {\r\n\t\t\t\tisFA = true;\r\n\t\t\t} else {\r\n\t\t\t\tfontSet = s;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tif (isFA) {\r\n\t\treturn fontSet || 'fas';\r\n\t}\r\n\r\n\treturn '';\r\n}\r\n\r\n/**\r\n * Decode the FontAwesome icon font name from the icon name\r\n *\r\n * `'far fa-alarm' => 'fa-alarm'`\r\n *\r\n * `'home' => ''`\r\n *\r\n * `'fa-user' => 'fa-user'`\r\n */\r\nexport function decodeFAIconFontName(iconName: string): string {\r\n\tif (iconName) {\r\n\t\tconst name = iconName.split(/\\s/).find(s => s && s.startsWith('fa-')) || '';\r\n\t\treturn faReplacementMap[name] || name;\r\n\t}\r\n\r\n\treturn '';\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nimport { decodeFAIconFontName, decodeFAIconFontSet } from './utilities';\r\n\r\n/**\r\n * @ignore\r\n */\r\nconst BUI_ICON_CLASS = 'bui-font-awesome-icon';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const BUI_ICON_MAT_VARIANTS = ['filled', 'outlined', 'round', 'two-tone', 'sharp'];\r\n\r\n/**\r\n * @ignore\r\n */\r\nfunction variantToClass(variant: string) {\r\n\treturn `material-icons-${variant}`.replace(/-filled$/, '');\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nconst ALL_MAT_CLASSES = BUI_ICON_MAT_VARIANTS.map(variantToClass);\r\n\r\n/**\r\n * Use this directive, together with `<mat-icon>`, to display an icon font character/symbol\r\n * from Material or FontAwesome icons.\r\n *\r\n * To use the icon fonts, add the following statements to one of your global SCSS files:\r\n *\r\n * ```css\r\n * @import url(https://fonts.googleapis.com/css2?family=Material+Icons);\r\n * @import url(https://use.fontawesome.com/releases/v5.15.0/css/all.css);\r\n * ```\r\n *\r\n * @example <mat-icon buiIcon=\"far fa-circle\"></mat-icon> <!-- FontAwesome -->\r\n * @example <mat-icon buiIcon=\"home\" [size]=\"42\"></mat-icon> <!-- Material -->\r\n */\r\n@Directive({\r\n\tselector: '[buiIcon]',\r\n\tstandalone: false\r\n})\r\nexport class IconDirective implements OnChanges {\r\n\t/**\r\n\t * The icon name\r\n\t *\r\n\t * @example 'far fa-circle'\r\n\t * @example 'home'\r\n\t */\r\n\t@Input()\r\n\tbuiIcon = '';\r\n\r\n\t/**\r\n\t * Override the default icon size\r\n\t *\r\n\t * @default 24\r\n\t */\r\n\t@Input()\r\n\tsize = 24;\r\n\r\n\t/**\r\n\t * The style variant of Material Icons. It is not applicable for Font Awesome Icons or any other custom font icon sets.\r\n\t * @default `filled`\r\n\t */\r\n\t@Input()\r\n\tvariant: 'filled' | 'outlined' | 'round' | 'two-tone' | 'sharp' = 'filled';\r\n\r\n\tconstructor(private _icon: MatIcon) {\r\n\t\tif (!this._icon) {\r\n\t\t\tthrow new Error('Directive [buiIcon] must be used on a mat-icon!');\r\n\t\t}\r\n\t}\r\n\r\n\tngOnChanges(_: SimpleChanges) {\r\n\t\tconst iconFontSet = this.buiIcon && decodeFAIconFontSet(this.buiIcon);\r\n\t\tconst iconFontName = this.buiIcon && decodeFAIconFontName(this.buiIcon);\r\n\r\n\t\tconst element: HTMLElement = this._icon._elementRef.nativeElement;\r\n\t\tif (iconFontSet) {\r\n\t\t\tthis._icon.fontSet = iconFontSet;\r\n\t\t\tthis._icon.fontIcon = iconFontName;\r\n\t\t\telement.textContent = '';\r\n\t\t\telement.classList.add(BUI_ICON_CLASS);\r\n\t\t\telement.style.fontSize = `${(this.size * 20) / 24}px`;\r\n\t\t\tthis._icon['_updateFontIconClasses']();\r\n\t\t} else {\r\n\t\t\telement.textContent = this.buiIcon;\r\n\t\t\tthis._icon.fontSet = '';\r\n\t\t\tthis._icon.fontIcon = '';\r\n\t\t\telement.classList.remove(BUI_ICON_CLASS);\r\n\t\t\telement.style.fontSize = `${this.size}px`;\r\n\t\t\tthis._icon['_updateFontIconClasses']();\r\n\t\t\telement.classList.remove(...ALL_MAT_CLASSES);\r\n\t\t\telement.classList.add(variantToClass(this.variant));\r\n\t\t}\r\n\t\telement.style.width = `${this.size}px`;\r\n\t\telement.style.height = `${this.size}px`;\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconDirective } from './icon.directive';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n/**\r\n * Module for utility functions and directives based on `mat-icon` and icon fonts.\r\n */\r\n@NgModule({\r\n\tdeclarations: [IconDirective],\r\n\timports: [CommonModule, MatIconModule],\r\n\texports: [MatIconModule, IconDirective]\r\n})\r\nexport class IconFontModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -45,10 +45,10 @@ class TintedDirective {
|
|
|
45
45
|
` background-color: var(--bui-color-${this.color}); top: 0; left: 0; ` +
|
|
46
46
|
` bottom: 0; right: 0; pointer-events: none; }`;
|
|
47
47
|
}
|
|
48
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
49
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TintedDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: TintedDirective, isStandalone: false, selector: "[buiTinted], bui-panel", inputs: { color: ["buiTinted", "color"] }, host: { classAttribute: "bui-host" }, exportAs: ["buiTinted"], ngImport: i0 }); }
|
|
50
50
|
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TintedDirective, decorators: [{
|
|
52
52
|
type: Directive,
|
|
53
53
|
args: [{
|
|
54
54
|
selector: '[buiTinted], bui-panel',
|
|
@@ -122,10 +122,10 @@ class PanelComponent {
|
|
|
122
122
|
this._width = width;
|
|
123
123
|
this._cd.markForCheck();
|
|
124
124
|
}
|
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
126
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
125
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PanelComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TintedDirective, host: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: PanelComponent, isStandalone: false, selector: "bui-panel", inputs: { backdropClass: "backdropClass", cardClass: "cardClass", color: "color", appearance: "appearance", breakpoint: "breakpoint" }, host: { properties: { "class.bui-panel-vertical": "_width < breakpoint", "class.bui-panel-horizontal": "_width >= breakpoint" }, classAttribute: "bui-panel bui-host" }, ngImport: i0, template: "<mat-card\r\n\t[buiSizingBy]=\"'parent'\"\r\n\t(buiResized)=\"_resized($event.width)\"\r\n\t[appearance]=\"appearance === 'flat' ? 'raised' : appearance\"\r\n\tclass=\"bui-border-{{ color || 'none' }} {{ cardClass }} {{\r\n\t\tappearance === 'flat' ? 'mat-elevation-z' : appearance === 'outlined' ? 'mat-elevation-z bui-panel-border' : ''\r\n\t}}\"\r\n>\r\n\t<ng-content></ng-content>\r\n</mat-card>\r\n", styles: [":host{border-radius:var(--mat-card-elevated-container-shape, var(--mat-shape-medium, 4px));position:relative}:host .bui-panel-border{border-width:1px;border-style:solid}:host ::ng-deep .bui-panel-section-container{display:flex;box-sizing:border-box!important}:host(:not([hidden])){display:block}:host(:not([hidden])) .mat-mdc-card{background-color:transparent;padding:16px}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-header,:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-content,:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-actions{padding:0}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-actions{margin-inline-start:-10px}:host(:not([hidden])) .mat-mdc-card ::ng-deep .mat-mdc-card-footer{margin:0 -16px -16px}:host(:not([hidden])) .mat-mdc-card.mat-elevation-z{box-shadow:none!important}:host(.bui-panel-horizontal) ::ng-deep .bui-panel-section-container{flex-direction:row}:host(.bui-panel-vertical) ::ng-deep .bui-panel-section-container{flex-direction:column}\n"], dependencies: [{ kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.SizingDirective, selector: "[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]", inputs: ["buiSizing", "sizingBy", "buiSizingBy", "buiFixedHeight"], outputs: ["buiResized"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
127
127
|
}
|
|
128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PanelComponent, decorators: [{
|
|
129
129
|
type: Component,
|
|
130
130
|
args: [{ selector: 'bui-panel', host: {
|
|
131
131
|
class: 'bui-panel bui-host',
|
|
@@ -175,10 +175,10 @@ class PanelSectionComponent {
|
|
|
175
175
|
this._parentElement.setAttribute(COUNT_ATTR, count);
|
|
176
176
|
this._parentElement.classList.add(`${CONTAINER_PREFIX}-${count}`);
|
|
177
177
|
}
|
|
178
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
178
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PanelSectionComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: PanelSectionComponent, isStandalone: false, selector: "bui-panel-section", host: { classAttribute: "bui-panel-section" }, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [":host{flex-grow:1}:host-context(.bui-panel-horizontal) :host:not(:first-child){border-inline-start:1px solid rgba(128,128,128,.2);padding-inline-start:16px}:host-context(.bui-panel-horizontal) :host:not(:last-child){padding-inline-end:16px}:host-context(.bui-panel-vertical) :host:not(:first-child){border-top:1px solid rgba(128,128,128,.2);padding-top:16px}:host-context(.bui-panel-vertical) :host:not(:last-child){padding-bottom:16px}:host-context(.bui-panel-horizontal .bui-panel-section-container-2){flex-basis:50%}:host-context(.bui-panel-horizontal .bui-panel-section-container-3){flex-basis:33.3333333333%}:host-context(.bui-panel-horizontal .bui-panel-section-container-4){flex-basis:25%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
180
180
|
}
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PanelSectionComponent, decorators: [{
|
|
182
182
|
type: Component,
|
|
183
183
|
args: [{ selector: 'bui-panel-section', host: {
|
|
184
184
|
class: 'bui-panel-section'
|
|
@@ -186,11 +186,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
186
186
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
187
187
|
|
|
188
188
|
class PanelModule {
|
|
189
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
190
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
191
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
189
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
190
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: PanelModule, declarations: [PanelComponent, PanelSectionComponent, TintedDirective], imports: [CommonModule, MatCardModule, BehaviorModule], exports: [MatCardModule, PanelComponent, PanelSectionComponent, TintedDirective] }); }
|
|
191
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PanelModule, imports: [CommonModule, MatCardModule, BehaviorModule, MatCardModule] }); }
|
|
192
192
|
}
|
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PanelModule, decorators: [{
|
|
194
194
|
type: NgModule,
|
|
195
195
|
args: [{
|
|
196
196
|
declarations: [PanelComponent, PanelSectionComponent, TintedDirective],
|