@fundamental-ngx/core 0.33.3 → 0.33.4-rc.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/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/upload-collection/upload-collection-item.directive.mjs +81 -8
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/esm2020/upload-collection-item.directive.mjs +81 -8
- package/upload-collection/fesm2015/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/upload-collection/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/upload-collection/fesm2020/fundamental-ngx-core-upload-collection.mjs +80 -7
- package/upload-collection/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/upload-collection/package.json +1 -1
- package/upload-collection/upload-collection-item.directive.d.ts +32 -2
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, ContentChildren, HostBinding, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, Output, ViewChild, ContentChild, NgModule } from '@angular/core';
|
|
2
|
+
import { Directive, ContentChildren, HostBinding, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, Output, ViewChild, ContentChild, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { ObjectMarkerComponent } from '@fundamental-ngx/core/object-marker';
|
|
@@ -274,7 +274,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
274
274
|
}] } });
|
|
275
275
|
|
|
276
276
|
class UploadCollectionItemDirective {
|
|
277
|
-
constructor() {
|
|
277
|
+
constructor(elementRef) {
|
|
278
|
+
this.elementRef = elementRef;
|
|
278
279
|
/** Event emitted when the user changes a file name. */
|
|
279
280
|
this.fileNameChanged = new EventEmitter();
|
|
280
281
|
/** Event emitted when presses the delete button. */
|
|
@@ -284,23 +285,52 @@ class UploadCollectionItemDirective {
|
|
|
284
285
|
}
|
|
285
286
|
/** @hidden */
|
|
286
287
|
ngAfterContentInit() {
|
|
287
|
-
this.
|
|
288
|
+
this.fileNameFull = this.fileName + '.' + this.extension;
|
|
289
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
288
290
|
this._handleDeleteClickedSubscription();
|
|
289
291
|
this._handleOkClickedSubscription();
|
|
290
292
|
this._handleEditClickedSubscription();
|
|
291
293
|
this._handleFormItemInputChangedSubscription();
|
|
292
294
|
}
|
|
293
295
|
/** @hidden */
|
|
296
|
+
ngAfterViewInit() {
|
|
297
|
+
this.onResize();
|
|
298
|
+
}
|
|
299
|
+
/** @hidden */
|
|
294
300
|
ngOnDestroy() {
|
|
295
301
|
this._subscriptions.unsubscribe();
|
|
296
302
|
}
|
|
297
303
|
/** @hidden */
|
|
304
|
+
onResize() {
|
|
305
|
+
if (!this.elementRef.nativeElement.parentElement) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
this.titleWidth = this.getTitleWidth();
|
|
309
|
+
this.containerWidth = this.getContainerWidth();
|
|
310
|
+
// if first load and no previous container width, or if container boundary is resized to smaller than before
|
|
311
|
+
if (!this.previousContainerWidth || this.containerWidth < this.previousContainerWidth) {
|
|
312
|
+
// and the title extends past the container, 1.05x padding to prevent jaggy resizing.
|
|
313
|
+
if (this.titleWidth * 1.05 >= this.containerWidth) {
|
|
314
|
+
this.resizeFileTitle(this._titleDirective.elRef.nativeElement.innerHTML);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
else if (this.previousContainerWidth && this.containerWidth > this.previousContainerWidth) {
|
|
318
|
+
// Looks to expand file title if container width is resized to greater than before
|
|
319
|
+
// reset file title to initial
|
|
320
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
321
|
+
this.resizeFileTitle(this.fileNameFull);
|
|
322
|
+
}
|
|
323
|
+
this.previousContainerWidth = this.containerWidth;
|
|
324
|
+
}
|
|
325
|
+
/** @hidden */
|
|
298
326
|
_handleOkClickedSubscription() {
|
|
299
327
|
this._subscriptions.add(this._buttonGroupComponent.okClicked.subscribe(() => {
|
|
300
328
|
if (this._formItemComponent.fileName && this._formItemComponent.fileName !== '') {
|
|
301
329
|
this.fileName = this._formItemComponent.fileName;
|
|
302
330
|
this._titleDirective.elRef.nativeElement.style.display = 'inline-block';
|
|
303
|
-
this.
|
|
331
|
+
this.fileNameFull = this.fileName + '.' + this.extension;
|
|
332
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
333
|
+
this.resizeFileTitle(this.fileNameFull);
|
|
304
334
|
this._formItemComponent._editMode = false;
|
|
305
335
|
this._buttonGroupComponent._editMode = false;
|
|
306
336
|
this.fileNameChanged.emit(this);
|
|
@@ -342,9 +372,49 @@ class UploadCollectionItemDirective {
|
|
|
342
372
|
this._buttonGroupComponent._okButton.buildComponentCssClass();
|
|
343
373
|
}));
|
|
344
374
|
}
|
|
375
|
+
/** @hidden */
|
|
376
|
+
getTitleWidth() {
|
|
377
|
+
return this._titleDirective.elRef.nativeElement.getBoundingClientRect().width;
|
|
378
|
+
}
|
|
379
|
+
/** @hidden */
|
|
380
|
+
getContainerWidth() {
|
|
381
|
+
return this._titleDirective.elRef.nativeElement.parentElement.getBoundingClientRect().width;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* @hidden
|
|
385
|
+
*
|
|
386
|
+
* truncates the string by cutting out excess length in the middle and replacing with '...'
|
|
387
|
+
*/
|
|
388
|
+
truncateTitle(str) {
|
|
389
|
+
const cutLength = Math.floor(str.length * 0.8);
|
|
390
|
+
if (str.length > cutLength) {
|
|
391
|
+
const stringLeftIndex = Math.floor(cutLength / 2);
|
|
392
|
+
const stringRightIndex = str.length - stringLeftIndex + 3;
|
|
393
|
+
return str.substring(0, stringLeftIndex) + '... ' + str.substring(stringRightIndex, str.length);
|
|
394
|
+
}
|
|
395
|
+
return str;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* @hidden
|
|
399
|
+
*
|
|
400
|
+
* determines if file title needs to be truncated given container constraint.
|
|
401
|
+
*/
|
|
402
|
+
resizeFileTitle(titleStr) {
|
|
403
|
+
let curTitle = titleStr;
|
|
404
|
+
this.containerWidth = this.getContainerWidth();
|
|
405
|
+
this.titleWidth = this.getTitleWidth();
|
|
406
|
+
// repeatedly truncate the title until it fits inside container
|
|
407
|
+
while (this.titleWidth * 1.05 >= this.containerWidth) {
|
|
408
|
+
const truncatedTitleStr = this.truncateTitle(curTitle);
|
|
409
|
+
this._titleDirective.elRef.nativeElement.innerHTML = truncatedTitleStr;
|
|
410
|
+
curTitle = truncatedTitleStr;
|
|
411
|
+
this.titleWidth = this.getTitleWidth();
|
|
412
|
+
this.containerWidth = this.getContainerWidth();
|
|
413
|
+
}
|
|
414
|
+
}
|
|
345
415
|
}
|
|
346
|
-
UploadCollectionItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
347
|
-
UploadCollectionItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.2", type: UploadCollectionItemDirective, selector: "[fd-upload-collection-item]", inputs: { fileName: "fileName", extension: "extension" }, outputs: { fileNameChanged: "fileNameChanged", deleteClicked: "deleteClicked" }, host: { classAttribute: "fd-upload-collection__item" }, queries: [{ propertyName: "_formItemComponent", first: true, predicate: UploadCollectionFormItemComponent, descendants: true }, { propertyName: "_titleDirective", first: true, predicate: UploadCollectionTitleDirective, descendants: true }, { propertyName: "_buttonGroupComponent", first: true, predicate: UploadCollectionButtonGroupComponent, descendants: true }, { propertyName: "_titleContainerDirective", first: true, predicate: UploadCollectionTitleContainerDirective, descendants: true }], ngImport: i0 });
|
|
416
|
+
UploadCollectionItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
417
|
+
UploadCollectionItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.2", type: UploadCollectionItemDirective, selector: "[fd-upload-collection-item]", inputs: { fileName: "fileName", extension: "extension" }, outputs: { fileNameChanged: "fileNameChanged", deleteClicked: "deleteClicked" }, host: { listeners: { "window:resize": "onResize()" }, classAttribute: "fd-upload-collection__item" }, queries: [{ propertyName: "_formItemComponent", first: true, predicate: UploadCollectionFormItemComponent, descendants: true }, { propertyName: "_titleDirective", first: true, predicate: UploadCollectionTitleDirective, descendants: true }, { propertyName: "_buttonGroupComponent", first: true, predicate: UploadCollectionButtonGroupComponent, descendants: true }, { propertyName: "_titleContainerDirective", first: true, predicate: UploadCollectionTitleContainerDirective, descendants: true }], ngImport: i0 });
|
|
348
418
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, decorators: [{
|
|
349
419
|
type: Directive,
|
|
350
420
|
args: [{
|
|
@@ -352,7 +422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
352
422
|
selector: '[fd-upload-collection-item]',
|
|
353
423
|
host: { class: 'fd-upload-collection__item' }
|
|
354
424
|
}]
|
|
355
|
-
}], propDecorators: { fileName: [{
|
|
425
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fileName: [{
|
|
356
426
|
type: Input
|
|
357
427
|
}], extension: [{
|
|
358
428
|
type: Input
|
|
@@ -372,6 +442,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
372
442
|
type: Output
|
|
373
443
|
}], deleteClicked: [{
|
|
374
444
|
type: Output
|
|
445
|
+
}], onResize: [{
|
|
446
|
+
type: HostListener,
|
|
447
|
+
args: ['window:resize', []]
|
|
375
448
|
}] } });
|
|
376
449
|
|
|
377
450
|
class UploadCollectionModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-upload-collection.mjs","sources":["../../../../../libs/core/src/lib/upload-collection/upload-collection-simple.directives.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-item.directive.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.module.ts","../../../../../libs/core/src/lib/upload-collection/fundamental-ngx-core-upload-collection.ts"],"sourcesContent":["import { ContentChildren, Directive, ElementRef, HostBinding, QueryList } from '@angular/core';\nimport { ObjectMarkerComponent } from '@fundamental-ngx/core/object-marker';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-thumbnail]',\n host: { class: 'fd-upload-collection__thumbnail' }\n})\nexport class UploadCollectionThumbnailDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title]',\n host: { class: 'fd-upload-collection__title' }\n})\nexport class UploadCollectionTitleDirective {\n constructor(public elRef: ElementRef) {}\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-description]',\n host: { class: 'fd-upload-collection__description' }\n})\nexport class UploadCollectionDescriptionDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-text-separator], fd-upload-collection-text-separator',\n host: { class: 'fd-upload-collection__text-separator' }\n})\nexport class UploadCollectionTextSeparatorDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-status-group]',\n host: { class: 'fd-upload-collection__status-group' }\n})\nexport class UploadCollectionStatusGroupDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title-container]'\n})\nexport class UploadCollectionTitleContainerDirective {\n /** @hidden */\n @ContentChildren(ObjectMarkerComponent)\n _objectMarkerComponents: QueryList<ObjectMarkerComponent>;\n\n /** Whether or not this is in edit mode. */\n @HostBinding('class.fd-upload-collection__title-container')\n applyContainerClass = true;\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-upload-collection',\n host: { class: 'fd-upload-collection' },\n styleUrls: ['./upload-collection.component.scss'],\n template: `<ul fd-list [byline]=\"true\" [selection]=\"selection\">\n <ng-content></ng-content>\n </ul>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionComponent {\n /** Whether or not this is the small upload collection. */\n @Input()\n @HostBinding('class.fd-upload-collection--sm')\n small = false;\n\n /** Whether or not this upload collection supports selection. */\n @Input()\n selection = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\n\n@Component({\n selector: 'fd-upload-collection-button-group',\n host: { class: 'fd-upload-collection__button-group' },\n templateUrl: './upload-collection-button-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionButtonGroupComponent {\n /** @hidden */\n _editMode = false;\n\n /** Event emitted when the user clicks the edit button. */\n @Output()\n readonly editClicked = new EventEmitter<boolean>();\n\n /** Event emitted when the user clicks the OK button to conform a file name change. */\n @Output()\n readonly okClicked = new EventEmitter<any>();\n\n /** Event emitted when the user clicks the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** Whether or not to allow file name editing. Default is true. */\n @Input()\n allowFileNameEdit = true;\n\n /** Whether or not to show the delete button. Default is true. */\n @Input()\n allowFileDeletion = true;\n\n /** Whether or not to disable the file name edit button. Default is false. */\n @Input()\n disableFileNameEdit = false;\n\n /** Whether or not to disable the delete button. Default is false. */\n @Input()\n disableFileDeletion = false;\n\n /** Text for the 'Ok' button. */\n @Input()\n okText = 'Ok';\n\n /** Text for the 'Cancel' button. */\n @Input()\n cancelText = 'Cancel';\n\n /** Text for the 'Edit' aria-label. */\n @Input()\n editAriaLabel = 'Edit';\n\n /** Text for the 'Delete' aria-label. */\n @Input()\n deleteAriaLabel = 'Delete';\n\n /** Text for the 'Ok' aria-label. */\n @Input()\n okAriaLabel = 'Edit';\n\n /** Text for the 'Cancel' aria-label. */\n @Input()\n cancelAriaLabel = 'Cancel';\n\n /** @hidden */\n @ViewChild('okButton')\n _okButton: ButtonComponent;\n\n /** @hidden */\n _editButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(true);\n this._editMode = true;\n }\n\n /** @hidden */\n _deleteButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.deleteClicked.emit();\n }\n\n /** @hidden */\n _okButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.okClicked.emit();\n }\n\n /** @hidden */\n _cancelButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(false);\n this._editMode = false;\n }\n}\n","<button\n *ngIf=\"!_editMode && allowFileNameEdit\"\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [attr.aria-label]=\"editAriaLabel\"\n></button>\n<button\n *ngIf=\"!_editMode && allowFileDeletion\"\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [attr.aria-label]=\"deleteAriaLabel\"\n></button>\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"okAriaLabel\"\n>\n {{ okText }}\n</button>\n<button\n *ngIf=\"_editMode\"\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"cancelAriaLabel\"\n>\n {{ cancelText }}\n</button>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'fd-upload-collection-form-item',\n host: { class: 'fd-upload-collection__form-item' },\n templateUrl: './upload-collection-form-item.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadCollectionFormItemComponent implements ControlValueAccessor {\n /** Value for the input's placeholder. */\n @Input()\n placeholder = 'Filename';\n\n /** @hidden */\n @Input()\n _editMode = false;\n\n /** @hidden */\n _fileNameValue: string;\n\n /** @hidden */\n _extension: string;\n\n /** Event emitted when the dragged file exits the dropzone. */\n @Output()\n readonly fileNameChanged = new EventEmitter<string>();\n\n /** Get the value of the text input. */\n get fileName(): string {\n return this._fileNameValue;\n }\n\n /** Set the value of the text input. */\n set fileName(value) {\n this._fileNameValue = value;\n this.onChange(value);\n this.onTouched();\n this.fileNameChanged.emit(value);\n }\n\n /** @hidden */\n onChange: (value: string) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n writeValue(value: string): void {\n this.fileName = value;\n }\n\n /** @hidden */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","<input\n *ngIf=\"_editMode\"\n fd-form-control\n required\n style=\"pointer-events: all\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n/>\n<span *ngIf=\"_editMode\" class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n","import { AfterContentInit, ContentChild, Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { Subscription } from 'rxjs';\nimport {\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-item]',\n host: { class: 'fd-upload-collection__item' }\n})\nexport class UploadCollectionItemDirective implements AfterContentInit, OnDestroy {\n /** The name of the file, not including the type extension. */\n @Input()\n fileName: string;\n\n /** The file type extension. */\n @Input()\n extension: string;\n\n /** @hidden */\n @ContentChild(UploadCollectionFormItemComponent)\n _formItemComponent: UploadCollectionFormItemComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleDirective)\n _titleDirective: UploadCollectionTitleDirective;\n\n /** @hidden */\n @ContentChild(UploadCollectionButtonGroupComponent)\n _buttonGroupComponent: UploadCollectionButtonGroupComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleContainerDirective)\n _titleContainerDirective: UploadCollectionTitleContainerDirective;\n\n /** Event emitted when the user changes a file name. */\n @Output()\n readonly fileNameChanged = new EventEmitter<any>();\n\n /** Event emitted when presses the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileName + '.' + this.extension;\n this._handleDeleteClickedSubscription();\n this._handleOkClickedSubscription();\n this._handleEditClickedSubscription();\n this._handleFormItemInputChangedSubscription();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _handleOkClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.okClicked.subscribe(() => {\n if (this._formItemComponent.fileName && this._formItemComponent.fileName !== '') {\n this.fileName = this._formItemComponent.fileName;\n this._titleDirective.elRef.nativeElement.style.display = 'inline-block';\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileName + '.' + this.extension;\n this._formItemComponent._editMode = false;\n this._buttonGroupComponent._editMode = false;\n this.fileNameChanged.emit(this);\n }\n })\n );\n }\n\n /** @hidden */\n private _handleEditClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.editClicked.subscribe((event) => {\n this._formItemComponent._editMode = event;\n if (this._titleContainerDirective) {\n this._titleContainerDirective.applyContainerClass = !event;\n }\n const styles = [];\n styles.push(this._titleDirective.elRef.nativeElement.style);\n this._titleContainerDirective?._objectMarkerComponents?.forEach((objectMarker) => {\n styles.push(objectMarker.elementRef().nativeElement.style);\n });\n event\n ? styles.forEach((style) => (style.display = 'none'))\n : styles.forEach((style) => (style.display = 'inline-block'));\n if (event) {\n this._formItemComponent._extension = this.extension;\n this._formItemComponent.fileName = this.fileName;\n }\n })\n );\n }\n\n /** @hidden */\n private _handleDeleteClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.deleteClicked.subscribe(() => {\n this.deleteClicked.emit(this);\n })\n );\n }\n\n /** @hidden */\n private _handleFormItemInputChangedSubscription(): void {\n this._subscriptions.add(\n this._formItemComponent.fileNameChanged.subscribe((event) => {\n this._buttonGroupComponent._okButton.disabled = event === '';\n this._buttonGroupComponent._okButton.buildComponentCssClass();\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n UploadCollectionDescriptionDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { UploadCollectionComponent } from './upload-collection.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FormsModule } from '@angular/forms';\nimport { FormControlModule } from '@fundamental-ngx/core/form';\nimport { UploadCollectionItemDirective } from './upload-collection-item.directive';\n\n@NgModule({\n declarations: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ],\n imports: [CommonModule, ListModule, ButtonModule, LinkModule, FormsModule, FormControlModule],\n exports: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ]\n})\nexport class UploadCollectionModule {}\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":"fundamental-ngx-core-upload-collection.mjs","sources":["../../../../../libs/core/src/lib/upload-collection/upload-collection-simple.directives.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-item.directive.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.module.ts","../../../../../libs/core/src/lib/upload-collection/fundamental-ngx-core-upload-collection.ts"],"sourcesContent":["import { ContentChildren, Directive, ElementRef, HostBinding, QueryList } from '@angular/core';\nimport { ObjectMarkerComponent } from '@fundamental-ngx/core/object-marker';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-thumbnail]',\n host: { class: 'fd-upload-collection__thumbnail' }\n})\nexport class UploadCollectionThumbnailDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title]',\n host: { class: 'fd-upload-collection__title' }\n})\nexport class UploadCollectionTitleDirective {\n constructor(public elRef: ElementRef) {}\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-description]',\n host: { class: 'fd-upload-collection__description' }\n})\nexport class UploadCollectionDescriptionDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-text-separator], fd-upload-collection-text-separator',\n host: { class: 'fd-upload-collection__text-separator' }\n})\nexport class UploadCollectionTextSeparatorDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-status-group]',\n host: { class: 'fd-upload-collection__status-group' }\n})\nexport class UploadCollectionStatusGroupDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title-container]'\n})\nexport class UploadCollectionTitleContainerDirective {\n /** @hidden */\n @ContentChildren(ObjectMarkerComponent)\n _objectMarkerComponents: QueryList<ObjectMarkerComponent>;\n\n /** Whether or not this is in edit mode. */\n @HostBinding('class.fd-upload-collection__title-container')\n applyContainerClass = true;\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-upload-collection',\n host: { class: 'fd-upload-collection' },\n styleUrls: ['./upload-collection.component.scss'],\n template: `<ul fd-list [byline]=\"true\" [selection]=\"selection\">\n <ng-content></ng-content>\n </ul>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionComponent {\n /** Whether or not this is the small upload collection. */\n @Input()\n @HostBinding('class.fd-upload-collection--sm')\n small = false;\n\n /** Whether or not this upload collection supports selection. */\n @Input()\n selection = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\n\n@Component({\n selector: 'fd-upload-collection-button-group',\n host: { class: 'fd-upload-collection__button-group' },\n templateUrl: './upload-collection-button-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionButtonGroupComponent {\n /** @hidden */\n _editMode = false;\n\n /** Event emitted when the user clicks the edit button. */\n @Output()\n readonly editClicked = new EventEmitter<boolean>();\n\n /** Event emitted when the user clicks the OK button to conform a file name change. */\n @Output()\n readonly okClicked = new EventEmitter<any>();\n\n /** Event emitted when the user clicks the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** Whether or not to allow file name editing. Default is true. */\n @Input()\n allowFileNameEdit = true;\n\n /** Whether or not to show the delete button. Default is true. */\n @Input()\n allowFileDeletion = true;\n\n /** Whether or not to disable the file name edit button. Default is false. */\n @Input()\n disableFileNameEdit = false;\n\n /** Whether or not to disable the delete button. Default is false. */\n @Input()\n disableFileDeletion = false;\n\n /** Text for the 'Ok' button. */\n @Input()\n okText = 'Ok';\n\n /** Text for the 'Cancel' button. */\n @Input()\n cancelText = 'Cancel';\n\n /** Text for the 'Edit' aria-label. */\n @Input()\n editAriaLabel = 'Edit';\n\n /** Text for the 'Delete' aria-label. */\n @Input()\n deleteAriaLabel = 'Delete';\n\n /** Text for the 'Ok' aria-label. */\n @Input()\n okAriaLabel = 'Edit';\n\n /** Text for the 'Cancel' aria-label. */\n @Input()\n cancelAriaLabel = 'Cancel';\n\n /** @hidden */\n @ViewChild('okButton')\n _okButton: ButtonComponent;\n\n /** @hidden */\n _editButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(true);\n this._editMode = true;\n }\n\n /** @hidden */\n _deleteButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.deleteClicked.emit();\n }\n\n /** @hidden */\n _okButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.okClicked.emit();\n }\n\n /** @hidden */\n _cancelButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(false);\n this._editMode = false;\n }\n}\n","<button\n *ngIf=\"!_editMode && allowFileNameEdit\"\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [attr.aria-label]=\"editAriaLabel\"\n></button>\n<button\n *ngIf=\"!_editMode && allowFileDeletion\"\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [attr.aria-label]=\"deleteAriaLabel\"\n></button>\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"okAriaLabel\"\n>\n {{ okText }}\n</button>\n<button\n *ngIf=\"_editMode\"\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"cancelAriaLabel\"\n>\n {{ cancelText }}\n</button>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'fd-upload-collection-form-item',\n host: { class: 'fd-upload-collection__form-item' },\n templateUrl: './upload-collection-form-item.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadCollectionFormItemComponent implements ControlValueAccessor {\n /** Value for the input's placeholder. */\n @Input()\n placeholder = 'Filename';\n\n /** @hidden */\n @Input()\n _editMode = false;\n\n /** @hidden */\n _fileNameValue: string;\n\n /** @hidden */\n _extension: string;\n\n /** Event emitted when the dragged file exits the dropzone. */\n @Output()\n readonly fileNameChanged = new EventEmitter<string>();\n\n /** Get the value of the text input. */\n get fileName(): string {\n return this._fileNameValue;\n }\n\n /** Set the value of the text input. */\n set fileName(value) {\n this._fileNameValue = value;\n this.onChange(value);\n this.onTouched();\n this.fileNameChanged.emit(value);\n }\n\n /** @hidden */\n onChange: (value: string) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n writeValue(value: string): void {\n this.fileName = value;\n }\n\n /** @hidden */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","<input\n *ngIf=\"_editMode\"\n fd-form-control\n required\n style=\"pointer-events: all\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n/>\n<span *ngIf=\"_editMode\" class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n","import {\n AfterContentInit,\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output\n} from '@angular/core';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { Subscription } from 'rxjs';\nimport {\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-item]',\n host: { class: 'fd-upload-collection__item' }\n})\nexport class UploadCollectionItemDirective implements AfterContentInit, OnDestroy, AfterViewInit {\n /** The name of the file, not including the type extension. */\n @Input()\n fileName: string;\n\n /** The file type extension. */\n @Input()\n extension: string;\n\n /** @hidden */\n @ContentChild(UploadCollectionFormItemComponent)\n _formItemComponent: UploadCollectionFormItemComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleDirective)\n _titleDirective: UploadCollectionTitleDirective;\n\n /** @hidden */\n @ContentChild(UploadCollectionButtonGroupComponent)\n _buttonGroupComponent: UploadCollectionButtonGroupComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleContainerDirective)\n _titleContainerDirective: UploadCollectionTitleContainerDirective;\n\n /** Event emitted when the user changes a file name. */\n @Output()\n readonly fileNameChanged = new EventEmitter<any>();\n\n /** Event emitted when presses the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n fileNameFull: string;\n\n /** @hidden */\n titleWidth: number;\n\n /** @hidden used to compare to the current width to know whether to collapse or expand title */\n previousContainerWidth: number;\n\n /** @hidden */\n containerWidth: number;\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.fileNameFull = this.fileName + '.' + this.extension;\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;\n this._handleDeleteClickedSubscription();\n this._handleOkClickedSubscription();\n this._handleEditClickedSubscription();\n this._handleFormItemInputChangedSubscription();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.onResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n constructor(public elementRef: ElementRef) {}\n\n /** @hidden */\n @HostListener('window:resize', [])\n onResize(): void {\n if (!this.elementRef.nativeElement.parentElement) {\n return;\n }\n this.titleWidth = this.getTitleWidth();\n this.containerWidth = this.getContainerWidth();\n\n // if first load and no previous container width, or if container boundary is resized to smaller than before\n if (!this.previousContainerWidth || this.containerWidth < this.previousContainerWidth) {\n // and the title extends past the container, 1.05x padding to prevent jaggy resizing.\n if (this.titleWidth * 1.05 >= this.containerWidth) {\n this.resizeFileTitle(this._titleDirective.elRef.nativeElement.innerHTML);\n }\n } else if (this.previousContainerWidth && this.containerWidth > this.previousContainerWidth) {\n // Looks to expand file title if container width is resized to greater than before\n // reset file title to initial\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;\n this.resizeFileTitle(this.fileNameFull);\n }\n\n this.previousContainerWidth = this.containerWidth;\n }\n\n /** @hidden */\n private _handleOkClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.okClicked.subscribe(() => {\n if (this._formItemComponent.fileName && this._formItemComponent.fileName !== '') {\n this.fileName = this._formItemComponent.fileName;\n this._titleDirective.elRef.nativeElement.style.display = 'inline-block';\n this.fileNameFull = this.fileName + '.' + this.extension;\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;\n this.resizeFileTitle(this.fileNameFull);\n this._formItemComponent._editMode = false;\n this._buttonGroupComponent._editMode = false;\n this.fileNameChanged.emit(this);\n }\n })\n );\n }\n\n /** @hidden */\n private _handleEditClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.editClicked.subscribe((event) => {\n this._formItemComponent._editMode = event;\n if (this._titleContainerDirective) {\n this._titleContainerDirective.applyContainerClass = !event;\n }\n const styles = [];\n styles.push(this._titleDirective.elRef.nativeElement.style);\n this._titleContainerDirective?._objectMarkerComponents?.forEach((objectMarker) => {\n styles.push(objectMarker.elementRef().nativeElement.style);\n });\n event\n ? styles.forEach((style) => (style.display = 'none'))\n : styles.forEach((style) => (style.display = 'inline-block'));\n if (event) {\n this._formItemComponent._extension = this.extension;\n this._formItemComponent.fileName = this.fileName;\n }\n })\n );\n }\n\n /** @hidden */\n private _handleDeleteClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.deleteClicked.subscribe(() => {\n this.deleteClicked.emit(this);\n })\n );\n }\n\n /** @hidden */\n private _handleFormItemInputChangedSubscription(): void {\n this._subscriptions.add(\n this._formItemComponent.fileNameChanged.subscribe((event) => {\n this._buttonGroupComponent._okButton.disabled = event === '';\n this._buttonGroupComponent._okButton.buildComponentCssClass();\n })\n );\n }\n\n /** @hidden */\n private getTitleWidth(): number {\n return this._titleDirective.elRef.nativeElement.getBoundingClientRect().width;\n }\n\n /** @hidden */\n private getContainerWidth(): number {\n return this._titleDirective.elRef.nativeElement.parentElement.getBoundingClientRect().width;\n }\n\n /**\n * @hidden\n *\n * truncates the string by cutting out excess length in the middle and replacing with '...'\n */\n private truncateTitle(str: string): string {\n const cutLength = Math.floor(str.length * 0.8);\n\n if (str.length > cutLength) {\n const stringLeftIndex = Math.floor(cutLength / 2);\n const stringRightIndex = str.length - stringLeftIndex + 3;\n return str.substring(0, stringLeftIndex) + '... ' + str.substring(stringRightIndex, str.length);\n }\n return str;\n }\n\n /**\n * @hidden\n *\n * determines if file title needs to be truncated given container constraint.\n */\n private resizeFileTitle(titleStr: string): void {\n let curTitle = titleStr;\n this.containerWidth = this.getContainerWidth();\n this.titleWidth = this.getTitleWidth();\n\n // repeatedly truncate the title until it fits inside container\n while (this.titleWidth * 1.05 >= this.containerWidth) {\n const truncatedTitleStr = this.truncateTitle(curTitle);\n this._titleDirective.elRef.nativeElement.innerHTML = truncatedTitleStr;\n curTitle = truncatedTitleStr;\n this.titleWidth = this.getTitleWidth();\n this.containerWidth = this.getContainerWidth();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n UploadCollectionDescriptionDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { UploadCollectionComponent } from './upload-collection.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FormsModule } from '@angular/forms';\nimport { FormControlModule } from '@fundamental-ngx/core/form';\nimport { UploadCollectionItemDirective } from './upload-collection-item.directive';\n\n@NgModule({\n declarations: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ],\n imports: [CommonModule, ListModule, ButtonModule, LinkModule, FormsModule, FormControlModule],\n exports: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ]\n})\nexport class UploadCollectionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, ContentChildren, HostBinding, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, Output, ViewChild, ContentChild, NgModule } from '@angular/core';
|
|
2
|
+
import { Directive, ContentChildren, HostBinding, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, Output, ViewChild, ContentChild, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { ObjectMarkerComponent } from '@fundamental-ngx/core/object-marker';
|
|
@@ -274,7 +274,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
274
274
|
}] } });
|
|
275
275
|
|
|
276
276
|
class UploadCollectionItemDirective {
|
|
277
|
-
constructor() {
|
|
277
|
+
constructor(elementRef) {
|
|
278
|
+
this.elementRef = elementRef;
|
|
278
279
|
/** Event emitted when the user changes a file name. */
|
|
279
280
|
this.fileNameChanged = new EventEmitter();
|
|
280
281
|
/** Event emitted when presses the delete button. */
|
|
@@ -284,23 +285,52 @@ class UploadCollectionItemDirective {
|
|
|
284
285
|
}
|
|
285
286
|
/** @hidden */
|
|
286
287
|
ngAfterContentInit() {
|
|
287
|
-
this.
|
|
288
|
+
this.fileNameFull = this.fileName + '.' + this.extension;
|
|
289
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
288
290
|
this._handleDeleteClickedSubscription();
|
|
289
291
|
this._handleOkClickedSubscription();
|
|
290
292
|
this._handleEditClickedSubscription();
|
|
291
293
|
this._handleFormItemInputChangedSubscription();
|
|
292
294
|
}
|
|
293
295
|
/** @hidden */
|
|
296
|
+
ngAfterViewInit() {
|
|
297
|
+
this.onResize();
|
|
298
|
+
}
|
|
299
|
+
/** @hidden */
|
|
294
300
|
ngOnDestroy() {
|
|
295
301
|
this._subscriptions.unsubscribe();
|
|
296
302
|
}
|
|
297
303
|
/** @hidden */
|
|
304
|
+
onResize() {
|
|
305
|
+
if (!this.elementRef.nativeElement.parentElement) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
this.titleWidth = this.getTitleWidth();
|
|
309
|
+
this.containerWidth = this.getContainerWidth();
|
|
310
|
+
// if first load and no previous container width, or if container boundary is resized to smaller than before
|
|
311
|
+
if (!this.previousContainerWidth || this.containerWidth < this.previousContainerWidth) {
|
|
312
|
+
// and the title extends past the container, 1.05x padding to prevent jaggy resizing.
|
|
313
|
+
if (this.titleWidth * 1.05 >= this.containerWidth) {
|
|
314
|
+
this.resizeFileTitle(this._titleDirective.elRef.nativeElement.innerHTML);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
else if (this.previousContainerWidth && this.containerWidth > this.previousContainerWidth) {
|
|
318
|
+
// Looks to expand file title if container width is resized to greater than before
|
|
319
|
+
// reset file title to initial
|
|
320
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
321
|
+
this.resizeFileTitle(this.fileNameFull);
|
|
322
|
+
}
|
|
323
|
+
this.previousContainerWidth = this.containerWidth;
|
|
324
|
+
}
|
|
325
|
+
/** @hidden */
|
|
298
326
|
_handleOkClickedSubscription() {
|
|
299
327
|
this._subscriptions.add(this._buttonGroupComponent.okClicked.subscribe(() => {
|
|
300
328
|
if (this._formItemComponent.fileName && this._formItemComponent.fileName !== '') {
|
|
301
329
|
this.fileName = this._formItemComponent.fileName;
|
|
302
330
|
this._titleDirective.elRef.nativeElement.style.display = 'inline-block';
|
|
303
|
-
this.
|
|
331
|
+
this.fileNameFull = this.fileName + '.' + this.extension;
|
|
332
|
+
this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;
|
|
333
|
+
this.resizeFileTitle(this.fileNameFull);
|
|
304
334
|
this._formItemComponent._editMode = false;
|
|
305
335
|
this._buttonGroupComponent._editMode = false;
|
|
306
336
|
this.fileNameChanged.emit(this);
|
|
@@ -341,9 +371,49 @@ class UploadCollectionItemDirective {
|
|
|
341
371
|
this._buttonGroupComponent._okButton.buildComponentCssClass();
|
|
342
372
|
}));
|
|
343
373
|
}
|
|
374
|
+
/** @hidden */
|
|
375
|
+
getTitleWidth() {
|
|
376
|
+
return this._titleDirective.elRef.nativeElement.getBoundingClientRect().width;
|
|
377
|
+
}
|
|
378
|
+
/** @hidden */
|
|
379
|
+
getContainerWidth() {
|
|
380
|
+
return this._titleDirective.elRef.nativeElement.parentElement.getBoundingClientRect().width;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* @hidden
|
|
384
|
+
*
|
|
385
|
+
* truncates the string by cutting out excess length in the middle and replacing with '...'
|
|
386
|
+
*/
|
|
387
|
+
truncateTitle(str) {
|
|
388
|
+
const cutLength = Math.floor(str.length * 0.8);
|
|
389
|
+
if (str.length > cutLength) {
|
|
390
|
+
const stringLeftIndex = Math.floor(cutLength / 2);
|
|
391
|
+
const stringRightIndex = str.length - stringLeftIndex + 3;
|
|
392
|
+
return str.substring(0, stringLeftIndex) + '... ' + str.substring(stringRightIndex, str.length);
|
|
393
|
+
}
|
|
394
|
+
return str;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* @hidden
|
|
398
|
+
*
|
|
399
|
+
* determines if file title needs to be truncated given container constraint.
|
|
400
|
+
*/
|
|
401
|
+
resizeFileTitle(titleStr) {
|
|
402
|
+
let curTitle = titleStr;
|
|
403
|
+
this.containerWidth = this.getContainerWidth();
|
|
404
|
+
this.titleWidth = this.getTitleWidth();
|
|
405
|
+
// repeatedly truncate the title until it fits inside container
|
|
406
|
+
while (this.titleWidth * 1.05 >= this.containerWidth) {
|
|
407
|
+
const truncatedTitleStr = this.truncateTitle(curTitle);
|
|
408
|
+
this._titleDirective.elRef.nativeElement.innerHTML = truncatedTitleStr;
|
|
409
|
+
curTitle = truncatedTitleStr;
|
|
410
|
+
this.titleWidth = this.getTitleWidth();
|
|
411
|
+
this.containerWidth = this.getContainerWidth();
|
|
412
|
+
}
|
|
413
|
+
}
|
|
344
414
|
}
|
|
345
|
-
UploadCollectionItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
346
|
-
UploadCollectionItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.2", type: UploadCollectionItemDirective, selector: "[fd-upload-collection-item]", inputs: { fileName: "fileName", extension: "extension" }, outputs: { fileNameChanged: "fileNameChanged", deleteClicked: "deleteClicked" }, host: { classAttribute: "fd-upload-collection__item" }, queries: [{ propertyName: "_formItemComponent", first: true, predicate: UploadCollectionFormItemComponent, descendants: true }, { propertyName: "_titleDirective", first: true, predicate: UploadCollectionTitleDirective, descendants: true }, { propertyName: "_buttonGroupComponent", first: true, predicate: UploadCollectionButtonGroupComponent, descendants: true }, { propertyName: "_titleContainerDirective", first: true, predicate: UploadCollectionTitleContainerDirective, descendants: true }], ngImport: i0 });
|
|
415
|
+
UploadCollectionItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
416
|
+
UploadCollectionItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.2", type: UploadCollectionItemDirective, selector: "[fd-upload-collection-item]", inputs: { fileName: "fileName", extension: "extension" }, outputs: { fileNameChanged: "fileNameChanged", deleteClicked: "deleteClicked" }, host: { listeners: { "window:resize": "onResize()" }, classAttribute: "fd-upload-collection__item" }, queries: [{ propertyName: "_formItemComponent", first: true, predicate: UploadCollectionFormItemComponent, descendants: true }, { propertyName: "_titleDirective", first: true, predicate: UploadCollectionTitleDirective, descendants: true }, { propertyName: "_buttonGroupComponent", first: true, predicate: UploadCollectionButtonGroupComponent, descendants: true }, { propertyName: "_titleContainerDirective", first: true, predicate: UploadCollectionTitleContainerDirective, descendants: true }], ngImport: i0 });
|
|
347
417
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: UploadCollectionItemDirective, decorators: [{
|
|
348
418
|
type: Directive,
|
|
349
419
|
args: [{
|
|
@@ -351,7 +421,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
351
421
|
selector: '[fd-upload-collection-item]',
|
|
352
422
|
host: { class: 'fd-upload-collection__item' }
|
|
353
423
|
}]
|
|
354
|
-
}], propDecorators: { fileName: [{
|
|
424
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fileName: [{
|
|
355
425
|
type: Input
|
|
356
426
|
}], extension: [{
|
|
357
427
|
type: Input
|
|
@@ -371,6 +441,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
371
441
|
type: Output
|
|
372
442
|
}], deleteClicked: [{
|
|
373
443
|
type: Output
|
|
444
|
+
}], onResize: [{
|
|
445
|
+
type: HostListener,
|
|
446
|
+
args: ['window:resize', []]
|
|
374
447
|
}] } });
|
|
375
448
|
|
|
376
449
|
class UploadCollectionModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-upload-collection.mjs","sources":["../../../../../libs/core/src/lib/upload-collection/upload-collection-simple.directives.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-item.directive.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.module.ts","../../../../../libs/core/src/lib/upload-collection/fundamental-ngx-core-upload-collection.ts"],"sourcesContent":["import { ContentChildren, Directive, ElementRef, HostBinding, QueryList } from '@angular/core';\nimport { ObjectMarkerComponent } from '@fundamental-ngx/core/object-marker';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-thumbnail]',\n host: { class: 'fd-upload-collection__thumbnail' }\n})\nexport class UploadCollectionThumbnailDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title]',\n host: { class: 'fd-upload-collection__title' }\n})\nexport class UploadCollectionTitleDirective {\n constructor(public elRef: ElementRef) {}\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-description]',\n host: { class: 'fd-upload-collection__description' }\n})\nexport class UploadCollectionDescriptionDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-text-separator], fd-upload-collection-text-separator',\n host: { class: 'fd-upload-collection__text-separator' }\n})\nexport class UploadCollectionTextSeparatorDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-status-group]',\n host: { class: 'fd-upload-collection__status-group' }\n})\nexport class UploadCollectionStatusGroupDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title-container]'\n})\nexport class UploadCollectionTitleContainerDirective {\n /** @hidden */\n @ContentChildren(ObjectMarkerComponent)\n _objectMarkerComponents: QueryList<ObjectMarkerComponent>;\n\n /** Whether or not this is in edit mode. */\n @HostBinding('class.fd-upload-collection__title-container')\n applyContainerClass = true;\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-upload-collection',\n host: { class: 'fd-upload-collection' },\n styleUrls: ['./upload-collection.component.scss'],\n template: `<ul fd-list [byline]=\"true\" [selection]=\"selection\">\n <ng-content></ng-content>\n </ul>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionComponent {\n /** Whether or not this is the small upload collection. */\n @Input()\n @HostBinding('class.fd-upload-collection--sm')\n small = false;\n\n /** Whether or not this upload collection supports selection. */\n @Input()\n selection = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\n\n@Component({\n selector: 'fd-upload-collection-button-group',\n host: { class: 'fd-upload-collection__button-group' },\n templateUrl: './upload-collection-button-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionButtonGroupComponent {\n /** @hidden */\n _editMode = false;\n\n /** Event emitted when the user clicks the edit button. */\n @Output()\n readonly editClicked = new EventEmitter<boolean>();\n\n /** Event emitted when the user clicks the OK button to conform a file name change. */\n @Output()\n readonly okClicked = new EventEmitter<any>();\n\n /** Event emitted when the user clicks the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** Whether or not to allow file name editing. Default is true. */\n @Input()\n allowFileNameEdit = true;\n\n /** Whether or not to show the delete button. Default is true. */\n @Input()\n allowFileDeletion = true;\n\n /** Whether or not to disable the file name edit button. Default is false. */\n @Input()\n disableFileNameEdit = false;\n\n /** Whether or not to disable the delete button. Default is false. */\n @Input()\n disableFileDeletion = false;\n\n /** Text for the 'Ok' button. */\n @Input()\n okText = 'Ok';\n\n /** Text for the 'Cancel' button. */\n @Input()\n cancelText = 'Cancel';\n\n /** Text for the 'Edit' aria-label. */\n @Input()\n editAriaLabel = 'Edit';\n\n /** Text for the 'Delete' aria-label. */\n @Input()\n deleteAriaLabel = 'Delete';\n\n /** Text for the 'Ok' aria-label. */\n @Input()\n okAriaLabel = 'Edit';\n\n /** Text for the 'Cancel' aria-label. */\n @Input()\n cancelAriaLabel = 'Cancel';\n\n /** @hidden */\n @ViewChild('okButton')\n _okButton: ButtonComponent;\n\n /** @hidden */\n _editButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(true);\n this._editMode = true;\n }\n\n /** @hidden */\n _deleteButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.deleteClicked.emit();\n }\n\n /** @hidden */\n _okButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.okClicked.emit();\n }\n\n /** @hidden */\n _cancelButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(false);\n this._editMode = false;\n }\n}\n","<button\n *ngIf=\"!_editMode && allowFileNameEdit\"\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [attr.aria-label]=\"editAriaLabel\"\n></button>\n<button\n *ngIf=\"!_editMode && allowFileDeletion\"\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [attr.aria-label]=\"deleteAriaLabel\"\n></button>\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"okAriaLabel\"\n>\n {{ okText }}\n</button>\n<button\n *ngIf=\"_editMode\"\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"cancelAriaLabel\"\n>\n {{ cancelText }}\n</button>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'fd-upload-collection-form-item',\n host: { class: 'fd-upload-collection__form-item' },\n templateUrl: './upload-collection-form-item.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadCollectionFormItemComponent implements ControlValueAccessor {\n /** Value for the input's placeholder. */\n @Input()\n placeholder = 'Filename';\n\n /** @hidden */\n @Input()\n _editMode = false;\n\n /** @hidden */\n _fileNameValue: string;\n\n /** @hidden */\n _extension: string;\n\n /** Event emitted when the dragged file exits the dropzone. */\n @Output()\n readonly fileNameChanged = new EventEmitter<string>();\n\n /** Get the value of the text input. */\n get fileName(): string {\n return this._fileNameValue;\n }\n\n /** Set the value of the text input. */\n set fileName(value) {\n this._fileNameValue = value;\n this.onChange(value);\n this.onTouched();\n this.fileNameChanged.emit(value);\n }\n\n /** @hidden */\n onChange: (value: string) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n writeValue(value: string): void {\n this.fileName = value;\n }\n\n /** @hidden */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","<input\n *ngIf=\"_editMode\"\n fd-form-control\n required\n style=\"pointer-events: all\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n/>\n<span *ngIf=\"_editMode\" class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n","import { AfterContentInit, ContentChild, Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { Subscription } from 'rxjs';\nimport {\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-item]',\n host: { class: 'fd-upload-collection__item' }\n})\nexport class UploadCollectionItemDirective implements AfterContentInit, OnDestroy {\n /** The name of the file, not including the type extension. */\n @Input()\n fileName: string;\n\n /** The file type extension. */\n @Input()\n extension: string;\n\n /** @hidden */\n @ContentChild(UploadCollectionFormItemComponent)\n _formItemComponent: UploadCollectionFormItemComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleDirective)\n _titleDirective: UploadCollectionTitleDirective;\n\n /** @hidden */\n @ContentChild(UploadCollectionButtonGroupComponent)\n _buttonGroupComponent: UploadCollectionButtonGroupComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleContainerDirective)\n _titleContainerDirective: UploadCollectionTitleContainerDirective;\n\n /** Event emitted when the user changes a file name. */\n @Output()\n readonly fileNameChanged = new EventEmitter<any>();\n\n /** Event emitted when presses the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileName + '.' + this.extension;\n this._handleDeleteClickedSubscription();\n this._handleOkClickedSubscription();\n this._handleEditClickedSubscription();\n this._handleFormItemInputChangedSubscription();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _handleOkClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.okClicked.subscribe(() => {\n if (this._formItemComponent.fileName && this._formItemComponent.fileName !== '') {\n this.fileName = this._formItemComponent.fileName;\n this._titleDirective.elRef.nativeElement.style.display = 'inline-block';\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileName + '.' + this.extension;\n this._formItemComponent._editMode = false;\n this._buttonGroupComponent._editMode = false;\n this.fileNameChanged.emit(this);\n }\n })\n );\n }\n\n /** @hidden */\n private _handleEditClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.editClicked.subscribe((event) => {\n this._formItemComponent._editMode = event;\n if (this._titleContainerDirective) {\n this._titleContainerDirective.applyContainerClass = !event;\n }\n const styles = [];\n styles.push(this._titleDirective.elRef.nativeElement.style);\n this._titleContainerDirective?._objectMarkerComponents?.forEach((objectMarker) => {\n styles.push(objectMarker.elementRef().nativeElement.style);\n });\n event\n ? styles.forEach((style) => (style.display = 'none'))\n : styles.forEach((style) => (style.display = 'inline-block'));\n if (event) {\n this._formItemComponent._extension = this.extension;\n this._formItemComponent.fileName = this.fileName;\n }\n })\n );\n }\n\n /** @hidden */\n private _handleDeleteClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.deleteClicked.subscribe(() => {\n this.deleteClicked.emit(this);\n })\n );\n }\n\n /** @hidden */\n private _handleFormItemInputChangedSubscription(): void {\n this._subscriptions.add(\n this._formItemComponent.fileNameChanged.subscribe((event) => {\n this._buttonGroupComponent._okButton.disabled = event === '';\n this._buttonGroupComponent._okButton.buildComponentCssClass();\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n UploadCollectionDescriptionDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { UploadCollectionComponent } from './upload-collection.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FormsModule } from '@angular/forms';\nimport { FormControlModule } from '@fundamental-ngx/core/form';\nimport { UploadCollectionItemDirective } from './upload-collection-item.directive';\n\n@NgModule({\n declarations: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ],\n imports: [CommonModule, ListModule, ButtonModule, LinkModule, FormsModule, FormControlModule],\n exports: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ]\n})\nexport class UploadCollectionModule {}\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":"fundamental-ngx-core-upload-collection.mjs","sources":["../../../../../libs/core/src/lib/upload-collection/upload-collection-simple.directives.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-button-group/upload-collection-button-group.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection-form-item/upload-collection-form-item.component.html","../../../../../libs/core/src/lib/upload-collection/upload-collection-item.directive.ts","../../../../../libs/core/src/lib/upload-collection/upload-collection.module.ts","../../../../../libs/core/src/lib/upload-collection/fundamental-ngx-core-upload-collection.ts"],"sourcesContent":["import { ContentChildren, Directive, ElementRef, HostBinding, QueryList } from '@angular/core';\nimport { ObjectMarkerComponent } from '@fundamental-ngx/core/object-marker';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-thumbnail]',\n host: { class: 'fd-upload-collection__thumbnail' }\n})\nexport class UploadCollectionThumbnailDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title]',\n host: { class: 'fd-upload-collection__title' }\n})\nexport class UploadCollectionTitleDirective {\n constructor(public elRef: ElementRef) {}\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-description]',\n host: { class: 'fd-upload-collection__description' }\n})\nexport class UploadCollectionDescriptionDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-text-separator], fd-upload-collection-text-separator',\n host: { class: 'fd-upload-collection__text-separator' }\n})\nexport class UploadCollectionTextSeparatorDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-status-group]',\n host: { class: 'fd-upload-collection__status-group' }\n})\nexport class UploadCollectionStatusGroupDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-title-container]'\n})\nexport class UploadCollectionTitleContainerDirective {\n /** @hidden */\n @ContentChildren(ObjectMarkerComponent)\n _objectMarkerComponents: QueryList<ObjectMarkerComponent>;\n\n /** Whether or not this is in edit mode. */\n @HostBinding('class.fd-upload-collection__title-container')\n applyContainerClass = true;\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-upload-collection',\n host: { class: 'fd-upload-collection' },\n styleUrls: ['./upload-collection.component.scss'],\n template: `<ul fd-list [byline]=\"true\" [selection]=\"selection\">\n <ng-content></ng-content>\n </ul>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionComponent {\n /** Whether or not this is the small upload collection. */\n @Input()\n @HostBinding('class.fd-upload-collection--sm')\n small = false;\n\n /** Whether or not this upload collection supports selection. */\n @Input()\n selection = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\n\n@Component({\n selector: 'fd-upload-collection-button-group',\n host: { class: 'fd-upload-collection__button-group' },\n templateUrl: './upload-collection-button-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadCollectionButtonGroupComponent {\n /** @hidden */\n _editMode = false;\n\n /** Event emitted when the user clicks the edit button. */\n @Output()\n readonly editClicked = new EventEmitter<boolean>();\n\n /** Event emitted when the user clicks the OK button to conform a file name change. */\n @Output()\n readonly okClicked = new EventEmitter<any>();\n\n /** Event emitted when the user clicks the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** Whether or not to allow file name editing. Default is true. */\n @Input()\n allowFileNameEdit = true;\n\n /** Whether or not to show the delete button. Default is true. */\n @Input()\n allowFileDeletion = true;\n\n /** Whether or not to disable the file name edit button. Default is false. */\n @Input()\n disableFileNameEdit = false;\n\n /** Whether or not to disable the delete button. Default is false. */\n @Input()\n disableFileDeletion = false;\n\n /** Text for the 'Ok' button. */\n @Input()\n okText = 'Ok';\n\n /** Text for the 'Cancel' button. */\n @Input()\n cancelText = 'Cancel';\n\n /** Text for the 'Edit' aria-label. */\n @Input()\n editAriaLabel = 'Edit';\n\n /** Text for the 'Delete' aria-label. */\n @Input()\n deleteAriaLabel = 'Delete';\n\n /** Text for the 'Ok' aria-label. */\n @Input()\n okAriaLabel = 'Edit';\n\n /** Text for the 'Cancel' aria-label. */\n @Input()\n cancelAriaLabel = 'Cancel';\n\n /** @hidden */\n @ViewChild('okButton')\n _okButton: ButtonComponent;\n\n /** @hidden */\n _editButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(true);\n this._editMode = true;\n }\n\n /** @hidden */\n _deleteButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.deleteClicked.emit();\n }\n\n /** @hidden */\n _okButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.okClicked.emit();\n }\n\n /** @hidden */\n _cancelButtonClicked(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.editClicked.emit(false);\n this._editMode = false;\n }\n}\n","<button\n *ngIf=\"!_editMode && allowFileNameEdit\"\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [attr.aria-label]=\"editAriaLabel\"\n></button>\n<button\n *ngIf=\"!_editMode && allowFileDeletion\"\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [attr.aria-label]=\"deleteAriaLabel\"\n></button>\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"okAriaLabel\"\n>\n {{ okText }}\n</button>\n<button\n *ngIf=\"_editMode\"\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"cancelAriaLabel\"\n>\n {{ cancelText }}\n</button>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'fd-upload-collection-form-item',\n host: { class: 'fd-upload-collection__form-item' },\n templateUrl: './upload-collection-form-item.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadCollectionFormItemComponent implements ControlValueAccessor {\n /** Value for the input's placeholder. */\n @Input()\n placeholder = 'Filename';\n\n /** @hidden */\n @Input()\n _editMode = false;\n\n /** @hidden */\n _fileNameValue: string;\n\n /** @hidden */\n _extension: string;\n\n /** Event emitted when the dragged file exits the dropzone. */\n @Output()\n readonly fileNameChanged = new EventEmitter<string>();\n\n /** Get the value of the text input. */\n get fileName(): string {\n return this._fileNameValue;\n }\n\n /** Set the value of the text input. */\n set fileName(value) {\n this._fileNameValue = value;\n this.onChange(value);\n this.onTouched();\n this.fileNameChanged.emit(value);\n }\n\n /** @hidden */\n onChange: (value: string) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n writeValue(value: string): void {\n this.fileName = value;\n }\n\n /** @hidden */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","<input\n *ngIf=\"_editMode\"\n fd-form-control\n required\n style=\"pointer-events: all\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"placeholder\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n/>\n<span *ngIf=\"_editMode\" class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n","import {\n AfterContentInit,\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output\n} from '@angular/core';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { Subscription } from 'rxjs';\nimport {\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-upload-collection-item]',\n host: { class: 'fd-upload-collection__item' }\n})\nexport class UploadCollectionItemDirective implements AfterContentInit, OnDestroy, AfterViewInit {\n /** The name of the file, not including the type extension. */\n @Input()\n fileName: string;\n\n /** The file type extension. */\n @Input()\n extension: string;\n\n /** @hidden */\n @ContentChild(UploadCollectionFormItemComponent)\n _formItemComponent: UploadCollectionFormItemComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleDirective)\n _titleDirective: UploadCollectionTitleDirective;\n\n /** @hidden */\n @ContentChild(UploadCollectionButtonGroupComponent)\n _buttonGroupComponent: UploadCollectionButtonGroupComponent;\n\n /** @hidden */\n @ContentChild(UploadCollectionTitleContainerDirective)\n _titleContainerDirective: UploadCollectionTitleContainerDirective;\n\n /** Event emitted when the user changes a file name. */\n @Output()\n readonly fileNameChanged = new EventEmitter<any>();\n\n /** Event emitted when presses the delete button. */\n @Output()\n readonly deleteClicked = new EventEmitter<any>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n fileNameFull: string;\n\n /** @hidden */\n titleWidth: number;\n\n /** @hidden used to compare to the current width to know whether to collapse or expand title */\n previousContainerWidth: number;\n\n /** @hidden */\n containerWidth: number;\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.fileNameFull = this.fileName + '.' + this.extension;\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;\n this._handleDeleteClickedSubscription();\n this._handleOkClickedSubscription();\n this._handleEditClickedSubscription();\n this._handleFormItemInputChangedSubscription();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.onResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n constructor(public elementRef: ElementRef) {}\n\n /** @hidden */\n @HostListener('window:resize', [])\n onResize(): void {\n if (!this.elementRef.nativeElement.parentElement) {\n return;\n }\n this.titleWidth = this.getTitleWidth();\n this.containerWidth = this.getContainerWidth();\n\n // if first load and no previous container width, or if container boundary is resized to smaller than before\n if (!this.previousContainerWidth || this.containerWidth < this.previousContainerWidth) {\n // and the title extends past the container, 1.05x padding to prevent jaggy resizing.\n if (this.titleWidth * 1.05 >= this.containerWidth) {\n this.resizeFileTitle(this._titleDirective.elRef.nativeElement.innerHTML);\n }\n } else if (this.previousContainerWidth && this.containerWidth > this.previousContainerWidth) {\n // Looks to expand file title if container width is resized to greater than before\n // reset file title to initial\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;\n this.resizeFileTitle(this.fileNameFull);\n }\n\n this.previousContainerWidth = this.containerWidth;\n }\n\n /** @hidden */\n private _handleOkClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.okClicked.subscribe(() => {\n if (this._formItemComponent.fileName && this._formItemComponent.fileName !== '') {\n this.fileName = this._formItemComponent.fileName;\n this._titleDirective.elRef.nativeElement.style.display = 'inline-block';\n this.fileNameFull = this.fileName + '.' + this.extension;\n this._titleDirective.elRef.nativeElement.innerHTML = this.fileNameFull;\n this.resizeFileTitle(this.fileNameFull);\n this._formItemComponent._editMode = false;\n this._buttonGroupComponent._editMode = false;\n this.fileNameChanged.emit(this);\n }\n })\n );\n }\n\n /** @hidden */\n private _handleEditClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.editClicked.subscribe((event) => {\n this._formItemComponent._editMode = event;\n if (this._titleContainerDirective) {\n this._titleContainerDirective.applyContainerClass = !event;\n }\n const styles = [];\n styles.push(this._titleDirective.elRef.nativeElement.style);\n this._titleContainerDirective?._objectMarkerComponents?.forEach((objectMarker) => {\n styles.push(objectMarker.elementRef().nativeElement.style);\n });\n event\n ? styles.forEach((style) => (style.display = 'none'))\n : styles.forEach((style) => (style.display = 'inline-block'));\n if (event) {\n this._formItemComponent._extension = this.extension;\n this._formItemComponent.fileName = this.fileName;\n }\n })\n );\n }\n\n /** @hidden */\n private _handleDeleteClickedSubscription(): void {\n this._subscriptions.add(\n this._buttonGroupComponent.deleteClicked.subscribe(() => {\n this.deleteClicked.emit(this);\n })\n );\n }\n\n /** @hidden */\n private _handleFormItemInputChangedSubscription(): void {\n this._subscriptions.add(\n this._formItemComponent.fileNameChanged.subscribe((event) => {\n this._buttonGroupComponent._okButton.disabled = event === '';\n this._buttonGroupComponent._okButton.buildComponentCssClass();\n })\n );\n }\n\n /** @hidden */\n private getTitleWidth(): number {\n return this._titleDirective.elRef.nativeElement.getBoundingClientRect().width;\n }\n\n /** @hidden */\n private getContainerWidth(): number {\n return this._titleDirective.elRef.nativeElement.parentElement.getBoundingClientRect().width;\n }\n\n /**\n * @hidden\n *\n * truncates the string by cutting out excess length in the middle and replacing with '...'\n */\n private truncateTitle(str: string): string {\n const cutLength = Math.floor(str.length * 0.8);\n\n if (str.length > cutLength) {\n const stringLeftIndex = Math.floor(cutLength / 2);\n const stringRightIndex = str.length - stringLeftIndex + 3;\n return str.substring(0, stringLeftIndex) + '... ' + str.substring(stringRightIndex, str.length);\n }\n return str;\n }\n\n /**\n * @hidden\n *\n * determines if file title needs to be truncated given container constraint.\n */\n private resizeFileTitle(titleStr: string): void {\n let curTitle = titleStr;\n this.containerWidth = this.getContainerWidth();\n this.titleWidth = this.getTitleWidth();\n\n // repeatedly truncate the title until it fits inside container\n while (this.titleWidth * 1.05 >= this.containerWidth) {\n const truncatedTitleStr = this.truncateTitle(curTitle);\n this._titleDirective.elRef.nativeElement.innerHTML = truncatedTitleStr;\n curTitle = truncatedTitleStr;\n this.titleWidth = this.getTitleWidth();\n this.containerWidth = this.getContainerWidth();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n UploadCollectionDescriptionDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleContainerDirective,\n UploadCollectionTitleDirective\n} from './upload-collection-simple.directives';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { UploadCollectionComponent } from './upload-collection.component';\nimport { UploadCollectionButtonGroupComponent } from './upload-collection-button-group/upload-collection-button-group.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { UploadCollectionFormItemComponent } from './upload-collection-form-item/upload-collection-form-item.component';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FormsModule } from '@angular/forms';\nimport { FormControlModule } from '@fundamental-ngx/core/form';\nimport { UploadCollectionItemDirective } from './upload-collection-item.directive';\n\n@NgModule({\n declarations: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ],\n imports: [CommonModule, ListModule, ButtonModule, LinkModule, FormsModule, FormControlModule],\n exports: [\n UploadCollectionComponent,\n UploadCollectionItemDirective,\n UploadCollectionThumbnailDirective,\n UploadCollectionTitleDirective,\n UploadCollectionDescriptionDirective,\n UploadCollectionTextSeparatorDirective,\n UploadCollectionStatusGroupDirective,\n UploadCollectionButtonGroupComponent,\n UploadCollectionFormItemComponent,\n UploadCollectionTitleContainerDirective\n ]\n})\nexport class UploadCollectionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|