@seniorsistemas/angular-components 17.1.7 → 17.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/bundles/seniorsistemas-angular-components.umd.js +880 -116
  2. package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
  4. package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
  5. package/components/button/button.component.d.ts +1 -0
  6. package/components/file-upload/file-upload.component.d.ts +7 -2
  7. package/components/file-upload/models/file-upload-permissions.d.ts +6 -0
  8. package/components/file-upload/models/index.d.ts +1 -0
  9. package/components/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +28 -0
  10. package/components/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +2 -0
  11. package/components/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +14 -0
  12. package/components/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +21 -0
  13. package/components/tiered-menu/index.d.ts +3 -0
  14. package/components/tiered-menu/models/index.d.ts +2 -0
  15. package/components/tiered-menu/models/tiered-menu-item-data.d.ts +7 -0
  16. package/components/tiered-menu/models/tiered-menu-item-internal-data.d.ts +10 -0
  17. package/components/tiered-menu/tiered-menu.directive.d.ts +37 -0
  18. package/components/tiered-menu/tiered-menu.event.service.d.ts +18 -0
  19. package/components/tiered-menu/tiered-menu.module.d.ts +2 -0
  20. package/components/tiered-menu/tiered-menu.service.d.ts +10 -0
  21. package/esm2015/components/button/button.component.js +6 -2
  22. package/esm2015/components/file-upload/file-upload.component.js +13 -5
  23. package/esm2015/components/file-upload/file-upload.module.js +2 -2
  24. package/esm2015/components/file-upload/models/file-upload-permissions.js +12 -0
  25. package/esm2015/components/file-upload/models/index.js +2 -1
  26. package/esm2015/components/tiered-menu/components/tiered-menu/tiered-menu.component.js +219 -0
  27. package/esm2015/components/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.js +13 -0
  28. package/esm2015/components/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.js +68 -0
  29. package/esm2015/components/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.js +131 -0
  30. package/esm2015/components/tiered-menu/index.js +3 -0
  31. package/esm2015/components/tiered-menu/models/index.js +1 -0
  32. package/esm2015/components/tiered-menu/models/tiered-menu-item-data.js +1 -0
  33. package/esm2015/components/tiered-menu/models/tiered-menu-item-internal-data.js +1 -0
  34. package/esm2015/components/tiered-menu/tiered-menu.directive.js +212 -0
  35. package/esm2015/components/tiered-menu/tiered-menu.event.service.js +39 -0
  36. package/esm2015/components/tiered-menu/tiered-menu.module.js +35 -0
  37. package/esm2015/components/tiered-menu/tiered-menu.service.js +39 -0
  38. package/esm2015/components/tooltip/tooltip.directive.js +2 -2
  39. package/esm2015/public-api.js +2 -1
  40. package/esm2015/seniorsistemas-angular-components.js +7 -1
  41. package/esm5/components/button/button.component.js +6 -2
  42. package/esm5/components/file-upload/file-upload.component.js +13 -5
  43. package/esm5/components/file-upload/file-upload.module.js +2 -2
  44. package/esm5/components/file-upload/models/file-upload-permissions.js +12 -0
  45. package/esm5/components/file-upload/models/index.js +2 -1
  46. package/esm5/components/tiered-menu/components/tiered-menu/tiered-menu.component.js +224 -0
  47. package/esm5/components/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.js +16 -0
  48. package/esm5/components/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.js +70 -0
  49. package/esm5/components/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.js +133 -0
  50. package/esm5/components/tiered-menu/index.js +3 -0
  51. package/esm5/components/tiered-menu/models/index.js +1 -0
  52. package/esm5/components/tiered-menu/models/tiered-menu-item-data.js +1 -0
  53. package/esm5/components/tiered-menu/models/tiered-menu-item-internal-data.js +1 -0
  54. package/esm5/components/tiered-menu/tiered-menu.directive.js +216 -0
  55. package/esm5/components/tiered-menu/tiered-menu.event.service.js +40 -0
  56. package/esm5/components/tiered-menu/tiered-menu.module.js +38 -0
  57. package/esm5/components/tiered-menu/tiered-menu.service.js +44 -0
  58. package/esm5/components/tooltip/tooltip.directive.js +2 -2
  59. package/esm5/public-api.js +2 -1
  60. package/esm5/seniorsistemas-angular-components.js +7 -1
  61. package/fesm2015/seniorsistemas-angular-components.js +845 -114
  62. package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
  63. package/fesm5/seniorsistemas-angular-components.js +876 -120
  64. package/fesm5/seniorsistemas-angular-components.js.map +1 -1
  65. package/package.json +1 -1
  66. package/public-api.d.ts +1 -0
  67. package/seniorsistemas-angular-components.d.ts +6 -0
  68. package/seniorsistemas-angular-components.metadata.json +1 -1
@@ -8,7 +8,7 @@ import { RouterModule, NavigationEnd, PRIMARY_OUTLET, ActivatedRoute, Router } f
8
8
  import { BreadcrumbModule as BreadcrumbModule$1 } from 'primeng/breadcrumb';
9
9
  import { Subject, of, from, forkJoin, throwError, ReplaySubject } from 'rxjs';
10
10
  import { takeUntil, filter, tap, map, switchMap, catchError, delay, debounceTime, repeat, finalize, take } from 'rxjs/operators';
11
- import { TieredMenu, TieredMenuModule } from 'primeng/tieredmenu';
11
+ import { TieredMenu, TieredMenuModule as TieredMenuModule$1 } from 'primeng/tieredmenu';
12
12
  import { TooltipModule as TooltipModule$1 } from 'primeng/tooltip';
13
13
  import { DomHandler } from 'primeng/dom';
14
14
  import { Calendar, CalendarModule } from 'primeng/calendar';
@@ -39,7 +39,7 @@ import { PanelModule as PanelModule$1 } from 'primeng/panel';
39
39
  import { RadioButtonModule } from 'primeng/radiobutton';
40
40
  import { SliderModule } from 'primeng/slider';
41
41
  import { ProgressBarModule as ProgressBarModule$1 } from 'primeng/progressbar';
42
- import { DomSanitizer } from '@angular/platform-browser';
42
+ import { DomSanitizer, BrowserModule } from '@angular/platform-browser';
43
43
  import Cropper from 'cropperjs';
44
44
  import * as elementResizeDetectorMaker_ from 'element-resize-detector';
45
45
  import { FocusTrapFactory, A11yModule } from '@angular/cdk/a11y';
@@ -509,7 +509,7 @@ let TooltipDirective = class TooltipDirective {
509
509
  }
510
510
  showTooltip() {
511
511
  if (this.componentRef !== null) {
512
- this.componentRef.instance.visible = true;
512
+ this.componentRef.instance.visible = this.visible;
513
513
  window.addEventListener('mousemove', this.boundOnWindowMouseMoveFunction);
514
514
  }
515
515
  }
@@ -915,6 +915,7 @@ let ButtonComponent = ButtonComponent_1 = class ButtonComponent {
915
915
  constructor() {
916
916
  this.minWidth = "40px";
917
917
  this.id = `s-button-${ButtonComponent_1.nextId++}`;
918
+ this.tooltipPosition = "top";
918
919
  this.caret = true;
919
920
  this.baseZIndex = 0;
920
921
  this.disabled = false;
@@ -968,6 +969,9 @@ __decorate([
968
969
  __decorate([
969
970
  Input()
970
971
  ], ButtonComponent.prototype, "tooltip", void 0);
972
+ __decorate([
973
+ Input()
974
+ ], ButtonComponent.prototype, "tooltipPosition", void 0);
971
975
  __decorate([
972
976
  Input()
973
977
  ], ButtonComponent.prototype, "iconClass", void 0);
@@ -1016,7 +1020,7 @@ __decorate([
1016
1020
  ButtonComponent = ButtonComponent_1 = __decorate([
1017
1021
  Component({
1018
1022
  selector: "s-button",
1019
- template: "<p-tieredMenu [id]=\"id + '-menu'\" [popup]=\"true\" appendTo=\"body\" [baseZIndex]=\"baseZIndex\"></p-tieredMenu>\n\n<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n [ngClass]=\"{\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': iconClass,\n 's-button-with-text': label,\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-multiple': (caret && (model && model.length)) || rightIconClass,\n 's-button-active': isOpen(),\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation()\n }\"\n [disabled]=\"disabled\"\n [pTooltip]=\"tooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [tooltipZIndex]=\"tooltipZIndex\"\n (click)=\"onClick.emit($event)\"\n (mouseenter)=\"updateTooltipZIndex()\"\n>\n <span \n *ngIf=\"iconClass\" \n [class]=\"iconClass\" \n [ngClass]=\"{ \n 's-button-icon': true,\n 's-button-icon-margin-right': !label && model && model.length\n }\" \n aria-hidden=\"true\">\n </span>\n <span \n *ngIf=\"label\" \n class=\"s-button-text\"\n [ngClass]=\"{\n 's-button-icon-margin-right': !!rightIconClass || (model && model.length),\n 's-button-icon-margin-left': !!iconClass\n }\">\n {{ label }}\n </span>\n <ng-content></ng-content>\n <span \n *ngIf=\"rightIconClass\" \n [class]=\"rightIconClass\" \n [ngClass]=\"{ 's-button-right-icon': true }\" \n aria-hidden=\"true\">\n </span>\n <span\n *ngIf=\"caret && (model && model.length)\" \n class=\"fa fa-fw fa-caret-down\"\n aria-hidden=\"true\">\n </span>\n</button>\n",
1023
+ template: "<p-tieredMenu [id]=\"id + '-menu'\" [popup]=\"true\" appendTo=\"body\" [baseZIndex]=\"baseZIndex\"></p-tieredMenu>\n\n<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n [ngClass]=\"{\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': iconClass,\n 's-button-with-text': label,\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-multiple': (caret && (model && model.length)) || rightIconClass,\n 's-button-active': isOpen(),\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation()\n }\"\n [disabled]=\"disabled\"\n [pTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n showDelay=\"500\"\n [tooltipZIndex]=\"tooltipZIndex\"\n (click)=\"onClick.emit($event)\"\n (mouseenter)=\"updateTooltipZIndex()\"\n>\n <span \n *ngIf=\"iconClass\" \n [class]=\"iconClass\" \n [ngClass]=\"{ \n 's-button-icon': true,\n 's-button-icon-margin-right': !label && model && model.length\n }\" \n aria-hidden=\"true\">\n </span>\n <span \n *ngIf=\"label\" \n class=\"s-button-text\"\n [ngClass]=\"{\n 's-button-icon-margin-right': !!rightIconClass || (model && model.length),\n 's-button-icon-margin-left': !!iconClass\n }\">\n {{ label }}\n </span>\n <ng-content></ng-content>\n <span \n *ngIf=\"rightIconClass\" \n [class]=\"rightIconClass\" \n [ngClass]=\"{ 's-button-right-icon': true }\" \n aria-hidden=\"true\">\n </span>\n <span\n *ngIf=\"caret && (model && model.length)\" \n class=\"fa fa-fw fa-caret-down\"\n aria-hidden=\"true\">\n </span>\n</button>\n",
1020
1024
  styles: ["button{-ms-flex-align:center;align-items:center;border-radius:4px;border:1px solid;cursor:pointer;font-family:\"Open Sans\",sans-serif;font-size:14px;height:34px;max-width:100%;min-width:40px;outline:0;overflow:visible;padding:5px 10px;position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;text-decoration:none;text-transform:none;vertical-align:bottom;transition:background-color .2s ease-out,color .2s ease-out,border-color .2s ease-out}button:disabled{opacity:.5;filter:Alpha(Opacity=50);background-image:none}button:disabled,button:disabled *{cursor:text!important}button.s-button-auxiliary{border-radius:20px}button.s-button-size-small{padding:0 20px;height:25px}button.s-button-with-icon.s-button-multiple,button.s-button-with-text{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button .s-button-icon,button .s-button-menu-icon,button .s-button-right-icon,button.s-button-with-icon.s-button-multiple:not(.s-button-with-text) .s-button-icon{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}button.s-button-multiple .s-button-text{display:-ms-flexbox;display:flex;-ms-flex-pack:left;justify-content:left;-ms-flex-align:left;align-items:left}button.s-button-with-icon .s-button-text{display:-ms-flexbox;display:flex;-ms-flex-pack:right;justify-content:right;-ms-flex-align:right;align-items:right}.s-button-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.s-button-menu-icon{right:10px;transition:transform .2s ease-out}.s-button-icon-margin-left{margin-left:10px}.s-button-icon-margin-right{margin-right:10px}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}button,button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button .s-button-icon,button .s-button-menu-icon,button .s-button-right-icon,button .s-button-text,button.s-button-priority-primary .s-button-icon,button.s-button-priority-primary .s-button-menu-icon,button.s-button-priority-primary .s-button-right-icon,button.s-button-priority-primary .s-button-text{color:#fff}button.s-button-priority-primary:hover,button:hover{background-color:#2a6496}button.s-button-priority-primary:focus,button:focus{background-color:#2a6496;border-color:#22dce6}button.s-button-active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled),button.s-button-priority-primary:active:not(:disabled),button:active:not(:disabled){background-color:#245682;border-color:#245682}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .s-button-icon,button.s-button-priority-secondary .s-button-menu-icon,button.s-button-priority-secondary .s-button-right-icon,button.s-button-priority-secondary .s-button-text{color:#fff}button.s-button-priority-secondary:hover{background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary.s-button-active:not(:disabled),button.s-button-priority-secondary:active:not(:disabled){background-color:#495e6a;border-color:#495e6a}button.s-button-priority-default{background-color:#fff;border-color:#ccc}button.s-button-priority-default .s-button-icon,button.s-button-priority-default .s-button-menu-icon,button.s-button-priority-default .s-button-right-icon,button.s-button-priority-default .s-button-text{color:#333}button.s-button-priority-default:hover{background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default.s-button-active:not(:disabled),button.s-button-priority-default:active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-menu-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text{color:#428bca}button.s-button-priority-link:hover{background-color:transparent}button.s-button-priority-link:hover .s-button-icon,button.s-button-priority-link:hover .s-button-menu-icon,button.s-button-priority-link:hover .s-button-right-icon,button.s-button-priority-link:hover .s-button-text{color:#2a6496}button.s-button-priority-link:focus{border-color:#22dce6;background-color:transparent}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-menu-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text{color:#2a6496}button.s-button-priority-link.s-button-active:not(:disabled),button.s-button-priority-link:active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text{color:#245682}.s-button--slide.s-button-with-icon.s-button-multiple,.s-button--slide.s-button-with-text{min-width:40px}.s-button--slide .s-button-text{position:absolute;opacity:0;width:0}.s-button--slide:hover .s-button-text{transition:1s;position:relative;opacity:1;width:auto}.s-button--slide:hover.s-button--rotate-animation .s-button-icon,.s-button--slide:hover.s-button--rotate-animation .s-button-right-icon{transition:1.5s;transform:rotate(360deg)}"]
1021
1025
  })
1022
1026
  ], ButtonComponent);
@@ -1025,7 +1029,7 @@ let ButtonModule = class ButtonModule {
1025
1029
  };
1026
1030
  ButtonModule = __decorate([
1027
1031
  NgModule({
1028
- imports: [CommonModule, RouterModule, TieredMenuModule, TooltipModule$1],
1032
+ imports: [CommonModule, RouterModule, TieredMenuModule$1, TooltipModule$1],
1029
1033
  declarations: [ButtonComponent],
1030
1034
  exports: [ButtonComponent],
1031
1035
  })
@@ -3907,113 +3911,6 @@ EmptyStateModule = __decorate([
3907
3911
  })
3908
3912
  ], EmptyStateModule);
3909
3913
 
3910
- var ValidateErrors;
3911
- (function (ValidateErrors) {
3912
- ValidateErrors["MAX_FILE_SIZE"] = "MAX_FILE_SIZE";
3913
- ValidateErrors["MAX_FILE_LIMIT"] = "MAX_FILE_LIMIT";
3914
- ValidateErrors["UNSUPPORTED_EXTENSION"] = "UNSUPPORTED_EXTENSION";
3915
- })(ValidateErrors || (ValidateErrors = {}));
3916
-
3917
- const Breakpoints = {
3918
- SM_MIN: 0,
3919
- SM_MAX: 767,
3920
- MD_MIN: 768,
3921
- MD_MAX: 991,
3922
- LG_MIN: 992,
3923
- LG_MAX: 1199,
3924
- XL_MIN: 1200,
3925
- XL_MAX: Infinity,
3926
- };
3927
-
3928
- class ExportUtils {
3929
- constructor() {
3930
- throw new Error("Classe não deve ser instanciada.");
3931
- }
3932
- static addClass(element, className) {
3933
- element.nativeElement.className = `${element.nativeElement.className} ${className}`;
3934
- }
3935
- static removeClass(element, className) {
3936
- if (element.nativeElement.className.includes(className)) {
3937
- element.nativeElement.className = element.nativeElement.className.replace(className, "");
3938
- }
3939
- }
3940
- static exportCSV(columns = [], data = [], csvSeparator = ";", documentName = "download") {
3941
- let csv = "\ufeff";
3942
- columns.filter((column) => column.exportable && column.field).forEach((column, i) => {
3943
- csv += `"${column.header || column.field}"`;
3944
- if (i < columns.length - 1)
3945
- csv += csvSeparator;
3946
- });
3947
- data.forEach((record) => {
3948
- csv += "\n";
3949
- columns.filter((column) => column.exportable && column.field).forEach((column, i) => {
3950
- let cellData;
3951
- if (Array.isArray(column.field)) {
3952
- const fieldValues = column.field.map((col) => this.resolveFieldData(record, col));
3953
- cellData = fieldValues
3954
- .flat()
3955
- .filter((value) => value !== null && value !== undefined)
3956
- .join(column.separator);
3957
- }
3958
- else {
3959
- cellData = this.resolveFieldData(record, column.field);
3960
- }
3961
- if (cellData != null)
3962
- cellData = String(cellData).replace(/"/g, `""`);
3963
- else
3964
- cellData = "";
3965
- csv += `"${cellData}"`;
3966
- if (i < columns.length - 1)
3967
- csv += csvSeparator;
3968
- });
3969
- });
3970
- const blob = new Blob([csv], {
3971
- type: "text/csv;charset=utf-8;",
3972
- });
3973
- if (window.navigator.msSaveOrOpenBlob)
3974
- navigator.msSaveOrOpenBlob(blob, documentName + ".csv");
3975
- else {
3976
- const link = document.createElement("a");
3977
- link.style.display = "none";
3978
- document.body.appendChild(link);
3979
- if (link.download !== undefined) {
3980
- link.setAttribute("href", URL.createObjectURL(blob));
3981
- link.setAttribute("download", documentName + ".csv");
3982
- link.click();
3983
- }
3984
- else {
3985
- csv = "data:text/csv;charset=utf-8," + csv;
3986
- window.open(encodeURI(csv));
3987
- }
3988
- document.body.removeChild(link);
3989
- }
3990
- }
3991
- static resolveFieldData(data, field) {
3992
- if (data && field) {
3993
- if (this.isFunction(field))
3994
- return field(data);
3995
- else if (field.indexOf(".") == -1)
3996
- return data[field];
3997
- else {
3998
- const fields = field.split(".");
3999
- let value = data;
4000
- for (let i = 0, len = fields.length; i < len; ++i) {
4001
- if (value == null) {
4002
- return null;
4003
- }
4004
- value = value[fields[i]];
4005
- }
4006
- return value;
4007
- }
4008
- }
4009
- else
4010
- return null;
4011
- }
4012
- static isFunction(obj) {
4013
- return !!(obj && obj.constructor && obj.call && obj.apply);
4014
- }
4015
- }
4016
-
4017
3914
  /**
4018
3915
  * Formats a JSON response to a JS object
4019
3916
  * @param response The response to format
@@ -4209,6 +4106,125 @@ FileUploadService = __decorate([
4209
4106
  Injectable()
4210
4107
  ], FileUploadService);
4211
4108
 
4109
+ const Breakpoints = {
4110
+ SM_MIN: 0,
4111
+ SM_MAX: 767,
4112
+ MD_MIN: 768,
4113
+ MD_MAX: 991,
4114
+ LG_MIN: 992,
4115
+ LG_MAX: 1199,
4116
+ XL_MIN: 1200,
4117
+ XL_MAX: Infinity,
4118
+ };
4119
+
4120
+ class ExportUtils {
4121
+ constructor() {
4122
+ throw new Error("Classe não deve ser instanciada.");
4123
+ }
4124
+ static addClass(element, className) {
4125
+ element.nativeElement.className = `${element.nativeElement.className} ${className}`;
4126
+ }
4127
+ static removeClass(element, className) {
4128
+ if (element.nativeElement.className.includes(className)) {
4129
+ element.nativeElement.className = element.nativeElement.className.replace(className, "");
4130
+ }
4131
+ }
4132
+ static exportCSV(columns = [], data = [], csvSeparator = ";", documentName = "download") {
4133
+ let csv = "\ufeff";
4134
+ columns.filter((column) => column.exportable && column.field).forEach((column, i) => {
4135
+ csv += `"${column.header || column.field}"`;
4136
+ if (i < columns.length - 1)
4137
+ csv += csvSeparator;
4138
+ });
4139
+ data.forEach((record) => {
4140
+ csv += "\n";
4141
+ columns.filter((column) => column.exportable && column.field).forEach((column, i) => {
4142
+ let cellData;
4143
+ if (Array.isArray(column.field)) {
4144
+ const fieldValues = column.field.map((col) => this.resolveFieldData(record, col));
4145
+ cellData = fieldValues
4146
+ .flat()
4147
+ .filter((value) => value !== null && value !== undefined)
4148
+ .join(column.separator);
4149
+ }
4150
+ else {
4151
+ cellData = this.resolveFieldData(record, column.field);
4152
+ }
4153
+ if (cellData != null)
4154
+ cellData = String(cellData).replace(/"/g, `""`);
4155
+ else
4156
+ cellData = "";
4157
+ csv += `"${cellData}"`;
4158
+ if (i < columns.length - 1)
4159
+ csv += csvSeparator;
4160
+ });
4161
+ });
4162
+ const blob = new Blob([csv], {
4163
+ type: "text/csv;charset=utf-8;",
4164
+ });
4165
+ if (window.navigator.msSaveOrOpenBlob)
4166
+ navigator.msSaveOrOpenBlob(blob, documentName + ".csv");
4167
+ else {
4168
+ const link = document.createElement("a");
4169
+ link.style.display = "none";
4170
+ document.body.appendChild(link);
4171
+ if (link.download !== undefined) {
4172
+ link.setAttribute("href", URL.createObjectURL(blob));
4173
+ link.setAttribute("download", documentName + ".csv");
4174
+ link.click();
4175
+ }
4176
+ else {
4177
+ csv = "data:text/csv;charset=utf-8," + csv;
4178
+ window.open(encodeURI(csv));
4179
+ }
4180
+ document.body.removeChild(link);
4181
+ }
4182
+ }
4183
+ static resolveFieldData(data, field) {
4184
+ if (data && field) {
4185
+ if (this.isFunction(field))
4186
+ return field(data);
4187
+ else if (field.indexOf(".") == -1)
4188
+ return data[field];
4189
+ else {
4190
+ const fields = field.split(".");
4191
+ let value = data;
4192
+ for (let i = 0, len = fields.length; i < len; ++i) {
4193
+ if (value == null) {
4194
+ return null;
4195
+ }
4196
+ value = value[fields[i]];
4197
+ }
4198
+ return value;
4199
+ }
4200
+ }
4201
+ else
4202
+ return null;
4203
+ }
4204
+ static isFunction(obj) {
4205
+ return !!(obj && obj.constructor && obj.call && obj.apply);
4206
+ }
4207
+ }
4208
+
4209
+ var ValidateErrors;
4210
+ (function (ValidateErrors) {
4211
+ ValidateErrors["MAX_FILE_SIZE"] = "MAX_FILE_SIZE";
4212
+ ValidateErrors["MAX_FILE_LIMIT"] = "MAX_FILE_LIMIT";
4213
+ ValidateErrors["UNSUPPORTED_EXTENSION"] = "UNSUPPORTED_EXTENSION";
4214
+ })(ValidateErrors || (ValidateErrors = {}));
4215
+
4216
+ var FileUploadPermissions;
4217
+ (function (FileUploadPermissions) {
4218
+ FileUploadPermissions["Add"] = "add";
4219
+ FileUploadPermissions["Read"] = "read";
4220
+ FileUploadPermissions["Remove"] = "remove";
4221
+ })(FileUploadPermissions || (FileUploadPermissions = {}));
4222
+ const ALL_PERMISSIONS = [
4223
+ FileUploadPermissions.Add,
4224
+ FileUploadPermissions.Read,
4225
+ FileUploadPermissions.Remove,
4226
+ ];
4227
+
4212
4228
  var FileUploadComponent_1;
4213
4229
  const moment$3 = moment_;
4214
4230
  let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
@@ -4216,6 +4232,9 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
4216
4232
  this.sanitizer = sanitizer;
4217
4233
  this.fileUploadService = fileUploadService;
4218
4234
  this.translate = translate;
4235
+ this.ADD_PERMISSION = FileUploadPermissions.Add;
4236
+ this.READ_PERMISSION = FileUploadPermissions.Read;
4237
+ this.REMOVE_PERMISSION = FileUploadPermissions.Remove;
4219
4238
  this.id = `s-file-upload-${FileUploadComponent_1.nextId++}`;
4220
4239
  this.chooseLabel = "Anexar arquivos";
4221
4240
  this.removeLabel = "Remover";
@@ -4225,6 +4244,7 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
4225
4244
  this.ariaLabelProgress = "Carregando arquivo";
4226
4245
  this.disabled = false;
4227
4246
  this.showFileUploadDate = false;
4247
+ this.permissions = ALL_PERMISSIONS;
4228
4248
  this.uploadHandler = new EventEmitter();
4229
4249
  this.removeFile = new EventEmitter();
4230
4250
  this.cancelUpload = new EventEmitter();
@@ -4433,6 +4453,9 @@ __decorate([
4433
4453
  __decorate([
4434
4454
  Input()
4435
4455
  ], FileUploadComponent.prototype, "showFileUploadDate", void 0);
4456
+ __decorate([
4457
+ Input()
4458
+ ], FileUploadComponent.prototype, "permissions", void 0);
4436
4459
  __decorate([
4437
4460
  Input()
4438
4461
  ], FileUploadComponent.prototype, "files", null);
@@ -4457,7 +4480,7 @@ __decorate([
4457
4480
  FileUploadComponent = FileUploadComponent_1 = __decorate([
4458
4481
  Component({
4459
4482
  selector: "s-file-upload",
4460
- template: "<div\n [id]=\"id\"\n class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id+'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer\n ? $event.dataTransfer.files\n : $event.target.files)\"> \n <s-button\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled\"\n [auxiliary]=\"false\">\n </s-button>\n </div>\n\n <section\n *ngIf=\"files.length\" \n [id]=\"id + 'fileupload-list'\"\n class=\"s-fileupload-list\"\n role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div\n class=\"s-fileupload-list-file\"\n role=\"row\">\n <div\n [id]=\"id + '-file-' + i + '-name'\"\n class=\"s-fileupload-list-file-name\"\n role=\"gridcell\">\n <ng-container *ngTemplateOutlet=\"file.savedFile || file.progress === 100\n ? descriptionUrl\n : description; context: {\n $implicit: file,\n index: i\n }\">\n </ng-container>\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div\n class=\"s-fileupload-list-file-status\"\n role=\"gridcell\">\n <p-progressBar\n *ngIf=\"file.isUploading && !isSmallDevice\"\n [style]=\"{ 'width': '250px', 'background-color': '#d8d8d8', 'border-radius': '0px', 'height': '14px'}\"\n [value]=\"file.progress\"\n [showValue]=\"false\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelProgress\">\n </p-progressBar>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\" \n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress\">\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelSuccess || successTooltip\"\n [pTooltip]=\"successTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n <span\n *ngIf=\"file.error?.message\" \n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n </div>\n <div\n class=\"s-fileupload-list-file-actions\"\n role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\">\n {{cancelLabel}}\n </a>\n <a\n *ngIf=\"!file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel\">\n {{removeLabel}}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template\n #descriptionUrl\n let-file\n let-i = index>\n <a\n [id]=\"id + '-file-' + i + '-name-link'\"\n tabindex=\"0\"\n (click)=\"onDowloadFile(i)\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">{{file.name}}\n </a>\n <a\n style=\"display: none;\"\n [href]=\"file.objectURL\"\n target=\"_blank\"\n download\n #anchor>\n </a>\n</ng-template>\n\n<ng-template\n #description\n let-file>\n <span\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{file.name}}\n </span>\n</ng-template>\n",
4483
+ template: "<div\n [id]=\"id\"\n class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id+'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer\n ? $event.dataTransfer.files\n : $event.target.files)\"> \n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled\"\n [auxiliary]=\"false\">\n </s-button>\n </div>\n\n <section\n *ngIf=\"files.length\" \n [id]=\"id + 'fileupload-list'\"\n class=\"s-fileupload-list\"\n role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div\n class=\"s-fileupload-list-file\"\n role=\"row\">\n <div\n [id]=\"id + '-file-' + i + '-name'\"\n class=\"s-fileupload-list-file-name\"\n role=\"gridcell\">\n <ng-container *ngTemplateOutlet=\"permissions.includes(READ_PERMISSION) && file.savedFile || file.progress === 100\n ? descriptionUrl\n : description; context: {\n $implicit: file,\n index: i\n }\">\n </ng-container>\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div\n class=\"s-fileupload-list-file-status\"\n role=\"gridcell\">\n <p-progressBar\n *ngIf=\"file.isUploading && !isSmallDevice\"\n [style]=\"{ 'width': '250px', 'background-color': '#d8d8d8', 'border-radius': '0px', 'height': '14px'}\"\n [value]=\"file.progress\"\n [showValue]=\"false\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelProgress\">\n </p-progressBar>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\" \n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress\">\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelSuccess || successTooltip\"\n [pTooltip]=\"successTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n <span\n *ngIf=\"file.error?.message\" \n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\">\n </span>\n </div>\n <div\n class=\"s-fileupload-list-file-actions\"\n role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\">\n {{cancelLabel}}\n </a>\n <a\n *ngIf=\"permissions.includes(REMOVE_PERMISSION) && !file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel\">\n {{removeLabel}}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template\n #descriptionUrl\n let-file\n let-i = index>\n <a\n [id]=\"id + '-file-' + i + '-name-link'\"\n tabindex=\"0\"\n (click)=\"onDowloadFile(i)\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">{{file.name}}\n </a>\n <a\n style=\"display: none;\"\n [href]=\"file.objectURL\"\n target=\"_blank\"\n download\n #anchor>\n </a>\n</ng-template>\n\n<ng-template\n #description\n let-file>\n <span\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{file.name}}\n </span>\n</ng-template>\n",
4461
4484
  styles: [".s-fileupload .s-fileupload-choose{position:relative;margin:15px 0;width:-webkit-max-content;width:max-content}.s-fileupload input[type=file]{display:none}.s-fileupload-list{border:1px solid #ccc}.s-fileupload-list-file:not(:first-child){border-top:1px solid #ccc}.s-fileupload-list .s-fileupload-list-file{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;padding:15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:center;align-self:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .s-fileupload-list-file-name-date{font-size:.75rem;color:#999}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name>a{cursor:pointer;text-decoration:none}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-fileupload-list .s-fileupload-list-file .fas.fa-circle-notch{color:#d8d8d8;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-check{color:#0c9348;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-times{color:#c13018;font-size:12px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin-top:15px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;width:100%}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action{text-decoration:none;color:#428bca}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :focus,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :visited,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action:hover{text-decoration:none}@media (min-width:768px){.s-fileupload-list .s-fileupload-list-file{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{width:auto;-ms-flex-positive:2;flex-grow:2}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{margin:0 15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin:0;width:auto}}"]
4462
4485
  })
4463
4486
  ], FileUploadComponent);
@@ -13181,6 +13204,714 @@ CodeEditorModule = __decorate([
13181
13204
  })
13182
13205
  ], CodeEditorModule);
13183
13206
 
13207
+ let TieredMenuEventService = class TieredMenuEventService {
13208
+ constructor() {
13209
+ this.incrementCurrentItemEvent = new EventEmitter();
13210
+ this.decrementCurrentItemEvent = new EventEmitter();
13211
+ this.closeAllMenusEvent = new EventEmitter();
13212
+ this.selectItemEvent = new EventEmitter();
13213
+ this.openItemMenuEvent = new EventEmitter();
13214
+ this.closeItemMenuEvent = new EventEmitter();
13215
+ this.createMenuEvent = new EventEmitter();
13216
+ }
13217
+ emitIncrementCurrentItemEvent() {
13218
+ this.incrementCurrentItemEvent.emit();
13219
+ }
13220
+ emitDecrementCurrentItemEvent() {
13221
+ this.decrementCurrentItemEvent.emit();
13222
+ }
13223
+ emitCloseAllMenusEvent() {
13224
+ this.closeAllMenusEvent.emit();
13225
+ }
13226
+ emitSelectItemEvent(item) {
13227
+ this.selectItemEvent.emit(item);
13228
+ }
13229
+ emitOpenItemMenuEvent(item) {
13230
+ this.openItemMenuEvent.emit(item);
13231
+ }
13232
+ emitCloseItemMenuEvent(item) {
13233
+ this.closeItemMenuEvent.emit(item);
13234
+ }
13235
+ emitCreateMenuEvent(item) {
13236
+ this.createMenuEvent.emit(item);
13237
+ }
13238
+ };
13239
+ TieredMenuEventService = __decorate([
13240
+ Injectable()
13241
+ ], TieredMenuEventService);
13242
+
13243
+ let TieredMenuService = class TieredMenuService {
13244
+ normalizeData(items, parent) {
13245
+ return items.map((i) => {
13246
+ if (i.submenu) {
13247
+ i.submenu = this.normalizeData(i.submenu, i);
13248
+ }
13249
+ i.id = `id-${Math.random().toString(36).substring(2, 9)}-${Date.now().toString(36)}`;
13250
+ i.parent = parent;
13251
+ i.isOpen = false;
13252
+ return i;
13253
+ });
13254
+ }
13255
+ markAllItemsAsClosed(items) {
13256
+ return items.map((item) => {
13257
+ if (item.submenu) {
13258
+ item.submenu = this.markAllItemsAsClosed(item.submenu);
13259
+ }
13260
+ item.isOpen = false;
13261
+ return item;
13262
+ });
13263
+ }
13264
+ searchTheHierarchy(item1, item2) {
13265
+ let itemAux = item2;
13266
+ while (itemAux) {
13267
+ if (itemAux === item1) {
13268
+ return true;
13269
+ }
13270
+ itemAux = itemAux.parent;
13271
+ }
13272
+ return false;
13273
+ }
13274
+ };
13275
+ TieredMenuService = __decorate([
13276
+ Injectable()
13277
+ ], TieredMenuService);
13278
+
13279
+ let TieredMenuNestedComponent = class TieredMenuNestedComponent {
13280
+ constructor(tieredMenuService, _tieredMenuEventService) {
13281
+ this.tieredMenuService = tieredMenuService;
13282
+ this._tieredMenuEventService = _tieredMenuEventService;
13283
+ this.top = 0;
13284
+ this.maxHeight = 0;
13285
+ this._unsubscribe$ = new Subject();
13286
+ }
13287
+ ngOnInit() {
13288
+ this.tieredMenuService.currentItems = this.items;
13289
+ this._subscribeEvents();
13290
+ }
13291
+ ngOnDestroy() {
13292
+ this._unsubscribe$.next();
13293
+ this._unsubscribe$.complete();
13294
+ }
13295
+ _incrementCurItem() {
13296
+ if (!this.tieredMenuService.currentItem) {
13297
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];
13298
+ return;
13299
+ }
13300
+ const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) + 1;
13301
+ if (curIndex < this.tieredMenuService.currentItems.length) {
13302
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];
13303
+ }
13304
+ else {
13305
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];
13306
+ }
13307
+ if (this.tieredMenuService.currentItem.divider) {
13308
+ this._incrementCurItem();
13309
+ }
13310
+ }
13311
+ _decrementCurItem() {
13312
+ if (!this.tieredMenuService.currentItem) {
13313
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];
13314
+ return;
13315
+ }
13316
+ const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) - 1;
13317
+ if (curIndex >= 0) {
13318
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];
13319
+ }
13320
+ else {
13321
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[this.tieredMenuService.currentItems.length - 1];
13322
+ }
13323
+ if (this.tieredMenuService.currentItem.divider) {
13324
+ this._decrementCurItem();
13325
+ }
13326
+ }
13327
+ _closeItem(item) {
13328
+ var _a;
13329
+ let itemAux = this._lastOpenItem;
13330
+ while (itemAux && itemAux != item) {
13331
+ itemAux.isOpen = false;
13332
+ itemAux = itemAux.parent;
13333
+ }
13334
+ item.isOpen = false;
13335
+ this.tieredMenuService.currentItem = itemAux !== null && itemAux !== void 0 ? itemAux : this.tieredMenuService.items[0];
13336
+ this.tieredMenuService.currentItems = ((_a = itemAux === null || itemAux === void 0 ? void 0 : itemAux.parent) === null || _a === void 0 ? void 0 : _a.submenu) || this.tieredMenuService.items;
13337
+ }
13338
+ _openItem(item) {
13339
+ if (item === null || item === void 0 ? void 0 : item.submenu) {
13340
+ item.isOpen = true;
13341
+ this.tieredMenuService.currentItems = item.submenu;
13342
+ // Only has focus if there has already been interaction.
13343
+ if (this.tieredMenuService.currentItem) {
13344
+ this.tieredMenuService.currentItem = item.submenu[0];
13345
+ }
13346
+ this._lastOpenItem = item;
13347
+ }
13348
+ }
13349
+ _subscribeEvents() {
13350
+ this._tieredMenuEventService.incrementCurrentItemEvent
13351
+ .pipe(takeUntil(this._unsubscribe$))
13352
+ .subscribe(() => {
13353
+ this._incrementCurItem();
13354
+ });
13355
+ this._tieredMenuEventService.decrementCurrentItemEvent
13356
+ .pipe(takeUntil(this._unsubscribe$))
13357
+ .subscribe(() => {
13358
+ this._decrementCurItem();
13359
+ });
13360
+ this._tieredMenuEventService.selectItemEvent
13361
+ .pipe(takeUntil(this._unsubscribe$))
13362
+ .subscribe((item) => {
13363
+ if (item.command) {
13364
+ item.command();
13365
+ // Close all menus after the item was selected.
13366
+ this._tieredMenuEventService.emitCloseAllMenusEvent();
13367
+ }
13368
+ });
13369
+ this._tieredMenuEventService.openItemMenuEvent
13370
+ .pipe(takeUntil(this._unsubscribe$))
13371
+ .subscribe((item) => {
13372
+ var _a, _b;
13373
+ if (!this.tieredMenuService.currentItems.includes(item)) {
13374
+ let itemAux = this._lastOpenItem;
13375
+ while ((_a = itemAux === null || itemAux === void 0 ? void 0 : itemAux.parent) === null || _a === void 0 ? void 0 : _a.parent) {
13376
+ itemAux = itemAux.parent;
13377
+ }
13378
+ this._tieredMenuEventService.emitCloseItemMenuEvent((_b = itemAux.parent) !== null && _b !== void 0 ? _b : itemAux);
13379
+ }
13380
+ this._lastOpenItem = item;
13381
+ this._openItem(item);
13382
+ });
13383
+ this._tieredMenuEventService.closeItemMenuEvent
13384
+ .pipe(takeUntil(this._unsubscribe$))
13385
+ .subscribe((item) => {
13386
+ if (item) {
13387
+ this._closeItem(item);
13388
+ }
13389
+ });
13390
+ }
13391
+ };
13392
+ TieredMenuNestedComponent.ctorParameters = () => [
13393
+ { type: TieredMenuService },
13394
+ { type: TieredMenuEventService }
13395
+ ];
13396
+ TieredMenuNestedComponent = __decorate([
13397
+ Component({
13398
+ template: "<div\n class=\"menu menu--nested\"\n [ngStyle]=\"{\n 'top': top + 'px',\n 'max-height': maxHeight + 'px'\n }\">\n <ng-container *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: items }\"></ng-container>\n</div>\n\n<ng-template #itemsTemplate let-items>\n <div *ngFor=\"let item of items\">\n <s-tiered-menu-item\n *ngIf=\"!item.divider\"\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [closeOnClick]=\"true\">\n </s-tiered-menu-item>\n\n <s-tiered-menu-divider *ngIf=\"item.divider\"></s-tiered-menu-divider>\n\n <div *ngIf=\"item.submenu && item.isOpen\">\n <div class=\"submenu\">\n <ng-container *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: item.submenu }\"></ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n",
13399
+ styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;min-width:176px;padding:4px 0;position:fixed;z-index:9999;overflow:auto}.menu--nested{width:90vw;margin:0 5vw}.menu .submenu{margin-left:24px}"]
13400
+ })
13401
+ ], TieredMenuNestedComponent);
13402
+
13403
+ var TieredMenuComponent_1;
13404
+ let TieredMenuComponent = TieredMenuComponent_1 = class TieredMenuComponent {
13405
+ constructor(_appRef, _componentFactoryResolver, _injector, tieredMenuService, _tieredMenuEventService) {
13406
+ this._appRef = _appRef;
13407
+ this._componentFactoryResolver = _componentFactoryResolver;
13408
+ this._injector = _injector;
13409
+ this.tieredMenuService = tieredMenuService;
13410
+ this._tieredMenuEventService = _tieredMenuEventService;
13411
+ this.top = 0;
13412
+ this.left = 0;
13413
+ this.menuTriggerEvent = "hover";
13414
+ this._componentRef = null;
13415
+ this._unsubscribe$ = new Subject();
13416
+ this.destroyRequest = new EventEmitter();
13417
+ }
13418
+ ngOnInit() {
13419
+ this.tieredMenuService.currentItems = this.items;
13420
+ this._subscribeEvents();
13421
+ }
13422
+ ngOnDestroy() {
13423
+ this._unsubscribe$.next();
13424
+ this._unsubscribe$.complete();
13425
+ }
13426
+ _incrementCurItem() {
13427
+ if (!this.tieredMenuService.currentItem) {
13428
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];
13429
+ return;
13430
+ }
13431
+ else if (!this.items.includes(this.tieredMenuService.currentItem)) {
13432
+ // Checking if it is the current menu.
13433
+ return;
13434
+ }
13435
+ const currentIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) + 1;
13436
+ if (currentIndex < this.tieredMenuService.currentItems.length) {
13437
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[currentIndex];
13438
+ }
13439
+ else {
13440
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];
13441
+ }
13442
+ if (this.tieredMenuService.currentItem.divider) {
13443
+ this._incrementCurItem();
13444
+ }
13445
+ }
13446
+ _decrementCurItem() {
13447
+ if (!this.tieredMenuService.currentItem) {
13448
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];
13449
+ return;
13450
+ // Checking if it is the current menu.
13451
+ }
13452
+ else if (!this.items.includes(this.tieredMenuService.currentItem)) {
13453
+ return;
13454
+ }
13455
+ const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) - 1;
13456
+ if (curIndex >= 0) {
13457
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];
13458
+ }
13459
+ else {
13460
+ this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[this.tieredMenuService.currentItems.length - 1];
13461
+ }
13462
+ if (this.tieredMenuService.currentItem.divider) {
13463
+ this._decrementCurItem();
13464
+ }
13465
+ }
13466
+ _createMenu(items, position) {
13467
+ if (!this._componentRef && items) {
13468
+ const componentFactory = this._componentFactoryResolver.resolveComponentFactory(TieredMenuComponent_1);
13469
+ this._componentRef = componentFactory.create(this._injector);
13470
+ this._appRef.attachView(this._componentRef.hostView);
13471
+ const domElem = this._componentRef.hostView.rootNodes[0];
13472
+ document.body.appendChild(domElem);
13473
+ // Setting the menu items.
13474
+ this._componentRef.instance.items = items;
13475
+ // Subscribe menu events.
13476
+ this._componentRef.instance.destroyRequest
13477
+ .pipe(takeUntil(this._unsubscribe$))
13478
+ .subscribe((propagate) => {
13479
+ this._destroy(propagate);
13480
+ });
13481
+ this._menuDivElement = domElem.querySelector(".menu");
13482
+ this._setMenuPosition(position);
13483
+ }
13484
+ }
13485
+ _destroy(propagate = true) {
13486
+ if (this._componentRef !== null) {
13487
+ this._appRef.detachView(this._componentRef.hostView);
13488
+ this._componentRef.destroy();
13489
+ this._componentRef = null;
13490
+ this._menuDivElement = null;
13491
+ }
13492
+ if (propagate) {
13493
+ this.destroyRequest.emit();
13494
+ }
13495
+ }
13496
+ _setMenuPosition(position) {
13497
+ var _a;
13498
+ if (this._componentRef !== null) {
13499
+ const { top, right, bottom, left } = position;
13500
+ // I need to calculate the height of the component because the internal elements have not been created yet.
13501
+ const menuHeight = ((_a = this.items) === null || _a === void 0 ? void 0 : _a.length) * 40;
13502
+ const menuWidth = this._menuDivElement.getBoundingClientRect().width;
13503
+ const rightFreeSpace = document.body.clientWidth - right;
13504
+ const bottomFreeSpace = document.body.clientHeight - bottom;
13505
+ if (rightFreeSpace > menuWidth) {
13506
+ this._componentRef.instance.left = right;
13507
+ }
13508
+ else {
13509
+ this._componentRef.instance.left = left - menuWidth;
13510
+ }
13511
+ if (bottomFreeSpace <= menuHeight) {
13512
+ this._componentRef.instance.top = top - menuHeight;
13513
+ }
13514
+ else {
13515
+ this._componentRef.instance.top = top;
13516
+ }
13517
+ }
13518
+ }
13519
+ _subscribeEvents() {
13520
+ // Increment current item event.
13521
+ this._tieredMenuEventService.incrementCurrentItemEvent
13522
+ .pipe(takeUntil(this._unsubscribe$))
13523
+ .subscribe(() => {
13524
+ this._incrementCurItem();
13525
+ });
13526
+ // Decrement current item event.
13527
+ this._tieredMenuEventService.decrementCurrentItemEvent
13528
+ .pipe(takeUntil(this._unsubscribe$))
13529
+ .subscribe(() => {
13530
+ this._decrementCurItem();
13531
+ });
13532
+ // Select item event.
13533
+ this._tieredMenuEventService.selectItemEvent
13534
+ .pipe(takeUntil(this._unsubscribe$))
13535
+ .subscribe((item) => {
13536
+ if (item.submenu) {
13537
+ this._tieredMenuEventService.emitOpenItemMenuEvent(item);
13538
+ }
13539
+ else if (item.command) {
13540
+ this._tieredMenuEventService.emitCloseAllMenusEvent();
13541
+ item.command();
13542
+ }
13543
+ });
13544
+ // Close all menus event.
13545
+ this._tieredMenuEventService.closeAllMenusEvent
13546
+ .pipe(takeUntil(this._unsubscribe$))
13547
+ .subscribe(() => {
13548
+ this._destroy();
13549
+ this.tieredMenuService.currentItem = null;
13550
+ this.tieredMenuService.currentItems = this.tieredMenuService.items;
13551
+ });
13552
+ // Open item menu event.
13553
+ this._tieredMenuEventService.openItemMenuEvent
13554
+ .pipe(takeUntil(this._unsubscribe$))
13555
+ .subscribe((item) => {
13556
+ item.isOpen = false;
13557
+ if (this.tieredMenuService.currentItem) {
13558
+ if (this.tieredMenuService.currentItem.parent === item) {
13559
+ return;
13560
+ }
13561
+ if (!this.tieredMenuService.searchTheHierarchy(this.tieredMenuService.currentItem.parent, item)) {
13562
+ let itemAux = this.tieredMenuService.currentItem;
13563
+ while (itemAux.parent !== item.parent) {
13564
+ this._tieredMenuEventService.emitCloseItemMenuEvent(itemAux);
13565
+ itemAux = itemAux.parent;
13566
+ }
13567
+ }
13568
+ }
13569
+ if (item.submenu) {
13570
+ if (!item.isOpen) {
13571
+ const { top, right, left, bottom } = document
13572
+ .querySelector(`#${item.id}`)
13573
+ .getBoundingClientRect();
13574
+ const position = { top, right, left, bottom };
13575
+ if (this.items.includes(item)) {
13576
+ this._createMenu(item.submenu, position);
13577
+ this.tieredMenuService.currentItems = item.submenu;
13578
+ this.tieredMenuService.currentItem = item.submenu[0];
13579
+ }
13580
+ }
13581
+ }
13582
+ });
13583
+ // Close item menu event.
13584
+ this._tieredMenuEventService.closeItemMenuEvent
13585
+ .pipe(takeUntil(this._unsubscribe$))
13586
+ .subscribe((item) => {
13587
+ var _a, _b;
13588
+ if (this.items.includes(item)) {
13589
+ item.isOpen = false;
13590
+ this.tieredMenuService.currentItems = ((_b = (_a = item === null || item === void 0 ? void 0 : item.parent) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.submenu) || this.tieredMenuService.items;
13591
+ this.tieredMenuService.currentItem = item.parent;
13592
+ this.destroyRequest.emit(false);
13593
+ }
13594
+ });
13595
+ }
13596
+ };
13597
+ TieredMenuComponent.ctorParameters = () => [
13598
+ { type: ApplicationRef },
13599
+ { type: ComponentFactoryResolver },
13600
+ { type: Injector },
13601
+ { type: TieredMenuService },
13602
+ { type: TieredMenuEventService }
13603
+ ];
13604
+ __decorate([
13605
+ Output()
13606
+ ], TieredMenuComponent.prototype, "destroyRequest", void 0);
13607
+ TieredMenuComponent = TieredMenuComponent_1 = __decorate([
13608
+ Component({
13609
+ selector: "s-tiered-menu",
13610
+ template: "<div class=\"menu\" [ngStyle]=\"{\n 'left': left + 'px',\n 'top': top + 'px'\n }\">\n\n <div *ngFor=\"let item of items\">\n <s-tiered-menu-item\n *ngIf=\"!item.divider\"\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n triggerEvent=\"hover\"\n [closeOnClick]=\"false\">\n </s-tiered-menu-item>\n <s-tiered-menu-divider *ngIf=\"item.divider\"></s-tiered-menu-divider>\n </div>\n</div>",
13611
+ styles: [".menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;min-width:176px;padding:4px 0;position:fixed;z-index:9999}"]
13612
+ })
13613
+ ], TieredMenuComponent);
13614
+
13615
+ let TieredMenuDirective = class TieredMenuDirective {
13616
+ constructor(_elementRef, _appRef, _componentFactoryResolver, _injector, _tieredMenuEventService, _tieredMenuService) {
13617
+ this._elementRef = _elementRef;
13618
+ this._appRef = _appRef;
13619
+ this._componentFactoryResolver = _componentFactoryResolver;
13620
+ this._injector = _injector;
13621
+ this._tieredMenuEventService = _tieredMenuEventService;
13622
+ this._tieredMenuService = _tieredMenuService;
13623
+ this._componentRef = null;
13624
+ this._isNested = false;
13625
+ this._isOpen = false;
13626
+ this._unsubscribe$ = new Subject();
13627
+ this.alwaysOpen = false;
13628
+ this.triggerEvent = "click";
13629
+ }
13630
+ ngOnInit() {
13631
+ this._tieredMenuService.items = this._tieredMenuService.normalizeData(this.items);
13632
+ this._tieredMenuService.currentItems = this._tieredMenuService.items;
13633
+ this._tieredMenuService.currentItem = this._tieredMenuService.items[0];
13634
+ this._subscribeEvents();
13635
+ }
13636
+ ngAfterViewInit() {
13637
+ // setTimeout to create the menu after creating the elements.
13638
+ if (this.alwaysOpen) {
13639
+ setTimeout(() => {
13640
+ this._createMenu();
13641
+ }, 0);
13642
+ }
13643
+ }
13644
+ ngOnDestroy() {
13645
+ this._unsubscribe$.next();
13646
+ this._unsubscribe$.complete();
13647
+ this._destroy();
13648
+ }
13649
+ onResize() {
13650
+ if (!this.alwaysOpen) {
13651
+ this._tieredMenuEventService.emitCloseAllMenusEvent();
13652
+ }
13653
+ }
13654
+ onKeydownHandler(event) {
13655
+ if (!this._isOpen)
13656
+ return;
13657
+ switch (event.key) {
13658
+ case "Escape":
13659
+ this._tieredMenuEventService.emitCloseAllMenusEvent();
13660
+ break;
13661
+ case " ":
13662
+ case "Enter":
13663
+ this._tieredMenuEventService.emitSelectItemEvent(this._tieredMenuService.currentItem);
13664
+ break;
13665
+ case "ArrowLeft":
13666
+ // When nested I need a reference to the current item's parent item, otherwise just the current item.
13667
+ this._tieredMenuEventService.emitCloseItemMenuEvent(this._isNested ? this._tieredMenuService.currentItem.parent : this._tieredMenuService.currentItem);
13668
+ break;
13669
+ case "ArrowRight":
13670
+ this._tieredMenuEventService.emitOpenItemMenuEvent(this._tieredMenuService.currentItem);
13671
+ break;
13672
+ case "ArrowUp":
13673
+ this._tieredMenuEventService.emitDecrementCurrentItemEvent();
13674
+ break;
13675
+ case "ArrowDown":
13676
+ this._tieredMenuEventService.emitIncrementCurrentItemEvent();
13677
+ break;
13678
+ }
13679
+ }
13680
+ onClick(event) {
13681
+ if (this.triggerEvent === "click" && this.items && this.items && !this._isOpen) {
13682
+ this._lastActiveElement = document.activeElement;
13683
+ this._createMenu();
13684
+ event.preventDefault();
13685
+ event.stopPropagation();
13686
+ }
13687
+ }
13688
+ onDocumentClick(event) {
13689
+ // Closing menu when clicked outside.
13690
+ const target = event.target;
13691
+ const clickedInside = target.closest("s-tiered-menu-item") || target.closest("s-tiered-menu-divider");
13692
+ if (!clickedInside) {
13693
+ this._tieredMenuEventService.emitCloseAllMenusEvent();
13694
+ }
13695
+ }
13696
+ _createMenu() {
13697
+ var _a;
13698
+ if (!this._componentRef && this.items) {
13699
+ (_a = this._lastActiveElement) === null || _a === void 0 ? void 0 : _a.blur();
13700
+ this._isOpen = true;
13701
+ this._isNested = document.body.clientWidth < 600;
13702
+ this._isNested ? this._createNestedMenu() : this._createTieredMenu();
13703
+ }
13704
+ }
13705
+ _createTieredMenu() {
13706
+ if (!this._componentRef && this.items) {
13707
+ const componentFactory = this._componentFactoryResolver.resolveComponentFactory(TieredMenuComponent);
13708
+ this._componentRef = componentFactory.create(this._injector);
13709
+ this._appRef.attachView(this._componentRef.hostView);
13710
+ const domElem = this._componentRef.hostView.rootNodes[0];
13711
+ document.body.appendChild(domElem);
13712
+ this._setMenuComponentProperties();
13713
+ this._componentRef.instance.destroyRequest
13714
+ .pipe(takeUntil(this._unsubscribe$))
13715
+ .subscribe(() => {
13716
+ this._destroy();
13717
+ });
13718
+ this._menuDivElement = domElem.querySelector(".menu");
13719
+ this._setMenuPosition();
13720
+ }
13721
+ }
13722
+ _createNestedMenu() {
13723
+ if (!this._componentRef && this.items) {
13724
+ const componentFactory = this._componentFactoryResolver.resolveComponentFactory(TieredMenuNestedComponent);
13725
+ this._componentRef = componentFactory.create(this._injector);
13726
+ this._appRef.attachView(this._componentRef.hostView);
13727
+ const domElem = this._componentRef.hostView.rootNodes[0];
13728
+ document.body.appendChild(domElem);
13729
+ this._setMenuComponentProperties();
13730
+ this._menuDivElement = domElem.querySelector(".menu");
13731
+ this._setMenuPosition();
13732
+ }
13733
+ }
13734
+ _destroy() {
13735
+ var _a;
13736
+ if (this._componentRef !== null && !this.alwaysOpen) {
13737
+ this._isOpen = false;
13738
+ window.clearTimeout(this._showTimeout);
13739
+ this._appRef.detachView(this._componentRef.hostView);
13740
+ this._componentRef.destroy();
13741
+ this._componentRef = null;
13742
+ this._menuDivElement = null;
13743
+ (_a = this._lastActiveElement) === null || _a === void 0 ? void 0 : _a.focus();
13744
+ this._tieredMenuService.currentItems = this._tieredMenuService.items;
13745
+ this._tieredMenuService.currentItem = this._tieredMenuService.items[0];
13746
+ }
13747
+ }
13748
+ _setMenuPosition() {
13749
+ if (this._componentRef !== null) {
13750
+ const { right, bottom, left } = this._elementRef.nativeElement.getBoundingClientRect();
13751
+ const menuWidth = this._menuDivElement.getBoundingClientRect().width;
13752
+ const rightFreeSpace = document.body.clientWidth - right;
13753
+ const topPosition = bottom + 2;
13754
+ this._componentRef.instance.top = topPosition;
13755
+ if (!this._isNested) {
13756
+ if (rightFreeSpace > menuWidth) {
13757
+ this._componentRef.instance.left = left;
13758
+ }
13759
+ else {
13760
+ this._componentRef.instance.left = left - menuWidth;
13761
+ }
13762
+ }
13763
+ else {
13764
+ // setting the maximum menu size to ensure its content is always visible. 10px margin.
13765
+ this._componentRef.instance.maxHeight = window.innerHeight - topPosition - 10;
13766
+ }
13767
+ }
13768
+ }
13769
+ _setMenuComponentProperties() {
13770
+ if (this._componentRef != null) {
13771
+ this._componentRef.instance.items = this.items;
13772
+ }
13773
+ }
13774
+ _subscribeEvents() {
13775
+ this._tieredMenuEventService.closeAllMenusEvent
13776
+ .pipe(takeUntil(this._unsubscribe$))
13777
+ .subscribe(() => {
13778
+ this.items = this._tieredMenuService.markAllItemsAsClosed(this.items);
13779
+ this._destroy();
13780
+ });
13781
+ }
13782
+ };
13783
+ TieredMenuDirective.ctorParameters = () => [
13784
+ { type: ElementRef },
13785
+ { type: ApplicationRef },
13786
+ { type: ComponentFactoryResolver },
13787
+ { type: Injector },
13788
+ { type: TieredMenuEventService },
13789
+ { type: TieredMenuService }
13790
+ ];
13791
+ __decorate([
13792
+ Input()
13793
+ ], TieredMenuDirective.prototype, "items", void 0);
13794
+ __decorate([
13795
+ Input()
13796
+ ], TieredMenuDirective.prototype, "alwaysOpen", void 0);
13797
+ __decorate([
13798
+ Input()
13799
+ ], TieredMenuDirective.prototype, "triggerEvent", void 0);
13800
+ __decorate([
13801
+ HostListener("window:resize")
13802
+ ], TieredMenuDirective.prototype, "onResize", null);
13803
+ __decorate([
13804
+ HostListener("document:keydown", ["$event"])
13805
+ ], TieredMenuDirective.prototype, "onKeydownHandler", null);
13806
+ __decorate([
13807
+ HostListener("click", ["$event"])
13808
+ ], TieredMenuDirective.prototype, "onClick", null);
13809
+ __decorate([
13810
+ HostListener("document:click", ["$event"])
13811
+ ], TieredMenuDirective.prototype, "onDocumentClick", null);
13812
+ TieredMenuDirective = __decorate([
13813
+ Directive({
13814
+ selector: "[sTieredMenu]",
13815
+ })
13816
+ ], TieredMenuDirective);
13817
+
13818
+ let TieredMenuItemComponent = class TieredMenuItemComponent {
13819
+ constructor(_tieredMenuEventService) {
13820
+ this._tieredMenuEventService = _tieredMenuEventService;
13821
+ this.focused = false;
13822
+ this.triggerEvent = "click";
13823
+ this.closeOnClick = false;
13824
+ }
13825
+ onClick() {
13826
+ if (this.item.submenu) {
13827
+ if (!this.item.isOpen) {
13828
+ this._tieredMenuEventService.emitOpenItemMenuEvent(this.item);
13829
+ }
13830
+ else if (this.closeOnClick) {
13831
+ this._tieredMenuEventService.emitCloseItemMenuEvent(this.item);
13832
+ }
13833
+ }
13834
+ else {
13835
+ this._tieredMenuEventService.emitSelectItemEvent(this.item);
13836
+ }
13837
+ }
13838
+ onMouseEnter() {
13839
+ if (this.triggerEvent === "hover" && !this.item.isOpen) {
13840
+ this._showTimeout = window.setTimeout(() => {
13841
+ this._tieredMenuEventService.emitOpenItemMenuEvent(this.item);
13842
+ }, 300);
13843
+ }
13844
+ }
13845
+ onMouseLeave() {
13846
+ window.clearTimeout(this._showTimeout);
13847
+ }
13848
+ };
13849
+ TieredMenuItemComponent.ctorParameters = () => [
13850
+ { type: TieredMenuEventService }
13851
+ ];
13852
+ __decorate([
13853
+ Input()
13854
+ ], TieredMenuItemComponent.prototype, "item", void 0);
13855
+ __decorate([
13856
+ Input()
13857
+ ], TieredMenuItemComponent.prototype, "focused", void 0);
13858
+ __decorate([
13859
+ Input()
13860
+ ], TieredMenuItemComponent.prototype, "triggerEvent", void 0);
13861
+ __decorate([
13862
+ Input()
13863
+ ], TieredMenuItemComponent.prototype, "closeOnClick", void 0);
13864
+ __decorate([
13865
+ HostListener("click"),
13866
+ HostListener("touchend")
13867
+ ], TieredMenuItemComponent.prototype, "onClick", null);
13868
+ __decorate([
13869
+ HostListener("mouseenter")
13870
+ ], TieredMenuItemComponent.prototype, "onMouseEnter", null);
13871
+ __decorate([
13872
+ HostListener("mouseleave")
13873
+ ], TieredMenuItemComponent.prototype, "onMouseLeave", null);
13874
+ TieredMenuItemComponent = __decorate([
13875
+ Component({
13876
+ selector: "s-tiered-menu-item",
13877
+ template: "<div\n [id]=\"item.id\"\n class=\"tiered-menu-item\"\n [ngClass]=\"{\n 'tiered-menu-item--open': item.isOpen,\n 'tiered-menu-item--focused': focused\n }\">\n <div class=\"tiered-menu-item-content\">\n <span class=\"icon\" [ngClass]=\"item.iconClass\"></span>\n <span class=\"label\">{{ item.label }}</span>\n </div>\n <span\n *ngIf=\"item.submenu\"\n class=\"submenu-icon\"\n [ngClass]=\"{\n 'fas': true,\n 'fa-chevron-left': item.isOpen,\n 'fa-chevron-right': !item.isOpen\n }\">\n </span>\n</div>",
13878
+ styles: [".tiered-menu-item{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:8px 16px;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.tiered-menu-item .tiered-menu-item-content .label{margin:0 12px}.tiered-menu-item:hover{background-color:#e9e6e6}.tiered-menu-item--focused{background-color:#ccc!important}.tiered-menu-item--open{background-color:#e4e2e2}"]
13879
+ })
13880
+ ], TieredMenuItemComponent);
13881
+
13882
+ let TieredMenuDividerComponent = class TieredMenuDividerComponent {
13883
+ };
13884
+ TieredMenuDividerComponent = __decorate([
13885
+ Component({
13886
+ selector: "s-tiered-menu-divider",
13887
+ template: "<div class=\"divider\"></div>",
13888
+ styles: [".divider{margin:2px 0;height:1px;background-color:#ccc}"]
13889
+ })
13890
+ ], TieredMenuDividerComponent);
13891
+
13892
+ let TieredMenuModule = class TieredMenuModule {
13893
+ };
13894
+ TieredMenuModule = __decorate([
13895
+ NgModule({
13896
+ imports: [
13897
+ CommonModule,
13898
+ BrowserModule,
13899
+ ],
13900
+ declarations: [
13901
+ TieredMenuDirective,
13902
+ TieredMenuComponent,
13903
+ TieredMenuNestedComponent,
13904
+ TieredMenuItemComponent,
13905
+ TieredMenuDividerComponent,
13906
+ ],
13907
+ exports: [TieredMenuDirective],
13908
+ providers: [
13909
+ TieredMenuEventService,
13910
+ TieredMenuService,
13911
+ ],
13912
+ })
13913
+ ], TieredMenuModule);
13914
+
13184
13915
  let WorkspaceSwitchComponent = class WorkspaceSwitchComponent {
13185
13916
  constructor(eRef) {
13186
13917
  this.eRef = eRef;
@@ -13803,5 +14534,5 @@ const fallback = {
13803
14534
  * Generated bundle index. Do not edit.
13804
14535
  */
13805
14536
 
13806
- export { AccordionComponent, AccordionModule, AccordionPanelComponent, AngularComponentsModule, AutocompleteField, BadgeColors, BadgeComponent, BadgeModule, BaseFieldComponent, BignumberField, BignumberInputDirective, BignumberInputModule, BooleanField, BooleanOptionsLabel, BreadcrumbComponent, BreadcrumbModule, Breakpoints, ButtonComponent, ButtonModule, ButtonPriority, ButtonSize, CalendarField, CalendarLocaleOptions, CalendarMaskDirective, CalendarMaskModule, ChipsField, CodeEditorModule, CollapseLinkComponent, CollapseLinkModule, ControlErrorsComponent, ControlErrorsModule, CountryPhonePickerComponent, CountryPhonePickerModule, CurrencyField, CustomFieldsComponent, CustomFieldsModule, CustomFieldsService, DEFAULT_CALENDAR_LOCALE_OPTIONS, DEFAULT_LOCALE_OPTIONS, DEFAULT_NUMBER_LOCALE_OPTIONS, DebounceUtils, DoubleClickDirective, DynamicConfig, DynamicFormComponent, DynamicFormModule, DynamicType, EditableOverlayDirective, EditableOverlayModule, EmptyStateComponent, EmptyStateModule, EnumBadgeColors, EnumColumnFieldType, EnumSeverity, ExportUtils, Field, FieldType, Fieldset, FileUploadComponent, FileUploadModule, FileValidation, FormField, GanttComponent, GanttModule, GlobalSearchComponent, GlobalSearchDropdownItemComponent, GlobalSearchModule, GlobalSearchSizeEnum, HostProjectConfigsInjectionToken, ImageCropperComponent, ImageCropperModule, ImageCropperService, InfoSignDirective, InfoSignModule, Languages, LoadingStateComponent, LoadingStateDirective, LoadingStateModule, LocaleModule, LocaleOptions, LocaleService, LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions, LocalizedDateImpurePipe, LocalizedDatePipe, LocalizedNumberInputDirective, LocalizedNumberInputModule, LocalizedNumberPipe, LocalizedTimeImpurePipe, LocalizedTimePipe, LongPressDirective, LookupComponent, LookupField, MaskFormatterModule, MaskFormatterPipe, MouseEventsModule, NavigationDirective, NumberAlignmentOption, NumberField, NumberInputDirective, NumberInputModule, NumberLocaleOptions, ObjectCardComponent, ObjectCardFieldComponent, ObjectCardMainComponent, ObjectCardModule, Option, Ordination, PanelComponent, PanelModule, PasswordField, PasswordStrengthComponent, PasswordStrengthDirective, PasswordStrengthModule, PasswordStrengthPositions, PasswordStrengths, ProductHeaderComponent, ProductHeaderModule, ProfilePicturePickerComponent, ProfilePicturePickerModule, ProgressBarColors, ProgressBarComponent, ProgressBarModule, RadioButtonField, RatingScaleComponent, RatingScaleModule, RationButtonOption, RowTogllerDirective, Section, SelectField, SelectOption, SidebarComponent, SidebarModule, SlidePanelComponent, SlidePanelModule, SplitButtonComponent, SplitButtonModule, SplitButtonType, StatsCardComponent, StatsCardModule, StepState, StepsComponent, StepsModule, Structure, SwitchComponent, SwitchModule, TableFrozenPositionDirective, TableHeaderCheckboxComponent, TableHeaderCheckboxModule, TableModule, TaxCalculationLanguageConfigs, TextAreaField, TextField, Themes, ThumbnailComponent, ThumbnailModule, ThumbnailSize, TileComponent, TileModule, TimelineComponent, TimelineItem, TimelineItemSeverity, TimelineItemSize, TimelineModule, TokenListComponent, TokenListModule, TooltipModule, TooltipPosition, ValidateErrors, ViewMode, WorkspaceSwitchComponent, WorkspaceSwitchModule, countries, fallback, TooltipComponent as ɵa, TooltipDirective as ɵb, SelectFieldComponent as ɵba, TextAreaFieldComponent as ɵbb, TextFieldComponent as ɵbc, BooleanSwitchFieldComponent as ɵbd, PasswordFieldComponent as ɵbe, SliderFieldComponent as ɵbf, DecimalField as ɵbh, SideTableComponent as ɵbi, StructureModule as ɵbj, HeaderComponent as ɵbk, FooterComponent as ɵbl, NumberLocaleOptions as ɵbm, ThumbnailService as ɵbn, BorderButtonModule as ɵbo, BorderButtonComponent as ɵbp, TimelineItemModule as ɵbq, TimelineIconItemComponent as ɵbr, HorizontalTimelineModule as ɵbs, HorizontalTimelineComponent as ɵbt, VerticalTimelineModule as ɵbu, VerticalTimelineComponent as ɵbv, RangeLineComponent as ɵbw, CollapseOptionComponent as ɵbx, CollapsedItemsComponent as ɵby, VerticalItemsComponent as ɵbz, CountryPhonePickerService as ɵc, InfiniteScrollModule as ɵca, InfiniteScrollDirective as ɵcb, CustomTranslationsModule as ɵcc, CodeEditorComponent as ɵcd, CoreFacade as ɵce, CodeMirror6Core as ɵcf, LocalizedCurrencyImpurePipe as ɵd, LocalizedBignumberPipe as ɵe, LocalizedBignumberImpurePipe as ɵf, EmptyStateGoBackComponent as ɵg, FileUploadService as ɵh, InfoSignComponent as ɵi, TableColumnsComponent as ɵj, TablePagingComponent as ɵk, AutocompleteFieldComponent as ɵl, BooleanFieldComponent as ɵm, CalendarFieldComponent as ɵn, ChipsFieldComponent as ɵo, CurrencyFieldComponent as ɵp, DynamicFieldComponent as ɵq, DynamicFormDirective as ɵr, FieldsetComponent as ɵs, FileUploadComponent$1 as ɵt, LookupFieldComponent as ɵu, NumberFieldComponent as ɵv, BignumberFieldComponent as ɵw, RadioButtonComponent as ɵx, RowComponent as ɵy, SectionComponent as ɵz };
14537
+ export { AccordionComponent, AccordionModule, AccordionPanelComponent, AngularComponentsModule, AutocompleteField, BadgeColors, BadgeComponent, BadgeModule, BaseFieldComponent, BignumberField, BignumberInputDirective, BignumberInputModule, BooleanField, BooleanOptionsLabel, BreadcrumbComponent, BreadcrumbModule, Breakpoints, ButtonComponent, ButtonModule, ButtonPriority, ButtonSize, CalendarField, CalendarLocaleOptions, CalendarMaskDirective, CalendarMaskModule, ChipsField, CodeEditorModule, CollapseLinkComponent, CollapseLinkModule, ControlErrorsComponent, ControlErrorsModule, CountryPhonePickerComponent, CountryPhonePickerModule, CurrencyField, CustomFieldsComponent, CustomFieldsModule, CustomFieldsService, DEFAULT_CALENDAR_LOCALE_OPTIONS, DEFAULT_LOCALE_OPTIONS, DEFAULT_NUMBER_LOCALE_OPTIONS, DebounceUtils, DoubleClickDirective, DynamicConfig, DynamicFormComponent, DynamicFormModule, DynamicType, EditableOverlayDirective, EditableOverlayModule, EmptyStateComponent, EmptyStateModule, EnumBadgeColors, EnumColumnFieldType, EnumSeverity, ExportUtils, Field, FieldType, Fieldset, FileUploadComponent, FileUploadModule, FileValidation, FormField, GanttComponent, GanttModule, GlobalSearchComponent, GlobalSearchDropdownItemComponent, GlobalSearchModule, GlobalSearchSizeEnum, HostProjectConfigsInjectionToken, ImageCropperComponent, ImageCropperModule, ImageCropperService, InfoSignDirective, InfoSignModule, Languages, LoadingStateComponent, LoadingStateDirective, LoadingStateModule, LocaleModule, LocaleOptions, LocaleService, LocalizedCurrencyPipe, LocalizedCurrencyPipeOptions, LocalizedDateImpurePipe, LocalizedDatePipe, LocalizedNumberInputDirective, LocalizedNumberInputModule, LocalizedNumberPipe, LocalizedTimeImpurePipe, LocalizedTimePipe, LongPressDirective, LookupComponent, LookupField, MaskFormatterModule, MaskFormatterPipe, MouseEventsModule, NavigationDirective, NumberAlignmentOption, NumberField, NumberInputDirective, NumberInputModule, NumberLocaleOptions, ObjectCardComponent, ObjectCardFieldComponent, ObjectCardMainComponent, ObjectCardModule, Option, Ordination, PanelComponent, PanelModule, PasswordField, PasswordStrengthComponent, PasswordStrengthDirective, PasswordStrengthModule, PasswordStrengthPositions, PasswordStrengths, ProductHeaderComponent, ProductHeaderModule, ProfilePicturePickerComponent, ProfilePicturePickerModule, ProgressBarColors, ProgressBarComponent, ProgressBarModule, RadioButtonField, RatingScaleComponent, RatingScaleModule, RationButtonOption, RowTogllerDirective, Section, SelectField, SelectOption, SidebarComponent, SidebarModule, SlidePanelComponent, SlidePanelModule, SplitButtonComponent, SplitButtonModule, SplitButtonType, StatsCardComponent, StatsCardModule, StepState, StepsComponent, StepsModule, Structure, SwitchComponent, SwitchModule, TableFrozenPositionDirective, TableHeaderCheckboxComponent, TableHeaderCheckboxModule, TableModule, TaxCalculationLanguageConfigs, TextAreaField, TextField, Themes, ThumbnailComponent, ThumbnailModule, ThumbnailSize, TieredMenuDirective, TieredMenuModule, TileComponent, TileModule, TimelineComponent, TimelineItem, TimelineItemSeverity, TimelineItemSize, TimelineModule, TokenListComponent, TokenListModule, TooltipModule, TooltipPosition, ValidateErrors, ViewMode, WorkspaceSwitchComponent, WorkspaceSwitchModule, countries, fallback, TooltipComponent as ɵa, TooltipDirective as ɵb, SelectFieldComponent as ɵba, TextAreaFieldComponent as ɵbb, TextFieldComponent as ɵbc, BooleanSwitchFieldComponent as ɵbd, PasswordFieldComponent as ɵbe, SliderFieldComponent as ɵbf, DecimalField as ɵbh, SideTableComponent as ɵbi, StructureModule as ɵbj, HeaderComponent as ɵbk, FooterComponent as ɵbl, NumberLocaleOptions as ɵbm, ThumbnailService as ɵbn, BorderButtonModule as ɵbo, BorderButtonComponent as ɵbp, TimelineItemModule as ɵbq, TimelineIconItemComponent as ɵbr, HorizontalTimelineModule as ɵbs, HorizontalTimelineComponent as ɵbt, VerticalTimelineModule as ɵbu, VerticalTimelineComponent as ɵbv, RangeLineComponent as ɵbw, CollapseOptionComponent as ɵbx, CollapsedItemsComponent as ɵby, VerticalItemsComponent as ɵbz, CountryPhonePickerService as ɵc, InfiniteScrollModule as ɵca, InfiniteScrollDirective as ɵcb, CustomTranslationsModule as ɵcc, CodeEditorComponent as ɵcd, CoreFacade as ɵce, CodeMirror6Core as ɵcf, TieredMenuEventService as ɵcg, TieredMenuService as ɵch, TieredMenuComponent as ɵci, TieredMenuNestedComponent as ɵcj, TieredMenuItemComponent as ɵck, TieredMenuDividerComponent as ɵcl, LocalizedCurrencyImpurePipe as ɵd, LocalizedBignumberPipe as ɵe, LocalizedBignumberImpurePipe as ɵf, EmptyStateGoBackComponent as ɵg, FileUploadService as ɵh, InfoSignComponent as ɵi, TableColumnsComponent as ɵj, TablePagingComponent as ɵk, AutocompleteFieldComponent as ɵl, BooleanFieldComponent as ɵm, CalendarFieldComponent as ɵn, ChipsFieldComponent as ɵo, CurrencyFieldComponent as ɵp, DynamicFieldComponent as ɵq, DynamicFormDirective as ɵr, FieldsetComponent as ɵs, FileUploadComponent$1 as ɵt, LookupFieldComponent as ɵu, NumberFieldComponent as ɵv, BignumberFieldComponent as ɵw, RadioButtonComponent as ɵx, RowComponent as ɵy, SectionComponent as ɵz };
13807
14538
  //# sourceMappingURL=seniorsistemas-angular-components.js.map