@ieeesa-npm/presentation 0.26.7 → 0.26.8

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.
Files changed (45) hide show
  1. package/esm2022/lib/assets/constants.json +11 -1
  2. package/esm2022/lib/components/checkbox/checkbox.component.mjs +3 -3
  3. package/esm2022/lib/components/color-picker/color-picker.component.mjs +2 -2
  4. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +28 -8
  5. package/esm2022/lib/components/file-upload/file-upload.component.mjs +125 -9
  6. package/esm2022/lib/components/form-error/form-error.component.mjs +3 -3
  7. package/esm2022/lib/components/notification/notification.component.mjs +3 -3
  8. package/esm2022/lib/components/radio/radio.component.mjs +3 -3
  9. package/esm2022/lib/components/tabs/tabs.component.mjs +30 -10
  10. package/esm2022/lib/components/text-area/text-area.component.mjs +3 -3
  11. package/esm2022/lib/directives/dynamic-form-field/dynamic-form-field.directive.mjs +14 -2
  12. package/esm2022/lib/models/delete-file.model.mjs +2 -0
  13. package/esm2022/lib/models/download-file.model.mjs +2 -0
  14. package/esm2022/lib/models/dynamic-properties.model.mjs +13 -0
  15. package/esm2022/lib/models/field-config.model.mjs +1 -1
  16. package/esm2022/lib/models/file-attachment.model.mjs +2 -0
  17. package/esm2022/lib/models/file-upload-payload-model.mjs +2 -0
  18. package/esm2022/lib/models/file-upload-response.model.mjs +2 -0
  19. package/esm2022/lib/models/file-upload-status.model.mjs +2 -0
  20. package/esm2022/lib/models/tab.model.mjs +1 -1
  21. package/esm2022/lib/models/view-files-format.model.mjs +7 -0
  22. package/esm2022/lib/services/file-upload.service.mjs +95 -29
  23. package/esm2022/public-api.mjs +10 -1
  24. package/fesm2022/ieeesa-npm-presentation.mjs +334 -73
  25. package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
  26. package/lib/components/chips/chips.component.d.ts +10 -0
  27. package/lib/components/dynamic-form/dynamic-form.component.d.ts +16 -5
  28. package/lib/components/file-upload/file-upload.component.d.ts +67 -5
  29. package/lib/components/tabs/tabs.component.d.ts +10 -1
  30. package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +6 -2
  31. package/lib/directives/file-upload/file-upload.directive.d.ts +1 -1
  32. package/lib/models/delete-file.model.d.ts +10 -0
  33. package/lib/models/download-file.model.d.ts +4 -0
  34. package/lib/models/dynamic-properties.model.d.ts +10 -0
  35. package/lib/models/field-config.model.d.ts +9 -0
  36. package/lib/models/file-attachment.model.d.ts +9 -0
  37. package/lib/models/file-upload-payload-model.d.ts +3 -0
  38. package/lib/models/file-upload-response.model.d.ts +11 -0
  39. package/lib/models/file-upload-status.model.d.ts +8 -0
  40. package/lib/models/tab.model.d.ts +1 -0
  41. package/lib/models/view-files-format.model.d.ts +4 -0
  42. package/lib/services/file-upload.service.d.ts +53 -12
  43. package/package.json +1 -1
  44. package/public-api.d.ts +9 -0
  45. package/src/lib/assets/constants.json +11 -1
@@ -238,6 +238,13 @@ export declare class ChipsComponent implements OnInit, OnDestroy {
238
238
  allowedFileFormat: string;
239
239
  browseFiles: string;
240
240
  uploadProgress: string;
241
+ upload: string;
242
+ mb: string;
243
+ uploadFor: string;
244
+ uploadErrorMsg: string;
245
+ of: string;
246
+ filesUploaded: string;
247
+ fileAlreadyExists: string;
241
248
  };
242
249
  ariaLabel: {
243
250
  fileUpload: string;
@@ -274,6 +281,9 @@ export declare class ChipsComponent implements OnInit, OnDestroy {
274
281
  "2064": string;
275
282
  };
276
283
  };
284
+ limit: {
285
+ maxFileUpload: number;
286
+ };
277
287
  };
278
288
  list: {
279
289
  defaultIndentation: number;
@@ -1,4 +1,4 @@
1
- import { AfterContentInit, EventEmitter, OnInit, QueryList } from '@angular/core';
1
+ import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, OnInit, QueryList } from '@angular/core';
2
2
  import { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
3
  import { FormModel } from '../../models/form.model';
4
4
  import { FieldConfig } from '../../models/field-config.model';
@@ -14,6 +14,7 @@ import { SelectOpenedState } from '../../models/select-opened-state.model';
14
14
  import { RadioOption } from '../../models/radio-option.model';
15
15
  import { IconButton } from '../../models/icon-button.model';
16
16
  import { AutoCompleteOption } from '../../models/autocomplete-option.model';
17
+ import { FileUploadStatus } from '../../models/file-upload-status.model';
17
18
  import * as i0 from "@angular/core";
18
19
  /**
19
20
  * Creates a reactive form dynamically based on the passed form field configuration and handles the form events.
@@ -22,8 +23,9 @@ import * as i0 from "@angular/core";
22
23
  * @implements {OnInit}
23
24
  * @implements {AfterContentInit}
24
25
  */
25
- export declare class DynamicFormComponent implements OnInit, AfterContentInit {
26
+ export declare class DynamicFormComponent implements OnInit, AfterContentInit, AfterViewInit {
26
27
  private fb;
28
+ private elementRef;
27
29
  formFields: QueryList<DynamicFormFieldDirective>;
28
30
  private _formGroups;
29
31
  /**
@@ -46,6 +48,9 @@ export declare class DynamicFormComponent implements OnInit, AfterContentInit {
46
48
  */
47
49
  set searchResponse(value: any);
48
50
  get searchResponse(): any;
51
+ private _fileUploadStatus;
52
+ get fileUploadStatus(): FileUploadStatus;
53
+ set fileUploadStatus(value: FileUploadStatus);
49
54
  colWidth: FormGrid;
50
55
  isLegendVisible: boolean;
51
56
  rightButtonLabel: string;
@@ -53,6 +58,7 @@ export declare class DynamicFormComponent implements OnInit, AfterContentInit {
53
58
  isSubmitButtonDisabled: boolean;
54
59
  isLeftButtonDisabled: boolean;
55
60
  isLeftButtonNeeded: boolean;
61
+ isRightButtonNeeded: boolean;
56
62
  actionButtonAlign: AlignType;
57
63
  alignmentType: typeof AlignType;
58
64
  formSubmit: EventEmitter<any>;
@@ -81,7 +87,7 @@ export declare class DynamicFormComponent implements OnInit, AfterContentInit {
81
87
  formTimeSelected: EventEmitter<SelectedTime>;
82
88
  supportTextLinkClick: EventEmitter<LinkEventEmitType>;
83
89
  formSlideToggleChange: EventEmitter<SlideToggleOption>;
84
- formFileUpload: EventEmitter<File | FileList>;
90
+ formFileUpload: EventEmitter<FileList | File>;
85
91
  dropdownOpenedChange: EventEmitter<SelectOpenedState>;
86
92
  formColorPickerChange: EventEmitter<string>;
87
93
  formRadioOptionSelected: EventEmitter<RadioOption>;
@@ -94,7 +100,7 @@ export declare class DynamicFormComponent implements OnInit, AfterContentInit {
94
100
  formGroupArray: FormGroup[];
95
101
  formControlArray: any[];
96
102
  legendsArray: string[];
97
- constructor(fb: FormBuilder);
103
+ constructor(fb: FormBuilder, elementRef: ElementRef);
98
104
  /**
99
105
  * Implementation of ngOnInit lifecycle hook method to create form group
100
106
  * @memberof DynamicFormComponent
@@ -105,6 +111,11 @@ export declare class DynamicFormComponent implements OnInit, AfterContentInit {
105
111
  * @memberof DynamicFormComponent
106
112
  */
107
113
  ngAfterContentInit(): void;
114
+ /**
115
+ * Sets the focus to the first field.
116
+ * @memberof DynamicFormComponent
117
+ */
118
+ ngAfterViewInit(): void;
108
119
  /**
109
120
  * Creates form group on the basis of formGroups configuration input
110
121
  * @return {void}
@@ -315,5 +326,5 @@ export declare class DynamicFormComponent implements OnInit, AfterContentInit {
315
326
  */
316
327
  onCheckboxCTAButtonClick(event: IconButton): void;
317
328
  static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormComponent, never>;
318
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormComponent, "ieeesa-dynamic-form", ["dynamicForm"], { "formGroups": { "alias": "formGroups"; "required": false; }; "submitResponse": { "alias": "submitResponse"; "required": false; }; "searchResponse": { "alias": "searchResponse"; "required": false; }; "colWidth": { "alias": "colWidth"; "required": false; }; "isLegendVisible": { "alias": "isLegendVisible"; "required": false; }; "rightButtonLabel": { "alias": "rightButtonLabel"; "required": false; }; "leftButtonLabel": { "alias": "leftButtonLabel"; "required": false; }; "isSubmitButtonDisabled": { "alias": "isSubmitButtonDisabled"; "required": false; }; "isLeftButtonDisabled": { "alias": "isLeftButtonDisabled"; "required": false; }; "isLeftButtonNeeded": { "alias": "isLeftButtonNeeded"; "required": false; }; "actionButtonAlign": { "alias": "actionButtonAlign"; "required": false; }; }, { "formSubmit": "formSubmit"; "formChange": "formChange"; "formInput": "formInput"; "formLeftButtonClicked": "formLeftButtonClicked"; "formSearchApply": "formSearchApply"; "formGroupsReference": "formGroupsReference"; "dropdownChange": "dropdownChange"; "formCheckboxSelection": "formCheckboxSelection"; "formDateSelected": "formDateSelected"; "formSelectSearch": "formSelectSearch"; "formControlChange": "formControlChange"; "formAutoCompleteSearch": "formAutoCompleteSearch"; "formAutoCompleteClearSearchValue": "formAutoCompleteClearSearchValue"; "autoCompleteOptionSelected": "autoCompleteOptionSelected"; "formAfterContentInit": "formAfterContentInit"; "formSelectedDateRange": "formSelectedDateRange"; "addFormGroup": "addFormGroup"; "formTimeSelected": "formTimeSelected"; "supportTextLinkClick": "supportTextLinkClick"; "formSlideToggleChange": "formSlideToggleChange"; "formFileUpload": "formFileUpload"; "dropdownOpenedChange": "dropdownOpenedChange"; "formColorPickerChange": "formColorPickerChange"; "formRadioOptionSelected": "formRadioOptionSelected"; "ctaButtonClick": "ctaButtonClick"; "formMultiSelectAutoCompleteSearch": "formMultiSelectAutoCompleteSearch"; "formMultiSelectAutoCompleteClearSearchValue": "formMultiSelectAutoCompleteClearSearchValue"; "multiSelectAutoCompleteOptionsSelected": "multiSelectAutoCompleteOptionsSelected"; "formRichTextEditorContentChange": "formRichTextEditorContentChange"; }, never, ["[component]"], true, never>;
329
+ static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormComponent, "ieeesa-dynamic-form", ["dynamicForm"], { "formGroups": { "alias": "formGroups"; "required": false; }; "submitResponse": { "alias": "submitResponse"; "required": false; }; "searchResponse": { "alias": "searchResponse"; "required": false; }; "fileUploadStatus": { "alias": "fileUploadStatus"; "required": false; }; "colWidth": { "alias": "colWidth"; "required": false; }; "isLegendVisible": { "alias": "isLegendVisible"; "required": false; }; "rightButtonLabel": { "alias": "rightButtonLabel"; "required": false; }; "leftButtonLabel": { "alias": "leftButtonLabel"; "required": false; }; "isSubmitButtonDisabled": { "alias": "isSubmitButtonDisabled"; "required": false; }; "isLeftButtonDisabled": { "alias": "isLeftButtonDisabled"; "required": false; }; "isLeftButtonNeeded": { "alias": "isLeftButtonNeeded"; "required": false; }; "isRightButtonNeeded": { "alias": "isRightButtonNeeded"; "required": false; }; "actionButtonAlign": { "alias": "actionButtonAlign"; "required": false; }; }, { "formSubmit": "formSubmit"; "formChange": "formChange"; "formInput": "formInput"; "formLeftButtonClicked": "formLeftButtonClicked"; "formSearchApply": "formSearchApply"; "formGroupsReference": "formGroupsReference"; "dropdownChange": "dropdownChange"; "formCheckboxSelection": "formCheckboxSelection"; "formDateSelected": "formDateSelected"; "formSelectSearch": "formSelectSearch"; "formControlChange": "formControlChange"; "formAutoCompleteSearch": "formAutoCompleteSearch"; "formAutoCompleteClearSearchValue": "formAutoCompleteClearSearchValue"; "autoCompleteOptionSelected": "autoCompleteOptionSelected"; "formAfterContentInit": "formAfterContentInit"; "formSelectedDateRange": "formSelectedDateRange"; "addFormGroup": "addFormGroup"; "formTimeSelected": "formTimeSelected"; "supportTextLinkClick": "supportTextLinkClick"; "formSlideToggleChange": "formSlideToggleChange"; "formFileUpload": "formFileUpload"; "dropdownOpenedChange": "dropdownOpenedChange"; "formColorPickerChange": "formColorPickerChange"; "formRadioOptionSelected": "formRadioOptionSelected"; "ctaButtonClick": "ctaButtonClick"; "formMultiSelectAutoCompleteSearch": "formMultiSelectAutoCompleteSearch"; "formMultiSelectAutoCompleteClearSearchValue": "formMultiSelectAutoCompleteClearSearchValue"; "multiSelectAutoCompleteOptionsSelected": "multiSelectAutoCompleteOptionsSelected"; "formRichTextEditorContentChange": "formRichTextEditorContentChange"; }, never, ["[component]"], true, never>;
319
330
  }
@@ -1,9 +1,12 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnInit } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { FormUtilityService } from '../../services/form-utility.service';
4
4
  import { FieldConfig } from '../../models/field-config.model';
5
5
  import { AllowedFileTypes } from '../../models/allowed-file-types.model';
6
6
  import { FileUploadService } from '../../services/file-upload.service';
7
+ import { ViewFilesFormat } from '../../models/view-files-format.model';
8
+ import { AlignType } from '../../models/align-type.model';
9
+ import { FileUploadStatus } from '../../models/file-upload-status.model';
7
10
  import * as i0 from "@angular/core";
8
11
  /**
9
12
  * Provides functionality for uploading files to aws s3 bucket.
@@ -14,6 +17,7 @@ import * as i0 from "@angular/core";
14
17
  export declare class FileUploadComponent implements OnInit {
15
18
  formUtilityService: FormUtilityService;
16
19
  fileUploadService: FileUploadService;
20
+ fileField: ElementRef;
17
21
  constants: {
18
22
  ariaLabel: {
19
23
  clear: string;
@@ -213,6 +217,11 @@ export declare class FileUploadComponent implements OnInit {
213
217
  hexCodeInput: string;
214
218
  palette: string;
215
219
  };
220
+ /**
221
+ * Handles the selected file(s) and emits FileUpload event emitter for uploading the file(s).
222
+ * @param {(File | FileList)} file
223
+ * @memberof FileUploadComponent
224
+ */
216
225
  defaultColor: string;
217
226
  ariaDescription: string;
218
227
  ariaDescribedById: string;
@@ -229,6 +238,13 @@ export declare class FileUploadComponent implements OnInit {
229
238
  allowedFileFormat: string;
230
239
  browseFiles: string;
231
240
  uploadProgress: string;
241
+ upload: string;
242
+ mb: string;
243
+ uploadFor: string;
244
+ uploadErrorMsg: string;
245
+ of: string;
246
+ filesUploaded: string;
247
+ fileAlreadyExists: string;
232
248
  };
233
249
  ariaLabel: {
234
250
  fileUpload: string;
@@ -265,6 +281,9 @@ export declare class FileUploadComponent implements OnInit {
265
281
  "2064": string;
266
282
  };
267
283
  };
284
+ limit: {
285
+ maxFileUpload: number;
286
+ };
268
287
  };
269
288
  list: {
270
289
  defaultIndentation: number;
@@ -289,6 +308,13 @@ export declare class FileUploadComponent implements OnInit {
289
308
  allowedFileFormat: string;
290
309
  browseFiles: string;
291
310
  uploadProgress: string;
311
+ upload: string;
312
+ mb: string;
313
+ uploadFor: string;
314
+ uploadErrorMsg: string;
315
+ of: string;
316
+ filesUploaded: string;
317
+ fileAlreadyExists: string;
292
318
  };
293
319
  fileUploadAriaLabel: {
294
320
  fileUpload: string;
@@ -318,11 +344,15 @@ export declare class FileUploadComponent implements OnInit {
318
344
  group: FormGroup;
319
345
  isValidFileType: boolean;
320
346
  isValidFileSize: boolean;
347
+ isValidMaxFileUploadLimit: boolean;
321
348
  selectedFiles: FileList | File | any;
322
349
  selectedFileNames: string;
323
350
  isFormField: boolean;
324
351
  totalSize: number;
325
352
  uploadedFiles: FileList | File | any;
353
+ actionButtonAlign: AlignType;
354
+ alignmentType: typeof AlignType;
355
+ isUploadButtonDisabled: boolean;
326
356
  formControlName: string;
327
357
  isFileSelected: boolean;
328
358
  supportMessage: string;
@@ -330,12 +360,21 @@ export declare class FileUploadComponent implements OnInit {
330
360
  isMultiFileUpload: boolean;
331
361
  isUploadInProgress: boolean;
332
362
  fileUploadHeading: string;
363
+ isAllowAnyFileType: boolean;
364
+ viewFilesFormat: ViewFilesFormat;
365
+ isUploadButtonNeeded: boolean;
333
366
  maxUploadFileSize: number;
334
367
  private uploadedSizeValue;
368
+ fileUploadErrorPosition: string;
369
+ maxFilesUploadLimit: number;
370
+ maxFilesUploadLimitErrorMessage: string;
371
+ private _fileUploadStatus;
372
+ get fileUploadStatus(): FileUploadStatus;
373
+ set fileUploadStatus(value: FileUploadStatus);
335
374
  get uploadedSize(): number;
336
375
  set uploadedSize(value: number);
337
- uploadSelectedFiles: EventEmitter<File | FileList>;
338
- downloadSelectedFile: EventEmitter<File | FileList>;
376
+ uploadSelectedFiles: EventEmitter<FileList | File>;
377
+ downloadSelectedFile: EventEmitter<FileList | File>;
339
378
  constructor(formUtilityService: FormUtilityService, fileUploadService: FileUploadService);
340
379
  /**
341
380
  * Initializes component properties and retrieves configuration.
@@ -348,7 +387,7 @@ export declare class FileUploadComponent implements OnInit {
348
387
  */
349
388
  getAllowedFileFormatSizeMessage(): void;
350
389
  /**
351
- * Handles the selected of file(s) and emits FileUpload event emitter for uploading the file(s).
390
+ * Handles the selected file(s) and emits FileUpload event emitter for uploading the file(s).
352
391
  * @param {(File | FileList)} file
353
392
  * @memberof FileUploadComponent
354
393
  */
@@ -393,6 +432,29 @@ export declare class FileUploadComponent implements OnInit {
393
432
  * @memberof FileUploadComponent
394
433
  */
395
434
  trackByFn(index: number): number | string;
435
+ /**
436
+ * Triggers on browse element clicked
437
+ * @memberof FileUploadComponent
438
+ */
439
+ fileClick(): void;
440
+ /**
441
+ * Display comma separated failed file names
442
+ * @param {string[]} filesNamesUploadFailed
443
+ * @return {*} {string}
444
+ * @memberof FileUploadComponent
445
+ */
446
+ displayFileNames(fileNames: string[]): string;
447
+ /**
448
+ * Removes file from respective properties used.
449
+ * @param {number} index
450
+ * @memberof FileUploadComponent
451
+ */
452
+ removeFile(index: number): void;
453
+ /**
454
+ * Disabled file upload button
455
+ * @memberof FileUploadComponent
456
+ */
457
+ disableUploadButton(): void;
396
458
  static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadComponent, never>;
397
- static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadComponent, "ieeesa-file-upload", never, { "formControlName": { "alias": "formControlName"; "required": false; }; "isFileSelected": { "alias": "isFileSelected"; "required": false; }; "supportMessage": { "alias": "supportMessage"; "required": false; }; "allowedFileTypes": { "alias": "allowedFileTypes"; "required": false; }; "isMultiFileUpload": { "alias": "isMultiFileUpload"; "required": false; }; "isUploadInProgress": { "alias": "isUploadInProgress"; "required": false; }; "fileUploadHeading": { "alias": "fileUploadHeading"; "required": false; }; "maxUploadFileSize": { "alias": "maxUploadFileSize"; "required": false; }; "uploadedSize": { "alias": "uploadedSize"; "required": false; }; }, { "uploadSelectedFiles": "uploadSelectedFiles"; "downloadSelectedFile": "downloadSelectedFile"; }, never, never, true, never>;
459
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadComponent, "ieeesa-file-upload", never, { "maxFileSizeErrorMessage": { "alias": "maxFileSizeErrorMessage"; "required": false; }; "actionButtonAlign": { "alias": "actionButtonAlign"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "isFileSelected": { "alias": "isFileSelected"; "required": false; }; "supportMessage": { "alias": "supportMessage"; "required": false; }; "allowedFileTypes": { "alias": "allowedFileTypes"; "required": false; }; "isMultiFileUpload": { "alias": "isMultiFileUpload"; "required": false; }; "isUploadInProgress": { "alias": "isUploadInProgress"; "required": false; }; "fileUploadHeading": { "alias": "fileUploadHeading"; "required": false; }; "isAllowAnyFileType": { "alias": "isAllowAnyFileType"; "required": false; }; "viewFilesFormat": { "alias": "viewFilesFormat"; "required": false; }; "isUploadButtonNeeded": { "alias": "isUploadButtonNeeded"; "required": false; }; "maxUploadFileSize": { "alias": "maxUploadFileSize"; "required": false; }; "fileUploadErrorPosition": { "alias": "fileUploadErrorPosition"; "required": false; }; "maxFilesUploadLimit": { "alias": "maxFilesUploadLimit"; "required": false; }; "maxFilesUploadLimitErrorMessage": { "alias": "maxFilesUploadLimitErrorMessage"; "required": false; }; "fileUploadStatus": { "alias": "fileUploadStatus"; "required": false; }; "uploadedSize": { "alias": "uploadedSize"; "required": false; }; }, { "uploadSelectedFiles": "uploadSelectedFiles"; "downloadSelectedFile": "downloadSelectedFile"; }, never, never, true, never>;
398
460
  }
@@ -6,6 +6,7 @@ import { ConfirmationModalData } from '../../models/confirmation-modal-data.mode
6
6
  import { Subject } from 'rxjs';
7
7
  import { FormGroup } from '@angular/forms';
8
8
  import { EventsAndMeetingRouteConfig, UserPermission } from '@ieeesa-npm/shared';
9
+ import { DynamicProperties } from '../../models/dynamic-properties.model';
9
10
  import * as i0 from "@angular/core";
10
11
  export declare class TabsComponent implements OnInit, OnDestroy {
11
12
  dialog: MatDialog;
@@ -28,12 +29,14 @@ export declare class TabsComponent implements OnInit, OnDestroy {
28
29
  constants: any;
29
30
  modalConfigTexts: any;
30
31
  isViewOnly: string | boolean;
32
+ isMemberOfGroup: string | boolean;
31
33
  eventId: string;
32
34
  meetingId: string;
33
35
  actionType: any;
34
36
  routePaths: EventsAndMeetingRouteConfig;
35
37
  apiBaseURL: string;
36
38
  userPermissions: UserPermission[];
39
+ dynamicProperties: DynamicProperties[];
37
40
  constructor(dialog: MatDialog);
38
41
  /**
39
42
  * Verifies tabs count and calls createComponent() to load selected component.
@@ -59,6 +62,12 @@ export declare class TabsComponent implements OnInit, OnDestroy {
59
62
  * @memberof TabsComponent
60
63
  */
61
64
  createComponent(tab: Tab): void;
65
+ /**
66
+ * Sets dynamic input property which is being sent by the consumer component and its value is not undefined for the component loaded by the tab component.
67
+ * @param {[]} properties
68
+ * @memberof TabsComponent
69
+ */
70
+ setDynamicComponentProperty(properties: []): void;
62
71
  /**
63
72
  * Returns unique identifier for the tab.
64
73
  * @param {number} index
@@ -73,5 +82,5 @@ export declare class TabsComponent implements OnInit, OnDestroy {
73
82
  */
74
83
  ngOnDestroy(): void;
75
84
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, never>;
76
- static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "ieeesa-tabs", never, { "selectedTabIndex": { "alias": "selectedTabIndex"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "isFormChanged": { "alias": "isFormChanged"; "required": false; }; "confirmationModalConfig": { "alias": "confirmationModalConfig"; "required": false; }; "isViewOnly": { "alias": "isViewOnly"; "required": false; }; "eventId": { "alias": "eventId"; "required": false; }; "meetingId": { "alias": "meetingId"; "required": false; }; "actionType": { "alias": "actionType"; "required": false; }; "routePaths": { "alias": "routePaths"; "required": false; }; "apiBaseURL": { "alias": "apiBaseURL"; "required": false; }; "userPermissions": { "alias": "userPermissions"; "required": false; }; }, { "selectedIndexChange": "selectedIndexChange"; }, never, never, true, never>;
85
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "ieeesa-tabs", never, { "selectedTabIndex": { "alias": "selectedTabIndex"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "isFormChanged": { "alias": "isFormChanged"; "required": false; }; "confirmationModalConfig": { "alias": "confirmationModalConfig"; "required": false; }; "isViewOnly": { "alias": "isViewOnly"; "required": false; }; "isMemberOfGroup": { "alias": "isMemberOfGroup"; "required": false; }; "eventId": { "alias": "eventId"; "required": false; }; "meetingId": { "alias": "meetingId"; "required": false; }; "actionType": { "alias": "actionType"; "required": false; }; "routePaths": { "alias": "routePaths"; "required": false; }; "apiBaseURL": { "alias": "apiBaseURL"; "required": false; }; "userPermissions": { "alias": "userPermissions"; "required": false; }; }, { "selectedIndexChange": "selectedIndexChange"; }, never, never, true, never>;
77
86
  }
@@ -12,6 +12,7 @@ import { SelectOpenedState } from '../../models/select-opened-state.model';
12
12
  import { RadioOption } from '../../models/radio-option.model';
13
13
  import { IconButton } from '../../models/icon-button.model';
14
14
  import { AutoCompleteOption } from '../../models/autocomplete-option.model';
15
+ import { FileUploadStatus } from '../../models/file-upload-status.model';
15
16
  import * as i0 from "@angular/core";
16
17
  /**
17
18
  * Provides the implementation of DynamicFormFieldDirective which hosts and creates the form fields components dynamically.
@@ -38,6 +39,9 @@ export declare class DynamicFormFieldDirective implements FormField, OnInit, OnD
38
39
  */
39
40
  set group(value: FormGroup);
40
41
  get group(): FormGroup;
42
+ private _fileUploadStatus;
43
+ get fileUploadStatus(): FileUploadStatus;
44
+ set fileUploadStatus(value: FileUploadStatus);
41
45
  private _submitResponse;
42
46
  /**
43
47
  * Sets the submit response of form submit event
@@ -74,7 +78,7 @@ export declare class DynamicFormFieldDirective implements FormField, OnInit, OnD
74
78
  formSlideToggleChange: EventEmitter<SlideToggleOption>;
75
79
  dropdownOpenedChange: EventEmitter<SelectOpenedState>;
76
80
  formColorPickerChange: EventEmitter<string>;
77
- formFileUpload: EventEmitter<File | FileList>;
81
+ formFileUpload: EventEmitter<FileList | File>;
78
82
  formRadioOptionSelected: EventEmitter<RadioOption>;
79
83
  ctaButtonClick: EventEmitter<IconButton>;
80
84
  formMultiSelectAutoCompleteSearch: EventEmitter<string>;
@@ -99,5 +103,5 @@ export declare class DynamicFormFieldDirective implements FormField, OnInit, OnD
99
103
  */
100
104
  ngOnDestroy(): void;
101
105
  static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormFieldDirective, never>;
102
- static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicFormFieldDirective, "[ieeesaDynamicFormField]", never, { "config": { "alias": "config"; "required": false; }; "group": { "alias": "group"; "required": false; }; "submitResponse": { "alias": "submitResponse"; "required": false; }; "searchResponse": { "alias": "searchResponse"; "required": false; }; }, { "formSearchApply": "formSearchApply"; "formDropdownSelected": "formDropdownSelected"; "formDateSelected": "formDateSelected"; "formTimeSelected": "formTimeSelected"; "formSelectedDateRange": "formSelectedDateRange"; "formSelectSearch": "formSelectSearch"; "formAutoCompleteSearch": "formAutoCompleteSearch"; "autoCompleteClearSearchValue": "autoCompleteClearSearchValue"; "autoCompleteOptionSelected": "autoCompleteOptionSelected"; "formCheckboxSelection": "formCheckboxSelection"; "formInputValue": "formInputValue"; "addFormGroup": "addFormGroup"; "supportTextLinkClick": "supportTextLinkClick"; "formSlideToggleChange": "formSlideToggleChange"; "dropdownOpenedChange": "dropdownOpenedChange"; "formColorPickerChange": "formColorPickerChange"; "formFileUpload": "formFileUpload"; "formRadioOptionSelected": "formRadioOptionSelected"; "ctaButtonClick": "ctaButtonClick"; "formMultiSelectAutoCompleteSearch": "formMultiSelectAutoCompleteSearch"; "multiSelectAutoCompleteClearSearchValue": "multiSelectAutoCompleteClearSearchValue"; "multiSelectAutoCompleteOptionsSelected": "multiSelectAutoCompleteOptionsSelected"; "formRichTextEditorContentChange": "formRichTextEditorContentChange"; }, never, never, true, never>;
106
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicFormFieldDirective, "[ieeesaDynamicFormField]", never, { "config": { "alias": "config"; "required": false; }; "group": { "alias": "group"; "required": false; }; "fileUploadStatus": { "alias": "fileUploadStatus"; "required": false; }; "submitResponse": { "alias": "submitResponse"; "required": false; }; "searchResponse": { "alias": "searchResponse"; "required": false; }; }, { "formSearchApply": "formSearchApply"; "formDropdownSelected": "formDropdownSelected"; "formDateSelected": "formDateSelected"; "formTimeSelected": "formTimeSelected"; "formSelectedDateRange": "formSelectedDateRange"; "formSelectSearch": "formSelectSearch"; "formAutoCompleteSearch": "formAutoCompleteSearch"; "autoCompleteClearSearchValue": "autoCompleteClearSearchValue"; "autoCompleteOptionSelected": "autoCompleteOptionSelected"; "formCheckboxSelection": "formCheckboxSelection"; "formInputValue": "formInputValue"; "addFormGroup": "addFormGroup"; "supportTextLinkClick": "supportTextLinkClick"; "formSlideToggleChange": "formSlideToggleChange"; "dropdownOpenedChange": "dropdownOpenedChange"; "formColorPickerChange": "formColorPickerChange"; "formFileUpload": "formFileUpload"; "formRadioOptionSelected": "formRadioOptionSelected"; "ctaButtonClick": "ctaButtonClick"; "formMultiSelectAutoCompleteSearch": "formMultiSelectAutoCompleteSearch"; "multiSelectAutoCompleteClearSearchValue": "multiSelectAutoCompleteClearSearchValue"; "multiSelectAutoCompleteOptionsSelected": "multiSelectAutoCompleteOptionsSelected"; "formRichTextEditorContentChange": "formRichTextEditorContentChange"; }, never, never, true, never>;
103
107
  }
@@ -8,7 +8,7 @@ import * as i0 from "@angular/core";
8
8
  export declare class FileUploadDirective {
9
9
  allowedFileTypes: string[];
10
10
  isMultiFileUpload: boolean;
11
- fileDropped: EventEmitter<File | FileList>;
11
+ fileDropped: EventEmitter<FileList | File>;
12
12
  /**
13
13
  * Binds the 'multiple' attribute based on the value of allowMultiple property.
14
14
  * @readonly
@@ -0,0 +1,10 @@
1
+ export interface DeleteFilePayload {
2
+ [key: string]: any;
3
+ }
4
+ export interface DeleteFileResponse {
5
+ status: boolean;
6
+ message: string;
7
+ body: {
8
+ message: string;
9
+ };
10
+ }
@@ -0,0 +1,4 @@
1
+ export interface DownloadFile {
2
+ attachmentId: string | null;
3
+ fileName: string;
4
+ }
@@ -0,0 +1,10 @@
1
+ export declare enum DynamicProperties {
2
+ EVENT_ID = "eventId",
3
+ MEETING_ID = "meetingId",
4
+ ROUTE_PATHS = "routePaths",
5
+ API_BASE_URL = "apiBaseURL",
6
+ USER_PERMISSIONS = "userPermissions",
7
+ ACTION_TYPE = "actionType",
8
+ IS_VIEW_ONLY = "isViewOnly",
9
+ IS_MEMBER_OF_GROUP = "isMemberOfGroup"
10
+ }
@@ -10,6 +10,8 @@ import { SlideToggleOption } from './slide-toggle-options.model';
10
10
  import { ColorFormat, ColorsAnimation } from './color-format.model';
11
11
  import { AllowedFileTypes } from './allowed-file-types.model';
12
12
  import { EditorConfig } from 'ngx-simple-text-editor';
13
+ import { ViewFilesFormat } from './view-files-format.model';
14
+ import { AlignType } from './align-type.model';
13
15
  export interface FieldConfig {
14
16
  isSortNeeded?: boolean;
15
17
  disabled?: boolean;
@@ -84,4 +86,11 @@ export interface FieldConfig {
84
86
  canHideTextInput?: boolean;
85
87
  multiSelectAutoCompleteOptions?: AutoCompleteOption[];
86
88
  editorConfig?: EditorConfig;
89
+ isAllowAnyFileType?: boolean;
90
+ viewFilesFormat?: ViewFilesFormat;
91
+ isUploadButtonNeeded?: boolean;
92
+ actionButtonAlign?: AlignType;
93
+ fileUploadErrorPosition?: string;
94
+ maxFilesUploadLimit?: number;
95
+ maxFilesUploadLimitErrorMessage?: string;
87
96
  }
@@ -0,0 +1,9 @@
1
+ export interface FileAttachment {
2
+ agendaItemId: string;
3
+ agendaId: string;
4
+ s3FilePath: string;
5
+ fileName: string;
6
+ }
7
+ export interface FileAttachmentPayload {
8
+ payload: FileAttachment[];
9
+ }
@@ -0,0 +1,3 @@
1
+ export interface FileUploadPayload {
2
+ [key: string]: any;
3
+ }
@@ -0,0 +1,11 @@
1
+ export interface FileUploadBodyResponse {
2
+ fileName: string;
3
+ preSignedUrl: string;
4
+ s3Path: string;
5
+ errorMessage?: string | null;
6
+ }
7
+ export interface FileUploadResponse {
8
+ status: boolean;
9
+ body: FileUploadBodyResponse[];
10
+ message: string;
11
+ }
@@ -0,0 +1,8 @@
1
+ import { DownloadFile } from "./download-file.model";
2
+ export interface FileUploadStatus {
3
+ filesUploadedSuccessfullyCount: number;
4
+ filesNamesUploadFailed: string[];
5
+ alreadyExistsFiles: string[];
6
+ isUploadingStart: boolean;
7
+ uploadedFiles: DownloadFile[];
8
+ }
@@ -2,4 +2,5 @@ export interface Tab {
2
2
  id: number | string;
3
3
  label: string;
4
4
  componentRef: any;
5
+ disabled?: boolean;
5
6
  }
@@ -0,0 +1,4 @@
1
+ export declare enum ViewFilesFormat {
2
+ DEFAULT = "default",
3
+ BOTTOM = "bottom"
4
+ }
@@ -3,6 +3,9 @@ import { OnDestroy } from '@angular/core';
3
3
  import { AlertsService, HttpService, LoaderNotificationService } from '@ieeesa-npm/utility';
4
4
  import { FileUploadPresignedUrl } from '../models/file-upload-presigned-url-res.model';
5
5
  import { Observable, Subject } from 'rxjs';
6
+ import { FileUploadPayload } from '../models/file-upload-payload-model';
7
+ import { FileUploadBodyResponse, FileUploadResponse } from '../models/file-upload-response.model';
8
+ import { DeleteFileResponse } from '../models/delete-file.model';
6
9
  import * as i0 from "@angular/core";
7
10
  /**
8
11
  * This service interacts with the server to obtain pre-signed URLs for file upload and uploads files to Amazon S3.
@@ -187,17 +190,18 @@ export declare class FileUploadService implements OnDestroy {
187
190
  label: {
188
191
  initial: string;
189
192
  };
190
- };
191
- loader: {
192
- ariaLabel: {
193
- spinner: string;
194
- };
195
193
  }; /**
196
- * Retrieves presigned URL for downloading files to Amazon S3 bucket.
194
+ * Return distinct message for sent, upload progress, & response events.
195
+ * @param {HttpEvent<any>} event
197
196
  * @param {(File | FileList)} file
198
- * @return {Observable<string>}
197
+ * @return {*}
199
198
  * @memberof FileUploadService
200
199
  */
200
+ loader: {
201
+ ariaLabel: {
202
+ spinner: string;
203
+ };
204
+ };
201
205
  defaultWelcomeBgColor: string;
202
206
  timePicker: {
203
207
  defaultTimeFormat: number;
@@ -233,6 +237,13 @@ export declare class FileUploadService implements OnDestroy {
233
237
  allowedFileFormat: string;
234
238
  browseFiles: string;
235
239
  uploadProgress: string;
240
+ upload: string;
241
+ mb: string;
242
+ uploadFor: string;
243
+ uploadErrorMsg: string;
244
+ of: string;
245
+ filesUploaded: string;
246
+ fileAlreadyExists: string;
236
247
  };
237
248
  ariaLabel: {
238
249
  fileUpload: string;
@@ -269,6 +280,9 @@ export declare class FileUploadService implements OnDestroy {
269
280
  "2064": string;
270
281
  };
271
282
  };
283
+ limit: {
284
+ maxFileUpload: number;
285
+ };
272
286
  };
273
287
  list: {
274
288
  defaultIndentation: number;
@@ -290,6 +304,9 @@ export declare class FileUploadService implements OnDestroy {
290
304
  fileByteArray: Uint8Array | undefined;
291
305
  httpClient: HttpClient;
292
306
  isFileUploading: boolean;
307
+ filesNamesUploadFailed: string[];
308
+ filesUploadedSuccessfullyCount: number;
309
+ uploadedFileName: string;
293
310
  constructor(httpService: HttpService, handler: HttpBackend, alertService: AlertsService, loaderNotificationService: LoaderNotificationService);
294
311
  /**
295
312
  * Sets the base URL for API requests.
@@ -305,13 +322,30 @@ export declare class FileUploadService implements OnDestroy {
305
322
  */
306
323
  getFileUploadPresignedUrl(file: File | FileList, appId: string): Observable<FileUploadPresignedUrl>;
307
324
  /**
308
- * Uploads file to AWS S3 using a presigned URL.
309
- * @param {string} presignedUrl
310
- * @param {(File | FileList)} file
325
+ * Gets pre-signed URL for the files to be uploaded in S3 bucket
326
+ * @param fileUploadPayload
327
+ * @param fileUploadAPIPath
328
+ */
329
+ getPreSignedURL(fileUploadPayload: FileUploadPayload, fileUploadAPIPath?: string): Observable<FileUploadResponse>;
330
+ /**
331
+ * Uploads file to AWS S3 using a pre-signed URL.
332
+ * @param {string} preSignedUrl
333
+ * @param files
334
+ * @param isMultipleFileUpload
311
335
  * @return {Observable<any>} -Returns an observable that emits the response after uploading the file to S3.
312
336
  * @memberof FileUploadService
313
337
  */
314
- uploadFileToS3(presignedUrl: string, file: File | FileList): Observable<any>;
338
+ uploadFileToS3(preSignedUrl: FileUploadBodyResponse[] | string, files: File | FileList, isMultipleFileUpload?: boolean): Observable<any>;
339
+ /**
340
+ * Makes http call to AWS to upload file in S3 bucket
341
+ * @param {string} preSignedUrl
342
+ * @param {File} file
343
+ * @param {string} fileType
344
+ * @param {number} fileSize
345
+ * @return {*} {Observable<any>}
346
+ * @memberof FileUploadService
347
+ */
348
+ httpCallToAWS(preSignedUrl: string, file: File, fileType: string, fileSize: number): Observable<any>;
315
349
  /**
316
350
  * Gets file upload progress.
317
351
  * @param {*} message
@@ -325,7 +359,7 @@ export declare class FileUploadService implements OnDestroy {
325
359
  * @return {*}
326
360
  * @memberof FileUploadService
327
361
  */
328
- getEventMessage(event: HttpEvent<any>, file: File | FileList): string | true;
362
+ getEventMessage(event: HttpEvent<any>, file: File): string | boolean;
329
363
  /**
330
364
  * Converts file to byte array.
331
365
  * @param {File} file
@@ -388,6 +422,13 @@ export declare class FileUploadService implements OnDestroy {
388
422
  * @memberof FileUploadService
389
423
  */
390
424
  private getFileExtension;
425
+ /**
426
+ * Deletes file by given fileId
427
+ * @param {string} fileId
428
+ * @return {*} {Observable<DeleteFileResponse>}
429
+ * @memberof FileUploadService
430
+ */
431
+ deleteFile(deleteFileApiPath: string): Observable<DeleteFileResponse>;
391
432
  /**
392
433
  * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.
393
434
  * @memberof FileUploadService
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ieeesa-npm/presentation",
3
- "version": "0.26.7",
3
+ "version": "0.26.8",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.1.0",
6
6
  "@angular/core": "^16.1.0",
package/public-api.d.ts CHANGED
@@ -51,8 +51,12 @@ export * from './lib/models/calendar.model';
51
51
  export * from './lib/models/checkbox-option.model';
52
52
  export * from './lib/models/confirmation-modal-data.model';
53
53
  export * from './lib/models/date-picker.model';
54
+ export * from './lib/models/delete-file.model';
55
+ export * from './lib/models/download-file.model';
56
+ export * from './lib/models/dynamic-properties.model';
54
57
  export * from './lib/models/event-emit-type.model';
55
58
  export * from './lib/models/field-config.model';
59
+ export * from './lib/models/file-attachment.model';
56
60
  export * from './lib/models/footer-config.model';
57
61
  export * from './lib/models/form-control-types.model';
58
62
  export * from './lib/models/form-field.model';
@@ -79,6 +83,8 @@ export * from './lib/models/table-actions.model';
79
83
  export * from './lib/models/table-schema.model';
80
84
  export * from './lib/models/breadcrumb.model';
81
85
  export * from './lib/models/tile.model';
86
+ export * from './lib/models/file-upload-response.model';
87
+ export * from './lib/models/file-upload-status.model';
82
88
  export * from './lib/models/filters-options.model';
83
89
  export * from './lib/models/profile-menu.model';
84
90
  export * from './lib/models/slide-toggle-options.model';
@@ -87,10 +93,13 @@ export * from './lib/models/card-button.model';
87
93
  export * from './lib/models/card-info.model';
88
94
  export * from './lib/models/color-format.model';
89
95
  export * from './lib/models/allowed-file-types.model';
96
+ export * from './lib/models/file-upload-payload-model';
90
97
  export * from './lib/models/file-upload-presigned-url-res.model';
98
+ export * from './lib/models/file-upload-response.model';
91
99
  export * from './lib/models/accordion-info.model';
92
100
  export * from './lib/models/inactive-tenant.model';
93
101
  export * from './lib/models/table-column-menu-info.model';
102
+ export * from './lib/models/view-files-format.model';
94
103
  export * from './lib/services/datepicker.service';
95
104
  export * from './lib/services/form-utility.service';
96
105
  export * from './lib/services/file-upload.service';