@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
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { MenuItem } from '@dhis2-ui/menu';
|
|
2
|
+
import { colors } from '@dhis2/ui-constants';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import i18n from '@dhis2/d2-i18n';
|
|
6
|
+
import { useDebugInfo } from './use-debug-info';
|
|
7
|
+
export const DebugInfoMenuItem = (params) => {
|
|
8
|
+
const { hideProfileMenu, showDebugInfoModal } = params;
|
|
9
|
+
const debugInfo = useDebugInfo();
|
|
10
|
+
const openDebugModal = () => {
|
|
11
|
+
hideProfileMenu();
|
|
12
|
+
showDebugInfoModal();
|
|
13
|
+
};
|
|
14
|
+
const debugInfoLabel = (React.createElement("div", { className: "root" },
|
|
15
|
+
React.createElement("div", { className: "instance-info version", "data-test": "dhis2-ui-headerbar-instanceinfo" }, debugInfo.dhis2_version
|
|
16
|
+
? i18n.t('DHIS2 {{dhis2Version}}', {
|
|
17
|
+
dhis2Version: debugInfo.dhis2_version,
|
|
18
|
+
})
|
|
19
|
+
: i18n.t('DHIS2 version unknown')),
|
|
20
|
+
React.createElement("div", { className: "version", "data-test": "dhis2-ui-headerbar-appinfo" }, debugInfo.app_name
|
|
21
|
+
? debugInfo.app_version
|
|
22
|
+
? `${debugInfo.app_name} ${debugInfo.app_version}`
|
|
23
|
+
: i18n.t('{{appName}} version unknown', {
|
|
24
|
+
appName: debugInfo.app_name,
|
|
25
|
+
})
|
|
26
|
+
: debugInfo.app_version
|
|
27
|
+
? i18n.t('App {{appVersion}}', {
|
|
28
|
+
appVersion: debugInfo.app_version,
|
|
29
|
+
})
|
|
30
|
+
: i18n.t('App version unknown')),
|
|
31
|
+
React.createElement("style", { jsx: true }, `
|
|
32
|
+
.root {
|
|
33
|
+
color: ${colors.grey700};
|
|
34
|
+
font-style: italic;
|
|
35
|
+
font-size: 14px;
|
|
36
|
+
line-height: 17px;
|
|
37
|
+
}
|
|
38
|
+
.instance-info {
|
|
39
|
+
margin-bottom: 4px;
|
|
40
|
+
}
|
|
41
|
+
.version {
|
|
42
|
+
white-space: no-wrap;
|
|
43
|
+
}
|
|
44
|
+
`)));
|
|
45
|
+
return (React.createElement(MenuItem, { dense: true, onClick: openDebugModal, label: debugInfoLabel, dataTest: "dhis2-ui-headerbar-debuginfo" }));
|
|
46
|
+
};
|
|
47
|
+
DebugInfoMenuItem.propTypes = {
|
|
48
|
+
hideProfileMenu: PropTypes.func.isRequired,
|
|
49
|
+
showDebugInfoModal: PropTypes.func.isRequired,
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctaW5mby1tZW51LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci91dGlscy9kZWJ1Zy1pbmZvL2RlYnVnLWluZm8tbWVudS1pdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUWhELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUU7SUFDL0MsTUFBTSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQztJQUVqQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDMUIsZUFBZSxFQUFFLENBQUM7UUFDbEIsa0JBQWtCLEVBQUUsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBRyxDQUNyQiw2QkFBSyxTQUFTLEVBQUMsTUFBTTtRQUNuQiw2QkFDRSxTQUFTLEVBQUMsdUJBQXVCLGVBQ3ZCLGlDQUFpQyxJQUUxQyxTQUFTLENBQUMsYUFBYTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRTtnQkFDL0IsWUFBWSxFQUFFLFNBQVMsQ0FBQyxhQUFhO2FBQ3RDLENBQUM7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUMvQjtRQUNOLDZCQUFLLFNBQVMsRUFBQyxTQUFTLGVBQVcsNEJBQTRCLElBQzVELFNBQVMsQ0FBQyxRQUFRO1lBQ2pCLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVztnQkFDckIsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFO2dCQUNsRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsRUFBRTtvQkFDcEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRO2lCQUM1QixDQUFDO1lBQ04sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXO2dCQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRTtvQkFDM0IsVUFBVSxFQUFFLFNBQVMsQ0FBQyxXQUFXO2lCQUNsQyxDQUFDO2dCQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBRTdCO1FBQ04sK0JBQU8sR0FBRyxVQUFFOzs2QkFFVyxNQUFNLENBQUMsT0FBTzs7Ozs7Ozs7Ozs7YUFXOUIsQ0FBUyxDQUNaLENBQ1AsQ0FBQztJQUVGLE9BQU8sQ0FDTCxvQkFBQyxRQUFRLElBQ1AsS0FBSyxRQUNMLE9BQU8sRUFBRSxjQUFjLEVBQ3ZCLEtBQUssRUFBRSxjQUFjLEVBQ3JCLFFBQVEsRUFBQyw4QkFBOEIsR0FDdkMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsaUJBQWlCLENBQUMsU0FBUyxHQUFHO0lBQzVCLGVBQWUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7SUFDMUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO0NBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ0BkaGlzMi11aS9tZW51JztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ0BkaGlzMi91aS1jb25zdGFudHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaTE4biBmcm9tICdAZGhpczIvZDItaTE4bic7XG5pbXBvcnQgeyB1c2VEZWJ1Z0luZm8gfSBmcm9tICcuL3VzZS1kZWJ1Zy1pbmZvJztcbmRlY2xhcmUgbW9kdWxlICdyZWFjdCcge1xuICBpbnRlcmZhY2UgU3R5bGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPFQ+IHtcbiAgICBqc3g/OiBib29sZWFuO1xuICAgIGdsb2JhbD86IGJvb2xlYW47XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IERlYnVnSW5mb01lbnVJdGVtID0gKHBhcmFtczogYW55KSA9PiB7XG4gIGNvbnN0IHsgaGlkZVByb2ZpbGVNZW51LCBzaG93RGVidWdJbmZvTW9kYWwgfSA9IHBhcmFtcztcbiAgY29uc3QgZGVidWdJbmZvID0gdXNlRGVidWdJbmZvKCk7XG5cbiAgY29uc3Qgb3BlbkRlYnVnTW9kYWwgPSAoKSA9PiB7XG4gICAgaGlkZVByb2ZpbGVNZW51KCk7XG4gICAgc2hvd0RlYnVnSW5mb01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgZGVidWdJbmZvTGFiZWwgPSAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyb290XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImluc3RhbmNlLWluZm8gdmVyc2lvblwiXG4gICAgICAgIGRhdGEtdGVzdD1cImRoaXMyLXVpLWhlYWRlcmJhci1pbnN0YW5jZWluZm9cIlxuICAgICAgPlxuICAgICAgICB7ZGVidWdJbmZvLmRoaXMyX3ZlcnNpb25cbiAgICAgICAgICA/IGkxOG4udCgnREhJUzIge3tkaGlzMlZlcnNpb259fScsIHtcbiAgICAgICAgICAgICAgZGhpczJWZXJzaW9uOiBkZWJ1Z0luZm8uZGhpczJfdmVyc2lvbixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBpMThuLnQoJ0RISVMyIHZlcnNpb24gdW5rbm93bicpfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInZlcnNpb25cIiBkYXRhLXRlc3Q9XCJkaGlzMi11aS1oZWFkZXJiYXItYXBwaW5mb1wiPlxuICAgICAgICB7ZGVidWdJbmZvLmFwcF9uYW1lXG4gICAgICAgICAgPyBkZWJ1Z0luZm8uYXBwX3ZlcnNpb25cbiAgICAgICAgICAgID8gYCR7ZGVidWdJbmZvLmFwcF9uYW1lfSAke2RlYnVnSW5mby5hcHBfdmVyc2lvbn1gXG4gICAgICAgICAgICA6IGkxOG4udCgne3thcHBOYW1lfX0gdmVyc2lvbiB1bmtub3duJywge1xuICAgICAgICAgICAgICAgIGFwcE5hbWU6IGRlYnVnSW5mby5hcHBfbmFtZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IGRlYnVnSW5mby5hcHBfdmVyc2lvblxuICAgICAgICAgID8gaTE4bi50KCdBcHAge3thcHBWZXJzaW9ufX0nLCB7XG4gICAgICAgICAgICAgIGFwcFZlcnNpb246IGRlYnVnSW5mby5hcHBfdmVyc2lvbixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBpMThuLnQoJ0FwcCB2ZXJzaW9uIHVua25vd24nKX1cbiAgICAgICAge31cbiAgICAgIDwvZGl2PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAgICAgICAgIC5yb290IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y29sb3JzLmdyZXk3MDB9O1xuICAgICAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE3cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5pbnN0YW5jZS1pbmZvIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAudmVyc2lvbiB7XG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBuby13cmFwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxNZW51SXRlbVxuICAgICAgZGVuc2VcbiAgICAgIG9uQ2xpY2s9e29wZW5EZWJ1Z01vZGFsfVxuICAgICAgbGFiZWw9e2RlYnVnSW5mb0xhYmVsfVxuICAgICAgZGF0YVRlc3Q9XCJkaGlzMi11aS1oZWFkZXJiYXItZGVidWdpbmZvXCJcbiAgICAvPlxuICApO1xufTtcblxuRGVidWdJbmZvTWVudUl0ZW0ucHJvcFR5cGVzID0ge1xuICBoaWRlUHJvZmlsZU1lbnU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNob3dEZWJ1Z0luZm9Nb2RhbDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Button, ButtonStrip } from '@dhis2-ui/button';
|
|
2
|
+
import { Modal, ModalActions, ModalContent, ModalTitle } from '@dhis2-ui/modal';
|
|
3
|
+
import { useAlert } from '@dhis2/app-runtime';
|
|
4
|
+
import i18n from '@dhis2/d2-i18n';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { DebugInfoTable } from './debug-info-table';
|
|
8
|
+
import { useFormattedDebugInfo } from './use-debug-info';
|
|
9
|
+
export function DebugInfoModal(params) {
|
|
10
|
+
const { onClose } = params;
|
|
11
|
+
const debugInfo = useFormattedDebugInfo();
|
|
12
|
+
const { show: showClipboardAlert } = useAlert('Debug information copied to clipboard', { duration: 3000 });
|
|
13
|
+
const copyDebugInfo = () => {
|
|
14
|
+
navigator.clipboard.writeText(debugInfo);
|
|
15
|
+
onClose();
|
|
16
|
+
showClipboardAlert();
|
|
17
|
+
};
|
|
18
|
+
return (React.createElement(Modal, { position: "middle", dataTest: "dhis2-ui-headerbar-debuginfomodal" },
|
|
19
|
+
React.createElement(ModalTitle, null, i18n.t('Debug info')),
|
|
20
|
+
React.createElement(ModalContent, null,
|
|
21
|
+
React.createElement(DebugInfoTable, null)),
|
|
22
|
+
React.createElement(ModalActions, null,
|
|
23
|
+
React.createElement(ButtonStrip, { end: true },
|
|
24
|
+
React.createElement(Button, { onClick: () => onClose() }, i18n.t('Close')),
|
|
25
|
+
React.createElement(Button, { primary: true, onClick: copyDebugInfo, dataTest: "dhis2-ui-headerbar-debuginfomodal-copybutton" }, i18n.t('Copy debug info'))))));
|
|
26
|
+
}
|
|
27
|
+
DebugInfoModal.propTypes = {
|
|
28
|
+
onClose: PropTypes.func.isRequired,
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctaW5mby1tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL2RlYnVnLWluZm8vZGVidWctaW5mby1tb2RhbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ2pDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXhELE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBVztJQUN0QyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUksTUFBTSxDQUFDO0lBQzVCLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixFQUFFLENBQUE7SUFDekMsTUFBTSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxHQUFHLFFBQVEsQ0FDekMsdUNBQXVDLEVBQ3ZDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUNyQixDQUFBO0lBRUQsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO1FBQ3ZCLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3hDLE9BQU8sRUFBRSxDQUFBO1FBQ1Qsa0JBQWtCLEVBQUUsQ0FBQTtJQUN4QixDQUFDLENBQUE7SUFFRCxPQUFPLENBQ0gsb0JBQUMsS0FBSyxJQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLG1DQUFtQztRQUNqRSxvQkFBQyxVQUFVLFFBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBYztRQUMvQyxvQkFBQyxZQUFZO1lBQ1Qsb0JBQUMsY0FBYyxPQUFHLENBQ1A7UUFDZixvQkFBQyxZQUFZO1lBQ1Qsb0JBQUMsV0FBVyxJQUFDLEdBQUc7Z0JBQ1osb0JBQUMsTUFBTSxJQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFVO2dCQUM1RCxvQkFBQyxNQUFNLElBQ0gsT0FBTyxRQUNQLE9BQU8sRUFBRSxhQUFhLEVBQ3RCLFFBQVEsRUFBQyw4Q0FBOEMsSUFFdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUNyQixDQUNDLENBQ0gsQ0FDWCxDQUNYLENBQUE7QUFDTCxDQUFDO0FBRUQsY0FBYyxDQUFDLFNBQVMsR0FBRztJQUN2QixPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO0NBQ3JDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b24sIEJ1dHRvblN0cmlwIH0gZnJvbSAnQGRoaXMyLXVpL2J1dHRvbidcbmltcG9ydCB7IE1vZGFsLCBNb2RhbEFjdGlvbnMsIE1vZGFsQ29udGVudCwgTW9kYWxUaXRsZSB9IGZyb20gJ0BkaGlzMi11aS9tb2RhbCdcbmltcG9ydCB7IHVzZUFsZXJ0IH0gZnJvbSAnQGRoaXMyL2FwcC1ydW50aW1lJ1xuaW1wb3J0IGkxOG4gZnJvbSAnQGRoaXMyL2QyLWkxOG4nXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBEZWJ1Z0luZm9UYWJsZSB9IGZyb20gJy4vZGVidWctaW5mby10YWJsZSdcbmltcG9ydCB7IHVzZUZvcm1hdHRlZERlYnVnSW5mbyB9IGZyb20gJy4vdXNlLWRlYnVnLWluZm8nXG5cbmV4cG9ydCBmdW5jdGlvbiBEZWJ1Z0luZm9Nb2RhbChwYXJhbXM6IGFueSkge1xuICAgIGNvbnN0IHsgb25DbG9zZSB9ICA9IHBhcmFtcztcbiAgICBjb25zdCBkZWJ1Z0luZm8gPSB1c2VGb3JtYXR0ZWREZWJ1Z0luZm8oKVxuICAgIGNvbnN0IHsgc2hvdzogc2hvd0NsaXBib2FyZEFsZXJ0IH0gPSB1c2VBbGVydChcbiAgICAgICAgJ0RlYnVnIGluZm9ybWF0aW9uIGNvcGllZCB0byBjbGlwYm9hcmQnLFxuICAgICAgICB7IGR1cmF0aW9uOiAzMDAwIH1cbiAgICApXG5cbiAgICBjb25zdCBjb3B5RGVidWdJbmZvID0gKCkgPT4ge1xuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChkZWJ1Z0luZm8pXG4gICAgICAgIG9uQ2xvc2UoKVxuICAgICAgICBzaG93Q2xpcGJvYXJkQWxlcnQoKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxNb2RhbCBwb3NpdGlvbj1cIm1pZGRsZVwiIGRhdGFUZXN0PVwiZGhpczItdWktaGVhZGVyYmFyLWRlYnVnaW5mb21vZGFsXCI+XG4gICAgICAgICAgICA8TW9kYWxUaXRsZT57aTE4bi50KCdEZWJ1ZyBpbmZvJyl9PC9Nb2RhbFRpdGxlPlxuICAgICAgICAgICAgPE1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RGVidWdJbmZvVGFibGUgLz5cbiAgICAgICAgICAgIDwvTW9kYWxDb250ZW50PlxuICAgICAgICAgICAgPE1vZGFsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uU3RyaXAgZW5kPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IG9uQ2xvc2UoKX0+e2kxOG4udCgnQ2xvc2UnKX08L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17Y29weURlYnVnSW5mb31cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUZXN0PVwiZGhpczItdWktaGVhZGVyYmFyLWRlYnVnaW5mb21vZGFsLWNvcHlidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdDb3B5IGRlYnVnIGluZm8nKX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9CdXR0b25TdHJpcD5cbiAgICAgICAgICAgIDwvTW9kYWxBY3Rpb25zPlxuICAgICAgICA8L01vZGFsPlxuICAgIClcbn1cblxuRGVidWdJbmZvTW9kYWwucHJvcFR5cGVzID0ge1xuICAgIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { colors } from '@dhis2/ui-constants';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useDebugInfo } from './use-debug-info';
|
|
4
|
+
const formatDebugInfoKey = (key) => {
|
|
5
|
+
const tokens = key.split('_');
|
|
6
|
+
return tokens
|
|
7
|
+
.map((token) => {
|
|
8
|
+
if (token.toLowerCase() === 'dhis2') {
|
|
9
|
+
return 'DHIS2';
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return token[0].toUpperCase() + token.substr(1).toLowerCase();
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
.join(' ');
|
|
16
|
+
};
|
|
17
|
+
export function DebugInfoTable() {
|
|
18
|
+
const debugInfo = useDebugInfo();
|
|
19
|
+
return (React.createElement("table", { 'data-test': 'dhis2-ui-headerbar-debuginfotable' },
|
|
20
|
+
React.createElement("tbody", null, Object.keys(debugInfo).map((key) => (React.createElement("tr", { key: key },
|
|
21
|
+
React.createElement("td", { className: "debug-info-key" }, formatDebugInfoKey(key)),
|
|
22
|
+
React.createElement("td", null, debugInfo[key]))))),
|
|
23
|
+
React.createElement("style", { jsx: true }, `
|
|
24
|
+
table {
|
|
25
|
+
white-space: pre-wrap;
|
|
26
|
+
font-size: 14px;
|
|
27
|
+
line-height: 1.2;
|
|
28
|
+
color: ${colors.grey700};
|
|
29
|
+
font-famile: Menlo, Courier, monospace !important;
|
|
30
|
+
}
|
|
31
|
+
td {
|
|
32
|
+
padding: 3px 16px 3px 0;
|
|
33
|
+
}
|
|
34
|
+
.debug-info-key {
|
|
35
|
+
font-weight: bold;
|
|
36
|
+
}
|
|
37
|
+
`)));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctaW5mby10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL2RlYnVnLWluZm8vZGVidWctaW5mby10YWJsZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFRaEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsT0FBTyxNQUFNO1NBQ1YsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDbEIsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFO1lBQ25DLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9EO0lBQ0gsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGNBQWM7SUFDNUIsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFTLENBQUM7SUFDeEMsT0FBTyxDQUNMLCtCQUFhLFdBQVcsRUFBRSxtQ0FBbUM7UUFDM0QsbUNBQ0csTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ25DLDRCQUFJLEdBQUcsRUFBRSxHQUFHO1lBQ1YsNEJBQUksU0FBUyxFQUFDLGdCQUFnQixJQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFNO1lBQzdELGdDQUFLLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBTSxDQUN0QixDQUNOLENBQUMsQ0FDSTtRQUNSLCtCQUFPLEdBQUcsVUFBRTs7Ozs7NkJBS1csTUFBTSxDQUFDLE9BQU87Ozs7Ozs7OzthQVM5QixDQUFTLENBQ1YsQ0FDVCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ0BkaGlzMi91aS1jb25zdGFudHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURlYnVnSW5mbyB9IGZyb20gJy4vdXNlLWRlYnVnLWluZm8nO1xuZGVjbGFyZSBtb2R1bGUgJ3JlYWN0JyB7XG4gIGludGVyZmFjZSBTdHlsZUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8VD4ge1xuICAgIGpzeD86IGJvb2xlYW47XG4gICAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgfVxufVxuXG5jb25zdCBmb3JtYXREZWJ1Z0luZm9LZXkgPSAoa2V5OiBhbnkpID0+IHtcbiAgY29uc3QgdG9rZW5zID0ga2V5LnNwbGl0KCdfJyk7XG4gIHJldHVybiB0b2tlbnNcbiAgICAubWFwKCh0b2tlbjogYW55KSA9PiB7XG4gICAgICBpZiAodG9rZW4udG9Mb3dlckNhc2UoKSA9PT0gJ2RoaXMyJykge1xuICAgICAgICByZXR1cm4gJ0RISVMyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0b2tlblswXS50b1VwcGVyQ2FzZSgpICsgdG9rZW4uc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuam9pbignICcpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIERlYnVnSW5mb1RhYmxlKCkge1xuICBjb25zdCBkZWJ1Z0luZm8gPSB1c2VEZWJ1Z0luZm8oKSBhcyBhbnk7XG4gIHJldHVybiAoXG4gICAgPHRhYmxlIHsuLi57ICdkYXRhLXRlc3QnOiAnZGhpczItdWktaGVhZGVyYmFyLWRlYnVnaW5mb3RhYmxlJyB9fT5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAge09iamVjdC5rZXlzKGRlYnVnSW5mbykubWFwKChrZXkpID0+IChcbiAgICAgICAgICA8dHIga2V5PXtrZXl9PlxuICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cImRlYnVnLWluZm8ta2V5XCI+e2Zvcm1hdERlYnVnSW5mb0tleShrZXkpfTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e2RlYnVnSW5mb1trZXldfTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgKSl9XG4gICAgICA8L3Rib2R5PlxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAgICAgICAgIHRhYmxlIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2NvbG9ycy5ncmV5NzAwfTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbGU6IE1lbmxvLCBDb3VyaWVyLCBtb25vc3BhY2UgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcHggMTZweCAzcHggMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmRlYnVnLWluZm8ta2V5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH08L3N0eWxlPlxuICAgIDwvdGFibGU+XG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useConfig } from '@dhis2/app-runtime';
|
|
2
|
+
export const useDebugInfo = () => {
|
|
3
|
+
const { appName, appVersion, systemInfo } = useConfig();
|
|
4
|
+
return {
|
|
5
|
+
app_name: appName || null,
|
|
6
|
+
app_version: appVersion?.full || null,
|
|
7
|
+
dhis2_version: systemInfo?.version || null,
|
|
8
|
+
dhis2_revision: systemInfo?.revision || null,
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export const useFormattedDebugInfo = () => JSON.stringify(useDebugInfo(), undefined, 2);
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWRlYnVnLWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci91dGlscy9kZWJ1Zy1pbmZvL3VzZS1kZWJ1Zy1pbmZvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRTtJQUM3QixNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFTLEVBQVMsQ0FBQTtJQUU5RCxPQUFPO1FBQ0gsUUFBUSxFQUFFLE9BQU8sSUFBSSxJQUFJO1FBQ3pCLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxJQUFJLElBQUk7UUFDckMsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLElBQUksSUFBSTtRQUMxQyxjQUFjLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxJQUFJO0tBQy9DLENBQUE7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICdAZGhpczIvYXBwLXJ1bnRpbWUnXG5cbmV4cG9ydCBjb25zdCB1c2VEZWJ1Z0luZm8gPSAoKSA9PiB7XG4gICAgY29uc3QgeyBhcHBOYW1lLCBhcHBWZXJzaW9uLCBzeXN0ZW1JbmZvIH0gPSB1c2VDb25maWcoKSBhcyBhbnlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFwcF9uYW1lOiBhcHBOYW1lIHx8IG51bGwsXG4gICAgICAgIGFwcF92ZXJzaW9uOiBhcHBWZXJzaW9uPy5mdWxsIHx8IG51bGwsXG4gICAgICAgIGRoaXMyX3ZlcnNpb246IHN5c3RlbUluZm8/LnZlcnNpb24gfHwgbnVsbCxcbiAgICAgICAgZGhpczJfcmV2aXNpb246IHN5c3RlbUluZm8/LnJldmlzaW9uIHx8IG51bGwsXG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlRm9ybWF0dGVkRGVidWdJbmZvID0gKCkgPT5cbiAgICBKU09OLnN0cmluZ2lmeSh1c2VEZWJ1Z0luZm8oKSwgdW5kZWZpbmVkLCAyKVxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
import React, { createContext, useContext } from 'react';
|
|
3
|
+
const headerBarContext = createContext({
|
|
4
|
+
updateAvailable: false,
|
|
5
|
+
onApplyAvailableUpdate: () => { },
|
|
6
|
+
});
|
|
7
|
+
export const HeaderBarContextProvider = (params) => {
|
|
8
|
+
const { updateAvailable, onApplyAvailableUpdate, children, } = params;
|
|
9
|
+
return (React.createElement(headerBarContext.Provider, { value: { updateAvailable, onApplyAvailableUpdate } }, children));
|
|
10
|
+
};
|
|
11
|
+
HeaderBarContextProvider.propTypes = {
|
|
12
|
+
children: PropTypes.node,
|
|
13
|
+
updateAvailable: PropTypes.bool,
|
|
14
|
+
onApplyAvailableUpdate: PropTypes.func,
|
|
15
|
+
};
|
|
16
|
+
export const useHeaderBarContext = () => useContext(headerBarContext);
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhci1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbmctZGhpczItdWkvc3JjL2xpYi9tb2R1bGVzL2hlYWRlci1iYXIvdXRpbHMvaGVhZGVyLWJhci1jb250ZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxLQUFLLEVBQUUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRXhELE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0lBQ25DLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLHNCQUFzQixFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7Q0FDbkMsQ0FBQyxDQUFBO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFXLEVBQUUsRUFBRTtJQUNwRCxNQUFNLEVBQ0YsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixRQUFRLEdBQ1gsR0FBRyxNQUFNLENBQUM7SUFDWCxPQUFPLENBQ0gsb0JBQUMsZ0JBQWdCLENBQUMsUUFBUSxJQUN0QixLQUFLLEVBQUUsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsSUFFakQsUUFBUSxDQUNlLENBQy9CLENBQUE7QUFDTCxDQUFDLENBQUE7QUFDRCx3QkFBd0IsQ0FBQyxTQUFTLEdBQUc7SUFDakMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJO0lBQ3hCLGVBQWUsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUMvQixzQkFBc0IsRUFBRSxTQUFTLENBQUMsSUFBSTtDQUN6QyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBoZWFkZXJCYXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gICAgdXBkYXRlQXZhaWxhYmxlOiBmYWxzZSxcbiAgICBvbkFwcGx5QXZhaWxhYmxlVXBkYXRlOiAoKSA9PiB7fSxcbn0pXG5cbmV4cG9ydCBjb25zdCBIZWFkZXJCYXJDb250ZXh0UHJvdmlkZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIHVwZGF0ZUF2YWlsYWJsZSxcbiAgICAgICAgb25BcHBseUF2YWlsYWJsZVVwZGF0ZSxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgfSA9IHBhcmFtcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8aGVhZGVyQmFyQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgICAgdmFsdWU9e3sgdXBkYXRlQXZhaWxhYmxlLCBvbkFwcGx5QXZhaWxhYmxlVXBkYXRlIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9oZWFkZXJCYXJDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbn1cbkhlYWRlckJhckNvbnRleHRQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIHVwZGF0ZUF2YWlsYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25BcHBseUF2YWlsYWJsZVVwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG59XG5cbmV4cG9ydCBjb25zdCB1c2VIZWFkZXJCYXJDb250ZXh0ID0gKCkgPT4gdXNlQ29udGV4dChoZWFkZXJCYXJDb250ZXh0KVxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import i18n from '@dhis2/d2-i18n';
|
|
2
|
+
import { colors } from '@dhis2/ui-constants';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { HeaderBarData } from '../models';
|
|
6
|
+
import Apps from './apps';
|
|
7
|
+
import { Logo } from './logo';
|
|
8
|
+
import { Notifications } from './notifications';
|
|
9
|
+
import Profile from './profile';
|
|
10
|
+
import { Title } from './title';
|
|
11
|
+
export const HeaderBar = ({ appName, data, className }) => {
|
|
12
|
+
const loading = false;
|
|
13
|
+
const error = null;
|
|
14
|
+
// See https://jira.dhis2.org/browse/LIBS-180
|
|
15
|
+
if (!loading && !error) {
|
|
16
|
+
// TODO: This will run every render which is probably wrong!
|
|
17
|
+
// Also, setting the global locale shouldn't be done in the headerbar
|
|
18
|
+
const locale = data.user['settings']['keyUiLocale'] || 'en';
|
|
19
|
+
i18n.setDefaultNamespace('default');
|
|
20
|
+
i18n.changeLanguage(locale);
|
|
21
|
+
}
|
|
22
|
+
{
|
|
23
|
+
/* TODO: Find better way to attach base URL */
|
|
24
|
+
}
|
|
25
|
+
const baseUrl = '../../../';
|
|
26
|
+
return (React.createElement("header", { className: className },
|
|
27
|
+
React.createElement("div", { className: "main" }, !loading && !error && (React.createElement(React.Fragment, null,
|
|
28
|
+
React.createElement(Logo, { baseUrl: baseUrl }),
|
|
29
|
+
React.createElement(Title, { app: appName, instance: data.title['applicationTitle'] }),
|
|
30
|
+
React.createElement("div", { className: "right-control-spacer" }),
|
|
31
|
+
React.createElement(Notifications, { interpretations: data.notifications.unreadInterpretations, messages: data.notifications.unreadMessageConversations, userAuthorities: data.user['authorities'] }),
|
|
32
|
+
React.createElement(Apps, { apps: data.apps, baseUrl: baseUrl }),
|
|
33
|
+
React.createElement(Profile, { name: data.user['name'], email: data.user['email'], avatarId: (data.user['avatar'] || {})['id'], helpUrl: data.help.helpPageLink })))),
|
|
34
|
+
React.createElement("style", { jsx: true }, `
|
|
35
|
+
.main {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: row;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: space-between;
|
|
40
|
+
background-color: #2c6693;
|
|
41
|
+
color: ${colors.white};
|
|
42
|
+
height: 48px;
|
|
43
|
+
}
|
|
44
|
+
.right-control-spacer {
|
|
45
|
+
margin-left: auto;
|
|
46
|
+
}
|
|
47
|
+
`)));
|
|
48
|
+
};
|
|
49
|
+
HeaderBar.propTypes = {
|
|
50
|
+
appName: PropTypes.string,
|
|
51
|
+
data: HeaderBarData,
|
|
52
|
+
className: PropTypes.string,
|
|
53
|
+
updateAvailable: PropTypes.bool,
|
|
54
|
+
onApplyAvailableUpdate: PropTypes.func,
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL2hlYWRlci1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxJQUFJLE1BQU0sUUFBUSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sT0FBTyxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBUWhDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQWlCLEVBQUUsRUFBRTtJQUN2RSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBRW5CLDZDQUE2QztJQUM3QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ3RCLDREQUE0RDtRQUM1RCxxRUFBcUU7UUFDckUsTUFBTSxNQUFNLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDN0I7SUFFRDtRQUNFLDhDQUE4QztLQUMvQztJQUNELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQztJQUU1QixPQUFPLENBQ0wsZ0NBQVEsU0FBUyxFQUFFLFNBQVM7UUFDMUIsNkJBQUssU0FBUyxFQUFDLE1BQU0sSUFDbEIsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksQ0FDckI7WUFDRSxvQkFBQyxJQUFJLElBQUMsT0FBTyxFQUFFLE9BQU8sR0FBSTtZQUUxQixvQkFBQyxLQUFLLElBQ0osR0FBRyxFQUFFLE9BQU8sRUFDWixRQUFRLEVBQUcsSUFBSSxDQUFDLEtBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUNqRDtZQUVGLDZCQUFLLFNBQVMsRUFBQyxzQkFBc0IsR0FBRztZQUt4QyxvQkFBQyxhQUFhLElBQ1osZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQ3pELFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLDBCQUEwQixFQUN2RCxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQVEsR0FDaEQ7WUFDRixvQkFBQyxJQUFJLElBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBSTtZQUUzQyxvQkFBQyxPQUFPLElBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFXLEVBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBVyxFQUNuQyxRQUFRLEVBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBUyxDQUFDLElBQUksQ0FBQyxFQUNwRCxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQy9CLENBQ0QsQ0FDSixDQUNHO1FBSU4sK0JBQU8sR0FBRyxVQUFFOzs7Ozs7O21CQU9DLE1BQU0sQ0FBQyxLQUFLOzs7Ozs7T0FNeEIsQ0FBUyxDQUNILENBQ1YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDcEIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQ3pCLElBQUksRUFBRSxhQUFhO0lBQ25CLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtJQUMzQixlQUFlLEVBQUUsU0FBUyxDQUFDLElBQUk7SUFDL0Isc0JBQXNCLEVBQUUsU0FBUyxDQUFDLElBQUk7Q0FDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpMThuIGZyb20gJ0BkaGlzMi9kMi1pMThuJztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ0BkaGlzMi91aS1jb25zdGFudHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIZWFkZXJCYXJEYXRhIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCBBcHBzIGZyb20gJy4vYXBwcyc7XG5pbXBvcnQgeyBMb2dvIH0gZnJvbSAnLi9sb2dvJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnMgfSBmcm9tICcuL25vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IFByb2ZpbGUgZnJvbSAnLi9wcm9maWxlJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi90aXRsZSc7XG5cbmludGVyZmFjZSBIZWFkZXJCYXJQcm9wIHtcbiAgYXBwTmFtZTogc3RyaW5nO1xuICBkYXRhOiBIZWFkZXJCYXJEYXRhO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBIZWFkZXJCYXIgPSAoeyBhcHBOYW1lLCBkYXRhLCBjbGFzc05hbWUgfTogSGVhZGVyQmFyUHJvcCkgPT4ge1xuICBjb25zdCBsb2FkaW5nID0gZmFsc2U7XG4gIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICAvLyBTZWUgaHR0cHM6Ly9qaXJhLmRoaXMyLm9yZy9icm93c2UvTElCUy0xODBcbiAgaWYgKCFsb2FkaW5nICYmICFlcnJvcikge1xuICAgIC8vIFRPRE86IFRoaXMgd2lsbCBydW4gZXZlcnkgcmVuZGVyIHdoaWNoIGlzIHByb2JhYmx5IHdyb25nIVxuICAgIC8vIEFsc28sIHNldHRpbmcgdGhlIGdsb2JhbCBsb2NhbGUgc2hvdWxkbid0IGJlIGRvbmUgaW4gdGhlIGhlYWRlcmJhclxuICAgIGNvbnN0IGxvY2FsZSA9IChkYXRhLnVzZXJbJ3NldHRpbmdzJ10gYXMgYW55KVsna2V5VWlMb2NhbGUnXSB8fCAnZW4nO1xuICAgIGkxOG4uc2V0RGVmYXVsdE5hbWVzcGFjZSgnZGVmYXVsdCcpO1xuICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobG9jYWxlKTtcbiAgfVxuXG4gIHtcbiAgICAvKiBUT0RPOiBGaW5kIGJldHRlciB3YXkgdG8gYXR0YWNoIGJhc2UgVVJMICovXG4gIH1cbiAgY29uc3QgYmFzZVVybCA9ICcuLi8uLi8uLi8nO1xuXG4gIHJldHVybiAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1haW5cIj5cbiAgICAgICAgeyFsb2FkaW5nICYmICFlcnJvciAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxMb2dvIGJhc2VVcmw9e2Jhc2VVcmx9IC8+XG5cbiAgICAgICAgICAgIDxUaXRsZVxuICAgICAgICAgICAgICBhcHA9e2FwcE5hbWV9XG4gICAgICAgICAgICAgIGluc3RhbmNlPXsoZGF0YS50aXRsZSBhcyBhbnkpWydhcHBsaWNhdGlvblRpdGxlJ119XG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJpZ2h0LWNvbnRyb2wtc3BhY2VyXCIgLz5cblxuICAgICAgICAgICAgey8qVE9ETzogRmluZCBiZXR0ZXIgYXBwcm9hY2ggdG8gaGFuZGxlIFBXQSAqL31cbiAgICAgICAgICAgIHsvKiB7J3B3YUVuYWJsZWQnICYmIDxPbmxpbmVTdGF0dXMgLz59ICovfVxuXG4gICAgICAgICAgICA8Tm90aWZpY2F0aW9uc1xuICAgICAgICAgICAgICBpbnRlcnByZXRhdGlvbnM9e2RhdGEubm90aWZpY2F0aW9ucy51bnJlYWRJbnRlcnByZXRhdGlvbnN9XG4gICAgICAgICAgICAgIG1lc3NhZ2VzPXtkYXRhLm5vdGlmaWNhdGlvbnMudW5yZWFkTWVzc2FnZUNvbnZlcnNhdGlvbnN9XG4gICAgICAgICAgICAgIHVzZXJBdXRob3JpdGllcz17ZGF0YS51c2VyWydhdXRob3JpdGllcyddIGFzIGFueX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXBwcyBhcHBzPXtkYXRhLmFwcHN9IGJhc2VVcmw9e2Jhc2VVcmx9IC8+XG5cbiAgICAgICAgICAgIDxQcm9maWxlXG4gICAgICAgICAgICAgIG5hbWU9e2RhdGEudXNlclsnbmFtZSddIGFzIHN0cmluZ31cbiAgICAgICAgICAgICAgZW1haWw9e2RhdGEudXNlclsnZW1haWwnXSBhcyBzdHJpbmd9XG4gICAgICAgICAgICAgIGF2YXRhcklkPXsoKGRhdGEudXNlclsnYXZhdGFyJ10gfHwge30pIGFzIGFueSlbJ2lkJ119XG4gICAgICAgICAgICAgIGhlbHBVcmw9e2RhdGEuaGVscC5oZWxwUGFnZUxpbmt9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiB7J3B3YUVuYWJsZWQnICYmICFsb2FkaW5nICYmICFlcnJvciAmJiA8T25saW5lU3RhdHVzIGRlbnNlIC8+fSAqL31cblxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAubWFpbiB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzY2OTM7XG4gICAgICAgICAgY29sb3I6ICR7Y29sb3JzLndoaXRlfTtcbiAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnJpZ2h0LWNvbnRyb2wtc3BhY2VyIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvaGVhZGVyPlxuICApO1xufTtcblxuSGVhZGVyQmFyLnByb3BUeXBlcyA9IHtcbiAgYXBwTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGF0YTogSGVhZGVyQmFyRGF0YSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVBdmFpbGFibGU6IFByb3BUeXBlcy5ib29sLFxuICBvbkFwcGx5QXZhaWxhYmxlVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const joinPath = (...parts) => {
|
|
2
|
+
const realParts = parts.filter((part) => !!part);
|
|
3
|
+
return realParts.map((part) => part.replace(/^\/+|\/+$/g, '')).join('/');
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbmctZGhpczItdWkvc3JjL2xpYi9tb2R1bGVzL2hlYWRlci1iYXIvdXRpbHMvam9pbi1wYXRoLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQVksRUFBRSxFQUFFO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzVFLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBqb2luUGF0aCA9ICguLi5wYXJ0czogYW55W10pID0+IHtcbiAgICBjb25zdCByZWFsUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpID0+ICEhcGFydClcbiAgICByZXR1cm4gcmVhbFBhcnRzLm1hcCgocGFydCkgPT4gcGFydC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJykpLmpvaW4oJy8nKVxufVxuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { LogoIconWhite } from '@dhis2-ui/logo';
|
|
2
|
+
import { useDataQuery } from '@dhis2/app-runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
const query = {
|
|
5
|
+
customLogo: {
|
|
6
|
+
resource: 'staticContent/logo_banner',
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
const pathExists = (data) => data &&
|
|
10
|
+
data.customLogo &&
|
|
11
|
+
data.customLogo.images &&
|
|
12
|
+
data.customLogo.images.png;
|
|
13
|
+
export const LogoImage = () => {
|
|
14
|
+
const { loading, error, data } = useDataQuery(query);
|
|
15
|
+
if (loading) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
let Logo;
|
|
19
|
+
if (!error && pathExists(data)) {
|
|
20
|
+
Logo = (React.createElement("img", { alt: "Headerbar Logo", src: data.customLogo.images.png }));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
Logo = React.createElement(LogoIconWhite, null);
|
|
24
|
+
}
|
|
25
|
+
return (React.createElement("div", { className: "header-bar-logo" },
|
|
26
|
+
Logo,
|
|
27
|
+
React.createElement("style", { jsx: true }, `
|
|
28
|
+
.header-bar-logo {
|
|
29
|
+
min-width: 48px;
|
|
30
|
+
max-width: 250px;
|
|
31
|
+
height: 48px;
|
|
32
|
+
display: flex;
|
|
33
|
+
-webkit-box-pack: center;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
-webkit-box-align: center;
|
|
36
|
+
align-items: center;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.header-bar-logo svg {
|
|
41
|
+
height: 25px;
|
|
42
|
+
width: 27px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.header-bar-logo img {
|
|
46
|
+
max-height: 100%;
|
|
47
|
+
min-height: auto;
|
|
48
|
+
width: auto;
|
|
49
|
+
}
|
|
50
|
+
`)));
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL2xvZ28taW1hZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDakQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBUXpCLE1BQU0sS0FBSyxHQUFHO0lBQ1YsVUFBVSxFQUFFO1FBQ1IsUUFBUSxFQUFFLDJCQUEyQjtLQUN4QztDQUNKLENBQUE7QUFFRCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQzdCLElBQUk7SUFDSixJQUFJLENBQUMsVUFBVTtJQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtJQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUE7QUFFOUIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUMxQixNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFRLENBQUM7SUFHNUQsSUFBSSxPQUFPLEVBQUU7UUFDVCxPQUFPLElBQUksQ0FBQTtLQUNkO0lBRUQsSUFBSSxJQUFJLENBQUE7SUFDUixJQUFJLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUU1QixJQUFJLEdBQUcsQ0FDSCw2QkFDQSxHQUFHLEVBQUMsZ0JBQWdCLEVBQ3BCLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBRWpDLENBRUQsQ0FBQTtLQUNKO1NBQU07UUFFSCxJQUFJLEdBQUcsb0JBQUMsYUFBYSxPQUFJLENBQUE7S0FFNUI7SUFFRCxPQUFPLENBQ0gsNkJBQUssU0FBUyxFQUFDLGlCQUFpQjtRQUMzQixJQUFJO1FBQ0wsK0JBQU8sR0FBRyxVQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQXVCWCxDQUFTLENBQ1IsQ0FDVCxDQUFBO0FBQ0wsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nb0ljb25XaGl0ZSB9IGZyb20gJ0BkaGlzMi11aS9sb2dvJ1xuaW1wb3J0IHsgdXNlRGF0YVF1ZXJ5IH0gZnJvbSAnQGRoaXMyL2FwcC1ydW50aW1lJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuZGVjbGFyZSBtb2R1bGUgJ3JlYWN0JyB7XG4gICAgaW50ZXJmYWNlIFN0eWxlSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxUPiB7XG4gICAgICBqc3g/OiBib29sZWFuO1xuICAgICAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgICB9XG4gIH1cblxuY29uc3QgcXVlcnkgPSB7XG4gICAgY3VzdG9tTG9nbzoge1xuICAgICAgICByZXNvdXJjZTogJ3N0YXRpY0NvbnRlbnQvbG9nb19iYW5uZXInLFxuICAgIH0sXG59XG5cbmNvbnN0IHBhdGhFeGlzdHMgPSAoZGF0YTogYW55KSA9PlxuICAgIGRhdGEgJiZcbiAgICBkYXRhLmN1c3RvbUxvZ28gJiZcbiAgICBkYXRhLmN1c3RvbUxvZ28uaW1hZ2VzICYmXG4gICAgZGF0YS5jdXN0b21Mb2dvLmltYWdlcy5wbmdcblxuZXhwb3J0IGNvbnN0IExvZ29JbWFnZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IGxvYWRpbmcsIGVycm9yLCBkYXRhIH0gPSB1c2VEYXRhUXVlcnkocXVlcnkpIGFzIGFueTtcblxuICAgXG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBsZXQgTG9nb1xuICAgIGlmICghZXJyb3IgJiYgcGF0aEV4aXN0cyhkYXRhKSkge1xuICAgICAgICBcbiAgICAgICAgTG9nbyA9IChcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGFsdD1cIkhlYWRlcmJhciBMb2dvXCJcbiAgICAgICAgICAgIHNyYz17ZGF0YS5jdXN0b21Mb2dvLmltYWdlcy5wbmd9XG4gICAgICAgICAgXG4gICAgICAgIC8+XG4gICAgICAgICAgIFxuICAgICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgXG4gICAgICAgIExvZ28gPSA8TG9nb0ljb25XaGl0ZSAgLz5cblxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyLWJhci1sb2dvXCI+XG4gICAgICAgICAgICB7TG9nb31cbiAgICAgICAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgICAgICAgICAuaGVhZGVyLWJhci1sb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiA0OHB4O1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIC5oZWFkZXItYmFyLWxvZ28gc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjdweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAuaGVhZGVyLWJhci1sb2dvIGltZyB7XG4gICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGB9PC9zdHlsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { LogoImage } from './logo-image';
|
|
3
|
+
export const Logo = ({ baseUrl }) => {
|
|
4
|
+
return (React.createElement("div", { className: "headerbar-logo", "data-test": "headerbar-logo" },
|
|
5
|
+
React.createElement("a", { href: baseUrl },
|
|
6
|
+
React.createElement(LogoImage, null)),
|
|
7
|
+
React.createElement("style", { jsx: true }, `
|
|
8
|
+
.headerbar-logo {
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
min-width: 49px;
|
|
11
|
+
max-height: 48px;
|
|
12
|
+
margin: 0 12px 0 0;
|
|
13
|
+
border-right: 1px solid rgba(32, 32, 32, 0.15);
|
|
14
|
+
}
|
|
15
|
+
.headerbar-logo:hover {
|
|
16
|
+
background-color: #1a557f;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.headerbar-logo a,
|
|
20
|
+
.headerbar-logo a:hover,
|
|
21
|
+
.headerbar-logo a:focus,
|
|
22
|
+
.headerbar-logo a:active,
|
|
23
|
+
.headerbar-logo a:visited {
|
|
24
|
+
user-select: none;
|
|
25
|
+
}
|
|
26
|
+
.headerbar-logo a:focus {
|
|
27
|
+
outline: 2px solid white;
|
|
28
|
+
outline-offset: -2px;
|
|
29
|
+
}
|
|
30
|
+
.headerbar-logo a:focus:not(:focus-visible) {
|
|
31
|
+
outline: none;
|
|
32
|
+
}
|
|
33
|
+
`)));
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL2xvZ28udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBWXpDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFZLEVBQUUsRUFBRTtJQUM1QyxPQUFPLENBQ0wsNkJBQUssU0FBUyxFQUFDLGdCQUFnQixlQUFXLGdCQUFnQjtRQUN4RCwyQkFBRyxJQUFJLEVBQUUsT0FBTztZQUNkLG9CQUFDLFNBQVMsT0FBRyxDQUNYO1FBRUosK0JBQU8sR0FBRyxVQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCWCxDQUFTLENBQ04sQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnQGRoaXMyL2FwcC1ydW50aW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMb2dvSW1hZ2UgfSBmcm9tICcuL2xvZ28taW1hZ2UnO1xuZGVjbGFyZSBtb2R1bGUgJ3JlYWN0JyB7XG4gIGludGVyZmFjZSBTdHlsZUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8VD4ge1xuICAgIGpzeD86IGJvb2xlYW47XG4gICAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgfVxufVxuXG5pbnRlcmZhY2UgTG9nb1Byb3Age1xuICBiYXNlVXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBMb2dvID0gKHsgYmFzZVVybCB9OiBMb2dvUHJvcCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyYmFyLWxvZ29cIiBkYXRhLXRlc3Q9XCJoZWFkZXJiYXItbG9nb1wiPlxuICAgICAgPGEgaHJlZj17YmFzZVVybH0+XG4gICAgICAgIDxMb2dvSW1hZ2UgLz5cbiAgICAgIDwvYT5cblxuICAgICAgPHN0eWxlIGpzeD57YFxuICAgICAgICAuaGVhZGVyYmFyLWxvZ28ge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgbWluLXdpZHRoOiA0OXB4O1xuICAgICAgICAgIG1heC1oZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgbWFyZ2luOiAwIDEycHggMCAwO1xuICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMzIsIDMyLCAzMiwgMC4xNSk7XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlcmJhci1sb2dvOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWE1NTdmO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlcmJhci1sb2dvIGEsXG4gICAgICAgIC5oZWFkZXJiYXItbG9nbyBhOmhvdmVyLFxuICAgICAgICAuaGVhZGVyYmFyLWxvZ28gYTpmb2N1cyxcbiAgICAgICAgLmhlYWRlcmJhci1sb2dvIGE6YWN0aXZlLFxuICAgICAgICAuaGVhZGVyYmFyLWxvZ28gYTp2aXNpdGVkIHtcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAuaGVhZGVyYmFyLWxvZ28gYTpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHdoaXRlO1xuICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgICB9XG4gICAgICAgIC5oZWFkZXJiYXItbG9nbyBhOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIGB9PC9zdHlsZT5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { colors, theme, spacers } from '@dhis2/ui-constants';
|
|
2
|
+
import { IconMessages24, IconMail24 } from '@dhis2/ui-icons';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
function icon(kind) {
|
|
6
|
+
if (kind === 'message') {
|
|
7
|
+
return React.createElement(IconMessages24, { color: colors.white });
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return React.createElement(IconMail24, { color: colors.white });
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export const NotificationIcon = (params) => {
|
|
14
|
+
const { count, href, kind, dataTestId } = params;
|
|
15
|
+
const notificationClassName = "headerbar-notification-icon " + kind;
|
|
16
|
+
return (React.createElement("a", { href: href, className: notificationClassName, "data-test": dataTestId },
|
|
17
|
+
icon(kind),
|
|
18
|
+
count > 0 && React.createElement("span", { "data-test": `${dataTestId}-count` }, count),
|
|
19
|
+
React.createElement("style", { jsx: true }, `
|
|
20
|
+
.headerbar-notification-icon {
|
|
21
|
+
position: relative;
|
|
22
|
+
margin: 0;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
padding: 0 ${spacers.dp12};
|
|
25
|
+
height: 100%;
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
}
|
|
29
|
+
.headerbar-notification-icon:focus {
|
|
30
|
+
outline: 2px solid white;
|
|
31
|
+
outline-offset: -2px;
|
|
32
|
+
}
|
|
33
|
+
.headerbar-notification-icon:focus:not(:focus-visible) {
|
|
34
|
+
outline: none;
|
|
35
|
+
}
|
|
36
|
+
.headerbar-notification-icon:hover {
|
|
37
|
+
background: #1a557f;
|
|
38
|
+
}
|
|
39
|
+
.headerbar-notification-icon:active {
|
|
40
|
+
background: #104067;
|
|
41
|
+
}
|
|
42
|
+
.headerbar-notification-icon span {
|
|
43
|
+
display: flex;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
align-items: center;
|
|
46
|
+
z-index: 1;
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: 3px;
|
|
49
|
+
right: 2px;
|
|
50
|
+
min-width: 18px;
|
|
51
|
+
min-height: 18px;
|
|
52
|
+
border-radius: ${spacers.dp12};
|
|
53
|
+
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),
|
|
54
|
+
0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
|
55
|
+
background-color: ${theme.secondary500};
|
|
56
|
+
color: ${colors.white};
|
|
57
|
+
font-size: 13px;
|
|
58
|
+
font-weight: 600;
|
|
59
|
+
line-height: 15px;
|
|
60
|
+
text-align: center;
|
|
61
|
+
cursor: inherit;
|
|
62
|
+
padding: 0 ${spacers.dp4};
|
|
63
|
+
}
|
|
64
|
+
`)));
|
|
65
|
+
};
|
|
66
|
+
NotificationIcon.defaultProps = {
|
|
67
|
+
count: 0,
|
|
68
|
+
};
|
|
69
|
+
NotificationIcon.propTypes = {
|
|
70
|
+
href: PropTypes.string.isRequired,
|
|
71
|
+
count: PropTypes.number,
|
|
72
|
+
dataTestId: PropTypes.string,
|
|
73
|
+
message: PropTypes.string,
|
|
74
|
+
kind: PropTypes.oneOf(['interpretation', 'message']),
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWljb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci91dGlscy9ub3RpZmljYXRpb24taWNvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM1RCxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBU3pCLFNBQVMsSUFBSSxDQUFDLElBQVk7SUFDdEIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQ3BCLE9BQU8sb0JBQUMsY0FBYyxJQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxHQUFJLENBQUE7S0FDakQ7U0FBTTtRQUNILE9BQU8sb0JBQUMsVUFBVSxJQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxHQUFJLENBQUE7S0FDN0M7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFXLEVBQUUsRUFBRTtJQUM1QyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ2pELE1BQU0scUJBQXFCLEdBQUcsOEJBQThCLEdBQUcsSUFBSSxDQUFBO0lBQ25FLE9BQU8sQ0FDUCwyQkFBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsZUFBYSxVQUFVO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFVixLQUFLLEdBQUcsQ0FBQyxJQUFJLDJDQUFpQixHQUFHLFVBQVUsUUFBUSxJQUFHLEtBQUssQ0FBUTtRQUVwRSwrQkFBTyxHQUFHLFVBQUU7Ozs7OzZCQUtTLE9BQU8sQ0FBQyxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDQTRCUixPQUFPLENBQUMsSUFBSTs7O29DQUdULEtBQUssQ0FBQyxZQUFZO3lCQUM3QixNQUFNLENBQUMsS0FBSzs7Ozs7OzZCQU1SLE9BQU8sQ0FBQyxHQUFHOztTQUUvQixDQUFTLENBQ1YsQ0FDUCxDQUFBO0FBQUMsQ0FBQyxDQUFBO0FBRUgsZ0JBQWdCLENBQUMsWUFBWSxHQUFHO0lBQzVCLEtBQUssRUFBRSxDQUFDO0NBQ1gsQ0FBQTtBQUVELGdCQUFnQixDQUFDLFNBQVMsR0FBRztJQUN6QixJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO0lBQ2pDLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtJQUN2QixVQUFVLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDNUIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQ3pCLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDdkQsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbG9ycywgdGhlbWUsIHNwYWNlcnMgfSBmcm9tICdAZGhpczIvdWktY29uc3RhbnRzJ1xuaW1wb3J0IHsgSWNvbk1lc3NhZ2VzMjQsIEljb25NYWlsMjQgfSBmcm9tICdAZGhpczIvdWktaWNvbnMnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5kZWNsYXJlIG1vZHVsZSAncmVhY3QnIHtcbiAgICBpbnRlcmZhY2UgU3R5bGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPFQ+IHtcbiAgICAgIGpzeD86IGJvb2xlYW47XG4gICAgICBnbG9iYWw/OiBib29sZWFuO1xuICAgIH1cbiAgfVxuXG5cbmZ1bmN0aW9uIGljb24oa2luZDogc3RyaW5nKSB7XG4gICAgaWYgKGtpbmQgPT09ICdtZXNzYWdlJykge1xuICAgICAgICByZXR1cm4gPEljb25NZXNzYWdlczI0IGNvbG9yPXtjb2xvcnMud2hpdGV9IC8+XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDxJY29uTWFpbDI0IGNvbG9yPXtjb2xvcnMud2hpdGV9IC8+XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgTm90aWZpY2F0aW9uSWNvbiA9IChwYXJhbXM6IGFueSkgPT4ge1xuICAgIGNvbnN0IHsgY291bnQsIGhyZWYsIGtpbmQsIGRhdGFUZXN0SWQgfSA9IHBhcmFtcztcbiAgICBjb25zdCBub3RpZmljYXRpb25DbGFzc05hbWUgPSBcImhlYWRlcmJhci1ub3RpZmljYXRpb24taWNvbiBcIiArIGtpbmRcbiAgICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IGNsYXNzTmFtZT17bm90aWZpY2F0aW9uQ2xhc3NOYW1lfSBkYXRhLXRlc3Q9e2RhdGFUZXN0SWR9PlxuICAgICAgICB7aWNvbihraW5kKX1cblxuICAgICAgICB7Y291bnQgPiAwICYmIDxzcGFuIGRhdGEtdGVzdD17YCR7ZGF0YVRlc3RJZH0tY291bnRgfT57Y291bnR9PC9zcGFuPn1cblxuICAgICAgICA8c3R5bGUganN4PntgXG4gICAgICAgICAgICAuaGVhZGVyYmFyLW5vdGlmaWNhdGlvbi1pY29uIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICR7c3BhY2Vycy5kcDEyfTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmhlYWRlcmJhci1ub3RpZmljYXRpb24taWNvbjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHdoaXRlO1xuICAgICAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmhlYWRlcmJhci1ub3RpZmljYXRpb24taWNvbjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmhlYWRlcmJhci1ub3RpZmljYXRpb24taWNvbjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzFhNTU3ZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5oZWFkZXJiYXItbm90aWZpY2F0aW9uLWljb246YWN0aXZlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTA0MDY3O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmhlYWRlcmJhci1ub3RpZmljYXRpb24taWNvbiBzcGFuIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAzcHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDJweDtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDE4cHg7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAke3NwYWNlcnMuZHAxMn07XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLFxuICAgICAgICAgICAgICAgICAgICAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dGhlbWUuc2Vjb25kYXJ5NTAwfTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjb2xvcnMud2hpdGV9O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAke3NwYWNlcnMuZHA0fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYH08L3N0eWxlPlxuICAgIDwvYT5cbikgfVxuXG5Ob3RpZmljYXRpb25JY29uLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBjb3VudDogMCxcbn1cblxuTm90aWZpY2F0aW9uSWNvbi5wcm9wVHlwZXMgPSB7XG4gICAgaHJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGNvdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGRhdGFUZXN0SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBraW5kOiBQcm9wVHlwZXMub25lT2YoWydpbnRlcnByZXRhdGlvbicsICdtZXNzYWdlJ10pLFxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useConfig } from '@dhis2/app-runtime';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { joinPath } from './join-path';
|
|
5
|
+
import { NotificationIcon } from './notification-icon';
|
|
6
|
+
/*
|
|
7
|
+
AUTHORITIES:
|
|
8
|
+
- ALL: superuser
|
|
9
|
+
- M_dhis-web-interpretation: access to interpretations app
|
|
10
|
+
- M_dhis-web-messaging: access to messaging app
|
|
11
|
+
*/
|
|
12
|
+
const hasAuthority = (userAuthorities, authId) => Array.isArray(userAuthorities) &&
|
|
13
|
+
userAuthorities.some((userAuthId) => userAuthId === 'ALL' || userAuthId === authId);
|
|
14
|
+
export const Notifications = (params) => {
|
|
15
|
+
const { interpretations, messages, userAuthorities, } = params;
|
|
16
|
+
const { baseUrl } = useConfig();
|
|
17
|
+
return (React.createElement("div", { className: "headerbar-notifications", "data-test": "headerbar-notifications" },
|
|
18
|
+
hasAuthority(userAuthorities, 'M_dhis-web-interpretation') && (React.createElement(NotificationIcon, { count: interpretations, href: joinPath(baseUrl, 'dhis-web-interpretation'), kind: "message", dataTestId: "headerbar-interpretations" })),
|
|
19
|
+
hasAuthority(userAuthorities, 'M_dhis-web-messaging') && (React.createElement(NotificationIcon, { message: "email", count: messages, href: joinPath(baseUrl, 'dhis-web-messaging'), kind: "interpretation", dataTestId: "headerbar-messages" })),
|
|
20
|
+
React.createElement("style", { jsx: true }, `
|
|
21
|
+
.headerbar-notifications {
|
|
22
|
+
user-select: none;
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: row;
|
|
25
|
+
align-items: center;
|
|
26
|
+
height: 100%;
|
|
27
|
+
}
|
|
28
|
+
`)));
|
|
29
|
+
};
|
|
30
|
+
Notifications.propTypes = {
|
|
31
|
+
interpretations: PropTypes.number,
|
|
32
|
+
messages: PropTypes.number,
|
|
33
|
+
userAuthorities: PropTypes.arrayOf(PropTypes.string),
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL25vdGlmaWNhdGlvbnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM5QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFTdEQ7Ozs7O0dBS0c7QUFFSCxNQUFNLFlBQVksR0FBRyxDQUFDLGVBQW9CLEVBQUUsTUFBYyxFQUFFLEVBQUUsQ0FDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDOUIsZUFBZSxDQUFDLElBQUksQ0FDaEIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsS0FBSyxLQUFLLElBQUksVUFBVSxLQUFLLE1BQU0sQ0FDaEUsQ0FBQTtBQUVMLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFO0lBQ3pDLE1BQU0sRUFDRixlQUFlLEVBQ2YsUUFBUSxFQUNSLGVBQWUsR0FDbEIsR0FBRyxNQUFNLENBQUM7SUFDWCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUE7SUFFL0IsT0FBTyxDQUNILDZCQUFLLFNBQVMsRUFBQyx5QkFBeUIsZUFBVyx5QkFBeUI7UUFDdkUsWUFBWSxDQUFDLGVBQWUsRUFBRSwyQkFBMkIsQ0FBQyxJQUFJLENBQzNELG9CQUFDLGdCQUFnQixJQUNiLEtBQUssRUFBRSxlQUFlLEVBQ3RCLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLHlCQUF5QixDQUFDLEVBQ2xELElBQUksRUFBQyxTQUFTLEVBQ2QsVUFBVSxFQUFDLDJCQUEyQixHQUN4QyxDQUNMO1FBRUEsWUFBWSxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyxJQUFJLENBQ3RELG9CQUFDLGdCQUFnQixJQUNiLE9BQU8sRUFBQyxPQUFPLEVBQ2YsS0FBSyxFQUFFLFFBQVEsRUFDZixJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxFQUM3QyxJQUFJLEVBQUMsZ0JBQWdCLEVBQ3JCLFVBQVUsRUFBQyxvQkFBb0IsR0FDakMsQ0FDTDtRQUVELCtCQUFPLEdBQUcsVUFBRTs7Ozs7Ozs7YUFRWCxDQUFTLENBQ1IsQ0FDVCxDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsYUFBYSxDQUFDLFNBQVMsR0FBRztJQUN0QixlQUFlLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDakMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQzFCLGVBQWUsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Q0FDdkQsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJ0BkaGlzMi9hcHAtcnVudGltZSdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGpvaW5QYXRoIH0gZnJvbSAnLi9qb2luLXBhdGgnXG5pbXBvcnQgeyBOb3RpZmljYXRpb25JY29uIH0gZnJvbSAnLi9ub3RpZmljYXRpb24taWNvbidcbmRlY2xhcmUgbW9kdWxlICdyZWFjdCcge1xuICAgIGludGVyZmFjZSBTdHlsZUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8VD4ge1xuICAgICAganN4PzogYm9vbGVhbjtcbiAgICAgIGdsb2JhbD86IGJvb2xlYW47XG4gICAgfVxuICB9XG5cblxuLypcbiBBVVRIT1JJVElFUzpcbiAtIEFMTDogc3VwZXJ1c2VyXG4gLSBNX2RoaXMtd2ViLWludGVycHJldGF0aW9uOiBhY2Nlc3MgdG8gaW50ZXJwcmV0YXRpb25zIGFwcFxuIC0gTV9kaGlzLXdlYi1tZXNzYWdpbmc6IGFjY2VzcyB0byBtZXNzYWdpbmcgYXBwXG4gKi9cblxuY29uc3QgaGFzQXV0aG9yaXR5ID0gKHVzZXJBdXRob3JpdGllczogYW55LCBhdXRoSWQ6IHN0cmluZykgPT5cbiAgICBBcnJheS5pc0FycmF5KHVzZXJBdXRob3JpdGllcykgJiZcbiAgICB1c2VyQXV0aG9yaXRpZXMuc29tZShcbiAgICAgICAgKHVzZXJBdXRoSWQpID0+IHVzZXJBdXRoSWQgPT09ICdBTEwnIHx8IHVzZXJBdXRoSWQgPT09IGF1dGhJZFxuICAgIClcblxuZXhwb3J0IGNvbnN0IE5vdGlmaWNhdGlvbnMgPSAocGFyYW1zOiBhbnkpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIGludGVycHJldGF0aW9ucyxcbiAgICAgICAgbWVzc2FnZXMsXG4gICAgICAgIHVzZXJBdXRob3JpdGllcyxcbiAgICB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHsgYmFzZVVybCB9ID0gdXNlQ29uZmlnKClcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyYmFyLW5vdGlmaWNhdGlvbnNcIiBkYXRhLXRlc3Q9XCJoZWFkZXJiYXItbm90aWZpY2F0aW9uc1wiPlxuICAgICAgICAgICAge2hhc0F1dGhvcml0eSh1c2VyQXV0aG9yaXRpZXMsICdNX2RoaXMtd2ViLWludGVycHJldGF0aW9uJykgJiYgKFxuICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25JY29uXG4gICAgICAgICAgICAgICAgICAgIGNvdW50PXtpbnRlcnByZXRhdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e2pvaW5QYXRoKGJhc2VVcmwsICdkaGlzLXdlYi1pbnRlcnByZXRhdGlvbicpfVxuICAgICAgICAgICAgICAgICAgICBraW5kPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUZXN0SWQ9XCJoZWFkZXJiYXItaW50ZXJwcmV0YXRpb25zXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2hhc0F1dGhvcml0eSh1c2VyQXV0aG9yaXRpZXMsICdNX2RoaXMtd2ViLW1lc3NhZ2luZycpICYmIChcbiAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uSWNvblxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICBjb3VudD17bWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e2pvaW5QYXRoKGJhc2VVcmwsICdkaGlzLXdlYi1tZXNzYWdpbmcnKX1cbiAgICAgICAgICAgICAgICAgICAga2luZD1cImludGVycHJldGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVRlc3RJZD1cImhlYWRlcmJhci1tZXNzYWdlc1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxzdHlsZSBqc3g+e2BcbiAgICAgICAgICAgICAgICAuaGVhZGVyYmFyLW5vdGlmaWNhdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGB9PC9zdHlsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG5Ob3RpZmljYXRpb25zLnByb3BUeXBlcyA9IHtcbiAgICBpbnRlcnByZXRhdGlvbnM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgbWVzc2FnZXM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdXNlckF1dGhvcml0aWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useEffect, useMemo } from 'react';
|
|
2
|
+
export const useOnDocClick = (containerRef, hide) => {
|
|
3
|
+
const onDocClick = useMemo(() => {
|
|
4
|
+
return (evt) => {
|
|
5
|
+
if (!containerRef.current) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
if (!containerRef.current.contains(evt.target)) {
|
|
9
|
+
hide();
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
}, [containerRef, hide]);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
document.addEventListener('click', onDocClick);
|
|
16
|
+
return () => {
|
|
17
|
+
document.removeEventListener('click', onDocClick);
|
|
18
|
+
};
|
|
19
|
+
}, [onDocClick]);
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW9uLWRvYy1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25nLWRoaXMyLXVpL3NyYy9saWIvbW9kdWxlcy9oZWFkZXItYmFyL3V0aWxzL3Byb2ZpbGUvdXNlLW9uLWRvYy1jbGljay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFFMUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsWUFBaUIsRUFBRSxJQUFTLEVBQUUsRUFBRTtJQUMxRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQzVCLE9BQU8sQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtnQkFDdkIsT0FBTyxJQUFJLENBQUE7YUFDZDtZQUVELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksRUFBRSxDQUFBO2FBQ1Q7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUE7SUFDTCxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUV4QixTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ1gsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUU5QyxPQUFPLEdBQUcsRUFBRTtZQUNSLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDckQsQ0FBQyxDQUFBO0lBQ0wsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNwQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IHVzZU9uRG9jQ2xpY2sgPSAoY29udGFpbmVyUmVmOiBhbnksIGhpZGU6IGFueSkgPT4ge1xuICAgIGNvbnN0IG9uRG9jQ2xpY2sgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIChldnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZ0LnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICBoaWRlKClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBbY29udGFpbmVyUmVmLCBoaWRlXSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25Eb2NDbGljaylcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbkRvY0NsaWNrKVxuICAgICAgICB9XG4gICAgfSwgW29uRG9jQ2xpY2tdKVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './profile-menu';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9uZy1kaGlzMi11aS9zcmMvbGliL21vZHVsZXMvaGVhZGVyLWJhci91dGlscy9wcm9maWxlLW1lbnUvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb2ZpbGUtbWVudSdcbiJdfQ==
|