@ifsworld/granite-components 14.1.1 → 14.2.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/esm2022/carousel/lib/carousel.component.mjs +2 -2
- package/esm2022/file-upload/ifsworld-granite-components-file-upload.mjs +5 -0
- package/esm2022/file-upload/index.mjs +3 -0
- package/esm2022/{lib/file-upload → file-upload/lib}/directives/file-drag-and-drop.directive.mjs +1 -1
- package/esm2022/file-upload/lib/file-upload.component.mjs +182 -0
- package/esm2022/file-upload/lib/file-upload.constants.mjs +45 -0
- package/esm2022/file-upload/lib/file-upload.module.mjs +32 -0
- package/esm2022/{lib/file-upload → file-upload/lib}/file-upload.utils.mjs +1 -1
- package/esm2022/index.mjs +1 -3
- package/esm2022/lib/input-field/input-field.component.mjs +6 -2
- package/fesm2022/ifsworld-granite-components-carousel.mjs +2 -2
- package/fesm2022/ifsworld-granite-components-carousel.mjs.map +1 -1
- package/fesm2022/ifsworld-granite-components-file-upload.mjs +370 -0
- package/fesm2022/ifsworld-granite-components-file-upload.mjs.map +1 -0
- package/fesm2022/ifsworld-granite-components.mjs +6 -331
- package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
- package/file-upload/README.md +3 -0
- package/file-upload/index.d.ts +2 -0
- package/{lib/file-upload → file-upload/lib}/file-upload.component.d.ts +6 -3
- package/{lib/file-upload → file-upload/lib}/file-upload.constants.d.ts +3 -0
- package/{lib/file-upload → file-upload/lib}/file-upload.module.d.ts +3 -3
- package/index.d.ts +0 -2
- package/package.json +7 -1
- package/esm2022/lib/file-upload/file-upload.component.mjs +0 -175
- package/esm2022/lib/file-upload/file-upload.constants.mjs +0 -38
- package/esm2022/lib/file-upload/file-upload.module.mjs +0 -21
- /package/{lib/file-upload → file-upload/lib}/directives/file-drag-and-drop.directive.d.ts +0 -0
- /package/{lib/file-upload → file-upload/lib}/file-upload.utils.d.ts +0 -0
|
@@ -2744,6 +2744,9 @@ class GraniteInputFieldComponent {
|
|
|
2744
2744
|
if (changes.value) {
|
|
2745
2745
|
this._empty = this.value == null || this.value === '';
|
|
2746
2746
|
}
|
|
2747
|
+
if (changes.value || changes.maxlength || changes.countcharacters) {
|
|
2748
|
+
this._applyCharacterCount(this.value?.toString());
|
|
2749
|
+
}
|
|
2747
2750
|
if (changes.type) {
|
|
2748
2751
|
this._validateType();
|
|
2749
2752
|
}
|
|
@@ -2781,10 +2784,11 @@ class GraniteInputFieldComponent {
|
|
|
2781
2784
|
}
|
|
2782
2785
|
}
|
|
2783
2786
|
_applyCharacterCount(inputString) {
|
|
2784
|
-
if (this.countcharacters) {
|
|
2787
|
+
if (this.countcharacters && inputString != null) {
|
|
2785
2788
|
this._currentCharCount = inputString.length;
|
|
2786
2789
|
if (this._currentCharCount > this.maxlength) {
|
|
2787
2790
|
inputString = inputString.slice(0, this.maxlength);
|
|
2791
|
+
this.value = inputString;
|
|
2788
2792
|
this._currentCharCount = this.maxlength;
|
|
2789
2793
|
}
|
|
2790
2794
|
}
|
|
@@ -5463,335 +5467,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
5463
5467
|
}]
|
|
5464
5468
|
}] });
|
|
5465
5469
|
|
|
5466
|
-
const fileSizes = [
|
|
5467
|
-
'Bytes',
|
|
5468
|
-
'KB',
|
|
5469
|
-
'MB',
|
|
5470
|
-
'GB',
|
|
5471
|
-
'TB',
|
|
5472
|
-
'PB',
|
|
5473
|
-
'EB',
|
|
5474
|
-
'ZB',
|
|
5475
|
-
'YB',
|
|
5476
|
-
];
|
|
5477
|
-
var FileUploadStatus;
|
|
5478
|
-
(function (FileUploadStatus) {
|
|
5479
|
-
FileUploadStatus["NotStarted"] = "NotStarted";
|
|
5480
|
-
FileUploadStatus["InProgress"] = "InProgress";
|
|
5481
|
-
FileUploadStatus["Completed"] = "Completed";
|
|
5482
|
-
FileUploadStatus["Failed"] = "Failed";
|
|
5483
|
-
FileUploadStatus["Cancelled"] = "Cancelled";
|
|
5484
|
-
})(FileUploadStatus || (FileUploadStatus = {}));
|
|
5485
|
-
var FilUploadErrorTypes;
|
|
5486
|
-
(function (FilUploadErrorTypes) {
|
|
5487
|
-
FilUploadErrorTypes["ExtensionNotSupported"] = "ExtensionNotSupported";
|
|
5488
|
-
FilUploadErrorTypes["MultipleFilesNotSupported"] = "MultipleFilesNotSupported";
|
|
5489
|
-
})(FilUploadErrorTypes || (FilUploadErrorTypes = {}));
|
|
5490
|
-
const DEFAULT_MULTI_FILE_SUPPORT = false;
|
|
5491
|
-
const DEFAULT_ACCEPT_TYPE = '*.*';
|
|
5492
|
-
const DEFAULT_UPLOAD_TITLE = 'Upload Files';
|
|
5493
|
-
const DEFAULT_UPLOAD_ICON = 'icon-upload';
|
|
5494
|
-
const DEFAULT_FILE_BROWSE_BUTTON_ICON = 'icon-folder-alt';
|
|
5495
|
-
const DEFAULT_DROPZONE_TEXT = 'Drop here or';
|
|
5496
|
-
const DEFAULT_BROWSE_BUTTON_TEXT = 'Browse';
|
|
5497
|
-
const DEFAULT_DROP_PLACEHOLDER_TEXT = 'Drop files here';
|
|
5498
|
-
const DEFAULT_DROPZONE_HINT = '';
|
|
5499
|
-
const DEFAULT_REMOVE_BUTTON_TEXT = 'Remove';
|
|
5500
|
-
const DEFAULT_UPLOAD_BUTTON_TEXT = 'Upload';
|
|
5501
|
-
const DEFAULT_RETRY_BUTTON_TEXT = 'Retry';
|
|
5502
|
-
const DEFAULT_CANCEL_BUTTON_TEXT = 'Cancel';
|
|
5503
|
-
|
|
5504
|
-
function validFileTypes(mimeTypesStringToCheck, files) {
|
|
5505
|
-
const supportedFileMimeTypes = mimeTypesStringToCheck
|
|
5506
|
-
.split(',')
|
|
5507
|
-
.map((ext) => ext.trim());
|
|
5508
|
-
if (!files || files.length === 0) {
|
|
5509
|
-
return false;
|
|
5510
|
-
}
|
|
5511
|
-
return files.every((file) => {
|
|
5512
|
-
const fileType = file['type'];
|
|
5513
|
-
return fileType && supportedFileMimeTypes.includes(fileType);
|
|
5514
|
-
});
|
|
5515
|
-
}
|
|
5516
|
-
|
|
5517
|
-
class GraniteFileDragAndDropDirective {
|
|
5518
|
-
constructor() {
|
|
5519
|
-
this.currentFiles = [];
|
|
5520
|
-
this.droppedFiles = new EventEmitter();
|
|
5521
|
-
this.isFileOver = new EventEmitter();
|
|
5522
|
-
this.fileUploadValidation = new EventEmitter();
|
|
5523
|
-
}
|
|
5524
|
-
onDragOver(event) {
|
|
5525
|
-
event.preventDefault();
|
|
5526
|
-
event.stopPropagation();
|
|
5527
|
-
const transferFiles = event.dataTransfer?.items ?? [];
|
|
5528
|
-
if (!validFileTypes(this.accept, Array.from(transferFiles))) {
|
|
5529
|
-
this.fileBrowseError = true;
|
|
5530
|
-
this.fileUploadValidation.emit({
|
|
5531
|
-
isError: this.fileBrowseError,
|
|
5532
|
-
type: FilUploadErrorTypes.ExtensionNotSupported,
|
|
5533
|
-
});
|
|
5534
|
-
return;
|
|
5535
|
-
}
|
|
5536
|
-
if (!this.multiFileUploadEnabled &&
|
|
5537
|
-
(transferFiles.length > 1 || this.currentFiles.length >= 1)) {
|
|
5538
|
-
this.fileBrowseError = true;
|
|
5539
|
-
this.fileUploadValidation.emit({
|
|
5540
|
-
isError: this.fileBrowseError,
|
|
5541
|
-
type: FilUploadErrorTypes.MultipleFilesNotSupported,
|
|
5542
|
-
});
|
|
5543
|
-
return;
|
|
5544
|
-
}
|
|
5545
|
-
this.fileOver = true;
|
|
5546
|
-
this.isFileOver.emit(this.fileOver);
|
|
5547
|
-
}
|
|
5548
|
-
onDragLeave(event) {
|
|
5549
|
-
event.preventDefault();
|
|
5550
|
-
event.stopPropagation();
|
|
5551
|
-
this.fileOver = false;
|
|
5552
|
-
this.fileBrowseError = false;
|
|
5553
|
-
this.fileUploadValidation.emit({ isError: false, type: null });
|
|
5554
|
-
this.isFileOver.emit(this.fileOver);
|
|
5555
|
-
}
|
|
5556
|
-
onDrop(event) {
|
|
5557
|
-
event.preventDefault();
|
|
5558
|
-
event.stopPropagation();
|
|
5559
|
-
if (this.fileBrowseError) {
|
|
5560
|
-
this.fileBrowseError = false;
|
|
5561
|
-
this.fileUploadValidation.emit({
|
|
5562
|
-
isError: this.fileBrowseError,
|
|
5563
|
-
type: null,
|
|
5564
|
-
});
|
|
5565
|
-
return;
|
|
5566
|
-
}
|
|
5567
|
-
this.currentFiles = [
|
|
5568
|
-
...this.currentFiles,
|
|
5569
|
-
...Array.from(event.dataTransfer.files),
|
|
5570
|
-
];
|
|
5571
|
-
this.fileOver = false;
|
|
5572
|
-
this.isFileOver.emit(this.fileOver);
|
|
5573
|
-
if (this.currentFiles.length > 0) {
|
|
5574
|
-
this.droppedFiles.emit(this.currentFiles);
|
|
5575
|
-
}
|
|
5576
|
-
}
|
|
5577
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileDragAndDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5578
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GraniteFileDragAndDropDirective, selector: "[graniteFileDragAndDrop]", inputs: { multiFileUploadEnabled: "multiFileUploadEnabled", accept: "accept", currentFiles: "currentFiles" }, outputs: { droppedFiles: "droppedFiles", isFileOver: "isFileOver", fileUploadValidation: "fileUploadValidation" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.file-over": "this.fileOver", "class.file-error": "this.fileBrowseError" } }, exportAs: ["graniteFileDragAndDrop"], ngImport: i0 }); }
|
|
5579
|
-
}
|
|
5580
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileDragAndDropDirective, decorators: [{
|
|
5581
|
-
type: Directive,
|
|
5582
|
-
args: [{
|
|
5583
|
-
selector: '[graniteFileDragAndDrop]',
|
|
5584
|
-
exportAs: 'graniteFileDragAndDrop',
|
|
5585
|
-
}]
|
|
5586
|
-
}], propDecorators: { fileOver: [{
|
|
5587
|
-
type: HostBinding,
|
|
5588
|
-
args: ['class.file-over']
|
|
5589
|
-
}], fileBrowseError: [{
|
|
5590
|
-
type: HostBinding,
|
|
5591
|
-
args: ['class.file-error']
|
|
5592
|
-
}], multiFileUploadEnabled: [{
|
|
5593
|
-
type: Input
|
|
5594
|
-
}], accept: [{
|
|
5595
|
-
type: Input
|
|
5596
|
-
}], currentFiles: [{
|
|
5597
|
-
type: Input
|
|
5598
|
-
}], droppedFiles: [{
|
|
5599
|
-
type: Output
|
|
5600
|
-
}], isFileOver: [{
|
|
5601
|
-
type: Output
|
|
5602
|
-
}], fileUploadValidation: [{
|
|
5603
|
-
type: Output
|
|
5604
|
-
}], onDragOver: [{
|
|
5605
|
-
type: HostListener,
|
|
5606
|
-
args: ['dragover', ['$event']]
|
|
5607
|
-
}], onDragLeave: [{
|
|
5608
|
-
type: HostListener,
|
|
5609
|
-
args: ['dragleave', ['$event']]
|
|
5610
|
-
}], onDrop: [{
|
|
5611
|
-
type: HostListener,
|
|
5612
|
-
args: ['drop', ['$event']]
|
|
5613
|
-
}] } });
|
|
5614
|
-
|
|
5615
|
-
class GraniteFileUploadComponent {
|
|
5616
|
-
constructor() {
|
|
5617
|
-
this.accept = DEFAULT_ACCEPT_TYPE;
|
|
5618
|
-
this.uploadTitle = DEFAULT_UPLOAD_TITLE;
|
|
5619
|
-
this.uploadIcon = DEFAULT_UPLOAD_ICON;
|
|
5620
|
-
this.browseIcon = DEFAULT_FILE_BROWSE_BUTTON_ICON;
|
|
5621
|
-
this.dropZoneText = DEFAULT_DROPZONE_TEXT;
|
|
5622
|
-
this.browseButtonText = DEFAULT_BROWSE_BUTTON_TEXT;
|
|
5623
|
-
this.dropPlaceholderText = DEFAULT_DROP_PLACEHOLDER_TEXT;
|
|
5624
|
-
this.dropZoneHint = DEFAULT_DROPZONE_HINT;
|
|
5625
|
-
this.removeButtonText = DEFAULT_REMOVE_BUTTON_TEXT;
|
|
5626
|
-
this.uploadButtonText = DEFAULT_UPLOAD_BUTTON_TEXT;
|
|
5627
|
-
this.retryButtonText = DEFAULT_RETRY_BUTTON_TEXT;
|
|
5628
|
-
this.cancelButtonText = DEFAULT_CANCEL_BUTTON_TEXT;
|
|
5629
|
-
this.browseOrDragFiles = new EventEmitter();
|
|
5630
|
-
this.removeFiles = new EventEmitter();
|
|
5631
|
-
this.filesUpload = new EventEmitter();
|
|
5632
|
-
this.fileUploadValidation = new EventEmitter();
|
|
5633
|
-
this.selectedFiles = [];
|
|
5634
|
-
this.previewReadyFiles = [];
|
|
5635
|
-
this.isFileOnDropzone = false;
|
|
5636
|
-
this.FileUploadStatus = FileUploadStatus;
|
|
5637
|
-
this.fileError = false;
|
|
5638
|
-
// TODO: this becomes input when multiple file upload support with carousel component was done.
|
|
5639
|
-
this.supportMultiFileUpload = DEFAULT_MULTI_FILE_SUPPORT;
|
|
5640
|
-
this._uploadStatus = FileUploadStatus.NotStarted;
|
|
5641
|
-
this._autoUpload = true;
|
|
5642
|
-
}
|
|
5643
|
-
get uploadStatus() {
|
|
5644
|
-
return this._uploadStatus;
|
|
5645
|
-
}
|
|
5646
|
-
set uploadStatus(status) {
|
|
5647
|
-
this._uploadStatus = status;
|
|
5648
|
-
}
|
|
5649
|
-
get autoUpload() {
|
|
5650
|
-
return this._autoUpload;
|
|
5651
|
-
}
|
|
5652
|
-
set autoUpload(value) {
|
|
5653
|
-
this._autoUpload = coerceBooleanProperty(value);
|
|
5654
|
-
}
|
|
5655
|
-
fileBrowseHandler(event) {
|
|
5656
|
-
const target = event.target;
|
|
5657
|
-
const files = Array.from(target.files);
|
|
5658
|
-
if (!validFileTypes(this.accept, files)) {
|
|
5659
|
-
this.fileUploadValidation.emit({
|
|
5660
|
-
isError: true,
|
|
5661
|
-
type: FilUploadErrorTypes.ExtensionNotSupported,
|
|
5662
|
-
});
|
|
5663
|
-
this.fileDropRef.nativeElement.value = null;
|
|
5664
|
-
return;
|
|
5665
|
-
}
|
|
5666
|
-
this.selectedFiles = [...this.selectedFiles, ...files];
|
|
5667
|
-
this.previewReadyFiles = this.prepareSelectedFiles(this.selectedFiles);
|
|
5668
|
-
this.browseOrDragFiles.emit(this.previewReadyFiles);
|
|
5669
|
-
}
|
|
5670
|
-
fileRemoveHandler(index) {
|
|
5671
|
-
this.selectedFiles.splice(index, 1);
|
|
5672
|
-
this.previewReadyFiles.splice(index, 1);
|
|
5673
|
-
if (this.selectedFiles.length === 0 &&
|
|
5674
|
-
this.previewReadyFiles.length === 0) {
|
|
5675
|
-
this.fileDropRef.nativeElement.value = null;
|
|
5676
|
-
this.uploadStatus = FileUploadStatus.NotStarted;
|
|
5677
|
-
}
|
|
5678
|
-
this.removeFiles.emit(this.previewReadyFiles);
|
|
5679
|
-
}
|
|
5680
|
-
onFilesDropHandler(files) {
|
|
5681
|
-
if (!this.supportMultiFileUpload &&
|
|
5682
|
-
(this.selectedFiles.length === 1 || files.length !== 1)) {
|
|
5683
|
-
this.fileError = true;
|
|
5684
|
-
return;
|
|
5685
|
-
}
|
|
5686
|
-
this.selectedFiles = files;
|
|
5687
|
-
this.previewReadyFiles = this.prepareSelectedFiles(this.selectedFiles);
|
|
5688
|
-
this.browseOrDragFiles.emit(this.previewReadyFiles);
|
|
5689
|
-
}
|
|
5690
|
-
onFileOverDropzone(isFileOver) {
|
|
5691
|
-
this.isFileOnDropzone = isFileOver;
|
|
5692
|
-
}
|
|
5693
|
-
onFileDropError(validation) {
|
|
5694
|
-
this.fileError = validation.isError;
|
|
5695
|
-
this.fileDropErrorType = validation.type;
|
|
5696
|
-
}
|
|
5697
|
-
prepareSelectedFiles(files) {
|
|
5698
|
-
return files.map((file) => ({
|
|
5699
|
-
file,
|
|
5700
|
-
readableSize: this.formatBytesToReadableSize(file.size, 2),
|
|
5701
|
-
imageUrl: file.type.startsWith('image/')
|
|
5702
|
-
? URL.createObjectURL(file)
|
|
5703
|
-
: null,
|
|
5704
|
-
}));
|
|
5705
|
-
}
|
|
5706
|
-
uploadFiles() {
|
|
5707
|
-
this.filesUpload.emit();
|
|
5708
|
-
}
|
|
5709
|
-
retryUpload() {
|
|
5710
|
-
this.filesUpload.emit();
|
|
5711
|
-
}
|
|
5712
|
-
cancelUpload() {
|
|
5713
|
-
for (let i = 0; i < this.previewReadyFiles.length; i++) {
|
|
5714
|
-
this.fileRemoveHandler(i);
|
|
5715
|
-
}
|
|
5716
|
-
}
|
|
5717
|
-
resetFileUpload() {
|
|
5718
|
-
this.fileDropRef.nativeElement.value = null;
|
|
5719
|
-
this.fileError = false;
|
|
5720
|
-
this.fileDropErrorType = '';
|
|
5721
|
-
this.selectedFiles = [];
|
|
5722
|
-
this.previewReadyFiles = [];
|
|
5723
|
-
this.uploadStatus = FileUploadStatus.NotStarted;
|
|
5724
|
-
}
|
|
5725
|
-
formatBytesToReadableSize(bytes, decimals) {
|
|
5726
|
-
if (bytes === 0) {
|
|
5727
|
-
return `0 ${fileSizes[0]}`;
|
|
5728
|
-
}
|
|
5729
|
-
const bytesPerKB = 1024;
|
|
5730
|
-
const decimalPoints = decimals <= 0 ? 0 : decimals || 2;
|
|
5731
|
-
const exp = Math.floor(Math.log(bytes) / Math.log(bytesPerKB));
|
|
5732
|
-
return `${parseFloat((bytes / Math.pow(bytesPerKB, exp)).toFixed(decimalPoints))} ${fileSizes[exp]}`;
|
|
5733
|
-
}
|
|
5734
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5735
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: GraniteFileUploadComponent, selector: "granite-file-upload", inputs: { accept: "accept", uploadTitle: "uploadTitle", uploadIcon: "uploadIcon", browseIcon: "browseIcon", dropZoneText: "dropZoneText", browseButtonText: "browseButtonText", dropPlaceholderText: "dropPlaceholderText", dropZoneHint: "dropZoneHint", removeButtonText: "removeButtonText", uploadButtonText: "uploadButtonText", retryButtonText: "retryButtonText", cancelButtonText: "cancelButtonText", uploadStatus: "uploadStatus", autoUpload: "autoUpload" }, outputs: { browseOrDragFiles: "browseOrDragFiles", removeFiles: "removeFiles", filesUpload: "filesUpload", fileUploadValidation: "fileUploadValidation" }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"file-upload-wrapper\">\n <h2 class=\"file-upload-title\">{{ uploadTitle }}</h2>\n <div\n class=\"file-dropzone\"\n [ngClass]=\"{ 'upload-failed': uploadStatus === FileUploadStatus.Failed }\"\n graniteFileDragAndDrop\n (droppedFiles)=\"onFilesDropHandler($event)\"\n (isFileOver)=\"onFileOverDropzone($event)\"\n (fileUploadValidation)=\"onFileDropError($event)\"\n [multiFileUploadEnabled]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n [currentFiles]=\"selectedFiles\"\n >\n <input\n class=\"file-input\"\n #fileDropRef\n type=\"file\"\n title=\"fileUpload\"\n (change)=\"fileBrowseHandler($event)\"\n [multiple]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n />\n <div class=\"file-upload-body\">\n @if (!isFileOnDropzone && !fileError) {\n <div\n class=\"file-upload-browse\"\n *ngIf=\"previewReadyFiles.length === 0; else filePreview\"\n >\n <granite-icon\n class=\"file-upload-icon\"\n [fontIcon]=\"uploadIcon\"\n ></granite-icon>\n <div class=\"file-selection\">\n <h2 class=\"file-upload-body-text\">{{ dropZoneText }}</h2>\n <button\n class=\"file-select-button\"\n graniteButton\n (click)=\"fileDropRef.click()\"\n >\n <granite-icon\n class=\"browse-button-icon\"\n [fontIcon]=\"browseIcon\"\n ></granite-icon>\n <div class=\"browse-button-text\">{{ browseButtonText }}</div>\n </button>\n </div>\n <p *ngIf=\"dropZoneHint\" class=\"file-upload-hint\">\n {{ dropZoneHint }}\n </p>\n </div>\n <ng-template #filePreview>\n <div\n class=\"file-preview-container\"\n *ngFor=\"let previewFile of previewReadyFiles; let i = index\"\n >\n @if (previewFile?.imageUrl) {\n <a\n class=\"file-preview-link\"\n [ngClass]=\"{\n 'uploading-in-progress':\n uploadStatus === FileUploadStatus.InProgress,\n 'upload-failed': uploadStatus === FileUploadStatus.Failed\n }\"\n [href]=\"previewFile?.imageUrl\"\n target=\"_blank\"\n >\n <div class=\"file-preview-holder\">\n <img\n role=\"presentation\"\n [src]=\"previewFile?.imageUrl\"\n [alt]=\"previewFile?.file?.name\"\n />\n <ng-container\n *ngIf=\"uploadStatus === FileUploadStatus.InProgress\"\n [ngTemplateOutlet]=\"uploadingOverlay\"\n ></ng-container>\n <ng-container\n *ngIf=\"uploadStatus === FileUploadStatus.Failed\"\n [ngTemplateOutlet]=\"uploadFailedOverlay\"\n >\n </ng-container>\n </div>\n <p class=\"file-name\" [title]=\"previewFile?.file?.name\">\n {{ previewFile?.file?.name }}\n </p>\n <p class=\"file-size\">{{ previewFile?.readableSize }}</p>\n </a>\n } @else {\n <div\n class=\"document-preview-link\"\n [ngClass]=\"{\n 'uploading-in-progress':\n uploadStatus === FileUploadStatus.InProgress,\n 'upload-failed': uploadStatus === FileUploadStatus.Failed\n }\"\n >\n <div class=\"document-preview-holder\">\n <granite-icon\n class=\"document-file-preview\"\n [class.upload-failed]=\"\n uploadStatus === FileUploadStatus.Failed\n \"\n [fontIcon]=\"'icon-document-alt'\"\n ></granite-icon>\n <ng-container\n *ngIf=\"uploadStatus === FileUploadStatus.InProgress\"\n [ngTemplateOutlet]=\"uploadingOverlay\"\n ></ng-container>\n </div>\n <p class=\"file-name\" [title]=\"previewFile?.file?.name\">\n {{ previewFile?.file?.name }}\n </p>\n <p class=\"file-size\">{{ previewFile?.readableSize }}</p>\n </div>\n }\n <button\n graniteButton\n *ngIf=\"\n [\n FileUploadStatus.Completed,\n FileUploadStatus.NotStarted\n ].includes(uploadStatus)\n \"\n (click)=\"fileRemoveHandler(i)\"\n >\n {{ removeButtonText }}\n </button>\n </div>\n </ng-template>\n } @else {\n <p class=\"drop-area-placeholder\">\n {{ dropPlaceholderText }}\n </p>\n }\n </div>\n </div>\n <div class=\"file-upload-footer\">\n <div class=\"footer-container\" *ngIf=\"previewReadyFiles.length > 0\">\n <button\n *ngIf=\"!autoUpload && uploadStatus === FileUploadStatus.NotStarted\"\n granitePrimaryButton\n (click)=\"uploadFiles()\"\n >\n {{ uploadButtonText }}\n </button>\n <ng-container *ngIf=\"uploadStatus === FileUploadStatus.Failed\">\n <button graniteButton (click)=\"cancelUpload()\">\n {{ cancelButtonText }}\n </button>\n <button\n class=\"retry-upload-button\"\n granitePrimaryButton\n (click)=\"retryUpload()\"\n >\n {{ retryButtonText }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #uploadingOverlay>\n <div class=\"file-preview-overlay\"></div>\n <div class=\"loading-container\">\n <div class=\"uploading-spinner\"></div>\n </div>\n</ng-template>\n\n<ng-template #uploadFailedOverlay>\n <div class=\"file-preview-overlay\"></div>\n</ng-template>\n", styles: [":host{width:100%}.file-upload-wrapper{display:flex;flex-direction:column;background-color:var(--granite-color-background);box-shadow:var(--granite-shadow-s);height:100%;width:100%}.file-upload-wrapper .file-upload-title{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-medium);font-weight:var(--granite-font-weight-bold);line-height:var(--granite-line-height-base-rem);color:var(--granite-color-text-weak);margin:0;padding:var(--granite-spacing-8) calc(var(--granite-spacing-16) * .813)}.file-upload-wrapper .file-dropzone{display:flex;flex-direction:column;border-width:var(--granite-border-width-focus);border-style:dashed;border-color:var(--granite-color-background-selected);border-radius:var(--granite-radius-m);margin:var(--granite-spacing-8);height:100%}.file-upload-wrapper .file-dropzone.upload-failed{border-color:var(--granite-color-categorical-4)}.file-upload-wrapper .file-dropzone.file-error{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-failure);border-color:var(--granite-color-state-error);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-error .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone.file-over{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-info);border-color:var(--granite-color-background-active);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-over .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone .file-input{opacity:0;position:absolute;width:0}.file-upload-wrapper .file-dropzone .file-upload-body{display:flex;align-items:center;justify-content:center;height:100%}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse{display:flex;flex-direction:column;gap:var(--granite-spacing-4);justify-content:center;align-items:center;padding:0 var(--granite-spacing-16)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-icon{font-size:var(--granite-font-size-display-small);color:var(--granite-color-text)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection{display:flex;justify-content:space-between;align-items:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-upload-body-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;width:100%;margin-inline-end:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button{display:flex;justify-content:space-between;align-items:center;color:var(--granite-color-text-link);padding-top:calc(var(--granite-spacing-24) / 4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-icon{font-size:var(--granite-font-size-body);color:var(--granite-color-text-link);margin-inline-end:var(--granite-spacing-4);padding:0}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-flowing) / 2);margin-top:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-icon,.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-text{color:var(--granite-color-text-inverse)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-hint{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-base-rem) * 1.125);text-align:center;color:var(--granite-color-text-hint);margin:calc(var(--granite-spacing-base-rem) * .625) 0 0}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container{display:flex;flex-direction:column;align-items:center;width:100%;max-height:100%;padding:calc(var(--granite-spacing-base-rem) * .375)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link{display:flex;flex-direction:column;align-items:center;max-width:50%;padding:0 var(--granite-spacing-8);text-decoration:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-size{text-decoration:underline}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder{display:flex;justify-content:center;align-items:flex-end;position:relative;width:80px;height:114px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder img{width:100%;height:100%;object-fit:cover;object-position:center;filter:brightness(250%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder .file-preview-overlay{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder .loading-container{position:absolute;top:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder .loading-container .uploading-spinner{width:50px;height:50px;border-radius:50%;border:6px solid;border-color:var(--granite-color-background-page);border-right-color:var(--granite-color-background-active);animation:loading-keyframe 1s infinite linear}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-preview-holder img{opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-preview-holder .file-preview-overlay{background-color:var(--granite-color-signal-failure);opacity:.2}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-size{color:var(--granite-color-signal-failure);opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-preview-holder img,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-preview-holder .file-preview-overlay,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-size{opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-name{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text-link);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:calc(var(--granite-spacing-base-rem) * .375) 0 0;width:100%;text-align:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-size{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-base-rem) * .625);color:var(--granite-color-text-link);margin:0 0 calc(var(--granite-spacing-base-rem) * .875)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link{display:flex;flex-direction:column;align-items:center;max-width:50%;padding:0 var(--granite-spacing-8);text-decoration:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder{display:flex;justify-content:center;align-items:flex-end;position:relative;width:60px;height:60px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .document-file-preview{font-size:calc(var(--granite-font-size-body) * 3);color:var(--granite-color-text-hint);padding:calc(var(--granite-spacing-4) * 3) 0}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .document-file-preview.upload-failed{color:var(--granite-color-background-failure)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .loading-container{position:absolute;top:50%;inset-inline-start:50%;transform:translate(-50%,-10%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .loading-container .uploading-spinner{width:50px;height:50px;border-radius:50%;border:6px solid;border-color:var(--granite-color-background-page);border-right-color:var(--granite-color-background-active);animation:loading-keyframe 1s infinite linear}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed .document-preview-holder .file-preview-overlay{background-color:var(--granite-color-signal-failure);opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed .file-size{color:var(--granite-color-signal-failure);opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .document-preview-holder .document-file-preview,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .document-preview-holder .file-preview-overlay,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .file-size{opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .file-name{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text-weak);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:calc(var(--granite-spacing-base-rem) * .375) 0 0;width:100%;text-align:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .file-size{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-base-rem) * .625);color:var(--granite-color-text-week);margin:0 0 calc(var(--granite-spacing-base-rem) * .875)}.file-upload-wrapper .file-upload-footer{margin-inline:var(--granite-spacing-8);margin-bottom:var(--granite-spacing-8)}.file-upload-wrapper .file-upload-footer .footer-container{display:flex;justify-content:flex-end;align-items:center}.file-upload-wrapper .file-upload-footer .footer-container .retry-upload-button{margin-inline-start:var(--granite-spacing-8)}@keyframes loading-keyframe{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: GraniteButtonComponent, selector: "button[graniteButton],\n button[granitePrimaryButton],\n button[graniteFlatButton],\n button[graniteToolbarButton]\n ", inputs: ["disabled", "toggled"], exportAs: ["graniteButton"] }, { kind: "component", type: GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }, { kind: "directive", type: GraniteFileDragAndDropDirective, selector: "[graniteFileDragAndDrop]", inputs: ["multiFileUploadEnabled", "accept", "currentFiles"], outputs: ["droppedFiles", "isFileOver", "fileUploadValidation"], exportAs: ["graniteFileDragAndDrop"] }] }); }
|
|
5736
|
-
}
|
|
5737
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileUploadComponent, decorators: [{
|
|
5738
|
-
type: Component,
|
|
5739
|
-
args: [{ selector: 'granite-file-upload', template: "<div class=\"file-upload-wrapper\">\n <h2 class=\"file-upload-title\">{{ uploadTitle }}</h2>\n <div\n class=\"file-dropzone\"\n [ngClass]=\"{ 'upload-failed': uploadStatus === FileUploadStatus.Failed }\"\n graniteFileDragAndDrop\n (droppedFiles)=\"onFilesDropHandler($event)\"\n (isFileOver)=\"onFileOverDropzone($event)\"\n (fileUploadValidation)=\"onFileDropError($event)\"\n [multiFileUploadEnabled]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n [currentFiles]=\"selectedFiles\"\n >\n <input\n class=\"file-input\"\n #fileDropRef\n type=\"file\"\n title=\"fileUpload\"\n (change)=\"fileBrowseHandler($event)\"\n [multiple]=\"supportMultiFileUpload\"\n [accept]=\"accept\"\n />\n <div class=\"file-upload-body\">\n @if (!isFileOnDropzone && !fileError) {\n <div\n class=\"file-upload-browse\"\n *ngIf=\"previewReadyFiles.length === 0; else filePreview\"\n >\n <granite-icon\n class=\"file-upload-icon\"\n [fontIcon]=\"uploadIcon\"\n ></granite-icon>\n <div class=\"file-selection\">\n <h2 class=\"file-upload-body-text\">{{ dropZoneText }}</h2>\n <button\n class=\"file-select-button\"\n graniteButton\n (click)=\"fileDropRef.click()\"\n >\n <granite-icon\n class=\"browse-button-icon\"\n [fontIcon]=\"browseIcon\"\n ></granite-icon>\n <div class=\"browse-button-text\">{{ browseButtonText }}</div>\n </button>\n </div>\n <p *ngIf=\"dropZoneHint\" class=\"file-upload-hint\">\n {{ dropZoneHint }}\n </p>\n </div>\n <ng-template #filePreview>\n <div\n class=\"file-preview-container\"\n *ngFor=\"let previewFile of previewReadyFiles; let i = index\"\n >\n @if (previewFile?.imageUrl) {\n <a\n class=\"file-preview-link\"\n [ngClass]=\"{\n 'uploading-in-progress':\n uploadStatus === FileUploadStatus.InProgress,\n 'upload-failed': uploadStatus === FileUploadStatus.Failed\n }\"\n [href]=\"previewFile?.imageUrl\"\n target=\"_blank\"\n >\n <div class=\"file-preview-holder\">\n <img\n role=\"presentation\"\n [src]=\"previewFile?.imageUrl\"\n [alt]=\"previewFile?.file?.name\"\n />\n <ng-container\n *ngIf=\"uploadStatus === FileUploadStatus.InProgress\"\n [ngTemplateOutlet]=\"uploadingOverlay\"\n ></ng-container>\n <ng-container\n *ngIf=\"uploadStatus === FileUploadStatus.Failed\"\n [ngTemplateOutlet]=\"uploadFailedOverlay\"\n >\n </ng-container>\n </div>\n <p class=\"file-name\" [title]=\"previewFile?.file?.name\">\n {{ previewFile?.file?.name }}\n </p>\n <p class=\"file-size\">{{ previewFile?.readableSize }}</p>\n </a>\n } @else {\n <div\n class=\"document-preview-link\"\n [ngClass]=\"{\n 'uploading-in-progress':\n uploadStatus === FileUploadStatus.InProgress,\n 'upload-failed': uploadStatus === FileUploadStatus.Failed\n }\"\n >\n <div class=\"document-preview-holder\">\n <granite-icon\n class=\"document-file-preview\"\n [class.upload-failed]=\"\n uploadStatus === FileUploadStatus.Failed\n \"\n [fontIcon]=\"'icon-document-alt'\"\n ></granite-icon>\n <ng-container\n *ngIf=\"uploadStatus === FileUploadStatus.InProgress\"\n [ngTemplateOutlet]=\"uploadingOverlay\"\n ></ng-container>\n </div>\n <p class=\"file-name\" [title]=\"previewFile?.file?.name\">\n {{ previewFile?.file?.name }}\n </p>\n <p class=\"file-size\">{{ previewFile?.readableSize }}</p>\n </div>\n }\n <button\n graniteButton\n *ngIf=\"\n [\n FileUploadStatus.Completed,\n FileUploadStatus.NotStarted\n ].includes(uploadStatus)\n \"\n (click)=\"fileRemoveHandler(i)\"\n >\n {{ removeButtonText }}\n </button>\n </div>\n </ng-template>\n } @else {\n <p class=\"drop-area-placeholder\">\n {{ dropPlaceholderText }}\n </p>\n }\n </div>\n </div>\n <div class=\"file-upload-footer\">\n <div class=\"footer-container\" *ngIf=\"previewReadyFiles.length > 0\">\n <button\n *ngIf=\"!autoUpload && uploadStatus === FileUploadStatus.NotStarted\"\n granitePrimaryButton\n (click)=\"uploadFiles()\"\n >\n {{ uploadButtonText }}\n </button>\n <ng-container *ngIf=\"uploadStatus === FileUploadStatus.Failed\">\n <button graniteButton (click)=\"cancelUpload()\">\n {{ cancelButtonText }}\n </button>\n <button\n class=\"retry-upload-button\"\n granitePrimaryButton\n (click)=\"retryUpload()\"\n >\n {{ retryButtonText }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #uploadingOverlay>\n <div class=\"file-preview-overlay\"></div>\n <div class=\"loading-container\">\n <div class=\"uploading-spinner\"></div>\n </div>\n</ng-template>\n\n<ng-template #uploadFailedOverlay>\n <div class=\"file-preview-overlay\"></div>\n</ng-template>\n", styles: [":host{width:100%}.file-upload-wrapper{display:flex;flex-direction:column;background-color:var(--granite-color-background);box-shadow:var(--granite-shadow-s);height:100%;width:100%}.file-upload-wrapper .file-upload-title{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-medium);font-weight:var(--granite-font-weight-bold);line-height:var(--granite-line-height-base-rem);color:var(--granite-color-text-weak);margin:0;padding:var(--granite-spacing-8) calc(var(--granite-spacing-16) * .813)}.file-upload-wrapper .file-dropzone{display:flex;flex-direction:column;border-width:var(--granite-border-width-focus);border-style:dashed;border-color:var(--granite-color-background-selected);border-radius:var(--granite-radius-m);margin:var(--granite-spacing-8);height:100%}.file-upload-wrapper .file-dropzone.upload-failed{border-color:var(--granite-color-categorical-4)}.file-upload-wrapper .file-dropzone.file-error{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-failure);border-color:var(--granite-color-state-error);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-error .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone.file-over{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;background-color:var(--granite-color-background-lobby-info);border-color:var(--granite-color-background-active);transition:background .15s ease}.file-upload-wrapper .file-dropzone.file-over .drop-area-placeholder{margin:0}.file-upload-wrapper .file-dropzone .file-input{opacity:0;position:absolute;width:0}.file-upload-wrapper .file-dropzone .file-upload-body{display:flex;align-items:center;justify-content:center;height:100%}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse{display:flex;flex-direction:column;gap:var(--granite-spacing-4);justify-content:center;align-items:center;padding:0 var(--granite-spacing-16)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-icon{font-size:var(--granite-font-size-display-small);color:var(--granite-color-text)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection{display:flex;justify-content:space-between;align-items:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-upload-body-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text);text-align:center;width:100%;margin-inline-end:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button{display:flex;justify-content:space-between;align-items:center;color:var(--granite-color-text-link);padding-top:calc(var(--granite-spacing-24) / 4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-icon{font-size:var(--granite-font-size-body);color:var(--granite-color-text-link);margin-inline-end:var(--granite-spacing-4);padding:0}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button .browse-button-text{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-flowing) / 2);margin-top:var(--granite-spacing-4)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-icon,.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-selection .file-select-button:hover .browse-button-text{color:var(--granite-color-text-inverse)}.file-upload-wrapper .file-dropzone .file-upload-body .file-upload-browse .file-upload-hint{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-body-small);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-base-rem) * 1.125);text-align:center;color:var(--granite-color-text-hint);margin:calc(var(--granite-spacing-base-rem) * .625) 0 0}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container{display:flex;flex-direction:column;align-items:center;width:100%;max-height:100%;padding:calc(var(--granite-spacing-base-rem) * .375)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link{display:flex;flex-direction:column;align-items:center;max-width:50%;padding:0 var(--granite-spacing-8);text-decoration:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link:hover .file-size{text-decoration:underline}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder{display:flex;justify-content:center;align-items:flex-end;position:relative;width:80px;height:114px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder img{width:100%;height:100%;object-fit:cover;object-position:center;filter:brightness(250%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder .file-preview-overlay{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder .loading-container{position:absolute;top:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-preview-holder .loading-container .uploading-spinner{width:50px;height:50px;border-radius:50%;border:6px solid;border-color:var(--granite-color-background-page);border-right-color:var(--granite-color-background-active);animation:loading-keyframe 1s infinite linear}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-preview-holder img{opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-preview-holder .file-preview-overlay{background-color:var(--granite-color-signal-failure);opacity:.2}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.upload-failed .file-size{color:var(--granite-color-signal-failure);opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-preview-holder img,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-preview-holder .file-preview-overlay,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link.uploading-in-progress .file-size{opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-name{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text-link);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:calc(var(--granite-spacing-base-rem) * .375) 0 0;width:100%;text-align:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .file-preview-link .file-size{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-base-rem) * .625);color:var(--granite-color-text-link);margin:0 0 calc(var(--granite-spacing-base-rem) * .875)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link{display:flex;flex-direction:column;align-items:center;max-width:50%;padding:0 var(--granite-spacing-8);text-decoration:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder{display:flex;justify-content:center;align-items:flex-end;position:relative;width:60px;height:60px}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .document-file-preview{font-size:calc(var(--granite-font-size-body) * 3);color:var(--granite-color-text-hint);padding:calc(var(--granite-spacing-4) * 3) 0}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .document-file-preview.upload-failed{color:var(--granite-color-background-failure)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .loading-container{position:absolute;top:50%;inset-inline-start:50%;transform:translate(-50%,-10%)}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .document-preview-holder .loading-container .uploading-spinner{width:50px;height:50px;border-radius:50%;border:6px solid;border-color:var(--granite-color-background-page);border-right-color:var(--granite-color-background-active);animation:loading-keyframe 1s infinite linear}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed .document-preview-holder .file-preview-overlay{background-color:var(--granite-color-signal-failure);opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.upload-failed .file-size{color:var(--granite-color-signal-failure);opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress{pointer-events:none}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .document-preview-holder .document-file-preview,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .document-preview-holder .file-preview-overlay,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .file-name,.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link.uploading-in-progress .file-size{opacity:.4}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .file-name{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-flowing);color:var(--granite-color-text-weak);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:calc(var(--granite-spacing-base-rem) * .375) 0 0;width:100%;text-align:center}.file-upload-wrapper .file-dropzone .file-upload-body .file-preview-container .document-preview-link .file-size{font-family:var(--granite-font-family-default);font-size:var(--granite-font-size-micro);font-weight:var(--granite-font-weight-regular);line-height:calc(var(--granite-line-height-base-rem) * .625);color:var(--granite-color-text-week);margin:0 0 calc(var(--granite-spacing-base-rem) * .875)}.file-upload-wrapper .file-upload-footer{margin-inline:var(--granite-spacing-8);margin-bottom:var(--granite-spacing-8)}.file-upload-wrapper .file-upload-footer .footer-container{display:flex;justify-content:flex-end;align-items:center}.file-upload-wrapper .file-upload-footer .footer-container .retry-upload-button{margin-inline-start:var(--granite-spacing-8)}@keyframes loading-keyframe{to{transform:rotate(360deg)}}\n"] }]
|
|
5740
|
-
}], propDecorators: { fileDropRef: [{
|
|
5741
|
-
type: ViewChild,
|
|
5742
|
-
args: ['fileDropRef', { read: ElementRef }]
|
|
5743
|
-
}], accept: [{
|
|
5744
|
-
type: Input
|
|
5745
|
-
}], uploadTitle: [{
|
|
5746
|
-
type: Input
|
|
5747
|
-
}], uploadIcon: [{
|
|
5748
|
-
type: Input
|
|
5749
|
-
}], browseIcon: [{
|
|
5750
|
-
type: Input
|
|
5751
|
-
}], dropZoneText: [{
|
|
5752
|
-
type: Input
|
|
5753
|
-
}], browseButtonText: [{
|
|
5754
|
-
type: Input
|
|
5755
|
-
}], dropPlaceholderText: [{
|
|
5756
|
-
type: Input
|
|
5757
|
-
}], dropZoneHint: [{
|
|
5758
|
-
type: Input
|
|
5759
|
-
}], removeButtonText: [{
|
|
5760
|
-
type: Input
|
|
5761
|
-
}], uploadButtonText: [{
|
|
5762
|
-
type: Input
|
|
5763
|
-
}], retryButtonText: [{
|
|
5764
|
-
type: Input
|
|
5765
|
-
}], cancelButtonText: [{
|
|
5766
|
-
type: Input
|
|
5767
|
-
}], browseOrDragFiles: [{
|
|
5768
|
-
type: Output
|
|
5769
|
-
}], removeFiles: [{
|
|
5770
|
-
type: Output
|
|
5771
|
-
}], filesUpload: [{
|
|
5772
|
-
type: Output
|
|
5773
|
-
}], fileUploadValidation: [{
|
|
5774
|
-
type: Output
|
|
5775
|
-
}], uploadStatus: [{
|
|
5776
|
-
type: Input
|
|
5777
|
-
}], autoUpload: [{
|
|
5778
|
-
type: Input
|
|
5779
|
-
}] } });
|
|
5780
|
-
|
|
5781
|
-
class GraniteFileUploadModule {
|
|
5782
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5783
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileUploadModule, declarations: [GraniteFileUploadComponent, GraniteFileDragAndDropDirective], imports: [CommonModule, GraniteButtonModule, GraniteIconModule], exports: [GraniteFileUploadComponent] }); }
|
|
5784
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileUploadModule, imports: [CommonModule, GraniteButtonModule, GraniteIconModule] }); }
|
|
5785
|
-
}
|
|
5786
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteFileUploadModule, decorators: [{
|
|
5787
|
-
type: NgModule,
|
|
5788
|
-
args: [{
|
|
5789
|
-
declarations: [GraniteFileUploadComponent, GraniteFileDragAndDropDirective],
|
|
5790
|
-
exports: [GraniteFileUploadComponent],
|
|
5791
|
-
imports: [CommonModule, GraniteButtonModule, GraniteIconModule],
|
|
5792
|
-
}]
|
|
5793
|
-
}] });
|
|
5794
|
-
|
|
5795
5470
|
class GraniteCollapsibleConditionalBodyDirective {
|
|
5796
5471
|
constructor() {
|
|
5797
5472
|
this.template = inject(TemplateRef);
|
|
@@ -5896,5 +5571,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
5896
5571
|
* Generated bundle index. Do not edit.
|
|
5897
5572
|
*/
|
|
5898
5573
|
|
|
5899
|
-
export { AVATAR_DEFAULT_STATUS, ButtonSelectors, CONTACT_DEFAULT_STATUS, ClientInputDesktopDirective, ClientInputTouchDirective, ClientOutputDesktopDirective, ClientOutputTouchDirective, ContactItemDefaultStatusComponent, GRANITE_CLIENT_INPUT, GRANITE_CLIENT_OUTPUT, GraniteAnchorComponent, GraniteArrangeGridComponent, GraniteArrangeGridItemComponent, GraniteArrangeGridModule, GraniteArrangeGridOrientation, GraniteAvatarComponent, GraniteAvatarDefaultStatusComponent, GraniteAvatarModule, GraniteBadgeComponent, GraniteBadgeHarness, GraniteBadgeModule, GraniteButtonComponent, GraniteButtonModule, GraniteCardActionsComponent, GraniteCardAvatarComponent, GraniteCardBodyComponent, GraniteCardComponent, GraniteCardContentComponent, GraniteCardFooterComponent, GraniteCardHeaderComponent, GraniteCardHeaderSubTitleComponent, GraniteCardHeaderTitleComponent, GraniteCardListComponent, GraniteCardListModule, GraniteCheckboxComponent, GraniteCheckboxGroupComponent, GraniteCheckboxModule, GraniteChipComponent, GraniteChipInputDirective, GraniteChipListComponent, GraniteChipSelectionChangeEvent, GraniteChipsModule, GraniteCollapsibleConditionalBodyDirective, GraniteCollapsibleConditionalHeaderDirective, GraniteCollapsibleGroupComponent, GraniteCollapsibleGroupModule, GraniteContactItemComponent, GraniteContactItemTitleComponent, GraniteContactsComponent, GraniteContactsModule, GraniteContactsProfileComponent, GraniteContactsTriggerForDirective, GraniteCoreModule, GraniteCustomAvatarStatusDirective, GraniteCustomProfileDirective, GraniteCustomStatusDirective, GraniteDividerDirective, GraniteEmptyAvatarComponent,
|
|
5574
|
+
export { AVATAR_DEFAULT_STATUS, ButtonSelectors, CONTACT_DEFAULT_STATUS, ClientInputDesktopDirective, ClientInputTouchDirective, ClientOutputDesktopDirective, ClientOutputTouchDirective, ContactItemDefaultStatusComponent, GRANITE_CLIENT_INPUT, GRANITE_CLIENT_OUTPUT, GraniteAnchorComponent, GraniteArrangeGridComponent, GraniteArrangeGridItemComponent, GraniteArrangeGridModule, GraniteArrangeGridOrientation, GraniteAvatarComponent, GraniteAvatarDefaultStatusComponent, GraniteAvatarModule, GraniteBadgeComponent, GraniteBadgeHarness, GraniteBadgeModule, GraniteButtonComponent, GraniteButtonModule, GraniteCardActionsComponent, GraniteCardAvatarComponent, GraniteCardBodyComponent, GraniteCardComponent, GraniteCardContentComponent, GraniteCardFooterComponent, GraniteCardHeaderComponent, GraniteCardHeaderSubTitleComponent, GraniteCardHeaderTitleComponent, GraniteCardListComponent, GraniteCardListModule, GraniteCheckboxComponent, GraniteCheckboxGroupComponent, GraniteCheckboxModule, GraniteChipComponent, GraniteChipInputDirective, GraniteChipListComponent, GraniteChipSelectionChangeEvent, GraniteChipsModule, GraniteCollapsibleConditionalBodyDirective, GraniteCollapsibleConditionalHeaderDirective, GraniteCollapsibleGroupComponent, GraniteCollapsibleGroupModule, GraniteContactItemComponent, GraniteContactItemTitleComponent, GraniteContactsComponent, GraniteContactsModule, GraniteContactsProfileComponent, GraniteContactsTriggerForDirective, GraniteCoreModule, GraniteCustomAvatarStatusDirective, GraniteCustomProfileDirective, GraniteCustomStatusDirective, GraniteDividerDirective, GraniteEmptyAvatarComponent, GraniteGridComponent, GraniteGridItemComponent, GraniteGridModule, GraniteHideOnOverflowDirective, GraniteIconComponent, GraniteIconModule, GraniteInputFieldComponent, GraniteInputFieldModule, GraniteLabelComponent, GraniteLabelModule, GraniteMenuComponent, GraniteMenuHarness, GraniteMenuItemComponent, GraniteMenuItemHarness, GraniteMenuModule, GraniteMenuTouchCloseComponent, GraniteMenuTouchTitleItemComponent, GraniteMenuTriggerForDirective, GraniteProgressBarComponent, GraniteProgressBarModule, GraniteRadioButtonComponent, GraniteRadioButtonModule, GraniteRadioGroupComponent, GraniteTitleDirective, GraniteTitlePipe, GraniteToggleSwitchComponent, GraniteToggleSwitchModule, PurePipesModule, deviceDesktop, deviceTouch, disabledMixin, graniteMenuDesktopAnimations, graniteMenuTouchAnimations };
|
|
5900
5575
|
//# sourceMappingURL=ifsworld-granite-components.mjs.map
|