@aehrc/smart-forms-renderer 0.9.2 → 0.10.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 (156) hide show
  1. package/.swcrc +11 -0
  2. package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js +5 -5
  3. package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js.map +1 -1
  4. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +1 -1
  5. package/lib/components/FormComponents/RepeatItem/RemoveItemButton.d.ts +10 -0
  6. package/lib/components/FormComponents/RepeatItem/RemoveItemButton.js +30 -0
  7. package/lib/components/FormComponents/RepeatItem/RemoveItemButton.js.map +1 -0
  8. package/lib/components/FormComponents/RepeatItem/RepeatField.js +2 -2
  9. package/lib/components/FormComponents/SingleItem/SingleItem.js +2 -2
  10. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  11. package/lib/components/FormComponents/Tables/GroupTable.d.ts +1 -2
  12. package/lib/components/FormComponents/Tables/GroupTable.js +44 -59
  13. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
  14. package/lib/components/FormComponents/Tables/GroupTableBody.d.ts +17 -0
  15. package/lib/components/FormComponents/Tables/GroupTableBody.js +48 -0
  16. package/lib/components/FormComponents/Tables/GroupTableBody.js.map +1 -0
  17. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +18 -5
  18. package/lib/components/FormComponents/Tables/GroupTableRow.js +17 -25
  19. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  20. package/lib/components/FormComponents/Tables/GroupTableRowCells.d.ts +11 -0
  21. package/lib/components/FormComponents/Tables/GroupTableRowCells.js +57 -0
  22. package/lib/components/FormComponents/Tables/GroupTableRowCells.js.map +1 -0
  23. package/lib/components/FormComponents/Tables/GroupTableRows.d.ts +17 -0
  24. package/lib/components/FormComponents/Tables/GroupTableRows.js +45 -0
  25. package/lib/components/FormComponents/Tables/GroupTableRows.js.map +1 -0
  26. package/lib/components/FormComponents/Tables/GroupTableTestRow.d.ts +22 -0
  27. package/lib/components/FormComponents/Tables/GroupTableTestRow.js +43 -0
  28. package/lib/components/FormComponents/Tables/GroupTableTestRow.js.map +1 -0
  29. package/lib/components/FormComponents/Tables/GroupTableView.d.ts +21 -0
  30. package/lib/components/FormComponents/Tables/GroupTableView.js +65 -0
  31. package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -0
  32. package/lib/components/FormComponents/Tables/RemoveRowButton.d.ts +10 -0
  33. package/lib/components/FormComponents/Tables/RemoveRowButton.js +32 -0
  34. package/lib/components/FormComponents/Tables/RemoveRowButton.js.map +1 -0
  35. package/lib/components/FormComponents/Tables/SelectRowButton.d.ts +7 -0
  36. package/lib/components/FormComponents/Tables/SelectRowButton.js +26 -0
  37. package/lib/components/FormComponents/Tables/SelectRowButton.js.map +1 -0
  38. package/lib/components/FormComponents/Tables/Table.styles.d.ts +8 -0
  39. package/lib/components/FormComponents/Tables/Table.styles.js +17 -0
  40. package/lib/components/FormComponents/Tables/Table.styles.js.map +1 -1
  41. package/lib/components/Renderer/BaseRenderer.js +5 -6
  42. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  43. package/lib/components/Renderer/FormBodyCollapsible.js +4 -4
  44. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  45. package/lib/components/Renderer/FormBodyTabbed.js +3 -3
  46. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  47. package/lib/components/Tabs/CompleteTabButton.js +2 -2
  48. package/lib/components/Tabs/CompleteTabButton.js.map +1 -1
  49. package/lib/components/Tabs/FormBodySingleTab.js +2 -2
  50. package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
  51. package/lib/components/Tabs/FormBodyTabList.js +4 -4
  52. package/lib/components/Tabs/FormBodyTabList.js.map +1 -1
  53. package/lib/hooks/useDecimalCalculatedExpression.js +2 -2
  54. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
  55. package/lib/hooks/useHidden.js +4 -4
  56. package/lib/hooks/useHidden.js.map +1 -1
  57. package/lib/hooks/useInitialiseGroupTable.d.ts +2 -2
  58. package/lib/hooks/useInitialiseGroupTable.js.map +1 -1
  59. package/lib/hooks/useInitialiseRenderer.js +11 -14
  60. package/lib/hooks/useInitialiseRenderer.js.map +1 -1
  61. package/lib/hooks/useIntegerCalculatedExpression.js +2 -2
  62. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
  63. package/lib/hooks/useMinimalStringCalculatedExpression.js +25 -13
  64. package/lib/hooks/useStringCalculatedExpression.js +2 -2
  65. package/lib/hooks/useStringCalculatedExpression.js.map +1 -1
  66. package/lib/hooks/useTerminologyServerQuery.js +3 -4
  67. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  68. package/lib/hooks/useValueSetCodings.js +10 -12
  69. package/lib/hooks/useValueSetCodings.js.map +1 -1
  70. package/lib/index.js +19 -20
  71. package/lib/index.js.map +1 -1
  72. package/lib/interfaces/groupTable.interface.d.ts +1 -1
  73. package/lib/setup-jest.js +1 -0
  74. package/lib/setup-jest.js.map +1 -0
  75. package/lib/stores/index.d.ts +4 -3
  76. package/lib/stores/index.js +4 -3
  77. package/lib/stores/index.js.map +1 -1
  78. package/lib/stores/questionnaireResponseStore.d.ts +28 -0
  79. package/lib/stores/questionnaireResponseStore.js +64 -0
  80. package/lib/stores/questionnaireResponseStore.js.map +1 -0
  81. package/lib/stores/questionnaireStore.d.ts +65 -0
  82. package/lib/stores/questionnaireStore.js +172 -0
  83. package/lib/stores/questionnaireStore.js.map +1 -0
  84. package/lib/stores/smartConfigStore.d.ts +25 -0
  85. package/lib/stores/smartConfigStore.js +30 -0
  86. package/lib/stores/smartConfigStore.js.map +1 -0
  87. package/lib/stores/terminologyServerStore.d.ts +14 -0
  88. package/lib/stores/terminologyServerStore.js +26 -0
  89. package/lib/stores/terminologyServerStore.js.map +1 -0
  90. package/lib/stores/useQuestionnaireResponseStore.d.ts +14 -2
  91. package/lib/stores/useQuestionnaireResponseStore.js +4 -2
  92. package/lib/stores/useQuestionnaireResponseStore.js.map +1 -1
  93. package/lib/stores/useQuestionnaireStore.d.ts +30 -2
  94. package/lib/stores/useQuestionnaireStore.js +4 -2
  95. package/lib/stores/useQuestionnaireStore.js.map +1 -1
  96. package/lib/stories/MedicalHistoryTable.stories.js +49 -0
  97. package/lib/stories/MedicalHistoryTable.stories.js.map +1 -0
  98. package/lib/stories/SmartFormsRenderer.stories.js +103 -0
  99. package/lib/stories/SmartFormsRenderer.stories.js.map +1 -0
  100. package/lib/theme/overrides/Table.d.ts +1 -0
  101. package/lib/theme/overrides/Table.js +2 -1
  102. package/lib/theme/overrides/Table.js.map +1 -1
  103. package/lib/utils/calculatedExpression.js +1 -2
  104. package/lib/utils/calculatedExpression.js.map +1 -1
  105. package/lib/utils/groupTable.d.ts +3 -0
  106. package/lib/utils/groupTable.js +29 -0
  107. package/lib/utils/groupTable.js.map +1 -0
  108. package/package.json +10 -5
  109. package/src/components/FormComponents/GroupItem/NextTabButtonWrapper.tsx +5 -5
  110. package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +1 -1
  111. package/src/components/FormComponents/RepeatItem/{DeleteItemButton.tsx → RemoveItemButton.tsx} +4 -4
  112. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +2 -2
  113. package/src/components/FormComponents/SingleItem/SingleItem.tsx +2 -2
  114. package/src/components/FormComponents/Tables/GroupTable.tsx +71 -120
  115. package/src/components/FormComponents/Tables/GroupTableBody.tsx +116 -0
  116. package/src/components/FormComponents/Tables/GroupTableRow.tsx +89 -49
  117. package/src/components/FormComponents/Tables/GroupTableRowCells.tsx +87 -0
  118. package/src/components/FormComponents/Tables/GroupTableView.tsx +169 -0
  119. package/src/components/FormComponents/Tables/{DeleteRowButton.tsx → RemoveRowButton.tsx} +7 -7
  120. package/src/components/FormComponents/Tables/SelectRowButton.tsx +37 -0
  121. package/src/components/FormComponents/Tables/Table.styles.tsx +25 -0
  122. package/src/components/Renderer/BaseRenderer.tsx +5 -6
  123. package/src/components/Renderer/FormBodyCollapsible.tsx +4 -5
  124. package/src/components/Renderer/FormBodyTabbed.tsx +3 -3
  125. package/src/components/Tabs/CompleteTabButton.tsx +2 -2
  126. package/src/components/Tabs/FormBodySingleTab.tsx +2 -3
  127. package/src/components/Tabs/FormBodyTabList.tsx +4 -4
  128. package/src/hooks/useDecimalCalculatedExpression.ts +2 -2
  129. package/src/hooks/useHidden.ts +4 -4
  130. package/src/hooks/useInitialiseGroupTable.ts +3 -3
  131. package/src/hooks/useInitialiseRenderer.ts +17 -18
  132. package/src/hooks/useIntegerCalculatedExpression.ts +2 -2
  133. package/src/hooks/useStringCalculatedExpression.ts +2 -2
  134. package/src/hooks/useTerminologyServerQuery.ts +3 -4
  135. package/src/hooks/useValueSetCodings.ts +10 -12
  136. package/src/index.ts +19 -20
  137. package/src/interfaces/groupTable.interface.ts +1 -1
  138. package/src/stores/index.ts +7 -3
  139. package/src/stores/questionnaireResponseStore.ts +83 -0
  140. package/src/stores/{useQuestionnaireStore.ts → questionnaireStore.ts} +7 -6
  141. package/src/stores/smartConfigStore.ts +45 -0
  142. package/src/stores/{useTerminologyServerStore.ts → terminologyServerStore.ts} +5 -4
  143. package/src/stories/MedicalHistoryTable.stories.tsx +61 -0
  144. package/src/stories/SmartFormsRenderer.stories.ts +15 -5
  145. package/src/stories/assets/QItems-and-QRItems/QR_GTableMedicalHistory.json +80 -0
  146. package/src/stories/assets/QItems-and-QRItems/Q_GTableMedicalHistory.json +109 -0
  147. package/src/stories/assets/Qs-and-QRs/QDev715.json +16081 -0
  148. package/src/theme/overrides/Table.ts +2 -1
  149. package/src/utils/calculatedExpression.ts +1 -2
  150. package/src/utils/groupTable.ts +37 -0
  151. package/src/stores/useQuestionnaireResponseStore.ts +0 -63
  152. package/src/stores/useSmartConfigStore.ts +0 -27
  153. /package/src/stories/assets/{Q715.json → Qs-and-QRs/Q715.json} +0 -0
  154. /package/src/stories/assets/{QTestGrid.json → Qs-and-QRs/QTestGrid.json} +0 -0
  155. /package/src/stories/assets/{R715.json → Qs-and-QRs/R715.json} +0 -0
  156. /package/src/stories/assets/{RTestGrid.json → Qs-and-QRs/RTestGrid.json} +0 -0
package/.swcrc ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "jsc": {
3
+ "parser": {
4
+ "syntax": "typescript",
5
+ "tsx": true,
6
+ "decorators": true,
7
+ "dynamicImport": true
8
+ },
9
+ "target": "es2015",
10
+ },
11
+ }
@@ -17,14 +17,14 @@
17
17
  import React, { memo } from 'react';
18
18
  import Box from '@mui/material/Box';
19
19
  import { findNumOfVisibleTabs, getNextVisibleTabIndex } from '../../../utils/tabs';
20
- import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
20
+ import { useQuestionnaireStore } from '../../../stores';
21
21
  import NextTabButton from './NextTabButton';
22
22
  const NextTabButtonWrapper = memo(function NextTabWrapper(props) {
23
23
  const { currentTabIndex, tabs } = props;
24
- const enableWhenIsActivated = useQuestionnaireStore((state) => state.enableWhenIsActivated);
25
- const enableWhenItems = useQuestionnaireStore((state) => state.enableWhenItems);
26
- const enableWhenExpressions = useQuestionnaireStore((state) => state.enableWhenExpressions);
27
- const switchTab = useQuestionnaireStore((state) => state.switchTab);
24
+ const enableWhenIsActivated = useQuestionnaireStore.use.enableWhenIsActivated();
25
+ const enableWhenItems = useQuestionnaireStore.use.enableWhenItems();
26
+ const enableWhenExpressions = useQuestionnaireStore.use.enableWhenExpressions();
27
+ const switchTab = useQuestionnaireStore.use.switchTab();
28
28
  const tabsNotDefined = currentTabIndex === undefined || tabs === undefined;
29
29
  function handleNextTabClick() {
30
30
  if (tabsNotDefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"NextTabButtonWrapper.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/GroupItem/NextTabButtonWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,qBAAqB,MAAM,uCAAuC,CAAC;AAC1E,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAO5C,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,cAAc,CAAC,KAAgC;IACxF,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAExC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5F,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAChF,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5F,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEpE,MAAM,cAAc,GAAG,eAAe,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC;IAE3E,SAAS,kBAAkB;QACzB,IAAI,cAAc,EAAE;YAClB,OAAO;SACR;QAED,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;YACjD,IAAI;YACJ,eAAe;YACf,qBAAqB;YACrB,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QACH,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAE/B,wBAAwB;QACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,cAAc,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,eAAe,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACpD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,gBAAgB,GACpB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEjG,OAAO,CACL,oBAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,aAAa,EAAC,aAAa,EAAC,EAAE,EAAE,CAAC;QACnD,oBAAC,aAAa,IAAC,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,GAAI,CAC/E,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"NextTabButtonWrapper.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/GroupItem/NextTabButtonWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAO5C,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,cAAc,CAAC,KAAgC;IACxF,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAExC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAChF,MAAM,eAAe,GAAG,qBAAqB,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;IACpE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAChF,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAExD,MAAM,cAAc,GAAG,eAAe,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC;IAE3E,SAAS,kBAAkB;QACzB,IAAI,cAAc,EAAE;YAClB,OAAO;SACR;QAED,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;YACjD,IAAI;YACJ,eAAe;YACf,qBAAqB;YACrB,eAAe;YACf,qBAAqB;SACtB,CAAC,CAAC;QACH,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAE/B,wBAAwB;QACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,cAAc,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,eAAe,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACpD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,gBAAgB,GACpB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEjG,OAAO,CACL,oBAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,aAAa,EAAC,aAAa,EAAC,EAAE,EAAE,CAAC;QACnD,oBAAC,aAAa,IAAC,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,GAAI,CAC/E,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
@@ -21,7 +21,7 @@ import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';
21
21
  function DeleteItemButton(props) {
22
22
  const { nullableQrItem, numOfRepeatGroups, readOnly, onDeleteItem } = props;
23
23
  const isDisabled = nullableQrItem === null || numOfRepeatGroups === 1 || readOnly;
24
- return (React.createElement(RepeatDeleteTooltip, { className: "repeat-group-delete", title: "Delete item" },
24
+ return (React.createElement(RepeatDeleteTooltip, { className: "repeat-group-delete", title: "Remove item" },
25
25
  React.createElement("span", null,
26
26
  React.createElement(IconButton, { size: "small", color: "error", disabled: isDisabled, onClick: onDeleteItem },
27
27
  React.createElement(RemoveCircleOutlineIcon, null)))));
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { QuestionnaireResponseItemAnswer } from 'fhir/r4';
3
+ interface RemoveItemButtonProps {
4
+ answer: QuestionnaireResponseItemAnswer | null;
5
+ numOfRepeatAnswers: number;
6
+ readOnly: boolean;
7
+ onDeleteAnswer: () => void;
8
+ }
9
+ declare function RemoveItemButton(props: RemoveItemButtonProps): React.JSX.Element;
10
+ export default RemoveItemButton;
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Copyright 2023 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
+ import React from 'react';
18
+ import { RepeatDeleteTooltip } from './RepeatItem.styles';
19
+ import IconButton from '@mui/material/IconButton';
20
+ import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';
21
+ function RemoveItemButton(props) {
22
+ const { answer, numOfRepeatAnswers, readOnly, onDeleteAnswer } = props;
23
+ const isDisabled = answer === null || numOfRepeatAnswers === 1 || readOnly;
24
+ return (React.createElement(RepeatDeleteTooltip, { className: "repeat-item-delete", title: "Remove item" },
25
+ React.createElement("span", null,
26
+ React.createElement(IconButton, { size: "small", color: "error", disabled: isDisabled, onClick: onDeleteAnswer },
27
+ React.createElement(RemoveCircleOutlineIcon, { fontSize: "small" })))));
28
+ }
29
+ export default RemoveItemButton;
30
+ //# sourceMappingURL=RemoveItemButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoveItemButton.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/RepeatItem/RemoveItemButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,uBAAuB,MAAM,yCAAyC,CAAC;AAU9E,SAAS,gBAAgB,CAAC,KAA4B;IACpD,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEvE,MAAM,UAAU,GAAG,MAAM,KAAK,IAAI,IAAI,kBAAkB,KAAK,CAAC,IAAI,QAAQ,CAAC;IAE3E,OAAO,CACL,oBAAC,mBAAmB,IAAC,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAC,aAAa;QACrE;YACE,oBAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc;gBAClF,oBAAC,uBAAuB,IAAC,QAAQ,EAAC,OAAO,GAAG,CACjC,CACR,CACa,CACvB,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
@@ -18,7 +18,7 @@ import React from 'react';
18
18
  import Box from '@mui/material/Box';
19
19
  import { RepeatItemContainerStack } from './RepeatItem.styles';
20
20
  import SingleItem from '../SingleItem/SingleItem';
21
- import DeleteItemButton from './DeleteItemButton';
21
+ import RemoveItemButton from './RemoveItemButton';
22
22
  import useReadOnly from '../../../hooks/useReadOnly';
23
23
  function RepeatField(props) {
24
24
  var _a;
@@ -27,7 +27,7 @@ function RepeatField(props) {
27
27
  return (React.createElement(RepeatItemContainerStack, { direction: "row" },
28
28
  React.createElement(Box, { sx: { flexGrow: 1 } },
29
29
  React.createElement(SingleItem, { qItem: qItem, qrItem: qrItem, isRepeated: (_a = qItem.repeats) !== null && _a !== void 0 ? _a : false, isTabled: false, showMinimalView: showMinimalView, parentIsReadOnly: parentIsReadOnly, onQrItemChange: onQrItemChange })),
30
- showMinimalView ? null : (React.createElement(DeleteItemButton, { answer: answer, numOfRepeatAnswers: numOfRepeatAnswers, readOnly: readOnly, onDeleteAnswer: onDeleteAnswer }))));
30
+ showMinimalView ? null : (React.createElement(RemoveItemButton, { answer: answer, numOfRepeatAnswers: numOfRepeatAnswers, readOnly: readOnly, onDeleteAnswer: onDeleteAnswer }))));
31
31
  }
32
32
  export default RepeatField;
33
33
  //# sourceMappingURL=RepeatField.js.map
@@ -15,13 +15,13 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import React, { useCallback } from 'react';
18
- import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
18
+ import { useQuestionnaireStore } from '../../../stores';
19
19
  import SingleItemSwitcher from './SingleItemSwitcher';
20
20
  import useHidden from '../../../hooks/useHidden';
21
21
  import useReadOnly from '../../../hooks/useReadOnly';
22
22
  function SingleItem(props) {
23
23
  const { qItem, qrItem, isRepeated, isTabled, showMinimalView, parentIsReadOnly, onQrItemChange } = props;
24
- const updateEnableWhenItem = useQuestionnaireStore((state) => state.updateEnableWhenItem);
24
+ const updateEnableWhenItem = useQuestionnaireStore.use.updateEnableWhenItem();
25
25
  const handleQrItemChange = useCallback((newQrItem) => {
26
26
  if (newQrItem.answer) {
27
27
  updateEnableWhenItem(qItem.linkId, newQrItem.answer);
@@ -1 +1 @@
1
- {"version":3,"file":"SingleItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/SingleItem/SingleItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAS3C,OAAO,qBAAqB,MAAM,uCAAuC,CAAC;AAC1E,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAYrD,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAC9F,KAAK,CAAC;IAER,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAE1F,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,SAAoC,EAAE,EAAE;QACvC,IAAI,SAAS,CAAC,MAAM,EAAE;YACpB,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;SACtD;QACD,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,oBAAoB,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CACrD,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,YAAY,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,oBAAC,kBAAkB,IACjB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,QAAQ,EAC1B,cAAc,EAAE,kBAAkB,GAClC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"SingleItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/SingleItem/SingleItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAS3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAYrD,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAC9F,KAAK,CAAC;IAER,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;IAE9E,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,SAAoC,EAAE,EAAE;QACvC,IAAI,SAAS,CAAC,MAAM,EAAE;YACpB,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;SACtD;QACD,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,oBAAoB,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CACrD,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,YAAY,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,oBAAC,kBAAkB,IACjB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,QAAQ,EAC1B,cAAc,EAAE,kBAAkB,GAClC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,UAAU,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
3
- import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrRepeatGroupChangeHandler } from '../../../interfaces/renderProps.interface';
4
- import type { PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
3
+ import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrRepeatGroupChangeHandler, PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
5
4
  interface GroupTableProps extends PropsWithQrRepeatGroupChangeHandler, PropsWithShowMinimalViewAttribute, PropsWithParentIsReadOnlyAttribute {
6
5
  qItem: QuestionnaireItem;
7
6
  qrItems: QuestionnaireResponseItem[];
@@ -15,32 +15,19 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import React, { useMemo, useState } from 'react';
18
- import Divider from '@mui/material/Divider';
19
- import Paper from '@mui/material/Paper';
20
- import Table from '@mui/material/Table';
21
- import TableBody from '@mui/material/TableBody';
22
- import TableCell from '@mui/material/TableCell';
23
- import TableContainer from '@mui/material/TableContainer';
24
- import TableHead from '@mui/material/TableHead';
25
- import TableRow from '@mui/material/TableRow';
26
- import Typography from '@mui/material/Typography';
27
- import GroupTableRow from './GroupTableRow';
28
- import { HeaderTableCell } from './Table.styles';
29
- import { QGroupContainerBox } from '../../Box.styles';
30
18
  import { mapQItemsIndex } from '../../../utils/mapItem';
31
19
  import useInitialiseGroupTable from '../../../hooks/useInitialiseGroupTable';
32
20
  import { nanoid } from 'nanoid';
33
- import { createEmptyQrItem } from '../../../utils/qrItem';
34
- import DeleteRowButton from './DeleteRowButton';
35
- import LabelWrapper from '../ItemParts/ItemLabelWrapper';
36
- import cloneDeep from 'lodash.clonedeep';
37
- import AddRowButton from './AddRowButton';
38
21
  import useReadOnly from '../../../hooks/useReadOnly';
22
+ import GroupTableView from './GroupTableView';
23
+ import { getGroupTableItemsToUpdate } from '../../../utils/groupTable';
39
24
  function GroupTable(props) {
40
25
  const { qItem, qrItems, groupCardElevation, showMinimalView, parentIsReadOnly, onQrRepeatGroupChange } = props;
26
+ // TODO come back to fix stuttering on dnd update
41
27
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
42
28
  const initialisedGroupTables = useInitialiseGroupTable(qrItems);
43
29
  const [tableRows, setTableRows] = useState(initialisedGroupTables);
30
+ const [selectedIds, setSelectedIds] = useState(initialisedGroupTables.map((row) => row.nanoId));
44
31
  // Generate item labels as table headers
45
32
  const qItems = qItem.item;
46
33
  const itemLabels = useMemo(() => { var _a; return (_a = qItems === null || qItems === void 0 ? void 0 : qItems.map((item) => { var _a; return (_a = item.text) !== null && _a !== void 0 ? _a : ''; })) !== null && _a !== void 0 ? _a : []; }, [qItems]);
@@ -62,66 +49,64 @@ function GroupTable(props) {
62
49
  setTableRows(updatedTableRows);
63
50
  onQrRepeatGroupChange({
64
51
  linkId: qItem.linkId,
65
- qrItems: updatedTableRows.flatMap((singleRow) => singleRow.qrItem ? [cloneDeep(singleRow.qrItem)] : [])
52
+ qrItems: getGroupTableItemsToUpdate(updatedTableRows, selectedIds)
66
53
  });
67
54
  }
68
- function handleDeleteRow(index) {
55
+ function handleRemoveRow(index) {
69
56
  const updatedTableRows = [...tableRows];
70
57
  updatedTableRows.splice(index, 1);
71
58
  setTableRows(updatedTableRows);
72
59
  onQrRepeatGroupChange({
73
60
  linkId: qItem.linkId,
74
- qrItems: updatedTableRows.flatMap((singleRow) => singleRow.qrItem ? [cloneDeep(singleRow.qrItem)] : [])
61
+ qrItems: getGroupTableItemsToUpdate(updatedTableRows, selectedIds)
75
62
  });
76
63
  }
77
64
  function handleAddRow() {
65
+ const newRowNanoId = nanoid();
78
66
  setTableRows([
79
67
  ...tableRows,
80
68
  {
81
- nanoId: nanoid(),
69
+ nanoId: newRowNanoId,
82
70
  qrItem: null
83
71
  }
84
72
  ]);
73
+ setSelectedIds([...selectedIds, newRowNanoId]);
85
74
  }
86
- if (showMinimalView) {
87
- return (React.createElement(QGroupContainerBox, { cardElevation: groupCardElevation, isRepeated: false, py: 1 },
88
- React.createElement(TableContainer, { component: Paper, elevation: groupCardElevation },
89
- React.createElement(Table, { size: "small" },
90
- React.createElement(TableHead, null,
91
- React.createElement(TableRow, null,
92
- itemLabels.map((itemLabel) => (React.createElement(HeaderTableCell, { key: itemLabel, size: "medium" }, itemLabel))),
93
- React.createElement(TableCell, null))),
94
- React.createElement(TableBody, null, tableRows.map(({ nanoId, qrItem: nullableQrItem }, index) => {
95
- const answeredQrItem = createEmptyQrItem(qItem);
96
- if (nullableQrItem) {
97
- answeredQrItem.item = nullableQrItem.item;
98
- }
99
- return (React.createElement(TableRow, { key: nanoId },
100
- React.createElement(GroupTableRow, { qItem: qItem, qrItem: answeredQrItem, qItemsIndexMap: qItemsIndexMap, parentIsReadOnly: parentIsReadOnly, onQrItemChange: (newQrGroup) => handleRowChange(newQrGroup, index) })));
101
- }))))));
75
+ function handleSelectAll() {
76
+ // deselect all if all are selected, otherwise select all
77
+ const updatedTableIds = selectedIds.length === tableRows.length ? [] : tableRows.map((tableRow) => tableRow.nanoId);
78
+ setSelectedIds(updatedTableIds);
79
+ onQrRepeatGroupChange({
80
+ linkId: qItem.linkId,
81
+ qrItems: getGroupTableItemsToUpdate(tableRows, updatedTableIds)
82
+ });
83
+ }
84
+ function handleSelectRow(nanoId) {
85
+ const updatedSelectedIds = [...selectedIds];
86
+ const index = updatedSelectedIds.indexOf(nanoId);
87
+ if (index === -1) {
88
+ updatedSelectedIds.push(nanoId);
89
+ }
90
+ else {
91
+ updatedSelectedIds.splice(index, 1);
92
+ }
93
+ setSelectedIds(updatedSelectedIds);
94
+ onQrRepeatGroupChange({
95
+ linkId: qItem.linkId,
96
+ qrItems: getGroupTableItemsToUpdate(tableRows, updatedSelectedIds)
97
+ });
98
+ }
99
+ // TODO fix error message
100
+ // TODO add swc
101
+ // TODO add listener
102
+ function handleReorderRows(newTableRows) {
103
+ setTableRows(newTableRows);
104
+ onQrRepeatGroupChange({
105
+ linkId: qItem.linkId,
106
+ qrItems: getGroupTableItemsToUpdate(newTableRows, selectedIds)
107
+ });
102
108
  }
103
- return (React.createElement(QGroupContainerBox, { cardElevation: groupCardElevation, isRepeated: false, py: 3 },
104
- groupCardElevation !== 1 ? (React.createElement(React.Fragment, null,
105
- React.createElement(Typography, { fontSize: 13, variant: "h6", color: readOnly ? 'text.secondary' : 'text.primary' },
106
- React.createElement(LabelWrapper, { qItem: qItem, readOnly: readOnly })),
107
- React.createElement(Divider, { sx: { my: 1 }, light: true }))) : null,
108
- React.createElement(TableContainer, { component: Paper, elevation: groupCardElevation },
109
- React.createElement(Table, null,
110
- React.createElement("caption", null,
111
- React.createElement(AddRowButton, { repeatGroups: tableRows, readOnly: readOnly, onAddItem: handleAddRow })),
112
- React.createElement(TableHead, null,
113
- React.createElement(TableRow, null,
114
- itemLabels.map((itemLabel) => (React.createElement(HeaderTableCell, { key: itemLabel }, itemLabel))),
115
- React.createElement(TableCell, null))),
116
- React.createElement(TableBody, null, tableRows.map(({ nanoId, qrItem: nullableQrItem }, index) => {
117
- const answeredQrItem = createEmptyQrItem(qItem);
118
- if (nullableQrItem) {
119
- answeredQrItem.item = nullableQrItem.item;
120
- }
121
- return (React.createElement(TableRow, { key: nanoId },
122
- React.createElement(GroupTableRow, { qItem: qItem, qrItem: answeredQrItem, qItemsIndexMap: qItemsIndexMap, parentIsReadOnly: parentIsReadOnly, onQrItemChange: (newQrGroup) => handleRowChange(newQrGroup, index) }),
123
- React.createElement(DeleteRowButton, { nullableQrItem: nullableQrItem, numOfRows: tableRows.length, readOnly: readOnly, onDeleteItem: () => handleDeleteRow(index) })));
124
- }))))));
109
+ return (React.createElement(GroupTableView, { qItem: qItem, qItemsIndexMap: qItemsIndexMap, groupCardElevation: groupCardElevation, readOnly: readOnly, tableRows: tableRows, selectedIds: selectedIds, itemLabels: itemLabels, showMinimalView: showMinimalView, parentIsReadOnly: parentIsReadOnly, onAddRow: handleAddRow, onRowChange: handleRowChange, onRemoveRow: handleRemoveRow, onSelectRow: handleSelectRow, onSelectAll: handleSelectAll, onReorderRows: handleReorderRows }));
125
110
  }
126
111
  export default GroupTable;
127
112
  //# sourceMappingURL=GroupTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupTable.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GroupTable.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
3
+ import { GroupTableRowModel } from '../../../interfaces/groupTable.interface';
4
+ import { PropsWithParentIsReadOnlyAttribute, PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
5
+ interface GroupTableBodyProps extends PropsWithParentIsReadOnlyAttribute, PropsWithShowMinimalViewAttribute {
6
+ tableQItem: QuestionnaireItem;
7
+ readOnly: boolean;
8
+ tableRows: GroupTableRowModel[];
9
+ selectedIds: string[];
10
+ qItemsIndexMap: Record<string, number>;
11
+ onRowChange: (newQrRow: QuestionnaireResponseItem, index: number) => void;
12
+ onRemoveRow: (index: number) => void;
13
+ onSelectRow: (nanoId: string) => void;
14
+ onReorderRows: (newTableRows: GroupTableRowModel[]) => void;
15
+ }
16
+ declare function GroupTableBody(props: GroupTableBodyProps): React.JSX.Element;
17
+ export default GroupTableBody;
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Copyright 2023 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
+ import React from 'react';
18
+ import { createEmptyQrItem } from '../../../utils/qrItem';
19
+ import GroupTableRow from './GroupTableRow';
20
+ import { DragDropContext, Droppable } from 'react-beautiful-dnd';
21
+ import { reorderRows } from '../../../utils/groupTable';
22
+ import TableBody from '@mui/material/TableBody';
23
+ function GroupTableBody(props) {
24
+ const { tableQItem, readOnly, tableRows, selectedIds, qItemsIndexMap, showMinimalView, parentIsReadOnly, onRowChange, onRemoveRow, onSelectRow, onReorderRows } = props;
25
+ function onDragEnd(result) {
26
+ if (!result.destination) {
27
+ return;
28
+ }
29
+ if (result.destination.index === result.source.index) {
30
+ return;
31
+ }
32
+ const reorderedRows = reorderRows(tableRows, result.source.index, result.destination.index);
33
+ onReorderRows(reorderedRows);
34
+ }
35
+ return (React.createElement(DragDropContext, { onDragEnd: onDragEnd },
36
+ React.createElement(Droppable, { droppableId: "gtable_rows", direction: "vertical" }, (droppableProvided, snapshot) => (React.createElement(TableBody, Object.assign({ ref: droppableProvided.innerRef }, droppableProvided.droppableProps),
37
+ tableRows.map(({ nanoId, qrItem: nullableQrItem }, index) => {
38
+ const itemIsSelected = selectedIds.indexOf(nanoId) !== -1;
39
+ const answeredQrItem = createEmptyQrItem(tableQItem);
40
+ if (nullableQrItem) {
41
+ answeredQrItem.item = nullableQrItem.item;
42
+ }
43
+ return (React.createElement(GroupTableRow, { key: nanoId, index: index, nanoId: nanoId, tableQItem: tableQItem, answeredQrItem: answeredQrItem, nullableQrItem: nullableQrItem, readOnly: readOnly, hoverDisabled: snapshot.isDraggingOver, tableRows: tableRows, itemIsSelected: itemIsSelected, selectedIds: selectedIds, qItemsIndexMap: qItemsIndexMap, showMinimalView: showMinimalView, parentIsReadOnly: parentIsReadOnly, onRowChange: onRowChange, onRemoveRow: onRemoveRow, onSelectRow: onSelectRow }));
44
+ }),
45
+ droppableProvided.placeholder)))));
46
+ }
47
+ export default GroupTableBody;
48
+ //# sourceMappingURL=GroupTableBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupTableBody.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTableBody.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAc,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAgBhD,SAAS,cAAc,CAAC,KAA0B;IAChD,MAAM,EACJ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,SAAS,SAAS,CAAC,MAAkB;QACnC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACvB,OAAO;SACR;QAED,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YACpD,OAAO;SACR;QAED,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE5F,aAAa,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CACL,oBAAC,eAAe,IAAC,SAAS,EAAE,SAAS;QACnC,oBAAC,SAAS,IAAC,WAAW,EAAC,aAAa,EAAC,SAAS,EAAC,UAAU,IACtD,CAAC,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAChC,oBAAC,SAAS,kBAAC,GAAG,EAAE,iBAAiB,CAAC,QAAQ,IAAM,iBAAiB,CAAC,cAAc;YAC7E,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC3D,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1D,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBACrD,IAAI,cAAc,EAAE;oBAClB,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;iBAC3C;gBAED,OAAO,CACL,oBAAC,aAAa,IACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,QAAQ,CAAC,cAAc,EACtC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,GACxB,CACH,CAAC;YACJ,CAAC,CAAC;YACD,iBAAiB,CAAC,WAAW,CACpB,CACb,CACS,CACI,CACnB,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC"}
@@ -1,10 +1,23 @@
1
1
  import React from 'react';
2
2
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
3
- import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
4
- interface Props extends PropsWithQrItemChangeHandler, PropsWithParentIsReadOnlyAttribute {
5
- qItem: QuestionnaireItem;
6
- qrItem: QuestionnaireResponseItem | null;
3
+ import type { PropsWithParentIsReadOnlyAttribute, PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
4
+ import { TableRowProps } from '@mui/material/TableRow';
5
+ import { GroupTableRowModel } from '../../../interfaces/groupTable.interface';
6
+ interface GroupTableRowProps extends PropsWithShowMinimalViewAttribute, PropsWithParentIsReadOnlyAttribute, TableRowProps {
7
+ nanoId: string;
8
+ index: number;
9
+ tableQItem: QuestionnaireItem;
10
+ answeredQrItem: QuestionnaireResponseItem;
11
+ nullableQrItem: QuestionnaireResponseItem | null;
12
+ readOnly: boolean;
13
+ hoverDisabled: boolean;
14
+ tableRows: GroupTableRowModel[];
15
+ itemIsSelected: boolean;
16
+ selectedIds: string[];
7
17
  qItemsIndexMap: Record<string, number>;
18
+ onRowChange: (newQrRow: QuestionnaireResponseItem, index: number) => void;
19
+ onRemoveRow: (index: number) => void;
20
+ onSelectRow: (nanoId: string) => void;
8
21
  }
9
- declare function GroupTableRow(props: Props): React.JSX.Element | null;
22
+ declare function GroupTableRow(props: GroupTableRowProps): React.JSX.Element;
10
23
  export default GroupTableRow;
@@ -15,32 +15,24 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import React from 'react';
18
- import { createEmptyQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
19
- import SingleItem from '../SingleItem/SingleItem';
20
- import { getQrItemsIndex } from '../../../utils/mapItem';
21
- import { StandardTableCell } from './Table.styles';
18
+ import SelectRowButton from './SelectRowButton';
19
+ import GroupTableRowCells from './GroupTableRowCells';
20
+ import RemoveRowButton from './RemoveRowButton';
21
+ import DragIndicator from '@mui/icons-material/DragIndicator';
22
+ import TableCell from '@mui/material/TableCell';
23
+ import Box from '@mui/material/Box';
24
+ import { Draggable } from 'react-beautiful-dnd';
25
+ import { StyledGroupTableRow } from './Table.styles';
22
26
  function GroupTableRow(props) {
23
- const { qItem, qrItem, qItemsIndexMap, parentIsReadOnly, onQrItemChange } = props;
24
- const rowItems = qItem.item;
25
- const row = qrItem && qrItem.item ? qrItem : createEmptyQrGroup(qItem);
26
- const rowQrItems = row.item;
27
- if (!rowItems || !rowQrItems) {
28
- return null;
29
- }
30
- function handleQrRowItemChange(newQrRowItem) {
31
- const qrRow = Object.assign({}, row);
32
- updateQrItemsInGroup(newQrRowItem, null, qrRow, qItemsIndexMap);
33
- onQrItemChange(qrRow);
34
- }
35
- const qrItemsByIndex = getQrItemsIndex(rowItems, rowQrItems, qItemsIndexMap);
36
- return (React.createElement(React.Fragment, null, rowItems.map((rowItem, index) => {
37
- const qrItem = qrItemsByIndex[index];
38
- if (Array.isArray(qrItem)) {
39
- return null;
40
- }
41
- return (React.createElement(StandardTableCell, { key: index, numOfColumns: rowItems.length, isFirst: index === 0 },
42
- React.createElement(SingleItem, { key: qItem.linkId, qItem: rowItem, qrItem: qrItem !== null && qrItem !== void 0 ? qrItem : null, isRepeated: true, isTabled: true, showMinimalView: true, parentIsReadOnly: parentIsReadOnly, onQrItemChange: handleQrRowItemChange })));
43
- })));
27
+ const { nanoId, index, tableQItem, answeredQrItem, nullableQrItem, readOnly, hoverDisabled, tableRows, itemIsSelected, qItemsIndexMap, showMinimalView, parentIsReadOnly, onRowChange, onRemoveRow, onSelectRow } = props;
28
+ return (React.createElement(Draggable, { draggableId: nanoId, index: index }, (draggableProvided, snapshot) => (React.createElement(StyledGroupTableRow, Object.assign({ itemIsDragged: snapshot.isDragging, itemIsSelected: itemIsSelected, hoverDisabled: hoverDisabled, hover: !hoverDisabled, ref: draggableProvided.innerRef }, draggableProvided.draggableProps),
29
+ showMinimalView ? null : (React.createElement(React.Fragment, null,
30
+ React.createElement(TableCell, { padding: "checkbox" },
31
+ React.createElement(Box, Object.assign({ display: "flex", alignItems: "center", justifyContent: "center" }, draggableProvided.dragHandleProps),
32
+ React.createElement(DragIndicator, { fontSize: "small" }))),
33
+ React.createElement(SelectRowButton, { isSelected: itemIsSelected, onSelectItem: () => onSelectRow(nanoId) }))),
34
+ React.createElement(GroupTableRowCells, { qItem: tableQItem, qrItem: answeredQrItem, qItemsIndexMap: qItemsIndexMap, parentIsReadOnly: parentIsReadOnly, onQrItemChange: (newQrGroup) => onRowChange(newQrGroup, index) }),
35
+ showMinimalView ? null : (React.createElement(RemoveRowButton, { nullableQrItem: nullableQrItem, numOfRows: tableRows.length, readOnly: readOnly, onRemoveItem: () => onRemoveRow(index) }))))));
44
36
  }
45
37
  export default GroupTableRow;
46
38
  //# sourceMappingURL=GroupTableRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupTableRow.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTableRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAYnD,SAAS,aAAa,CAAC,KAAY;IACjC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAElF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;IAE5B,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,SAAS,qBAAqB,CAAC,YAAuC;QACpE,MAAM,KAAK,qBAAmC,GAAG,CAAE,CAAC;QACpD,oBAAoB,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAChE,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAE7E,OAAO,CACL,0CACG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,oBAAC,iBAAiB,IAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,KAAK,CAAC;YAChF,oBAAC,UAAU,IACT,GAAG,EAAE,KAAK,CAAC,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,EACtB,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,eAAe,EAAE,IAAI,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,qBAAqB,GACrC,CACgB,CACrB,CAAC;IACJ,CAAC,CAAC,CACD,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"GroupTableRow.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTableRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAsBrD,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,EACJ,MAAM,EACN,KAAK,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,QAAQ,EACR,aAAa,EACb,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,WAAW,EACZ,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,oBAAC,SAAS,IAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IACzC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAChC,oBAAC,mBAAmB,kBAClB,aAAa,EAAE,QAAQ,CAAC,UAAU,EAClC,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,CAAC,aAAa,EACrB,GAAG,EAAE,iBAAiB,CAAC,QAAQ,IAC3B,iBAAiB,CAAC,cAAc;QACnC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB;YACE,oBAAC,SAAS,IAAC,OAAO,EAAC,UAAU;gBAC3B,oBAAC,GAAG,kBACF,OAAO,EAAC,MAAM,EACd,UAAU,EAAC,QAAQ,EACnB,cAAc,EAAC,QAAQ,IACnB,iBAAiB,CAAC,eAAe;oBACrC,oBAAC,aAAa,IAAC,QAAQ,EAAC,OAAO,GAAG,CAC9B,CACI;YACZ,oBAAC,eAAe,IACd,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GACvC,CACD,CACJ;QACD,oBAAC,kBAAkB,IACjB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,GAC9D;QACD,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB,oBAAC,eAAe,IACd,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,CAAC,MAAM,EAC3B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GACtC,CACH,CACmB,CACvB,CACS,CACb,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
3
+ import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
4
+ import { TableRowProps } from '@mui/material/TableRow';
5
+ interface GroupTableRowCellsProps extends PropsWithQrItemChangeHandler, PropsWithParentIsReadOnlyAttribute, TableRowProps {
6
+ qItem: QuestionnaireItem;
7
+ qrItem: QuestionnaireResponseItem | null;
8
+ qItemsIndexMap: Record<string, number>;
9
+ }
10
+ declare function GroupTableRowCells(props: GroupTableRowCellsProps): React.JSX.Element | null;
11
+ export default GroupTableRowCells;
@@ -0,0 +1,57 @@
1
+ /*
2
+ * Copyright 2023 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
+ var __rest = (this && this.__rest) || function (s, e) {
18
+ var t = {};
19
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
20
+ t[p] = s[p];
21
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
22
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
23
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
24
+ t[p[i]] = s[p[i]];
25
+ }
26
+ return t;
27
+ };
28
+ import React from 'react';
29
+ import { createEmptyQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
30
+ import SingleItem from '../SingleItem/SingleItem';
31
+ import { getQrItemsIndex } from '../../../utils/mapItem';
32
+ import { StandardTableCell } from './Table.styles';
33
+ function GroupTableRowCells(props) {
34
+ const { qItem, qrItem, qItemsIndexMap, parentIsReadOnly, onQrItemChange } = props, tableRowProps = __rest(props, ["qItem", "qrItem", "qItemsIndexMap", "parentIsReadOnly", "onQrItemChange"]);
35
+ const rowItems = qItem.item;
36
+ const row = qrItem && qrItem.item ? qrItem : createEmptyQrGroup(qItem);
37
+ const rowQrItems = row.item;
38
+ if (!rowItems || !rowQrItems) {
39
+ return null;
40
+ }
41
+ function handleQrRowItemChange(newQrRowItem) {
42
+ const qrRow = Object.assign({}, row);
43
+ updateQrItemsInGroup(newQrRowItem, null, qrRow, qItemsIndexMap);
44
+ onQrItemChange(qrRow);
45
+ }
46
+ const qrItemsByIndex = getQrItemsIndex(rowItems, rowQrItems, qItemsIndexMap);
47
+ return (React.createElement(React.Fragment, null, rowItems.map((rowItem, index) => {
48
+ const qrItem = qrItemsByIndex[index];
49
+ if (Array.isArray(qrItem)) {
50
+ return null;
51
+ }
52
+ return (React.createElement(StandardTableCell, { key: index, numOfColumns: rowItems.length, isFirst: index === 0 },
53
+ React.createElement(SingleItem, { key: qItem.linkId, qItem: rowItem, qrItem: qrItem !== null && qrItem !== void 0 ? qrItem : null, isRepeated: true, isTabled: true, showMinimalView: true, parentIsReadOnly: parentIsReadOnly, onQrItemChange: handleQrRowItemChange })));
54
+ })));
55
+ }
56
+ export default GroupTableRowCells;
57
+ //# sourceMappingURL=GroupTableRowCells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupTableRowCells.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTableRowCells.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAgBnD,SAAS,kBAAkB,CAAC,KAA8B;IACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,KACrE,KAAK,EADqE,aAAa,UACvF,KAAK,EADD,2EAAqF,CACpF,CAAC;IAER,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;IAE5B,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,SAAS,qBAAqB,CAAC,YAAuC;QACpE,MAAM,KAAK,qBAAmC,GAAG,CAAE,CAAC;QACpD,oBAAoB,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAChE,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAE7E,OAAO,CACL,0CACG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,oBAAC,iBAAiB,IAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,KAAK,CAAC;YAChF,oBAAC,UAAU,IACT,GAAG,EAAE,KAAK,CAAC,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,EACtB,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,eAAe,EAAE,IAAI,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,qBAAqB,GACrC,CACgB,CACrB,CAAC;IACJ,CAAC,CAAC,CACD,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
3
+ import { GroupTableRowModel } from '../../../interfaces/groupTable.interface';
4
+ import { PropsWithParentIsReadOnlyAttribute, PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
5
+ interface GroupTableRowsProps extends PropsWithParentIsReadOnlyAttribute, PropsWithShowMinimalViewAttribute {
6
+ tableQItem: QuestionnaireItem;
7
+ readOnly: boolean;
8
+ tableRows: GroupTableRowModel[];
9
+ selectedIds: string[];
10
+ qItemsIndexMap: Record<string, number>;
11
+ onRowChange: (newQrRow: QuestionnaireResponseItem, index: number) => void;
12
+ onRemoveRow: (index: number) => void;
13
+ onSelectRow: (nanoId: string) => void;
14
+ onReorderRows: (newTableRows: GroupTableRowModel[]) => void;
15
+ }
16
+ declare function GroupTableRows(props: GroupTableRowsProps): React.JSX.Element;
17
+ export default GroupTableRows;