@rxap/layout 12.2.2 → 13.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/_theming.scss +1 -1
  2. package/esm2020/index.mjs +59 -0
  3. package/{esm2015/lib/footer/footer.component.js → esm2020/lib/footer/footer.component.mjs} +2 -7
  4. package/esm2020/lib/footer/footer.component.module.mjs +31 -0
  5. package/esm2020/lib/footer.directive.mjs +52 -0
  6. package/esm2020/lib/header/apps-button/apps-button.component.mjs +106 -0
  7. package/esm2020/lib/header/apps-button/apps-button.component.module.mjs +47 -0
  8. package/esm2020/lib/header/header.component.mjs +130 -0
  9. package/esm2020/lib/header/header.component.module.mjs +71 -0
  10. package/esm2020/lib/header/language-selector/language-selector.component.mjs +111 -0
  11. package/esm2020/lib/header/language-selector/language-selector.component.module.mjs +31 -0
  12. package/esm2020/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +33 -0
  13. package/esm2020/lib/header/navigation-progress-bar/navigation-progress-bar.component.module.mjs +27 -0
  14. package/esm2020/lib/header/reset-button/reset-button.component.mjs +27 -0
  15. package/esm2020/lib/header/reset-button/reset-button.component.module.mjs +27 -0
  16. package/esm2020/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +44 -0
  17. package/esm2020/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.module.mjs +31 -0
  18. package/esm2020/lib/header/sign-out/sign-out.component.mjs +31 -0
  19. package/esm2020/lib/header/sign-out/sign-out.component.module.mjs +31 -0
  20. package/esm2020/lib/header/user-profile-icon/user-profile-icon.component.mjs +111 -0
  21. package/esm2020/lib/header/user-profile-icon/user-profile-icon.component.module.mjs +39 -0
  22. package/esm2020/lib/layout/layout.component.mjs +78 -0
  23. package/esm2020/lib/layout/layout.component.module.mjs +71 -0
  24. package/esm2020/lib/layout/layout.component.service.mjs +43 -0
  25. package/esm2020/lib/navigation/navigation-item/navigation-item.component.mjs +286 -0
  26. package/esm2020/lib/navigation/navigation-item.mjs +10 -0
  27. package/esm2020/lib/navigation/navigation.component.mjs +130 -0
  28. package/esm2020/lib/navigation/navigation.component.module.mjs +73 -0
  29. package/esm2020/lib/navigation/navigation.service.mjs +143 -0
  30. package/esm2020/lib/navigation/replace-router-paths.pipe.mjs +21 -0
  31. package/esm2020/lib/navigation/replace-router-paths.service.mjs +15 -0
  32. package/esm2020/lib/sidenav/sidenav-footer.directive.mjs +19 -0
  33. package/esm2020/lib/sidenav/sidenav-header.directive.mjs +19 -0
  34. package/esm2020/lib/sidenav/sidenav.component.mjs +120 -0
  35. package/esm2020/lib/sidenav/sidenav.component.module.mjs +45 -0
  36. package/esm2020/lib/sidenav/sidenav.component.service.mjs +22 -0
  37. package/esm2020/lib/sidenav/version/version.component.mjs +62 -0
  38. package/esm2020/lib/sidenav/version/version.component.module.mjs +27 -0
  39. package/esm2020/lib/sidenav-content/sidenav-content.component.mjs +45 -0
  40. package/esm2020/lib/sidenav-content/sidenav-content.component.module.mjs +27 -0
  41. package/esm2020/lib/sidenav-content/sidenav-content.component.service.mjs +36 -0
  42. package/esm2020/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +50 -0
  43. package/esm2020/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.module.mjs +31 -0
  44. package/esm2020/lib/tokens.mjs +8 -0
  45. package/esm2020/lib/types.mjs +2 -0
  46. package/esm2020/lib/window-container-sidenav/window-container-sidenav.component.mjs +73 -0
  47. package/esm2020/lib/window-container-sidenav/window-container-sidenav.component.module.mjs +31 -0
  48. package/esm2020/rxap-layout.mjs +5 -0
  49. package/fesm2015/rxap-layout.mjs +2559 -0
  50. package/fesm2015/rxap-layout.mjs.map +1 -0
  51. package/{fesm2015/rxap-layout.js → fesm2020/rxap-layout.mjs} +212 -355
  52. package/fesm2020/rxap-layout.mjs.map +1 -0
  53. package/package.json +45 -31
  54. package/src/schematics/ng-add/index.js +1 -1
  55. package/src/schematics/ng-add/index.js.map +1 -1
  56. package/bundles/rxap-layout.umd.js +0 -3211
  57. package/bundles/rxap-layout.umd.js.map +0 -1
  58. package/esm2015/index.js +0 -59
  59. package/esm2015/index.js.map +0 -1
  60. package/esm2015/lib/footer/footer.component.js.map +0 -1
  61. package/esm2015/lib/footer/footer.component.module.js +0 -31
  62. package/esm2015/lib/footer/footer.component.module.js.map +0 -1
  63. package/esm2015/lib/footer.directive.js +0 -52
  64. package/esm2015/lib/footer.directive.js.map +0 -1
  65. package/esm2015/lib/header/apps-button/apps-button.component.js +0 -119
  66. package/esm2015/lib/header/apps-button/apps-button.component.js.map +0 -1
  67. package/esm2015/lib/header/apps-button/apps-button.component.module.js +0 -47
  68. package/esm2015/lib/header/apps-button/apps-button.component.module.js.map +0 -1
  69. package/esm2015/lib/header/header.component.js +0 -144
  70. package/esm2015/lib/header/header.component.js.map +0 -1
  71. package/esm2015/lib/header/header.component.module.js +0 -71
  72. package/esm2015/lib/header/header.component.module.js.map +0 -1
  73. package/esm2015/lib/header/language-selector/language-selector.component.js +0 -119
  74. package/esm2015/lib/header/language-selector/language-selector.component.js.map +0 -1
  75. package/esm2015/lib/header/language-selector/language-selector.component.module.js +0 -31
  76. package/esm2015/lib/header/language-selector/language-selector.component.module.js.map +0 -1
  77. package/esm2015/lib/header/navigation-progress-bar/navigation-progress-bar.component.js +0 -39
  78. package/esm2015/lib/header/navigation-progress-bar/navigation-progress-bar.component.js.map +0 -1
  79. package/esm2015/lib/header/navigation-progress-bar/navigation-progress-bar.component.module.js +0 -27
  80. package/esm2015/lib/header/navigation-progress-bar/navigation-progress-bar.component.module.js.map +0 -1
  81. package/esm2015/lib/header/reset-button/reset-button.component.js +0 -34
  82. package/esm2015/lib/header/reset-button/reset-button.component.js.map +0 -1
  83. package/esm2015/lib/header/reset-button/reset-button.component.module.js +0 -27
  84. package/esm2015/lib/header/reset-button/reset-button.component.module.js.map +0 -1
  85. package/esm2015/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.js +0 -50
  86. package/esm2015/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.js.map +0 -1
  87. package/esm2015/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.module.js +0 -31
  88. package/esm2015/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.module.js.map +0 -1
  89. package/esm2015/lib/header/sign-out/sign-out.component.js +0 -38
  90. package/esm2015/lib/header/sign-out/sign-out.component.js.map +0 -1
  91. package/esm2015/lib/header/sign-out/sign-out.component.module.js +0 -31
  92. package/esm2015/lib/header/sign-out/sign-out.component.module.js.map +0 -1
  93. package/esm2015/lib/header/user-profile-icon/user-profile-icon.component.js +0 -126
  94. package/esm2015/lib/header/user-profile-icon/user-profile-icon.component.js.map +0 -1
  95. package/esm2015/lib/header/user-profile-icon/user-profile-icon.component.module.js +0 -39
  96. package/esm2015/lib/header/user-profile-icon/user-profile-icon.component.module.js.map +0 -1
  97. package/esm2015/lib/layout/layout.component.js +0 -89
  98. package/esm2015/lib/layout/layout.component.js.map +0 -1
  99. package/esm2015/lib/layout/layout.component.module.js +0 -71
  100. package/esm2015/lib/layout/layout.component.module.js.map +0 -1
  101. package/esm2015/lib/layout/layout.component.service.js +0 -43
  102. package/esm2015/lib/layout/layout.component.service.js.map +0 -1
  103. package/esm2015/lib/navigation/navigation-item/navigation-item.component.js +0 -299
  104. package/esm2015/lib/navigation/navigation-item/navigation-item.component.js.map +0 -1
  105. package/esm2015/lib/navigation/navigation-item.js +0 -10
  106. package/esm2015/lib/navigation/navigation-item.js.map +0 -1
  107. package/esm2015/lib/navigation/navigation.component.js +0 -138
  108. package/esm2015/lib/navigation/navigation.component.js.map +0 -1
  109. package/esm2015/lib/navigation/navigation.component.module.js +0 -73
  110. package/esm2015/lib/navigation/navigation.component.module.js.map +0 -1
  111. package/esm2015/lib/navigation/navigation.service.js +0 -139
  112. package/esm2015/lib/navigation/navigation.service.js.map +0 -1
  113. package/esm2015/lib/navigation/replace-router-paths.pipe.js +0 -21
  114. package/esm2015/lib/navigation/replace-router-paths.pipe.js.map +0 -1
  115. package/esm2015/lib/navigation/replace-router-paths.service.js +0 -15
  116. package/esm2015/lib/navigation/replace-router-paths.service.js.map +0 -1
  117. package/esm2015/lib/sidenav/sidenav-footer.directive.js +0 -19
  118. package/esm2015/lib/sidenav/sidenav-footer.directive.js.map +0 -1
  119. package/esm2015/lib/sidenav/sidenav-header.directive.js +0 -19
  120. package/esm2015/lib/sidenav/sidenav-header.directive.js.map +0 -1
  121. package/esm2015/lib/sidenav/sidenav.component.js +0 -127
  122. package/esm2015/lib/sidenav/sidenav.component.js.map +0 -1
  123. package/esm2015/lib/sidenav/sidenav.component.module.js +0 -45
  124. package/esm2015/lib/sidenav/sidenav.component.module.js.map +0 -1
  125. package/esm2015/lib/sidenav/sidenav.component.service.js +0 -22
  126. package/esm2015/lib/sidenav/sidenav.component.service.js.map +0 -1
  127. package/esm2015/lib/sidenav/version/version.component.js +0 -70
  128. package/esm2015/lib/sidenav/version/version.component.js.map +0 -1
  129. package/esm2015/lib/sidenav/version/version.component.module.js +0 -27
  130. package/esm2015/lib/sidenav/version/version.component.module.js.map +0 -1
  131. package/esm2015/lib/sidenav-content/sidenav-content.component.js +0 -51
  132. package/esm2015/lib/sidenav-content/sidenav-content.component.js.map +0 -1
  133. package/esm2015/lib/sidenav-content/sidenav-content.component.module.js +0 -27
  134. package/esm2015/lib/sidenav-content/sidenav-content.component.module.js.map +0 -1
  135. package/esm2015/lib/sidenav-content/sidenav-content.component.service.js +0 -36
  136. package/esm2015/lib/sidenav-content/sidenav-content.component.service.js.map +0 -1
  137. package/esm2015/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.js +0 -58
  138. package/esm2015/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.js.map +0 -1
  139. package/esm2015/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.module.js +0 -31
  140. package/esm2015/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.module.js.map +0 -1
  141. package/esm2015/lib/tokens.js +0 -8
  142. package/esm2015/lib/tokens.js.map +0 -1
  143. package/esm2015/lib/types.js +0 -2
  144. package/esm2015/lib/types.js.map +0 -1
  145. package/esm2015/lib/window-container-sidenav/window-container-sidenav.component.js +0 -78
  146. package/esm2015/lib/window-container-sidenav/window-container-sidenav.component.js.map +0 -1
  147. package/esm2015/lib/window-container-sidenav/window-container-sidenav.component.module.js +0 -31
  148. package/esm2015/lib/window-container-sidenav/window-container-sidenav.component.module.js.map +0 -1
  149. package/esm2015/rxap-layout.js +0 -5
  150. package/esm2015/rxap-layout.js.map +0 -1
  151. package/fesm2015/rxap-layout.js.map +0 -1
@@ -1,119 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, Inject, Optional, } from '@angular/core';
2
- import { RXAP_LAYOUT_APPS_GRID } from '../../tokens';
3
- import { ConfigService } from '@rxap/config';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/material/button";
7
- import * as i3 from "@angular/cdk/overlay";
8
- import * as i4 from "@angular/material/icon";
9
- import * as i5 from "@angular/flex-layout/extended";
10
- import * as i6 from "@angular/flex-layout/flex";
11
- import * as i7 from "@rxap/config";
12
- function AppsButtonComponent_ng_template_0_ng_template_4_li_2_a_1_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "a", 9);
14
- i0.ɵɵelementStart(1, "span", 10);
15
- i0.ɵɵelement(2, "img", 11);
16
- i0.ɵɵelementStart(3, "span");
17
- i0.ɵɵtext(4);
18
- i0.ɵɵelementEnd();
19
- i0.ɵɵelementEnd();
20
- i0.ɵɵelementEnd();
21
- } if (rf & 2) {
22
- const item_r4 = i0.ɵɵnextContext().$implicit;
23
- i0.ɵɵproperty("href", item_r4.href, i0.ɵɵsanitizeUrl);
24
- i0.ɵɵadvance(2);
25
- i0.ɵɵproperty("src", item_r4.image, i0.ɵɵsanitizeUrl);
26
- i0.ɵɵadvance(2);
27
- i0.ɵɵtextInterpolate(item_r4.label);
28
- } }
29
- const _c0 = function (a0) { return { empty: a0 }; };
30
- function AppsButtonComponent_ng_template_0_ng_template_4_li_2_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelementStart(0, "li", 7);
32
- i0.ɵɵtemplate(1, AppsButtonComponent_ng_template_0_ng_template_4_li_2_a_1_Template, 5, 3, "a", 8);
33
- i0.ɵɵelementEnd();
34
- } if (rf & 2) {
35
- const item_r4 = ctx.$implicit;
36
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c0, item_r4.empty));
37
- i0.ɵɵadvance(1);
38
- i0.ɵɵproperty("ngIf", !item_r4.empty);
39
- } }
40
- const _c1 = function (a0) { return { columns: a0 }; };
41
- function AppsButtonComponent_ng_template_0_ng_template_4_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵelementStart(0, "div", 4);
43
- i0.ɵɵelementStart(1, "ul", 5);
44
- i0.ɵɵtemplate(2, AppsButtonComponent_ng_template_0_ng_template_4_li_2_Template, 2, 4, "li", 6);
45
- i0.ɵɵelementEnd();
46
- i0.ɵɵelementEnd();
47
- } if (rf & 2) {
48
- const ctx_r2 = i0.ɵɵnextContext(2);
49
- i0.ɵɵadvance(1);
50
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(2, _c1, ctx_r2.columns));
51
- i0.ɵɵadvance(1);
52
- i0.ɵɵproperty("ngForOf", ctx_r2.gridWithPadding);
53
- } }
54
- function AppsButtonComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
55
- const _r8 = i0.ɵɵgetCurrentView();
56
- i0.ɵɵelementStart(0, "button", 1, 2);
57
- i0.ɵɵlistener("click", function AppsButtonComponent_ng_template_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.isOpen = !ctx_r7.isOpen; });
58
- i0.ɵɵelementStart(2, "mat-icon");
59
- i0.ɵɵtext(3, "apps");
60
- i0.ɵɵelementEnd();
61
- i0.ɵɵelementEnd();
62
- i0.ɵɵtemplate(4, AppsButtonComponent_ng_template_0_ng_template_4_Template, 3, 4, "ng-template", 3);
63
- i0.ɵɵlistener("overlayOutsideClick", function AppsButtonComponent_ng_template_0_Template_ng_template_overlayOutsideClick_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.isOpen = false; });
64
- } if (rf & 2) {
65
- const _r1 = i0.ɵɵreference(1);
66
- const ctx_r0 = i0.ɵɵnextContext();
67
- i0.ɵɵadvance(4);
68
- i0.ɵɵproperty("cdkConnectedOverlayOpen", ctx_r0.isOpen)("cdkConnectedOverlayOrigin", _r1);
69
- } }
70
- export class AppsButtonComponent {
71
- constructor(grid, config) {
72
- var _a;
73
- this.config = config;
74
- this.isOpen = false;
75
- this.grid = [];
76
- this.grid = (_a = grid !== null && grid !== void 0 ? grid : this.config.get('navigation.apps')) !== null && _a !== void 0 ? _a : [];
77
- }
78
- get gridWithPadding() {
79
- const gridWithPadding = this.grid.slice();
80
- while (gridWithPadding.length % this.columns !== 0) {
81
- gridWithPadding.push({ empty: true });
82
- }
83
- return gridWithPadding;
84
- }
85
- get columns() {
86
- if (this.grid.length < 4) {
87
- return 1;
88
- }
89
- if (this.grid.length < 6) {
90
- return 2;
91
- }
92
- return 3;
93
- }
94
- }
95
- AppsButtonComponent.ɵfac = function AppsButtonComponent_Factory(t) { return new (t || AppsButtonComponent)(i0.ɵɵdirectiveInject(RXAP_LAYOUT_APPS_GRID, 8), i0.ɵɵdirectiveInject(ConfigService)); };
96
- AppsButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppsButtonComponent, selectors: [["rxap-apps-button"]], hostAttrs: [1, "rxap-apps-button"], decls: 1, vars: 1, consts: [[3, "ngIf"], ["cdkOverlayOrigin", "", "mat-icon-button", "", 3, "click"], ["trigger", "cdkOverlayOrigin"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayOpen", "cdkConnectedOverlayOrigin", "overlayOutsideClick"], [1, "grid-container"], [1, "grid", 3, "ngStyle"], [3, "ngClass", 4, "ngFor", "ngForOf"], [3, "ngClass"], [3, "href", 4, "ngIf"], [3, "href"], ["fxLayout", "column", "fxLayoutAlign", "start center", "fxLayoutGap", "12px"], ["width", "53px", 3, "src"]], template: function AppsButtonComponent_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵtemplate(0, AppsButtonComponent_ng_template_0_Template, 5, 2, "ng-template", 0);
98
- } if (rf & 2) {
99
- i0.ɵɵproperty("ngIf", ctx.grid && ctx.grid.length);
100
- } }, directives: [i1.NgIf, i2.MatButton, i3.CdkOverlayOrigin, i4.MatIcon, i3.CdkConnectedOverlay, i5.DefaultStyleDirective, i1.NgStyle, i1.NgForOf, i5.DefaultClassDirective, i1.NgClass, i6.DefaultLayoutDirective, i6.DefaultLayoutAlignDirective, i6.DefaultLayoutGapDirective], styles: [".grid-container[_ngcontent-%COMP%]{padding:8px;border:1px solid rgba(0,0,0,.2);border-radius:8px;box-shadow:0 1px 2px 0 rgba(60,64,67,.3),0 2px 6px 2px rgba(60,64,67,.15)}.grid[_ngcontent-%COMP%]{list-style-type:none;margin:0;padding:0}.grid[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{border-radius:8px;padding:6px;height:84px;width:84px;transition-delay:0s;transition-duration:.2s;transition-property:tramsform;transition-timing-function:cubic-bezier(.333,0,0,1);position:relative}.grid[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{position:absolute;top:6px;right:6px;left:6px;bottom:6px;text-align:center;text-decoration:none;color:#000}"], changeDetection: 0 });
101
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppsButtonComponent, [{
102
- type: Component,
103
- args: [{
104
- selector: 'rxap-apps-button',
105
- templateUrl: './apps-button.component.html',
106
- styleUrls: ['./apps-button.component.scss'],
107
- changeDetection: ChangeDetectionStrategy.OnPush,
108
- host: { class: 'rxap-apps-button' },
109
- }]
110
- }], function () { return [{ type: undefined, decorators: [{
111
- type: Optional
112
- }, {
113
- type: Inject,
114
- args: [RXAP_LAYOUT_APPS_GRID]
115
- }] }, { type: i7.ConfigService, decorators: [{
116
- type: Inject,
117
- args: [ConfigService]
118
- }] }]; }, null); })();
119
- //# sourceMappingURL=apps-button.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps-button.component.js","sourceRoot":"","sources":["../../../../../../../libs/layout/src/lib/header/apps-button/apps-button.component.ts","../../../../../../../libs/layout/src/lib/header/apps-button/apps-button.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,MAAM,EACN,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;;;;;;;;;;ICOnC,4BAA0C;IAE5C,gCAAwE;IACtE,0BAAqC;IACrC,4BAAM;IAAA,YAAc;IAAA,iBAAO;IAC7B,iBAAO;IAEL,iBAAI;;;IAPmB,qDAAkB;IAGpC,eAAkB;IAAlB,qDAAkB;IACjB,eAAc;IAAd,mCAAc;;;;IALtB,6BAA2E;IACzE,iGAOI;IACN,iBAAK;;;IAToC,mEAAiC;IACpE,eAAiB;IAAjB,qCAAiB;;;;IAJ3B,8BAA4B;IAE1B,6BAAkD;IAChD,8FASK;IACP,iBAAK;IAEP,iBAAM;;;IAbA,eAAgC;IAAhC,oEAAgC;IACb,eAAkB;IAAlB,gDAAkB;;;;IAZ7C,oCAAgG;IAA5D,0MAA0B;IAC5D,gCAAU;IAAA,oBAAI;IAAA,iBAAW;IAC3B,iBAAS;IAET,kGAsBc;IAtBD,yNAAgC,KAAK,IAAC;;;;IACtC,eAAkC;IAAlC,uDAAkC,kCAAA;;ADwBjD,MAAM,OAAO,mBAAmB;IAyB9B,YAGE,IAAS,EAEQ,MAAqB;;QAArB,WAAM,GAAN,MAAM,CAAe;QARjC,WAAM,GAAG,KAAK,CAAC;QACf,SAAI,GAA8B,EAAE,CAAC;QAS1C,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,mCAAI,EAAE,CAAC;IAC/D,CAAC;IAhCD,IAAW,eAAe;QAGxB,MAAM,eAAe,GACnB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;YAClD,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACvC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAW,OAAO;QAChB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO,CAAC,CAAC;SACV;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC;IACX,CAAC;;sFApBU,mBAAmB,uBA2BpB,qBAAqB,2BAErB,aAAa;sEA7BZ,mBAAmB;QC9BhC,oFA4Bc;;QA5BD,kDAA4B;;uFD8B5B,mBAAmB;cAP/B,SAAS;eAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE,8BAA8B;gBAC3C,SAAS,EAAE,CAAC,8BAA8B,CAAC;gBAC3C,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;aACpC;;sBA2BI,QAAQ;;sBACR,MAAM;uBAAC,qBAAqB;;sBAE5B,MAAM;uBAAC,aAAa","sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n Inject,\n Optional,\n} from '@angular/core';\nimport { RXAP_LAYOUT_APPS_GRID } from '../../tokens';\nimport { ConfigService } from '@rxap/config';\n\nexport interface AppsButtonGridItem {\n image: string;\n label: string;\n href: string;\n empty?: false;\n}\n\nexport interface EmptyAppsButtonGridItem {\n empty: true;\n href?: undefined;\n label?: undefined;\n image?: undefined;\n}\n\n@Component({\n selector: 'rxap-apps-button',\n templateUrl: './apps-button.component.html',\n styleUrls: ['./apps-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'rxap-apps-button' },\n})\nexport class AppsButtonComponent {\n public get gridWithPadding(): Array<\n AppsButtonGridItem | EmptyAppsButtonGridItem\n > {\n const gridWithPadding: Array<AppsButtonGridItem | EmptyAppsButtonGridItem> =\n this.grid.slice();\n while (gridWithPadding.length % this.columns !== 0) {\n gridWithPadding.push({ empty: true });\n }\n return gridWithPadding;\n }\n\n public get columns() {\n if (this.grid.length < 4) {\n return 1;\n }\n if (this.grid.length < 6) {\n return 2;\n }\n return 3;\n }\n\n public isOpen = false;\n public grid: Array<AppsButtonGridItem> = [];\n\n constructor(\n @Optional()\n @Inject(RXAP_LAYOUT_APPS_GRID)\n grid: any,\n @Inject(ConfigService)\n private readonly config: ConfigService\n ) {\n this.grid = grid ?? this.config.get('navigation.apps') ?? [];\n }\n}\n","<ng-template [ngIf]=\"grid && grid.length\">\n <button #trigger=\"cdkOverlayOrigin\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin mat-icon-button>\n <mat-icon>apps</mat-icon>\n </button>\n\n <ng-template (overlayOutsideClick)=\"isOpen = false\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n cdkConnectedOverlay>\n\n <div class=\"grid-container\">\n\n <ul [ngStyle]=\"{ columns: columns }\" class=\"grid\">\n <li *ngFor=\"let item of gridWithPadding\" [ngClass]=\"{ empty: item.empty }\">\n <a *ngIf=\"!item.empty\" [href]=\"item.href\">\n\n <span fxLayout=\"column\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n <img [src]=\"item.image\" width=\"53px\">\n <span>{{item.label}}</span>\n </span>\n\n </a>\n </li>\n </ul>\n\n </div>\n\n </ng-template>\n</ng-template>\n"]}
@@ -1,47 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { AppsButtonComponent } from './apps-button.component';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import { MatIconModule } from '@angular/material/icon';
5
- import { MatGridListModule } from '@angular/material/grid-list';
6
- import { OverlayModule } from '@angular/cdk/overlay';
7
- import { FlexLayoutModule } from '@angular/flex-layout';
8
- import { CommonModule } from '@angular/common';
9
- import { RouterModule } from '@angular/router';
10
- import * as i0 from "@angular/core";
11
- export class AppsButtonComponentModule {
12
- }
13
- AppsButtonComponentModule.ɵfac = function AppsButtonComponentModule_Factory(t) { return new (t || AppsButtonComponentModule)(); };
14
- AppsButtonComponentModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AppsButtonComponentModule });
15
- AppsButtonComponentModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
16
- MatButtonModule,
17
- MatIconModule,
18
- MatGridListModule,
19
- OverlayModule,
20
- FlexLayoutModule,
21
- CommonModule,
22
- RouterModule
23
- ]] });
24
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppsButtonComponentModule, [{
25
- type: NgModule,
26
- args: [{
27
- declarations: [AppsButtonComponent],
28
- imports: [
29
- MatButtonModule,
30
- MatIconModule,
31
- MatGridListModule,
32
- OverlayModule,
33
- FlexLayoutModule,
34
- CommonModule,
35
- RouterModule
36
- ],
37
- exports: [AppsButtonComponent]
38
- }]
39
- }], null, null); })();
40
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AppsButtonComponentModule, { declarations: [AppsButtonComponent], imports: [MatButtonModule,
41
- MatIconModule,
42
- MatGridListModule,
43
- OverlayModule,
44
- FlexLayoutModule,
45
- CommonModule,
46
- RouterModule], exports: [AppsButtonComponent] }); })();
47
- //# sourceMappingURL=apps-button.component.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps-button.component.module.js","sourceRoot":"","sources":["../../../../../../../libs/layout/src/lib/header/apps-button/apps-button.component.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;AAgB/C,MAAM,OAAO,yBAAyB;;kGAAzB,yBAAyB;2EAAzB,yBAAyB;+EAXtB;YACZ,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,aAAa;YACb,gBAAgB;YAChB,YAAY;YACZ,YAAY;SACb;uFAGU,yBAAyB;cAbrC,QAAQ;eAAC;gBACR,YAAY,EAAE,CAAE,mBAAmB,CAAE;gBACrC,OAAO,EAAO;oBACZ,eAAe;oBACf,aAAa;oBACb,iBAAiB;oBACjB,aAAa;oBACb,gBAAgB;oBAChB,YAAY;oBACZ,YAAY;iBACb;gBACD,OAAO,EAAO,CAAE,mBAAmB,CAAE;aACtC;;wFACY,yBAAyB,mBAZpB,mBAAmB,aAEjC,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,gBAAgB;QAChB,YAAY;QACZ,YAAY,aAEE,mBAAmB","sourcesContent":["import { NgModule } from '@angular/core';\nimport { AppsButtonComponent } from './apps-button.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\n\n@NgModule({\n declarations: [ AppsButtonComponent ],\n imports: [\n MatButtonModule,\n MatIconModule,\n MatGridListModule,\n OverlayModule,\n FlexLayoutModule,\n CommonModule,\n RouterModule\n ],\n exports: [ AppsButtonComponent ]\n})\nexport class AppsButtonComponentModule {}\n"]}
@@ -1,144 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, Input, Optional, Inject, } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import { tap, map } from 'rxjs/operators';
4
- import { MatSidenav } from '@angular/material/sidenav';
5
- import { UserService } from '@rxap/authentication';
6
- import { RXAP_HEADER_COMPONENT } from '../tokens';
7
- import { HeaderService } from '@rxap/services';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/material/toolbar";
10
- import * as i2 from "@angular/flex-layout/extended";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@angular/flex-layout/flex";
13
- import * as i5 from "./language-selector/language-selector.component";
14
- import * as i6 from "./apps-button/apps-button.component";
15
- import * as i7 from "./sign-out/sign-out.component";
16
- import * as i8 from "./navigation-progress-bar/navigation-progress-bar.component";
17
- import * as i9 from "./sidenav-toggle-button/sidenav-toggle-button.component";
18
- import * as i10 from "./user-profile-icon/user-profile-icon.component";
19
- import * as i11 from "@angular/material/button";
20
- import * as i12 from "@angular/material/menu";
21
- import * as i13 from "@angular/material/icon";
22
- import * as i14 from "@rxap/services";
23
- import * as i15 from "@rxap/authentication";
24
- function HeaderComponent_mat_toolbar_row_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
25
- i0.ɵɵelementContainer(0);
26
- } }
27
- function HeaderComponent_mat_toolbar_row_1_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelementStart(0, "mat-toolbar-row");
29
- i0.ɵɵtemplate(1, HeaderComponent_mat_toolbar_row_1_ng_container_1_Template, 1, 0, "ng-container", 7);
30
- i0.ɵɵelementEnd();
31
- } if (rf & 2) {
32
- const headerComponent_r4 = ctx.$implicit;
33
- i0.ɵɵadvance(1);
34
- i0.ɵɵproperty("ngComponentOutlet", headerComponent_r4);
35
- } }
36
- function HeaderComponent_rxap_sidenav_toggle_button_4_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelement(0, "rxap-sidenav-toggle-button", 8);
38
- } if (rf & 2) {
39
- const ctx_r1 = i0.ɵɵnextContext();
40
- i0.ɵɵproperty("sidenav", ctx_r1.sidenav);
41
- } }
42
- function HeaderComponent_rxap_user_profile_icon_9_Template(rf, ctx) { if (rf & 1) {
43
- i0.ɵɵelement(0, "rxap-user-profile-icon", 5);
44
- } }
45
- function HeaderComponent_div_11_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "div", 5);
47
- i0.ɵɵelementStart(1, "button", 9);
48
- i0.ɵɵelementStart(2, "mat-icon");
49
- i0.ɵɵtext(3, "settings");
50
- i0.ɵɵelementEnd();
51
- i0.ɵɵelementEnd();
52
- i0.ɵɵelementEnd();
53
- } if (rf & 2) {
54
- const ctx_r3 = i0.ɵɵnextContext();
55
- i0.ɵɵadvance(1);
56
- i0.ɵɵproperty("matMenuTriggerFor", ctx_r3.settingsMenuPanel);
57
- } }
58
- const _c0 = function (a0) { return { open: a0 }; };
59
- const _c1 = ["*"];
60
- export class HeaderComponent {
61
- constructor(headerComponentService, userService, headerComponent) {
62
- this.headerComponentService = headerComponentService;
63
- this.userService = userService;
64
- this.headerComponent = headerComponent;
65
- this.components = [];
66
- this.subscriptions = new Subscription();
67
- this.color = 'primary';
68
- this.hasUser$ = this.userService.user$.pipe(map(Boolean));
69
- }
70
- ngOnInit() {
71
- this.updateComponents();
72
- this.subscriptions.add(this.headerComponentService.update$
73
- .pipe(tap(() => this.updateComponents()))
74
- .subscribe());
75
- }
76
- updateComponents() {
77
- this.components = this.headerComponentService.getComponents();
78
- }
79
- ngOnDestroy() {
80
- this.subscriptions.unsubscribe();
81
- }
82
- }
83
- HeaderComponent.ɵfac = function HeaderComponent_Factory(t) { return new (t || HeaderComponent)(i0.ɵɵdirectiveInject(HeaderService), i0.ɵɵdirectiveInject(UserService), i0.ɵɵdirectiveInject(RXAP_HEADER_COMPONENT, 8)); };
84
- HeaderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HeaderComponent, selectors: [["rxap-header"]], hostAttrs: [1, "rxap-layout-header"], inputs: { sidenav: "sidenav", color: "color", settingsMenuPanel: "settingsMenuPanel" }, ngContentSelectors: _c1, decls: 14, vars: 10, consts: [[1, "mat-elevation-z3", 3, "ngClass", "color"], [4, "ngFor", "ngForOf"], ["fxLayout", "row", "fxLayoutAlign", "space-between center", "fxLayoutGap", "16px", 1, "content"], ["fxFlex", "nogrow", 3, "sidenav", 4, "ngIf"], ["fxFlex", "grow"], ["fxFlex", "nogrow"], ["fxFlex", "nogrow", 4, "ngIf"], [4, "ngComponentOutlet"], ["fxFlex", "nogrow", 3, "sidenav"], ["mat-icon-button", "", 3, "matMenuTriggerFor"]], template: function HeaderComponent_Template(rf, ctx) { if (rf & 1) {
85
- i0.ɵɵprojectionDef();
86
- i0.ɵɵelementStart(0, "mat-toolbar", 0);
87
- i0.ɵɵtemplate(1, HeaderComponent_mat_toolbar_row_1_Template, 2, 1, "mat-toolbar-row", 1);
88
- i0.ɵɵelementStart(2, "mat-toolbar-row");
89
- i0.ɵɵelementStart(3, "div", 2);
90
- i0.ɵɵtemplate(4, HeaderComponent_rxap_sidenav_toggle_button_4_Template, 1, 1, "rxap-sidenav-toggle-button", 3);
91
- i0.ɵɵelementStart(5, "div", 4);
92
- i0.ɵɵprojection(6);
93
- i0.ɵɵelementEnd();
94
- i0.ɵɵelement(7, "rxap-language-selector", 5);
95
- i0.ɵɵelement(8, "rxap-apps-button", 5);
96
- i0.ɵɵtemplate(9, HeaderComponent_rxap_user_profile_icon_9_Template, 1, 0, "rxap-user-profile-icon", 6);
97
- i0.ɵɵpipe(10, "async");
98
- i0.ɵɵtemplate(11, HeaderComponent_div_11_Template, 4, 1, "div", 6);
99
- i0.ɵɵelement(12, "rxap-sign-out", 5);
100
- i0.ɵɵelementEnd();
101
- i0.ɵɵelementEnd();
102
- i0.ɵɵelementEnd();
103
- i0.ɵɵelement(13, "rxap-navigation-progress-bar");
104
- } if (rf & 2) {
105
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c0, ctx.sidenav == null ? null : ctx.sidenav.opened))("color", ctx.color);
106
- i0.ɵɵadvance(1);
107
- i0.ɵɵproperty("ngForOf", ctx.components);
108
- i0.ɵɵadvance(3);
109
- i0.ɵɵproperty("ngIf", ctx.sidenav);
110
- i0.ɵɵadvance(5);
111
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(10, 6, ctx.hasUser$));
112
- i0.ɵɵadvance(2);
113
- i0.ɵɵproperty("ngIf", ctx.settingsMenuPanel);
114
- } }, directives: [i1.MatToolbar, i2.DefaultClassDirective, i3.NgClass, i3.NgForOf, i1.MatToolbarRow, i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.DefaultLayoutGapDirective, i3.NgIf, i4.DefaultFlexDirective, i5.LanguageSelectorComponent, i6.AppsButtonComponent, i7.SignOutComponent, i8.NavigationProgressBarComponent, i3.NgComponentOutlet, i9.SidenavToggleButtonComponent, i10.UserProfileIconComponent, i11.MatButton, i12.MatMenuTrigger, i13.MatIcon], pipes: [i3.AsyncPipe], styles: [".content[_ngcontent-%COMP%]{width:100%;height:64px}"], changeDetection: 0 });
115
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HeaderComponent, [{
116
- type: Component,
117
- args: [{
118
- selector: 'rxap-header',
119
- templateUrl: './header.component.html',
120
- styleUrls: ['./header.component.scss'],
121
- changeDetection: ChangeDetectionStrategy.OnPush,
122
- host: {
123
- class: 'rxap-layout-header',
124
- },
125
- }]
126
- }], function () { return [{ type: i14.HeaderService, decorators: [{
127
- type: Inject,
128
- args: [HeaderService]
129
- }] }, { type: i15.UserService, decorators: [{
130
- type: Inject,
131
- args: [UserService]
132
- }] }, { type: undefined, decorators: [{
133
- type: Optional
134
- }, {
135
- type: Inject,
136
- args: [RXAP_HEADER_COMPONENT]
137
- }] }]; }, { sidenav: [{
138
- type: Input
139
- }], color: [{
140
- type: Input
141
- }], settingsMenuPanel: [{
142
- type: Input
143
- }] }); })();
144
- //# sourceMappingURL=header.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"header.component.js","sourceRoot":"","sources":["../../../../../../libs/layout/src/lib/header/header.component.ts","../../../../../../libs/layout/src/lib/header/header.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n OnInit,\n ChangeDetectionStrategy,\n OnDestroy,\n Input,\n Optional,\n Inject,\n} from '@angular/core';\nimport { Constructor } from '@rxap/utilities';\nimport { Subscription, Observable } from 'rxjs';\nimport { tap, map } from 'rxjs/operators';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { UserService } from '@rxap/authentication';\nimport { RXAP_HEADER_COMPONENT } from '../tokens';\nimport { HeaderService } from '@rxap/services';\nimport { MatMenuPanel } from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n selector: 'rxap-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'rxap-layout-header',\n },\n})\nexport class HeaderComponent implements OnInit, OnDestroy {\n @Input()\n public sidenav?: MatSidenav;\n\n public components: Array<Constructor<any>> = [];\n\n public subscriptions = new Subscription();\n\n public hasUser$: Observable<boolean>;\n\n @Input()\n public color: ThemePalette = 'primary';\n\n @Input()\n public settingsMenuPanel?: MatMenuPanel;\n\n constructor(\n @Inject(HeaderService)\n public readonly headerComponentService: HeaderService,\n @Inject(UserService)\n private readonly userService: UserService<any>,\n @Optional() @Inject(RXAP_HEADER_COMPONENT) public headerComponent: any\n ) {\n this.hasUser$ = this.userService.user$.pipe(map(Boolean));\n }\n\n public ngOnInit() {\n this.updateComponents();\n this.subscriptions.add(\n this.headerComponentService.update$\n .pipe(tap(() => this.updateComponents()))\n .subscribe()\n );\n }\n\n public updateComponents(): void {\n this.components = this.headerComponentService.getComponents();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","<mat-toolbar [ngClass]=\"{ open: sidenav?.opened }\" [color]=\"color\" class=\"mat-elevation-z3\">\n <mat-toolbar-row *ngFor=\"let headerComponent of components\">\n <ng-container *ngComponentOutlet=\"headerComponent\"></ng-container>\n </mat-toolbar-row>\n <mat-toolbar-row>\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n fxLayoutGap=\"16px\"\n class=\"content\"\n >\n <rxap-sidenav-toggle-button *ngIf=\"sidenav\" fxFlex=\"nogrow\" [sidenav]=\"sidenav\"></rxap-sidenav-toggle-button>\n <div fxFlex=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-language-selector fxFlex=\"nogrow\"></rxap-language-selector>\n <rxap-apps-button fxFlex=\"nogrow\"></rxap-apps-button>\n <rxap-user-profile-icon *ngIf=\"hasUser$ | async\" fxFlex=\"nogrow\"></rxap-user-profile-icon>\n <div fxFlex=\"nogrow\" *ngIf=\"settingsMenuPanel\">\n <button mat-icon-button [matMenuTriggerFor]=\"settingsMenuPanel\">\n <mat-icon>settings</mat-icon>\n </button>\n </div>\n <rxap-sign-out fxFlex=\"nogrow\"></rxap-sign-out>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n"]}
@@ -1,71 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { HeaderComponent } from './header.component';
3
- import { MatToolbarModule } from '@angular/material/toolbar';
4
- import { SignOutComponentModule } from './sign-out/sign-out.component.module';
5
- import { UserProfileIconComponentModule } from './user-profile-icon/user-profile-icon.component.module';
6
- import { NavigationProgressBarComponentModule } from './navigation-progress-bar/navigation-progress-bar.component.module';
7
- import { SidenavToggleButtonComponentModule } from './sidenav-toggle-button/sidenav-toggle-button.component.module';
8
- import { ResetButtonComponentModule } from './reset-button/reset-button.component.module';
9
- import { FlexLayoutModule } from '@angular/flex-layout';
10
- import { CommonModule } from '@angular/common';
11
- import { MatButtonModule } from '@angular/material/button';
12
- import { MatIconModule } from '@angular/material/icon';
13
- import { MatMenuModule } from '@angular/material/menu';
14
- import { AppsButtonComponentModule } from './apps-button/apps-button.component.module';
15
- import { LanguageSelectorComponentModule } from './language-selector/language-selector.component.module';
16
- import * as i0 from "@angular/core";
17
- export class HeaderModule {
18
- }
19
- HeaderModule.ɵfac = function HeaderModule_Factory(t) { return new (t || HeaderModule)(); };
20
- HeaderModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: HeaderModule });
21
- HeaderModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
22
- MatToolbarModule,
23
- SignOutComponentModule,
24
- UserProfileIconComponentModule,
25
- NavigationProgressBarComponentModule,
26
- SidenavToggleButtonComponentModule,
27
- ResetButtonComponentModule,
28
- FlexLayoutModule,
29
- CommonModule,
30
- MatButtonModule,
31
- MatIconModule,
32
- MatMenuModule,
33
- AppsButtonComponentModule,
34
- LanguageSelectorComponentModule
35
- ]] });
36
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HeaderModule, [{
37
- type: NgModule,
38
- args: [{
39
- declarations: [HeaderComponent],
40
- imports: [
41
- MatToolbarModule,
42
- SignOutComponentModule,
43
- UserProfileIconComponentModule,
44
- NavigationProgressBarComponentModule,
45
- SidenavToggleButtonComponentModule,
46
- ResetButtonComponentModule,
47
- FlexLayoutModule,
48
- CommonModule,
49
- MatButtonModule,
50
- MatIconModule,
51
- MatMenuModule,
52
- AppsButtonComponentModule,
53
- LanguageSelectorComponentModule
54
- ],
55
- exports: [HeaderComponent]
56
- }]
57
- }], null, null); })();
58
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(HeaderModule, { declarations: [HeaderComponent], imports: [MatToolbarModule,
59
- SignOutComponentModule,
60
- UserProfileIconComponentModule,
61
- NavigationProgressBarComponentModule,
62
- SidenavToggleButtonComponentModule,
63
- ResetButtonComponentModule,
64
- FlexLayoutModule,
65
- CommonModule,
66
- MatButtonModule,
67
- MatIconModule,
68
- MatMenuModule,
69
- AppsButtonComponentModule,
70
- LanguageSelectorComponentModule], exports: [HeaderComponent] }); })();
71
- //# sourceMappingURL=header.component.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"header.component.module.js","sourceRoot":"","sources":["../../../../../../libs/layout/src/lib/header/header.component.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wDAAwD,CAAC;AACxG,OAAO,EAAE,oCAAoC,EAAE,MAAM,oEAAoE,CAAC;AAC1H,OAAO,EAAE,kCAAkC,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;;AAsBzG,MAAM,OAAO,YAAY;;wEAAZ,YAAY;8DAAZ,YAAY;kEAjBd;YACP,gBAAgB;YAChB,sBAAsB;YACtB,8BAA8B;YAC9B,oCAAoC;YACpC,kCAAkC;YAClC,0BAA0B;YAC1B,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,aAAa;YACb,aAAa;YACb,yBAAyB;YACzB,+BAA+B;SAChC;uFAGU,YAAY;cAnBxB,QAAQ;eAAC;gBACR,YAAY,EAAE,CAAE,eAAe,CAAE;gBACjC,OAAO,EAAE;oBACP,gBAAgB;oBAChB,sBAAsB;oBACtB,8BAA8B;oBAC9B,oCAAoC;oBACpC,kCAAkC;oBAClC,0BAA0B;oBAC1B,gBAAgB;oBAChB,YAAY;oBACZ,eAAe;oBACf,aAAa;oBACb,aAAa;oBACb,yBAAyB;oBACzB,+BAA+B;iBAChC;gBACD,OAAO,EAAO,CAAE,eAAe,CAAE;aAClC;;wFACY,YAAY,mBAlBP,eAAe,aAE7B,gBAAgB;QAChB,sBAAsB;QACtB,8BAA8B;QAC9B,oCAAoC;QACpC,kCAAkC;QAClC,0BAA0B;QAC1B,gBAAgB;QAChB,YAAY;QACZ,eAAe;QACf,aAAa;QACb,aAAa;QACb,yBAAyB;QACzB,+BAA+B,aAEjB,eAAe","sourcesContent":["import { NgModule } from '@angular/core';\nimport { HeaderComponent } from './header.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { SignOutComponentModule } from './sign-out/sign-out.component.module';\nimport { UserProfileIconComponentModule } from './user-profile-icon/user-profile-icon.component.module';\nimport { NavigationProgressBarComponentModule } from './navigation-progress-bar/navigation-progress-bar.component.module';\nimport { SidenavToggleButtonComponentModule } from './sidenav-toggle-button/sidenav-toggle-button.component.module';\nimport { ResetButtonComponentModule } from './reset-button/reset-button.component.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { AppsButtonComponentModule } from './apps-button/apps-button.component.module';\nimport { LanguageSelectorComponentModule } from './language-selector/language-selector.component.module';\n\n\n@NgModule({\n declarations: [ HeaderComponent ],\n imports: [\n MatToolbarModule,\n SignOutComponentModule,\n UserProfileIconComponentModule,\n NavigationProgressBarComponentModule,\n SidenavToggleButtonComponentModule,\n ResetButtonComponentModule,\n FlexLayoutModule,\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n AppsButtonComponentModule,\n LanguageSelectorComponentModule\n ],\n exports: [ HeaderComponent ]\n})\nexport class HeaderModule {}\n"]}
@@ -1,119 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, Injectable, Inject, } from '@angular/core';
2
- import { ConfigService } from '@rxap/config';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@rxap/config";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/material/form-field";
7
- import * as i4 from "@angular/material/select";
8
- import * as i5 from "@angular/forms";
9
- import * as i6 from "@angular/material/core";
10
- function LanguageSelectorComponent_ng_template_0_mat_option_3_Template(rf, ctx) { if (rf & 1) {
11
- i0.ɵɵelementStart(0, "mat-option", 4);
12
- i0.ɵɵtext(1);
13
- i0.ɵɵelementEnd();
14
- } if (rf & 2) {
15
- const item_r2 = ctx.$implicit;
16
- i0.ɵɵproperty("value", item_r2.key);
17
- i0.ɵɵadvance(1);
18
- i0.ɵɵtextInterpolate(item_r2.value);
19
- } }
20
- function LanguageSelectorComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
21
- const _r4 = i0.ɵɵgetCurrentView();
22
- i0.ɵɵelementStart(0, "div");
23
- i0.ɵɵelementStart(1, "mat-form-field", 1);
24
- i0.ɵɵelementStart(2, "mat-select", 2);
25
- i0.ɵɵlistener("ngModelChange", function LanguageSelectorComponent_ng_template_0_Template_mat_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return ctx_r3.language.setLanguage($event); });
26
- i0.ɵɵtemplate(3, LanguageSelectorComponent_ng_template_0_mat_option_3_Template, 2, 2, "mat-option", 3);
27
- i0.ɵɵpipe(4, "keyvalue");
28
- i0.ɵɵelementEnd();
29
- i0.ɵɵelementEnd();
30
- i0.ɵɵelementEnd();
31
- } if (rf & 2) {
32
- const ctx_r0 = i0.ɵɵnextContext();
33
- i0.ɵɵadvance(2);
34
- i0.ɵɵproperty("ngModel", ctx_r0.language.selectedLanguage);
35
- i0.ɵɵadvance(1);
36
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(4, 2, ctx_r0.language.languages));
37
- } }
38
- export const RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY = 'rxap__selected_language';
39
- export const RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY = 'rxap__selected_language_last_change';
40
- export class LanguageSelectorService {
41
- constructor(config) {
42
- var _a, _b, _c, _d;
43
- this.config = config;
44
- this.languages = (_a = this.config.get('i18n.languages')) !== null && _a !== void 0 ? _a : {};
45
- this.defaultLanguage =
46
- (_c = (_b = this.config.get('i18n.defaultLanguage')) !== null && _b !== void 0 ? _b : Object.keys(this.languages)[0]) !== null && _c !== void 0 ? _c : 'en';
47
- this.selectedLanguage =
48
- (_d = localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)) !== null && _d !== void 0 ? _d : this.defaultLanguage;
49
- }
50
- setLanguage(language) {
51
- if (language !== this.selectedLanguage) {
52
- this.redirect(language);
53
- }
54
- }
55
- autoRedirect() {
56
- if (localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)) {
57
- this.redirect(localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY));
58
- }
59
- }
60
- redirect(language) {
61
- const currentUrl = location.origin + location.pathname + location.search;
62
- const redirectUrl = location.origin +
63
- `/${language}` +
64
- location.pathname.replace(new RegExp(`^\/${this.selectedLanguage}`), '') +
65
- location.search;
66
- this.selectedLanguage = language;
67
- localStorage.setItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY, language);
68
- if (currentUrl !== redirectUrl) {
69
- if (this.checkLastChange()) {
70
- location.replace(redirectUrl);
71
- }
72
- }
73
- else {
74
- console.log('Redirect not required');
75
- }
76
- }
77
- checkLastChange() {
78
- const lastChangeString = localStorage.getItem(RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY);
79
- if (lastChangeString) {
80
- if (Date.now() - parseInt(lastChangeString, 10) < 1000) {
81
- return false;
82
- }
83
- }
84
- localStorage.setItem(RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY, Date.now().toFixed(0));
85
- return true;
86
- }
87
- }
88
- LanguageSelectorService.ɵfac = function LanguageSelectorService_Factory(t) { return new (t || LanguageSelectorService)(i0.ɵɵinject(ConfigService)); };
89
- LanguageSelectorService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LanguageSelectorService, factory: LanguageSelectorService.ɵfac, providedIn: 'root' });
90
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LanguageSelectorService, [{
91
- type: Injectable,
92
- args: [{ providedIn: 'root' }]
93
- }], function () { return [{ type: i1.ConfigService, decorators: [{
94
- type: Inject,
95
- args: [ConfigService]
96
- }] }]; }, null); })();
97
- export class LanguageSelectorComponent {
98
- constructor(language) {
99
- this.language = language;
100
- }
101
- }
102
- LanguageSelectorComponent.ɵfac = function LanguageSelectorComponent_Factory(t) { return new (t || LanguageSelectorComponent)(i0.ɵɵdirectiveInject(LanguageSelectorService)); };
103
- LanguageSelectorComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LanguageSelectorComponent, selectors: [["rxap-language-selector"]], hostAttrs: [1, "rxap-language-selector"], decls: 2, vars: 3, consts: [[3, "ngIf"], ["appearance", "outline", 1, "language-selector"], [3, "ngModel", "ngModelChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"]], template: function LanguageSelectorComponent_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵtemplate(0, LanguageSelectorComponent_ng_template_0_Template, 5, 4, "ng-template", 0);
105
- i0.ɵɵpipe(1, "keyvalue");
106
- } if (rf & 2) {
107
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.language.languages).length);
108
- } }, directives: [i2.NgIf, i3.MatFormField, i4.MatSelect, i5.NgControlStatus, i5.NgModel, i2.NgForOf, i6.MatOption], pipes: [i2.KeyValuePipe], styles: [".language-selector[_ngcontent-%COMP%]{width:142px}.language-selector[_ngcontent-%COMP%] .mat-form-field-wrapper{padding-bottom:0}.language-selector[_ngcontent-%COMP%] .mat-form-field-wrapper .mat-form-field-infix{padding:12px 0;border-width:6px}.language-selector[_ngcontent-%COMP%] .mat-form-field-wrapper .mat-form-field-infix .mat-select-arrow-wrapper{transform:translateY(0)}"], changeDetection: 0 });
109
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LanguageSelectorComponent, [{
110
- type: Component,
111
- args: [{
112
- selector: 'rxap-language-selector',
113
- templateUrl: './language-selector.component.html',
114
- styleUrls: ['./language-selector.component.scss'],
115
- changeDetection: ChangeDetectionStrategy.OnPush,
116
- host: { class: 'rxap-language-selector' },
117
- }]
118
- }], function () { return [{ type: LanguageSelectorService }]; }, null); })();
119
- //# sourceMappingURL=language-selector.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-selector.component.js","sourceRoot":"","sources":["../../../../../../../libs/layout/src/lib/header/language-selector/language-selector.component.ts","../../../../../../../libs/layout/src/lib/header/language-selector/language-selector.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n Injectable,\n Inject,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\n\nexport const RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY =\n 'rxap__selected_language';\nexport const RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY =\n 'rxap__selected_language_last_change';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageSelectorService {\n public readonly languages: any;\n public readonly defaultLanguage: string;\n public selectedLanguage: string;\n\n constructor(\n @Inject(ConfigService)\n private readonly config: ConfigService\n ) {\n this.languages = this.config.get<any>('i18n.languages') ?? {};\n this.defaultLanguage =\n this.config.get('i18n.defaultLanguage') ??\n Object.keys(this.languages)[0] ??\n 'en';\n this.selectedLanguage =\n localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY) ??\n this.defaultLanguage;\n }\n\n public setLanguage(language: string) {\n if (language !== this.selectedLanguage) {\n this.redirect(language);\n }\n }\n\n public autoRedirect() {\n if (localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)) {\n this.redirect(\n localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY)!\n );\n }\n }\n\n private redirect(language: string) {\n const currentUrl = location.origin + location.pathname + location.search;\n const redirectUrl =\n location.origin +\n `/${language}` +\n location.pathname.replace(new RegExp(`^\\/${this.selectedLanguage}`), '') +\n location.search;\n this.selectedLanguage = language;\n localStorage.setItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY, language);\n if (currentUrl !== redirectUrl) {\n if (this.checkLastChange()) {\n location.replace(redirectUrl);\n }\n } else {\n console.log('Redirect not required');\n }\n }\n\n private checkLastChange(): boolean {\n const lastChangeString = localStorage.getItem(\n RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY\n );\n if (lastChangeString) {\n if (Date.now() - parseInt(lastChangeString, 10) < 1000) {\n return false;\n }\n }\n localStorage.setItem(\n RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY,\n Date.now().toFixed(0)\n );\n return true;\n }\n}\n\n@Component({\n selector: 'rxap-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: ['./language-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'rxap-language-selector' },\n})\nexport class LanguageSelectorComponent {\n constructor(public readonly language: LanguageSelectorService) {}\n}\n","<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\">\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\" [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n"]}
@@ -1,31 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { LanguageSelectorComponent } from './language-selector.component';
3
- import { MatSelectModule } from '@angular/material/select';
4
- import { CommonModule } from '@angular/common';
5
- import { FormsModule } from '@angular/forms';
6
- import * as i0 from "@angular/core";
7
- export class LanguageSelectorComponentModule {
8
- }
9
- LanguageSelectorComponentModule.ɵfac = function LanguageSelectorComponentModule_Factory(t) { return new (t || LanguageSelectorComponentModule)(); };
10
- LanguageSelectorComponentModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: LanguageSelectorComponentModule });
11
- LanguageSelectorComponentModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
12
- MatSelectModule,
13
- CommonModule,
14
- FormsModule
15
- ]] });
16
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LanguageSelectorComponentModule, [{
17
- type: NgModule,
18
- args: [{
19
- declarations: [LanguageSelectorComponent],
20
- imports: [
21
- MatSelectModule,
22
- CommonModule,
23
- FormsModule
24
- ],
25
- exports: [LanguageSelectorComponent]
26
- }]
27
- }], null, null); })();
28
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(LanguageSelectorComponentModule, { declarations: [LanguageSelectorComponent], imports: [MatSelectModule,
29
- CommonModule,
30
- FormsModule], exports: [LanguageSelectorComponent] }); })();
31
- //# sourceMappingURL=language-selector.component.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-selector.component.module.js","sourceRoot":"","sources":["../../../../../../../libs/layout/src/lib/header/language-selector/language-selector.component.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;;AAY7C,MAAM,OAAO,+BAA+B;;8GAA/B,+BAA+B;iFAA/B,+BAA+B;qFAP5B;YACZ,eAAe;YACf,YAAY;YACZ,WAAW;SACZ;uFAGU,+BAA+B;cAT3C,QAAQ;eAAC;gBACR,YAAY,EAAE,CAAE,yBAAyB,CAAE;gBAC3C,OAAO,EAAO;oBACZ,eAAe;oBACf,YAAY;oBACZ,WAAW;iBACZ;gBACD,OAAO,EAAO,CAAE,yBAAyB,CAAE;aAC5C;;wFACY,+BAA+B,mBAR1B,yBAAyB,aAEvC,eAAe;QACf,YAAY;QACZ,WAAW,aAEG,yBAAyB","sourcesContent":["import { NgModule } from '@angular/core';\nimport { LanguageSelectorComponent } from './language-selector.component';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n\n@NgModule({\n declarations: [ LanguageSelectorComponent ],\n imports: [\n MatSelectModule,\n CommonModule,\n FormsModule\n ],\n exports: [ LanguageSelectorComponent ]\n})\nexport class LanguageSelectorComponentModule {}\n"]}