oip-common 0.0.12 → 0.0.14
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/fesm2022/oip-common.mjs +188 -181
- package/fesm2022/oip-common.mjs.map +1 -1
- package/index.d.ts +21 -9
- package/package.json +1 -1
package/fesm2022/oip-common.mjs
CHANGED
|
@@ -722,10 +722,10 @@ class LayoutService {
|
|
|
722
722
|
this.dateTimeFormat = computed(() => `${this.layoutConfig().dateFormat} ${this.layoutConfig().timeFormat}`, ...(ngDevMode ? [{ debugName: "dateTimeFormat" }] : []));
|
|
723
723
|
this.monthFormat = computed(() => {
|
|
724
724
|
const reDay = /d+/i;
|
|
725
|
-
const
|
|
725
|
+
const reDelimiter = /^[^\w]|[^\w]$|([^\w])\1+/;
|
|
726
726
|
const ngDateFormat = convertToPrimeNgDateFormat(this.layoutConfig().dateFormat);
|
|
727
727
|
const ngDate = ngDateFormat.replace(reDay, '');
|
|
728
|
-
const dateGroups = ngDate.match(
|
|
728
|
+
const dateGroups = ngDate.match(reDelimiter);
|
|
729
729
|
if (Array.isArray(dateGroups) && dateGroups.length > 1) {
|
|
730
730
|
return dateGroups[1] !== undefined
|
|
731
731
|
? ngDate.replace(dateGroups[0], '')
|
|
@@ -1431,6 +1431,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImpor
|
|
|
1431
1431
|
type: Input
|
|
1432
1432
|
}] } });
|
|
1433
1433
|
|
|
1434
|
+
class SecurityService {
|
|
1435
|
+
}
|
|
1434
1436
|
/**
|
|
1435
1437
|
* SecurityService extends OidcSecurityService to manage authentication,
|
|
1436
1438
|
* token handling, and user role access in an Angular application.
|
|
@@ -1438,7 +1440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImpor
|
|
|
1438
1440
|
* It provides helper methods for checking authentication, managing tokens,
|
|
1439
1441
|
* determining user roles, and performing logout and refresh operations.
|
|
1440
1442
|
*/
|
|
1441
|
-
class
|
|
1443
|
+
class KeycloakSecurityService extends OidcSecurityService {
|
|
1442
1444
|
/**
|
|
1443
1445
|
* Initializes service and subscribes to authentication events.
|
|
1444
1446
|
* When a 'NewAuthenticationResult' event is received, the `auth` method is called.
|
|
@@ -1464,6 +1466,9 @@ class SecurityService extends OidcSecurityService {
|
|
|
1464
1466
|
this.auth();
|
|
1465
1467
|
});
|
|
1466
1468
|
}
|
|
1469
|
+
getCurrentUser() {
|
|
1470
|
+
return this.userData;
|
|
1471
|
+
}
|
|
1467
1472
|
/**
|
|
1468
1473
|
* Returns the ID token for the sign-in.
|
|
1469
1474
|
* @returns A string with the id token.
|
|
@@ -1476,7 +1481,7 @@ class SecurityService extends OidcSecurityService {
|
|
|
1476
1481
|
*
|
|
1477
1482
|
* @returns {boolean} True if the user is an admin, false otherwise.
|
|
1478
1483
|
*/
|
|
1479
|
-
|
|
1484
|
+
isAdmin() {
|
|
1480
1485
|
return this.payload.getValue()?.realm_access?.roles?.includes('admin');
|
|
1481
1486
|
}
|
|
1482
1487
|
/**
|
|
@@ -1518,10 +1523,10 @@ class SecurityService extends OidcSecurityService {
|
|
|
1518
1523
|
return payload.exp < Math.floor(Date.now() / 1000);
|
|
1519
1524
|
}));
|
|
1520
1525
|
}
|
|
1521
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type:
|
|
1522
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type:
|
|
1526
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: KeycloakSecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1527
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: KeycloakSecurityService }); }
|
|
1523
1528
|
}
|
|
1524
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type:
|
|
1529
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: KeycloakSecurityService, decorators: [{
|
|
1525
1530
|
type: Injectable
|
|
1526
1531
|
}], ctorParameters: () => [] });
|
|
1527
1532
|
|
|
@@ -1548,11 +1553,11 @@ class UserService {
|
|
|
1548
1553
|
* Typically used for avatar display when a photo is unavailable.
|
|
1549
1554
|
*/
|
|
1550
1555
|
get shortLabel() {
|
|
1551
|
-
const data = this.securityService.
|
|
1556
|
+
const data = this.securityService.getCurrentUser();
|
|
1552
1557
|
return (data) ? data.given_name[0] + data.family_name[0] : "";
|
|
1553
1558
|
}
|
|
1554
1559
|
get userName() {
|
|
1555
|
-
const data = this.securityService.
|
|
1560
|
+
const data = this.securityService.getCurrentUser();
|
|
1556
1561
|
return `${data.given_name} ${data.family_name}`;
|
|
1557
1562
|
}
|
|
1558
1563
|
/**
|
|
@@ -1560,7 +1565,7 @@ class UserService {
|
|
|
1560
1565
|
* and updates the `photo` and `photoLoaded` properties accordingly.
|
|
1561
1566
|
*/
|
|
1562
1567
|
getUserPhoto() {
|
|
1563
|
-
const url = `${this.baseDataService.baseUrl}api/user-profile/get-user-photo?email=${this.securityService.
|
|
1568
|
+
const url = `${this.baseDataService.baseUrl}api/user-profile/get-user-photo?email=${this.securityService.getCurrentUser().email}`;
|
|
1564
1569
|
this.baseDataService.getBlob(url).then((data) => {
|
|
1565
1570
|
this.createImageFromBlob(data);
|
|
1566
1571
|
this.photoLoaded = true;
|
|
@@ -1608,101 +1613,102 @@ class AppTopbar {
|
|
|
1608
1613
|
}
|
|
1609
1614
|
}
|
|
1610
1615
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppTopbar, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1611
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: AppTopbar, isStandalone: true, selector: "app-topbar", ngImport: i0, template: `
|
|
1612
|
-
<div class="layout-topbar
|
|
1613
|
-
<
|
|
1614
|
-
<
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
<logo
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1616
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: AppTopbar, isStandalone: true, selector: "app-topbar", ngImport: i0, template: `
|
|
1617
|
+
<div class="layout-topbar">
|
|
1618
|
+
<div class="layout-topbar-logo-container">
|
|
1619
|
+
<button class="layout-menu-button layout-topbar-action" (click)="layoutService.onMenuToggle()">
|
|
1620
|
+
<i class="pi pi-bars"></i>
|
|
1621
|
+
</button>
|
|
1622
|
+
<a class="layout-topbar-logo" id="oip-app-topbar-logo-link" routerLink="">
|
|
1623
|
+
<logo [height]="36" [width]="36"></logo>
|
|
1624
|
+
<span>OIP</span>
|
|
1625
|
+
</a>
|
|
1626
|
+
</div>
|
|
1621
1627
|
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1628
|
+
@if (securityService.isAdmin() && topBarService.topBarItems.length > 0) {
|
|
1629
|
+
<p-tabs class="layout-topbar-tabs ml-2" [(value)]="topBarService.activeId">
|
|
1630
|
+
<p-tablist>
|
|
1631
|
+
@for (tab of topBarService.availableTopBarItems; track tab.id) {
|
|
1632
|
+
<p-tab id="oip-app-topbar-tab-{{ tab.id }}" [value]="tab.id">
|
|
1633
|
+
<i class="pi {{ tab.icon }}"></i>
|
|
1634
|
+
<span class="ml-2">{{ tab.caption }}</span>
|
|
1635
|
+
</p-tab>
|
|
1636
|
+
}
|
|
1637
|
+
</p-tablist>
|
|
1638
|
+
</p-tabs>
|
|
1639
|
+
}
|
|
1640
|
+
<div class="layout-topbar-actions">
|
|
1641
|
+
<div class="layout-config-menu">
|
|
1642
|
+
<p-button
|
|
1643
|
+
class="layout-topbar-action"
|
|
1644
|
+
id="oip-app-topbar-theme-button"
|
|
1645
|
+
severity="secondary"
|
|
1646
|
+
type="button"
|
|
1647
|
+
[rounded]="true"
|
|
1648
|
+
[text]="true"
|
|
1649
|
+
(click)="toggleDarkMode()">
|
|
1650
|
+
<i
|
|
1651
|
+
class="pi"
|
|
1652
|
+
[ngClass]="{
|
|
1647
1653
|
'pi-moon': layoutService.isDarkTheme(),
|
|
1648
1654
|
'pi-sun': !layoutService.isDarkTheme()
|
|
1649
1655
|
}"></i>
|
|
1650
|
-
</p-button>
|
|
1651
|
-
<div class="relative">
|
|
1652
|
-
<p-button
|
|
1653
|
-
class="layout-topbar-action layout-topbar-action-highlight"
|
|
1654
|
-
enterActiveClass="animate-scalein"
|
|
1655
|
-
enterFromClass="hidden"
|
|
1656
|
-
id="oip-app-topbar-palette-button"
|
|
1657
|
-
leaveActiveClass="animate-fadeout"
|
|
1658
|
-
leaveToClass="hidden"
|
|
1659
|
-
pStyleClass="@next"
|
|
1660
|
-
[hideOnOutsideClick]="true"
|
|
1661
|
-
[rounded]="true">
|
|
1662
|
-
<i class="pi pi-palette"></i>
|
|
1663
1656
|
</p-button>
|
|
1664
|
-
<
|
|
1657
|
+
<div class="relative">
|
|
1658
|
+
<p-button
|
|
1659
|
+
class="layout-topbar-action layout-topbar-action-highlight"
|
|
1660
|
+
enterActiveClass="animate-scalein"
|
|
1661
|
+
enterFromClass="hidden"
|
|
1662
|
+
id="oip-app-topbar-palette-button"
|
|
1663
|
+
leaveActiveClass="animate-fadeout"
|
|
1664
|
+
leaveToClass="hidden"
|
|
1665
|
+
pStyleClass="@next"
|
|
1666
|
+
[hideOnOutsideClick]="true"
|
|
1667
|
+
[rounded]="true">
|
|
1668
|
+
<i class="pi pi-palette"></i>
|
|
1669
|
+
</p-button>
|
|
1670
|
+
<app-configurator/>
|
|
1671
|
+
</div>
|
|
1665
1672
|
</div>
|
|
1666
|
-
</div>
|
|
1667
1673
|
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1674
|
+
<button
|
|
1675
|
+
class="layout-topbar-menu-button layout-topbar-action"
|
|
1676
|
+
enterActiveClass="animate-scalein"
|
|
1677
|
+
enterFromClass="hidden"
|
|
1678
|
+
id="oip-app-topbar-menu-expand-button"
|
|
1679
|
+
leaveActiveClass="animate-fadeout"
|
|
1680
|
+
leaveToClass="hidden"
|
|
1681
|
+
pStyleClass="@next"
|
|
1682
|
+
[hideOnOutsideClick]="true">
|
|
1683
|
+
<i class="pi pi-ellipsis-v"></i>
|
|
1684
|
+
</button>
|
|
1679
1685
|
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1686
|
+
<div class="layout-topbar-menu hidden lg:block">
|
|
1687
|
+
<div class="layout-topbar-menu-content">
|
|
1688
|
+
<button
|
|
1689
|
+
class="layout-topbar-action"
|
|
1690
|
+
id="oip-app-topbar-logout-button"
|
|
1691
|
+
type="button"
|
|
1692
|
+
(click)="securityService.logout()"
|
|
1693
|
+
(keydown)="logoutKeyDown($event)">
|
|
1694
|
+
<i class="pi pi-sign-out"></i>
|
|
1695
|
+
<span>Logout</span>
|
|
1696
|
+
</button>
|
|
1697
|
+
<button class="layout-topbar-action" routerLink="config">
|
|
1698
|
+
<p-avatar
|
|
1699
|
+
class="p-link flex align-items-center"
|
|
1700
|
+
id="oip-app-topbar-user-avatar"
|
|
1701
|
+
shape="circle"
|
|
1702
|
+
size="normal"
|
|
1703
|
+
[image]="userService.photoLoaded ? userService.photo : null"
|
|
1698
1704
|
>{{ !userService.photoLoaded ? userService.shortLabel : null }}
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1705
|
+
</p-avatar>
|
|
1706
|
+
<span class="ml-2">Profile</span>
|
|
1707
|
+
</button>
|
|
1708
|
+
</div>
|
|
1702
1709
|
</div>
|
|
1703
1710
|
</div>
|
|
1704
|
-
</div
|
|
1705
|
-
</div>`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i4.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }, { kind: "component", type: LogoComponent, selector: "logo", inputs: ["width", "height"] }, { kind: "component", type: Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: TabList, selector: "p-tablist" }, { kind: "component", type: Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i5$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }] }); }
|
|
1711
|
+
</div>`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i4.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }, { kind: "component", type: LogoComponent, selector: "logo", inputs: ["width", "height"] }, { kind: "component", type: Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: TabList, selector: "p-tablist" }, { kind: "component", type: Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i5$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }] }); }
|
|
1706
1712
|
}
|
|
1707
1713
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppTopbar, decorators: [{
|
|
1708
1714
|
type: Component,
|
|
@@ -1717,101 +1723,102 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImpor
|
|
|
1717
1723
|
Tab,
|
|
1718
1724
|
AvatarModule,
|
|
1719
1725
|
ButtonModule
|
|
1720
|
-
], template: `
|
|
1721
|
-
<div class="layout-topbar
|
|
1722
|
-
<
|
|
1723
|
-
<
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
<logo
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1726
|
+
], template: `
|
|
1727
|
+
<div class="layout-topbar">
|
|
1728
|
+
<div class="layout-topbar-logo-container">
|
|
1729
|
+
<button class="layout-menu-button layout-topbar-action" (click)="layoutService.onMenuToggle()">
|
|
1730
|
+
<i class="pi pi-bars"></i>
|
|
1731
|
+
</button>
|
|
1732
|
+
<a class="layout-topbar-logo" id="oip-app-topbar-logo-link" routerLink="">
|
|
1733
|
+
<logo [height]="36" [width]="36"></logo>
|
|
1734
|
+
<span>OIP</span>
|
|
1735
|
+
</a>
|
|
1736
|
+
</div>
|
|
1730
1737
|
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1738
|
+
@if (securityService.isAdmin() && topBarService.topBarItems.length > 0) {
|
|
1739
|
+
<p-tabs class="layout-topbar-tabs ml-2" [(value)]="topBarService.activeId">
|
|
1740
|
+
<p-tablist>
|
|
1741
|
+
@for (tab of topBarService.availableTopBarItems; track tab.id) {
|
|
1742
|
+
<p-tab id="oip-app-topbar-tab-{{ tab.id }}" [value]="tab.id">
|
|
1743
|
+
<i class="pi {{ tab.icon }}"></i>
|
|
1744
|
+
<span class="ml-2">{{ tab.caption }}</span>
|
|
1745
|
+
</p-tab>
|
|
1746
|
+
}
|
|
1747
|
+
</p-tablist>
|
|
1748
|
+
</p-tabs>
|
|
1749
|
+
}
|
|
1750
|
+
<div class="layout-topbar-actions">
|
|
1751
|
+
<div class="layout-config-menu">
|
|
1752
|
+
<p-button
|
|
1753
|
+
class="layout-topbar-action"
|
|
1754
|
+
id="oip-app-topbar-theme-button"
|
|
1755
|
+
severity="secondary"
|
|
1756
|
+
type="button"
|
|
1757
|
+
[rounded]="true"
|
|
1758
|
+
[text]="true"
|
|
1759
|
+
(click)="toggleDarkMode()">
|
|
1760
|
+
<i
|
|
1761
|
+
class="pi"
|
|
1762
|
+
[ngClass]="{
|
|
1756
1763
|
'pi-moon': layoutService.isDarkTheme(),
|
|
1757
1764
|
'pi-sun': !layoutService.isDarkTheme()
|
|
1758
1765
|
}"></i>
|
|
1759
|
-
</p-button>
|
|
1760
|
-
<div class="relative">
|
|
1761
|
-
<p-button
|
|
1762
|
-
class="layout-topbar-action layout-topbar-action-highlight"
|
|
1763
|
-
enterActiveClass="animate-scalein"
|
|
1764
|
-
enterFromClass="hidden"
|
|
1765
|
-
id="oip-app-topbar-palette-button"
|
|
1766
|
-
leaveActiveClass="animate-fadeout"
|
|
1767
|
-
leaveToClass="hidden"
|
|
1768
|
-
pStyleClass="@next"
|
|
1769
|
-
[hideOnOutsideClick]="true"
|
|
1770
|
-
[rounded]="true">
|
|
1771
|
-
<i class="pi pi-palette"></i>
|
|
1772
1766
|
</p-button>
|
|
1773
|
-
<
|
|
1767
|
+
<div class="relative">
|
|
1768
|
+
<p-button
|
|
1769
|
+
class="layout-topbar-action layout-topbar-action-highlight"
|
|
1770
|
+
enterActiveClass="animate-scalein"
|
|
1771
|
+
enterFromClass="hidden"
|
|
1772
|
+
id="oip-app-topbar-palette-button"
|
|
1773
|
+
leaveActiveClass="animate-fadeout"
|
|
1774
|
+
leaveToClass="hidden"
|
|
1775
|
+
pStyleClass="@next"
|
|
1776
|
+
[hideOnOutsideClick]="true"
|
|
1777
|
+
[rounded]="true">
|
|
1778
|
+
<i class="pi pi-palette"></i>
|
|
1779
|
+
</p-button>
|
|
1780
|
+
<app-configurator/>
|
|
1781
|
+
</div>
|
|
1774
1782
|
</div>
|
|
1775
|
-
</div>
|
|
1776
1783
|
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1784
|
+
<button
|
|
1785
|
+
class="layout-topbar-menu-button layout-topbar-action"
|
|
1786
|
+
enterActiveClass="animate-scalein"
|
|
1787
|
+
enterFromClass="hidden"
|
|
1788
|
+
id="oip-app-topbar-menu-expand-button"
|
|
1789
|
+
leaveActiveClass="animate-fadeout"
|
|
1790
|
+
leaveToClass="hidden"
|
|
1791
|
+
pStyleClass="@next"
|
|
1792
|
+
[hideOnOutsideClick]="true">
|
|
1793
|
+
<i class="pi pi-ellipsis-v"></i>
|
|
1794
|
+
</button>
|
|
1788
1795
|
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1796
|
+
<div class="layout-topbar-menu hidden lg:block">
|
|
1797
|
+
<div class="layout-topbar-menu-content">
|
|
1798
|
+
<button
|
|
1799
|
+
class="layout-topbar-action"
|
|
1800
|
+
id="oip-app-topbar-logout-button"
|
|
1801
|
+
type="button"
|
|
1802
|
+
(click)="securityService.logout()"
|
|
1803
|
+
(keydown)="logoutKeyDown($event)">
|
|
1804
|
+
<i class="pi pi-sign-out"></i>
|
|
1805
|
+
<span>Logout</span>
|
|
1806
|
+
</button>
|
|
1807
|
+
<button class="layout-topbar-action" routerLink="config">
|
|
1808
|
+
<p-avatar
|
|
1809
|
+
class="p-link flex align-items-center"
|
|
1810
|
+
id="oip-app-topbar-user-avatar"
|
|
1811
|
+
shape="circle"
|
|
1812
|
+
size="normal"
|
|
1813
|
+
[image]="userService.photoLoaded ? userService.photo : null"
|
|
1807
1814
|
>{{ !userService.photoLoaded ? userService.shortLabel : null }}
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1815
|
+
</p-avatar>
|
|
1816
|
+
<span class="ml-2">Profile</span>
|
|
1817
|
+
</button>
|
|
1818
|
+
</div>
|
|
1811
1819
|
</div>
|
|
1812
1820
|
</div>
|
|
1813
|
-
</div
|
|
1814
|
-
</div>` }]
|
|
1821
|
+
</div>` }]
|
|
1815
1822
|
}], ctorParameters: () => [{ type: LayoutService }] });
|
|
1816
1823
|
|
|
1817
1824
|
class FooterComponent {
|
|
@@ -3566,7 +3573,7 @@ class ConfigComponent {
|
|
|
3566
3573
|
</div>
|
|
3567
3574
|
</div>
|
|
3568
3575
|
</div>
|
|
3569
|
-
@if (securityService.isAdmin) {
|
|
3576
|
+
@if (securityService.isAdmin()) {
|
|
3570
3577
|
<div class="md:w-1/2">
|
|
3571
3578
|
<div class="card flex flex-col gap-4">
|
|
3572
3579
|
<div class="font-semibold text-xl">{{ l10n.menu }}</div>
|
|
@@ -3629,7 +3636,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImpor
|
|
|
3629
3636
|
</div>
|
|
3630
3637
|
</div>
|
|
3631
3638
|
</div>
|
|
3632
|
-
@if (securityService.isAdmin) {
|
|
3639
|
+
@if (securityService.isAdmin()) {
|
|
3633
3640
|
<div class="md:w-1/2">
|
|
3634
3641
|
<div class="card flex flex-col gap-4">
|
|
3635
3642
|
<div class="font-semibold text-xl">{{ l10n.menu }}</div>
|
|
@@ -4253,5 +4260,5 @@ const httpLoaderAuthFactory = (httpClient) => {
|
|
|
4253
4260
|
* Generated bundle index. Do not edit.
|
|
4254
4261
|
*/
|
|
4255
4262
|
|
|
4256
|
-
export { AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AuthGuardService, BaseDataService, BaseModuleComponent, ConfigComponent, DbMigrationComponent, ErrorComponent, FooterComponent, LayoutService, LogoComponent, MenuComponent, MenuService, MsgService, NotfoundComponent, ProfileComponent, SecurePipe, SecurityComponent, SecurityDataService, SecurityService, SecurityStorageService, SidebarComponent, TopBarService, UnauthorizedComponent, UserService, httpLoaderAuthFactory, langIntercept };
|
|
4263
|
+
export { AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AuthGuardService, BaseDataService, BaseModuleComponent, ConfigComponent, DbMigrationComponent, ErrorComponent, FooterComponent, KeycloakSecurityService, LayoutService, LogoComponent, MenuComponent, MenuService, MsgService, NotfoundComponent, ProfileComponent, SecurePipe, SecurityComponent, SecurityDataService, SecurityService, SecurityStorageService, SidebarComponent, TopBarService, UnauthorizedComponent, UserService, httpLoaderAuthFactory, langIntercept };
|
|
4257
4264
|
//# sourceMappingURL=oip-common.mjs.map
|