@openmrs/esm-home-app 3.1.1 → 3.1.2-pre.103
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/.turbo/turbo-build.log +29 -0
- package/__mocks__/react-i18next.mock.js +49 -0
- package/dist/183.js +1 -0
- package/dist/199.js +1 -0
- package/dist/{319.openmrs-esm-home-app.js → 319.js} +0 -0
- package/dist/354.js +1 -0
- package/dist/499.js +1 -0
- package/dist/520.js +1 -0
- package/dist/54.js +1 -0
- package/dist/574.js +1 -0
- package/dist/59.js +1 -0
- package/dist/709.js +1 -0
- package/dist/784.js +2 -0
- package/dist/784.js.LICENSE.txt +9 -0
- package/dist/858.js +2 -0
- package/dist/858.js.LICENSE.txt +3 -0
- package/dist/870.js +1 -0
- package/dist/97.js +2 -0
- package/dist/97.js.LICENSE.txt +21 -0
- package/dist/994.js +1 -0
- package/dist/main.js +1 -0
- package/dist/openmrs-esm-home-app.js +1 -2
- package/dist/openmrs-esm-home-app.js.buildmanifest.json +248 -67
- package/dist/openmrs-esm-home-app.old +1 -0
- package/jest.config.json +32 -0
- package/package.json +8 -10
- package/setupTests.ts +13 -0
- package/src/dashboard/home-dashboard.component.tsx +15 -27
- package/src/dashboard/{home-dashboard.component.css → home-dashboard.css} +0 -0
- package/src/dashboard/home-dashboard.test.tsx +19 -19
- package/src/dashboard-button/dashboard-button.component.tsx +1 -1
- package/src/dashboard-button/{dashboard-button.component.css → dashboard-button.css} +0 -0
- package/src/helpers/render-with-router.tsx +4 -7
- package/src/index.ts +0 -6
- package/src/openmrs-esm-home-schema.ts +0 -7
- package/src/refapp-links/active-visits.tsx +4 -1
- package/src/refapp-links/appointment-scheduling.tsx +6 -1
- package/src/refapp-links/capture-vitals.tsx +4 -1
- package/src/refapp-links/configure-metadata.tsx +6 -1
- package/src/refapp-links/data-management.tsx +6 -1
- package/src/refapp-links/reports.tsx +6 -1
- package/src/refapp-links/system-administration.tsx +4 -3
- package/src/root.component.tsx +5 -7
- package/src/root.scss +0 -1
- package/src/{root.component.test.tsx → root.test.tsx} +2 -5
- package/translations/en.json +7 -10
- package/babel.config.json +0 -10
- package/dist/212.openmrs-esm-home-app.js +0 -2
- package/dist/212.openmrs-esm-home-app.js.map +0 -1
- package/dist/314.openmrs-esm-home-app.js +0 -2
- package/dist/314.openmrs-esm-home-app.js.map +0 -1
- package/dist/347.openmrs-esm-home-app.js +0 -2
- package/dist/347.openmrs-esm-home-app.js.map +0 -1
- package/dist/410.openmrs-esm-home-app.js +0 -2
- package/dist/410.openmrs-esm-home-app.js.map +0 -1
- package/dist/574.openmrs-esm-home-app.js +0 -1
- package/dist/663.openmrs-esm-home-app.js +0 -2
- package/dist/663.openmrs-esm-home-app.js.map +0 -1
- package/dist/779.openmrs-esm-home-app.js +0 -2
- package/dist/779.openmrs-esm-home-app.js.map +0 -1
- package/dist/898.openmrs-esm-home-app.js +0 -2
- package/dist/898.openmrs-esm-home-app.js.map +0 -1
- package/dist/990.openmrs-esm-home-app.js +0 -2
- package/dist/990.openmrs-esm-home-app.js.map +0 -1
- package/dist/openmrs-esm-home-app.js.map +0 -1
- package/src/assets/placeholder.png +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _openmrs_esm_home_app;(()=>{"use strict";var e,r,t,n,o,a,i,l,s,u,p,f,d,h,c={961:(e,r,t)=>{var n={"./start":()=>t.e(354).then((()=>()=>t(354)))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},m={};function v(e){var r=m[e];if(void 0!==r)return r.exports;var t=m[e]={id:e,loaded:!1,exports:{}};return c[e](t,t.exports,v),t.loaded=!0,t.exports}v.m=c,v.c=m,v.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return v.d(r,{a:r}),r},v.d=(e,r)=>{for(var t in r)v.o(r,t)&&!v.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},v.f={},v.e=e=>Promise.all(Object.keys(v.f).reduce(((r,t)=>(v.f[t](e,r),r)),[])),v.u=e=>e+".js",v.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),v.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@openmrs/esm-home-app:",v.l=(t,n,o,a)=>{if(e[t])e[t].push(n);else{var i,l;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var p=s[u];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==r+o){i=p;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,v.nc&&i.setAttribute("nonce",v.nc),i.setAttribute("data-webpack",r+o),i.src=t),e[t]=[n];var f=(r,n)=>{i.onerror=i.onload=null,clearTimeout(d);var o=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),l&&document.head.appendChild(i)}},v.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},v.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{v.S={};var e={},r={};v.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];v.o(v.S,t)||(v.S[t]={});var a=v.S[t],i="@openmrs/esm-home-app",l=(e,r,t,n)=>{var o=a[e]=a[e]||{},l=o[r];(!l||!l.loaded&&(!n!=!l.eager?n:i>l.from))&&(o[r]={get:t,from:i,eager:!!n})},s=[];return"default"===t&&(l("@openmrs/esm-framework","4.0.0-pre.1",(()=>Promise.all([v.e(858),v.e(268)]).then((()=>()=>v(858))))),l("react-i18next","11.18.3",(()=>Promise.all([v.e(709),v.e(268)]).then((()=>()=>v(709))))),l("react-router-dom","6.3.0",(()=>Promise.all([v.e(97),v.e(268)]).then((()=>()=>v(97))))),l("react","18.2.0",(()=>v.e(784).then((()=>()=>v(784)))))),e[t]=s.length?Promise.all(s).then((()=>e[t]=1)):1}}})(),(()=>{var e;v.g.importScripts&&(e=v.g.location+"");var r=v.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");t.length&&(e=t[t.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),v.p=e})(),t=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=e[n],a=(typeof o)[0];if(n>=r.length)return"u"==a;var i=r[n],l=(typeof i)[0];if(a!=l)return"o"==a&&"n"==l||"s"==l||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}},o=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,t+="u"==(typeof(l=e[a]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var i=[];for(a=1;a<e.length;a++){var l=e[a];i.push(0===l?"not("+s()+")":1===l?"("+s()+" || "+s()+")":2===l?i.pop()+" "+i.pop():o(l))}return s();function s(){return i.pop().replace(/^\((.+)\)$/,"$1")}},a=(e,r)=>{if(0 in e){r=t(r);var n=e[0],o=n<0;o&&(n=-n-1);for(var i=0,l=1,s=!0;;l++,i++){var u,p,f=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(p=(typeof(u=r[i]))[0]))return!s||("u"==f?l>n&&!o:""==f!=o);if("u"==p){if(!s||"u"!=f)return!1}else if(s)if(f==p)if(l<=n){if(u!=e[l])return!1}else{if(o?u>e[l]:u<e[l])return!1;u!=e[l]&&(s=!1)}else if("s"!=f&&"n"!=f){if(o||l<=n)return!1;s=!1,l--}else{if(l<=n||p<f!=o)return!1;s=!1}else"s"!=f&&"n"!=f&&(s=!1,l--)}}var d=[],h=d.pop.bind(d);for(i=1;i<e.length;i++){var c=e[i];d.push(1==c?h()|h():2==c?h()&h():c?a(c,r):!h())}return!!h()},i=(e,r)=>{var t=e[r];return Object.keys(t).reduce(((e,r)=>!e||!t[e].loaded&&n(e,r)?r:e),0)},l=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+o(n)+")",s=(e,r,t,n)=>{var o=i(e,t);return a(n,o)||"undefined"!=typeof console&&console.warn&&console.warn(l(e,t,o,n)),u(e[t][o])},u=e=>(e.loaded=1,e.get()),p=(e=>function(r,t,n,o){var a=v.I(r);return a&&a.then?a.then(e.bind(e,r,v.S[r],t,n,o)):e(0,v.S[r],t,n,o)})(((e,r,t,n,o)=>r&&v.o(r,t)?s(r,0,t,n):o())),f={},d={268:()=>p("default","react",[1,18],(()=>v.e(784).then((()=>()=>v(784))))),335:()=>p("default","@openmrs/esm-framework",[0,4,"x",,"pre"],(()=>Promise.all([v.e(858),v.e(268)]).then((()=>()=>v(858))))),228:()=>p("default","react-router-dom",[1,6],(()=>v.e(97).then((()=>()=>v(97))))),924:()=>p("default","react-i18next",[1,11],(()=>v.e(709).then((()=>()=>v(709)))))},h={54:[228],268:[268],354:[335],924:[924]},v.f.consumes=(e,r)=>{v.o(h,e)&&h[e].forEach((e=>{if(v.o(f,e))return r.push(f[e]);var t=r=>{f[e]=0,v.m[e]=t=>{delete v.c[e],t.exports=r()}},n=r=>{delete f[e],v.m[e]=t=>{throw delete v.c[e],r}};try{var o=d[e]();o.then?r.push(f[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}))},(()=>{var e={177:0};v.f.j=(r,t)=>{var n=v.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(268|924)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=v.p+v.u(r),i=new Error;v.l(a,(t=>{if(v.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[a,i,l]=t,s=0;if(a.some((r=>0!==e[r]))){for(n in i)v.o(i,n)&&(v.m[n]=i[n]);l&&l(v)}for(r&&r(t);s<a.length;s++)o=a[s],v.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunk_openmrs_esm_home_app=self.webpackChunk_openmrs_esm_home_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),v.nc=void 0;var g=v(961);_openmrs_esm_home_app=g})();
|
package/jest.config.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"transform": {
|
|
3
|
+
"^.+\\.tsx?$": "@swc/jest"
|
|
4
|
+
},
|
|
5
|
+
"transformIgnorePatterns": ["/node_modules/(?!@openmrs)"],
|
|
6
|
+
"moduleNameMapper": {
|
|
7
|
+
"\\.(s?css)$": "identity-obj-proxy",
|
|
8
|
+
"^lodash-es/(.*)$": "lodash/$1",
|
|
9
|
+
"@openmrs/esm-framework": "@openmrs/esm-framework/mock",
|
|
10
|
+
"react-i18next": "<rootDir>/__mocks__/react-i18next.mock.js"
|
|
11
|
+
},
|
|
12
|
+
"collectCoverageFrom": [
|
|
13
|
+
"**/src/**/*.tsx",
|
|
14
|
+
"!**/node_modules/**",
|
|
15
|
+
"!**/vendor/**",
|
|
16
|
+
"!**/src/**/*.test.*",
|
|
17
|
+
"!**/src/declarations.d.tsx"
|
|
18
|
+
],
|
|
19
|
+
"coverageThreshold": {
|
|
20
|
+
"global": {
|
|
21
|
+
"statements": 8,
|
|
22
|
+
"branches": 5,
|
|
23
|
+
"functions": 7,
|
|
24
|
+
"lines": 8
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"setupFilesAfterEnv": ["<rootDir>/setupTests.ts"],
|
|
28
|
+
"testEnvironment": "jsdom",
|
|
29
|
+
"testEnvironmentOptions": {
|
|
30
|
+
"url": "http://localhost/"
|
|
31
|
+
}
|
|
32
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmrs/esm-home-app",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.2-pre.103",
|
|
4
4
|
"description": "Homepage microfrontend for the OpenMRS SPA",
|
|
5
5
|
"browser": "dist/openmrs-esm-home-app.js",
|
|
6
6
|
"main": "src/index.ts",
|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
"build": "webpack --mode production",
|
|
14
14
|
"analyze": "webpack --mode=production --env.analyze=true",
|
|
15
15
|
"lint": "eslint src --ext tsx",
|
|
16
|
+
"test": "jest --config jest.config.json --verbose false --passWithNoTests",
|
|
17
|
+
"test-watch": "jest --watch --config jest.config.json",
|
|
16
18
|
"typescript": "tsc",
|
|
17
|
-
"extract-translations": "i18next 'src/**/*.component.tsx'"
|
|
19
|
+
"extract-translations": "i18next 'src/**/*.{component.tsx,tsx}'"
|
|
18
20
|
},
|
|
19
21
|
"browserslist": [
|
|
20
22
|
"extends browserslist-config-openmrs"
|
|
@@ -38,19 +40,15 @@
|
|
|
38
40
|
"url": "https://github.com/openmrs/openmrs-esm-home/issues"
|
|
39
41
|
},
|
|
40
42
|
"dependencies": {
|
|
41
|
-
"@carbon/icons-react": "^10.18.0",
|
|
42
|
-
"carbon-components-react": "^7.25.0",
|
|
43
43
|
"lodash-es": "^4.17.15"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@openmrs/esm-framework": "
|
|
47
|
-
"carbon-components": "10.x",
|
|
48
|
-
"carbon-icons": "7.x",
|
|
46
|
+
"@openmrs/esm-framework": ">=4.x-pre",
|
|
49
47
|
"dayjs": "1.x",
|
|
50
|
-
"react": "
|
|
48
|
+
"react": "18.x",
|
|
51
49
|
"react-i18next": "11.x",
|
|
52
|
-
"react-router-dom": "
|
|
50
|
+
"react-router-dom": "6.x",
|
|
53
51
|
"rxjs": "6.x"
|
|
54
52
|
},
|
|
55
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "eb0e6b4f7de22c8697201455242928d700e7916f"
|
|
56
54
|
}
|
package/setupTests.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
2
|
+
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
openmrsBase: string;
|
|
6
|
+
spaBase: string;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
window.openmrsBase = '/openmrs';
|
|
11
|
+
window.spaBase = '/spa';
|
|
12
|
+
window.getOpenmrsSpaBase = () => '/openmrs/spa/';
|
|
13
|
+
window.HTMLElement.prototype.scrollIntoView = jest.fn();
|
|
@@ -1,40 +1,28 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { match } from 'react-router-dom';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
4
2
|
import { useConfig, ExtensionSlot, Extension } from '@openmrs/esm-framework';
|
|
5
3
|
import DashboardButton from '../dashboard-button/dashboard-button.component';
|
|
6
|
-
import styles from './home-dashboard.
|
|
4
|
+
import styles from './home-dashboard.css';
|
|
7
5
|
|
|
8
|
-
export
|
|
9
|
-
match: match;
|
|
10
|
-
canSearch: boolean;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export default function HomeDashboard({ match, canSearch }: HomeDashboardProps) {
|
|
6
|
+
export default function HomeDashboard() {
|
|
14
7
|
const config = useConfig();
|
|
15
|
-
const { t } = useTranslation();
|
|
16
8
|
|
|
17
9
|
return (
|
|
18
10
|
<>
|
|
19
11
|
<div className={styles.homeDashboard}>
|
|
20
12
|
<section className={styles.mainSection}>
|
|
21
|
-
{
|
|
22
|
-
<
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
{
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
<div className={styles.widgetsArea}>
|
|
35
|
-
<ExtensionSlot extensionSlotName="homepage-widgets-slot" />
|
|
36
|
-
</div>
|
|
37
|
-
)}
|
|
13
|
+
<div className={styles.buttonArea}>
|
|
14
|
+
<ExtensionSlot extensionSlotName="homepage-dashboard-slot">
|
|
15
|
+
<div className={styles.homeButton}>
|
|
16
|
+
<Extension />
|
|
17
|
+
</div>
|
|
18
|
+
</ExtensionSlot>
|
|
19
|
+
{config.buttons.list.map((def) => (
|
|
20
|
+
<DashboardButton {...def} key={def.label} />
|
|
21
|
+
))}
|
|
22
|
+
</div>
|
|
23
|
+
<div className={styles.widgetsArea}>
|
|
24
|
+
<ExtensionSlot extensionSlotName="homepage-widgets-slot" />
|
|
25
|
+
</div>
|
|
38
26
|
</section>
|
|
39
27
|
</div>
|
|
40
28
|
<section className={styles.logoSection}>
|
|
File without changes
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import '@testing-library/
|
|
3
|
-
import {
|
|
4
|
-
import { useConfig as mockUseConfig, UserHasAccess as mockUserHasAccessReact } from '@openmrs/esm-framework';
|
|
2
|
+
import { screen } from '@testing-library/react';
|
|
3
|
+
import { useConfig, UserHasAccess } from '@openmrs/esm-framework';
|
|
5
4
|
import HomeDashboard from './home-dashboard.component';
|
|
6
5
|
import renderWithRouter from '../helpers/render-with-router';
|
|
7
6
|
|
|
8
|
-
const
|
|
7
|
+
const mockedUseConfig = useConfig as jest.Mock;
|
|
8
|
+
const mockedUserHasAccess = UserHasAccess as jest.Mock;
|
|
9
9
|
|
|
10
|
-
function
|
|
11
|
-
return renderWithRouter(<HomeDashboard
|
|
10
|
+
function renderHomeDashboard() {
|
|
11
|
+
return renderWithRouter(<HomeDashboard />);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
it('renders without failing', () => {
|
|
15
|
-
renderHome();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
14
|
it('renders buttons declared in config', () => {
|
|
19
|
-
|
|
15
|
+
mockedUseConfig.mockReturnValue({
|
|
20
16
|
buttons: {
|
|
21
17
|
enabled: true,
|
|
22
18
|
list: [
|
|
@@ -27,20 +23,22 @@ it('renders buttons declared in config', () => {
|
|
|
27
23
|
],
|
|
28
24
|
},
|
|
29
25
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
|
|
27
|
+
renderHomeDashboard();
|
|
28
|
+
|
|
29
|
+
expect(screen.getByRole('link', { name: /Foo/i })).toBeInTheDocument();
|
|
33
30
|
});
|
|
34
31
|
|
|
35
32
|
it('renders selectively based on privileges', () => {
|
|
36
|
-
|
|
33
|
+
mockedUserHasAccess.mockImplementation((props) => {
|
|
37
34
|
if (['View Patients', 'Can Foo'].includes(props.privilege)) {
|
|
38
35
|
return props.children;
|
|
39
36
|
} else {
|
|
40
37
|
return null;
|
|
41
38
|
}
|
|
42
39
|
});
|
|
43
|
-
|
|
40
|
+
|
|
41
|
+
mockedUseConfig.mockReturnValue({
|
|
44
42
|
buttons: {
|
|
45
43
|
enabled: true,
|
|
46
44
|
list: [
|
|
@@ -57,7 +55,9 @@ it('renders selectively based on privileges', () => {
|
|
|
57
55
|
],
|
|
58
56
|
},
|
|
59
57
|
});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
|
|
59
|
+
renderHomeDashboard();
|
|
60
|
+
|
|
61
|
+
expect(screen.getByRole('link', { name: /Foo/i })).toBeInTheDocument();
|
|
62
|
+
expect(screen.queryByRole('link', { name: /Bar/i })).not.toBeInTheDocument();
|
|
63
63
|
});
|
|
File without changes
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Router } from 'react-router-dom';
|
|
2
|
+
import { MemoryRouter, Router } from 'react-router-dom';
|
|
3
3
|
import { createMemoryHistory } from 'history';
|
|
4
4
|
import { render } from '@testing-library/react';
|
|
5
5
|
|
|
6
6
|
export default function renderWithRouter(
|
|
7
7
|
ui,
|
|
8
|
-
{
|
|
9
|
-
route = '/',
|
|
10
|
-
history = createMemoryHistory({ initialEntries: [route] }),
|
|
11
|
-
match = { params: {}, isExact: true, path: '', url: '' },
|
|
12
|
-
} = {},
|
|
8
|
+
{ route = '/', match = { params: {}, isExact: true, path: '', url: '' } } = {},
|
|
13
9
|
) {
|
|
10
|
+
const history = createMemoryHistory({ initialEntries: [route] });
|
|
14
11
|
return {
|
|
15
|
-
...render(<
|
|
12
|
+
...render(<MemoryRouter>{ui}</MemoryRouter>),
|
|
16
13
|
history,
|
|
17
14
|
match,
|
|
18
15
|
};
|
package/src/index.ts
CHANGED
|
@@ -41,7 +41,6 @@ function setupOpenMRS() {
|
|
|
41
41
|
extensions: [
|
|
42
42
|
{
|
|
43
43
|
id: 'active-visits-link',
|
|
44
|
-
slot: 'app-menu-slot',
|
|
45
44
|
load: getAsyncLifecycle(() => import('./refapp-links/active-visits'), options),
|
|
46
45
|
privilege: 'App: coreapps.activeVisits',
|
|
47
46
|
online: true,
|
|
@@ -49,7 +48,6 @@ function setupOpenMRS() {
|
|
|
49
48
|
},
|
|
50
49
|
{
|
|
51
50
|
id: 'capture-vitals-link',
|
|
52
|
-
slot: 'app-menu-slot',
|
|
53
51
|
load: getAsyncLifecycle(() => import('./refapp-links/capture-vitals'), options),
|
|
54
52
|
privilege: 'App: referenceapplication.vitals',
|
|
55
53
|
online: true,
|
|
@@ -57,7 +55,6 @@ function setupOpenMRS() {
|
|
|
57
55
|
},
|
|
58
56
|
{
|
|
59
57
|
id: 'appointment-scheduling-link',
|
|
60
|
-
slot: 'app-menu-slot',
|
|
61
58
|
load: getAsyncLifecycle(() => import('./refapp-links/appointment-scheduling'), options),
|
|
62
59
|
privilege: 'App: appointmentschedulingui.home',
|
|
63
60
|
online: true,
|
|
@@ -65,7 +62,6 @@ function setupOpenMRS() {
|
|
|
65
62
|
},
|
|
66
63
|
{
|
|
67
64
|
id: 'reports-link',
|
|
68
|
-
slot: 'app-menu-slot',
|
|
69
65
|
load: getAsyncLifecycle(() => import('./refapp-links/reports'), options),
|
|
70
66
|
privilege: 'View Reports',
|
|
71
67
|
online: true,
|
|
@@ -73,7 +69,6 @@ function setupOpenMRS() {
|
|
|
73
69
|
},
|
|
74
70
|
{
|
|
75
71
|
id: 'data-management-link',
|
|
76
|
-
slot: 'app-menu-slot',
|
|
77
72
|
load: getAsyncLifecycle(() => import('./refapp-links/data-management'), options),
|
|
78
73
|
privilege: 'App: coreapps.dataManagement',
|
|
79
74
|
online: true,
|
|
@@ -81,7 +76,6 @@ function setupOpenMRS() {
|
|
|
81
76
|
},
|
|
82
77
|
{
|
|
83
78
|
id: 'configure-metadata-link',
|
|
84
|
-
slot: 'app-menu-slot',
|
|
85
79
|
load: getAsyncLifecycle(() => import('./refapp-links/configure-metadata'), options),
|
|
86
80
|
privilege: 'App: coreapps.configuremetadata',
|
|
87
81
|
online: true,
|
|
@@ -34,11 +34,4 @@ export const esmHomeSchema = {
|
|
|
34
34
|
_validators: [validators.isUrlWithTemplateParameters(['patientUuid'])],
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
|
-
widgets: {
|
|
38
|
-
enabled: {
|
|
39
|
-
_type: Type.Boolean,
|
|
40
|
-
_default: true,
|
|
41
|
-
_description: 'Whether to show widgets on the home page (including extensions)',
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
37
|
};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
|
|
4
5
|
export default function ActiveVisits() {
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
|
|
5
8
|
return (
|
|
6
9
|
<ConfigurableLink to="${openmrsBase}/coreapps/activeVisits.page?app=coreapps.activeVisits">
|
|
7
|
-
Active Visits
|
|
10
|
+
{t('activeVisits', 'Active Visits')}
|
|
8
11
|
</ConfigurableLink>
|
|
9
12
|
);
|
|
10
13
|
}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
|
|
4
5
|
export default function AppointmentScheduling() {
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
|
|
5
8
|
return (
|
|
6
|
-
<ConfigurableLink to="${openmrsBase}/appointmentschedulingui/home.page">
|
|
9
|
+
<ConfigurableLink to="${openmrsBase}/appointmentschedulingui/home.page">
|
|
10
|
+
{t('appointmentScheduling', 'Appointment Scheduling')}
|
|
11
|
+
</ConfigurableLink>
|
|
7
12
|
);
|
|
8
13
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
|
|
4
5
|
export default function CaptureVitals() {
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
|
|
5
8
|
return (
|
|
6
9
|
<ConfigurableLink to="${openmrsBase}/coreapps/findpatient/findPatient.page?app=referenceapplication.vitals">
|
|
7
|
-
Capture Vitals
|
|
10
|
+
{t('captureVitals', 'Capture Vitals')}
|
|
8
11
|
</ConfigurableLink>
|
|
9
12
|
);
|
|
10
13
|
}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
|
|
4
5
|
export default function ConfigureMetadata() {
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
|
|
5
8
|
return (
|
|
6
|
-
<ConfigurableLink to="${openmrsBase}/adminui/metadata/configureMetadata.page">
|
|
9
|
+
<ConfigurableLink to="${openmrsBase}/adminui/metadata/configureMetadata.page">
|
|
10
|
+
{t('configureMetadata', 'Configure Metadata')}
|
|
11
|
+
</ConfigurableLink>
|
|
7
12
|
);
|
|
8
13
|
}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
|
|
4
5
|
export default function DataManagement() {
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
|
|
5
8
|
return (
|
|
6
|
-
<ConfigurableLink to="${openmrsBase}/coreapps/datamanagement/dataManagement.page">
|
|
9
|
+
<ConfigurableLink to="${openmrsBase}/coreapps/datamanagement/dataManagement.page">
|
|
10
|
+
{t('dataManagement', 'Data Management')}
|
|
11
|
+
</ConfigurableLink>
|
|
7
12
|
);
|
|
8
13
|
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
|
|
4
5
|
export default function Reports() {
|
|
5
|
-
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<ConfigurableLink to="${openmrsBase}/reportingui/reportsapp/home.page">{t('reports', 'Reports')}</ConfigurableLink>
|
|
10
|
+
);
|
|
6
11
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
|
|
4
5
|
export default function SystemAdministration() {
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
|
|
5
8
|
return (
|
|
6
|
-
<ConfigurableLink to="${openmrsBase}/
|
|
7
|
-
System Administration
|
|
8
|
-
</ConfigurableLink>
|
|
9
|
+
<ConfigurableLink to="${openmrsBase}/admin">{t('systemAdministration', 'System Administration')}</ConfigurableLink>
|
|
9
10
|
);
|
|
10
11
|
}
|
package/src/root.component.tsx
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { BrowserRouter,
|
|
2
|
+
import { BrowserRouter, Route, Routes } from 'react-router-dom';
|
|
3
3
|
import HomeDashboard from './dashboard/home-dashboard.component';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
canSearch: boolean;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const Root: React.FC<RootProps> = ({ canSearch = true }) => (
|
|
5
|
+
const Root: React.FC = () => (
|
|
10
6
|
<BrowserRouter basename={window.spaBase}>
|
|
11
7
|
<main className="omrs-main-content">
|
|
12
|
-
<
|
|
8
|
+
<Routes>
|
|
9
|
+
<Route path="/home" element={<HomeDashboard />} />
|
|
10
|
+
</Routes>
|
|
13
11
|
</main>
|
|
14
12
|
</BrowserRouter>
|
|
15
13
|
);
|
package/src/root.scss
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import "carbon-components/scss/globals/scss/typography.scss";
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render
|
|
2
|
+
import { render } from '@testing-library/react';
|
|
3
3
|
import Root from './root.component';
|
|
4
4
|
|
|
5
|
-
afterAll(cleanup);
|
|
6
|
-
|
|
7
5
|
window.spaBase = '/';
|
|
8
6
|
|
|
9
7
|
describe(`<Root />`, () => {
|
|
10
|
-
afterEach(cleanup);
|
|
11
8
|
it(`renders without dying`, () => {
|
|
12
|
-
|
|
9
|
+
render(<Root />);
|
|
13
10
|
});
|
|
14
11
|
});
|
package/translations/en.json
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"searchAgain": "Search Again",
|
|
10
|
-
"searchResultsFor": "Search results for:",
|
|
11
|
-
"trySearchWithPatientUniqueID": "Try searching with the patient's unique ID number"
|
|
2
|
+
"activeVisits": "Active Visits",
|
|
3
|
+
"appointmentScheduling": "Appointment Scheduling",
|
|
4
|
+
"captureVitals": "Capture Vitals",
|
|
5
|
+
"configureMetadata": "Configure Metadata",
|
|
6
|
+
"dataManagement": "Data Management",
|
|
7
|
+
"reports": "Reports",
|
|
8
|
+
"systemAdministration": "System Administration"
|
|
12
9
|
}
|
package/babel.config.json
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_home_app=self.webpackChunk_openmrs_esm_home_app||[]).push([[212],{212:(e,a,n)=>{n.r(a),n.d(a,{default:()=>m});var t=n(297),p=n(512);function m(){return t.default.createElement(p.ConfigurableLink,{to:"${openmrsBase}/coreapps/datamanagement/dataManagement.page"},"Data Management")}}}]);
|
|
2
|
-
//# sourceMappingURL=212.openmrs-esm-home-app.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"212.openmrs-esm-home-app.js","mappings":"gLAGe,SAASA,IACtB,OACE,wBAAC,EAAAC,iBAAD,CAAkBC,GAAG,8DAArB","sources":["webpack://@openmrs/esm-home-app/./src/refapp-links/data-management.tsx"],"sourcesContent":["import React from 'react';\nimport { ConfigurableLink } from '@openmrs/esm-framework';\n\nexport default function DataManagement() {\n return (\n <ConfigurableLink to=\"${openmrsBase}/coreapps/datamanagement/dataManagement.page\">Data Management</ConfigurableLink>\n );\n}\n"],"names":["DataManagement","ConfigurableLink","to"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_home_app=self.webpackChunk_openmrs_esm_home_app||[]).push([[314],{314:(e,s,p)=>{p.r(s),p.d(s,{default:()=>i});var a=p(297),t=p(512);function i(){return a.default.createElement(t.ConfigurableLink,{to:"${openmrsBase}/coreapps/activeVisits.page?app=coreapps.activeVisits"},"Active Visits")}}}]);
|
|
2
|
-
//# sourceMappingURL=314.openmrs-esm-home-app.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"314.openmrs-esm-home-app.js","mappings":"gLAGe,SAASA,IACtB,OACE,wBAAC,EAAAC,iBAAD,CAAkBC,GAAG,uEAArB","sources":["webpack://@openmrs/esm-home-app/./src/refapp-links/active-visits.tsx"],"sourcesContent":["import React from 'react';\nimport { ConfigurableLink } from '@openmrs/esm-framework';\n\nexport default function ActiveVisits() {\n return (\n <ConfigurableLink to=\"${openmrsBase}/coreapps/activeVisits.page?app=coreapps.activeVisits\">\n Active Visits\n </ConfigurableLink>\n );\n}\n"],"names":["ActiveVisits","ConfigurableLink","to"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_home_app=self.webpackChunk_openmrs_esm_home_app||[]).push([[347],{347:(e,a,p)=>{p.r(a),p.d(a,{default:()=>r});var n=p(297),t=p(512);function r(){return n.default.createElement(t.ConfigurableLink,{to:"${openmrsBase}/coreapps/findpatient/findPatient.page?app=referenceapplication.vitals"},"Capture Vitals")}}}]);
|
|
2
|
-
//# sourceMappingURL=347.openmrs-esm-home-app.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"347.openmrs-esm-home-app.js","mappings":"gLAGe,SAASA,IACtB,OACE,wBAAC,EAAAC,iBAAD,CAAkBC,GAAG,wFAArB","sources":["webpack://@openmrs/esm-home-app/./src/refapp-links/capture-vitals.tsx"],"sourcesContent":["import React from 'react';\nimport { ConfigurableLink } from '@openmrs/esm-framework';\n\nexport default function CaptureVitals() {\n return (\n <ConfigurableLink to=\"${openmrsBase}/coreapps/findpatient/findPatient.page?app=referenceapplication.vitals\">\n Capture Vitals\n </ConfigurableLink>\n );\n}\n"],"names":["CaptureVitals","ConfigurableLink","to"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_home_app=self.webpackChunk_openmrs_esm_home_app||[]).push([[410],{410:(e,p,r)=>{r.r(p),r.d(p,{default:()=>n});var s=r(297),a=r(512);function n(){return s.default.createElement(a.ConfigurableLink,{to:"${openmrsBase}/reportingui/reportsapp/home.page"},"Reports")}}}]);
|
|
2
|
-
//# sourceMappingURL=410.openmrs-esm-home-app.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"410.openmrs-esm-home-app.js","mappings":"gLAGe,SAASA,IACtB,OAAO,wBAAC,EAAAC,iBAAD,CAAkBC,GAAG,mDAArB","sources":["webpack://@openmrs/esm-home-app/./src/refapp-links/reports.tsx"],"sourcesContent":["import React from 'react';\nimport { ConfigurableLink } from '@openmrs/esm-framework';\n\nexport default function Reports() {\n return <ConfigurableLink to=\"${openmrsBase}/reportingui/reportsapp/home.page\">Reports</ConfigurableLink>;\n}\n"],"names":["Reports","ConfigurableLink","to"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_home_app=self.webpackChunk_openmrs_esm_home_app||[]).push([[574],{574:e=>{e.exports=JSON.parse('{"containing":"containing","found":"Found","noPatientChartsFoundMessage":"Sorry, no patient charts have been found","orPatientName":"OR the patient\'s name(s)","patient":"patient","patientSearchPrompt":"Search for patient","patientSearchText":"Search by patient name OR identifier","searchAgain":"Search Again","searchResultsFor":"Search results for:","trySearchWithPatientUniqueID":"Try searching with the patient\'s unique ID number"}')}}]);
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_openmrs_esm_home_app=self.webpackChunk_openmrs_esm_home_app||[]).push([[663],{663:(n,e,t)=>{t.r(e),t.d(e,{default:()=>f});var o=t(297),a=t(146),r=t(789),i=t(512),s=t(62),m=t.n(s),c=t(598);m()(c.Z,{insert:"head",singleton:!1});const d=c.Z.locals||{};function l(n){const e=`omrs-link omrs-filled-neutral ${d.link}`,t=o.default.createElement("div",{className:d.textContainer},n.label),a=o.default.createElement(i.ConfigurableLink,{className:e,to:n.link},t);return n.requiredPrivilege?o.default.createElement(i.UserHasAccess,{privilege:n.requiredPrivilege},a):a}var h=t(221);m()(h.Z,{insert:"head",singleton:!1});const A=h.Z.locals||{};function u(){return(u=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o])}return n}).apply(this,arguments)}function b({match:n,canSearch:e}){const t=(0,i.useConfig)(),{t:a}=(0,r.useTranslation)();return o.default.createElement(o.default.Fragment,null,o.default.createElement("div",{className:A.homeDashboard},o.default.createElement("section",{className:A.mainSection},t.buttons.enabled&&o.default.createElement("div",{className:A.buttonArea},o.default.createElement(i.ExtensionSlot,{extensionSlotName:"homepage-dashboard-slot"},o.default.createElement("div",{className:A.homeButton},o.default.createElement(i.Extension,null))),t.buttons.list.map((n=>o.default.createElement(l,u({},n,{key:n.label}))))),t.widgets.enabled&&o.default.createElement("div",{className:A.widgetsArea},o.default.createElement(i.ExtensionSlot,{extensionSlotName:"homepage-widgets-slot"})))),o.default.createElement("section",{className:A.logoSection},o.default.createElement("svg",null,o.default.createElement("use",{xlinkHref:"#omrs-logo-full-mono"}))))}function _(){return(_=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o])}return n}).apply(this,arguments)}const f=({canSearch:n=!0})=>o.default.createElement(a.BrowserRouter,{basename:window.spaBase},o.default.createElement("main",{className:"omrs-main-content"},o.default.createElement(a.Route,{path:"/home",exact:!0,component:e=>o.default.createElement(b,_({canSearch:n},e))})))},598:(n,e,t)=>{t.d(e,{Z:()=>s});var o=t(799),a=t.n(o),r=t(609),i=t.n(r)()(a());i.push([n.id,"/* Variables defined in home-dashboard.component.css */\n\n.-esm-home__dashboard-button-component__link___1b0_U {\n height: 7rem;\n width: var(--dashboard-button-width);\n margin: var(--dashboard-button-margin);\n justify-content: center;\n}\n\n.-esm-home__dashboard-button-component__textContainer___Fp8J1 {\n display: inline-flex;\n min-width: 0;\n white-space: normal;\n line-height: 1.5;\n}\n","",{version:3,sources:["webpack://./src/dashboard-button/dashboard-button.component.css"],names:[],mappings:"AAAA,sDAAsD;;AAEtD;EACE,YAAY;EACZ,oCAAoC;EACpC,sCAAsC;EACtC,uBAAuB;AACzB;;AAEA;EACE,oBAAoB;EACpB,YAAY;EACZ,mBAAmB;EACnB,gBAAgB;AAClB",sourcesContent:["/* Variables defined in home-dashboard.component.css */\n\n.link {\n height: 7rem;\n width: var(--dashboard-button-width);\n margin: var(--dashboard-button-margin);\n justify-content: center;\n}\n\n.textContainer {\n display: inline-flex;\n min-width: 0;\n white-space: normal;\n line-height: 1.5;\n}\n"],sourceRoot:""}]),i.locals={link:"-esm-home__dashboard-button-component__link___1b0_U",textContainer:"-esm-home__dashboard-button-component__textContainer___Fp8J1"};const s=i},221:(n,e,t)=>{t.d(e,{Z:()=>s});var o=t(799),a=t.n(o),r=t(609),i=t.n(r)()(a());i.push([n.id,":root {\n --dashboard-button-width: 10rem;\n --dashboard-button-margin: 0.25rem;\n}\n\n.-esm-home__home-dashboard-component__homeDashboard___3mnwW {\n display: flex;\n justify-content: center;\n margin: 0 auto;\n}\n\n.omrs-breakpoint-gt-phone .-esm-home__home-dashboard-component__homeDashboard___3mnwW {\n height: calc(100vh - var(--omrs-topnav-height) - 10rem);\n}\n\n.-esm-home__home-dashboard-component__mainSection___rph1T {\n min-height: 1vh;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-content: flex-start;\n flex-grow: 1;\n}\n\n.-esm-home__home-dashboard-component__searchLinkArea___3dQ9C {\n display: flex;\n flex-basis: 100%;\n justify-content: center;\n margin: 2rem auto;\n}\n\n.-esm-home__home-dashboard-component__buttonArea___1X1xb > div {\n min-height: 1vh;\n display: flex;\n flex-wrap: wrap;\n justify-content: left;\n align-items: center;\n flex-grow: 1;\n}\n\n.-esm-home__home-dashboard-component__label___1aL1c {\n color: var(--omrs-color-interaction);\n margin-left: 0.25rem;\n text-align: center;\n}\n\n.-esm-home__home-dashboard-component__logoSection___3boSj {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n}\n\n.-esm-home__home-dashboard-component__break___2J1JH {\n height: 0;\n flex-basis: 100%;\n}\n\n.omrs-breakpoint-lt-tablet .-esm-home__home-dashboard-component__dashboardLink___3mwkQ {\n width: 80%;\n}\n\n.omrs-breakpoint-gt-phone .-esm-home__home-dashboard-component__dashboardLink___3mwkQ {\n width: 22rem;\n}\n\n.omrs-breakpoint-lt-tablet .-esm-home__home-dashboard-component__buttonArea___1X1xb {\n max-width: calc(\n var(--dashboard-button-width) * 2 + var(--dashboard-button-margin) * 4\n );\n}\n\n.omrs-breakpoint-gt-phone .-esm-home__home-dashboard-component__buttonArea___1X1xb {\n max-width: calc(\n var(--dashboard-button-width) * 3 + var(--dashboard-button-margin) * 6\n );\n}\n\n.omrs-breakpoint-gt-tablet .-esm-home__home-dashboard-component__buttonArea___1X1xb {\n max-width: calc(\n var(--dashboard-button-width) * 4 + var(--dashboard-button-margin) * 8\n );\n}\n\n.-esm-home__home-dashboard-component__homeButton___YfZfF a {\n height: 7rem;\n width: var(--dashboard-button-width);\n margin: var(--dashboard-button-margin);\n justify-content: center;\n white-space: normal;\n}\n\n.-esm-home__home-dashboard-component__widgetsArea___11xrt {\n margin-top: 2rem;\n padding: 0 1rem;\n width: 100%;\n}","",{version:3,sources:["webpack://./src/dashboard/home-dashboard.component.css"],names:[],mappings:"AAAA;EACE,+BAA+B;EAC/B,kCAAkC;AACpC;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,cAAc;AAChB;;AAEA;EACE,uDAAuD;AACzD;;AAEA;EACE,eAAe;EACf,aAAa;EACb,eAAe;EACf,uBAAuB;EACvB,yBAAyB;EACzB,YAAY;AACd;;AAEA;EACE,aAAa;EACb,gBAAgB;EAChB,uBAAuB;EACvB,iBAAiB;AACnB;;AAEA;EACE,eAAe;EACf,aAAa;EACb,eAAe;EACf,qBAAqB;EACrB,mBAAmB;EACnB,YAAY;AACd;;AAEA;EACE,oCAAoC;EACpC,oBAAoB;EACpB,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,YAAY;AACd;;AAEA;EACE,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,YAAY;AACd;;AAEA;EACE;;GAEC;AACH;;AAEA;EACE;;GAEC;AACH;;AAEA;EACE;;GAEC;AACH;;AAEA;EACE,YAAY;EACZ,oCAAoC;EACpC,sCAAsC;EACtC,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,eAAe;EACf,WAAW;AACb",sourcesContent:[":root {\n --dashboard-button-width: 10rem;\n --dashboard-button-margin: 0.25rem;\n}\n\n.homeDashboard {\n display: flex;\n justify-content: center;\n margin: 0 auto;\n}\n\n:global(.omrs-breakpoint-gt-phone) .homeDashboard {\n height: calc(100vh - var(--omrs-topnav-height) - 10rem);\n}\n\n.mainSection {\n min-height: 1vh;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-content: flex-start;\n flex-grow: 1;\n}\n\n.searchLinkArea {\n display: flex;\n flex-basis: 100%;\n justify-content: center;\n margin: 2rem auto;\n}\n\n.buttonArea > div {\n min-height: 1vh;\n display: flex;\n flex-wrap: wrap;\n justify-content: left;\n align-items: center;\n flex-grow: 1;\n}\n\n.label {\n color: var(--omrs-color-interaction);\n margin-left: 0.25rem;\n text-align: center;\n}\n\n.logoSection {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n}\n\n.break {\n height: 0;\n flex-basis: 100%;\n}\n\n:global(.omrs-breakpoint-lt-tablet) .dashboardLink {\n width: 80%;\n}\n\n:global(.omrs-breakpoint-gt-phone) .dashboardLink {\n width: 22rem;\n}\n\n:global(.omrs-breakpoint-lt-tablet) .buttonArea {\n max-width: calc(\n var(--dashboard-button-width) * 2 + var(--dashboard-button-margin) * 4\n );\n}\n\n:global(.omrs-breakpoint-gt-phone) .buttonArea {\n max-width: calc(\n var(--dashboard-button-width) * 3 + var(--dashboard-button-margin) * 6\n );\n}\n\n:global(.omrs-breakpoint-gt-tablet) .buttonArea {\n max-width: calc(\n var(--dashboard-button-width) * 4 + var(--dashboard-button-margin) * 8\n );\n}\n\n.homeButton a {\n height: 7rem;\n width: var(--dashboard-button-width);\n margin: var(--dashboard-button-margin);\n justify-content: center;\n white-space: normal;\n}\n\n.widgetsArea {\n margin-top: 2rem;\n padding: 0 1rem;\n width: 100%;\n}"],sourceRoot:""}]),i.locals={homeDashboard:"-esm-home__home-dashboard-component__homeDashboard___3mnwW",mainSection:"-esm-home__home-dashboard-component__mainSection___rph1T",searchLinkArea:"-esm-home__home-dashboard-component__searchLinkArea___3dQ9C",buttonArea:"-esm-home__home-dashboard-component__buttonArea___1X1xb",label:"-esm-home__home-dashboard-component__label___1aL1c",logoSection:"-esm-home__home-dashboard-component__logoSection___3boSj",break:"-esm-home__home-dashboard-component__break___2J1JH",dashboardLink:"-esm-home__home-dashboard-component__dashboardLink___3mwkQ",homeButton:"-esm-home__home-dashboard-component__homeButton___YfZfF",widgetsArea:"-esm-home__home-dashboard-component__widgetsArea___11xrt"};const s=i},609:n=>{n.exports=function(n){var e=[];return e.toString=function(){return this.map((function(e){var t=n(e);return e[2]?"@media ".concat(e[2]," {").concat(t,"}"):t})).join("")},e.i=function(n,t,o){"string"==typeof n&&(n=[[null,n,""]]);var a={};if(o)for(var r=0;r<this.length;r++){var i=this[r][0];null!=i&&(a[i]=!0)}for(var s=0;s<n.length;s++){var m=[].concat(n[s]);o&&a[m[0]]||(t&&(m[2]?m[2]="".concat(t," and ").concat(m[2]):m[2]=t),e.push(m))}},e}},799:n=>{function e(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,o=new Array(e);t<e;t++)o[t]=n[t];return o}n.exports=function(n){var t,o,a=(o=4,function(n){if(Array.isArray(n))return n}(t=n)||function(n,e){var t=n&&("undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"]);if(null!=t){var o,a,r=[],i=!0,s=!1;try{for(t=t.call(n);!(i=(o=t.next()).done)&&(r.push(o.value),!e||r.length!==e);i=!0);}catch(n){s=!0,a=n}finally{try{i||null==t.return||t.return()}finally{if(s)throw a}}return r}}(t,o)||function(n,t){if(n){if("string"==typeof n)return e(n,t);var o=Object.prototype.toString.call(n).slice(8,-1);return"Object"===o&&n.constructor&&(o=n.constructor.name),"Map"===o||"Set"===o?Array.from(n):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?e(n,t):void 0}}(t,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=a[1],i=a[3];if(!i)return r;if("function"==typeof btoa){var s=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),m="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),c="/*# ".concat(m," */"),d=i.sources.map((function(n){return"/*# sourceURL=".concat(i.sourceRoot||"").concat(n," */")}));return[r].concat(d).concat([c]).join("\n")}return[r].join("\n")}},62:(n,e,t)=>{var o,a=function(){var n={};return function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}n[e]=t}return n[e]}}(),r=[];function i(n){for(var e=-1,t=0;t<r.length;t++)if(r[t].identifier===n){e=t;break}return e}function s(n,e){for(var t={},o=[],a=0;a<n.length;a++){var s=n[a],m=e.base?s[0]+e.base:s[0],c=t[m]||0,d="".concat(m," ").concat(c);t[m]=c+1;var l=i(d),h={css:s[1],media:s[2],sourceMap:s[3]};-1!==l?(r[l].references++,r[l].updater(h)):r.push({identifier:d,updater:b(h,e),references:1}),o.push(d)}return o}function m(n){var e=document.createElement("style"),o=n.attributes||{};if(void 0===o.nonce){var r=t.nc;r&&(o.nonce=r)}if(Object.keys(o).forEach((function(n){e.setAttribute(n,o[n])})),"function"==typeof n.insert)n.insert(e);else{var i=a(n.insert||"head");if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(e)}return e}var c,d=(c=[],function(n,e){return c[n]=e,c.filter(Boolean).join("\n")});function l(n,e,t,o){var a=t?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(n.styleSheet)n.styleSheet.cssText=d(e,a);else{var r=document.createTextNode(a),i=n.childNodes;i[e]&&n.removeChild(i[e]),i.length?n.insertBefore(r,i[e]):n.appendChild(r)}}function h(n,e,t){var o=t.css,a=t.media,r=t.sourceMap;if(a?n.setAttribute("media",a):n.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),n.styleSheet)n.styleSheet.cssText=o;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(o))}}var A=null,u=0;function b(n,e){var t,o,a;if(e.singleton){var r=u++;t=A||(A=m(e)),o=l.bind(null,t,r,!1),a=l.bind(null,t,r,!0)}else t=m(e),o=h.bind(null,t,e),a=function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)};return o(n),function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap)return;o(n=e)}else a()}}n.exports=function(n,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=(void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o));var t=s(n=n||[],e);return function(n){if(n=n||[],"[object Array]"===Object.prototype.toString.call(n)){for(var o=0;o<t.length;o++){var a=i(t[o]);r[a].references--}for(var m=s(n,e),c=0;c<t.length;c++){var d=i(t[c]);0===r[d].references&&(r[d].updater(),r.splice(d,1))}t=m}}}}}]);
|
|
2
|
-
//# sourceMappingURL=663.openmrs-esm-home-app.js.map
|