@mherman22/esm-act-app 1.0.1-pre.22
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/.editorconfig +12 -0
- package/.husky/pre-commit +7 -0
- package/.husky/pre-push +6 -0
- package/.prettierignore +14 -0
- package/.turbo.json +18 -0
- package/.yarn/plugins/@yarnpkg/plugin-outdated.cjs +35 -0
- package/LICENSE +401 -0
- package/README.md +115 -0
- package/SECURITY.md +12 -0
- package/__mocks__/react-i18next.js +50 -0
- package/dist/117.js +1 -0
- package/dist/117.js.map +1 -0
- package/dist/131.css +1 -0
- package/dist/131.css.map +1 -0
- package/dist/131.js +1 -0
- package/dist/131.js.map +1 -0
- package/dist/197.js +1 -0
- package/dist/197.js.map +1 -0
- package/dist/237.js +1 -0
- package/dist/237.js.map +1 -0
- package/dist/29.js +1 -0
- package/dist/29.js.map +1 -0
- package/dist/338.css +1 -0
- package/dist/338.css.map +1 -0
- package/dist/338.js +1 -0
- package/dist/338.js.map +1 -0
- package/dist/362.js +1 -0
- package/dist/362.js.map +1 -0
- package/dist/379.js +1 -0
- package/dist/379.js.map +1 -0
- package/dist/410.js +1 -0
- package/dist/410.js.map +1 -0
- package/dist/430.css +1 -0
- package/dist/430.css.map +1 -0
- package/dist/430.js +1 -0
- package/dist/430.js.map +1 -0
- package/dist/450.css +1 -0
- package/dist/450.css.map +1 -0
- package/dist/450.js +1 -0
- package/dist/450.js.map +1 -0
- package/dist/517.js +1 -0
- package/dist/517.js.map +1 -0
- package/dist/538.js +1 -0
- package/dist/538.js.map +1 -0
- package/dist/578.js +1 -0
- package/dist/578.js.map +1 -0
- package/dist/638.js +1 -0
- package/dist/638.js.map +1 -0
- package/dist/708.css +1 -0
- package/dist/708.css.map +1 -0
- package/dist/708.js +1 -0
- package/dist/708.js.map +1 -0
- package/dist/749.js +1 -0
- package/dist/749.js.map +1 -0
- package/dist/823.css +1 -0
- package/dist/823.css.map +1 -0
- package/dist/823.js +1 -0
- package/dist/823.js.map +1 -0
- package/dist/898.js +1 -0
- package/dist/898.js.map +1 -0
- package/dist/943.js +1 -0
- package/dist/943.js.map +1 -0
- package/dist/957.css +1 -0
- package/dist/957.css.map +1 -0
- package/dist/957.js +43 -0
- package/dist/957.js.map +1 -0
- package/dist/977.js +1 -0
- package/dist/977.js.map +1 -0
- package/dist/98.js +1 -0
- package/dist/98.js.map +1 -0
- package/dist/997.js +1 -0
- package/dist/997.js.map +1 -0
- package/dist/999.js +6 -0
- package/dist/999.js.map +1 -0
- package/dist/mherman22-esm-act-app.js +3 -0
- package/dist/mherman22-esm-act-app.js.buildmanifest.json +781 -0
- package/dist/mherman22-esm-act-app.js.map +1 -0
- package/dist/routes.json +1 -0
- package/eslint.config.mjs +20 -0
- package/package.json +99 -0
- package/prettier.config.js +8 -0
- package/rspack.config.js +1 -0
- package/src/access/act-dashboard-link.component.tsx +16 -0
- package/src/access/screen-access.component.tsx +15 -0
- package/src/access/screen-access.test.tsx +81 -0
- package/src/access/sign-in.test-helper.ts +24 -0
- package/src/act-home/act-home-card.component.tsx +27 -0
- package/src/act-home/act-home-card.scss +25 -0
- package/src/act-home/act-home-dashboard-link.component.tsx +7 -0
- package/src/act-home/act-home-dashboard-link.test.tsx +32 -0
- package/src/act-home/act-home-dashboard.component.tsx +30 -0
- package/src/act-home/act-home-dashboard.test.tsx +43 -0
- package/src/act-home/act-home.meta.ts +8 -0
- package/src/act-home/act-home.scss +22 -0
- package/src/act-home/care-cascade.component.tsx +77 -0
- package/src/act-home/care-cascade.scss +42 -0
- package/src/act-home/care-cascade.test.tsx +128 -0
- package/src/act-home/quick-actions.component.tsx +32 -0
- package/src/act-home/quick-actions.scss +32 -0
- package/src/act-home/quick-actions.test.tsx +51 -0
- package/src/act-home/worklist-tiles.component.tsx +69 -0
- package/src/act-home/worklist-tiles.scss +50 -0
- package/src/act-home/worklist-tiles.test.tsx +133 -0
- package/src/config-schema.test.ts +83 -0
- package/src/config-schema.ts +129 -0
- package/src/declarations.d.ts +19 -0
- package/src/fetch-all.ts +20 -0
- package/src/flag-gaps/flag-gaps.resource.test.ts +57 -0
- package/src/flag-gaps/flag-gaps.resource.ts +69 -0
- package/src/flag-gaps/flag-gaps.scss +19 -0
- package/src/flag-gaps/flag-gaps.workspace.test.tsx +208 -0
- package/src/flag-gaps/flag-gaps.workspace.tsx +149 -0
- package/src/index.ts +33 -0
- package/src/registry/csv.ts +16 -0
- package/src/registry/registry-bpg.test.tsx +84 -0
- package/src/registry/registry-csv.test.tsx +100 -0
- package/src/registry/registry-dashboard-link.component.tsx +7 -0
- package/src/registry/registry-dashboard-link.test.tsx +32 -0
- package/src/registry/registry-filters.test.tsx +218 -0
- package/src/registry/registry-filters.ts +81 -0
- package/src/registry/registry-flags.test.tsx +67 -0
- package/src/registry/registry.component.tsx +255 -0
- package/src/registry/registry.fixture.ts +14 -0
- package/src/registry/registry.meta.ts +6 -0
- package/src/registry/registry.scss +41 -0
- package/src/registry/registry.test.tsx +147 -0
- package/src/reports/report-dataset.resource.test.tsx +189 -0
- package/src/reports/report-dataset.resource.ts +51 -0
- package/src/reports/report-date.test.ts +18 -0
- package/src/reports/report-date.ts +12 -0
- package/src/rhd-flags/rhd-flag-lists.resource.test.tsx +240 -0
- package/src/rhd-flags/rhd-flag-lists.resource.ts +88 -0
- package/src/routes.json +66 -0
- package/src/routes.test.ts +32 -0
- package/tools/i18next-parser.config.js +89 -0
- package/tools/setup-tests.ts +5 -0
- package/tools/update-openmrs-deps.mjs +42 -0
- package/translations/en.json +52 -0
- package/tsconfig.json +24 -0
- package/vitest.config.ts +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mherman22-esm-act-app.js","sources":["webpack://@mherman22/esm-act-app/webpack/runtime/jsonp_chunk_loading","webpack://@mherman22/esm-act-app/webpack/runtime/embed_federation_runtime","webpack://@mherman22/esm-act-app/==void 0","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/runtime/dist/_virtual/_rolldown/runtime.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/runtime/dist/helpers.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/runtime/dist/index.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/runtime/dist/utils.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/_virtual/_rolldown/runtime.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/attachShareScopeMap.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/constant.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/consumes.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/error-codes/dist/error-codes.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/error-codes/dist/getShortErrorMsg.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/getSharedFallbackGetter.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/getUsedExports.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/index.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/init.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/initContainerEntry.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/initializeSharing.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/installInitialConsumes.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/remotes.cjs","webpack://@mherman22/esm-act-app/./node_modules/@module-federation/webpack-bundler-runtime/dist/updateOptions.cjs","webpack://@mherman22/esm-act-app/module_federation/runtime","webpack://@mherman22/esm-act-app/webpack/runtime/compat_get_default_export","webpack://@mherman22/esm-act-app/webpack/runtime/create_fake_namespace_object","webpack://@mherman22/esm-act-app/webpack/runtime/define_property_getters","webpack://@mherman22/esm-act-app/webpack/runtime/ensure_chunk","webpack://@mherman22/esm-act-app/webpack/runtime/get javascript chunk filename","webpack://@mherman22/esm-act-app/webpack/runtime/get mini-css chunk filename","webpack://@mherman22/esm-act-app/webpack/runtime/global","webpack://@mherman22/esm-act-app/webpack/runtime/has_own_property","webpack://@mherman22/esm-act-app/webpack/runtime/load_script","webpack://@mherman22/esm-act-app/webpack/runtime/make_namespace_object","webpack://@mherman22/esm-act-app/webpack/runtime/rspack_version","webpack://@mherman22/esm-act-app/webpack/runtime/sharing","webpack://@mherman22/esm-act-app/webpack/runtime/auto_public_path","webpack://@mherman22/esm-act-app/webpack/runtime/css loading","webpack://@mherman22/esm-act-app/webpack/runtime/consumes_loading","webpack://@mherman22/esm-act-app/webpack/runtime/initialize_exposes","webpack://@mherman22/esm-act-app/webpack/runtime/rspack_unique_id"],"names":["_ref","_ref1","_ref2","_ref3","_ref4","__webpack_require___remotesLoadingData","__webpack_require___remotesLoadingData1","__webpack_require___initializeSharingData","__webpack_require___consumesLoadingData","__webpack_require___consumesLoadingData1","__webpack_require___initializeExposesData","__webpack_require___consumesLoadingData2","__module_federation_runtime_plugins__","plugin","params","__module_federation_remote_infos__","__webpack_require__","override","obj","key","value","merge","fn","Array","_","_obj","_1","_obj1","Object","early","initial","remotesLoadingChunkMapping","remotesLoadingModuleIdToRemoteDataMapping","initializeSharingScopeToInitDataMapping","consumesLoadingChunkMapping","consumesLoadingModuleToConsumeDataMapping","consumesLoadinginstalledModules","initializeSharingInitPromises","initializeSharingInitTokens","containerShareScope","__module_federation_bundler_runtime__","consumesLoadingModuleToHandlerMapping","moduleId","data","shared","scope","stages","stage","name","version","factory","eager","singleton","requiredVersion","strictVersion","shareConfig","isValidValue","val","options","remote","remotesLoadingIdToExternalAndNameMappingMapping","idToRemoteMap","id","remoteData","info","chunkId","promises","initScope","shareScope","remoteEntryInitOptions","module1","getScope","moduleMap","Promise","Error","undefined","Symbol","r","Date","c","e","JSON","i","l","h","s","console","a","u","globalThis","Function","window","document","clearTimeout","setTimeout","d"],"mappings":"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"}
|
package/dist/routes.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":">=2.40.0","rhdflags":">=1.0.0-SNAPSHOT","cohort":">=3.7.3","reportingrest":">=2.0.0"},"extensions":[{"name":"act-home-dashboard-link","slot":"homepage-dashboard-slot","component":"actHomeDashboardLink","meta":{"name":"act-home","slot":"rhd-home-dashboard-slot","title":"actHome"}},{"name":"act-home-dashboard","slot":"rhd-home-dashboard-slot","component":"actHomeDashboard"},{"name":"act-home-quick-actions","slot":"rhd-home-widgets-slot","component":"actHomeQuickActions","order":1},{"name":"act-home-worklists","slot":"rhd-home-widgets-slot","component":"actHomeWorklists","order":2},{"name":"act-home-care-cascade","slot":"rhd-home-widgets-slot","component":"actHomeCareCascade","order":4},{"name":"act-registry-dashboard-link","slot":"homepage-dashboard-slot","component":"registryDashboardLink","meta":{"name":"act-registry","slot":"rhd-registry-dashboard-slot","title":"registry"}},{"name":"act-registry-dashboard","slot":"rhd-registry-dashboard-slot","component":"registryDashboard"}],"workspaces2":[{"name":"rhd-flag-gaps-workspace","component":"flagGapsWorkspace","window":"patient-chart-clinical-forms"}],"version":"1.0.1-pre.22"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import openmrs from '@openmrs/eslint-config';
|
|
2
|
+
|
|
3
|
+
export default [
|
|
4
|
+
{ ignores: ['dist/**', 'coverage/**'] },
|
|
5
|
+
...openmrs,
|
|
6
|
+
{
|
|
7
|
+
rules: {
|
|
8
|
+
'@typescript-eslint/triple-slash-reference': 'error',
|
|
9
|
+
'react-hooks/exhaustive-deps': 'warn',
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
// Playwright fixtures take a callback named `use` and call it, which
|
|
14
|
+
// eslint-plugin-react-hooks reads as React's `use` hook.
|
|
15
|
+
files: ['e2e/**'],
|
|
16
|
+
rules: {
|
|
17
|
+
'react-hooks/rules-of-hooks': 'off',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
];
|
package/package.json
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mherman22/esm-act-app",
|
|
3
|
+
"version": "1.0.1-pre.22",
|
|
4
|
+
"license": "MPL-2.0",
|
|
5
|
+
"description": "ACT 3.0 screens for OpenMRS 3: ACT home, the registry and the missing data behind RHD flags",
|
|
6
|
+
"browser": "dist/mherman22-esm-act-app.js",
|
|
7
|
+
"main": "src/index.ts",
|
|
8
|
+
"source": true,
|
|
9
|
+
"scripts": {
|
|
10
|
+
"start": "openmrs develop",
|
|
11
|
+
"serve": "rspack serve --mode=development",
|
|
12
|
+
"build": "rspack --mode production",
|
|
13
|
+
"analyze": "rspack --mode=production --env analyze=true",
|
|
14
|
+
"lint": "eslint src --max-warnings 0",
|
|
15
|
+
"prettier": "prettier --write \"src/**/*.{ts,tsx}\" --list-different",
|
|
16
|
+
"typescript": "tsc",
|
|
17
|
+
"test": "cross-env TZ=UTC vitest run --passWithNoTests",
|
|
18
|
+
"test:watch": "cross-env TZ=UTC vitest watch",
|
|
19
|
+
"verify": "turbo lint typescript coverage",
|
|
20
|
+
"coverage": "cross-env TZ=UTC vitest run --coverage --passWithNoTests",
|
|
21
|
+
"prepare": "husky install",
|
|
22
|
+
"extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.workspace.tsx' --config ./tools/i18next-parser.config.js"
|
|
23
|
+
},
|
|
24
|
+
"browserslist": [
|
|
25
|
+
"extends browserslist-config-openmrs"
|
|
26
|
+
],
|
|
27
|
+
"keywords": [
|
|
28
|
+
"openmrs",
|
|
29
|
+
"microfrontends",
|
|
30
|
+
"rhd"
|
|
31
|
+
],
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/mherman22/openmrs-esm-act-app.git"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://github.com/mherman22/openmrs-esm-act-app#readme",
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/mherman22/openmrs-esm-act-app/issues"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@carbon/react": "^1.83.0",
|
|
45
|
+
"lodash-es": "^4.17.21"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@openmrs/esm-framework": "10.x",
|
|
49
|
+
"dayjs": "1.x",
|
|
50
|
+
"react": "18.x",
|
|
51
|
+
"react-i18next": "16.x",
|
|
52
|
+
"react-router-dom": "6.x",
|
|
53
|
+
"rxjs": "6.x",
|
|
54
|
+
"swr": "2.x"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@openmrs/eslint-config": "^2.1.0",
|
|
58
|
+
"@openmrs/esm-framework": "next",
|
|
59
|
+
"@openmrs/esm-styleguide": "next",
|
|
60
|
+
"@playwright/test": "^1.52.0",
|
|
61
|
+
"@swc/cli": "^0.3.12",
|
|
62
|
+
"@swc/core": "^1.3.68",
|
|
63
|
+
"@testing-library/dom": "^10.1.0",
|
|
64
|
+
"@testing-library/jest-dom": "^6.4.5",
|
|
65
|
+
"@testing-library/react": "^15.0.6",
|
|
66
|
+
"@testing-library/user-event": "^14.5.2",
|
|
67
|
+
"@types/react": "^18.3.21",
|
|
68
|
+
"@types/react-dom": "^18.3.0",
|
|
69
|
+
"@types/react-router": "^5.1.20",
|
|
70
|
+
"@types/react-router-dom": "^5.3.3",
|
|
71
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
72
|
+
"cross-env": "^10.1.0",
|
|
73
|
+
"dayjs": "^1.11.13",
|
|
74
|
+
"dotenv": "^16.0.3",
|
|
75
|
+
"eslint": "^9.39.0",
|
|
76
|
+
"happy-dom": "^20.0.0",
|
|
77
|
+
"husky": "^8.0.3",
|
|
78
|
+
"i18next": "^25.0.0",
|
|
79
|
+
"i18next-parser": "^9.3.0",
|
|
80
|
+
"lint-staged": "^15.2.2",
|
|
81
|
+
"openmrs": "next",
|
|
82
|
+
"prettier": "^3.3.3",
|
|
83
|
+
"react": "^18.3.1",
|
|
84
|
+
"react-dom": "^18.3.1",
|
|
85
|
+
"react-i18next": "^16.0.0",
|
|
86
|
+
"react-router-dom": "^6.14.1",
|
|
87
|
+
"rxjs": "^6.6.7",
|
|
88
|
+
"swr": "2.5.1",
|
|
89
|
+
"turbo": "^2.5.2",
|
|
90
|
+
"typescript": "^5.0.0",
|
|
91
|
+
"vitest": "^4.1.2"
|
|
92
|
+
},
|
|
93
|
+
"lint-staged": {
|
|
94
|
+
"packages/**/src/**/*.{ts,tsx}": "eslint --cache --fix --max-warnings 0",
|
|
95
|
+
"*.{css,scss,ts,tsx}": "prettier --write --list-different"
|
|
96
|
+
},
|
|
97
|
+
"packageManager": "yarn@4.10.3",
|
|
98
|
+
"stableVersion": "1.0.0"
|
|
99
|
+
}
|
package/rspack.config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('openmrs/default-rspack-config');
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BrowserRouter } from 'react-router-dom';
|
|
3
|
+
import { DashboardExtension } from '@openmrs/esm-framework';
|
|
4
|
+
import { type ActScreen } from '../config-schema';
|
|
5
|
+
import { ScreenAccess } from './screen-access.component';
|
|
6
|
+
|
|
7
|
+
/** An ACT screen's entry in the home app's left nav, shown only to users who may see that screen. */
|
|
8
|
+
export function ActDashboardLink({ screen, meta }: { screen: ActScreen; meta: { name: string; title: string } }) {
|
|
9
|
+
return (
|
|
10
|
+
<ScreenAccess screen={screen}>
|
|
11
|
+
<BrowserRouter>
|
|
12
|
+
<DashboardExtension path={meta.name} title={meta.title} basePath={`${window.spaBase}/home`} />
|
|
13
|
+
</BrowserRouter>
|
|
14
|
+
</ScreenAccess>
|
|
15
|
+
);
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useConfig, userHasAccess, useSession } from '@openmrs/esm-framework';
|
|
3
|
+
import { type ActScreen, type Config } from '../config-schema';
|
|
4
|
+
|
|
5
|
+
/** Whether the signed-in user holds the privilege configured for the ACT screen. */
|
|
6
|
+
export function useScreenAccess(screen: ActScreen) {
|
|
7
|
+
const { screenPrivileges } = useConfig<Config>();
|
|
8
|
+
const { user } = useSession();
|
|
9
|
+
return Boolean(user) && userHasAccess(screenPrivileges[screen], user);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Renders an ACT screen, or its menu entry or widget, only for users who may see that screen. */
|
|
13
|
+
export function ScreenAccess({ screen, children }: { screen: ActScreen; children: React.ReactNode }) {
|
|
14
|
+
return useScreenAccess(screen) ? <>{children}</> : null;
|
|
15
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import { getDefaultsFromConfigSchema, useConfig, userHasAccess, useSession } from '@openmrs/esm-framework';
|
|
5
|
+
import { type Config, configSchema } from '../config-schema';
|
|
6
|
+
import { ScreenAccess } from './screen-access.component';
|
|
7
|
+
|
|
8
|
+
const mockUseConfig = vi.mocked(useConfig<Config>);
|
|
9
|
+
const mockUseSession = vi.mocked(useSession);
|
|
10
|
+
const mockUserHasAccess = vi.mocked(userHasAccess);
|
|
11
|
+
|
|
12
|
+
function signedInWith(privileges: Array<string>, roles: Array<string> = []) {
|
|
13
|
+
mockUseSession.mockReturnValue({
|
|
14
|
+
authenticated: true,
|
|
15
|
+
sessionId: 'session',
|
|
16
|
+
user: {
|
|
17
|
+
uuid: 'user',
|
|
18
|
+
privileges: privileges.map((display) => ({ uuid: display, display })),
|
|
19
|
+
roles: roles.map((display) => ({ uuid: display, display })),
|
|
20
|
+
},
|
|
21
|
+
} as never);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function configWith(screenPrivileges: Partial<Config['screenPrivileges']> = {}) {
|
|
25
|
+
const defaults = getDefaultsFromConfigSchema(configSchema) as Config;
|
|
26
|
+
mockUseConfig.mockReturnValue({
|
|
27
|
+
...defaults,
|
|
28
|
+
screenPrivileges: { ...defaults.screenPrivileges, ...screenPrivileges },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function renderRegistry() {
|
|
33
|
+
render(
|
|
34
|
+
<ScreenAccess screen="registry">
|
|
35
|
+
<p>Registry</p>
|
|
36
|
+
</ScreenAccess>,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
describe('ScreenAccess', () => {
|
|
41
|
+
beforeEach(async () => {
|
|
42
|
+
const { userHasAccess: realUserHasAccess } =
|
|
43
|
+
await vi.importActual<typeof import('@openmrs/esm-api')>('@openmrs/esm-api');
|
|
44
|
+
mockUserHasAccess.mockImplementation(realUserHasAccess);
|
|
45
|
+
configWith();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("shows the screen to a user with the screen's privilege", () => {
|
|
49
|
+
signedInWith(['View Patient Flags']);
|
|
50
|
+
|
|
51
|
+
renderRegistry();
|
|
52
|
+
|
|
53
|
+
expect(screen.getByText('Registry')).toBeInTheDocument();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('hides the screen from a user without it', () => {
|
|
57
|
+
signedInWith(['Get Patients']);
|
|
58
|
+
|
|
59
|
+
renderRegistry();
|
|
60
|
+
|
|
61
|
+
expect(screen.queryByText('Registry')).not.toBeInTheDocument();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('uses the privilege configured for the screen', () => {
|
|
65
|
+
configWith({ registry: 'App: rhd.registry' });
|
|
66
|
+
signedInWith(['View Patient Flags']);
|
|
67
|
+
|
|
68
|
+
renderRegistry();
|
|
69
|
+
|
|
70
|
+
expect(screen.queryByText('Registry')).not.toBeInTheDocument();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('hides the screen when nobody is signed in, even with no privilege configured', () => {
|
|
74
|
+
configWith({ registry: '' });
|
|
75
|
+
mockUseSession.mockReturnValue({ authenticated: false, sessionId: '' } as never);
|
|
76
|
+
|
|
77
|
+
renderRegistry();
|
|
78
|
+
|
|
79
|
+
expect(screen.queryByText('Registry')).not.toBeInTheDocument();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
import { getDefaultsFromConfigSchema, useConfig, userHasAccess, useSession } from '@openmrs/esm-framework';
|
|
3
|
+
import { type Config, configSchema } from '../config-schema';
|
|
4
|
+
import type * as EsmApi from '@openmrs/esm-api';
|
|
5
|
+
|
|
6
|
+
/** Gives ACT home its own privilege, so a widget gated on another screen's privilege is caught. */
|
|
7
|
+
export const homePrivilege = 'App: act.home';
|
|
8
|
+
|
|
9
|
+
/** Signs in a user holding the given privileges, checked with the framework's own userHasAccess. */
|
|
10
|
+
export async function signInWith(privileges: Array<string>, config: Partial<Config> = {}) {
|
|
11
|
+
const { userHasAccess: realUserHasAccess } = await vi.importActual<typeof EsmApi>('@openmrs/esm-api');
|
|
12
|
+
const defaults = getDefaultsFromConfigSchema(configSchema) as Config;
|
|
13
|
+
vi.mocked(userHasAccess).mockImplementation(realUserHasAccess);
|
|
14
|
+
vi.mocked(useConfig<Config>).mockReturnValue({
|
|
15
|
+
...defaults,
|
|
16
|
+
...config,
|
|
17
|
+
screenPrivileges: { ...defaults.screenPrivileges, home: homePrivilege, ...config.screenPrivileges },
|
|
18
|
+
});
|
|
19
|
+
vi.mocked(useSession).mockReturnValue({
|
|
20
|
+
authenticated: true,
|
|
21
|
+
sessionId: 'session',
|
|
22
|
+
user: { uuid: 'user', privileges: privileges.map((display) => ({ uuid: display, display })), roles: [] },
|
|
23
|
+
} as never);
|
|
24
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tile } from '@carbon/react';
|
|
3
|
+
import { ConfigurableLink } from '@openmrs/esm-framework';
|
|
4
|
+
import styles from './act-home-card.scss';
|
|
5
|
+
|
|
6
|
+
/** An ACT home widget's frame: its title, a link to the full screen on the right, then its content. */
|
|
7
|
+
export function ActHomeCard({
|
|
8
|
+
title,
|
|
9
|
+
link,
|
|
10
|
+
children,
|
|
11
|
+
}: {
|
|
12
|
+
title: string;
|
|
13
|
+
link: { label: string; to: string };
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}) {
|
|
16
|
+
return (
|
|
17
|
+
<Tile className={styles.card}>
|
|
18
|
+
<div className={styles.header}>
|
|
19
|
+
<h2 className={styles.title}>{title}</h2>
|
|
20
|
+
<ConfigurableLink to={link.to} className={styles.link}>
|
|
21
|
+
{link.label}
|
|
22
|
+
</ConfigurableLink>
|
|
23
|
+
</div>
|
|
24
|
+
{children}
|
|
25
|
+
</Tile>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@use '@carbon/layout';
|
|
2
|
+
@use '@carbon/type';
|
|
3
|
+
@use '@openmrs/esm-styleguide/src/vars' as *;
|
|
4
|
+
|
|
5
|
+
.card {
|
|
6
|
+
background-color: $ui-02;
|
|
7
|
+
border: 1px solid $ui-03;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.header {
|
|
11
|
+
display: flex;
|
|
12
|
+
justify-content: space-between;
|
|
13
|
+
align-items: baseline;
|
|
14
|
+
margin-bottom: layout.$spacing-05;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.title {
|
|
18
|
+
@include type.type-style('heading-compact-02');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// The home app's dashboard container gives every link width: 100%, which would squeeze the title.
|
|
22
|
+
.header .link {
|
|
23
|
+
width: auto;
|
|
24
|
+
flex: none;
|
|
25
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ActDashboardLink } from '../access/act-dashboard-link.component';
|
|
3
|
+
import { actHomeDashboardMeta } from './act-home.meta';
|
|
4
|
+
|
|
5
|
+
export default function ActHomeDashboardLink() {
|
|
6
|
+
return <ActDashboardLink screen="home" meta={actHomeDashboardMeta} />;
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { render } from '@testing-library/react';
|
|
4
|
+
import { DashboardExtension } from '@openmrs/esm-framework';
|
|
5
|
+
import { homePrivilege, signInWith } from '../access/sign-in.test-helper';
|
|
6
|
+
import ActHomeDashboardLink from './act-home-dashboard-link.component';
|
|
7
|
+
|
|
8
|
+
vi.mock('@openmrs/esm-framework', async (importOriginal) => ({
|
|
9
|
+
...(await importOriginal<object>()),
|
|
10
|
+
DashboardExtension: vi.fn(() => null),
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
describe('ActHomeDashboardLink', () => {
|
|
14
|
+
it('links the home left nav to /home/act-home', async () => {
|
|
15
|
+
window.spaBase = '/openmrs/spa';
|
|
16
|
+
await signInWith([homePrivilege]);
|
|
17
|
+
|
|
18
|
+
render(<ActHomeDashboardLink />);
|
|
19
|
+
|
|
20
|
+
expect(vi.mocked(DashboardExtension).mock.calls[0][0]).toEqual(
|
|
21
|
+
expect.objectContaining({ path: 'act-home', basePath: '/openmrs/spa/home', title: 'actHome' }),
|
|
22
|
+
);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('is hidden from a user without the ACT home privilege', async () => {
|
|
26
|
+
await signInWith(['View Patient Flags']);
|
|
27
|
+
|
|
28
|
+
render(<ActHomeDashboardLink />);
|
|
29
|
+
|
|
30
|
+
expect(vi.mocked(DashboardExtension)).not.toHaveBeenCalled();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Layer, Tile } from '@carbon/react';
|
|
4
|
+
import { ExtensionSlot, useAssignedExtensions } from '@openmrs/esm-framework';
|
|
5
|
+
import { useScreenAccess } from '../access/screen-access.component';
|
|
6
|
+
import { actHomeWidgetsSlot } from './act-home.meta';
|
|
7
|
+
import styles from './act-home.scss';
|
|
8
|
+
|
|
9
|
+
export default function ActHomeDashboard() {
|
|
10
|
+
const { t } = useTranslation();
|
|
11
|
+
const canSeeHome = useScreenAccess('home');
|
|
12
|
+
const widgets = useAssignedExtensions(actHomeWidgetsSlot);
|
|
13
|
+
|
|
14
|
+
if (!canSeeHome) {
|
|
15
|
+
return <p className={styles.message}>{t('noAccessToActHome', 'You do not have access to ACT home.')}</p>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div className={styles.dashboard}>
|
|
20
|
+
<h1 className={styles.title}>{t('actHome', 'ACT home')}</h1>
|
|
21
|
+
{widgets.length ? (
|
|
22
|
+
<ExtensionSlot name={actHomeWidgetsSlot} className={styles.widgets} />
|
|
23
|
+
) : (
|
|
24
|
+
<Layer>
|
|
25
|
+
<Tile className={styles.message}>{t('noActHomeWidgets', 'No widgets have been added to ACT home yet.')}</Tile>
|
|
26
|
+
</Layer>
|
|
27
|
+
)}
|
|
28
|
+
</div>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import { type AssignedExtension, ExtensionSlot, useAssignedExtensions } from '@openmrs/esm-framework';
|
|
5
|
+
import { homePrivilege, signInWith } from '../access/sign-in.test-helper';
|
|
6
|
+
import ActHomeDashboard from './act-home-dashboard.component';
|
|
7
|
+
|
|
8
|
+
const mockUseAssignedExtensions = vi.mocked(useAssignedExtensions);
|
|
9
|
+
|
|
10
|
+
describe('ActHomeDashboard', () => {
|
|
11
|
+
it('shows the ACT home heading and an empty state while no widget is assigned', async () => {
|
|
12
|
+
await signInWith([homePrivilege]);
|
|
13
|
+
mockUseAssignedExtensions.mockReturnValue([]);
|
|
14
|
+
|
|
15
|
+
render(<ActHomeDashboard />);
|
|
16
|
+
|
|
17
|
+
expect(screen.getByRole('heading', { name: 'ACT home' })).toBeInTheDocument();
|
|
18
|
+
expect(screen.getByText('No widgets have been added to ACT home yet.')).toBeInTheDocument();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('renders the widget slot, and no empty state, once a widget is assigned', async () => {
|
|
22
|
+
await signInWith([homePrivilege]);
|
|
23
|
+
mockUseAssignedExtensions.mockReturnValue([{ id: 'widget' } as AssignedExtension]);
|
|
24
|
+
|
|
25
|
+
render(<ActHomeDashboard />);
|
|
26
|
+
|
|
27
|
+
expect(screen.queryByText('No widgets have been added to ACT home yet.')).not.toBeInTheDocument();
|
|
28
|
+
expect(mockUseAssignedExtensions).toHaveBeenCalledWith('rhd-home-widgets-slot');
|
|
29
|
+
expect(vi.mocked(ExtensionSlot).mock.calls[0][0]).toEqual(
|
|
30
|
+
expect.objectContaining({ name: 'rhd-home-widgets-slot' }),
|
|
31
|
+
);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('tells a user without the ACT home privilege that they cannot see it', async () => {
|
|
35
|
+
await signInWith(['View Patient Flags']);
|
|
36
|
+
mockUseAssignedExtensions.mockReturnValue([{ id: 'widget' } as AssignedExtension]);
|
|
37
|
+
|
|
38
|
+
render(<ActHomeDashboard />);
|
|
39
|
+
|
|
40
|
+
expect(screen.queryByRole('heading', { name: 'ACT home' })).not.toBeInTheDocument();
|
|
41
|
+
expect(screen.getByText('You do not have access to ACT home.')).toBeInTheDocument();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** The home app finds this dashboard by `name` (the URL after /home/) and renders its `slot`. */
|
|
2
|
+
export const actHomeDashboardMeta = {
|
|
3
|
+
name: 'act-home',
|
|
4
|
+
slot: 'rhd-home-dashboard-slot',
|
|
5
|
+
title: 'actHome',
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export const actHomeWidgetsSlot = 'rhd-home-widgets-slot';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
@use '@carbon/layout';
|
|
2
|
+
@use '@carbon/type';
|
|
3
|
+
|
|
4
|
+
.dashboard {
|
|
5
|
+
padding: layout.$spacing-07 layout.$spacing-07 layout.$spacing-09;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.title {
|
|
9
|
+
@include type.type-style('heading-05');
|
|
10
|
+
margin-bottom: layout.$spacing-06;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.widgets {
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
gap: layout.$spacing-06;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.message {
|
|
20
|
+
@include type.type-style('body-01');
|
|
21
|
+
padding: layout.$spacing-05;
|
|
22
|
+
}
|