aril 1.1.71 → 1.1.72

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 (32) hide show
  1. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +3 -3
  2. package/esm2022/util/loaders/index.mjs +1 -2
  3. package/fesm2022/aril-theme-layout.mjs +2 -2
  4. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  5. package/fesm2022/aril-util-loaders.mjs +1 -59
  6. package/fesm2022/aril-util-loaders.mjs.map +1 -1
  7. package/package.json +154 -160
  8. package/theme/layout/app/static-sidebar/static-sidebar.component.scss +5 -2
  9. package/util/loaders/index.d.ts +0 -1
  10. package/esm2022/util/init-event/aril-util-init-event.mjs +0 -5
  11. package/esm2022/util/init-event/index.mjs +0 -2
  12. package/esm2022/util/init-event/src/init-event.directive.mjs +0 -22
  13. package/esm2022/util/loaders/script/script.loader.service.mjs +0 -61
  14. package/fesm2022/aril-util-init-event.mjs +0 -29
  15. package/fesm2022/aril-util-init-event.mjs.map +0 -1
  16. package/theme/layout/app/menu/app.menu.component.html +0 -14
  17. package/theme/layout/app/menu/app.menu.component.ts +0 -350
  18. package/theme/layout/app/sidebar/app.sidebar.component.html +0 -24
  19. package/theme/layout/app/sidebar/app.sidebar.component.ts +0 -44
  20. package/theme/styles/theme/dark/blue/theme.scss +0 -14
  21. package/theme/styles/theme/dark/lena/theme.scss +0 -14
  22. package/theme/styles/theme/dark/orange/theme.scss +0 -14
  23. package/theme/styles/theme/dark/thor/theme.scss +0 -14
  24. package/theme/styles/theme/dark/yeap/theme.scss +0 -14
  25. package/theme/styles/theme/light/blue/theme.scss +0 -14
  26. package/theme/styles/theme/light/lena/theme.scss +0 -14
  27. package/theme/styles/theme/light/orange/theme.scss +0 -14
  28. package/theme/styles/theme/light/thor/theme.scss +0 -15
  29. package/theme/styles/theme/light/yeap/theme.scss +0 -14
  30. package/util/init-event/index.d.ts +0 -1
  31. package/util/init-event/src/init-event.directive.d.ts +0 -8
  32. package/util/loaders/script/script.loader.service.d.ts +0 -13
@@ -1,61 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Inject, Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class ScriptLoaderService {
5
- constructor(rendererFactory, document) {
6
- this.document = document;
7
- this._scripts = {};
8
- this.renderer = rendererFactory.createRenderer(null, null);
9
- }
10
- load(scripts, loadOnce = true) {
11
- let promises = [];
12
- scripts.forEach((script) => promises.push(this.loadScript(script, loadOnce)));
13
- return Promise.all(promises);
14
- }
15
- remove(scripts) {
16
- scripts.forEach((src) => {
17
- if (!this._scripts[src]) {
18
- console.warn('Script src=' + src + ' is not loaded');
19
- }
20
- else {
21
- const scripts = this.document.getElementsByTagName('script');
22
- for (let i = 0; i < scripts.length; i++) {
23
- if (scripts[i]?.src === src) {
24
- this.renderer.removeChild(this.document.head, scripts[i]);
25
- this._scripts[src] = { src: src, loaded: false };
26
- }
27
- }
28
- }
29
- });
30
- }
31
- loadScript(src, loadOnce) {
32
- return new Promise((resolve, reject) => {
33
- if (this._scripts[src]?.loaded && loadOnce) {
34
- resolve({ src: src, loaded: true });
35
- }
36
- else {
37
- try {
38
- const script = this.renderer.createElement('script');
39
- script.type = 'text/javascript';
40
- script.src = src;
41
- this.renderer.appendChild(this.document.head, script);
42
- this._scripts[src] = { src: src, loaded: true };
43
- resolve({ src: src, loaded: true });
44
- }
45
- catch (error) {
46
- reject(error);
47
- }
48
- }
49
- });
50
- }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ScriptLoaderService, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
52
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ScriptLoaderService, providedIn: 'root' }); }
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ScriptLoaderService, decorators: [{
55
- type: Injectable,
56
- args: [{ providedIn: 'root' }]
57
- }], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: Document, decorators: [{
58
- type: Inject,
59
- args: [DOCUMENT]
60
- }] }] });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LmxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91dGlsL2xvYWRlcnMvc2NyaXB0L3NjcmlwdC5sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQStCLE1BQU0sZUFBZSxDQUFDOztBQVdoRixNQUFNLE9BQU8sbUJBQW1CO0lBQy9CLFlBQ0MsZUFBaUMsRUFDUixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTXBDLGFBQVEsR0FBWSxFQUFFLENBQUM7UUFKOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBS0QsSUFBSSxDQUFDLE9BQWlCLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDdEMsSUFBSSxRQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWlCO1FBQ3ZCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztZQUN0RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFN0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDekMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUNsRCxDQUFDO2dCQUNGLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVcsRUFBRSxRQUFpQjtRQUNoRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLElBQUksQ0FBQztvQkFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDckQsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztvQkFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7b0JBRWpCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUV0RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBRWhELE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNmLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXZEVyxtQkFBbUIsa0RBR3RCLFFBQVE7a0hBSEwsbUJBQW1CLGNBRE4sTUFBTTs7MkZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUkvQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbnRlcmZhY2UgU2NyaXB0SXRlbSB7XHJcblx0c3JjOiBzdHJpbmc7XHJcblx0bG9hZGVkOiBib29sZWFuO1xyXG59XHJcbmludGVyZmFjZSBTY3JpcHRzIHtcclxuXHRba2V5OiBzdHJpbmddOiBTY3JpcHRJdGVtO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgU2NyaXB0TG9hZGVyU2VydmljZSB7XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXHJcblx0XHRASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50XHJcblx0KSB7XHJcblx0XHR0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG5cdHByaXZhdGUgX3NjcmlwdHM6IFNjcmlwdHMgPSB7fTtcclxuXHJcblx0bG9hZChzY3JpcHRzOiBzdHJpbmdbXSwgbG9hZE9uY2UgPSB0cnVlKTogUHJvbWlzZTxhbnk+IHtcclxuXHRcdGxldCBwcm9taXNlczogYW55W10gPSBbXTtcclxuXHRcdHNjcmlwdHMuZm9yRWFjaCgoc2NyaXB0KSA9PiBwcm9taXNlcy5wdXNoKHRoaXMubG9hZFNjcmlwdChzY3JpcHQsIGxvYWRPbmNlKSkpO1xyXG5cclxuXHRcdHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XHJcblx0fVxyXG5cclxuXHRyZW1vdmUoc2NyaXB0czogc3RyaW5nW10pIHtcclxuXHRcdHNjcmlwdHMuZm9yRWFjaCgoc3JjKSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy5fc2NyaXB0c1tzcmNdKSB7XHJcblx0XHRcdFx0Y29uc29sZS53YXJuKCdTY3JpcHQgc3JjPScgKyBzcmMgKyAnIGlzIG5vdCBsb2FkZWQnKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRjb25zdCBzY3JpcHRzID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7XHJcblxyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0aWYgKHNjcmlwdHNbaV0/LnNyYyA9PT0gc3JjKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzY3JpcHRzW2ldKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5fc2NyaXB0c1tzcmNdID0geyBzcmM6IHNyYywgbG9hZGVkOiBmYWxzZSB9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGxvYWRTY3JpcHQoc3JjOiBzdHJpbmcsIGxvYWRPbmNlOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLl9zY3JpcHRzW3NyY10/LmxvYWRlZCAmJiBsb2FkT25jZSkge1xyXG5cdFx0XHRcdHJlc29sdmUoeyBzcmM6IHNyYywgbG9hZGVkOiB0cnVlIH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCBzY3JpcHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG5cdFx0XHRcdFx0c2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuXHRcdFx0XHRcdHNjcmlwdC5zcmMgPSBzcmM7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIHNjcmlwdCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fc2NyaXB0c1tzcmNdID0geyBzcmM6IHNyYywgbG9hZGVkOiB0cnVlIH07XHJcblxyXG5cdFx0XHRcdFx0cmVzb2x2ZSh7IHNyYzogc3JjLCBsb2FkZWQ6IHRydWUgfSk7XHJcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
@@ -1,29 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { EventEmitter, Directive, Output } from '@angular/core';
3
-
4
- class InitEventDirective {
5
- constructor() {
6
- this.arilInit = new EventEmitter();
7
- }
8
- ngOnInit() {
9
- this.arilInit.emit();
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: InitEventDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: InitEventDirective, isStandalone: true, selector: "[arilInit]", outputs: { arilInit: "arilInit" }, ngImport: i0 }); }
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: InitEventDirective, decorators: [{
15
- type: Directive,
16
- args: [{
17
- standalone: true,
18
- selector: '[arilInit]'
19
- }]
20
- }], propDecorators: { arilInit: [{
21
- type: Output
22
- }] } });
23
-
24
- /**
25
- * Generated bundle index. Do not edit.
26
- */
27
-
28
- export { InitEventDirective };
29
- //# sourceMappingURL=aril-util-init-event.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aril-util-init-event.mjs","sources":["../../projects/aril/util/init-event/src/init-event.directive.ts","../../projects/aril/util/init-event/aril-util-init-event.ts"],"sourcesContent":["import { Directive, EventEmitter, OnInit, Output } from '@angular/core';\r\n\r\n@Directive({\r\n\tstandalone: true,\r\n\tselector: '[arilInit]'\r\n})\r\nexport class InitEventDirective implements OnInit {\r\n\t@Output() arilInit: EventEmitter<never> = new EventEmitter<never>();\r\n\r\n\tngOnInit() {\r\n\t\tthis.arilInit.emit();\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAMa,kBAAkB,CAAA;AAJ/B,IAAA,WAAA,GAAA;AAKW,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,YAAY,EAAS,CAAC;AAKpE,KAAA;IAHA,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACrB;8GALW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,YAAY;AACtB,iBAAA,CAAA;8BAEU,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;ACPR;;AAEG;;;;"}
@@ -1,14 +0,0 @@
1
- <ul class="layout-menu h-full flex-column">
2
- @for (item of isHostMode ? hostMenuItems() : menuService.menuItems(); track $index) {
3
- @if (item.separator) {
4
- <li class="menu-separator"></li>
5
- } @else {
6
- <li
7
- app-menuitem
8
- [item]="item"
9
- [index]="$index"
10
- [root]="true"
11
- [class.mt-auto]="item.label && item.label['en'] === 'Management'"></li>
12
- }
13
- }
14
- </ul>
@@ -1,350 +0,0 @@
1
- import { AnimationEvent, animate, state, style, transition, trigger } from '@angular/animations';
2
- import { NgClass } from '@angular/common';
3
- import { Component, ElementRef, HostBinding, Input, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';
4
- import { toSignal } from '@angular/core/rxjs-interop';
5
- import { NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';
6
-
7
- import { MenuItem } from 'primeng/api';
8
- import { DomHandler } from 'primeng/dom';
9
- import { RippleModule } from 'primeng/ripple';
10
- import { TooltipModule } from 'primeng/tooltip';
11
-
12
- import { TranslocoService } from '@ngneat/transloco';
13
- import { Subscription } from 'rxjs';
14
- import { filter } from 'rxjs/operators';
15
-
16
- import { PluginMenuItem } from 'aril/boot/config/apps';
17
-
18
- import { LayoutService } from '../../service/app.layout.service';
19
- import { AppMenuService } from '../../service/app.menu.service';
20
-
21
- @Component({
22
- standalone: true,
23
- selector: '[app-menuitem]',
24
- template: `
25
- <ng-container>
26
- @if (root) {
27
- <div class="layout-menuitem-root-text">
28
- {{ item.label[activeLang()!] }}
29
- </div>
30
- }
31
- @if (item.items?.length) {
32
- <a
33
- [ngClass]="{ 'active-root-menu-item': root && key == menuService.activeRootMenuItemKey() }"
34
- (click)="itemClick($event)"
35
- (mouseenter)="onMouseEnter()"
36
- tabindex="0"
37
- pRipple
38
- [pTooltip]="item.label[activeLang()!]"
39
- [tooltipDisabled]="!(isSlim && root && !active)">
40
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
41
- <span class="layout-menuitem-text">{{ item.label[activeLang()!] }}</span>
42
- @if (item.items) {
43
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
44
- }
45
- </a>
46
- } @else {
47
- <a
48
- [ngClass]="{ 'active-root-menu-item': root && key == menuService.activeRootMenuItemKey() }"
49
- (click)="itemClick($event)"
50
- (mouseenter)="onMouseEnter()"
51
- [routerLink]="item.routerLink"
52
- routerLinkActive="active-route"
53
- [routerLinkActiveOptions]="{
54
- paths: 'exact',
55
- queryParams: 'ignored',
56
- matrixParams: 'ignored',
57
- fragment: 'ignored'
58
- }"
59
- tabindex="0"
60
- pRipple
61
- [pTooltip]="item.label[activeLang()!]"
62
- [tooltipDisabled]="!(isSlim && root)">
63
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
64
-
65
- @if (item.label && item.label[activeLang()!]) {
66
- <span class="layout-menuitem-text">{{ item.label[activeLang()!] }}</span>
67
- }
68
- @if (item.items) {
69
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
70
- }
71
- </a>
72
- }
73
-
74
- @if (item.items) {
75
- <ul #submenu [@children]="submenuAnimation" (@children.done)="onSubmenuAnimated($event)">
76
- @for (child of item.items; track child; let i = $index) {
77
- <li app-menuitem [item]="child" [index]="i" [parentKey]="key"></li>
78
- }
79
- </ul>
80
- }
81
- </ng-container>
82
- `,
83
- imports: [NgClass, RouterLink, RouterLinkActive, TooltipModule, RippleModule],
84
- animations: [
85
- trigger('children', [
86
- state(
87
- 'collapsed',
88
- style({
89
- height: '0'
90
- })
91
- ),
92
- state(
93
- 'expanded',
94
- style({
95
- height: '*'
96
- })
97
- ),
98
- state(
99
- 'hidden',
100
- style({
101
- display: 'none'
102
- })
103
- ),
104
- state(
105
- 'visible',
106
- style({
107
- display: 'block'
108
- })
109
- ),
110
- transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
111
- ])
112
- ],
113
- styles: [
114
- '.active-root-menu-item { background-color: var(--primary-color); & > i,span { color: var(--primary-foreground) !important; } & > span { font-weight: 700; } }'
115
- ]
116
- })
117
- export class AppMenuItemComponent implements OnInit, OnDestroy {
118
- @Input() item!: PluginMenuItem;
119
-
120
- @Input() index!: number;
121
-
122
- @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;
123
-
124
- @Input() parentKey!: string;
125
-
126
- @ViewChild('submenu') submenu!: ElementRef;
127
-
128
- active = false;
129
-
130
- menuSourceSubscription: Subscription;
131
-
132
- menuResetSubscription: Subscription;
133
-
134
- key: string = '';
135
-
136
- activeLang = toSignal(this.translocoService.langChanges$);
137
-
138
- constructor(
139
- public layoutService: LayoutService,
140
- public router: Router,
141
- public menuService: AppMenuService,
142
- private readonly translocoService: TranslocoService
143
- ) {
144
- this.menuSourceSubscription = this.menuService.menuSource$.subscribe((value) => {
145
- Promise.resolve(null).then(() => {
146
- if (value.routeEvent) {
147
- this.active = value.key === this.key || value.key.startsWith(this.key + '-') ? true : false;
148
- } else {
149
- if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {
150
- this.active = false;
151
- }
152
- }
153
- });
154
- });
155
-
156
- this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {
157
- this.active = false;
158
- });
159
-
160
- this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((params: any) => {
161
- if (this.isSlimPlus || this.isSlim || this.isHorizontal) {
162
- if (!this.layoutService.mfeAppItemClicked()) this.active = false;
163
- } else {
164
- if (this.item.routerLink) {
165
- this.updateActiveStateFromRoute();
166
- }
167
- }
168
-
169
- if (
170
- this.item.routerLink === params.url ||
171
- this.item.routerLink === params.urlAfterRedirects ||
172
- (this.item.routerLink &&
173
- this.router.isActive(this.item.routerLink, {
174
- matrixParams: 'ignored',
175
- queryParams: 'ignored',
176
- fragment: 'ignored',
177
- paths: 'subset'
178
- }))
179
- ) {
180
- this.menuService.activeRootMenuItemKey.set(this.key.charAt(0));
181
- }
182
- });
183
- }
184
-
185
- ngOnInit() {
186
- this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
187
- if (!(this.isSlimPlus || this.isSlim || this.isHorizontal) && this.item.routerLink) {
188
- this.updateActiveStateFromRoute();
189
- }
190
- }
191
-
192
- ngAfterViewChecked() {
193
- if (
194
- this.root &&
195
- this.active &&
196
- this.layoutService.isDesktop() &&
197
- (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
198
- ) {
199
- this.calculatePosition(this.submenu?.nativeElement, this.submenu?.nativeElement.parentElement);
200
- }
201
- }
202
-
203
- updateActiveStateFromRoute() {
204
- let activeRoute = this.router.isActive(this.item.routerLink![0], {
205
- paths: 'exact',
206
- queryParams: 'ignored',
207
- matrixParams: 'ignored',
208
- fragment: 'ignored'
209
- });
210
-
211
- if (activeRoute) {
212
- this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });
213
- }
214
- }
215
-
216
- onSubmenuAnimated(event: AnimationEvent) {
217
- if (
218
- event.toState === 'visible' &&
219
- this.layoutService.isDesktop() &&
220
- (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
221
- ) {
222
- const el = <HTMLUListElement>event.element;
223
- const elParent = <HTMLUListElement>el.parentElement;
224
- this.calculatePosition(el, elParent);
225
- }
226
- }
227
-
228
- calculatePosition(overlay: HTMLElement, target: HTMLElement) {
229
- if (overlay) {
230
- const { left, top } = target.getBoundingClientRect();
231
- const [vWidth, vHeight] = [window.innerWidth, window.innerHeight];
232
- const [oWidth, oHeight] = [overlay.offsetWidth, overlay.offsetHeight];
233
- const scrollbarWidth = DomHandler.calculateScrollbarWidth();
234
- // reset
235
- overlay.style.top = '';
236
- overlay.style.left = '';
237
-
238
- if (this.layoutService.isHorizontal()) {
239
- const width = left + oWidth + scrollbarWidth;
240
- overlay.style.left = vWidth < width ? `${left - (width - vWidth)}px` : `${left}px`;
241
- } else if (this.layoutService.isSlim() || this.layoutService.isSlimPlus()) {
242
- const height = top + oHeight;
243
- overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;
244
- }
245
- }
246
- }
247
-
248
- itemClick(event: Event) {
249
- // avoid processing disabled items
250
- if (this.item.disabled) {
251
- event.preventDefault();
252
- return;
253
- }
254
-
255
- // navigate with hover
256
- if ((this.root && this.isSlim) || this.isHorizontal || this.isSlimPlus) {
257
- this.layoutService.state.menuHoverActive = !this.layoutService.state.menuHoverActive;
258
- }
259
-
260
- // execute command
261
- if (this.item.command) {
262
- this.item.command({ originalEvent: event, item: this.item as unknown as MenuItem });
263
- }
264
-
265
- // toggle active state
266
- if (this.item.items) {
267
- this.active = !this.active;
268
-
269
- if (this.root && this.active && (this.isSlim || this.isHorizontal || this.isSlimPlus)) {
270
- this.layoutService.onOverlaySubmenuOpen();
271
- }
272
- } else {
273
- if (this.layoutService.isMobile()) {
274
- this.layoutService.state.staticMenuMobileActive = false;
275
- }
276
-
277
- if (this.isSlim || this.isHorizontal || this.isSlimPlus) {
278
- this.menuService.reset();
279
- this.layoutService.state.menuHoverActive = false;
280
- }
281
- }
282
-
283
- this.menuService.onMenuStateChange({ key: this.key });
284
- }
285
-
286
- onMouseEnter() {
287
- // activate item on hover
288
- if ((<any>globalThis).isHostMode && !this.item.items?.length) return;
289
-
290
- if (this.root && (this.isSlim || this.isHorizontal || this.isSlimPlus) && this.layoutService.isDesktop()) {
291
- if (this.layoutService.state.menuHoverActive) {
292
- this.active = true;
293
- this.menuService.onMenuStateChange({ key: this.key });
294
- }
295
- }
296
- }
297
-
298
- get submenuAnimation() {
299
- if (
300
- this.layoutService.isDesktop() &&
301
- (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
302
- ) {
303
- return this.active ? 'visible' : 'hidden';
304
- } else
305
- return (
306
- this.root ? 'expanded'
307
- : this.active ? 'expanded'
308
- : 'collapsed'
309
- );
310
- }
311
-
312
- get isHorizontal() {
313
- return this.layoutService.isHorizontal();
314
- }
315
-
316
- get isSlim() {
317
- return this.layoutService.isSlim();
318
- }
319
-
320
- get isSlimPlus() {
321
- return this.layoutService.isSlimPlus();
322
- }
323
-
324
- @HostBinding('class.active-menuitem')
325
- get activeClass() {
326
- return this.active && !this.root;
327
- }
328
-
329
- ngOnDestroy() {
330
- if (this.menuSourceSubscription) {
331
- this.menuSourceSubscription.unsubscribe();
332
- }
333
-
334
- if (this.menuResetSubscription) {
335
- this.menuResetSubscription.unsubscribe();
336
- }
337
- }
338
- }
339
-
340
- @Component({
341
- standalone: true,
342
- selector: 'app-menu',
343
- imports: [AppMenuItemComponent],
344
- templateUrl: './app.menu.component.html'
345
- })
346
- export class AppMenuComponent {
347
- menuService = inject(AppMenuService);
348
- isHostMode = (<any>globalThis).isHostMode;
349
- hostMenuItems = (<any>globalThis).hostMenuItems;
350
- }
@@ -1,24 +0,0 @@
1
- <div class="layout-sidebar" (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
2
- <div class="sidebar-header">
3
- <!-- <a [routerLink]="['/']" class="app-logo">
4
- <svg
5
- width="21"
6
- height="22"
7
- viewBox="0 0 21 22"
8
- fill="none"
9
- xmlns="http://www.w3.org/2000/svg"
10
- class="app-logo-small">
11
- <path
12
- d="M10.4851 0L0 20.9465H3.53702L10.4856 6.07843L17.2944 20.9465H20.9715L10.4851 0Z"
13
- fill="var(--logo-color)" />
14
- <path d="M13.8399 15.793L16.2076 21.0019H11.7681L13.8399 15.793Z" fill="var(--logo-color)" />
15
- <path d="M9.04637 21.0019L6.67867 15.793L4.60693 21.0019H9.04637Z" fill="var(--logo-color)" />
16
- </svg>
17
- </a> -->
18
- <button class="layout-sidebar-anchor p-link z-2 mb-2" type="button" (click)="anchor()"></button>
19
- </div>
20
-
21
- <div #menuContainer class="layout-menu-container">
22
- <app-menu></app-menu>
23
- </div>
24
- </div>
@@ -1,44 +0,0 @@
1
- import { Component, ElementRef, ViewChild } from '@angular/core';
2
- import { RouterLink } from '@angular/router';
3
-
4
- import { LayoutService } from '../../service/app.layout.service';
5
- import { AppMenuComponent } from '../menu/app.menu.component';
6
-
7
- @Component({
8
- standalone: true,
9
- selector: 'app-sidebar',
10
- imports: [RouterLink, AppMenuComponent],
11
- templateUrl: './app.sidebar.component.html'
12
- })
13
- export class AppSidebarComponent {
14
- constructor(
15
- public layoutService: LayoutService,
16
- public el: ElementRef
17
- ) {}
18
-
19
- timeout: any = null;
20
-
21
- @ViewChild('menuContainer') menuContainer!: ElementRef;
22
-
23
- onMouseEnter() {
24
- if (!this.layoutService.state.anchored) {
25
- if (this.timeout) {
26
- clearTimeout(this.timeout);
27
- this.timeout = null;
28
- }
29
- this.layoutService.state.sidebarActive = true;
30
- }
31
- }
32
-
33
- onMouseLeave() {
34
- if (!this.layoutService.state.anchored) {
35
- if (!this.timeout) {
36
- this.timeout = setTimeout(() => (this.layoutService.state.sidebarActive = false), 300);
37
- }
38
- }
39
- }
40
-
41
- anchor() {
42
- this.layoutService.state.anchored = !this.layoutService.state.anchored;
43
- }
44
- }
@@ -1,14 +0,0 @@
1
- $primaryColor: #818cf8 !default;
2
- $primaryLightColor: #a5b4fc !default;
3
- $primaryLighterColor: #c7d2fe !default;
4
- $primaryLightestColor: rgba(129, 140, 248, 0.2) !default;
5
- $primaryTextColor: #030712 !default;
6
- $primary500: #6366f1 !default;
7
-
8
- $highlightBg: rgba(129, 140, 248, 0.16) !default;
9
- $highlightTextColor: rgba(255, 255, 255, 0.87) !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,14 +0,0 @@
1
- $primaryColor: #E0A35F !default;
2
- $primaryLightColor: #FFF7ED !default;
3
- $primaryDarkColor: #e09948 !default;
4
- $primaryDarkerColor: #e28e2d !default;
5
- $primaryTextColor: #ffffff !default;
6
- $primary500: #E0A35F !default;
7
-
8
- $highlightBg: #eff3ff !default;
9
- $highlightTextColor: $primaryDarkerColor !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,14 +0,0 @@
1
- $primaryColor: #fcd34d !default;
2
- $primaryLightColor: rgba(252, 211, 77, 0.5) !default;
3
- $primaryLighterColor: scale-color($primaryColor, $lightness: -5%) !default;
4
- $primaryLightestColor: scale-color($primaryColor, $lightness: -10%) !default;
5
- $primaryTextColor: #030712 !default;
6
- $primary500: #f59e0b !default;
7
-
8
- $highlightBg: rgba(252, 211, 77, 0.16) !default;
9
- $highlightTextColor: rgba(255, 255, 255, 0.87) !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,14 +0,0 @@
1
- $primaryColor: #F62F49 !default;
2
- $primaryLightColor: #f9e2e2 !default;
3
- $primaryDarkColor: #B91C1C !default;
4
- $primaryDarkerColor: #B91C1C !default;
5
- $primaryTextColor: #ffffff !default;
6
- $primary500: #F62F49 !default;
7
-
8
- $highlightBg: #eff3ff !default;
9
- $highlightTextColor: $primaryDarkerColor !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,14 +0,0 @@
1
- $primaryColor: #707AA0 !default;
2
- $primaryLightColor: #e7ebf9 !default;
3
- $primaryDarkColor: #636c8d !default;
4
- $primaryDarkerColor: #575e7a !default;
5
- $primaryTextColor: #ffffff !default;
6
- $primary500: #707aa0 !default;
7
-
8
- $highlightBg: #eff3ff !default;
9
- $highlightTextColor: $primaryColor !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,14 +0,0 @@
1
- $primaryColor: #3b82f6 !default;
2
- $primaryLightColor: #bfdbfe !default;
3
- $primaryDarkColor: #2563eb !default;
4
- $primaryDarkerColor: #1d4ed8 !default;
5
- $primaryTextColor: #ffffff !default;
6
- $primary500: #3b82f6 !default;
7
-
8
- $highlightBg: #eff3ff !default;
9
- $highlightTextColor: $primaryDarkerColor !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,14 +0,0 @@
1
- $primaryColor: #E0A35F !default;
2
- $primaryLightColor: #FFF7ED !default;
3
- $primaryDarkColor: #e09948 !default;
4
- $primaryDarkerColor: #e28e2d !default;
5
- $primaryTextColor: #ffffff !default;
6
- $primary500: #E0A35F !default;
7
-
8
- $highlightBg: #eff3ff !default;
9
- $highlightTextColor: $primaryDarkerColor !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,14 +0,0 @@
1
- $primaryColor: #f59e0b !default;
2
- $primaryLightColor: #fde68a !default;
3
- $primaryDarkColor: #d97706 !default;
4
- $primaryDarkerColor: #b45309 !default;
5
- $primaryTextColor: #ffffff !default;
6
- $primary500: #f59e0b !default;
7
-
8
- $highlightBg: #eff3ff !default;
9
- $highlightTextColor: $primaryDarkerColor !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
@@ -1,15 +0,0 @@
1
- $primaryColor: #F62F49 !default;
2
- $primaryLightColor: #f9e2e2 !default;
3
- $primaryDarkColor: #B91C1C !default;
4
- $primaryDarkerColor: #B91C1C !default;
5
- $primaryTextColor: #ffffff !default;
6
- $primary500: #f62f49 !default;
7
-
8
- $highlightBg: #eff3ff !default;
9
- $highlightTextColor: $primaryDarkerColor !default;
10
- $highlightFocusBg: rgba($primaryColor, 0.24) !default;
11
-
12
- @import '../_variables';
13
- @import '../../base/_components';
14
- @import '../_extensions';
15
-