@seniorsistemas/angular-components 19.0.4 → 19.0.5

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 (86) hide show
  1. package/breadcrumb/lib/breadcrumb/breadcrumb-models.d.ts +11 -0
  2. package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +7 -23
  3. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +25 -0
  4. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.d.ts +10 -0
  5. package/breadcrumb/public-api.d.ts +4 -2
  6. package/button/lib/button/button.component.d.ts +2 -1
  7. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-models.mjs +2 -0
  8. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +27 -98
  9. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +120 -0
  10. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.mjs +19 -0
  11. package/esm2022/breadcrumb/public-api.mjs +4 -3
  12. package/esm2022/button/lib/button/button.component.mjs +6 -3
  13. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +1 -1
  14. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +1 -1
  15. package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +2 -2
  16. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
  17. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +2 -2
  18. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +1 -1
  19. package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +1 -1
  20. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +2 -2
  21. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +2 -2
  22. package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +2 -2
  23. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +2 -2
  24. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +1 -1
  25. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +1 -1
  26. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +1 -1
  27. package/esm2022/global-search/lib/global-search/global-search.component.mjs +2 -2
  28. package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +1 -1
  29. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +1 -1
  30. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
  31. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +1 -1
  32. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +1 -1
  33. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +1 -1
  34. package/esm2022/lib/locale/fallback.mjs +4 -2
  35. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +1 -1
  36. package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +1 -1
  37. package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +1 -1
  38. package/esm2022/picklist/lib/picklist/picklist.component.mjs +1 -1
  39. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +1 -1
  40. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +1 -1
  41. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +65 -46
  42. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
  43. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +6 -2
  44. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +81 -37
  45. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  46. package/fesm2022/seniorsistemas-angular-components-button.mjs +5 -2
  47. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  48. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +1 -1
  49. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  50. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +1 -1
  51. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  52. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +9 -9
  53. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  54. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +1 -1
  55. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  56. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +1 -1
  57. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  58. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +2 -2
  59. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  60. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +1 -1
  61. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  62. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +1 -1
  63. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  64. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +2 -2
  65. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  66. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +2 -2
  67. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  68. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  70. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
  71. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  72. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +1 -1
  73. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  74. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  76. package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  78. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +70 -47
  79. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  80. package/fesm2022/seniorsistemas-angular-components.mjs +3 -1
  81. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  82. package/package.json +7 -7
  83. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +3 -1
  84. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +2 -1
  85. package/breadcrumb/lib/breadcrumb/breadcrumb.module.d.ts +0 -10
  86. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.module.mjs +0 -20
@@ -77,7 +77,7 @@ class HelpPopoverComponent {
77
77
  this.closed.complete();
78
78
  }
79
79
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HelpPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: HelpPopoverComponent, selector: "s-help-popover", viewQueries: [{ propertyName: "arrowElement", first: true, predicate: ["arrowElement"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n class=\"popover-container\"\n [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n [class.popover-container-top]=\"position === 'top'\"\n [class.popover-container-right]=\"position === 'right'\"\n [class.popover-container-bottom]=\"position === 'bottom'\"\n [class.popover-container-left]=\"position === 'left'\"\n>\n <div\n class=\"arrow-container\"\n [class.arrow-container-beginning]=\"arrowPosition === 'beginning'\"\n [class.arrow-container-middle]=\"arrowPosition === 'middle'\"\n [class.arrow-container-end]=\"arrowPosition === 'end'\"\n >\n <div\n class=\"arrow\"\n #arrowElement\n ></div>\n </div>\n <div class=\"popover\">\n @if (hasHeaderContainer) {\n <div\n class=\"popover-header-container\"\n [class.space-between]=\"hasIcon || hasHeaderText\"\n [class.flex-end]=\"!(hasIcon || hasHeaderText) && closeButton\"\n >\n @if (hasIcon || hasHeaderText) {\n <div class=\"popover-header-container-text\">\n @if (hasIcon) {\n <div class=\"popover-icon\">\n <i [class]=\"icon\"></i>\n </div>\n }\n @if (hasHeaderText) {\n <div class=\"popover-header-text\">\n {{ header }}\n </div>\n }\n </div>\n }\n @if (closeButton) {\n <div class=\"popover-close-button\">\n <i\n class=\"fas fa-times\"\n (click)=\"close()\"\n ></i>\n </div>\n }\n </div>\n }\n\n <div class=\"popover-content\">\n @if (contentIsString) {\n {{ popoverContent }}\n } @else {\n <ng-container *ngTemplateOutlet=\"popoverContentTemplateRef\"></ng-container>\n }\n </div>\n\n @if (hasFooter) {\n <div class=\"separator\"></div>\n <div\n class=\"popover-footer-container\"\n [class.space-between]=\"hasFooterText\"\n [class.flex-end]=\"!hasFooterText\"\n >\n @if (hasFooterText) {\n <p class=\"popover-footer-text\">\n {{ footer }}\n </p>\n }\n @if (button && button.length > 0) {\n <div class=\"popover-footer-button\">\n <s-button\n [label]=\"button\"\n priority=\"primary\"\n size=\"small\"\n (clicked)=\"clickButton()\"\n [disabled]=\"false\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: [":host{display:block;width:fit-content}.popover-container{z-index:1050;position:relative}.popover-container .space-between{justify-content:space-between}.popover-container .flex-end{justify-content:flex-end}.popover-container-top{display:flex;flex-direction:column-reverse}.popover-container-top .arrow{width:100%}.popover-container-top .arrow{width:0;height:0;position:relative;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #fff;border-bottom:0 solid transparent}.popover-container-bottom .arrow{width:100%}.popover-container-bottom .arrow{width:0;height:0;position:relative;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #fff;border-top:0 solid transparent}.popover-container-left{display:flex;flex-direction:row-reverse;align-items:center}.popover-container-left .arrow{height:100%}.popover-container-left .arrow{width:0;height:0;position:relative;border-top:10px solid transparent;border-bottom:10px solid transparent;border-left:10px solid #fff;border-right:0 solid transparent}.popover-container-right{display:flex;align-items:center}.popover-container-right .arrow{height:100%}.popover-container-right .arrow{width:0;height:0;position:relative;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:10px solid #fff;border-left:0 solid transparent}.popover-container-top .arrow-container,.popover-container-bottom .arrow-container{display:flex}.popover-container-top .arrow-container-beginning,.popover-container-bottom .arrow-container-beginning{justify-content:flex-start}.popover-container-top .arrow-container-beginning .arrow,.popover-container-bottom .arrow-container-beginning .arrow{margin-left:12px}.popover-container-top .arrow-container-middle,.popover-container-bottom .arrow-container-middle{justify-content:center}.popover-container-top .arrow-container-end,.popover-container-bottom .arrow-container-end{justify-content:flex-end}.popover-container-top .arrow-container-end .arrow,.popover-container-bottom .arrow-container-end .arrow{margin-right:12px}.popover-container-left .arrow-container,.popover-container-right .arrow-container{display:flex;align-self:stretch}.popover-container-left .arrow-container-beginning,.popover-container-right .arrow-container-beginning{align-items:flex-start}.popover-container-left .arrow-container-beginning .arrow,.popover-container-right .arrow-container-beginning .arrow{margin-top:12px}.popover-container-left .arrow-container-middle,.popover-container-right .arrow-container-middle{align-items:center}.popover-container-left .arrow-container-end,.popover-container-right .arrow-container-end{align-items:flex-end}.popover-container-left .arrow-container-end .arrow,.popover-container-right .arrow-container-end .arrow{margin-bottom:12px}.popover-container .popover{min-width:200px;max-width:305px;width:fit-content;border-radius:3px;background:#fff;box-shadow:0 1px 5px #00000040}.popover-container .popover-header-container,.popover-container .popover-content,.popover-container .popover-footer-container{padding:8px}.popover-container .popover-close-button i{cursor:pointer}.popover-container .popover-footer-text{color:#212533;font-family:Open Sans;font-size:12px;font-style:normal;font-weight:400}.popover-container .popover-header-container{display:flex}.popover-container .popover-header-container-text{display:flex;justify-content:space-between;gap:8px}.popover-container .popover .separator{width:100%;border:1px solid #dedce5}.popover-container .popover-footer-container{display:flex;gap:8px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }] });
80
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: HelpPopoverComponent, selector: "s-help-popover", viewQueries: [{ propertyName: "arrowElement", first: true, predicate: ["arrowElement"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n class=\"popover-container\"\n [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n [class.popover-container-top]=\"position === 'top'\"\n [class.popover-container-right]=\"position === 'right'\"\n [class.popover-container-bottom]=\"position === 'bottom'\"\n [class.popover-container-left]=\"position === 'left'\"\n>\n <div\n class=\"arrow-container\"\n [class.arrow-container-beginning]=\"arrowPosition === 'beginning'\"\n [class.arrow-container-middle]=\"arrowPosition === 'middle'\"\n [class.arrow-container-end]=\"arrowPosition === 'end'\"\n >\n <div\n class=\"arrow\"\n #arrowElement\n ></div>\n </div>\n <div class=\"popover\">\n @if (hasHeaderContainer) {\n <div\n class=\"popover-header-container\"\n [class.space-between]=\"hasIcon || hasHeaderText\"\n [class.flex-end]=\"!(hasIcon || hasHeaderText) && closeButton\"\n >\n @if (hasIcon || hasHeaderText) {\n <div class=\"popover-header-container-text\">\n @if (hasIcon) {\n <div class=\"popover-icon\">\n <i [class]=\"icon\"></i>\n </div>\n }\n @if (hasHeaderText) {\n <div class=\"popover-header-text\">\n {{ header }}\n </div>\n }\n </div>\n }\n @if (closeButton) {\n <div class=\"popover-close-button\">\n <i\n class=\"fas fa-times\"\n (click)=\"close()\"\n ></i>\n </div>\n }\n </div>\n }\n\n <div class=\"popover-content\">\n @if (contentIsString) {\n {{ popoverContent }}\n } @else {\n <ng-container *ngTemplateOutlet=\"popoverContentTemplateRef\"></ng-container>\n }\n </div>\n\n @if (hasFooter) {\n <div class=\"separator\"></div>\n <div\n class=\"popover-footer-container\"\n [class.space-between]=\"hasFooterText\"\n [class.flex-end]=\"!hasFooterText\"\n >\n @if (hasFooterText) {\n <p class=\"popover-footer-text\">\n {{ footer }}\n </p>\n }\n @if (button && button.length > 0) {\n <div class=\"popover-footer-button\">\n <s-button\n [label]=\"button\"\n priority=\"primary\"\n size=\"small\"\n (clicked)=\"clickButton()\"\n [disabled]=\"false\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: [":host{display:block;width:fit-content}.popover-container{z-index:1050;position:relative}.popover-container .space-between{justify-content:space-between}.popover-container .flex-end{justify-content:flex-end}.popover-container-top{display:flex;flex-direction:column-reverse}.popover-container-top .arrow{width:100%}.popover-container-top .arrow{width:0;height:0;position:relative;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #fff;border-bottom:0 solid transparent}.popover-container-bottom .arrow{width:100%}.popover-container-bottom .arrow{width:0;height:0;position:relative;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #fff;border-top:0 solid transparent}.popover-container-left{display:flex;flex-direction:row-reverse;align-items:center}.popover-container-left .arrow{height:100%}.popover-container-left .arrow{width:0;height:0;position:relative;border-top:10px solid transparent;border-bottom:10px solid transparent;border-left:10px solid #fff;border-right:0 solid transparent}.popover-container-right{display:flex;align-items:center}.popover-container-right .arrow{height:100%}.popover-container-right .arrow{width:0;height:0;position:relative;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:10px solid #fff;border-left:0 solid transparent}.popover-container-top .arrow-container,.popover-container-bottom .arrow-container{display:flex}.popover-container-top .arrow-container-beginning,.popover-container-bottom .arrow-container-beginning{justify-content:flex-start}.popover-container-top .arrow-container-beginning .arrow,.popover-container-bottom .arrow-container-beginning .arrow{margin-left:12px}.popover-container-top .arrow-container-middle,.popover-container-bottom .arrow-container-middle{justify-content:center}.popover-container-top .arrow-container-end,.popover-container-bottom .arrow-container-end{justify-content:flex-end}.popover-container-top .arrow-container-end .arrow,.popover-container-bottom .arrow-container-end .arrow{margin-right:12px}.popover-container-left .arrow-container,.popover-container-right .arrow-container{display:flex;align-self:stretch}.popover-container-left .arrow-container-beginning,.popover-container-right .arrow-container-beginning{align-items:flex-start}.popover-container-left .arrow-container-beginning .arrow,.popover-container-right .arrow-container-beginning .arrow{margin-top:12px}.popover-container-left .arrow-container-middle,.popover-container-right .arrow-container-middle{align-items:center}.popover-container-left .arrow-container-end,.popover-container-right .arrow-container-end{align-items:flex-end}.popover-container-left .arrow-container-end .arrow,.popover-container-right .arrow-container-end .arrow{margin-bottom:12px}.popover-container .popover{min-width:200px;max-width:305px;width:fit-content;border-radius:3px;background:#fff;box-shadow:0 1px 5px #00000040}.popover-container .popover-header-container,.popover-container .popover-content,.popover-container .popover-footer-container{padding:8px}.popover-container .popover-close-button i{cursor:pointer}.popover-container .popover-footer-text{color:#212533;font-family:Open Sans;font-size:12px;font-style:normal;font-weight:400}.popover-container .popover-header-container{display:flex}.popover-container .popover-header-container-text{display:flex;justify-content:space-between;gap:8px}.popover-container .popover .separator{width:100%;border:1px solid #dedce5}.popover-container .popover-footer-container{display:flex;gap:8px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "menuAriaLabel", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }] });
81
81
  }
82
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HelpPopoverComponent, decorators: [{
83
83
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-help-popover.mjs","sources":["../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.html","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.directive.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.module.ts","../../projects/angular-components/help-popover/src/seniorsistemas-angular-components-help-popover.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from '../models/help-popover.models';\n\n@Component({\n selector: 's-help-popover',\n templateUrl: './help-popover.component.html',\n styleUrls: ['./help-popover.component.scss']\n})\nexport class HelpPopoverComponent implements OnDestroy {\n private readonly VALID_POSITIONS: HelpPopoverPosition[] = ['top', 'bottom', 'left', 'right'];\n private readonly VALID_ARROW_POSITIONS: HelpPopoverArrowPosition[] = ['beginning', 'end', 'middle'];\n private _position: HelpPopoverPosition = 'bottom';\n popoverContent: string | TemplateRef<any> | null = null;\n closeButton = true;\n icon = '';\n header = '';\n footer = '';\n button = '';\n visible = false;\n @ViewChild('arrowElement', { read: ElementRef, static: true }) arrowElement: ElementRef<HTMLElement> | null = null;\n public get position(): HelpPopoverPosition {\n return this._position;\n }\n public set position(value: HelpPopoverPosition) {\n if (!this.VALID_POSITIONS.includes(value)) {\n throw new Error(`Invalid position: ${value}. Valid positions: ${this.VALID_POSITIONS}`);\n }\n this._position = value;\n }\n\n private _arrowPosition: HelpPopoverArrowPosition = 'beginning';\n public get arrowPosition(): HelpPopoverArrowPosition {\n return this._arrowPosition;\n }\n public set arrowPosition(value: HelpPopoverArrowPosition) {\n if (!this.VALID_ARROW_POSITIONS.includes(value)) {\n throw new Error(`Invalid arrow position: ${value}. Valid arrow positions: ${this.VALID_ARROW_POSITIONS}`);\n }\n this._arrowPosition = value;\n }\n\n buttonClicked!: EventEmitter<void>;\n\n closed = new Subject<void>();\n get contentIsString() {\n return typeof this.popoverContent === 'string';\n }\n\n get popoverContentTemplateRef() {\n return this.popoverContent as TemplateRef<any>;\n }\n\n get hasHeaderContainer() {\n const _hasHeader = this.hasHeaderText;\n const hasIcon = this.hasIcon;\n const hasCloseButton = this.closeButton;\n return _hasHeader || hasIcon || hasCloseButton;\n }\n\n get hasFooter() {\n const _hasFooterText = this.hasFooterText;\n const hasButtonText = this.button && this.button.length > 0;\n return _hasFooterText || hasButtonText;\n }\n\n get hasHeaderText() {\n return this.header && this.header.length > 0;\n }\n\n get hasFooterText() {\n return this.footer && this.footer.length > 0;\n }\n\n get hasIcon() {\n return this.icon && this.icon.length > 0;\n }\n\n close() {\n this.closed.next();\n }\n\n clickButton() {\n this.buttonClicked!.emit();\n }\n\n\n ngOnDestroy(): void {\n this.closed.complete();\n }\n}\n","<div\n class=\"popover-container\"\n [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n [class.popover-container-top]=\"position === 'top'\"\n [class.popover-container-right]=\"position === 'right'\"\n [class.popover-container-bottom]=\"position === 'bottom'\"\n [class.popover-container-left]=\"position === 'left'\"\n>\n <div\n class=\"arrow-container\"\n [class.arrow-container-beginning]=\"arrowPosition === 'beginning'\"\n [class.arrow-container-middle]=\"arrowPosition === 'middle'\"\n [class.arrow-container-end]=\"arrowPosition === 'end'\"\n >\n <div\n class=\"arrow\"\n #arrowElement\n ></div>\n </div>\n <div class=\"popover\">\n @if (hasHeaderContainer) {\n <div\n class=\"popover-header-container\"\n [class.space-between]=\"hasIcon || hasHeaderText\"\n [class.flex-end]=\"!(hasIcon || hasHeaderText) && closeButton\"\n >\n @if (hasIcon || hasHeaderText) {\n <div class=\"popover-header-container-text\">\n @if (hasIcon) {\n <div class=\"popover-icon\">\n <i [class]=\"icon\"></i>\n </div>\n }\n @if (hasHeaderText) {\n <div class=\"popover-header-text\">\n {{ header }}\n </div>\n }\n </div>\n }\n @if (closeButton) {\n <div class=\"popover-close-button\">\n <i\n class=\"fas fa-times\"\n (click)=\"close()\"\n ></i>\n </div>\n }\n </div>\n }\n\n <div class=\"popover-content\">\n @if (contentIsString) {\n {{ popoverContent }}\n } @else {\n <ng-container *ngTemplateOutlet=\"popoverContentTemplateRef\"></ng-container>\n }\n </div>\n\n @if (hasFooter) {\n <div class=\"separator\"></div>\n <div\n class=\"popover-footer-container\"\n [class.space-between]=\"hasFooterText\"\n [class.flex-end]=\"!hasFooterText\"\n >\n @if (hasFooterText) {\n <p class=\"popover-footer-text\">\n {{ footer }}\n </p>\n }\n @if (button && button.length > 0) {\n <div class=\"popover-footer-button\">\n <s-button\n [label]=\"button\"\n priority=\"primary\"\n size=\"small\"\n (clicked)=\"clickButton()\"\n [disabled]=\"false\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, inject, Input, OnDestroy, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from './models/help-popover.models';\nimport { ElementLeftoverPosition, ElementPosition, getElementLeftoverContentAvailable, getElementPositionInfo, isMousePositionOutsideOfElement } from '@seniorsistemas/angular-components/utils';\n\n\n@Directive({\n selector: '[sHelpPopover]',\n exportAs: 'sHelpPopover'\n})\nexport class HelpPopoverDirective implements OnDestroy, OnInit {\n private readonly MUTATION_OBSERVER_CONFIG: MutationObserverInit = { attributes: true, childList: true, subtree: true };\n private readonly OBSERVER_CALLBACK = () => {\n if (!this.componentRef) {\n return;\n }\n this.applyPositionIntoElement();\n }\n private readonly RESIZE_OBSERVER = () => {\n this.onResize$.next();\n }\n @Input() sHelpPopover: string | TemplateRef<any> | null = null;\n @Input() closeButton = true;\n @Input() popoverIcon = '';\n @Input() popoverHeader = '';\n @Input() popoverFooter = '';\n @Input() popoverButtonText = '';\n @Input() popoverArrowPosition: HelpPopoverArrowPosition = 'beginning';\n private _popoverPosition: HelpPopoverPosition = 'bottom';\n public get popoverPosition(): HelpPopoverPosition {\n return this._popoverPosition;\n }\n @Input()\n public set popoverPosition(value: HelpPopoverPosition) {\n this._popoverPosition = value;\n this.internalPosition = value;\n }\n @Output() buttonClicked = new EventEmitter<void>();\n\n private onDestroy$ = new Subject<void>();\n private componentRef: ComponentRef<HelpPopoverComponent> | null = null\n private mutationObserverPopoverElement: MutationObserver | null = null;\n private mutationObserverPopoverContent: MutationObserver | null = null;\n private internalPosition: HelpPopoverPosition = 'bottom';\n private onResize$ = new Subject<void>();\n private manualTrigger = false;\n private listener = (event: PointerEvent | MouseEvent) => {\n if (!this.componentRef) {\n return;\n }\n const totalElementArea = this.getPopoverElement.getBoundingClientRect();\n if (isMousePositionOutsideOfElement(event, totalElementArea)) {\n this.destroy();\n }\n }\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly element: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit(): void {\n const popoverElementObserver = new MutationObserver(this.OBSERVER_CALLBACK);\n this.mutationObserverPopoverElement = popoverElementObserver;\n popoverElementObserver.observe(this.element.nativeElement, this.MUTATION_OBSERVER_CONFIG);\n window.addEventListener('resize', this.RESIZE_OBSERVER);\n window.addEventListener('scrollend', this.OBSERVER_CALLBACK);\n this.onResize$.pipe(takeUntil(this.onDestroy$), debounceTime(100)).subscribe(this.OBSERVER_CALLBACK)\n }\n\n show() {\n this.manualTrigger = true;\n this._createComponent();\n }\n\n @HostListener('click')\n doClick() {\n if (this.manualTrigger) {\n return;\n }\n this._createComponent();\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n this.destroy();\n if (this.mutationObserverPopoverElement) {\n this.mutationObserverPopoverElement.disconnect();\n }\n window.removeEventListener('resize', this.RESIZE_OBSERVER);\n window.removeEventListener('scrollend', this.OBSERVER_CALLBACK);\n }\n\n private _createComponent() {\n if (!this.sHelpPopover) {\n return;\n }\n if (this.componentRef) {\n this.destroy();\n }\n const componentRef = this.viewContainerRef.createComponent(HelpPopoverComponent);\n this.componentRef = componentRef;\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n this.mutationObserverPopoverContent = new MutationObserver(this.OBSERVER_CALLBACK);\n const element = this.getPopoverElement as HTMLElement;\n this.mutationObserverPopoverContent.observe(element.querySelector('.popover-content') as HTMLElement, this.MUTATION_OBSERVER_CONFIG);\n document.body.appendChild(componentRef.location.nativeElement);\n setTimeout(() => {\n document.addEventListener('click', this.listener);\n })\n const component = componentRef.instance;\n component.popoverContent = this.sHelpPopover;\n component.closeButton = this.closeButton;\n component.icon = this.popoverIcon;\n component.header = this.popoverHeader;\n component.footer = this.popoverFooter;\n component.button = this.popoverButtonText;\n component.position = this.internalPosition;\n component.arrowPosition = this.popoverArrowPosition;\n component.buttonClicked = this.buttonClicked;\n component.closed.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.destroy();\n })\n this.applyPositionIntoElement();\n }\n\n private destroy() {\n document.removeEventListener('click', this.listener);\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n\n this.internalPosition = this.popoverPosition;\n\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n }\n\n private applyPositionIntoElement() {\n const popoverElementPosition = getElementPositionInfo(this.element.nativeElement);\n const position = this.validPosition;\n this.internalPosition = position;\n this.popoverComponentInstance.position = this.internalPosition;\n setTimeout(() => {\n switch (this.internalPosition) {\n case 'bottom': {\n this.applyPopoverPositionBottom(popoverElementPosition);\n break;\n }\n case 'top': {\n this.applyPopoverPositionTop(popoverElementPosition);\n break;\n }\n case 'left': {\n this.applyPopoverPositionLeft(popoverElementPosition);\n break;\n }\n case 'right': {\n this.applyPopoverPositionRight(popoverElementPosition);\n break;\n }\n }\n this.popoverComponentInstance.visible = true;\n })\n\n }\n\n private applyPopoverPositionBottom(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition)\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight}px)`\n }\n\n private applyPopoverPositionTop(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition)\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px - ${popoverHeight}px)`;\n }\n\n private applyPopoverPositionLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px - ${popoverWidth + popoverElementPosition.elementWidth}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private applyPopoverPositionRight(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private getHorizontalLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n let _horizontalLeft = popoverElementPosition.left;\n if (this.popoverArrowPosition === 'end') {\n _horizontalLeft = popoverElementPosition.right - popoverWidth;\n } else if (this.popoverArrowPosition === 'middle') {\n _horizontalLeft = (popoverElementPosition.left + popoverElementPosition.elementWidth / 2) - (popoverWidth / 2);\n }\n return _horizontalLeft;\n }\n\n private getVerticalTop(popoverElementPosition: ElementPosition) {\n const arrowElement = this.popoverComponentInstance.arrowElement?.nativeElement as HTMLElement;\n const arrowElementPosition = getElementPositionInfo(arrowElement);\n const popoverContentPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElement = this.getPopoverElement;\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n let top = `calc(${popoverElementPosition.top}px - ${popoverHeight / 2}px + ${popoverElementPosition.elementHeight / 2}px)`;\n\n const arrowMiddle = arrowElementPosition.elementHeight / 2;\n if (this.popoverArrowPosition === 'beginning') {\n const distanceArrowFromStart = arrowElementPosition.top - popoverContentPosition.top;\n top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight / 2}px - ${distanceArrowFromStart + arrowMiddle}px)`;\n } else if (this.popoverArrowPosition === 'end') {\n const distanceArrowFromEnd = (popoverContentPosition.top + popoverContentPosition.elementHeight) - (arrowElementPosition.top + arrowElementPosition.elementHeight);\n top = `calc(${popoverElementPosition.top}px - ${popoverContentPosition.elementHeight}px + ${popoverElementPosition.elementHeight / 2}px + ${distanceArrowFromEnd + arrowMiddle}px)`;\n }\n return top;\n }\n\n private getLeftoverContentAvailableForPopover(): ElementLeftoverPosition {\n return getElementLeftoverContentAvailable(this.element.nativeElement);\n }\n\n private get getPopoverElement(): HTMLElement {\n return this.componentRef?.location.nativeElement as HTMLElement;\n }\n\n private get popoverComponentInstance() {\n return this.componentRef?.instance as HelpPopoverComponent;\n }\n\n /**\n * Given the current position of the popover and the available space around\n * the trigger element, this function will return the position that the popover\n * will be set at.\n *\n * If the popover will fit at the given position, it will return the same\n * position.\n *\n * If the popover will not fit at the given position, it will return the position\n * that has the most available space (top or bottom).\n *\n * If there is no position with available space, it will return the given\n * position.\n *\n * @returns The position that the popover will be set at.\n */\n private get validPosition(): HelpPopoverPosition {\n const { freeDistanceToBottom, freeDistanceToTop, freeDistanceToLeft, freeDistanceToRight } = this.getLeftoverContentAvailableForPopover();\n\n const popoverElementPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElementWidth = popoverElementPosition.elementWidth;\n const popoverElementHeight = popoverElementPosition.elementHeight;\n\n const remainingSpaceBottom = freeDistanceToBottom - popoverElementHeight;\n const remainingSpaceTop = freeDistanceToTop - popoverElementHeight;\n const remainingSpaceLeft = freeDistanceToLeft - popoverElementWidth;\n const remainingSpaceRight = freeDistanceToRight - popoverElementWidth;\n\n const canSetAtBottom = remainingSpaceBottom > 0;\n const canSetAtTop = remainingSpaceTop > 0;\n const canSetAtLeft = remainingSpaceLeft > 0;\n const canSetAtRight = remainingSpaceRight > 0;\n\n let validPosition: HelpPopoverPosition | undefined = undefined;\n if (canSetAtBottom && this.popoverPosition === 'bottom') {\n validPosition = 'bottom';\n } else if (canSetAtTop && this.popoverPosition === 'top') {\n validPosition = 'top';\n } else if (canSetAtLeft && this.popoverPosition === 'left') {\n validPosition = 'left';\n } else if (canSetAtRight && this.popoverPosition === 'right') {\n validPosition = 'right';\n }\n\n const needUseOtherPosition = !validPosition;\n if (needUseOtherPosition) {\n const freePositions: { position: HelpPopoverPosition, freeDistance: number }[] = [\n {\n position: 'bottom' as HelpPopoverPosition,\n freeDistance: remainingSpaceBottom,\n },\n {\n position: 'top' as HelpPopoverPosition,\n freeDistance: remainingSpaceTop,\n }\n ].filter((x) => x.freeDistance > 0);\n\n if (freePositions.length === 0) {\n return this.popoverPosition;\n }\n const itemWithMaxFreeDistance = freePositions.sort((a, b) => b.freeDistance - a.freeDistance)[0];\n return itemWithMaxFreeDistance.position;\n } else {\n return this.popoverPosition;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HelpPopoverDirective } from './help-popover.directive';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n@NgModule({\n declarations: [HelpPopoverComponent, HelpPopoverDirective],\n imports: [\n CommonModule,\n ButtonModule,\n ],\n exports: [HelpPopoverDirective]\n})\nexport class HelpPopoverModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-help-popover.mjs","sources":["../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.html","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.directive.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.module.ts","../../projects/angular-components/help-popover/src/seniorsistemas-angular-components-help-popover.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from '../models/help-popover.models';\n\n@Component({\n selector: 's-help-popover',\n templateUrl: './help-popover.component.html',\n styleUrls: ['./help-popover.component.scss']\n})\nexport class HelpPopoverComponent implements OnDestroy {\n private readonly VALID_POSITIONS: HelpPopoverPosition[] = ['top', 'bottom', 'left', 'right'];\n private readonly VALID_ARROW_POSITIONS: HelpPopoverArrowPosition[] = ['beginning', 'end', 'middle'];\n private _position: HelpPopoverPosition = 'bottom';\n popoverContent: string | TemplateRef<any> | null = null;\n closeButton = true;\n icon = '';\n header = '';\n footer = '';\n button = '';\n visible = false;\n @ViewChild('arrowElement', { read: ElementRef, static: true }) arrowElement: ElementRef<HTMLElement> | null = null;\n public get position(): HelpPopoverPosition {\n return this._position;\n }\n public set position(value: HelpPopoverPosition) {\n if (!this.VALID_POSITIONS.includes(value)) {\n throw new Error(`Invalid position: ${value}. Valid positions: ${this.VALID_POSITIONS}`);\n }\n this._position = value;\n }\n\n private _arrowPosition: HelpPopoverArrowPosition = 'beginning';\n public get arrowPosition(): HelpPopoverArrowPosition {\n return this._arrowPosition;\n }\n public set arrowPosition(value: HelpPopoverArrowPosition) {\n if (!this.VALID_ARROW_POSITIONS.includes(value)) {\n throw new Error(`Invalid arrow position: ${value}. Valid arrow positions: ${this.VALID_ARROW_POSITIONS}`);\n }\n this._arrowPosition = value;\n }\n\n buttonClicked!: EventEmitter<void>;\n\n closed = new Subject<void>();\n get contentIsString() {\n return typeof this.popoverContent === 'string';\n }\n\n get popoverContentTemplateRef() {\n return this.popoverContent as TemplateRef<any>;\n }\n\n get hasHeaderContainer() {\n const _hasHeader = this.hasHeaderText;\n const hasIcon = this.hasIcon;\n const hasCloseButton = this.closeButton;\n return _hasHeader || hasIcon || hasCloseButton;\n }\n\n get hasFooter() {\n const _hasFooterText = this.hasFooterText;\n const hasButtonText = this.button && this.button.length > 0;\n return _hasFooterText || hasButtonText;\n }\n\n get hasHeaderText() {\n return this.header && this.header.length > 0;\n }\n\n get hasFooterText() {\n return this.footer && this.footer.length > 0;\n }\n\n get hasIcon() {\n return this.icon && this.icon.length > 0;\n }\n\n close() {\n this.closed.next();\n }\n\n clickButton() {\n this.buttonClicked!.emit();\n }\n\n\n ngOnDestroy(): void {\n this.closed.complete();\n }\n}\n","<div\n class=\"popover-container\"\n [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n [class.popover-container-top]=\"position === 'top'\"\n [class.popover-container-right]=\"position === 'right'\"\n [class.popover-container-bottom]=\"position === 'bottom'\"\n [class.popover-container-left]=\"position === 'left'\"\n>\n <div\n class=\"arrow-container\"\n [class.arrow-container-beginning]=\"arrowPosition === 'beginning'\"\n [class.arrow-container-middle]=\"arrowPosition === 'middle'\"\n [class.arrow-container-end]=\"arrowPosition === 'end'\"\n >\n <div\n class=\"arrow\"\n #arrowElement\n ></div>\n </div>\n <div class=\"popover\">\n @if (hasHeaderContainer) {\n <div\n class=\"popover-header-container\"\n [class.space-between]=\"hasIcon || hasHeaderText\"\n [class.flex-end]=\"!(hasIcon || hasHeaderText) && closeButton\"\n >\n @if (hasIcon || hasHeaderText) {\n <div class=\"popover-header-container-text\">\n @if (hasIcon) {\n <div class=\"popover-icon\">\n <i [class]=\"icon\"></i>\n </div>\n }\n @if (hasHeaderText) {\n <div class=\"popover-header-text\">\n {{ header }}\n </div>\n }\n </div>\n }\n @if (closeButton) {\n <div class=\"popover-close-button\">\n <i\n class=\"fas fa-times\"\n (click)=\"close()\"\n ></i>\n </div>\n }\n </div>\n }\n\n <div class=\"popover-content\">\n @if (contentIsString) {\n {{ popoverContent }}\n } @else {\n <ng-container *ngTemplateOutlet=\"popoverContentTemplateRef\"></ng-container>\n }\n </div>\n\n @if (hasFooter) {\n <div class=\"separator\"></div>\n <div\n class=\"popover-footer-container\"\n [class.space-between]=\"hasFooterText\"\n [class.flex-end]=\"!hasFooterText\"\n >\n @if (hasFooterText) {\n <p class=\"popover-footer-text\">\n {{ footer }}\n </p>\n }\n @if (button && button.length > 0) {\n <div class=\"popover-footer-button\">\n <s-button\n [label]=\"button\"\n priority=\"primary\"\n size=\"small\"\n (clicked)=\"clickButton()\"\n [disabled]=\"false\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, inject, Input, OnDestroy, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from './models/help-popover.models';\nimport { ElementLeftoverPosition, ElementPosition, getElementLeftoverContentAvailable, getElementPositionInfo, isMousePositionOutsideOfElement } from '@seniorsistemas/angular-components/utils';\n\n\n@Directive({\n selector: '[sHelpPopover]',\n exportAs: 'sHelpPopover'\n})\nexport class HelpPopoverDirective implements OnDestroy, OnInit {\n private readonly MUTATION_OBSERVER_CONFIG: MutationObserverInit = { attributes: true, childList: true, subtree: true };\n private readonly OBSERVER_CALLBACK = () => {\n if (!this.componentRef) {\n return;\n }\n this.applyPositionIntoElement();\n }\n private readonly RESIZE_OBSERVER = () => {\n this.onResize$.next();\n }\n @Input() sHelpPopover: string | TemplateRef<any> | null = null;\n @Input() closeButton = true;\n @Input() popoverIcon = '';\n @Input() popoverHeader = '';\n @Input() popoverFooter = '';\n @Input() popoverButtonText = '';\n @Input() popoverArrowPosition: HelpPopoverArrowPosition = 'beginning';\n private _popoverPosition: HelpPopoverPosition = 'bottom';\n public get popoverPosition(): HelpPopoverPosition {\n return this._popoverPosition;\n }\n @Input()\n public set popoverPosition(value: HelpPopoverPosition) {\n this._popoverPosition = value;\n this.internalPosition = value;\n }\n @Output() buttonClicked = new EventEmitter<void>();\n\n private onDestroy$ = new Subject<void>();\n private componentRef: ComponentRef<HelpPopoverComponent> | null = null\n private mutationObserverPopoverElement: MutationObserver | null = null;\n private mutationObserverPopoverContent: MutationObserver | null = null;\n private internalPosition: HelpPopoverPosition = 'bottom';\n private onResize$ = new Subject<void>();\n private manualTrigger = false;\n private listener = (event: PointerEvent | MouseEvent) => {\n if (!this.componentRef) {\n return;\n }\n const totalElementArea = this.getPopoverElement.getBoundingClientRect();\n if (isMousePositionOutsideOfElement(event, totalElementArea)) {\n this.destroy();\n }\n }\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly element: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit(): void {\n const popoverElementObserver = new MutationObserver(this.OBSERVER_CALLBACK);\n this.mutationObserverPopoverElement = popoverElementObserver;\n popoverElementObserver.observe(this.element.nativeElement, this.MUTATION_OBSERVER_CONFIG);\n window.addEventListener('resize', this.RESIZE_OBSERVER);\n window.addEventListener('scrollend', this.OBSERVER_CALLBACK);\n this.onResize$.pipe(takeUntil(this.onDestroy$), debounceTime(100)).subscribe(this.OBSERVER_CALLBACK)\n }\n\n show() {\n this.manualTrigger = true;\n this._createComponent();\n }\n\n @HostListener('click')\n doClick() {\n if (this.manualTrigger) {\n return;\n }\n this._createComponent();\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n this.destroy();\n if (this.mutationObserverPopoverElement) {\n this.mutationObserverPopoverElement.disconnect();\n }\n window.removeEventListener('resize', this.RESIZE_OBSERVER);\n window.removeEventListener('scrollend', this.OBSERVER_CALLBACK);\n }\n\n private _createComponent() {\n if (!this.sHelpPopover) {\n return;\n }\n if (this.componentRef) {\n this.destroy();\n }\n const componentRef = this.viewContainerRef.createComponent(HelpPopoverComponent);\n this.componentRef = componentRef;\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n this.mutationObserverPopoverContent = new MutationObserver(this.OBSERVER_CALLBACK);\n const element = this.getPopoverElement as HTMLElement;\n this.mutationObserverPopoverContent.observe(element.querySelector('.popover-content') as HTMLElement, this.MUTATION_OBSERVER_CONFIG);\n document.body.appendChild(componentRef.location.nativeElement);\n setTimeout(() => {\n document.addEventListener('click', this.listener);\n })\n const component = componentRef.instance;\n component.popoverContent = this.sHelpPopover;\n component.closeButton = this.closeButton;\n component.icon = this.popoverIcon;\n component.header = this.popoverHeader;\n component.footer = this.popoverFooter;\n component.button = this.popoverButtonText;\n component.position = this.internalPosition;\n component.arrowPosition = this.popoverArrowPosition;\n component.buttonClicked = this.buttonClicked;\n component.closed.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.destroy();\n })\n this.applyPositionIntoElement();\n }\n\n private destroy() {\n document.removeEventListener('click', this.listener);\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n\n this.internalPosition = this.popoverPosition;\n\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n }\n\n private applyPositionIntoElement() {\n const popoverElementPosition = getElementPositionInfo(this.element.nativeElement);\n const position = this.validPosition;\n this.internalPosition = position;\n this.popoverComponentInstance.position = this.internalPosition;\n setTimeout(() => {\n switch (this.internalPosition) {\n case 'bottom': {\n this.applyPopoverPositionBottom(popoverElementPosition);\n break;\n }\n case 'top': {\n this.applyPopoverPositionTop(popoverElementPosition);\n break;\n }\n case 'left': {\n this.applyPopoverPositionLeft(popoverElementPosition);\n break;\n }\n case 'right': {\n this.applyPopoverPositionRight(popoverElementPosition);\n break;\n }\n }\n this.popoverComponentInstance.visible = true;\n })\n\n }\n\n private applyPopoverPositionBottom(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition)\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight}px)`\n }\n\n private applyPopoverPositionTop(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition)\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px - ${popoverHeight}px)`;\n }\n\n private applyPopoverPositionLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px - ${popoverWidth + popoverElementPosition.elementWidth}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private applyPopoverPositionRight(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private getHorizontalLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n let _horizontalLeft = popoverElementPosition.left;\n if (this.popoverArrowPosition === 'end') {\n _horizontalLeft = popoverElementPosition.right - popoverWidth;\n } else if (this.popoverArrowPosition === 'middle') {\n _horizontalLeft = (popoverElementPosition.left + popoverElementPosition.elementWidth / 2) - (popoverWidth / 2);\n }\n return _horizontalLeft;\n }\n\n private getVerticalTop(popoverElementPosition: ElementPosition) {\n const arrowElement = this.popoverComponentInstance.arrowElement?.nativeElement as HTMLElement;\n const arrowElementPosition = getElementPositionInfo(arrowElement);\n const popoverContentPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElement = this.getPopoverElement;\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n let top = `calc(${popoverElementPosition.top}px - ${popoverHeight / 2}px + ${popoverElementPosition.elementHeight / 2}px)`;\n\n const arrowMiddle = arrowElementPosition.elementHeight / 2;\n if (this.popoverArrowPosition === 'beginning') {\n const distanceArrowFromStart = arrowElementPosition.top - popoverContentPosition.top;\n top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight / 2}px - ${distanceArrowFromStart + arrowMiddle}px)`;\n } else if (this.popoverArrowPosition === 'end') {\n const distanceArrowFromEnd = (popoverContentPosition.top + popoverContentPosition.elementHeight) - (arrowElementPosition.top + arrowElementPosition.elementHeight);\n top = `calc(${popoverElementPosition.top}px - ${popoverContentPosition.elementHeight}px + ${popoverElementPosition.elementHeight / 2}px + ${distanceArrowFromEnd + arrowMiddle}px)`;\n }\n return top;\n }\n\n private getLeftoverContentAvailableForPopover(): ElementLeftoverPosition {\n return getElementLeftoverContentAvailable(this.element.nativeElement);\n }\n\n private get getPopoverElement(): HTMLElement {\n return this.componentRef?.location.nativeElement as HTMLElement;\n }\n\n private get popoverComponentInstance() {\n return this.componentRef?.instance as HelpPopoverComponent;\n }\n\n /**\n * Given the current position of the popover and the available space around\n * the trigger element, this function will return the position that the popover\n * will be set at.\n *\n * If the popover will fit at the given position, it will return the same\n * position.\n *\n * If the popover will not fit at the given position, it will return the position\n * that has the most available space (top or bottom).\n *\n * If there is no position with available space, it will return the given\n * position.\n *\n * @returns The position that the popover will be set at.\n */\n private get validPosition(): HelpPopoverPosition {\n const { freeDistanceToBottom, freeDistanceToTop, freeDistanceToLeft, freeDistanceToRight } = this.getLeftoverContentAvailableForPopover();\n\n const popoverElementPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElementWidth = popoverElementPosition.elementWidth;\n const popoverElementHeight = popoverElementPosition.elementHeight;\n\n const remainingSpaceBottom = freeDistanceToBottom - popoverElementHeight;\n const remainingSpaceTop = freeDistanceToTop - popoverElementHeight;\n const remainingSpaceLeft = freeDistanceToLeft - popoverElementWidth;\n const remainingSpaceRight = freeDistanceToRight - popoverElementWidth;\n\n const canSetAtBottom = remainingSpaceBottom > 0;\n const canSetAtTop = remainingSpaceTop > 0;\n const canSetAtLeft = remainingSpaceLeft > 0;\n const canSetAtRight = remainingSpaceRight > 0;\n\n let validPosition: HelpPopoverPosition | undefined = undefined;\n if (canSetAtBottom && this.popoverPosition === 'bottom') {\n validPosition = 'bottom';\n } else if (canSetAtTop && this.popoverPosition === 'top') {\n validPosition = 'top';\n } else if (canSetAtLeft && this.popoverPosition === 'left') {\n validPosition = 'left';\n } else if (canSetAtRight && this.popoverPosition === 'right') {\n validPosition = 'right';\n }\n\n const needUseOtherPosition = !validPosition;\n if (needUseOtherPosition) {\n const freePositions: { position: HelpPopoverPosition, freeDistance: number }[] = [\n {\n position: 'bottom' as HelpPopoverPosition,\n freeDistance: remainingSpaceBottom,\n },\n {\n position: 'top' as HelpPopoverPosition,\n freeDistance: remainingSpaceTop,\n }\n ].filter((x) => x.freeDistance > 0);\n\n if (freePositions.length === 0) {\n return this.popoverPosition;\n }\n const itemWithMaxFreeDistance = freePositions.sort((a, b) => b.freeDistance - a.freeDistance)[0];\n return itemWithMaxFreeDistance.position;\n } else {\n return this.popoverPosition;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HelpPopoverDirective } from './help-popover.directive';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n@NgModule({\n declarations: [HelpPopoverComponent, HelpPopoverDirective],\n imports: [\n CommonModule,\n ButtonModule,\n ],\n exports: [HelpPopoverDirective]\n})\nexport class HelpPopoverModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -124,7 +124,7 @@ class ImageCropperComponent {
124
124
  this.visibleChange.emit(visible);
125
125
  }
126
126
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImageCropperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
127
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ImageCropperComponent, selector: "s-image-cropper", inputs: { id: "id", visible: "visible", header: "header", cropLabel: "cropLabel", selectAnotherLabel: "selectAnotherLabel", removeLabel: "removeLabel", cancelLabel: "cancelLabel", emptyStateTitle: "emptyStateTitle", emptyStateActionLabel: "emptyStateActionLabel", emptyStateIconClass: "emptyStateIconClass", aspectRatio: "aspectRatio", rounded: "rounded", allowSelectAnother: "allowSelectAnother", allowRemove: "allowRemove", allowCancel: "allowCancel", imageSource: "imageSource" }, outputs: { visibleChange: "visibleChange", changeImage: "changeImage", croppedImage: "croppedImage", croppedCanvas: "croppedCanvas", removedImage: "removedImage", cancel: "cancel" }, queries: [{ propertyName: "headerSection", first: true, predicate: HeaderComponent, descendants: true, static: true }, { propertyName: "footerSection", first: true, predicate: FooterComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "image", first: true, predicate: ["image"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n", styles: [".cropper-container{-webkit-touch-callout:none;direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:\" \";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:\" \";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.s-image-cropper{border-radius:0!important;display:flex;justify-content:space-between;flex-direction:column}.s-image-cropper .image-container{display:flex;align-items:center;justify-content:center;height:100%}.s-image-cropper img{max-width:100%;max-height:100%}.s-image-cropper .button-container{display:flex;justify-content:space-between;width:100%}.s-image-cropper .cropper-view-box{outline:2px dashed #fff}.s-image-cropper .cropper-line{opacity:0}.s-image-cropper .cropper-point{background-color:#fff;opacity:1;height:15px;width:15px;border-radius:50%}.s-image-cropper .cropper-point.point-e{right:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-n{top:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-w{left:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-s{bottom:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-ne{right:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-nw{left:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-sw{left:-8.5px;bottom:-8.5px}.s-image-cropper .cropper-point.point-se{right:-8.5px;bottom:-8.5px}.s-image-cropper--rounded .cropper-view-box,.s-image-cropper--rounded .cropper-face{border-radius:50%}.s-image-cropper--rounded .cropper-view-box{outline:1px dashed rgba(255,255,255,.3)}.s-image-cropper--rounded .cropper-view-box:after{border:2px dashed #fff;border-radius:50%;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n/*! Bundled license information:\n\ncropperjs/dist/cropper.min.css:\n (*!\n * Cropper.js v1.6.2\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2024-04-21T07:43:02.731Z\n *)\n*/\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: i3.DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside"], outputs: ["visibleChange"] }, { kind: "directive", type: i4.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
127
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ImageCropperComponent, selector: "s-image-cropper", inputs: { id: "id", visible: "visible", header: "header", cropLabel: "cropLabel", selectAnotherLabel: "selectAnotherLabel", removeLabel: "removeLabel", cancelLabel: "cancelLabel", emptyStateTitle: "emptyStateTitle", emptyStateActionLabel: "emptyStateActionLabel", emptyStateIconClass: "emptyStateIconClass", aspectRatio: "aspectRatio", rounded: "rounded", allowSelectAnother: "allowSelectAnother", allowRemove: "allowRemove", allowCancel: "allowCancel", imageSource: "imageSource" }, outputs: { visibleChange: "visibleChange", changeImage: "changeImage", croppedImage: "croppedImage", croppedCanvas: "croppedCanvas", removedImage: "removedImage", cancel: "cancel" }, queries: [{ propertyName: "headerSection", first: true, predicate: HeaderComponent, descendants: true, static: true }, { propertyName: "footerSection", first: true, predicate: FooterComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "image", first: true, predicate: ["image"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n", styles: [".cropper-container{-webkit-touch-callout:none;direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:\" \";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:\" \";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.s-image-cropper{border-radius:0!important;display:flex;justify-content:space-between;flex-direction:column}.s-image-cropper .image-container{display:flex;align-items:center;justify-content:center;height:100%}.s-image-cropper img{max-width:100%;max-height:100%}.s-image-cropper .button-container{display:flex;justify-content:space-between;width:100%}.s-image-cropper .cropper-view-box{outline:2px dashed #fff}.s-image-cropper .cropper-line{opacity:0}.s-image-cropper .cropper-point{background-color:#fff;opacity:1;height:15px;width:15px;border-radius:50%}.s-image-cropper .cropper-point.point-e{right:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-n{top:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-w{left:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-s{bottom:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-ne{right:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-nw{left:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-sw{left:-8.5px;bottom:-8.5px}.s-image-cropper .cropper-point.point-se{right:-8.5px;bottom:-8.5px}.s-image-cropper--rounded .cropper-view-box,.s-image-cropper--rounded .cropper-face{border-radius:50%}.s-image-cropper--rounded .cropper-view-box{outline:1px dashed rgba(255,255,255,.3)}.s-image-cropper--rounded .cropper-view-box:after{border:2px dashed #fff;border-radius:50%;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n/*! Bundled license information:\n\ncropperjs/dist/cropper.min.css:\n (*!\n * Cropper.js v1.6.2\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2024-04-21T07:43:02.731Z\n *)\n*/\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "menuAriaLabel", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: i3.DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside"], outputs: ["visibleChange"] }, { kind: "directive", type: i4.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
128
128
  }
129
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImageCropperComponent, decorators: [{
130
130
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-image-cropper.mjs","sources":["../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.html","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.module.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.service.ts","../../projects/angular-components/image-cropper/src/seniorsistemas-angular-components-image-cropper.ts"],"sourcesContent":["import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport Cropper from 'cropperjs';\nimport { FooterComponent, HeaderComponent } from '@seniorsistemas/angular-components/structure';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { ActiveDialog } from '@seniorsistemas/angular-components/dialog';\n\n@Component({\n selector: 's-image-cropper',\n templateUrl: './image-cropper.component.html',\n styleUrls: ['./image-cropper.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ImageCropperComponent implements OnInit, OnChanges {\n activeDialog = inject(ActiveDialog, { optional: true });\n public static nextId = 0;\n\n @Input()\n public id = `s-image-cropper-${ImageCropperComponent.nextId++}`;\n\n @Input()\n public visible = false;\n\n @Input()\n public header = 'Recortar imagem';\n\n @Input()\n public cropLabel = 'Recortar';\n\n @Input()\n public selectAnotherLabel = 'Trocar';\n\n @Input()\n public removeLabel = 'Remover';\n\n @Input()\n public cancelLabel = 'Cancelar';\n\n @Input()\n public emptyStateTitle = 'Selecione uma foto, em seguida você poderá ajustá-la';\n\n @Input()\n public emptyStateActionLabel = 'Escolher imagem';\n\n @Input()\n public emptyStateIconClass = 'fa fa-picture-o';\n\n @Input()\n public aspectRatio = NaN;\n\n @Input()\n public rounded = false;\n\n @Input()\n public allowSelectAnother = true;\n\n @Input()\n public allowRemove = true;\n\n @Input()\n public allowCancel = true;\n\n @Input()\n public imageSource?: string;\n\n @Output()\n public visibleChange = new EventEmitter<boolean>();\n\n @Output()\n public changeImage = new EventEmitter();\n\n @Output()\n public croppedImage = new EventEmitter<string>();\n\n @Output()\n public croppedCanvas = new EventEmitter<HTMLCanvasElement>();\n\n @Output()\n public removedImage = new EventEmitter();\n\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public cancel = new EventEmitter();\n\n @ViewChild('image', { static: true })\n public image: ElementRef<HTMLImageElement> | null = null;\n\n @ContentChild(HeaderComponent, { static: true })\n public headerSection: HeaderComponent | null = null;\n\n @ContentChild(FooterComponent, { static: true })\n public footerSection: FooterComponent | null = null;\n\n public cropper: Cropper | null = null;\n\n public ngOnInit() {\n if (this.imageSource) this.initCropper();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['imageSource'] && changes['imageSource'].currentValue) {\n this.initCropper();\n }\n }\n\n private initCropper() {\n if (isNullOrUndefined(this.image)) {\n return\n };\n if (this.cropper) {\n this.cropper.destroy();\n }\n this.image.nativeElement.src = this.imageSource as string;\n this.cropper = new Cropper(this.image.nativeElement, {\n aspectRatio: this.rounded ? 1 : this.aspectRatio,\n guides: false,\n dragMode: 'move' as Cropper.DragMode,\n minCropBoxHeight: 2,\n minCropBoxWidth: 2,\n toggleDragModeOnDblclick: false,\n });\n }\n\n public getRoundedCanvas(sourceCanvas: HTMLCanvasElement): HTMLCanvasElement | null {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n if (isNullOrUndefined(context)) return null;\n\n const width = sourceCanvas.width;\n const height = sourceCanvas.height;\n\n canvas.width = width;\n canvas.height = height;\n\n context.imageSmoothingEnabled = true;\n context.drawImage(sourceCanvas, 0, 0, width, height);\n context.globalCompositeOperation = 'destination-in';\n context.beginPath();\n context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI, true);\n context.fill();\n\n return canvas;\n }\n\n public onCropImage() {\n if (!this.imageSource) {\n this.croppedImage.emit();\n this.croppedCanvas.emit();\n } else {\n const cropperCanvas = this.cropper?.getCroppedCanvas();\n if (cropperCanvas) {\n const canvas = this.rounded ? this.getRoundedCanvas(cropperCanvas) : cropperCanvas;\n if (canvas) {\n this.croppedCanvas.emit(canvas);\n this.croppedImage.emit(canvas.toDataURL());\n }\n }\n }\n this.visible = false;\n this.visibleChange.emit(false);\n }\n\n public onChangeImage() {\n this.changeImage.emit();\n }\n\n public onRemoveImage() {\n this.imageSource = undefined;\n this.removedImage.emit();\n }\n\n public onCancel() {\n this.visible = false;\n this.visibleChange.emit(false);\n this.cancel.emit();\n }\n\n public onModalVisibleChange(visible: boolean) {\n if (!visible) this.onCancel();\n this.visibleChange.emit(visible);\n }\n}\n","<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { StructureModule } from '@seniorsistemas/angular-components/structure';\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { TemplateDirective, TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, EmptyStateModule, StructureModule, DialogComponent, TemplateModule],\n declarations: [ImageCropperComponent],\n exports: [ImageCropperComponent, StructureModule],\n})\nexport class ImageCropperModule { }\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class ImageCropperService {\n public activeCropper?: ActiveCropper;\n\n constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _appRef: ApplicationRef,\n private readonly _injector: Injector,\n ) { }\n\n public show(config?: ImageCropperConfig): void {\n if (this.activeCropper) this._destroy(this.activeCropper);\n\n const activeCropper: ActiveCropper = {\n componentRef: this._componentFactoryResolver\n .resolveComponentFactory(ImageCropperComponent)\n .create(this._injector),\n ngUnsubscribe: new Subject<void>(),\n };\n\n this.activeCropper = activeCropper;\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.attachView(activeCropper.componentRef.hostView);\n const domElem = (activeCropper.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this._configureInstance(activeCropper, config);\n activeCropper.componentRef.instance.visible = true;\n\n activeCropper.componentRef.instance.visibleChange\n .pipe(takeUntil(this.activeCropper.ngUnsubscribe!), delay(1000))\n .subscribe((visible) => {\n if (!visible) this._destroy(activeCropper);\n });\n }\n\n private _configureInstance(activeCropper: ActiveCropper, config?: ImageCropperConfig): void {\n const instance: any = activeCropper.componentRef?.instance;\n\n if (config) {\n Object.keys(config).forEach((key) => {\n const value = (config as any)[key];\n if (typeof value !== 'function') instance[key] = value;\n else if (typeof value === 'function') {\n instance[key]\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((...param: any[]) => (config as any)[key](...param));\n }\n });\n }\n\n instance.visibleChange\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((visible: any) => (instance.visible = visible));\n }\n\n private _destroy(activeCropper: ActiveCropper): void {\n activeCropper.ngUnsubscribe!.next();\n activeCropper.ngUnsubscribe!.complete();\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.detachView(activeCropper.componentRef.hostView);\n activeCropper.componentRef.destroy();\n }\n}\n\nexport interface ActiveCropper {\n componentRef?: ComponentRef<ImageCropperComponent>;\n ngUnsubscribe?: Subject<void>;\n}\n\nexport interface ImageCropperConfig {\n id?: any;\n header?: string;\n cropLabel?: string;\n selectAnotherLabel?: string;\n removeLabel?: string;\n cancelLabel?: string;\n emptyStateTitle?: string;\n emptyStateActionLabel?: string;\n emptyStateIconClass?: string;\n aspectRatio?: number;\n rounded?: boolean;\n allowSelectAnother?: boolean;\n allowRemove?: boolean;\n allowCancel?: boolean;\n imageSource?: string;\n\n cancel?: () => any;\n changeImage?: () => any;\n removedImage?: () => any;\n croppedImage?: (imageSource: string) => any;\n croppedCanvas?: (imageSource: HTMLCanvasElement) => any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-image-cropper.mjs","sources":["../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.html","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.module.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.service.ts","../../projects/angular-components/image-cropper/src/seniorsistemas-angular-components-image-cropper.ts"],"sourcesContent":["import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport Cropper from 'cropperjs';\nimport { FooterComponent, HeaderComponent } from '@seniorsistemas/angular-components/structure';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { ActiveDialog } from '@seniorsistemas/angular-components/dialog';\n\n@Component({\n selector: 's-image-cropper',\n templateUrl: './image-cropper.component.html',\n styleUrls: ['./image-cropper.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ImageCropperComponent implements OnInit, OnChanges {\n activeDialog = inject(ActiveDialog, { optional: true });\n public static nextId = 0;\n\n @Input()\n public id = `s-image-cropper-${ImageCropperComponent.nextId++}`;\n\n @Input()\n public visible = false;\n\n @Input()\n public header = 'Recortar imagem';\n\n @Input()\n public cropLabel = 'Recortar';\n\n @Input()\n public selectAnotherLabel = 'Trocar';\n\n @Input()\n public removeLabel = 'Remover';\n\n @Input()\n public cancelLabel = 'Cancelar';\n\n @Input()\n public emptyStateTitle = 'Selecione uma foto, em seguida você poderá ajustá-la';\n\n @Input()\n public emptyStateActionLabel = 'Escolher imagem';\n\n @Input()\n public emptyStateIconClass = 'fa fa-picture-o';\n\n @Input()\n public aspectRatio = NaN;\n\n @Input()\n public rounded = false;\n\n @Input()\n public allowSelectAnother = true;\n\n @Input()\n public allowRemove = true;\n\n @Input()\n public allowCancel = true;\n\n @Input()\n public imageSource?: string;\n\n @Output()\n public visibleChange = new EventEmitter<boolean>();\n\n @Output()\n public changeImage = new EventEmitter();\n\n @Output()\n public croppedImage = new EventEmitter<string>();\n\n @Output()\n public croppedCanvas = new EventEmitter<HTMLCanvasElement>();\n\n @Output()\n public removedImage = new EventEmitter();\n\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public cancel = new EventEmitter();\n\n @ViewChild('image', { static: true })\n public image: ElementRef<HTMLImageElement> | null = null;\n\n @ContentChild(HeaderComponent, { static: true })\n public headerSection: HeaderComponent | null = null;\n\n @ContentChild(FooterComponent, { static: true })\n public footerSection: FooterComponent | null = null;\n\n public cropper: Cropper | null = null;\n\n public ngOnInit() {\n if (this.imageSource) this.initCropper();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['imageSource'] && changes['imageSource'].currentValue) {\n this.initCropper();\n }\n }\n\n private initCropper() {\n if (isNullOrUndefined(this.image)) {\n return\n };\n if (this.cropper) {\n this.cropper.destroy();\n }\n this.image.nativeElement.src = this.imageSource as string;\n this.cropper = new Cropper(this.image.nativeElement, {\n aspectRatio: this.rounded ? 1 : this.aspectRatio,\n guides: false,\n dragMode: 'move' as Cropper.DragMode,\n minCropBoxHeight: 2,\n minCropBoxWidth: 2,\n toggleDragModeOnDblclick: false,\n });\n }\n\n public getRoundedCanvas(sourceCanvas: HTMLCanvasElement): HTMLCanvasElement | null {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n if (isNullOrUndefined(context)) return null;\n\n const width = sourceCanvas.width;\n const height = sourceCanvas.height;\n\n canvas.width = width;\n canvas.height = height;\n\n context.imageSmoothingEnabled = true;\n context.drawImage(sourceCanvas, 0, 0, width, height);\n context.globalCompositeOperation = 'destination-in';\n context.beginPath();\n context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI, true);\n context.fill();\n\n return canvas;\n }\n\n public onCropImage() {\n if (!this.imageSource) {\n this.croppedImage.emit();\n this.croppedCanvas.emit();\n } else {\n const cropperCanvas = this.cropper?.getCroppedCanvas();\n if (cropperCanvas) {\n const canvas = this.rounded ? this.getRoundedCanvas(cropperCanvas) : cropperCanvas;\n if (canvas) {\n this.croppedCanvas.emit(canvas);\n this.croppedImage.emit(canvas.toDataURL());\n }\n }\n }\n this.visible = false;\n this.visibleChange.emit(false);\n }\n\n public onChangeImage() {\n this.changeImage.emit();\n }\n\n public onRemoveImage() {\n this.imageSource = undefined;\n this.removedImage.emit();\n }\n\n public onCancel() {\n this.visible = false;\n this.visibleChange.emit(false);\n this.cancel.emit();\n }\n\n public onModalVisibleChange(visible: boolean) {\n if (!visible) this.onCancel();\n this.visibleChange.emit(visible);\n }\n}\n","<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { StructureModule } from '@seniorsistemas/angular-components/structure';\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { TemplateDirective, TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, EmptyStateModule, StructureModule, DialogComponent, TemplateModule],\n declarations: [ImageCropperComponent],\n exports: [ImageCropperComponent, StructureModule],\n})\nexport class ImageCropperModule { }\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class ImageCropperService {\n public activeCropper?: ActiveCropper;\n\n constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _appRef: ApplicationRef,\n private readonly _injector: Injector,\n ) { }\n\n public show(config?: ImageCropperConfig): void {\n if (this.activeCropper) this._destroy(this.activeCropper);\n\n const activeCropper: ActiveCropper = {\n componentRef: this._componentFactoryResolver\n .resolveComponentFactory(ImageCropperComponent)\n .create(this._injector),\n ngUnsubscribe: new Subject<void>(),\n };\n\n this.activeCropper = activeCropper;\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.attachView(activeCropper.componentRef.hostView);\n const domElem = (activeCropper.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this._configureInstance(activeCropper, config);\n activeCropper.componentRef.instance.visible = true;\n\n activeCropper.componentRef.instance.visibleChange\n .pipe(takeUntil(this.activeCropper.ngUnsubscribe!), delay(1000))\n .subscribe((visible) => {\n if (!visible) this._destroy(activeCropper);\n });\n }\n\n private _configureInstance(activeCropper: ActiveCropper, config?: ImageCropperConfig): void {\n const instance: any = activeCropper.componentRef?.instance;\n\n if (config) {\n Object.keys(config).forEach((key) => {\n const value = (config as any)[key];\n if (typeof value !== 'function') instance[key] = value;\n else if (typeof value === 'function') {\n instance[key]\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((...param: any[]) => (config as any)[key](...param));\n }\n });\n }\n\n instance.visibleChange\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((visible: any) => (instance.visible = visible));\n }\n\n private _destroy(activeCropper: ActiveCropper): void {\n activeCropper.ngUnsubscribe!.next();\n activeCropper.ngUnsubscribe!.complete();\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.detachView(activeCropper.componentRef.hostView);\n activeCropper.componentRef.destroy();\n }\n}\n\nexport interface ActiveCropper {\n componentRef?: ComponentRef<ImageCropperComponent>;\n ngUnsubscribe?: Subject<void>;\n}\n\nexport interface ImageCropperConfig {\n id?: any;\n header?: string;\n cropLabel?: string;\n selectAnotherLabel?: string;\n removeLabel?: string;\n cancelLabel?: string;\n emptyStateTitle?: string;\n emptyStateActionLabel?: string;\n emptyStateIconClass?: string;\n aspectRatio?: number;\n rounded?: boolean;\n allowSelectAnother?: boolean;\n allowRemove?: boolean;\n allowCancel?: boolean;\n imageSource?: string;\n\n cancel?: () => any;\n changeImage?: () => any;\n removedImage?: () => any;\n croppedImage?: (imageSource: string) => any;\n croppedCanvas?: (imageSource: HTMLCanvasElement) => any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -286,7 +286,7 @@ class InlineEditItemComponent {
286
286
  });
287
287
  }
288
288
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InlineEditItemComponent, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Component });
289
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InlineEditItemComponent, selector: "s-inline-edit-item", inputs: { label: "label", formGroup: "formGroup", field: "field", errorMessages: "errorMessages" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["formContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div class=\"inline-edit-item\">\n <label\n class=\"label\"\n *sInfoSign=\"field.tooltip ? field.tooltip : ''\">\n {{ label }}:\n </label>\n\n <div class=\"content\">\n <span *ngIf=\"showValue\" class=\"value\">\n {{ getFormattedValue(formGroup.get(field.name)?.value) }}\n </span>\n\n <s-button\n *ngIf=\"showEmptyValueButton\"\n style=\"margin-left: -8px\"\n priority=\"link\"\n [label]=\"'platform.angular_components.add_information' | translate\"\n (clicked)=\"onEdit()\">\n </s-button>\n\n <div [hidden]=\"!isEditing\" class=\"form-container\">\n <ng-container #formContainer></ng-container>\n </div>\n\n <div class=\"options\">\n <s-button\n *ngIf=\"showEditButton\"\n [tooltip]=\"'platform.angular_components.edit' | translate\"\n (clicked)=\"onEdit()\"\n priority=\"link\"\n [auxiliary]=\"true\"\n iconClass=\"fas fa-edit\">\n </s-button>\n <s-button\n *ngIf=\"isEditing\"\n [tooltip]=\"'platform.angular_components.save' | translate\"\n (clicked)=\"onSave()\"\n priority=\"default\"\n [auxiliary]=\"true\"\n iconClass=\"fas fa-check\"\n styleClass=\"save-option\"\n iconColor=\"#428bca\">\n </s-button>\n <s-button\n *ngIf=\"isEditing\"\n [tooltip]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"onCancel()\"\n priority=\"default\"\n [auxiliary]=\"true\"\n iconClass=\"fas fa-times\"\n iconColor=\"#c13018\">\n </s-button>\n </div>\n </div>\n <s-control-errors\n [form]=\"formGroup\"\n [control]=\"formGroup.controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\">\n </s-control-errors>\n</div>\n", styles: [".inline-edit-item{align-items:flex-start;display:flex;flex-direction:column}.inline-edit-item .label{color:#333;font-family:\"Open Sans\" sans-serif;font-size:14px;font-weight:700;margin-bottom:0}.inline-edit-item .content{align-items:center;display:flex;gap:16px}.inline-edit-item .content .value{color:#999;font-family:\"Open Sans\" sans-serif;font-size:14px}.inline-edit-item .content .options{display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i4.ControlErrorsComponent, selector: "s-control-errors", inputs: ["id", "control", "errorMessages", "form"] }, { kind: "directive", type: i5.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
289
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InlineEditItemComponent, selector: "s-inline-edit-item", inputs: { label: "label", formGroup: "formGroup", field: "field", errorMessages: "errorMessages" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["formContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div class=\"inline-edit-item\">\n <label\n class=\"label\"\n *sInfoSign=\"field.tooltip ? field.tooltip : ''\">\n {{ label }}:\n </label>\n\n <div class=\"content\">\n <span *ngIf=\"showValue\" class=\"value\">\n {{ getFormattedValue(formGroup.get(field.name)?.value) }}\n </span>\n\n <s-button\n *ngIf=\"showEmptyValueButton\"\n style=\"margin-left: -8px\"\n priority=\"link\"\n [label]=\"'platform.angular_components.add_information' | translate\"\n (clicked)=\"onEdit()\">\n </s-button>\n\n <div [hidden]=\"!isEditing\" class=\"form-container\">\n <ng-container #formContainer></ng-container>\n </div>\n\n <div class=\"options\">\n <s-button\n *ngIf=\"showEditButton\"\n [tooltip]=\"'platform.angular_components.edit' | translate\"\n (clicked)=\"onEdit()\"\n priority=\"link\"\n [auxiliary]=\"true\"\n iconClass=\"fas fa-edit\">\n </s-button>\n <s-button\n *ngIf=\"isEditing\"\n [tooltip]=\"'platform.angular_components.save' | translate\"\n (clicked)=\"onSave()\"\n priority=\"default\"\n [auxiliary]=\"true\"\n iconClass=\"fas fa-check\"\n styleClass=\"save-option\"\n iconColor=\"#428bca\">\n </s-button>\n <s-button\n *ngIf=\"isEditing\"\n [tooltip]=\"'platform.angular_components.cancel' | translate\"\n (clicked)=\"onCancel()\"\n priority=\"default\"\n [auxiliary]=\"true\"\n iconClass=\"fas fa-times\"\n iconColor=\"#c13018\">\n </s-button>\n </div>\n </div>\n <s-control-errors\n [form]=\"formGroup\"\n [control]=\"formGroup.controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\">\n </s-control-errors>\n</div>\n", styles: [".inline-edit-item{align-items:flex-start;display:flex;flex-direction:column}.inline-edit-item .label{color:#333;font-family:\"Open Sans\" sans-serif;font-size:14px;font-weight:700;margin-bottom:0}.inline-edit-item .content{align-items:center;display:flex;gap:16px}.inline-edit-item .content .value{color:#999;font-family:\"Open Sans\" sans-serif;font-size:14px}.inline-edit-item .content .options{display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "menuAriaLabel", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i4.ControlErrorsComponent, selector: "s-control-errors", inputs: ["id", "control", "errorMessages", "form"] }, { kind: "directive", type: i5.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
290
290
  }
291
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InlineEditItemComponent, decorators: [{
292
292
  type: Component,
@@ -440,7 +440,7 @@ class InlineEditNumberComponent {
440
440
  });
441
441
  }
442
442
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InlineEditNumberComponent, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Component });
443
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InlineEditNumberComponent, selector: "ng-component", inputs: { field: "field", formGroup: "formGroup" }, ngImport: i0, template: "<p-inputMask\n *ngIf=\"field.mask; else noMask\"\n type=\"text\"\n [inputId]=\"field.name\"\n [name]=\"field.name\"\n [mask]=\"mask\"\n [placeholder]=\"field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\"\n (onFocus)=\"field.onFocus ? field.onFocus($event) : null\"\n (onComplete)=\"field.onComplete ? field.onComplete($event) : null\"\n (onInput)=\"field.onInput ? field.onInput($event) : null\"\n [autoClear]=\"field.autoClear\"\n [(ngModel)]=\"tempValue\">\n</p-inputMask>\n\n<ng-template #noMask>\n <ng-container>\n <div class=\"ui-inputgroup\">\n <ng-container *ngIf=\"field.leftAddon\">\n <span *ngIf=\"field.leftAddon.callback\" class=\"addon-button addon-button--left\">\n <s-button\n [label]=\"field.leftAddon.label\"\n [iconClass]=\"field.leftAddon.icon\"\n [priority]=\"field.leftAddon.priority\"\n [disabled]=\"leftAddonDisabled\"\n (clicked)=\"field.leftAddon.callback()\">\n </s-button>\n </span>\n <span *ngIf=\"!field.leftAddon.callback\" class=\"ui-inputgroup-addon\">\n <span *ngIf=\"field.leftAddon.label\">{{ field.leftAddon.label }}</span>\n <span *ngIf=\"!field.leftAddon.label\" [ngClass]=\"field.leftAddon.icon\"></span>\n </span>\n </ng-container>\n\n <input\n [id]=\"field.name\"\n type=\"text\"\n [name]=\"field.name\"\n sBignumberInput\n [allowNegative]=\"field.allowNegative ?? false\"\n [precision]=\"precision\"\n [scale]=\"scale\"\n [alignTo]=\"field.alignTo\"\n [sTooltip]=\"field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"field.placeholder\"\n [showDelay]=\"500\"\n pInputText\n [autocomplete]=\"field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n (blur)=\"field.onBlur ? field.onBlur($event) : null\"\n (focus)=\"field.onFocus ? field.onFocus($event) : null\"\n [(ngModel)]=\"tempValue\"/>\n <ng-container *ngIf=\"field.rightAddon\">\n <span *ngIf=\"field.rightAddon.callback\" class=\"addon-button addon-button--right\">\n <s-button\n [label]=\"field.rightAddon.label\"\n [iconClass]=\"field.rightAddon.icon\"\n [priority]=\"field.rightAddon.priority\"\n [disabled]=\"rightAddonDisabled\"\n (clicked)=\"field.rightAddon.callback()\">\n </s-button>\n </span>\n <span *ngIf=\"!field.rightAddon.callback\" class=\"ui-inputgroup-addon\">\n <span *ngIf=\"field.rightAddon.label\">{{ field.rightAddon.label }}</span>\n <span *ngIf=\"!field.rightAddon.label\" [ngClass]=\"field.rightAddon.icon\"></span>\n </span>\n </ng-container>\n </div>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.BignumberInputDirective, selector: "input[sBignumberInput]", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "placeholder"], outputs: ["pasteRejected"] }, { kind: "component", type: i3.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "directive", type: i6$1.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i7.InputMask, selector: "p-inputmask, p-inputMask, p-input-mask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "directive", type: i8.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }] });
443
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InlineEditNumberComponent, selector: "ng-component", inputs: { field: "field", formGroup: "formGroup" }, ngImport: i0, template: "<p-inputMask\n *ngIf=\"field.mask; else noMask\"\n type=\"text\"\n [inputId]=\"field.name\"\n [name]=\"field.name\"\n [mask]=\"mask\"\n [placeholder]=\"field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\"\n (onFocus)=\"field.onFocus ? field.onFocus($event) : null\"\n (onComplete)=\"field.onComplete ? field.onComplete($event) : null\"\n (onInput)=\"field.onInput ? field.onInput($event) : null\"\n [autoClear]=\"field.autoClear\"\n [(ngModel)]=\"tempValue\">\n</p-inputMask>\n\n<ng-template #noMask>\n <ng-container>\n <div class=\"ui-inputgroup\">\n <ng-container *ngIf=\"field.leftAddon\">\n <span *ngIf=\"field.leftAddon.callback\" class=\"addon-button addon-button--left\">\n <s-button\n [label]=\"field.leftAddon.label\"\n [iconClass]=\"field.leftAddon.icon\"\n [priority]=\"field.leftAddon.priority\"\n [disabled]=\"leftAddonDisabled\"\n (clicked)=\"field.leftAddon.callback()\">\n </s-button>\n </span>\n <span *ngIf=\"!field.leftAddon.callback\" class=\"ui-inputgroup-addon\">\n <span *ngIf=\"field.leftAddon.label\">{{ field.leftAddon.label }}</span>\n <span *ngIf=\"!field.leftAddon.label\" [ngClass]=\"field.leftAddon.icon\"></span>\n </span>\n </ng-container>\n\n <input\n [id]=\"field.name\"\n type=\"text\"\n [name]=\"field.name\"\n sBignumberInput\n [allowNegative]=\"field.allowNegative ?? false\"\n [precision]=\"precision\"\n [scale]=\"scale\"\n [alignTo]=\"field.alignTo\"\n [sTooltip]=\"field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"field.placeholder\"\n [showDelay]=\"500\"\n pInputText\n [autocomplete]=\"field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n (blur)=\"field.onBlur ? field.onBlur($event) : null\"\n (focus)=\"field.onFocus ? field.onFocus($event) : null\"\n [(ngModel)]=\"tempValue\"/>\n <ng-container *ngIf=\"field.rightAddon\">\n <span *ngIf=\"field.rightAddon.callback\" class=\"addon-button addon-button--right\">\n <s-button\n [label]=\"field.rightAddon.label\"\n [iconClass]=\"field.rightAddon.icon\"\n [priority]=\"field.rightAddon.priority\"\n [disabled]=\"rightAddonDisabled\"\n (clicked)=\"field.rightAddon.callback()\">\n </s-button>\n </span>\n <span *ngIf=\"!field.rightAddon.callback\" class=\"ui-inputgroup-addon\">\n <span *ngIf=\"field.rightAddon.label\">{{ field.rightAddon.label }}</span>\n <span *ngIf=\"!field.rightAddon.label\" [ngClass]=\"field.rightAddon.icon\"></span>\n </span>\n </ng-container>\n </div>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.BignumberInputDirective, selector: "input[sBignumberInput]", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "placeholder"], outputs: ["pasteRejected"] }, { kind: "component", type: i3.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "menuAriaLabel", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "directive", type: i6$1.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i7.InputMask, selector: "p-inputmask, p-inputMask, p-input-mask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "directive", type: i8.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }] });
444
444
  }
445
445
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InlineEditNumberComponent, decorators: [{
446
446
  type: Component,