@iapps/ng-dhis2-ui 1.0.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.
- package/README.md +7 -0
- package/esm2022/iapps-ng-dhis2-ui.mjs +5 -0
- package/esm2022/index.mjs +5 -0
- package/esm2022/lib/modules/app-shell/app-shell.component.mjs +33 -0
- package/esm2022/lib/modules/app-shell/app-shell.module.mjs +19 -0
- package/esm2022/lib/modules/app-shell/index.mjs +6 -0
- package/esm2022/lib/modules/button/button.component.mjs +55 -0
- package/esm2022/lib/modules/button/button.module.mjs +19 -0
- package/esm2022/lib/modules/button/index.mjs +6 -0
- package/esm2022/lib/modules/header-bar/header-bar.component.mjs +39 -0
- package/esm2022/lib/modules/header-bar/header-bar.module.mjs +19 -0
- package/esm2022/lib/modules/header-bar/index.mjs +6 -0
- package/esm2022/lib/modules/header-bar/models/header-bar-app.model.mjs +20 -0
- package/esm2022/lib/modules/header-bar/models/header-bar-data.model.mjs +46 -0
- package/esm2022/lib/modules/header-bar/models/header-bar-notification.model.mjs +11 -0
- package/esm2022/lib/modules/header-bar/models/index.mjs +6 -0
- package/esm2022/lib/modules/header-bar/utils/apps.mjs +221 -0
- package/esm2022/lib/modules/header-bar/utils/debug-info/debug-info-menu-item.mjs +51 -0
- package/esm2022/lib/modules/header-bar/utils/debug-info/debug-info-modal.mjs +30 -0
- package/esm2022/lib/modules/header-bar/utils/debug-info/debug-info-table.mjs +39 -0
- package/esm2022/lib/modules/header-bar/utils/debug-info/use-debug-info.mjs +12 -0
- package/esm2022/lib/modules/header-bar/utils/header-bar-context.mjs +17 -0
- package/esm2022/lib/modules/header-bar/utils/header-bar.mjs +56 -0
- package/esm2022/lib/modules/header-bar/utils/join-path.mjs +5 -0
- package/esm2022/lib/modules/header-bar/utils/logo-image.mjs +52 -0
- package/esm2022/lib/modules/header-bar/utils/logo.mjs +35 -0
- package/esm2022/lib/modules/header-bar/utils/notification-icon.mjs +76 -0
- package/esm2022/lib/modules/header-bar/utils/notifications.mjs +35 -0
- package/esm2022/lib/modules/header-bar/utils/profile/use-on-doc-click.mjs +21 -0
- package/esm2022/lib/modules/header-bar/utils/profile-menu/index.mjs +2 -0
- package/esm2022/lib/modules/header-bar/utils/profile-menu/profile-header.mjs +95 -0
- package/esm2022/lib/modules/header-bar/utils/profile-menu/profile-menu.mjs +101 -0
- package/esm2022/lib/modules/header-bar/utils/profile-menu/update-notification.mjs +54 -0
- package/esm2022/lib/modules/header-bar/utils/profile.mjs +58 -0
- package/esm2022/lib/modules/header-bar/utils/title.mjs +22 -0
- package/esm2022/lib/ng-dhis2-ui.module.mjs +15 -0
- package/esm2022/lib/shared/components/index.mjs +7 -0
- package/esm2022/lib/shared/components/react-component-wrapper/react-wrapper.component.mjs +53 -0
- package/esm2022/lib/shared/shared.module.mjs +18 -0
- package/fesm2022/iapps-ng-dhis2-ui.mjs +1239 -0
- package/fesm2022/iapps-ng-dhis2-ui.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/lib/modules/app-shell/app-shell.component.d.ts +8 -0
- package/lib/modules/app-shell/app-shell.module.d.ts +9 -0
- package/lib/modules/app-shell/index.d.ts +2 -0
- package/lib/modules/button/button.component.d.ts +19 -0
- package/lib/modules/button/button.module.d.ts +9 -0
- package/lib/modules/button/index.d.ts +2 -0
- package/lib/modules/header-bar/header-bar.component.d.ts +14 -0
- package/lib/modules/header-bar/header-bar.module.d.ts +9 -0
- package/lib/modules/header-bar/index.d.ts +2 -0
- package/lib/modules/header-bar/models/header-bar-app.model.d.ts +10 -0
- package/lib/modules/header-bar/models/header-bar-data.model.d.ts +16 -0
- package/lib/modules/header-bar/models/header-bar-notification.model.d.ts +5 -0
- package/lib/modules/header-bar/models/index.d.ts +2 -0
- package/lib/modules/header-bar/utils/apps.d.ts +16 -0
- package/lib/modules/header-bar/utils/debug-info/debug-info-menu-item.d.ts +15 -0
- package/lib/modules/header-bar/utils/debug-info/debug-info-modal.d.ts +8 -0
- package/lib/modules/header-bar/utils/debug-info/debug-info-table.d.ts +8 -0
- package/lib/modules/header-bar/utils/debug-info/use-debug-info.d.ts +7 -0
- package/lib/modules/header-bar/utils/header-bar-context.d.ts +14 -0
- package/lib/modules/header-bar/utils/header-bar.d.ts +19 -0
- package/lib/modules/header-bar/utils/join-path.d.ts +1 -0
- package/lib/modules/header-bar/utils/logo-image.d.ts +8 -0
- package/lib/modules/header-bar/utils/logo.d.ts +12 -0
- package/lib/modules/header-bar/utils/notification-icon.d.ts +21 -0
- package/lib/modules/header-bar/utils/notifications.d.ts +16 -0
- package/lib/modules/header-bar/utils/profile/use-on-doc-click.d.ts +1 -0
- package/lib/modules/header-bar/utils/profile-menu/index.d.ts +1 -0
- package/lib/modules/header-bar/utils/profile-menu/profile-header.d.ts +16 -0
- package/lib/modules/header-bar/utils/profile-menu/profile-menu.d.ts +13 -0
- package/lib/modules/header-bar/utils/profile-menu/update-notification.d.ts +14 -0
- package/lib/modules/header-bar/utils/profile.d.ts +18 -0
- package/lib/modules/header-bar/utils/title.d.ts +15 -0
- package/lib/ng-dhis2-ui.module.d.ts +7 -0
- package/lib/shared/components/index.d.ts +3 -0
- package/lib/shared/components/react-component-wrapper/react-wrapper.component.d.ts +19 -0
- package/lib/shared/shared.module.d.ts +7 -0
- package/package.json +38 -0
package/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFwcHMtbmctZGhpczItdWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvaWFwcHMtbmctZGhpczItdWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './lib/ng-dhis2-ui.module';
|
|
2
|
+
export * from './lib/modules/header-bar';
|
|
3
|
+
export * from './lib/modules/button';
|
|
4
|
+
export * from './lib/modules/app-shell';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL25nLWRoaXMyLXVpLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL2hlYWRlci1iYXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9hcHAtc2hlbGwnO1xuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { ReactWrapperComponent } from '../../shared/components';
|
|
3
|
+
import AppAdapter from '@dhis2/app-adapter';
|
|
4
|
+
import { Layer, layers, CenteredContent, CircularLoader } from '@dhis2/ui';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class AppShellComponent extends ReactWrapperComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.appConfig = {
|
|
11
|
+
// url: process.env.REACT_APP_DHIS2_BASE_URL,
|
|
12
|
+
// appName: process.env.REACT_APP_DHIS2_APP_NAME || '',
|
|
13
|
+
// appVersion: process.env.REACT_APP_DHIS2_APP_VERSION || '',
|
|
14
|
+
// apiVersion: parseInt(process.env.REACT_APP_DHIS2_API_VERSION),
|
|
15
|
+
// pwaEnabled: process.env.REACT_APP_DHIS2_APP_PWA_ENABLED === 'true',
|
|
16
|
+
// plugin: process.env.REACT_APP_DHIS2_APP_PLUGIN === 'true',
|
|
17
|
+
};
|
|
18
|
+
this.component = React.createElement(AppAdapter, { ...this.appConfig },
|
|
19
|
+
React.createElement(React.Suspense, { fallback: React.createElement(Layer, { level: layers.alert },
|
|
20
|
+
React.createElement(CenteredContent, null,
|
|
21
|
+
React.createElement(CircularLoader, null))) }));
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppShellComponent, selector: "ng-dhis2-ui-app-shell", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{
|
|
29
|
+
selector: 'ng-dhis2-ui-app-shell',
|
|
30
|
+
template: '<ng-content></ng-content>',
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLFVBQVUsTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFNMUIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHFCQUFxQjtJQUo1RDs7UUFLRyxjQUFTLEdBQUc7UUFDWCw2Q0FBNkM7UUFDN0MsdURBQXVEO1FBQ3ZELDZEQUE2RDtRQUM3RCxpRUFBaUU7UUFDakUsc0VBQXNFO1FBQ3RFLDZEQUE2RDtTQUNoRSxDQUFBO1FBQ1UsY0FBUyxHQUFHLG9CQUFDLFVBQVUsT0FBSyxJQUFJLENBQUMsU0FBUztZQUNuRCxvQkFBQyxLQUFLLENBQUMsUUFBUSxJQUNYLFFBQVEsRUFDSixvQkFBQyxLQUFLLElBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUN0QixvQkFBQyxlQUFlO3dCQUNaLG9CQUFDLGNBQWMsT0FBRyxDQUNKLENBQ2QsR0FJQyxDQUNDLENBQUE7S0FDbkI7K0dBdEJZLGlCQUFpQjttR0FBakIsaUJBQWlCLG9GQUZsQiwyQkFBMkI7OzRGQUUxQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0V3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCBBcHBBZGFwdGVyIGZyb20gJ0BkaGlzMi9hcHAtYWRhcHRlcidcbmltcG9ydCB7IExheWVyLCBsYXllcnMsIENlbnRlcmVkQ29udGVudCwgQ2lyY3VsYXJMb2FkZXIgfSBmcm9tICdAZGhpczIvdWknXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1kaGlzMi11aS1hcHAtc2hlbGwnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBTaGVsbENvbXBvbmVudCBleHRlbmRzIFJlYWN0V3JhcHBlckNvbXBvbmVudCB7XG4gICBhcHBDb25maWcgPSB7XG4gICAgLy8gdXJsOiBwcm9jZXNzLmVudi5SRUFDVF9BUFBfREhJUzJfQkFTRV9VUkwsXG4gICAgLy8gYXBwTmFtZTogcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RISVMyX0FQUF9OQU1FIHx8ICcnLFxuICAgIC8vIGFwcFZlcnNpb246IHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ESElTMl9BUFBfVkVSU0lPTiB8fCAnJyxcbiAgICAvLyBhcGlWZXJzaW9uOiBwYXJzZUludChwcm9jZXNzLmVudi5SRUFDVF9BUFBfREhJUzJfQVBJX1ZFUlNJT04pLFxuICAgIC8vIHB3YUVuYWJsZWQ6IHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ESElTMl9BUFBfUFdBX0VOQUJMRUQgPT09ICd0cnVlJyxcbiAgICAvLyBwbHVnaW46IHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ESElTMl9BUFBfUExVR0lOID09PSAndHJ1ZScsXG59XG4gIG92ZXJyaWRlIGNvbXBvbmVudCA9IDxBcHBBZGFwdGVyIHsuLi50aGlzLmFwcENvbmZpZ30+XG4gIDxSZWFjdC5TdXNwZW5zZVxuICAgICAgZmFsbGJhY2s9e1xuICAgICAgICAgIDxMYXllciBsZXZlbD17bGF5ZXJzLmFsZXJ0fT5cbiAgICAgICAgICAgICAgPENlbnRlcmVkQ29udGVudD5cbiAgICAgICAgICAgICAgICAgIDxDaXJjdWxhckxvYWRlciAvPlxuICAgICAgICAgICAgICA8L0NlbnRlcmVkQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyPlxuICAgICAgfVxuICA+XG4gICAgICB7LyogPEQyQXBwIGNvbmZpZz17YXBwQ29uZmlnfSAvPiAqL31cbiAgPC9SZWFjdC5TdXNwZW5zZT5cbjwvQXBwQWRhcHRlcj4gYXMgYW55XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { SharedDhis2UiModule } from '../../shared/shared.module';
|
|
4
|
+
import { AppShellComponent } from './app-shell.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AppShellModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, declarations: [AppShellComponent], imports: [CommonModule, SharedDhis2UiModule], exports: [AppShellComponent] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, imports: [CommonModule, SharedDhis2UiModule] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppShellModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [AppShellComponent],
|
|
15
|
+
imports: [CommonModule, SharedDhis2UiModule],
|
|
16
|
+
exports: [AppShellComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9hcHAtc2hlbGwvYXBwLXNoZWxsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPMUQsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLGlCQUpWLGlCQUFpQixhQUN0QixZQUFZLEVBQUUsbUJBQW1CLGFBQ2pDLGlCQUFpQjtnSEFFaEIsY0FBYyxZQUhmLFlBQVksRUFBRSxtQkFBbUI7OzRGQUdoQyxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkRGhpczJVaU1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEFwcFNoZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAtc2hlbGwuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQXBwU2hlbGxDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWREaGlzMlVpTW9kdWxlXSxcbiAgZXhwb3J0czogW0FwcFNoZWxsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwU2hlbGxNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
export * from './app-shell.component';
|
|
5
|
+
export * from './app-shell.module';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvYXBwLXNoZWxsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDIzIFVEU00gREhJUzIgTGFiLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGVcbi8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS5cbmV4cG9ydCAqIGZyb20gJy4vYXBwLXNoZWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1zaGVsbC5tb2R1bGUnO1xuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Button } from '@dhis2/ui';
|
|
3
|
+
import { ReactWrapperComponent } from '../../shared/components';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ButtonComponent extends ReactWrapperComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.buttonClick = new EventEmitter();
|
|
9
|
+
this.props = {
|
|
10
|
+
onClick: (e) => {
|
|
11
|
+
this.onButtonClick(e);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
this.component = Button;
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
this.props = {
|
|
18
|
+
...this.props,
|
|
19
|
+
primary: this.primary,
|
|
20
|
+
secondary: this.secondary,
|
|
21
|
+
destructive: this.destructive,
|
|
22
|
+
small: this.small,
|
|
23
|
+
large: this.large,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
onButtonClick(event) {
|
|
27
|
+
this.buttonClick.emit(event);
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "ng-dhis2-ui-button", inputs: { label: "label", primary: "primary", secondary: "secondary", destructive: "destructive", disabled: "disabled", small: "small", large: "large" }, outputs: { buttonClick: "buttonClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{
|
|
35
|
+
selector: 'ng-dhis2-ui-button',
|
|
36
|
+
template: '<ng-content></ng-content>',
|
|
37
|
+
}]
|
|
38
|
+
}], propDecorators: { label: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], primary: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], secondary: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], destructive: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], disabled: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], small: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], large: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], buttonClick: [{
|
|
53
|
+
type: Output
|
|
54
|
+
}] } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU9oRSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxxQkFBcUI7SUFMMUQ7O1FBY1ksZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVyRCxVQUFLLEdBQTRCO1lBQ3hDLE9BQU8sRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7U0FDRixDQUFDO1FBRU8sY0FBUyxHQUFHLE1BQU0sQ0FBQztLQWlCN0I7SUFkQyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0FqQ1UsZUFBZTttR0FBZixlQUFlLG9SQUhoQiwyQkFBMkI7OzRGQUcxQixlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSwyQkFBMkI7aUJBRXRDOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnQGRoaXMyL3VpJztcbmltcG9ydCB7IFJlYWN0V3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZGhpczItdWktYnV0dG9uJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcblxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBSZWFjdFdyYXBwZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcbiAgQElucHV0KCkgcHJpbWFyeT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNlY29uZGFyeT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRlc3RydWN0aXZlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBzbWFsbD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxhcmdlPzogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG92ZXJyaWRlIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBvbkNsaWNrOiAoZTogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQnV0dG9uQ2xpY2soZSk7XG4gICAgfSxcbiAgfTtcblxuICBvdmVycmlkZSBjb21wb25lbnQgPSBCdXR0b247XG5cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByb3BzID0ge1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIHByaW1hcnk6IHRoaXMucHJpbWFyeSxcbiAgICAgIHNlY29uZGFyeTogdGhpcy5zZWNvbmRhcnksXG4gICAgICBkZXN0cnVjdGl2ZTogdGhpcy5kZXN0cnVjdGl2ZSxcbiAgICAgIHNtYWxsOiB0aGlzLnNtYWxsLFxuICAgICAgbGFyZ2U6IHRoaXMubGFyZ2UsXG4gICAgfTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { SharedDhis2UiModule } from '../../shared/shared.module';
|
|
4
|
+
import { ButtonComponent } from './button.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class ButtonModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ButtonModule, declarations: [ButtonComponent], imports: [CommonModule, SharedDhis2UiModule], exports: [ButtonComponent] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonModule, imports: [CommonModule, SharedDhis2UiModule] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [ButtonComponent],
|
|
15
|
+
exports: [ButtonComponent],
|
|
16
|
+
imports: [CommonModule, SharedDhis2UiModule],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9idXR0b24vYnV0dG9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBT3JELE1BQU0sT0FBTyxZQUFZOytHQUFaLFlBQVk7Z0hBQVosWUFBWSxpQkFKUixlQUFlLGFBRXBCLFlBQVksRUFBRSxtQkFBbUIsYUFEakMsZUFBZTtnSEFHZCxZQUFZLFlBRmIsWUFBWSxFQUFFLG1CQUFtQjs7NEZBRWhDLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUMvQixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzFCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNoYXJlZERoaXMyVWlNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtCdXR0b25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbQnV0dG9uQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkRGhpczJVaU1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbk1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
export * from './button.module';
|
|
5
|
+
export * from './button.component';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvYnV0dG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDIzIFVEU00gREhJUzIgTGFiLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGVcbi8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS5cbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Component, ElementRef } from '@angular/core';
|
|
2
|
+
import { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';
|
|
3
|
+
import { firstValueFrom } from 'rxjs';
|
|
4
|
+
import { HeaderBarData } from './models';
|
|
5
|
+
import { ReactWrapperComponent } from '../../shared/components';
|
|
6
|
+
import { DataProvider } from '@dhis2/app-runtime';
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import * as ReactDOM from 'react-dom/client';
|
|
9
|
+
import { HeaderBar } from './utils/header-bar';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@iapps/ngx-dhis2-http-client";
|
|
12
|
+
import * as i2 from "@angular/common";
|
|
13
|
+
export class HeaderBarComponent extends ReactWrapperComponent {
|
|
14
|
+
constructor(elementRef, httpClient) {
|
|
15
|
+
super(elementRef);
|
|
16
|
+
this.httpClient = httpClient;
|
|
17
|
+
}
|
|
18
|
+
async ngAfterViewInit() {
|
|
19
|
+
if (!this.elementRef)
|
|
20
|
+
throw new Error('No element ref');
|
|
21
|
+
this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);
|
|
22
|
+
const manifest = await firstValueFrom(this.httpClient.manifest());
|
|
23
|
+
const data = await firstValueFrom(new HeaderBarData(this.httpClient).get());
|
|
24
|
+
this.component = data
|
|
25
|
+
? () => (React.createElement(DataProvider, null, React.createElement(HeaderBar, { appName: manifest?.name, data: data })))
|
|
26
|
+
: () => React.createElement("div", null, "Something went wrong");
|
|
27
|
+
this.render();
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderBarComponent, deps: [{ token: i0.ElementRef }, { token: i1.NgxDhis2HttpClientService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HeaderBarComponent, selector: "ng-dhis2-ui-header-bar", usesInheritance: true, ngImport: i0, template: `<ng-container *ngIf="data$ | async as data"> </ng-container>`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderBarComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{
|
|
35
|
+
selector: 'ng-dhis2-ui-header-bar',
|
|
36
|
+
template: `<ng-container *ngIf="data$ | async as data"> </ng-container>`,
|
|
37
|
+
}]
|
|
38
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgxDhis2HttpClientService }]; } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci9oZWFkZXItYmFyLmNvbXBvbmVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekUsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxLQUFLLFFBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFNL0MsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHFCQUFxQjtJQUczRCxZQUNFLFVBQW1DLEVBQzNCLFVBQXFDO1FBRTdDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUZWLGVBQVUsR0FBVixVQUFVLENBQTJCO0lBRy9DLENBQUM7SUFFUSxLQUFLLENBQUMsZUFBZTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSTtZQUNuQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FDSixvQkFBQyxZQUFZLFFBQ1Ysb0JBQUMsU0FBUyxJQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUksQ0FDdEMsQ0FDaEI7WUFDSCxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsd0RBQStCLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7K0dBeEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHFGQUZuQiw4REFBOEQ7OzRGQUU3RCxrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFLDhEQUE4RDtpQkFDekUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4RGhpczJIdHRwQ2xpZW50U2VydmljZSB9IGZyb20gJ0BpYXBwcy9uZ3gtZGhpczItaHR0cC1jbGllbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEhlYWRlckJhckRhdGEgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBSZWFjdFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEYXRhUHJvdmlkZXIgfSBmcm9tICdAZGhpczIvYXBwLXJ1bnRpbWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IHsgSGVhZGVyQmFyIH0gZnJvbSAnLi91dGlscy9oZWFkZXItYmFyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZGhpczItdWktaGVhZGVyLWJhcicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPiA8L25nLWNvbnRhaW5lcj5gLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJCYXJDb21wb25lbnQgZXh0ZW5kcyBSZWFjdFdyYXBwZXJDb21wb25lbnQge1xuICBkYXRhJCE6IE9ic2VydmFibGU8SGVhZGVyQmFyRGF0YSB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogTmd4RGhpczJIdHRwQ2xpZW50U2VydmljZVxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudFJlZikgdGhyb3cgbmV3IEVycm9yKCdObyBlbGVtZW50IHJlZicpO1xuICAgIHRoaXMucmVhY3REb21Sb290ID0gUmVhY3RET00uY3JlYXRlUm9vdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQubWFuaWZlc3QoKSk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKG5ldyBIZWFkZXJCYXJEYXRhKHRoaXMuaHR0cENsaWVudCkuZ2V0KCkpO1xuXG4gICAgdGhpcy5jb21wb25lbnQgPSBkYXRhXG4gICAgICA/ICgpID0+IChcbiAgICAgICAgICA8RGF0YVByb3ZpZGVyPlxuICAgICAgICAgICAgezxIZWFkZXJCYXIgYXBwTmFtZT17bWFuaWZlc3Q/Lm5hbWV9IGRhdGE9e2RhdGF9IC8+fVxuICAgICAgICAgIDwvRGF0YVByb3ZpZGVyPlxuICAgICAgICApXG4gICAgICA6ICgpID0+IDxkaXY+U29tZXRoaW5nIHdlbnQgd3Jvbmc8L2Rpdj47XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { SharedDhis2UiModule } from '../../shared/shared.module';
|
|
4
|
+
import { HeaderBarComponent } from './header-bar.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class HeaderBarModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: HeaderBarModule, declarations: [HeaderBarComponent], imports: [CommonModule, SharedDhis2UiModule], exports: [HeaderBarComponent] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderBarModule, imports: [CommonModule, SharedDhis2UiModule] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderBarModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [CommonModule, SharedDhis2UiModule],
|
|
15
|
+
declarations: [HeaderBarComponent],
|
|
16
|
+
exports: [HeaderBarComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci9oZWFkZXItYmFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFPNUQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLGlCQUhYLGtCQUFrQixhQUR2QixZQUFZLEVBQUUsbUJBQW1CLGFBRWpDLGtCQUFrQjtnSEFFakIsZUFBZSxZQUpoQixZQUFZLEVBQUUsbUJBQW1COzs0RkFJaEMsZUFBZTtrQkFMM0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7b0JBQzVDLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNoYXJlZERoaXMyVWlNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBIZWFkZXJCYXJDb21wb25lbnQgfSBmcm9tICcuL2hlYWRlci1iYXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkRGhpczJVaU1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0hlYWRlckJhckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtIZWFkZXJCYXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJCYXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
export * from './header-bar.module';
|
|
5
|
+
export * from './header-bar.component';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQscURBQXFEO0FBQ3JELGlEQUFpRDtBQUNqRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyMyBVRFNNIERISVMyIExhYi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlXG4vLyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuXG5leHBvcnQgKiBmcm9tICcuL2hlYWRlci1iYXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vaGVhZGVyLWJhci5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
export class HeaderBarApp {
|
|
5
|
+
constructor(module) {
|
|
6
|
+
this.name = module['name'];
|
|
7
|
+
this.namespace = module['namespace'];
|
|
8
|
+
this.defaultAction = this.getPath(module['defaultAction']);
|
|
9
|
+
this.icon = this.getPath(module['icon']);
|
|
10
|
+
this.displayName = module['displayName'];
|
|
11
|
+
this.description = module['description'];
|
|
12
|
+
}
|
|
13
|
+
getPath(item) {
|
|
14
|
+
if (item?.startsWith('../')) {
|
|
15
|
+
return '../../' + item;
|
|
16
|
+
}
|
|
17
|
+
return item;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhci1hcHAubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci9tb2RlbHMvaGVhZGVyLWJhci1hcHAubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFDakQsTUFBTSxPQUFPLFlBQVk7SUFRdkIsWUFBWSxNQUErQjtRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBVyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQVcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBVyxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBVyxDQUFDO0lBQ3JELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyMyBVRFNNIERISVMyIExhYi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlXG4vLyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuXG5leHBvcnQgY2xhc3MgSGVhZGVyQmFyQXBwIHtcbiAgbmFtZSE6IHN0cmluZztcbiAgbmFtZXNwYWNlITogc3RyaW5nO1xuICBkZWZhdWx0QWN0aW9uITogc3RyaW5nO1xuICBkaXNwbGF5TmFtZSE6IHN0cmluZztcbiAgaWNvbiE6IHN0cmluZztcbiAgZGVzY3JpcHRpb24hOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobW9kdWxlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHRoaXMubmFtZSA9IG1vZHVsZVsnbmFtZSddIGFzIHN0cmluZztcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG1vZHVsZVsnbmFtZXNwYWNlJ10gYXMgc3RyaW5nO1xuICAgIHRoaXMuZGVmYXVsdEFjdGlvbiA9IHRoaXMuZ2V0UGF0aChtb2R1bGVbJ2RlZmF1bHRBY3Rpb24nXSBhcyBzdHJpbmcpO1xuICAgIHRoaXMuaWNvbiA9IHRoaXMuZ2V0UGF0aChtb2R1bGVbJ2ljb24nXSBhcyBzdHJpbmcpO1xuICAgIHRoaXMuZGlzcGxheU5hbWUgPSBtb2R1bGVbJ2Rpc3BsYXlOYW1lJ10gYXMgc3RyaW5nO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBtb2R1bGVbJ2Rlc2NyaXB0aW9uJ10gYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0UGF0aChpdGVtOiBzdHJpbmcpIHtcbiAgICBpZiAoaXRlbT8uc3RhcnRzV2l0aCgnLi4vJykpIHtcbiAgICAgIHJldHVybiAnLi4vLi4vJyArIGl0ZW07XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
import { catchError, map, of, zip } from 'rxjs';
|
|
5
|
+
import { HeaderBarApp } from './header-bar-app.model';
|
|
6
|
+
import { HeaderBarNotification } from './header-bar-notification.model';
|
|
7
|
+
export class HeaderBarData {
|
|
8
|
+
constructor(httpClient) {
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
}
|
|
11
|
+
getApps() {
|
|
12
|
+
return this.httpClient
|
|
13
|
+
.get('dhis-web-commons/menu/getModules.action', {
|
|
14
|
+
useRootUrl: true,
|
|
15
|
+
})
|
|
16
|
+
.pipe(catchError(() => of({
|
|
17
|
+
modules: [],
|
|
18
|
+
})), map((result) => {
|
|
19
|
+
return (result?.modules || [])
|
|
20
|
+
.map((module) => new HeaderBarApp(module))
|
|
21
|
+
.filter((headerBarApp) => headerBarApp);
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
getNotifications() {
|
|
25
|
+
return this.httpClient
|
|
26
|
+
.get('me/dashboard')
|
|
27
|
+
.pipe(map((notifications) => notifications ? new HeaderBarNotification(notifications) : null));
|
|
28
|
+
}
|
|
29
|
+
get() {
|
|
30
|
+
return zip(this.getApps(), this.httpClient.get('systemSettings/helpPageLink'), this.httpClient.get('me/dashboard'), this.httpClient.get('systemSettings/applicationTitle'), this.httpClient.get('me.json?fields=authorities,avatar,email,name,settings')).pipe(map((response) => {
|
|
31
|
+
if (response) {
|
|
32
|
+
const [apps, help, notifications, title, user] = response;
|
|
33
|
+
this.apps = apps;
|
|
34
|
+
this.help = help;
|
|
35
|
+
this.notifications = notifications;
|
|
36
|
+
this.title = title;
|
|
37
|
+
this.user = user;
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}), catchError(() => {
|
|
42
|
+
return of(null);
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhci1kYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbmctZGhpczItdWkvc3JjL2xpYi9tb2R1bGVzL2hlYWRlci1iYXIvbW9kZWxzL2hlYWRlci1iYXItZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQscURBQXFEO0FBQ3JELGlEQUFpRDtBQUdqRCxPQUFPLEVBQWMsVUFBVSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV4RSxNQUFNLE9BQU8sYUFBYTtJQU94QixZQUFvQixVQUFxQztRQUFyQyxlQUFVLEdBQVYsVUFBVSxDQUEyQjtJQUFHLENBQUM7SUFFN0QsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsR0FBRyxDQUFDLHlDQUF5QyxFQUFFO1lBQzlDLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNkLEVBQUUsQ0FBQztZQUNELE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUNILEVBQ0QsR0FBRyxDQUFDLENBQUMsTUFBOEMsRUFBRSxFQUFFO1lBQ3JELE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztpQkFDM0IsR0FBRyxDQUFDLENBQUMsTUFBK0IsRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2xFLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLEdBQUcsQ0FBQyxjQUFjLENBQUM7YUFDbkIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGFBQXFDLEVBQUUsRUFBRSxDQUM1QyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEUsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLEdBQUcsQ0FDUixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsRUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLEVBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUNqQix1REFBdUQsQ0FDeEQsQ0FDRixDQUFDLElBQUksQ0FDSixHQUFHLENBQ0QsQ0FBQyxRQUFnRSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7Z0JBQzFELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBZSxDQUFDO2dCQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFFakIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUNGLEVBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyMyBVRFNNIERISVMyIExhYi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlXG4vLyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuXG5cbmltcG9ydCB7IE5neERoaXMySHR0cENsaWVudFNlcnZpY2UgfSBmcm9tICdAaWFwcHMvbmd4LWRoaXMyLWh0dHAtY2xpZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSGVhZGVyQmFyQXBwIH0gZnJvbSAnLi9oZWFkZXItYmFyLWFwcC5tb2RlbCc7XG5pbXBvcnQgeyBIZWFkZXJCYXJOb3RpZmljYXRpb24gfSBmcm9tICcuL2hlYWRlci1iYXItbm90aWZpY2F0aW9uLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEhlYWRlckJhckRhdGEge1xuICBhcHBzITogSGVhZGVyQmFyQXBwW107XG4gIHRpdGxlITogc3RyaW5nO1xuICBoZWxwOiBhbnk7XG4gIG5vdGlmaWNhdGlvbnMhOiBIZWFkZXJCYXJOb3RpZmljYXRpb247XG4gIHVzZXIhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IE5neERoaXMySHR0cENsaWVudFNlcnZpY2UpIHt9XG5cbiAgZ2V0QXBwcygpOiBPYnNlcnZhYmxlPEhlYWRlckJhckFwcFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLmdldCgnZGhpcy13ZWItY29tbW9ucy9tZW51L2dldE1vZHVsZXMuYWN0aW9uJywge1xuICAgICAgICB1c2VSb290VXJsOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+XG4gICAgICAgICAgb2Yoe1xuICAgICAgICAgICAgbW9kdWxlczogW10sXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChyZXN1bHQ6IHsgbW9kdWxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChyZXN1bHQ/Lm1vZHVsZXMgfHwgW10pXG4gICAgICAgICAgICAubWFwKChtb2R1bGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBuZXcgSGVhZGVyQmFyQXBwKG1vZHVsZSkpXG4gICAgICAgICAgICAuZmlsdGVyKChoZWFkZXJCYXJBcHApID0+IGhlYWRlckJhckFwcCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9ucygpOiBPYnNlcnZhYmxlPEhlYWRlckJhck5vdGlmaWNhdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAuZ2V0KCdtZS9kYXNoYm9hcmQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobm90aWZpY2F0aW9uczogUmVjb3JkPHN0cmluZywgbnVtYmVyPikgPT5cbiAgICAgICAgICBub3RpZmljYXRpb25zID8gbmV3IEhlYWRlckJhck5vdGlmaWNhdGlvbihub3RpZmljYXRpb25zKSA6IG51bGxcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPEhlYWRlckJhckRhdGEgfCBudWxsPiB7XG4gICAgcmV0dXJuIHppcChcbiAgICAgIHRoaXMuZ2V0QXBwcygpLFxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCgnc3lzdGVtU2V0dGluZ3MvaGVscFBhZ2VMaW5rJyksXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KCdtZS9kYXNoYm9hcmQnKSxcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJ3N5c3RlbVNldHRpbmdzL2FwcGxpY2F0aW9uVGl0bGUnKSxcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICAgICdtZS5qc29uP2ZpZWxkcz1hdXRob3JpdGllcyxhdmF0YXIsZW1haWwsbmFtZSxzZXR0aW5ncydcbiAgICAgIClcbiAgICApLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChyZXNwb25zZTogW0hlYWRlckJhckFwcFtdLCBhbnksIEhlYWRlckJhck5vdGlmaWNhdGlvbiwgYW55LCBhbnldKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zdCBbYXBwcywgaGVscCwgbm90aWZpY2F0aW9ucywgdGl0bGUsIHVzZXJdID0gcmVzcG9uc2U7XG4gICAgICAgICAgICB0aGlzLmFwcHMgPSBhcHBzO1xuICAgICAgICAgICAgdGhpcy5oZWxwID0gaGVscDtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGUgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdGhpcy51c2VyID0gdXNlcjtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
export class HeaderBarNotification {
|
|
5
|
+
constructor(notification) {
|
|
6
|
+
this.unreadInterpretations = notification['unreadInterpretations'];
|
|
7
|
+
this.unreadMessageConversations =
|
|
8
|
+
notification['unreadMessageConversations'];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhci1ub3RpZmljYXRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci9tb2RlbHMvaGVhZGVyLWJhci1ub3RpZmljYXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFDakQsTUFBTSxPQUFPLHFCQUFxQjtJQUloQyxZQUFZLFlBQW9DO1FBQzlDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxZQUFZLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsMEJBQTBCO1lBQzdCLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDIzIFVEU00gREhJUzIgTGFiLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGVcbi8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS5cbmV4cG9ydCBjbGFzcyBIZWFkZXJCYXJOb3RpZmljYXRpb24ge1xuICB1bnJlYWRJbnRlcnByZXRhdGlvbnM/OiBudW1iZXI7XG4gIHVucmVhZE1lc3NhZ2VDb252ZXJzYXRpb25zPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG5vdGlmaWNhdGlvbjogUmVjb3JkPHN0cmluZywgbnVtYmVyPikge1xuICAgIHRoaXMudW5yZWFkSW50ZXJwcmV0YXRpb25zID0gbm90aWZpY2F0aW9uWyd1bnJlYWRJbnRlcnByZXRhdGlvbnMnXTtcbiAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb252ZXJzYXRpb25zID1cbiAgICAgIG5vdGlmaWNhdGlvblsndW5yZWFkTWVzc2FnZUNvbnZlcnNhdGlvbnMnXTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
export * from './header-bar-data.model';
|
|
5
|
+
export * from './header-bar-app.model';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFDakQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjMgVURTTSBESElTMiBMYWIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZVxuLy8gbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLlxuZXhwb3J0ICogZnJvbSAnLi9oZWFkZXItYmFyLWRhdGEubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWFkZXItYmFyLWFwcC5tb2RlbCc7XG4iXX0=
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { Card } from '@dhis2-ui/card';
|
|
2
|
+
import { InputField } from '@dhis2-ui/input';
|
|
3
|
+
import { colors, spacers, theme } from '@dhis2/ui-constants';
|
|
4
|
+
import { IconApps24, IconSettings24 } from '@dhis2/ui-icons';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import React, { useState, useEffect, useCallback, useRef } from 'react';
|
|
7
|
+
import { joinPath } from './join-path';
|
|
8
|
+
import i18n from '@dhis2/d2-i18n';
|
|
9
|
+
/**
|
|
10
|
+
* Copied from here:
|
|
11
|
+
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
|
|
12
|
+
*/
|
|
13
|
+
function escapeRegExpCharacters(text) {
|
|
14
|
+
return text.replace(/[/.*+?^${}()|[\]\\]/g, '\\$&');
|
|
15
|
+
}
|
|
16
|
+
function Search({ value, onChange, baseUrl }) {
|
|
17
|
+
return (React.createElement("div", { className: "headerbar-apps-search" },
|
|
18
|
+
React.createElement("span", { className: "headerbar-apps-search-input" },
|
|
19
|
+
React.createElement(InputField, { value: value, name: "filter", placeholder: i18n.t('Search apps'), onChange: onChange, initialFocus: true })),
|
|
20
|
+
React.createElement("span", { className: "headerbar-apps-search-icon" },
|
|
21
|
+
React.createElement("a", { href: joinPath(baseUrl, 'dhis-web-menu-management') },
|
|
22
|
+
React.createElement(IconSettings24, { color: colors.grey700 }))),
|
|
23
|
+
React.createElement("style", { jsx: true }, `
|
|
24
|
+
.headerbar-apps-search {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: row;
|
|
27
|
+
flex-wrap: nowrap;
|
|
28
|
+
height: 52px;
|
|
29
|
+
margin: 8px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.headerbar-apps-search-input {
|
|
33
|
+
flex: 1 100%;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.headerbar-apps-search-icon {
|
|
37
|
+
flex: 1 auto;
|
|
38
|
+
margin: 8px;
|
|
39
|
+
}
|
|
40
|
+
`)));
|
|
41
|
+
}
|
|
42
|
+
Search.propTypes = {
|
|
43
|
+
value: PropTypes.string.isRequired,
|
|
44
|
+
onChange: PropTypes.func.isRequired,
|
|
45
|
+
baseUrl: PropTypes.string,
|
|
46
|
+
};
|
|
47
|
+
function Item({ name, path, img }) {
|
|
48
|
+
return (React.createElement("a", { className: "headerbar-app-item", href: path },
|
|
49
|
+
React.createElement("img", { className: "headerbar-app-item-logo", src: img, alt: "app logo" }),
|
|
50
|
+
React.createElement("div", { className: "headerbar-app-item-title" }, name),
|
|
51
|
+
React.createElement("style", { jsx: true }, `
|
|
52
|
+
.headerbar-app-item {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
-webkit-box-align: center;
|
|
56
|
+
align-items: center;
|
|
57
|
+
-webkit-box-pack: center;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
width: 96px;
|
|
60
|
+
margin: 8px;
|
|
61
|
+
border-radius: 12px;
|
|
62
|
+
text-decoration: none;
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
}
|
|
65
|
+
.headerbar-app-item-logo {
|
|
66
|
+
display: inline-block;
|
|
67
|
+
display: flex;
|
|
68
|
+
flex-direction: column;
|
|
69
|
+
align-items: center;
|
|
70
|
+
justify-content: center;
|
|
71
|
+
width: 96px;
|
|
72
|
+
margin: 8px;
|
|
73
|
+
border-radius: 12px;
|
|
74
|
+
text-decoration: none;
|
|
75
|
+
cursor: pointer;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.headerbar-app-item-logo:hover,
|
|
79
|
+
.headerbar-app-item-logo:focus {
|
|
80
|
+
background-color: ${theme.primary050};
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.headerbar-app-item-logo:hover > div {
|
|
85
|
+
font-weight: 500;
|
|
86
|
+
cursor: pointer;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.headerbar-app-item-logo {
|
|
90
|
+
width: 48px;
|
|
91
|
+
height: 48px;
|
|
92
|
+
margin: 8px;
|
|
93
|
+
cursor: pointer;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.headerbar-app-item-title {
|
|
97
|
+
overflow-wrap: anywhere;
|
|
98
|
+
margin-top: 14px;
|
|
99
|
+
color: rgba(0, 0, 0, 0.87);
|
|
100
|
+
font-size: 12px;
|
|
101
|
+
letter-spacing: 0.01em;
|
|
102
|
+
line-height: 14px;
|
|
103
|
+
text-align: center;
|
|
104
|
+
cursor: pointer;
|
|
105
|
+
}
|
|
106
|
+
`)));
|
|
107
|
+
}
|
|
108
|
+
Item.propTypes = {
|
|
109
|
+
img: PropTypes.string,
|
|
110
|
+
name: PropTypes.string,
|
|
111
|
+
path: PropTypes.string,
|
|
112
|
+
};
|
|
113
|
+
function List({ apps, filter }) {
|
|
114
|
+
return (React.createElement("div", { className: "headerbar-apps-menu-list", "data-test": "headerbar-apps-menu-list" },
|
|
115
|
+
apps
|
|
116
|
+
.filter(({ displayName, name }) => {
|
|
117
|
+
const appName = displayName || name;
|
|
118
|
+
const formattedAppName = appName.toLowerCase();
|
|
119
|
+
const formattedFilter = escapeRegExpCharacters(filter).toLowerCase();
|
|
120
|
+
return filter.length > 0
|
|
121
|
+
? formattedAppName.match(formattedFilter)
|
|
122
|
+
: true;
|
|
123
|
+
})
|
|
124
|
+
.map(({ displayName, name, defaultAction, icon }, idx) => (React.createElement(Item, { key: `app-${name}-${idx}`, name: displayName || name, path: defaultAction, img: icon }))),
|
|
125
|
+
React.createElement("style", { jsx: true }, `
|
|
126
|
+
.headerbar-apps-menu-list {
|
|
127
|
+
display: flex;
|
|
128
|
+
flex-direction: row;
|
|
129
|
+
flex-wrap: wrap;
|
|
130
|
+
align-content: flex-start;
|
|
131
|
+
align-items: flex-start;
|
|
132
|
+
justify-content: flex-start;
|
|
133
|
+
width: 30vw;
|
|
134
|
+
min-width: 300px;
|
|
135
|
+
max-width: 560px;
|
|
136
|
+
|
|
137
|
+
min-height: 200px;
|
|
138
|
+
max-height: 465px;
|
|
139
|
+
margin: 0 8px 8px 8px;
|
|
140
|
+
|
|
141
|
+
overflow: auto;
|
|
142
|
+
overflow-x: hidden;
|
|
143
|
+
}
|
|
144
|
+
`)));
|
|
145
|
+
}
|
|
146
|
+
List.propTypes = {
|
|
147
|
+
apps: PropTypes.array,
|
|
148
|
+
filter: PropTypes.string,
|
|
149
|
+
};
|
|
150
|
+
const AppMenu = ({ apps, filter, onFilterChange, baseUrl }) => (React.createElement("div", { className: "headerbar-apps-menu", "data-test": "headerbar-apps-menu" },
|
|
151
|
+
React.createElement(Card, null,
|
|
152
|
+
React.createElement(Search, { value: filter, onChange: onFilterChange, baseUrl: baseUrl }),
|
|
153
|
+
React.createElement(List, { apps: apps, filter: filter })),
|
|
154
|
+
React.createElement("style", { jsx: true }, `
|
|
155
|
+
.headerbar-apps-menu {
|
|
156
|
+
z-index: 10000;
|
|
157
|
+
position: absolute;
|
|
158
|
+
right: -4px;
|
|
159
|
+
}
|
|
160
|
+
`)));
|
|
161
|
+
AppMenu.propTypes = {
|
|
162
|
+
apps: PropTypes.array.isRequired,
|
|
163
|
+
onFilterChange: PropTypes.func.isRequired,
|
|
164
|
+
filter: PropTypes.string,
|
|
165
|
+
baseUrl: PropTypes.string,
|
|
166
|
+
};
|
|
167
|
+
const Apps = ({ apps, baseUrl }) => {
|
|
168
|
+
const [show, setShow] = useState(false);
|
|
169
|
+
const [filter, setFilter] = useState('');
|
|
170
|
+
const handleVisibilityToggle = useCallback(() => setShow(!show), [show]);
|
|
171
|
+
const handleFilterChange = useCallback(({ value }) => setFilter(value), []);
|
|
172
|
+
const containerEl = useRef(null);
|
|
173
|
+
const onDocClick = useCallback((evt) => {
|
|
174
|
+
if (containerEl.current &&
|
|
175
|
+
!containerEl.current.contains(evt.target)) {
|
|
176
|
+
setShow(false);
|
|
177
|
+
}
|
|
178
|
+
}, []);
|
|
179
|
+
useEffect(() => {
|
|
180
|
+
document.addEventListener('click', onDocClick);
|
|
181
|
+
return () => document.removeEventListener('click', onDocClick);
|
|
182
|
+
}, [onDocClick]);
|
|
183
|
+
return (React.createElement("div", { className: "headerbar-apps", ref: containerEl, "data-test": "headerbar-apps" },
|
|
184
|
+
React.createElement("button", { onClick: handleVisibilityToggle, "data-test": "headerbar-apps-icon" },
|
|
185
|
+
React.createElement(IconApps24, { color: colors.white })),
|
|
186
|
+
show ? (React.createElement(AppMenu, { apps: apps, filter: filter, baseUrl: baseUrl, onFilterChange: handleFilterChange })) : null,
|
|
187
|
+
React.createElement("style", { jsx: true }, `
|
|
188
|
+
.headerbar-apps button {
|
|
189
|
+
display: block;
|
|
190
|
+
background: transparent;
|
|
191
|
+
padding: ${spacers.dp4} ${spacers.dp12} 0;
|
|
192
|
+
border: 0;
|
|
193
|
+
cursor: pointer;
|
|
194
|
+
height: 100%;
|
|
195
|
+
}
|
|
196
|
+
.headerbar-apps button:focus {
|
|
197
|
+
outline: 2px solid white;
|
|
198
|
+
outline-offset: -2px;
|
|
199
|
+
}
|
|
200
|
+
.headerbar-apps button:focus:not(:focus-visible) {
|
|
201
|
+
outline: none;
|
|
202
|
+
}
|
|
203
|
+
.headerbar-apps button:hover {
|
|
204
|
+
background: #1a557f;
|
|
205
|
+
}
|
|
206
|
+
.headerbar-apps button:active {
|
|
207
|
+
background: #104067;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.headerbar-apps {
|
|
211
|
+
position: relative;
|
|
212
|
+
height: 100%;
|
|
213
|
+
}
|
|
214
|
+
`)));
|
|
215
|
+
};
|
|
216
|
+
Apps.propTypes = {
|
|
217
|
+
apps: PropTypes.array.isRequired,
|
|
218
|
+
baseUrl: PropTypes.string,
|
|
219
|
+
};
|
|
220
|
+
export default Apps;
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL2FwcHMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLElBQUksTUFBTSxnQkFBZ0IsQ0FBQztBQVFsQzs7O0dBR0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQVk7SUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFPO0lBQy9DLE9BQU8sQ0FDTCw2QkFBSyxTQUFTLEVBQUMsdUJBQXVCO1FBQ3BDLDhCQUFNLFNBQVMsRUFBQyw2QkFBNkI7WUFDM0Msb0JBQUMsVUFBVSxJQUNULEtBQUssRUFBRSxLQUFLLEVBQ1osSUFBSSxFQUFDLFFBQVEsRUFDYixXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFDbEMsUUFBUSxFQUFFLFFBQVEs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LFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVTtJQUNoQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU07Q0FDMUIsQ0FBQztBQUVGLGVBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FyZCB9IGZyb20gJ0BkaGlzMi11aS9jYXJkJztcbmltcG9ydCB7IElucHV0RmllbGQgfSBmcm9tICdAZGhpczItdWkvaW5wdXQnO1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnQGRoaXMyL2FwcC1ydW50aW1lJztcbmltcG9ydCB7IGNvbG9ycywgc3BhY2VycywgdGhlbWUgfSBmcm9tICdAZGhpczIvdWktY29uc3RhbnRzJztcbmltcG9ydCB7IEljb25BcHBzMjQsIEljb25TZXR0aW5nczI0IH0gZnJvbSAnQGRoaXMyL3VpLWljb25zJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpvaW5QYXRoIH0gZnJvbSAnLi9qb2luLXBhdGgnO1xuaW1wb3J0IGkxOG4gZnJvbSAnQGRoaXMyL2QyLWkxOG4nO1xuZGVjbGFyZSBtb2R1bGUgJ3JlYWN0JyB7XG4gIGludGVyZmFjZSBTdHlsZUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8VD4ge1xuICAgIGpzeD86IGJvb2xlYW47XG4gICAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgfVxufVxuXG4vKipcbiAqIENvcGllZCBmcm9tIGhlcmU6XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjRXNjYXBpbmdcbiAqL1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwQ2hhcmFjdGVycyh0ZXh0OiBzdHJpbmcpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZSgvWy8uKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG59XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IHZhbHVlLCBvbkNoYW5nZSwgYmFzZVVybCB9OiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlYWRlcmJhci1hcHBzLXNlYXJjaFwiPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGVhZGVyYmFyLWFwcHMtc2VhcmNoLWlucHV0XCI+XG4gICAgICAgIDxJbnB1dEZpZWxkXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG5hbWU9XCJmaWx0ZXJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtpMThuLnQoJ1NlYXJjaCBhcHBzJyl9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIGluaXRpYWxGb2N1c1xuICAgICAgICAvPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJoZWFkZXJiYXItYXBwcy1zZWFyY2gtaWNvblwiPlxuICAgICAgICA8YSBocmVmPXtqb2luUGF0aChiYXNlVXJsLCAnZGhpcy13ZWItbWVudS1tYW5hZ2VtZW50Jyl9PlxuICAgICAgICAgIDxJY29uU2V0dGluZ3MyNCBjb2xvcj17Y29sb3JzLmdyZXk3MDB9IC8+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuaGVhZGVyYmFyLWFwcHMtc2VhcmNoIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgICAgaGVpZ2h0OiA1MnB4O1xuICAgICAgICAgIG1hcmdpbjogOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlcmJhci1hcHBzLXNlYXJjaC1pbnB1dCB7XG4gICAgICAgICAgZmxleDogMSAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlcmJhci1hcHBzLXNlYXJjaC1pY29uIHtcbiAgICAgICAgICBmbGV4OiAxIGF1dG87XG4gICAgICAgICAgbWFyZ2luOiA4cHg7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5mdW5jdGlvbiBJdGVtKHsgbmFtZSwgcGF0aCwgaW1nIH06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxhIGNsYXNzTmFtZT1cImhlYWRlcmJhci1hcHAtaXRlbVwiIGhyZWY9e3BhdGh9PlxuICAgICAgPGltZyBjbGFzc05hbWU9XCJoZWFkZXJiYXItYXBwLWl0ZW0tbG9nb1wiIHNyYz17aW1nfSBhbHQ9XCJhcHAgbG9nb1wiIC8+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyYmFyLWFwcC1pdGVtLXRpdGxlXCI+e25hbWV9PC9kaXY+XG5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmhlYWRlcmJhci1hcHAtaXRlbSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6IDk2cHg7XG4gICAgICAgICAgbWFyZ2luOiA4cHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXJiYXItYXBwLWl0ZW0tbG9nbyB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIHdpZHRoOiA5NnB4O1xuICAgICAgICAgIG1hcmdpbjogOHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXJiYXItYXBwLWl0ZW0tbG9nbzpob3ZlcixcbiAgICAgICAgLmhlYWRlcmJhci1hcHAtaXRlbS1sb2dvOmZvY3VzIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnkwNTB9O1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXJiYXItYXBwLWl0ZW0tbG9nbzpob3ZlciA+IGRpdiB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyYmFyLWFwcC1pdGVtLWxvZ28ge1xuICAgICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgICBtYXJnaW46IDhweDtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyYmFyLWFwcC1pdGVtLXRpdGxlIHtcbiAgICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxNHB4O1xuICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMWVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2E+XG4gICk7XG59XG5cbkl0ZW0ucHJvcFR5cGVzID0ge1xuICBpbWc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHBhdGg6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5mdW5jdGlvbiBMaXN0KHsgYXBwcywgZmlsdGVyIH06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImhlYWRlcmJhci1hcHBzLW1lbnUtbGlzdFwiXG4gICAgICBkYXRhLXRlc3Q9XCJoZWFkZXJiYXItYXBwcy1tZW51LWxpc3RcIlxuICAgID5cbiAgICAgIHthcHBzXG4gICAgICAgIC5maWx0ZXIoKHsgZGlzcGxheU5hbWUsIG5hbWUgfTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgYXBwTmFtZSA9IGRpc3BsYXlOYW1lIHx8IG5hbWU7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVkQXBwTmFtZSA9IGFwcE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRGaWx0ZXIgPSBlc2NhcGVSZWdFeHBDaGFyYWN0ZXJzKGZpbHRlcikudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgIHJldHVybiBmaWx0ZXIubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBmb3JtYXR0ZWRBcHBOYW1lLm1hdGNoKGZvcm1hdHRlZEZpbHRlcilcbiAgICAgICAgICAgIDogdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgLm1hcCgoeyBkaXNwbGF5TmFtZSwgbmFtZSwgZGVmYXVsdEFjdGlvbiwgaWNvbiB9OiBhbnksIGlkeDogc3RyaW5nKSA9PiAoXG4gICAgICAgICAgPEl0ZW1cbiAgICAgICAgICAgIGtleT17YGFwcC0ke25hbWV9LSR7aWR4fWB9XG4gICAgICAgICAgICBuYW1lPXtkaXNwbGF5TmFtZSB8fCBuYW1lfVxuICAgICAgICAgICAgcGF0aD17ZGVmYXVsdEFjdGlvbn1cbiAgICAgICAgICAgIGltZz17aWNvbn1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cblxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuaGVhZGVyYmFyLWFwcHMtbWVudS1saXN0IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICAgIHdpZHRoOiAzMHZ3O1xuICAgICAgICAgIG1pbi13aWR0aDogMzAwcHg7XG4gICAgICAgICAgbWF4LXdpZHRoOiA1NjBweDtcblxuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICAgICAgICAgIG1heC1oZWlnaHQ6IDQ2NXB4O1xuICAgICAgICAgIG1hcmdpbjogMCA4cHggOHB4IDhweDtcblxuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvZGl2PlxuICApO1xufVxuTGlzdC5wcm9wVHlwZXMgPSB7XG4gIGFwcHM6IFByb3BUeXBlcy5hcnJheSxcbiAgZmlsdGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuY29uc3QgQXBwTWVudSA9ICh7IGFwcHMsIGZpbHRlciwgb25GaWx0ZXJDaGFuZ2UsIGJhc2VVcmwgfTogYW55KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyYmFyLWFwcHMtbWVudVwiIGRhdGEtdGVzdD1cImhlYWRlcmJhci1hcHBzLW1lbnVcIj5cbiAgICA8Q2FyZD5cbiAgICAgIDxTZWFyY2ggdmFsdWU9e2ZpbHRlcn0gb25DaGFuZ2U9e29uRmlsdGVyQ2hhbmdlfSBiYXNlVXJsPXtiYXNlVXJsfSAvPlxuICAgICAgPExpc3QgYXBwcz17YXBwc30gZmlsdGVyPXtmaWx0ZXJ9IC8+XG4gICAgPC9DYXJkPlxuXG4gICAgPHN0eWxlIGpzeD57YFxuICAgICAgLmhlYWRlcmJhci1hcHBzLW1lbnUge1xuICAgICAgICB6LWluZGV4OiAxMDAwMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogLTRweDtcbiAgICAgIH1cbiAgICBgfTwvc3R5bGU+XG4gIDwvZGl2PlxuKTtcblxuQXBwTWVudS5wcm9wVHlwZXMgPSB7XG4gIGFwcHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBvbkZpbHRlckNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZmlsdGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBiYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuY29uc3QgQXBwcyA9ICh7IGFwcHMsIGJhc2VVcmwgfTogYW55KSA9PiB7XG4gIGNvbnN0IFtzaG93LCBzZXRTaG93XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5VG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0U2hvdyghc2hvdyksIFtzaG93XSk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHZhbHVlIH06IGFueSkgPT4gc2V0RmlsdGVyKHZhbHVlKSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IGNvbnRhaW5lckVsID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBvbkRvY0NsaWNrID0gdXNlQ2FsbGJhY2soKGV2dDogYW55KSA9PiB7XG4gICAgaWYgKFxuICAgICAgY29udGFpbmVyRWwuY3VycmVudCAmJlxuICAgICAgIShjb250YWluZXJFbC5jdXJyZW50IGFzIGFueSkuY29udGFpbnMoZXZ0LnRhcmdldClcbiAgICApIHtcbiAgICAgIHNldFNob3coZmFsc2UpO1xuICAgIH1cbiAgfSwgW10pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25Eb2NDbGljayk7XG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25Eb2NDbGljayk7XG4gIH0sIFtvbkRvY0NsaWNrXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJoZWFkZXJiYXItYXBwc1wiXG4gICAgICByZWY9e2NvbnRhaW5lckVsfVxuICAgICAgZGF0YS10ZXN0PVwiaGVhZGVyYmFyLWFwcHNcIlxuICAgID5cbiAgICAgIDxidXR0b24gb25DbGljaz17aGFuZGxlVmlzaWJpbGl0eVRvZ2dsZX0gZGF0YS10ZXN0PVwiaGVhZGVyYmFyLWFwcHMtaWNvblwiPlxuICAgICAgICA8SWNvbkFwcHMyNCBjb2xvcj17Y29sb3JzLndoaXRlfSAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIHtzaG93ID8gKFxuICAgICAgICA8QXBwTWVudVxuICAgICAgICAgIGFwcHM9e2FwcHN9XG4gICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgYmFzZVVybD17YmFzZVVybH1cbiAgICAgICAgICBvbkZpbHRlckNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG5cbiAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgLmhlYWRlcmJhci1hcHBzIGJ1dHRvbiB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgcGFkZGluZzogJHtzcGFjZXJzLmRwNH0gJHtzcGFjZXJzLmRwMTJ9IDA7XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlcmJhci1hcHBzIGJ1dHRvbjpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHdoaXRlO1xuICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXJiYXItYXBwcyBidXR0b246Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAuaGVhZGVyYmFyLWFwcHMgYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWE1NTdmO1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXJiYXItYXBwcyBidXR0b246YWN0aXZlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTA0MDY3O1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlcmJhci1hcHBzIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5BcHBzLnByb3BUeXBlcyA9IHtcbiAgYXBwczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBcHBzO1xuIl19
|