@openmrs/esm-user-onboarding-app 4.0.1-pre.3 → 4.0.1-pre.302

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/.husky/pre-commit +1 -1
  2. package/.tx/config +11 -0
  3. package/README.md +62 -13
  4. package/dist/1119.js +1 -0
  5. package/dist/1197.js +1 -0
  6. package/dist/2146.js +1 -0
  7. package/dist/2690.js +1 -0
  8. package/dist/282.js +2 -0
  9. package/dist/282.js.LICENSE.txt +32 -0
  10. package/dist/282.js.map +1 -0
  11. package/dist/3099.js +1 -0
  12. package/dist/3184.js +2 -0
  13. package/dist/3184.js.LICENSE.txt +14 -0
  14. package/dist/3184.js.map +1 -0
  15. package/dist/3584.js +1 -0
  16. package/dist/3998.js +2 -0
  17. package/dist/{985.js.LICENSE.txt → 3998.js.LICENSE.txt} +0 -20
  18. package/dist/3998.js.map +1 -0
  19. package/dist/4055.js +1 -0
  20. package/dist/4132.js +1 -0
  21. package/dist/4300.js +1 -0
  22. package/dist/4335.js +1 -0
  23. package/dist/4353.js +1 -0
  24. package/dist/4353.js.map +1 -0
  25. package/dist/439.js +1 -0
  26. package/dist/4618.js +1 -0
  27. package/dist/4652.js +1 -0
  28. package/dist/4944.js +1 -0
  29. package/dist/5059.js +1 -0
  30. package/dist/5059.js.map +1 -0
  31. package/dist/5173.js +1 -0
  32. package/dist/5241.js +1 -0
  33. package/dist/5442.js +1 -0
  34. package/dist/5661.js +1 -0
  35. package/dist/6022.js +1 -0
  36. package/dist/6399.js +1 -0
  37. package/dist/6399.js.map +1 -0
  38. package/dist/6468.js +1 -0
  39. package/dist/6478.js +1 -0
  40. package/dist/6478.js.map +1 -0
  41. package/dist/6540.js +2 -0
  42. package/dist/6540.js.map +1 -0
  43. package/dist/6589.js +1 -0
  44. package/dist/6679.js +1 -0
  45. package/dist/6840.js +1 -0
  46. package/dist/6859.js +1 -0
  47. package/dist/7097.js +1 -0
  48. package/dist/7159.js +1 -0
  49. package/dist/723.js +1 -0
  50. package/dist/7617.js +1 -0
  51. package/dist/795.js +1 -0
  52. package/dist/8157.js +2 -0
  53. package/dist/8157.js.LICENSE.txt +24 -0
  54. package/dist/8157.js.map +1 -0
  55. package/dist/8163.js +1 -0
  56. package/dist/8349.js +1 -0
  57. package/dist/8371.js +1 -0
  58. package/dist/844.js +1 -0
  59. package/dist/844.js.map +1 -0
  60. package/dist/8618.js +1 -0
  61. package/dist/8690.js +1 -0
  62. package/dist/8690.js.map +1 -0
  63. package/dist/890.js +1 -0
  64. package/dist/9214.js +1 -0
  65. package/dist/9538.js +1 -0
  66. package/dist/9569.js +1 -0
  67. package/dist/961.js +2 -0
  68. package/dist/961.js.LICENSE.txt +19 -0
  69. package/dist/961.js.map +1 -0
  70. package/dist/986.js +1 -0
  71. package/dist/9879.js +1 -0
  72. package/dist/9895.js +1 -0
  73. package/dist/9900.js +1 -0
  74. package/dist/9913.js +1 -0
  75. package/dist/main.js +1 -1
  76. package/dist/main.js.map +1 -1
  77. package/dist/openmrs-esm-user-onboarding-app.js +1 -1
  78. package/dist/openmrs-esm-user-onboarding-app.js.buildmanifest.json +1043 -105
  79. package/dist/openmrs-esm-user-onboarding-app.js.map +1 -1
  80. package/dist/routes.json +1 -1
  81. package/e2e/README.md +9 -7
  82. package/e2e/core/test.ts +1 -1
  83. package/e2e/fixtures/api.ts +1 -1
  84. package/e2e/pages/home-page.ts +2 -2
  85. package/e2e/specs/onboarding-test.spec.ts +8 -27
  86. package/jest.config.js +3 -2
  87. package/package.json +14 -13
  88. package/src/config-schema.ts +76 -112
  89. package/src/declarations.d.ts +0 -1
  90. package/src/index.ts +1 -1
  91. package/src/root.component.tsx +32 -28
  92. package/src/routes.json +5 -5
  93. package/src/tooltip/tooltip.component.tsx +24 -11
  94. package/src/tooltip/tooltip.scss +17 -17
  95. package/src/tutorial/modal.component.tsx +16 -8
  96. package/src/tutorial/{modal.component.test.tsx → modal.test.tsx} +10 -8
  97. package/src/tutorial/styles.scss +8 -36
  98. package/src/tutorial/{tutorial.tsx → tutorial.component.tsx} +1 -5
  99. package/src/types.ts +15 -5
  100. package/translations/am.json +9 -1
  101. package/translations/ar.json +9 -0
  102. package/translations/ar_SY.json +9 -0
  103. package/translations/bn.json +9 -0
  104. package/translations/cs.json +9 -0
  105. package/translations/de.json +9 -0
  106. package/translations/en_US.json +9 -0
  107. package/translations/es.json +9 -1
  108. package/translations/es_MX.json +9 -0
  109. package/translations/fr.json +9 -1
  110. package/translations/he.json +9 -1
  111. package/translations/hi.json +9 -0
  112. package/translations/hi_IN.json +9 -0
  113. package/translations/id.json +9 -0
  114. package/translations/it.json +9 -0
  115. package/translations/ka.json +9 -0
  116. package/translations/km.json +9 -1
  117. package/translations/ku.json +9 -0
  118. package/translations/ky.json +9 -0
  119. package/translations/lg.json +9 -0
  120. package/translations/ne.json +9 -0
  121. package/translations/pl.json +9 -0
  122. package/translations/pt.json +9 -0
  123. package/translations/pt_BR.json +9 -0
  124. package/translations/qu.json +9 -0
  125. package/translations/ro_RO.json +9 -0
  126. package/translations/ru_RU.json +9 -0
  127. package/translations/si.json +9 -0
  128. package/translations/sq.json +9 -0
  129. package/translations/sw.json +9 -0
  130. package/translations/sw_KE.json +9 -0
  131. package/translations/tr.json +9 -0
  132. package/translations/tr_TR.json +9 -0
  133. package/translations/uk.json +9 -0
  134. package/translations/uz.json +9 -0
  135. package/translations/uz@Latn.json +9 -0
  136. package/translations/uz_UZ.json +9 -0
  137. package/translations/vi.json +9 -0
  138. package/translations/zh.json +9 -0
  139. package/translations/zh_CN.json +9 -0
  140. package/translations/zh_TW.json +9 -0
  141. package/dist/151.js +0 -2
  142. package/dist/151.js.LICENSE.txt +0 -3
  143. package/dist/151.js.map +0 -1
  144. package/dist/197.js +0 -1
  145. package/dist/300.js +0 -1
  146. package/dist/335.js +0 -1
  147. package/dist/422.js +0 -1
  148. package/dist/422.js.map +0 -1
  149. package/dist/540.js +0 -2
  150. package/dist/540.js.map +0 -1
  151. package/dist/55.js +0 -1
  152. package/dist/570.js +0 -1
  153. package/dist/570.js.map +0 -1
  154. package/dist/59.js +0 -1
  155. package/dist/59.js.map +0 -1
  156. package/dist/652.js +0 -1
  157. package/dist/743.js +0 -1
  158. package/dist/743.js.map +0 -1
  159. package/dist/917.js +0 -1
  160. package/dist/917.js.map +0 -1
  161. package/dist/985.js +0 -2
  162. package/dist/985.js.map +0 -1
  163. package/dist/99.js +0 -1
  164. package/src/root.scss +0 -0
  165. /package/dist/{540.js.LICENSE.txt → 6540.js.LICENSE.txt} +0 -0
@@ -1,20 +1,20 @@
1
- @use '@carbon/styles/scss/spacing';
2
- @use '@carbon/styles/scss/type';
3
- @import '~@openmrs/esm-styleguide/src/vars';
1
+ @use '@carbon/layout';
2
+ @use '@carbon/type';
3
+ @use '@openmrs/esm-styleguide/src/vars' as *;
4
4
 
5
5
  .tooltipcontainer {
6
6
  background-color: $ui-02;
7
- padding: spacing.$spacing-05;
7
+ padding: layout.$spacing-05;
8
8
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
9
- max-width: 360px;
10
- border-radius: spacing.$spacing-02;
11
- gap: spacing.$spacing-04;
9
+ max-width: 22.5rem;
10
+ border-radius: layout.$spacing-02;
11
+ gap: layout.$spacing-04;
12
12
 
13
13
  .tooltipheader {
14
14
  display: flex;
15
15
  justify-content: space-between;
16
16
  align-items: center;
17
- margin-bottom: spacing.$spacing-01;
17
+ margin-bottom: layout.$spacing-01;
18
18
 
19
19
  .container {
20
20
  display: flex;
@@ -24,11 +24,11 @@
24
24
 
25
25
  .tooltiptitle {
26
26
  @include type.type-style('heading-02');
27
- margin-bottom: spacing.$spacing-02;
27
+ margin-bottom: layout.$spacing-02;
28
28
  }
29
29
 
30
30
  .closeButton {
31
- min-height: 16px;
31
+ min-height: layout.$spacing-05;
32
32
  padding: 0;
33
33
  align-self: flex-start;
34
34
  }
@@ -38,12 +38,12 @@
38
38
  color: $color-gray-70;
39
39
  @include type.type-style('body-compact-01');
40
40
  width: 100%;
41
- margin-top: spacing.$spacing-01;
41
+ margin-top: layout.$spacing-01;
42
42
  }
43
43
 
44
44
 
45
45
  .tooltipfooter {
46
- margin-top: spacing.$spacing-03;
46
+ margin-top: layout.$spacing-03;
47
47
  display: flex;
48
48
  justify-content: space-between;
49
49
  align-items: center;
@@ -55,27 +55,27 @@
55
55
 
56
56
  .buttonContainer {
57
57
  display: flex;
58
- gap: spacing.$spacing-03;
58
+ gap: layout.$spacing-03;
59
59
 
60
60
  .buttonback,
61
61
  .buttonnext {
62
62
  display: flex;
63
63
  align-items: center;
64
64
  justify-content: center;
65
- padding: spacing.$spacing-02;
66
- width: spacing.$spacing-12;
65
+ padding: layout.$spacing-02;
66
+ width: layout.$spacing-12;
67
67
 
68
68
  .arrowLeft,
69
69
  .arrowContainer {
70
70
  display: flex;
71
71
  align-items: center;
72
72
  justify-content: center;
73
- margin-left: spacing.$spacing-02;
73
+ margin-left: layout.$spacing-02;
74
74
  }
75
75
 
76
76
  .arrowLeft svg {
77
77
  fill: $color-blue-60-2 !important;
78
- margin-right: spacing.$spacing-02;
78
+ margin-right: layout.$spacing-02;
79
79
  }
80
80
  }
81
81
  }
@@ -1,12 +1,17 @@
1
1
  import React from 'react';
2
+ import { ArrowRight } from '@carbon/react/icons';
3
+ import { ModalHeader, ModalBody, Link } from '@carbon/react';
2
4
  import { useTranslation } from 'react-i18next';
3
5
  import { useConfig, useAppContext, navigate } from '@openmrs/esm-framework';
4
- import styles from './styles.scss';
5
6
  import { type TutorialContext } from '../types';
6
- import { ModalHeader, ModalBody, Link } from '@carbon/react';
7
- import { ArrowRight } from '@carbon/react/icons';
7
+ import styles from './styles.scss';
8
+
9
+ interface TutorialModalProps {
10
+ open: boolean;
11
+ onClose: () => void;
12
+ }
8
13
 
9
- const TutorialModal = ({ open, onClose }) => {
14
+ const TutorialModal: React.FC<TutorialModalProps> = ({ open, onClose }) => {
10
15
  const { t } = useTranslation();
11
16
  const config = useConfig();
12
17
  const tutorials = config.tutorialData;
@@ -14,7 +19,7 @@ const TutorialModal = ({ open, onClose }) => {
14
19
 
15
20
  const handleWalkthroughClick = (index: number) => {
16
21
  const basePath = window.getOpenmrsSpaBase();
17
- const homePath = `${basePath}home`;
22
+ const homePath = `${basePath}home/service-queues`;
18
23
  const currentPath = window.location.pathname;
19
24
  const tutorial = tutorials[index];
20
25
 
@@ -40,7 +45,7 @@ const TutorialModal = ({ open, onClose }) => {
40
45
 
41
46
  return (
42
47
  <React.Fragment>
43
- <ModalHeader closeModal={onClose} title={t('tutorial', 'Tutorial')} className={styles.modalHeader}>
48
+ <ModalHeader closeModal={onClose} title={t('tutorial', 'Tutorial')}>
44
49
  <p className={styles.description}>
45
50
  {t('modalDescription', 'Find walkthroughs and video tutorials on some of the core features of OpenMRS.')}
46
51
  </p>
@@ -51,8 +56,11 @@ const TutorialModal = ({ open, onClose }) => {
51
56
  <li className={styles.tutorialItem} key={index}>
52
57
  <h3 className={styles.tutorialTitle}>{tutorial.title}</h3>
53
58
  <p className={styles.tutorialDescription}>{tutorial.description}</p>
54
- <Link onClick={() => handleWalkthroughClick(index)} className={styles.tutorialLink} renderIcon={() =>
55
- <ArrowRight aria-label="Arrow Right" />}>
59
+ <Link
60
+ onClick={() => handleWalkthroughClick(index)}
61
+ className={styles.tutorialLink}
62
+ renderIcon={() => <ArrowRight aria-label="Arrow Right" />}
63
+ >
56
64
  {t('walkthrough', 'Walkthrough')}
57
65
  </Link>
58
66
  </li>
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import {render, screen, waitFor} from '@testing-library/react';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { render, screen, waitFor } from '@testing-library/react';
4
+ import { useAppContext, useConfig, navigate } from '@openmrs/esm-framework';
3
5
  import TutorialModal from './modal.component';
4
- import {useAppContext, useConfig, navigate} from "@openmrs/esm-framework";
5
- import userEvent from '@testing-library/user-event'
6
6
 
7
7
  jest.mock('@openmrs/esm-framework', () => ({
8
8
  useConfig: jest.fn(),
@@ -57,7 +57,6 @@ mockUseAppContext.mockReturnValue({
57
57
 
58
58
  describe('TutorialModal', () => {
59
59
  afterEach(() => {
60
- jest.clearAllMocks();
61
60
  delete window.location;
62
61
  window.location = { pathname: '/patient-registration' } as any;
63
62
  });
@@ -72,14 +71,18 @@ describe('TutorialModal', () => {
72
71
  },
73
72
  });
74
73
 
75
- render(<TutorialModal open={true} onClose={jest.fn()}/>);
74
+ render(<TutorialModal open={true} onClose={jest.fn()} />);
76
75
 
77
76
  const walkthroughButton = screen.getAllByText('Walkthrough');
78
77
  await user.click(walkthroughButton[0]);
79
78
 
80
- expect(navigate).toHaveBeenCalledWith({ to: '/spa-base/home' });
79
+ expect(mockNavigate).toHaveBeenCalledWith(
80
+ expect.objectContaining({
81
+ to: expect.stringContaining('/spa-base/home/service-queues'),
82
+ }),
83
+ );
81
84
  Object.defineProperty(window.location, 'pathname', {
82
- value: '/spa-base/home',
85
+ value: '/spa-base/home/service-queues',
83
86
  });
84
87
 
85
88
  await waitFor(() => expect(setSteps).toHaveBeenCalledWith(mockTutorialData[0].steps));
@@ -95,4 +98,3 @@ describe('TutorialModal', () => {
95
98
  });
96
99
  });
97
100
  });
98
-
@@ -1,24 +1,23 @@
1
- @use '@carbon/styles/scss/spacing';
2
- @use '@carbon/styles/scss/type';
3
1
  @use '@carbon/layout';
4
- @import '~@openmrs/esm-styleguide/src/vars';
2
+ @use '@carbon/type';
3
+ @use '@openmrs/esm-styleguide/src/vars' as *;
5
4
 
6
5
  .description {
7
- margin-bottom: spacing.$spacing-04;
6
+ margin-bottom: layout.$spacing-04;
8
7
  @include type.type-style('body-compact-01');
9
8
  }
10
9
 
11
10
  .tutorialModal {
12
11
  display: flex;
13
12
  flex-direction: column;
14
- gap: spacing.$spacing-04;
13
+ gap: layout.$spacing-04;
15
14
 
16
15
  .tutorialItem {
17
16
  border-bottom: 1px solid $ui-03;
18
- padding-bottom: spacing.$spacing-02;
17
+ padding-bottom: layout.$spacing-02;
19
18
 
20
19
  .tutorialTitle {
21
- margin-bottom: spacing.$spacing-04;
20
+ margin-bottom: layout.$spacing-04;
22
21
  @include type.type-style('heading-02');
23
22
  }
24
23
 
@@ -28,37 +27,10 @@
28
27
  }
29
28
 
30
29
  .tutorialLink {
31
- margin-bottom: spacing.$spacing-04;
32
- margin-top: spacing.$spacing-04;
30
+ margin-bottom: layout.$spacing-04;
31
+ margin-top: layout.$spacing-04;
33
32
  cursor: pointer;
34
33
  }
35
34
  }
36
35
  }
37
36
 
38
- .modalHeader {
39
- :global {
40
- .cds--modal-close-button {
41
- position: absolute;
42
- inset-block-start: 0;
43
- inset-inline-end: 0;
44
- margin: 0;
45
- margin-top: calc(-1 * #{layout.$spacing-05});
46
- }
47
-
48
- .cds--modal-close {
49
- background-color: rgba(0, 0, 0, 0);
50
-
51
- &:hover {
52
- background-color: var(--cds-layer-hover);
53
- }
54
- }
55
-
56
- .cds--popover--left > .cds--popover > .cds--popover-content {
57
- transform: translate(-4rem, 0.85rem);
58
- }
59
-
60
- .cds--popover--left > .cds--popover > .cds--popover-caret {
61
- transform: translate(-3.75rem, 1.25rem);
62
- }
63
- }
64
- }
@@ -12,11 +12,7 @@ const Tutorial = () => {
12
12
  });
13
13
  };
14
14
 
15
- return (
16
- <>
17
- <div onClick={handleOpenModal}>{t('tutorials', 'Tutorials')}</div>
18
- </>
19
- );
15
+ return <div onClick={handleOpenModal}>{t('tutorials', 'Tutorials')}</div>;
20
16
  };
21
17
 
22
18
  export default Tutorial;
package/src/types.ts CHANGED
@@ -1,15 +1,25 @@
1
- import {type Step} from "react-joyride";
1
+ import { type Step } from 'react-joyride';
2
+
3
+ export interface ExtendedStep extends Step {
4
+ hideBackButton?: boolean;
5
+ hideNextButton?: boolean;
6
+ hideFooter?: boolean;
7
+ hideCloseButton?: boolean;
8
+ data?: {
9
+ autoNextOn?: string;
10
+ };
11
+ }
2
12
 
3
13
  export interface Tutorial {
4
14
  title: string;
5
15
  description: string;
6
- steps: Step[];
16
+ steps: ExtendedStep[];
7
17
  }
8
18
 
9
19
  export interface TutorialContext {
10
20
  showTutorial: boolean;
11
- steps: Step[];
21
+ steps: ExtendedStep[];
12
22
  setShowTutorial: (showTutorial: boolean) => void;
13
- setSteps: (steps: Step[]) => void;
23
+ setSteps: (steps: ExtendedStep[]) => void;
24
+ [key: string | number | symbol]: unknown;
14
25
  }
15
-
@@ -1 +1,9 @@
1
- {}
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -1 +1,9 @@
1
- {}
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -1 +1,9 @@
1
- {}
1
+ {
2
+ "back": "Retour",
3
+ "finish": "Terminer",
4
+ "modalDescription": "Vous trouverez des guides et des tutoriels vidéo sur certaines des principales fonctionnalités d'OpenMRS.",
5
+ "next": "Suivant",
6
+ "tutorial": "Tutoriels",
7
+ "walkthrough": "Visite guidée",
8
+ "welcome": "Bienvenue sur OpenMRS !"
9
+ }
@@ -1 +1,9 @@
1
- {}
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Kembali",
3
+ "finish": "Selesai",
4
+ "modalDescription": "Temukan panduan dan tutorial video tentang beberapa fitur inti OpenMRS.",
5
+ "next": "Berikutnya",
6
+ "tutorial": "Tutorial",
7
+ "walkthrough": "Panduan",
8
+ "welcome": "Selamat datang di OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Indietro",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Avanti",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Benvenuto in OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "უკან",
3
+ "finish": "დასრულება",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "შემდეგი",
6
+ "tutorial": "სახელმძღვანელოები",
7
+ "walkthrough": "სწრაფი გავლა",
8
+ "welcome": "მოგესალმებათ OpenMRS!"
9
+ }
@@ -1 +1,9 @@
1
- {}
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Înapoi",
3
+ "finish": "Finalizare",
4
+ "modalDescription": "Găsește ghiduri pas cu pas și tutoriale video despre unele dintre funcționalitățile de bază ale OpenMRS.",
5
+ "next": "Următorul",
6
+ "tutorial": "Tutoriale",
7
+ "walkthrough": "Ghid pas cu pas",
8
+ "welcome": "Bine ai venit în OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "back": "Back",
3
+ "finish": "Finish",
4
+ "modalDescription": "Find walkthroughs and video tutorials on some of the core features of OpenMRS.",
5
+ "next": "Next",
6
+ "tutorial": "Tutorials",
7
+ "walkthrough": "Walkthrough",
8
+ "welcome": "Welcome to OpenMRS!"
9
+ }