@aehrc/smart-forms-renderer 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/lib/components/FormComponents/BooleanItem/BooleanField.d.ts +7 -3
  2. package/lib/components/FormComponents/BooleanItem/BooleanField.js +26 -4
  3. package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
  4. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +19 -10
  5. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.d.ts +0 -2
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js +5 -3
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +0 -2
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +3 -3
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.d.ts +2 -3
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +4 -1
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -1
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +0 -2
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +3 -3
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +5 -6
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.d.ts +0 -2
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +4 -1
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +0 -2
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +3 -3
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.d.ts +0 -2
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +4 -1
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +0 -2
  30. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +3 -3
  31. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  32. package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -1
  33. package/lib/components/FormComponents/GroupItem/GroupItem.js +3 -3
  34. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  35. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -1
  36. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +4 -4
  37. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  38. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.d.ts +0 -2
  39. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +6 -4
  40. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -1
  41. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +0 -2
  42. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +3 -3
  43. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  44. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +2 -4
  45. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  46. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.d.ts +0 -2
  47. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +4 -1
  48. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -1
  49. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +0 -2
  50. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +2 -2
  51. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  52. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
  53. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +8 -2
  54. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  55. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +1 -0
  56. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +2 -2
  57. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
  58. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
  59. package/lib/components/FormComponents/SingleItem/SingleItem.js +11 -6
  60. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  61. package/lib/hooks/useHidden.d.ts +1 -1
  62. package/lib/hooks/useHidden.js +3 -2
  63. package/lib/hooks/useHidden.js.map +1 -1
  64. package/lib/index.d.ts +1 -0
  65. package/lib/index.js +1 -0
  66. package/lib/index.js.map +1 -1
  67. package/lib/interfaces/enableWhen.interface.d.ts +20 -5
  68. package/lib/interfaces/index.d.ts +1 -0
  69. package/lib/interfaces/index.js +2 -0
  70. package/lib/interfaces/index.js.map +1 -0
  71. package/lib/interfaces/questionnaireStore.interface.d.ts +2 -2
  72. package/lib/interfaces/renderProps.interface.d.ts +4 -0
  73. package/lib/stores/questionnaireStore.d.ts +5 -3
  74. package/lib/stores/questionnaireStore.js +12 -5
  75. package/lib/stores/questionnaireStore.js.map +1 -1
  76. package/lib/utils/choice.d.ts +1 -1
  77. package/lib/utils/choice.js +1 -1
  78. package/lib/utils/choice.js.map +1 -1
  79. package/lib/utils/enableWhen.d.ts +11 -4
  80. package/lib/utils/enableWhen.js +130 -53
  81. package/lib/utils/enableWhen.js.map +1 -1
  82. package/lib/utils/enableWhenExpression.d.ts +1 -1
  83. package/lib/utils/enableWhenExpression.js +26 -7
  84. package/lib/utils/enableWhenExpression.js.map +1 -1
  85. package/lib/utils/index.d.ts +1 -0
  86. package/lib/utils/index.js +1 -0
  87. package/lib/utils/index.js.map +1 -1
  88. package/lib/utils/misc.d.ts +5 -0
  89. package/lib/utils/misc.js +116 -0
  90. package/lib/utils/misc.js.map +1 -0
  91. package/lib/utils/qItem.d.ts +2 -1
  92. package/lib/utils/qItem.js +19 -7
  93. package/lib/utils/qItem.js.map +1 -1
  94. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +1 -1
  95. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
  96. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +13 -3
  97. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +81 -18
  98. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
  99. package/lib/utils/tabs.d.ts +1 -1
  100. package/lib/utils/tabs.js +5 -3
  101. package/lib/utils/tabs.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/components/FormComponents/BooleanItem/BooleanField.tsx +53 -17
  104. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +47 -13
  105. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +4 -2
  106. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +0 -5
  107. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +6 -3
  108. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +2 -5
  109. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +1 -6
  110. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +4 -2
  111. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +1 -5
  112. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +4 -3
  113. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +1 -5
  114. package/src/components/FormComponents/GroupItem/GroupItem.tsx +8 -2
  115. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +10 -2
  116. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +3 -2
  117. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +0 -5
  118. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +0 -5
  119. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +3 -2
  120. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +1 -4
  121. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +13 -2
  122. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +4 -0
  123. package/src/components/FormComponents/SingleItem/SingleItem.tsx +19 -6
  124. package/src/hooks/useHidden.ts +3 -2
  125. package/src/index.ts +1 -0
  126. package/src/interfaces/enableWhen.interface.ts +24 -5
  127. package/src/interfaces/index.ts +8 -0
  128. package/src/interfaces/questionnaireStore.interface.ts +2 -2
  129. package/src/interfaces/renderProps.interface.ts +4 -0
  130. package/src/stores/questionnaireStore.ts +45 -8
  131. package/src/utils/choice.ts +4 -2
  132. package/src/utils/enableWhen.ts +194 -55
  133. package/src/utils/enableWhenExpression.ts +35 -8
  134. package/src/utils/index.ts +5 -0
  135. package/src/utils/misc.ts +160 -0
  136. package/src/utils/qItem.ts +31 -8
  137. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +1 -1
  138. package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +122 -25
  139. package/src/utils/tabs.ts +7 -4
@@ -0,0 +1,5 @@
1
+ import type { Questionnaire, QuestionnaireItem } from 'fhir/r4';
2
+ export declare function getQuestionnaireItem(questionnaire: Questionnaire, targetLinkId: string): QuestionnaireItem | null;
3
+ export declare function getQuestionnaireItemRecursive(qItem: QuestionnaireItem, targetLinkId: string): QuestionnaireItem | null;
4
+ export declare function getParentItem(questionnaire: Questionnaire, targetLinkId: string): QuestionnaireItem | null;
5
+ export declare function getRepeatGroupParentItem(questionnaire: Questionnaire, targetLinkId: string): QuestionnaireItem | null;
@@ -0,0 +1,116 @@
1
+ /*
2
+ * Copyright 2024 Commonwealth Scientific and Industrial Research
3
+ * Organisation (CSIRO) ABN 41 687 119 230.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export function getQuestionnaireItem(questionnaire, targetLinkId) {
18
+ // Search through the top level items recursively
19
+ const topLevelQItems = questionnaire.item;
20
+ if (topLevelQItems) {
21
+ for (const topLevelQItem of topLevelQItems) {
22
+ const foundQItem = getQuestionnaireItemRecursive(topLevelQItem, targetLinkId);
23
+ if (foundQItem) {
24
+ return foundQItem;
25
+ }
26
+ }
27
+ }
28
+ // No matching item found in the questionnaire, return null
29
+ return null;
30
+ }
31
+ export function getQuestionnaireItemRecursive(qItem, targetLinkId) {
32
+ // Target linkId found in current item
33
+ if (qItem.linkId === targetLinkId) {
34
+ return qItem;
35
+ }
36
+ // Search through its child items recursively
37
+ const childQItems = qItem.item;
38
+ if (childQItems) {
39
+ for (const childQItem of childQItems) {
40
+ const foundQItem = getQuestionnaireItemRecursive(childQItem, targetLinkId);
41
+ if (foundQItem) {
42
+ return foundQItem;
43
+ }
44
+ }
45
+ }
46
+ // No matching item found in the current item or its child items, return null
47
+ return null;
48
+ }
49
+ ///
50
+ export function getParentItem(questionnaire, targetLinkId) {
51
+ // Search through the top level items recursively
52
+ const topLevelQItems = questionnaire.item;
53
+ if (topLevelQItems) {
54
+ for (const topLevelQItem of topLevelQItems) {
55
+ const foundParentQItem = getParentItemRecursive(topLevelQItem, targetLinkId);
56
+ if (foundParentQItem) {
57
+ return foundParentQItem;
58
+ }
59
+ }
60
+ }
61
+ // No matching parent item found in the questionnaire, return null
62
+ return null;
63
+ }
64
+ function getParentItemRecursive(qItem, targetLinkId, parentQItem) {
65
+ // Current item has the target linkId, return the parent item if it exists
66
+ if (qItem.linkId === targetLinkId) {
67
+ return parentQItem !== null && parentQItem !== void 0 ? parentQItem : null;
68
+ }
69
+ // Search through its child items recursively
70
+ const childQItems = qItem.item;
71
+ if (childQItems) {
72
+ for (const childQItem of childQItems) {
73
+ const foundParentQItem = getParentItemRecursive(childQItem, targetLinkId, qItem);
74
+ if (foundParentQItem) {
75
+ return foundParentQItem;
76
+ }
77
+ }
78
+ }
79
+ // No matching parent item found in the current item or its child items, return null
80
+ return null;
81
+ }
82
+ export function getRepeatGroupParentItem(questionnaire, targetLinkId) {
83
+ // Search through the top level items recursively
84
+ const topLevelQItems = questionnaire.item;
85
+ if (topLevelQItems) {
86
+ for (const topLevelQItem of topLevelQItems) {
87
+ const foundParentQItem = getRepeatGroupParentItemRecursive(topLevelQItem, targetLinkId);
88
+ if (foundParentQItem) {
89
+ return foundParentQItem;
90
+ }
91
+ }
92
+ }
93
+ // No matching repeat group parent item found in the questionnaire, return null
94
+ return null;
95
+ }
96
+ function getRepeatGroupParentItemRecursive(qItem, targetLinkId, repeatGroupParentQItem) {
97
+ // Current item has the target linkId, return the parent item if it exists
98
+ if (qItem.linkId === targetLinkId && repeatGroupParentQItem) {
99
+ return repeatGroupParentQItem !== null && repeatGroupParentQItem !== void 0 ? repeatGroupParentQItem : null;
100
+ }
101
+ // Check if the current item is a repeat group
102
+ const isRepeatGroup = qItem.repeats && qItem.type === 'group';
103
+ // Search through its child items recursively
104
+ const childQItems = qItem.item;
105
+ if (childQItems) {
106
+ for (const childQItem of childQItems) {
107
+ const foundParentQItem = getRepeatGroupParentItemRecursive(childQItem, targetLinkId, isRepeatGroup ? qItem : repeatGroupParentQItem);
108
+ if (foundParentQItem) {
109
+ return foundParentQItem;
110
+ }
111
+ }
112
+ }
113
+ // No matching repeat group parent item found in the current item or its child items, return null
114
+ return null;
115
+ }
116
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import type { Questionnaire, QuestionnaireItem } from 'fhir/r4';
2
- import type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';
2
+ import type { EnableWhenExpression, EnableWhenItems } from '../interfaces';
3
3
  interface isHiddenByEnableWhensParams {
4
4
  linkId: string;
5
5
  enableWhenIsActivated: boolean;
6
6
  enableWhenItems: EnableWhenItems;
7
7
  enableWhenExpressions: Record<string, EnableWhenExpression>;
8
+ parentRepeatGroupIndex?: number;
8
9
  }
9
10
  export declare function isHiddenByEnableWhen(params: isHiddenByEnableWhensParams): boolean;
10
11
  /**
@@ -18,15 +18,27 @@ import { getChoiceControlType } from './choice';
18
18
  import { ChoiceItemControl, OpenChoiceItemControl } from '../interfaces/choice.enum';
19
19
  import { getOpenChoiceControlType } from './openChoice';
20
20
  export function isHiddenByEnableWhen(params) {
21
- const { linkId, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
22
- if (enableWhenIsActivated) {
23
- if (enableWhenItems[linkId]) {
24
- return !enableWhenItems[linkId].isEnabled;
25
- }
26
- if (enableWhenExpressions[linkId]) {
27
- return !enableWhenExpressions[linkId].isEnabled;
21
+ const { linkId, enableWhenIsActivated, enableWhenItems, enableWhenExpressions, parentRepeatGroupIndex } = params;
22
+ const { singleItems, repeatItems } = enableWhenItems;
23
+ // If enableWhen is not activated, items are not hidden by enableWhen
24
+ if (!enableWhenIsActivated) {
25
+ return false;
26
+ }
27
+ if (singleItems[linkId]) {
28
+ return !singleItems[linkId].isEnabled;
29
+ }
30
+ if (repeatItems[linkId] && parentRepeatGroupIndex !== undefined) {
31
+ return !repeatItems[linkId].enabledIndexes[parentRepeatGroupIndex];
32
+ }
33
+ if (enableWhenExpressions[linkId] && parentRepeatGroupIndex !== undefined) {
34
+ const isEnabledMultiple = enableWhenExpressions[linkId].isEnabledMultiple;
35
+ if (isEnabledMultiple) {
36
+ return !isEnabledMultiple[parentRepeatGroupIndex];
28
37
  }
29
38
  }
39
+ if (enableWhenExpressions[linkId]) {
40
+ return !enableWhenExpressions[linkId].isEnabledSingle;
41
+ }
30
42
  return false;
31
43
  }
32
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"qItem.js","sourceRoot":"","sources":["../../src/utils/qItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAUxD,MAAM,UAAU,oBAAoB,CAAC,MAAmC;IACtE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAC;IAEzF,IAAI,qBAAqB,EAAE;QACzB,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;SAC3C;QAED,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;YACjC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;SACjD;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAwB;IACjE,MAAM,UAAU,GACd,oBAAoB,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC,QAAQ;QAC1D,wBAAwB,CAAC,KAAK,CAAC,KAAK,qBAAqB,CAAC,QAAQ,CAAC;IAErE,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,aAA4B;;IAC1E,MAAM,WAAW,GAAG,MAAA,MAAA,aAAa,CAAC,MAAM,0CAAE,SAAS,0CAAE,IAAI,CACvD,CAAC,SAAoB,EAAE,EAAE,CACvB,SAAS,CAAC,GAAG,KAAK,yDAAyD,CAC9E,CAAC;IAEF,IAAI,WAAW,EAAE;QACf,IAAI,WAAW,CAAC,WAAW,EAAE;YAC3B,OAAO,WAAW,CAAC,WAAW,CAAC;SAChC;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,aAA4B;IAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1D,OAAO,EAAE,CAAC;KACX;IAED,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,IAAI,EAAE;QAC7C,OAAO,CAAC,IAAI,CAAC,GAAG,oCAAoC,CAAC,YAAY,CAAC,CAAC,CAAC;KACrE;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAwB;IAC3E,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1C;IAED,IAAI,KAAK,CAAC,IAAI,EAAE;QACd,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC,GAAG,oCAAoC,CAAC,SAAS,CAAC,CAAC,CAAC;SAClE;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"qItem.js","sourceRoot":"","sources":["../../src/utils/qItem.ts"],"names":[],"mappings":"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"}
@@ -76,7 +76,7 @@ function createEmptyModel() {
76
76
  calculatedExpressions: {},
77
77
  enableWhenExpressions: {},
78
78
  answerExpressions: {},
79
- enableWhenItems: {},
79
+ enableWhenItems: { singleItems: {}, repeatItems: {} },
80
80
  processedValueSetCodings: {},
81
81
  processedValueSetUrls: {},
82
82
  fhirPathContext: {}
@@ -1 +1 @@
1
- {"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,UAAgB,wBAAwB,CAC5C,aAA4B,EAC5B,mBAA2C,EAC3C,oBAA4B;;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvB,OAAO,gBAAgB,EAAE,CAAC;SAC3B;QAED,MAAM,SAAS,GAA2B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,MAAM,IAAI,GAAS,WAAW,CAAC,aAAa,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAkC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE3F,IAAI,SAAS,GAAc,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAC7E,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEnE,MAAM,+BAA+B,GAAG,yBAAyB,CAC/D,aAAa,EACb,oBAAoB,CACrB,CAAC;QACF,IAAI,gBAAgB,GAAG,+BAA+B,CAAC,gBAAgB,CAAC;QACxE,IAAI,wBAAwB,GAAG,+BAA+B,CAAC,wBAAwB,CAAC;QACxF,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,qBAAqB,CAAC;QAEpF,MAAM,4BAA4B,GAAG,sBAAsB,CACzD,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;QAEF,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GACxF,4BAA4B,CAAC;QAC/B,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC;QACnD,gBAAgB,GAAG,4BAA4B,CAAC,gBAAgB,CAAC;QAEjE,MAAM,sBAAsB,GAAG,MAAM,gBAAgB,CACnD,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,CACrB,CAAC;QAEF,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAC7C,wBAAwB,GAAG,sBAAsB,CAAC,wBAAwB,CAAC;QAE3E,OAAO;YACL,SAAS;YACT,IAAI;YACJ,SAAS;YACT,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC7D,cAAc,EAAE,EAAE;QAClB,qBAAqB,EAAE,EAAE;QACzB,qBAAqB,EAAE,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,wBAAwB,EAAE,EAAE;QAC5B,qBAAqB,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,UAAgB,wBAAwB,CAC5C,aAA4B,EAC5B,mBAA2C,EAC3C,oBAA4B;;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvB,OAAO,gBAAgB,EAAE,CAAC;SAC3B;QAED,MAAM,SAAS,GAA2B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,MAAM,IAAI,GAAS,WAAW,CAAC,aAAa,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAkC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE3F,IAAI,SAAS,GAAc,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAC7E,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEnE,MAAM,+BAA+B,GAAG,yBAAyB,CAC/D,aAAa,EACb,oBAAoB,CACrB,CAAC;QACF,IAAI,gBAAgB,GAAG,+BAA+B,CAAC,gBAAgB,CAAC;QACxE,IAAI,wBAAwB,GAAG,+BAA+B,CAAC,wBAAwB,CAAC;QACxF,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,qBAAqB,CAAC;QAEpF,MAAM,4BAA4B,GAAG,sBAAsB,CACzD,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;QAEF,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GACxF,4BAA4B,CAAC;QAC/B,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC;QACnD,gBAAgB,GAAG,4BAA4B,CAAC,gBAAgB,CAAC;QAEjE,MAAM,sBAAsB,GAAG,MAAM,gBAAgB,CACnD,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,CACrB,CAAC;QAEF,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAC7C,wBAAwB,GAAG,sBAAsB,CAAC,wBAAwB,CAAC;QAE3E,OAAO;YACL,SAAS;YACT,IAAI;YACJ,SAAS;YACT,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC7D,cAAc,EAAE,EAAE;QAClB,qBAAqB,EAAE,EAAE;QACzB,qBAAqB,EAAE,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACrD,wBAAwB,EAAE,EAAE;QAC5B,qBAAqB,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import type { Expression, Questionnaire, QuestionnaireItem } from 'fhir/r4';
2
2
  import type { CalculatedExpression } from '../../interfaces/calculatedExpression.interface';
3
- import type { EnableWhenExpression, EnableWhenItemProperties } from '../../interfaces/enableWhen.interface';
3
+ import type { EnableWhenExpression, EnableWhenItems, EnableWhenRepeatItemProperties, EnableWhenSingleItemProperties } from '../../interfaces';
4
4
  import type { AnswerExpression } from '../../interfaces/answerExpression.interface';
5
5
  import type { ValueSetPromise } from '../../interfaces/valueSet.interface';
6
6
  import type { Variables } from '../../interfaces/variables.interface';
7
7
  interface ReturnParamsRecursive {
8
8
  variables: Variables;
9
- enableWhenItems: Record<string, EnableWhenItemProperties>;
9
+ enableWhenItems: EnableWhenItems;
10
10
  enableWhenExpressions: Record<string, EnableWhenExpression>;
11
11
  calculatedExpressions: Record<string, CalculatedExpression>;
12
12
  answerExpressions: Record<string, AnswerExpression>;
@@ -18,7 +18,17 @@ export declare function extractOtherExtensions(questionnaire: Questionnaire, var
18
18
  *
19
19
  * @author Sean Fong
20
20
  */
21
- export declare function getEnableWhenItemProperties(qItem: QuestionnaireItem): EnableWhenItemProperties | null;
21
+ export declare function initialiseEnableWhenItemProperties(qItem: QuestionnaireItem, questionnaire: Questionnaire, parentLinkId?: string): {
22
+ enableWhenItemType: 'single' | 'repeat';
23
+ enableWhenItemProperties: EnableWhenSingleItemProperties | EnableWhenRepeatItemProperties;
24
+ } | null;
25
+ export declare function initialiseEnableWhenRepeatItemProperties(qItem: QuestionnaireItem, questionnaire: Questionnaire, parentLinkId: string): EnableWhenRepeatItemProperties | null;
26
+ /**
27
+ * Get enableWhen items' linked items and enableBehaviour attribute and save them in an EnableWhenItemProperties object
28
+ *
29
+ * @author Sean Fong
30
+ */
31
+ export declare function initialiseEnableWhenSingleItemProperties(qItem: QuestionnaireItem): EnableWhenSingleItemProperties | null;
22
32
  /**
23
33
  * Check if an enableWhenExpression extension is present
24
34
  *
@@ -17,15 +17,16 @@
17
17
  import { getAnswerExpression } from '../itemControl';
18
18
  import { getTerminologyServerUrl, getValueSetPromise } from '../valueSet';
19
19
  import { getFhirPathVariables, getXFhirQueryVariables } from './extractVariables';
20
+ import { getRepeatGroupParentItem } from '../misc';
20
21
  export function extractOtherExtensions(questionnaire, variables, valueSetPromises, terminologyServerUrl) {
21
- const enableWhenItems = {};
22
+ const enableWhenItems = { singleItems: {}, repeatItems: {} };
22
23
  const enableWhenExpressions = {};
23
24
  const calculatedExpressions = {};
24
25
  const answerExpressions = {};
25
26
  if (!questionnaire.item || questionnaire.item.length === 0) {
26
27
  return {
27
28
  variables: variables,
28
- enableWhenItems: {},
29
+ enableWhenItems: { singleItems: {}, repeatItems: {} },
29
30
  enableWhenExpressions: {},
30
31
  calculatedExpressions: {},
31
32
  answerExpressions: {},
@@ -33,7 +34,9 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
33
34
  };
34
35
  }
35
36
  for (const topLevelItem of questionnaire.item) {
37
+ const isRepeatGroup = !!topLevelItem.repeats && topLevelItem.type === 'group';
36
38
  extractExtensionsFromItemRecursive({
39
+ questionnaire,
37
40
  item: topLevelItem,
38
41
  variables,
39
42
  enableWhenItems,
@@ -41,7 +44,8 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
41
44
  calculatedExpressions,
42
45
  answerExpressions,
43
46
  valueSetPromises,
44
- defaultTerminologyServerUrl: terminologyServerUrl
47
+ defaultTerminologyServerUrl: terminologyServerUrl,
48
+ parentRepeatGroupLinkId: isRepeatGroup ? topLevelItem.linkId : undefined
45
49
  });
46
50
  }
47
51
  return {
@@ -55,18 +59,27 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
55
59
  }
56
60
  function extractExtensionsFromItemRecursive(params) {
57
61
  var _a;
58
- const { item, variables, enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions, valueSetPromises, defaultTerminologyServerUrl } = params;
62
+ const { questionnaire, item, variables, enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions, valueSetPromises, defaultTerminologyServerUrl, parentRepeatGroupLinkId } = params;
59
63
  const items = item.item;
64
+ const isRepeatGroup = !!item.repeats && item.type === 'group';
60
65
  if (items && items.length > 0) {
61
66
  // iterate through items of item recursively
62
67
  for (const childItem of items) {
63
- extractExtensionsFromItemRecursive(Object.assign(Object.assign({}, params), { item: childItem }));
68
+ extractExtensionsFromItemRecursive(Object.assign(Object.assign({}, params), { item: childItem, parentRepeatGroupLinkId: isRepeatGroup ? item.linkId : parentRepeatGroupLinkId }));
64
69
  }
65
70
  }
66
- // Read enable when items, enablehen/calculated/answer expressions, valueSets and variables from qItem
67
- const enableWhenItemProperties = getEnableWhenItemProperties(item);
68
- if (enableWhenItemProperties) {
69
- enableWhenItems[item.linkId] = enableWhenItemProperties;
71
+ // Read enable when items, enableWhen/calculated/answer expressions, valueSets and variables from qItem
72
+ const initialisedEnableWhenItemProperties = initialiseEnableWhenItemProperties(item, questionnaire, parentRepeatGroupLinkId);
73
+ if (initialisedEnableWhenItemProperties) {
74
+ const { enableWhenItemType, enableWhenItemProperties } = initialisedEnableWhenItemProperties;
75
+ if (enableWhenItemType === 'single') {
76
+ enableWhenItems.singleItems[item.linkId] =
77
+ enableWhenItemProperties;
78
+ }
79
+ else if (enableWhenItemType === 'repeat') {
80
+ enableWhenItems.repeatItems[item.linkId] =
81
+ enableWhenItemProperties;
82
+ }
70
83
  }
71
84
  const enableWhenExpression = getEnableWhenExpression(item);
72
85
  if (enableWhenExpression) {
@@ -119,17 +132,67 @@ function extractExtensionsFromItemRecursive(params) {
119
132
  *
120
133
  * @author Sean Fong
121
134
  */
122
- export function getEnableWhenItemProperties(qItem) {
135
+ export function initialiseEnableWhenItemProperties(qItem, questionnaire, parentLinkId) {
136
+ // Parent repeat group linkId exist, try to classify this item as a repeat enableWhen item
137
+ if (parentLinkId) {
138
+ const enableWhenRepeatItemProperties = initialiseEnableWhenRepeatItemProperties(qItem, questionnaire, parentLinkId);
139
+ if (enableWhenRepeatItemProperties) {
140
+ return {
141
+ enableWhenItemType: 'repeat',
142
+ enableWhenItemProperties: enableWhenRepeatItemProperties
143
+ };
144
+ }
145
+ }
146
+ // If parentLinkId is not provided or item cannot be classified as a repeat enableWhen item, classify it as a single enableWhen item
147
+ const enableWhenSingleItemProperties = initialiseEnableWhenSingleItemProperties(qItem);
148
+ if (enableWhenSingleItemProperties) {
149
+ return {
150
+ enableWhenItemType: 'single',
151
+ enableWhenItemProperties: enableWhenSingleItemProperties
152
+ };
153
+ }
154
+ return null;
155
+ }
156
+ export function initialiseEnableWhenRepeatItemProperties(qItem, questionnaire, parentLinkId) {
123
157
  const enableWhen = qItem.enableWhen;
124
- if (enableWhen) {
125
- const enableWhenItemProperties = { linked: [], isEnabled: false };
126
- enableWhenItemProperties.linked = enableWhen.map((linkedItem) => {
127
- return { enableWhen: linkedItem };
128
- });
129
- if (qItem.enableBehavior) {
130
- enableWhenItemProperties.enableBehavior = qItem.enableBehavior;
158
+ if (!enableWhen) {
159
+ return null;
160
+ }
161
+ const linkedItems = enableWhen.map((linkedItem) => {
162
+ const linkedParentItem = getRepeatGroupParentItem(questionnaire, linkedItem.question);
163
+ // Check if parentLinkId match the linked item's parent linkId
164
+ if (parentLinkId === (linkedParentItem === null || linkedParentItem === void 0 ? void 0 : linkedParentItem.linkId)) {
165
+ return { enableWhen: linkedItem, parentLinkId: linkedParentItem.linkId, answers: [] };
131
166
  }
132
- return enableWhenItemProperties;
167
+ // Otherwise, this linked item is not a valid repeat enableWhen linked item
168
+ return null;
169
+ });
170
+ // If any linked item is not valid, exit early
171
+ if (linkedItems.some((linkedItem) => linkedItem === null)) {
172
+ return null;
173
+ }
174
+ return {
175
+ linked: linkedItems,
176
+ parentLinkId: parentLinkId,
177
+ enabledIndexes: [false],
178
+ enableBehavior: qItem.enableBehavior
179
+ };
180
+ }
181
+ /**
182
+ * Get enableWhen items' linked items and enableBehaviour attribute and save them in an EnableWhenItemProperties object
183
+ *
184
+ * @author Sean Fong
185
+ */
186
+ export function initialiseEnableWhenSingleItemProperties(qItem) {
187
+ const enableWhen = qItem.enableWhen;
188
+ if (enableWhen) {
189
+ return {
190
+ linked: enableWhen.map((linkedItem) => {
191
+ return { enableWhen: linkedItem };
192
+ }),
193
+ isEnabled: false,
194
+ enableBehavior: qItem.enableBehavior
195
+ };
133
196
  }
134
197
  return null;
135
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Tabs } from '../interfaces/tab.interface';
2
- import type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';
2
+ import type { EnableWhenExpression, EnableWhenItems } from '../interfaces';
3
3
  import type { QuestionnaireItem } from 'fhir/r4';
4
4
  export declare function getFirstVisibleTab(tabs: Tabs, enableWhenItems: EnableWhenItems, enableWhenExpressions: Record<string, EnableWhenExpression>): number;
5
5
  /**
package/lib/utils/tabs.js CHANGED
@@ -18,17 +18,19 @@ import { isSpecificItemControl } from './itemControl';
18
18
  import { isHiddenByEnableWhen } from './qItem';
19
19
  import { structuredDataCapture } from 'fhir-sdc-helpers';
20
20
  export function getFirstVisibleTab(tabs, enableWhenItems, enableWhenExpressions) {
21
+ // Only singleEnableWhenItems are relevant for tab operations
22
+ const { singleItems } = enableWhenItems;
21
23
  return Object.entries(tabs)
22
24
  .sort(([, tabA], [, tabB]) => tabA.tabIndex - tabB.tabIndex)
23
25
  .findIndex(([tabLinkId, tab]) => {
24
26
  if (tab.isHidden) {
25
27
  return false;
26
28
  }
27
- if (enableWhenItems[tabLinkId]) {
28
- return enableWhenItems[tabLinkId].isEnabled;
29
+ if (singleItems[tabLinkId]) {
30
+ return singleItems[tabLinkId].isEnabled;
29
31
  }
30
32
  if (enableWhenExpressions[tabLinkId]) {
31
- return enableWhenExpressions[tabLinkId].isEnabled;
33
+ return enableWhenExpressions[tabLinkId].isEnabledSingle;
32
34
  }
33
35
  return true;
34
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAChC,IAAU,EACV,eAAgC,EAChC,qBAA2D;IAE3D,6DAA6D;IAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC;IAExC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC3D,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;YAC1B,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;SACzC;QAED,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE;YACpC,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC;SACzD;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AACD;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,aAAgC;IAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,aAAgC;IAC7D,OAAO,qBAAqB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAuB;;IAC3C,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,mEAAmE,CACrF,CAAC;IAEF,IAAI,WAAW,EAAE;QACf,MAAM,SAAS,GAAG,MAAA,MAAA,WAAW,CAAC,oBAAoB,0CAAE,MAAM,0CAAE,IAAI,CAC9D,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAChC,CAAC;QACF,IAAI,SAAS,EAAE;YACb,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAuC,EACvC,eAAwB;;IAExB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,IAAI,GAAS,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;QAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;YACnB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,MAAA,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,mCAAI,KAAK;SAC1D,CAAC;KACH;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD,MAAM,UAAU,2BAA2B,CACzC,MAAyC;IAEzC,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAC;IAEvF,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;QAC3C,MAAM,SAAS,GAAG,CAAC,oBAAoB,CAAC;YACtC,MAAM;YACN,qBAAqB;YACrB,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAoC;IACzE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAC5F,MAAM,CAAC;IAET,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;QACrD,IAAI;QACJ,qBAAqB;QACrB,eAAe;QACf,qBAAqB;KACtB,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,eAAe,GAAG,CAAC,CAAC;IACvC,MAAM,qBAAqB,GAAG,KAAK,CAAC;IACpC,OAAO,CAAC,qBAAqB,EAAE;QAC7B,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE;YAC9C,OAAO,YAAY,CAAC;SACrB;QACD,YAAY,EAAE,CAAC;KAChB;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAU,EACV,qBAA8B,EAC9B,eAAgC,EAChC,qBAA2D;IAE3D,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;QACrD,IAAI;QACJ,qBAAqB;QACrB,eAAe;QACf,qBAAqB;KACtB,CAAC,CAAC;IACH,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAuB;IACxD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC,OAAO,EAAE,CAAC;KACX;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAC,SAAS,EAAE,EAAE,CACZ,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CACtF,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,WAAW,CAAC,MAAyB;IACnD,MAAM,EACJ,KAAK,EACL,mBAAmB,EACnB,KAAK,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACvB,GAAG,MAAM,CAAC;IAEX,IACE,CAAC,KAAK;QACN,oBAAoB,CAAC;YACnB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,qBAAqB;YACrB,eAAe;YACf,qBAAqB;SACtB,CAAC;QACF,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,EACtC;QACA,OAAO,IAAI,CAAC;KACb;IAED,IAAI,sBAAsB,EAAE;QAC1B,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,CACnD,CAAC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,KAAK,UAAU,CAC/D,CAAC;QACF,MAAM,QAAQ,GACZ,CAAC,oBAAoB;YACnB,oBAAoB,CAAC;gBACnB,MAAM,EAAE,oBAAoB,CAAC,MAAM;gBACnC,qBAAqB;gBACrB,eAAe;gBACf,qBAAqB;aACtB,CAAC,CAAC;YACL,qBAAqB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAExD,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -16,29 +16,65 @@
16
16
  */
17
17
 
18
18
  import React, { memo } from 'react';
19
- import Checkbox from '@mui/material/Checkbox';
20
- import FormControlLabel from '@mui/material/FormControlLabel';
19
+ import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
20
+ import { TEXT_FIELD_WIDTH } from '../Textfield.styles';
21
+ import Box from '@mui/material/Box';
22
+ import Button from '@mui/material/Button';
23
+ import { grey } from '@mui/material/colors';
24
+ import Fade from '@mui/material/Fade';
25
+ import Tooltip from '@mui/material/Tooltip';
26
+ import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
27
+ import type { QuestionnaireItem } from 'fhir/r4';
28
+ import ChoiceRadioSingle from '../ChoiceItems/ChoiceRadioSingle';
29
+ import { StyledRadioGroup } from '../Item.styles';
30
+ import { getChoiceOrientation } from '../../../utils/choice';
21
31
 
22
- interface BooleanFieldProps {
23
- checked: boolean;
32
+ interface BooleanFieldProps extends PropsWithIsTabledAttribute {
33
+ qItem: QuestionnaireItem;
24
34
  readOnly: boolean;
25
- onCheckedChange: (newChecked: boolean) => void;
35
+ valueBoolean: boolean | undefined;
36
+ onCheckedChange: (newValue: string) => void;
37
+ onClear: () => void;
26
38
  }
39
+
27
40
  const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
28
- const { checked, readOnly, onCheckedChange } = props;
41
+ const { qItem, readOnly, valueBoolean, isTabled, onCheckedChange, onClear } = props;
42
+
43
+ // defaults to horizontal, only set to vertical if explicitly set
44
+ const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Horizontal;
45
+
46
+ const selection = valueBoolean === undefined ? null : valueBoolean.toString();
29
47
 
30
48
  return (
31
- <FormControlLabel
32
- disabled={readOnly}
33
- control={
34
- <Checkbox
35
- size="small"
36
- checked={checked}
37
- onChange={(event) => onCheckedChange(event.target.checked)}
38
- />
39
- }
40
- label=""
41
- />
49
+ <Box
50
+ display="flex"
51
+ alignItems="center"
52
+ sx={{ maxWidth: !isTabled ? TEXT_FIELD_WIDTH : 3000, minWidth: 160 }}>
53
+ <StyledRadioGroup
54
+ row={orientation === ChoiceItemOrientation.Horizontal}
55
+ name={qItem.text}
56
+ id={qItem.id}
57
+ onChange={(e) => onCheckedChange(e.target.value)}
58
+ value={selection}>
59
+ <ChoiceRadioSingle value="true" label="Yes" readOnly={readOnly} />
60
+ <ChoiceRadioSingle value="false" label="No" readOnly={readOnly} />
61
+ </StyledRadioGroup>
62
+
63
+ <Box flexGrow={1} />
64
+
65
+ <Fade in={valueBoolean !== undefined} timeout={100}>
66
+ <Tooltip title="Set question as unanswered">
67
+ <Button
68
+ sx={{
69
+ color: grey['500'],
70
+ '&:hover': { backgroundColor: grey['200'] }
71
+ }}
72
+ onClick={onClear}>
73
+ Clear
74
+ </Button>
75
+ </Tooltip>
76
+ </Fade>
77
+ </Box>
42
78
  );
43
79
  });
44
80