@sapphire-ion/framework 1.2.60 → 1.2.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +10 -17
- package/esm2022/lib/components/default/default-view/view.mjs +8 -13
- package/esm2022/lib/index.mjs +2 -1
- package/esm2022/lib/services/navigation-context.service.mjs +112 -0
- package/esm2022/lib/services/web/http.service.mjs +9 -3
- package/fesm2022/sapphire-ion-framework.mjs +129 -31
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
- package/lib/components/default/default-view/header-view/header-view.component.d.ts +3 -1
- package/lib/components/default/default-view/view.d.ts +2 -0
- package/lib/index.d.ts +1 -0
- package/lib/services/navigation-context.service.d.ts +14 -0
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import moment from 'moment';
|
|
|
8
8
|
import { Buffer } from 'buffer';
|
|
9
9
|
import mime from 'mime';
|
|
10
10
|
import { Capacitor } from '@capacitor/core';
|
|
11
|
-
import { BehaviorSubject, firstValueFrom, from, switchMap, Subject, takeUntil, distinctUntilChanged, debounceTime, lastValueFrom, Observable, tap, finalize, share, catchError } from 'rxjs';
|
|
11
|
+
import { BehaviorSubject, firstValueFrom, from, switchMap, Subject, takeUntil, distinctUntilChanged, debounceTime, filter, lastValueFrom, Observable, tap, finalize, share, catchError } from 'rxjs';
|
|
12
12
|
import * as i1$1 from '@angular/common/http';
|
|
13
13
|
import { HttpClient, HttpEventType, HttpHeaders } from '@angular/common/http';
|
|
14
14
|
import * as i2$1 from '@angular/forms';
|
|
@@ -19,7 +19,7 @@ import * as i2 from '@angular/platform-browser';
|
|
|
19
19
|
import { Preferences } from '@capacitor/preferences';
|
|
20
20
|
import { jwtDecode } from 'jwt-decode';
|
|
21
21
|
import * as i2$2 from '@angular/router';
|
|
22
|
-
import { ActivatedRoute, RouterLinkWithHref, RouterModule, RouterOutlet, RouterLink } from '@angular/router';
|
|
22
|
+
import { NavigationEnd, ActivatedRoute, RouterLinkWithHref, RouterModule, RouterOutlet, RouterLink } from '@angular/router';
|
|
23
23
|
import { maskitoTransform } from '@maskito/core';
|
|
24
24
|
import { maskitoPhoneOptionsGenerator } from '@maskito/phone';
|
|
25
25
|
import metadata from 'libphonenumber-js/min/metadata';
|
|
@@ -1062,8 +1062,14 @@ class HttpService {
|
|
|
1062
1062
|
if (!redirectPath) {
|
|
1063
1063
|
return;
|
|
1064
1064
|
}
|
|
1065
|
-
const path = redirectPath.replace(
|
|
1066
|
-
|
|
1065
|
+
const path = redirectPath.replace(':id', id.toString());
|
|
1066
|
+
// se contém "/from/", precisa subir 2 níveis
|
|
1067
|
+
const currentSegments = activatedRoute.snapshot.url.map(u => u.path);
|
|
1068
|
+
const level = currentSegments.includes('from') ? '../../' : '../';
|
|
1069
|
+
this.navController.navigateRoot([`${level}${path}`], {
|
|
1070
|
+
relativeTo: activatedRoute,
|
|
1071
|
+
state: { __preserveBack: true }
|
|
1072
|
+
});
|
|
1067
1073
|
}
|
|
1068
1074
|
FilesToForm(object, formData = new FormData(), lstTableFieldsView = null) {
|
|
1069
1075
|
if (!lstTableFieldsView) {
|
|
@@ -4610,10 +4616,118 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4610
4616
|
args: ['defList']
|
|
4611
4617
|
}] } });
|
|
4612
4618
|
|
|
4619
|
+
class NavigationContextService {
|
|
4620
|
+
constructor(router) {
|
|
4621
|
+
this.router = router;
|
|
4622
|
+
this.previousUrl = null;
|
|
4623
|
+
this.currentUrl = null;
|
|
4624
|
+
this.currentUrl = this.router.url;
|
|
4625
|
+
this.router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe((e) => {
|
|
4626
|
+
const nextUrl = e.urlAfterRedirects;
|
|
4627
|
+
const preserve = history.state?.__preserveBack == true;
|
|
4628
|
+
const currentBase = this.currentUrl ? this.getBaseRoute(this.currentUrl) : null;
|
|
4629
|
+
const nextBase = this.getBaseRoute(nextUrl);
|
|
4630
|
+
const nav = this.router.getCurrentNavigation();
|
|
4631
|
+
const isBack = nav?.trigger == 'popstate';
|
|
4632
|
+
// Redirect técnico - ignora
|
|
4633
|
+
if (preserve) {
|
|
4634
|
+
this.currentUrl = nextUrl;
|
|
4635
|
+
return;
|
|
4636
|
+
}
|
|
4637
|
+
// Navegação interna da mesma view (Ex: Item <-> View Principal)
|
|
4638
|
+
if (currentBase && currentBase == nextBase) {
|
|
4639
|
+
// ajustes no histórico baseando-se estritamente na hierarquia.
|
|
4640
|
+
const cleanNext = nextUrl.split('?')[0].replace(/\/$/, '');
|
|
4641
|
+
const cleanBase = nextBase.replace(/\/$/, '');
|
|
4642
|
+
if (cleanNext == cleanBase) {
|
|
4643
|
+
// voltou para a raiz da entidade
|
|
4644
|
+
this.previousUrl = this.getListRoute(nextBase);
|
|
4645
|
+
}
|
|
4646
|
+
else {
|
|
4647
|
+
// voltou de um filho → pai REAL
|
|
4648
|
+
this.previousUrl = this.getParentRoute(nextUrl);
|
|
4649
|
+
}
|
|
4650
|
+
this.currentUrl = nextUrl;
|
|
4651
|
+
return;
|
|
4652
|
+
}
|
|
4653
|
+
// Chegou numa view base VIA BACK (de outro módulo)
|
|
4654
|
+
if (isBack) {
|
|
4655
|
+
// Se voltou de fora (OS -> Obra), recalcula para garantir
|
|
4656
|
+
const cleanNext = nextUrl.split('?')[0].replace(/\/$/, '');
|
|
4657
|
+
const cleanBase = nextBase.replace(/\/$/, '');
|
|
4658
|
+
if (cleanNext === cleanBase) {
|
|
4659
|
+
this.previousUrl = this.getListRoute(nextBase);
|
|
4660
|
+
}
|
|
4661
|
+
else {
|
|
4662
|
+
this.previousUrl = nextBase;
|
|
4663
|
+
}
|
|
4664
|
+
this.currentUrl = nextUrl;
|
|
4665
|
+
return;
|
|
4666
|
+
}
|
|
4667
|
+
// Navegação real (Entrando em um módulo novo ou avançando)
|
|
4668
|
+
this.previousUrl = this.currentUrl;
|
|
4669
|
+
this.currentUrl = nextUrl;
|
|
4670
|
+
});
|
|
4671
|
+
}
|
|
4672
|
+
getBaseRoute(url) {
|
|
4673
|
+
//pega a rota base
|
|
4674
|
+
const parts = url.split('/').filter(Boolean);
|
|
4675
|
+
const base = [];
|
|
4676
|
+
for (const part of parts) {
|
|
4677
|
+
base.push(part);
|
|
4678
|
+
if (!isNaN(Number(part))) {
|
|
4679
|
+
break;
|
|
4680
|
+
}
|
|
4681
|
+
}
|
|
4682
|
+
return '/' + base.join('/');
|
|
4683
|
+
}
|
|
4684
|
+
getListRoute(baseRoute) {
|
|
4685
|
+
//verifica se a rota de retorno é a inicial
|
|
4686
|
+
const parts = baseRoute.split('/').filter(Boolean);
|
|
4687
|
+
return '/' + parts[0];
|
|
4688
|
+
}
|
|
4689
|
+
getParentRoute(url) {
|
|
4690
|
+
const clean = url.split('?')[0].replace(/\/$/, '');
|
|
4691
|
+
let parts = clean.split('/').filter(Boolean);
|
|
4692
|
+
// ---- REGRA FROM ----
|
|
4693
|
+
const idx = parts.indexOf('from');
|
|
4694
|
+
if (idx != -1) {
|
|
4695
|
+
// remove o "from" e o parâmetro após ele
|
|
4696
|
+
parts = parts.slice(0, idx);
|
|
4697
|
+
// se o último item for view → remove também
|
|
4698
|
+
if (parts[parts.length - 1] === 'view') {
|
|
4699
|
+
parts.pop();
|
|
4700
|
+
}
|
|
4701
|
+
return '/' + parts.join('/');
|
|
4702
|
+
}
|
|
4703
|
+
// ---- REGRA VIEW ----
|
|
4704
|
+
if (parts.length <= 1) {
|
|
4705
|
+
return '/' + parts.join('/');
|
|
4706
|
+
}
|
|
4707
|
+
if (!isNaN(Number(parts[parts.length - 1]))) {
|
|
4708
|
+
parts.pop();
|
|
4709
|
+
}
|
|
4710
|
+
if (parts[parts.length - 1] === 'view') {
|
|
4711
|
+
parts.pop();
|
|
4712
|
+
}
|
|
4713
|
+
return '/' + parts.join('/');
|
|
4714
|
+
}
|
|
4715
|
+
getBackRoute() {
|
|
4716
|
+
return this.previousUrl;
|
|
4717
|
+
}
|
|
4718
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NavigationContextService, deps: [{ token: i2$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4719
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NavigationContextService, providedIn: 'root' }); }
|
|
4720
|
+
}
|
|
4721
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NavigationContextService, decorators: [{
|
|
4722
|
+
type: Injectable,
|
|
4723
|
+
args: [{ providedIn: 'root' }]
|
|
4724
|
+
}], ctorParameters: () => [{ type: i2$2.Router }] });
|
|
4725
|
+
|
|
4613
4726
|
class HeaderViewComponent {
|
|
4614
|
-
constructor(navController, activatedRoute) {
|
|
4727
|
+
constructor(navController, activatedRoute, navContext) {
|
|
4615
4728
|
this.navController = navController;
|
|
4616
4729
|
this.activatedRoute = activatedRoute;
|
|
4730
|
+
this.navContext = navContext;
|
|
4617
4731
|
this.novo = false;
|
|
4618
4732
|
this.progress = null;
|
|
4619
4733
|
this.saveEmitter = new EventEmitter();
|
|
@@ -4632,17 +4746,7 @@ class HeaderViewComponent {
|
|
|
4632
4746
|
}
|
|
4633
4747
|
ngOnInit() { }
|
|
4634
4748
|
get DefaultBackRoute() {
|
|
4635
|
-
|
|
4636
|
-
const li = fullRoute[fullRoute.length - 1];
|
|
4637
|
-
var offset = 1;
|
|
4638
|
-
if (Number(li)) {
|
|
4639
|
-
offset++;
|
|
4640
|
-
}
|
|
4641
|
-
let route = [];
|
|
4642
|
-
for (let i = 0; i < fullRoute.length - offset; i++) {
|
|
4643
|
-
route.push(fullRoute[i]);
|
|
4644
|
-
}
|
|
4645
|
-
return route.join('/');
|
|
4749
|
+
return this.navContext.getBackRoute() ?? '/';
|
|
4646
4750
|
}
|
|
4647
4751
|
Back($event = null) {
|
|
4648
4752
|
this.IonBackButtonElement.onClick($event);
|
|
@@ -4655,13 +4759,13 @@ class HeaderViewComponent {
|
|
|
4655
4759
|
Save() {
|
|
4656
4760
|
this.saveEmitter.emit();
|
|
4657
4761
|
}
|
|
4658
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HeaderViewComponent, deps: [{ token: i1.NavController }, { token: i2$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4762
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HeaderViewComponent, deps: [{ token: i1.NavController }, { token: i2$2.ActivatedRoute }, { token: NavigationContextService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4659
4763
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: HeaderViewComponent, selector: "header-view", inputs: { novo: "novo", loading: "loading", progress: "progress", focusInFirstField: "focusInFirstField", noBack: "noBack", noNew: "noNew", useDefaultRouting: "useDefaultRouting", backRouterLink: "backRouterLink" }, outputs: { saveEmitter: "save" }, viewQueries: [{ propertyName: "IonBackButtonElement", first: true, predicate: IonBackButton, descendants: true }, { propertyName: "NewIonButtonElement", first: true, predicate: ["new"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRouterLink){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRouterLink ? backRouterLink : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i1$2.DecimalPipe, name: "number" }] }); }
|
|
4660
4764
|
}
|
|
4661
4765
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HeaderViewComponent, decorators: [{
|
|
4662
4766
|
type: Component,
|
|
4663
4767
|
args: [{ selector: 'header-view', template: "<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n @if(useDefaultRouting || backRouterLink){\r\n <ion-button class=\"m-0\" fill=\"clear\" size=\"small\" [routerLink]=\"backRouterLink ? backRouterLink : DefaultBackRoute\">\r\n <ion-icon class=\"text-[1.7rem]\" name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n <ion-text class=\"text-base\">Voltar</ion-text>\r\n </ion-button>\r\n }\r\n @else{\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"DefaultBackRoute\"></ion-back-button>\r\n }\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n @if(!noBack){\r\n <div class=\"h-full border-r-2 border-r-primary border-solid mask-y/50\"></div>\r\n }\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>", styles: ["#back{margin:0;margin-right:.5rem;width:2rem;border-radius:1rem;padding:0}#back::part(native){padding-left:.5rem;padding-right:.5rem}\n"] }]
|
|
4664
|
-
}], ctorParameters: () => [{ type: i1.NavController }, { type: i2$2.ActivatedRoute }], propDecorators: { novo: [{
|
|
4768
|
+
}], ctorParameters: () => [{ type: i1.NavController }, { type: i2$2.ActivatedRoute }, { type: NavigationContextService }], propDecorators: { novo: [{
|
|
4665
4769
|
type: Input
|
|
4666
4770
|
}], loading: [{
|
|
4667
4771
|
type: Input
|
|
@@ -4713,6 +4817,7 @@ class View {
|
|
|
4713
4817
|
this.activatedRoute = inject(ActivatedRoute);
|
|
4714
4818
|
this.elementRef = inject(ElementRef);
|
|
4715
4819
|
this.fb = inject(FormBuilder);
|
|
4820
|
+
this.navContext = inject(NavigationContextService);
|
|
4716
4821
|
}
|
|
4717
4822
|
async ngOnInit() {
|
|
4718
4823
|
if (this.lstTableFields.length == 0) {
|
|
@@ -4799,20 +4904,13 @@ class View {
|
|
|
4799
4904
|
this.SaveEmitter.emit(this.id);
|
|
4800
4905
|
}
|
|
4801
4906
|
get BackRoute() {
|
|
4802
|
-
|
|
4803
|
-
const li = fullRoute[fullRoute.length - 1];
|
|
4804
|
-
var offset = 1;
|
|
4805
|
-
if (Number(li)) {
|
|
4806
|
-
offset++;
|
|
4807
|
-
}
|
|
4808
|
-
let route = [];
|
|
4809
|
-
for (let i = 0; i < fullRoute.length - offset; i++) {
|
|
4810
|
-
route.push(fullRoute[i]);
|
|
4811
|
-
}
|
|
4812
|
-
return route.join('/');
|
|
4907
|
+
return this.navContext.getBackRoute() ?? '/';
|
|
4813
4908
|
}
|
|
4814
4909
|
GetCurrentRouting() { return this.activatedRoute; }
|
|
4815
|
-
NavigateToList() {
|
|
4910
|
+
NavigateToList() {
|
|
4911
|
+
const back = this.navContext.getBackRoute() ?? '/';
|
|
4912
|
+
this.navController.navigateBack(back);
|
|
4913
|
+
}
|
|
4816
4914
|
onKeyPress($event) {
|
|
4817
4915
|
if (!(this.elementRef.nativeElement.contains(document.activeElement) || document.activeElement == this.elementRef.nativeElement)) {
|
|
4818
4916
|
return;
|
|
@@ -12386,5 +12484,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12386
12484
|
* Generated bundle index. Do not edit.
|
|
12387
12485
|
*/
|
|
12388
12486
|
|
|
12389
|
-
export { AbstractList, AbstractView, ApiUrlProviderService, AuthGuard, AuthService, BindLabelFactory, BindValueFactory, BoolProperty, CarouselComponent, CarouselImageComponent, CarouselItemComponent, CarouselModule, Comparison, ComparisonOperator, ComparisonOperatorString, ComparisonValueType, CompileFilters, CompileLstTableField, ContentBlockComponent, ControlError, DateProperty, DateTimeProperty, DecimalProperty, DefaultDrawerEndComponent, DefaultListComponent, DefaultLoginComponent, DefaultModule, DefaultPage, DefaultPageConfiguration, DefaultPageImage, DefaultPaginationComponent, DefaultRoutingFactory, DefaultTableComponent, DefaultViewComponent, Download, DownloadButtonComponent, DragDropFileDirective, DragDropFileModule, DragDropOverlayComponent, DrawerComponent, DrawerGroupComponent, EnumProperty, Environment, EnvironmentInjectionToken, EnvironmentService, ErrorInterceptor, FilterComponent, Forbidden403Component, FormValidators, FormatCep, FormatCpfCnpj, FormatTelefoneCelular, GenericService, HeaderListComponent, HeaderViewComponent, HttpService, HttpServiceAtivo, ICarouselItem, INT_MAX, ImageComponent, ImplicitProperty, InfiniteScroll, InfiniteScrollConfiguration, InfoPopoverComponent, InputBoolComponent, InputBoolConfiguration, InputBoolType, InputCepComponent, InputCepConfiguration, InputColorComponent, InputCpfCnpjComponent, InputCpfCnpjConfiguration, InputCurrencyConfiguration, InputDateComponent, InputDateConfiguration, InputDecimalComponent, InputDecimalConfiguration, InputFileComponent, InputFileConfiguration, InputIconComponent, InputNumberConfiguration, InputPercentageConfiguration, InputProviderFactory, InputSelectComponent, InputSelectConfiguration, InputSelectDataLoader, InputStringComponent, InputStringConfiguration, InputStringType, InputTelefoneCelularConfiguration, InputTelefoneComponent, InputTextareaComponent, InputType, InputsDefaultConfigurations, InputsModule, IntProperty, List, LoadingComponent, LoginAdminComponent, LongProperty, MainContentComponent, Menu, NgVarDirective, RouteCacheService, RouteData, RouteProviderService, SIonLabelTemplateDirective, SIonOptionTemplateDirective, SIonPlaceholderTemplateDirective, SIonPopoverComponent, SIonPopoverModule, SapphireIonFrameworkModule, Search, SecurePipe, SelectInterfaces, SionCardComponent, StepComponent, StepperComponent, StepperModule, StorageService, StringProperty, TabComponent, TableField, TableFieldFormBuilder, TabsComponent, TabsModule, TelefoneCelular, TextTooltipComponent, ThFilterComponent, TimeProperty, Timeout, TokenInterceptor, TooltipComponent, UsuarioService, Utils, UtilsService, View, ViewFiltros, ViewRetorno, idPreloaderConfiguration, lstImage, lstImageTypes };
|
|
12487
|
+
export { AbstractList, AbstractView, ApiUrlProviderService, AuthGuard, AuthService, BindLabelFactory, BindValueFactory, BoolProperty, CarouselComponent, CarouselImageComponent, CarouselItemComponent, CarouselModule, Comparison, ComparisonOperator, ComparisonOperatorString, ComparisonValueType, CompileFilters, CompileLstTableField, ContentBlockComponent, ControlError, DateProperty, DateTimeProperty, DecimalProperty, DefaultDrawerEndComponent, DefaultListComponent, DefaultLoginComponent, DefaultModule, DefaultPage, DefaultPageConfiguration, DefaultPageImage, DefaultPaginationComponent, DefaultRoutingFactory, DefaultTableComponent, DefaultViewComponent, Download, DownloadButtonComponent, DragDropFileDirective, DragDropFileModule, DragDropOverlayComponent, DrawerComponent, DrawerGroupComponent, EnumProperty, Environment, EnvironmentInjectionToken, EnvironmentService, ErrorInterceptor, FilterComponent, Forbidden403Component, FormValidators, FormatCep, FormatCpfCnpj, FormatTelefoneCelular, GenericService, HeaderListComponent, HeaderViewComponent, HttpService, HttpServiceAtivo, ICarouselItem, INT_MAX, ImageComponent, ImplicitProperty, InfiniteScroll, InfiniteScrollConfiguration, InfoPopoverComponent, InputBoolComponent, InputBoolConfiguration, InputBoolType, InputCepComponent, InputCepConfiguration, InputColorComponent, InputCpfCnpjComponent, InputCpfCnpjConfiguration, InputCurrencyConfiguration, InputDateComponent, InputDateConfiguration, InputDecimalComponent, InputDecimalConfiguration, InputFileComponent, InputFileConfiguration, InputIconComponent, InputNumberConfiguration, InputPercentageConfiguration, InputProviderFactory, InputSelectComponent, InputSelectConfiguration, InputSelectDataLoader, InputStringComponent, InputStringConfiguration, InputStringType, InputTelefoneCelularConfiguration, InputTelefoneComponent, InputTextareaComponent, InputType, InputsDefaultConfigurations, InputsModule, IntProperty, List, LoadingComponent, LoginAdminComponent, LongProperty, MainContentComponent, Menu, NavigationContextService, NgVarDirective, RouteCacheService, RouteData, RouteProviderService, SIonLabelTemplateDirective, SIonOptionTemplateDirective, SIonPlaceholderTemplateDirective, SIonPopoverComponent, SIonPopoverModule, SapphireIonFrameworkModule, Search, SecurePipe, SelectInterfaces, SionCardComponent, StepComponent, StepperComponent, StepperModule, StorageService, StringProperty, TabComponent, TableField, TableFieldFormBuilder, TabsComponent, TabsModule, TelefoneCelular, TextTooltipComponent, ThFilterComponent, TimeProperty, Timeout, TokenInterceptor, TooltipComponent, UsuarioService, Utils, UtilsService, View, ViewFiltros, ViewRetorno, idPreloaderConfiguration, lstImage, lstImageTypes };
|
|
12390
12488
|
//# sourceMappingURL=sapphire-ion-framework.mjs.map
|