@sapphire-ion/framework 1.2.32 → 1.2.36

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.
@@ -2,25 +2,29 @@ import { InjectionToken, NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { EnvironmentService } from './services/environment.service';
4
4
  import { ModalFocusTrapService } from './services/modal-focus-trap.service';
5
+ import { PopoverFocusTrapService } from './services/popover-focus-trap.service';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "./services/modal-focus-trap.service";
8
+ import * as i2 from "./services/popover-focus-trap.service";
7
9
  export const EnvironmentInjectionToken = new InjectionToken('Environment');
8
10
  export class SapphireIonFrameworkModule {
9
- constructor(mis) {
11
+ constructor(mis, pos) {
10
12
  this.mis = mis;
13
+ this.pos = pos;
11
14
  }
12
15
  static forRoot(config) {
13
16
  return {
14
17
  ngModule: SapphireIonFrameworkModule,
15
18
  providers: [
16
19
  ModalFocusTrapService,
20
+ PopoverFocusTrapService,
17
21
  EnvironmentService, { provide: EnvironmentInjectionToken, useValue: config },
18
22
  ]
19
23
  };
20
24
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, deps: [{ token: i1.ModalFocusTrapService }], target: i0.ɵɵFactoryTarget.NgModule }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, deps: [{ token: i1.ModalFocusTrapService }, { token: i2.PopoverFocusTrapService }], target: i0.ɵɵFactoryTarget.NgModule }); }
22
26
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, imports: [CommonModule] }); }
23
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, providers: [ModalFocusTrapService], imports: [CommonModule] }); }
27
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, providers: [ModalFocusTrapService, PopoverFocusTrapService], imports: [CommonModule] }); }
24
28
  }
25
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, decorators: [{
26
30
  type: NgModule,
@@ -28,7 +32,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
28
32
  declarations: [],
29
33
  exports: [],
30
34
  imports: [CommonModule,],
31
- providers: [ModalFocusTrapService],
35
+ providers: [ModalFocusTrapService, PopoverFocusTrapService],
32
36
  }]
33
- }], ctorParameters: () => [{ type: i1.ModalFocusTrapService }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQUU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUMsQ0FBQztBQU94RixNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQXFCLEdBQTBCO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQXVCO0lBQUksQ0FBQztJQUVwRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW1CO1FBQ2hDLE9BQU87WUFDTCxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLFNBQVMsRUFBRTtnQkFDVCxxQkFBcUI7Z0JBQ3JCLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDN0U7U0FDRixDQUFBO0lBQ0gsQ0FBQzsrR0FYVSwwQkFBMEI7Z0hBQTFCLDBCQUEwQixZQUgxQixZQUFZO2dIQUdaLDBCQUEwQixhQUYxQixDQUFFLHFCQUFxQixDQUFFLFlBRHpCLFlBQVk7OzRGQUdaLDBCQUEwQjtrQkFOdEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFPLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFFLFlBQVksRUFBRztvQkFDMUIsU0FBUyxFQUFFLENBQUUscUJBQXFCLENBQUU7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vY2xhc3Nlcy9lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZGFsRm9jdXNUcmFwU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbW9kYWwtZm9jdXMtdHJhcC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudEluamVjdGlvblRva2VuID0gbmV3IEluamVjdGlvblRva2VuPEVudmlyb25tZW50PignRW52aXJvbm1lbnQnKTtcclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGV4cG9ydHMgICAgIDogW10sXHJcbiAgaW1wb3J0czogWyBDb21tb25Nb2R1bGUsIF0sXHJcbiAgcHJvdmlkZXJzOiBbIE1vZGFsRm9jdXNUcmFwU2VydmljZSBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2FwcGhpcmVJb25GcmFtZXdvcmtNb2R1bGUgeyBcclxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBtaXM6IE1vZGFsRm9jdXNUcmFwU2VydmljZSApIHt9XHJcblxyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogRW52aXJvbm1lbnQpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNhcHBoaXJlSW9uRnJhbWV3b3JrTW9kdWxlPiB7XHJcbiAgICByZXR1cm4geyBcclxuICAgICAgbmdNb2R1bGU6IFNhcHBoaXJlSW9uRnJhbWV3b3JrTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFsgXHJcbiAgICAgICAgTW9kYWxGb2N1c1RyYXBTZXJ2aWNlLFxyXG4gICAgICAgIEVudmlyb25tZW50U2VydmljZSwgeyBwcm92aWRlOiBFbnZpcm9ubWVudEluamVjdGlvblRva2VuLCB1c2VWYWx1ZTogY29uZmlnIH0sIFxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
37
+ }], ctorParameters: () => [{ type: i1.ModalFocusTrapService }, { type: i2.PopoverFocusTrapService }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUFFaEYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxjQUFjLENBQWMsYUFBYSxDQUFDLENBQUM7QUFPeEYsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFxQixHQUEwQixFQUFVLEdBQTZCO1FBQWpFLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBMEI7SUFBSSxDQUFDO0lBRTNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBbUI7UUFDaEMsT0FBTztZQUNMLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsU0FBUyxFQUFFO2dCQUNULHFCQUFxQjtnQkFDckIsdUJBQXVCO2dCQUN2QixrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2FBQzdFO1NBQ0YsQ0FBQTtJQUNILENBQUM7K0dBWlUsMEJBQTBCO2dIQUExQiwwQkFBMEIsWUFIMUIsWUFBWTtnSEFHWiwwQkFBMEIsYUFGMUIsQ0FBRSxxQkFBcUIsRUFBRyx1QkFBdUIsQ0FBQyxZQURsRCxZQUFZOzs0RkFHWiwwQkFBMEI7a0JBTnRDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBTyxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBRSxZQUFZLEVBQUc7b0JBQzFCLFNBQVMsRUFBRSxDQUFFLHFCQUFxQixFQUFHLHVCQUF1QixDQUFDO2lCQUM5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2NsYXNzZXMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2RhbEZvY3VzVHJhcFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21vZGFsLWZvY3VzLXRyYXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvcG92ZXJGb2N1c1RyYXBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wb3BvdmVyLWZvY3VzLXRyYXAuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY29uc3QgRW52aXJvbm1lbnRJbmplY3Rpb25Ub2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnZpcm9ubWVudD4oJ0Vudmlyb25tZW50Jyk7XHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBleHBvcnRzICAgICA6IFtdLFxyXG4gIGltcG9ydHM6IFsgQ29tbW9uTW9kdWxlLCBdLFxyXG4gIHByb3ZpZGVyczogWyBNb2RhbEZvY3VzVHJhcFNlcnZpY2UgLCBQb3BvdmVyRm9jdXNUcmFwU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYXBwaGlyZUlvbkZyYW1ld29ya01vZHVsZSB7IFxyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIG1pczogTW9kYWxGb2N1c1RyYXBTZXJ2aWNlLCBwcml2YXRlIHBvcyA6IFBvcG92ZXJGb2N1c1RyYXBTZXJ2aWNlICkge31cclxuXHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBFbnZpcm9ubWVudCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U2FwcGhpcmVJb25GcmFtZXdvcmtNb2R1bGU+IHtcclxuICAgIHJldHVybiB7IFxyXG4gICAgICBuZ01vZHVsZTogU2FwcGhpcmVJb25GcmFtZXdvcmtNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogWyBcclxuICAgICAgICBNb2RhbEZvY3VzVHJhcFNlcnZpY2UsXHJcbiAgICAgICAgUG9wb3ZlckZvY3VzVHJhcFNlcnZpY2UsXHJcbiAgICAgICAgRW52aXJvbm1lbnRTZXJ2aWNlLCB7IHByb3ZpZGU6IEVudmlyb25tZW50SW5qZWN0aW9uVG9rZW4sIHVzZVZhbHVlOiBjb25maWcgfSwgXHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,62 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Corrige o focus trap em modais do Ionic, permite que o foco não fique preso dentro do popover.
5
+ * Utilizado para concertar interatividade com popovers e outros elementos que podem ser interativos fora do popover.
6
+ */
7
+ export class PopoverFocusTrapService {
8
+ constructor() {
9
+ this.initGlobalFocusTrapDisable();
10
+ }
11
+ initGlobalFocusTrapDisable() {
12
+ // Wait for the platform to be ready
13
+ document.addEventListener('DOMContentLoaded', () => {
14
+ this.setuppopoverObserver();
15
+ });
16
+ }
17
+ setuppopoverObserver() {
18
+ // Create a mutation observer to watch for new popovers
19
+ const observer = new MutationObserver((mutations) => {
20
+ mutations.forEach((mutation) => {
21
+ mutation.addedNodes.forEach((node) => {
22
+ if (node.nodeType === Node.ELEMENT_NODE) {
23
+ const element = node;
24
+ // Check if the added node is an ion-popover
25
+ if (element.tagName?.toLowerCase() === 'ion-popover') {
26
+ this.disableFocusTrap(element);
27
+ }
28
+ // Check for ion-popover children
29
+ const popovers = element.querySelectorAll?.('ion-popover');
30
+ popovers?.forEach(popover => this.disableFocusTrap(popover));
31
+ }
32
+ });
33
+ });
34
+ });
35
+ // Start observing
36
+ observer.observe(document.body, {
37
+ childList: true,
38
+ subtree: true
39
+ });
40
+ // Also handle existing popovers
41
+ const existingpopovers = document.querySelectorAll('ion-popover');
42
+ existingpopovers.forEach(popover => this.disableFocusTrap(popover));
43
+ }
44
+ disableFocusTrap(popover) {
45
+ // Add the CSS class
46
+ popover.classList.add('ion-disable-focus-trap');
47
+ // Set the property if it exists
48
+ const popoverElement = popover;
49
+ if (popoverElement.disableFocusTrap !== undefined) {
50
+ popoverElement.disableFocusTrap = true;
51
+ }
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopoverFocusTrapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
54
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopoverFocusTrapService, providedIn: 'root' }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopoverFocusTrapService, decorators: [{
57
+ type: Injectable,
58
+ args: [{
59
+ providedIn: 'root'
60
+ }]
61
+ }], ctorParameters: () => [] });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1mb2N1cy10cmFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3BvcG92ZXItZm9jdXMtdHJhcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOzs7R0FHRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFFbEM7UUFDRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLG9DQUFvQztRQUNwQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1lBQ2pELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQix1REFBdUQ7UUFDdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2xELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDN0IsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt3QkFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBZSxDQUFDO3dCQUVoQyw0Q0FBNEM7d0JBQzVDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxhQUFhLEVBQUUsQ0FBQzs0QkFDckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNqQyxDQUFDO3dCQUVELGlDQUFpQzt3QkFDakMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQzNELFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDL0QsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxrQkFBa0I7UUFDbEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQzlCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFFSCxnQ0FBZ0M7UUFDaEMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLG9CQUFvQjtRQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRWhELGdDQUFnQztRQUNoQyxNQUFNLGNBQWMsR0FBRyxPQUFjLENBQUM7UUFDdEMsSUFBSSxjQUFjLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEQsY0FBYyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQzsrR0F0RFUsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBDb3JyaWdlIG8gZm9jdXMgdHJhcCBlbSBtb2RhaXMgZG8gSW9uaWMsIHBlcm1pdGUgcXVlIG8gZm9jbyBuw6NvIGZpcXVlIHByZXNvIGRlbnRybyBkbyBwb3BvdmVyLlxyXG4gKiBVdGlsaXphZG8gcGFyYSBjb25jZXJ0YXIgaW50ZXJhdGl2aWRhZGUgY29tIHBvcG92ZXJzIGUgb3V0cm9zIGVsZW1lbnRvcyBxdWUgcG9kZW0gc2VyIGludGVyYXRpdm9zIGZvcmEgZG8gcG9wb3Zlci5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvcG92ZXJGb2N1c1RyYXBTZXJ2aWNlIHtcclxuICBcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuaW5pdEdsb2JhbEZvY3VzVHJhcERpc2FibGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdEdsb2JhbEZvY3VzVHJhcERpc2FibGUoKSB7XHJcbiAgICAvLyBXYWl0IGZvciB0aGUgcGxhdGZvcm0gdG8gYmUgcmVhZHlcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0dXBwb3BvdmVyT2JzZXJ2ZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cHBvcG92ZXJPYnNlcnZlcigpIHtcclxuICAgIC8vIENyZWF0ZSBhIG11dGF0aW9uIG9ic2VydmVyIHRvIHdhdGNoIGZvciBuZXcgcG9wb3ZlcnNcclxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xyXG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcclxuICAgICAgICBtdXRhdGlvbi5hZGRlZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gbm9kZSBhcyBFbGVtZW50O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGFkZGVkIG5vZGUgaXMgYW4gaW9uLXBvcG92ZXJcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2lvbi1wb3BvdmVyJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZvY3VzVHJhcChlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGlvbi1wb3BvdmVyIGNoaWxkcmVuXHJcbiAgICAgICAgICAgIGNvbnN0IHBvcG92ZXJzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPy4oJ2lvbi1wb3BvdmVyJyk7XHJcbiAgICAgICAgICAgIHBvcG92ZXJzPy5mb3JFYWNoKHBvcG92ZXIgPT4gdGhpcy5kaXNhYmxlRm9jdXNUcmFwKHBvcG92ZXIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBTdGFydCBvYnNlcnZpbmdcclxuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge1xyXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgIHN1YnRyZWU6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEFsc28gaGFuZGxlIGV4aXN0aW5nIHBvcG92ZXJzXHJcbiAgICBjb25zdCBleGlzdGluZ3BvcG92ZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW9uLXBvcG92ZXInKTtcclxuICAgIGV4aXN0aW5ncG9wb3ZlcnMuZm9yRWFjaChwb3BvdmVyID0+IHRoaXMuZGlzYWJsZUZvY3VzVHJhcChwb3BvdmVyKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc2FibGVGb2N1c1RyYXAocG9wb3ZlcjogRWxlbWVudCkge1xyXG4gICAgLy8gQWRkIHRoZSBDU1MgY2xhc3NcclxuICAgIHBvcG92ZXIuY2xhc3NMaXN0LmFkZCgnaW9uLWRpc2FibGUtZm9jdXMtdHJhcCcpO1xyXG4gICAgXHJcbiAgICAvLyBTZXQgdGhlIHByb3BlcnR5IGlmIGl0IGV4aXN0c1xyXG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnQgPSBwb3BvdmVyIGFzIGFueTtcclxuICAgIGlmIChwb3BvdmVyRWxlbWVudC5kaXNhYmxlRm9jdXNUcmFwICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcG9wb3ZlckVsZW1lbnQuZGlzYWJsZUZvY3VzVHJhcCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
@@ -688,23 +688,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
688
688
  }]
689
689
  }], ctorParameters: () => [] });
690
690
 
691
+ /**
692
+ * Corrige o focus trap em modais do Ionic, permite que o foco não fique preso dentro do popover.
693
+ * Utilizado para concertar interatividade com popovers e outros elementos que podem ser interativos fora do popover.
694
+ */
695
+ class PopoverFocusTrapService {
696
+ constructor() {
697
+ this.initGlobalFocusTrapDisable();
698
+ }
699
+ initGlobalFocusTrapDisable() {
700
+ // Wait for the platform to be ready
701
+ document.addEventListener('DOMContentLoaded', () => {
702
+ this.setuppopoverObserver();
703
+ });
704
+ }
705
+ setuppopoverObserver() {
706
+ // Create a mutation observer to watch for new popovers
707
+ const observer = new MutationObserver((mutations) => {
708
+ mutations.forEach((mutation) => {
709
+ mutation.addedNodes.forEach((node) => {
710
+ if (node.nodeType === Node.ELEMENT_NODE) {
711
+ const element = node;
712
+ // Check if the added node is an ion-popover
713
+ if (element.tagName?.toLowerCase() === 'ion-popover') {
714
+ this.disableFocusTrap(element);
715
+ }
716
+ // Check for ion-popover children
717
+ const popovers = element.querySelectorAll?.('ion-popover');
718
+ popovers?.forEach(popover => this.disableFocusTrap(popover));
719
+ }
720
+ });
721
+ });
722
+ });
723
+ // Start observing
724
+ observer.observe(document.body, {
725
+ childList: true,
726
+ subtree: true
727
+ });
728
+ // Also handle existing popovers
729
+ const existingpopovers = document.querySelectorAll('ion-popover');
730
+ existingpopovers.forEach(popover => this.disableFocusTrap(popover));
731
+ }
732
+ disableFocusTrap(popover) {
733
+ // Add the CSS class
734
+ popover.classList.add('ion-disable-focus-trap');
735
+ // Set the property if it exists
736
+ const popoverElement = popover;
737
+ if (popoverElement.disableFocusTrap !== undefined) {
738
+ popoverElement.disableFocusTrap = true;
739
+ }
740
+ }
741
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopoverFocusTrapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
742
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopoverFocusTrapService, providedIn: 'root' }); }
743
+ }
744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopoverFocusTrapService, decorators: [{
745
+ type: Injectable,
746
+ args: [{
747
+ providedIn: 'root'
748
+ }]
749
+ }], ctorParameters: () => [] });
750
+
691
751
  const EnvironmentInjectionToken = new InjectionToken('Environment');
692
752
  class SapphireIonFrameworkModule {
693
- constructor(mis) {
753
+ constructor(mis, pos) {
694
754
  this.mis = mis;
755
+ this.pos = pos;
695
756
  }
696
757
  static forRoot(config) {
697
758
  return {
698
759
  ngModule: SapphireIonFrameworkModule,
699
760
  providers: [
700
761
  ModalFocusTrapService,
762
+ PopoverFocusTrapService,
701
763
  EnvironmentService, { provide: EnvironmentInjectionToken, useValue: config },
702
764
  ]
703
765
  };
704
766
  }
705
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, deps: [{ token: ModalFocusTrapService }], target: i0.ɵɵFactoryTarget.NgModule }); }
767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, deps: [{ token: ModalFocusTrapService }, { token: PopoverFocusTrapService }], target: i0.ɵɵFactoryTarget.NgModule }); }
706
768
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, imports: [CommonModule] }); }
707
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, providers: [ModalFocusTrapService], imports: [CommonModule] }); }
769
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, providers: [ModalFocusTrapService, PopoverFocusTrapService], imports: [CommonModule] }); }
708
770
  }
709
771
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SapphireIonFrameworkModule, decorators: [{
710
772
  type: NgModule,
@@ -712,9 +774,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
712
774
  declarations: [],
713
775
  exports: [],
714
776
  imports: [CommonModule,],
715
- providers: [ModalFocusTrapService],
777
+ providers: [ModalFocusTrapService, PopoverFocusTrapService],
716
778
  }]
717
- }], ctorParameters: () => [{ type: ModalFocusTrapService }] });
779
+ }], ctorParameters: () => [{ type: ModalFocusTrapService }, { type: PopoverFocusTrapService }] });
718
780
 
719
781
  class Environment {
720
782
  get defaultPageLimit() {