@dhis2/analytics 20.6.3 → 21.0.0-alpha.2

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 (214) hide show
  1. package/build/cjs/__demo__/Filter.stories.js +2 -2
  2. package/build/cjs/__demo__/FixedPeriodSelect.stories.js +2 -2
  3. package/build/cjs/__demo__/OpenFileDialog.stories.js +1 -1
  4. package/build/cjs/__demo__/OrgUnitDimension.stories.js +95 -0
  5. package/build/cjs/__demo__/PivotTable.stories.js +2 -2
  6. package/build/cjs/api/analytics/AnalyticsBase.js +1 -1
  7. package/build/cjs/api/analytics/AnalyticsRequest.js +1 -1
  8. package/build/cjs/api/analytics/AnalyticsRequestBase.js +3 -3
  9. package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +7 -7
  10. package/build/cjs/api/analytics/AnalyticsResponse.js +2 -2
  11. package/build/cjs/api/analytics/__tests__/AnalyticsAggregate.spec.js +11 -1
  12. package/build/cjs/api/analytics/__tests__/AnalyticsRequest.spec.js +9 -9
  13. package/build/cjs/api/analytics/__tests__/AnalyticsRequestBase.spec.js +4 -4
  14. package/build/cjs/api/analytics/utils.js +1 -1
  15. package/build/cjs/api/dimensions.js +37 -37
  16. package/build/cjs/api/organisationUnits.js +100 -46
  17. package/build/cjs/components/DataDimension/DataTypesSelector.js +3 -3
  18. package/build/cjs/components/DataDimension/DetailSelector.js +2 -2
  19. package/build/cjs/components/DataDimension/GroupSelector.js +9 -9
  20. package/build/cjs/components/DataDimension/ItemSelector.js +19 -19
  21. package/build/cjs/components/DataDimension/MetricSelector.js +3 -3
  22. package/build/cjs/components/DataDimension/styles/DataTypesSelector.style.js +1 -1
  23. package/build/cjs/components/DataDimension/styles/DetailSelector.style.js +1 -1
  24. package/build/cjs/components/DataDimension/styles/GroupSelector.style.js +1 -1
  25. package/build/cjs/components/DataDimension/styles/MetricSelector.style.js +1 -1
  26. package/build/cjs/components/DimensionMenu.js +10 -10
  27. package/build/cjs/components/DimensionsPanel/DimensionsPanel.js +2 -2
  28. package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +5 -5
  29. package/build/cjs/components/DimensionsPanel/List/DimensionLabel.js +2 -2
  30. package/build/cjs/components/DimensionsPanel/List/DimensionList.js +10 -10
  31. package/build/cjs/components/DimensionsPanel/List/styles/DimensionList.style.js +1 -1
  32. package/build/cjs/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  33. package/build/cjs/components/DynamicDimension/DynamicDimension.js +4 -4
  34. package/build/cjs/components/DynamicDimension/ItemSelector.js +8 -8
  35. package/build/cjs/components/DynamicDimension/styles/DynamicDimension.style.js +1 -1
  36. package/build/cjs/components/FileMenu/DeleteDialog.js +4 -4
  37. package/build/cjs/components/FileMenu/FileMenu.js +7 -7
  38. package/build/cjs/components/FileMenu/FileMenu.styles.js +1 -1
  39. package/build/cjs/components/FileMenu/GetLinkDialog.js +3 -3
  40. package/build/cjs/components/FileMenu/RenameDialog.js +4 -4
  41. package/build/cjs/components/FileMenu/SaveAsDialog.js +4 -4
  42. package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +1 -1
  43. package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +1 -1
  44. package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +1 -1
  45. package/build/cjs/components/FileMenu/utils.js +3 -3
  46. package/build/cjs/components/Filter/Filter.js +1 -1
  47. package/build/cjs/components/Filter/styles/Filter.style.js +1 -1
  48. package/build/cjs/components/LegendKey/LegendKey.js +9 -9
  49. package/build/cjs/components/LegendKey/styles/LegendKey.style.js +1 -1
  50. package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +2 -2
  51. package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +21 -21
  52. package/build/cjs/components/OpenFileDialog/OpenFileDialog.styles.js +1 -1
  53. package/build/cjs/components/OpenFileDialog/styles/CustomSelectOption.style.js +1 -1
  54. package/build/cjs/components/Options/VisualizationOptions.js +2 -2
  55. package/build/cjs/components/Options/styles/VisualizationOptions.style.js +10 -10
  56. package/build/cjs/components/OrgUnitDimension/OrgUnitDimension.js +168 -203
  57. package/build/cjs/components/OrgUnitDimension/OrgUnitDimensionOld.js +244 -0
  58. package/build/cjs/components/OrgUnitDimension/styles/OrgUnitDimension.style.js +5 -2
  59. package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +5 -5
  60. package/build/cjs/components/PeriodDimension/FixedPeriodSelect.js +6 -6
  61. package/build/cjs/components/PeriodDimension/PeriodTransfer.js +11 -11
  62. package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +2 -2
  63. package/build/cjs/components/PeriodDimension/styles/FixedPeriodSelect.style.js +1 -1
  64. package/build/cjs/components/PeriodDimension/styles/PeriodFilter.style.js +1 -1
  65. package/build/cjs/components/PeriodDimension/utils/fixedPeriods.js +49 -49
  66. package/build/cjs/components/PivotTable/PivotTable.js +2 -2
  67. package/build/cjs/components/PivotTable/PivotTableCell.js +3 -3
  68. package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +2 -2
  69. package/build/cjs/components/PivotTable/PivotTableContainer.js +2 -2
  70. package/build/cjs/components/PivotTable/PivotTableEngineContext.js +2 -2
  71. package/build/cjs/components/PivotTable/PivotTableSortIcon.js +2 -2
  72. package/build/cjs/components/PivotTable/PivotTableTitleRow.js +4 -4
  73. package/build/cjs/components/PivotTable/PivotTableValueCell.js +2 -2
  74. package/build/cjs/components/PivotTable/styles/PivotTable.style.js +3 -3
  75. package/build/cjs/components/TransferOption.js +7 -7
  76. package/build/cjs/components/styles/DimensionSelector.style.js +1 -1
  77. package/build/cjs/components/styles/TransferOption.style.js +1 -1
  78. package/build/cjs/index.js +6 -6
  79. package/build/cjs/locales/en/translations.json +5 -0
  80. package/build/cjs/locales/ru/translations.json +1 -1
  81. package/build/cjs/locales/zh/translations.json +7 -7
  82. package/build/cjs/modules/axis.js +1 -1
  83. package/build/cjs/modules/layoutUiRules/rules.js +1 -1
  84. package/build/cjs/modules/ouIdHelper/index.js +9 -3
  85. package/build/cjs/modules/pivotTable/PivotTableEngine.js +3 -3
  86. package/build/cjs/modules/pivotTable/measureText.js +1 -1
  87. package/build/cjs/modules/relativeItems/index.js +1 -1
  88. package/build/cjs/modules/visTypes.js +1 -1
  89. package/build/cjs/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
  90. package/build/cjs/visualizations/config/adapters/dhis_highcharts/axis.js +2 -2
  91. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
  92. package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +2 -2
  93. package/build/cjs/visualizations/config/adapters/dhis_highcharts/legend.js +19 -8
  94. package/build/cjs/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
  95. package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  96. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +1 -1
  97. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +1 -1
  98. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
  99. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -1
  100. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +3 -3
  101. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +2 -2
  102. package/build/cjs/visualizations/config/generators/dhis/singleValue.js +5 -5
  103. package/build/cjs/visualizations/config/index.js +3 -3
  104. package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +1 -1
  105. package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +1 -1
  106. package/build/cjs/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
  107. package/build/cjs/visualizations/store/index.js +2 -2
  108. package/build/cjs/visualizations/util/axisId.js +1 -1
  109. package/build/cjs/visualizations/util/getFilterText.js +3 -3
  110. package/build/es/__demo__/OpenFileDialog.stories.js +1 -1
  111. package/build/es/__demo__/OrgUnitDimension.stories.js +84 -0
  112. package/build/es/api/analytics/AnalyticsBase.js +1 -1
  113. package/build/es/api/analytics/AnalyticsRequest.js +1 -1
  114. package/build/es/api/analytics/AnalyticsRequestBase.js +3 -3
  115. package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +7 -7
  116. package/build/es/api/analytics/AnalyticsResponse.js +2 -2
  117. package/build/es/api/analytics/__tests__/AnalyticsAggregate.spec.js +11 -1
  118. package/build/es/api/analytics/__tests__/AnalyticsRequest.spec.js +9 -9
  119. package/build/es/api/analytics/__tests__/AnalyticsRequestBase.spec.js +4 -4
  120. package/build/es/api/analytics/utils.js +1 -1
  121. package/build/es/api/dimensions.js +39 -39
  122. package/build/es/api/organisationUnits.js +93 -43
  123. package/build/es/components/DataDimension/DataTypesSelector.js +3 -3
  124. package/build/es/components/DataDimension/DetailSelector.js +2 -2
  125. package/build/es/components/DataDimension/GroupSelector.js +7 -7
  126. package/build/es/components/DataDimension/ItemSelector.js +17 -17
  127. package/build/es/components/DataDimension/MetricSelector.js +3 -3
  128. package/build/es/components/DataDimension/styles/DataTypesSelector.style.js +1 -1
  129. package/build/es/components/DataDimension/styles/DetailSelector.style.js +1 -1
  130. package/build/es/components/DataDimension/styles/GroupSelector.style.js +1 -1
  131. package/build/es/components/DataDimension/styles/MetricSelector.style.js +1 -1
  132. package/build/es/components/DimensionMenu.js +10 -10
  133. package/build/es/components/DimensionsPanel/List/DimensionItem.js +3 -3
  134. package/build/es/components/DimensionsPanel/List/DimensionList.js +8 -8
  135. package/build/es/components/DimensionsPanel/List/styles/DimensionList.style.js +1 -1
  136. package/build/es/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  137. package/build/es/components/DynamicDimension/DynamicDimension.js +4 -4
  138. package/build/es/components/DynamicDimension/ItemSelector.js +6 -6
  139. package/build/es/components/DynamicDimension/styles/DynamicDimension.style.js +1 -1
  140. package/build/es/components/FileMenu/DeleteDialog.js +1 -1
  141. package/build/es/components/FileMenu/FileMenu.js +4 -4
  142. package/build/es/components/FileMenu/FileMenu.styles.js +1 -1
  143. package/build/es/components/FileMenu/GetLinkDialog.js +2 -2
  144. package/build/es/components/FileMenu/RenameDialog.js +1 -1
  145. package/build/es/components/FileMenu/SaveAsDialog.js +1 -1
  146. package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +1 -1
  147. package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +1 -1
  148. package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +1 -1
  149. package/build/es/components/FileMenu/utils.js +3 -3
  150. package/build/es/components/Filter/Filter.js +1 -1
  151. package/build/es/components/Filter/styles/Filter.style.js +1 -1
  152. package/build/es/components/LegendKey/LegendKey.js +9 -9
  153. package/build/es/components/LegendKey/styles/LegendKey.style.js +1 -1
  154. package/build/es/components/OpenFileDialog/CustomSelectOption.js +2 -2
  155. package/build/es/components/OpenFileDialog/OpenFileDialog.js +19 -19
  156. package/build/es/components/OpenFileDialog/OpenFileDialog.styles.js +1 -1
  157. package/build/es/components/OpenFileDialog/styles/CustomSelectOption.style.js +1 -1
  158. package/build/es/components/Options/styles/VisualizationOptions.style.js +10 -10
  159. package/build/es/components/OrgUnitDimension/OrgUnitDimension.js +168 -204
  160. package/build/es/components/OrgUnitDimension/OrgUnitDimensionOld.js +220 -0
  161. package/build/es/components/OrgUnitDimension/styles/OrgUnitDimension.style.js +3 -2
  162. package/build/es/components/PeriodDimension/FixedPeriodFilter.js +5 -5
  163. package/build/es/components/PeriodDimension/FixedPeriodSelect.js +3 -3
  164. package/build/es/components/PeriodDimension/PeriodTransfer.js +9 -9
  165. package/build/es/components/PeriodDimension/RelativePeriodFilter.js +2 -2
  166. package/build/es/components/PeriodDimension/styles/FixedPeriodSelect.style.js +1 -1
  167. package/build/es/components/PeriodDimension/styles/PeriodFilter.style.js +1 -1
  168. package/build/es/components/PeriodDimension/utils/fixedPeriods.js +49 -49
  169. package/build/es/components/PivotTable/PivotTableCell.js +3 -3
  170. package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +2 -2
  171. package/build/es/components/PivotTable/PivotTableContainer.js +2 -2
  172. package/build/es/components/PivotTable/PivotTableSortIcon.js +2 -2
  173. package/build/es/components/PivotTable/PivotTableTitleRow.js +2 -2
  174. package/build/es/components/PivotTable/styles/PivotTable.style.js +3 -3
  175. package/build/es/components/TransferOption.js +6 -6
  176. package/build/es/components/styles/DimensionSelector.style.js +1 -1
  177. package/build/es/components/styles/TransferOption.style.js +1 -1
  178. package/build/es/index.js +1 -1
  179. package/build/es/locales/en/translations.json +5 -0
  180. package/build/es/locales/ru/translations.json +1 -1
  181. package/build/es/locales/zh/translations.json +7 -7
  182. package/build/es/modules/axis.js +1 -1
  183. package/build/es/modules/layoutUiRules/rules.js +1 -1
  184. package/build/es/modules/ouIdHelper/index.js +5 -2
  185. package/build/es/modules/pivotTable/PivotTableEngine.js +3 -3
  186. package/build/es/modules/pivotTable/measureText.js +1 -1
  187. package/build/es/modules/relativeItems/index.js +2 -2
  188. package/build/es/modules/visTypes.js +1 -1
  189. package/build/es/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
  190. package/build/es/visualizations/config/adapters/dhis_highcharts/axis.js +2 -2
  191. package/build/es/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
  192. package/build/es/visualizations/config/adapters/dhis_highcharts/legend.js +19 -8
  193. package/build/es/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
  194. package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  195. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +1 -1
  196. package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +1 -1
  197. package/build/es/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
  198. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -1
  199. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +3 -3
  200. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +2 -2
  201. package/build/es/visualizations/config/generators/dhis/singleValue.js +5 -5
  202. package/build/es/visualizations/config/index.js +3 -3
  203. package/build/es/visualizations/store/adapters/dhis_dhis/index.js +1 -1
  204. package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +1 -1
  205. package/build/es/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
  206. package/build/es/visualizations/store/index.js +2 -2
  207. package/build/es/visualizations/util/axisId.js +1 -1
  208. package/build/es/visualizations/util/getFilterText.js +3 -3
  209. package/package.json +2 -1
  210. package/CHANGELOG.md +0 -2742
  211. package/build/cjs/api/organisationUnits-dataEngine.js +0 -119
  212. package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +0 -96
  213. package/build/es/api/organisationUnits-dataEngine.js +0 -96
  214. package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +0 -86
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.defaultState = void 0;
6
+ exports.default = void 0;
7
7
 
8
8
  var _style = _interopRequireDefault(require("styled-jsx/style"));
9
9
 
10
- var _d2UiOrgUnitDialog = require("@dhis2/d2-ui-org-unit-dialog");
10
+ var _appRuntime = require("@dhis2/app-runtime");
11
11
 
12
12
  var _ui = require("@dhis2/ui");
13
13
 
14
- var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
@@ -19,225 +19,190 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _organisationUnits = require("../../api/organisationUnits");
21
21
 
22
+ var _index = _interopRequireDefault(require("../../locales/index.js"));
23
+
22
24
  var _ouIdHelper = require("../../modules/ouIdHelper");
23
25
 
24
26
  var _predefinedDimensions = require("../../modules/predefinedDimensions");
25
27
 
26
28
  var _OrgUnitDimension = _interopRequireDefault(require("./styles/OrgUnitDimension.style"));
27
29
 
28
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
31
 
30
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
33
 
32
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
35
 
34
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
-
36
- const defaultState = {
37
- root: undefined,
38
- roots: undefined,
39
- // use "selected" property for cloning org units while user org unit(s) is (are) selected
40
- selected: [],
41
- ouLevels: [],
42
- ouGroups: [],
43
- showOrgUnitsTree: true
44
- };
45
- exports.defaultState = defaultState;
46
-
47
- class OrgUnitDimension extends _react.Component {
48
- constructor(props) {
49
- super(props);
50
-
51
- _defineProperty(this, "showOrgUnitsTree", () => {
52
- this.setState({
53
- showOrgUnitsTree: true
54
- });
55
- });
56
-
57
- _defineProperty(this, "hideOrgUnitsTree", () => {
58
- this.setState({
59
- showOrgUnitsTree: false
60
- });
61
- });
62
-
63
- _defineProperty(this, "getUserOrgUnitsFromIds", ids => {
64
- return _d2UiOrgUnitDialog.userOrgUnits.filter(ou => ids.includes(ou.id));
65
- });
66
-
67
- _defineProperty(this, "onLevelChange", event => {
68
- const levelIds = event.target.value.filter(id => !!id);
69
- this.props.onSelect({
70
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
71
- items: [...this.props.ouItems.filter(ou => !_ouIdHelper.ouIdHelper.hasLevelPrefix(ou.id)), ...levelIds.map(id => {
72
- const levelOu = this.state.ouLevels.find(ou => ou.id === id);
73
- return { ...levelOu,
74
- id: _ouIdHelper.ouIdHelper.addLevelPrefix(levelOu.id)
75
- };
76
- })]
77
- });
78
- });
79
-
80
- _defineProperty(this, "onGroupChange", event => {
81
- const groupIds = event.target.value.filter(id => !!id);
82
- this.props.onSelect({
83
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
84
- items: [...this.props.ouItems.filter(ou => !_ouIdHelper.ouIdHelper.hasGroupPrefix(ou.id)), ...groupIds.map(id => {
85
- const groupOu = this.state.ouGroups.find(ou => ou.id === id);
86
- return { ...groupOu,
87
- id: _ouIdHelper.ouIdHelper.addGroupPrefix(id)
88
- };
89
- })]
36
+ const DYNAMIC_ORG_UNITS = [_ouIdHelper.USER_ORG_UNIT, _ouIdHelper.USER_ORG_UNIT_CHILDREN, _ouIdHelper.USER_ORG_UNIT_GRANDCHILDREN];
37
+
38
+ const OrgUnitDimension = ({
39
+ root,
40
+ selected,
41
+ onSelect
42
+ }) => {
43
+ const [ouLevels, setOuLevels] = (0, _react.useState)([]);
44
+ const [ouGroups, setOuGroups] = (0, _react.useState)([]);
45
+ const dataEngine = (0, _appRuntime.useDataEngine)();
46
+
47
+ const onSelectItems = selectedItem => {
48
+ const {
49
+ id,
50
+ checked,
51
+ displayName,
52
+ path
53
+ } = selectedItem;
54
+ let result = [...selected];
55
+
56
+ if (checked && DYNAMIC_ORG_UNITS.includes(id)) {
57
+ result = [...result.filter(item => DYNAMIC_ORG_UNITS.includes(item.id)), {
58
+ id,
59
+ displayName
60
+ }];
61
+ } else if (checked) {
62
+ result.push({
63
+ id,
64
+ path,
65
+ name: displayName
90
66
  });
91
- });
67
+ } else {
68
+ result = [...result.filter(item => item.id !== id)];
69
+ }
92
70
 
93
- _defineProperty(this, "onDeselectAllClick", () => this.props.onDeselect({
71
+ return onSelect({
94
72
  dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
95
- itemIdsToRemove: this.props.ouItems.map(ou => ou.id)
96
- }));
97
-
98
- _defineProperty(this, "loadOrgUnitTree", (d2, displayNameProperty) => {
99
- (0, _organisationUnits.apiFetchOrganisationUnits)(d2, displayNameProperty).then(rootLevel => rootLevel.toArray()).then(roots => {
100
- this.setState({
101
- roots,
102
- root: roots[0]
103
- });
104
- });
105
- });
106
-
107
- _defineProperty(this, "loadOrgUnitGroups", (d2, displayNameProperty) => {
108
- (0, _organisationUnits.apiFetchOrganisationUnitGroups)(d2, displayNameProperty).then(organisationUnitGroups => this.setState({
109
- ouGroups: organisationUnitGroups
110
- }));
111
- });
112
-
113
- _defineProperty(this, "loadOrgUnitLevels", d2 => {
114
- (0, _organisationUnits.apiFetchOrganisationUnitLevels)(d2).then(organisationUnitLevels => this.setState({
115
- ouLevels: (0, _sortBy.default)(organisationUnitLevels, ['level'])
116
- }));
73
+ items: result
117
74
  });
118
-
119
- _defineProperty(this, "handleOrgUnitClick", (event, orgUnit) => {
120
- const selected = this.props.ouItems;
121
-
122
- if (selected.some(ou => ou.path === orgUnit.path)) {
123
- this.props.onDeselect({
124
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
125
- itemIdsToRemove: [orgUnit.id]
126
- });
127
- } else {
128
- this.props.onSelect({
129
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
130
- items: [...selected, { ...orgUnit,
131
- name: orgUnit.name || orgUnit.displayName
132
- }]
133
- });
134
- }
135
- });
136
-
137
- _defineProperty(this, "handleUserOrgUnitClick", (event, checked) => {
138
- if (checked) {
139
- if (!this.state.selected.length) {
140
- this.setState({
141
- selected: this.props.ouItems.slice()
142
- });
143
- }
144
-
145
- this.props.onSelect({
146
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
147
- items: [...this.props.ouItems.filter(ou => this.userOrgUnitIds.includes(ou.id)), _d2UiOrgUnitDialog.userOrgUnits.find(ou => ou.id === event.target.name)]
148
- });
149
- } else {
150
- if (this.props.ouItems.length === 1 && this.state.selected.length > 0) {
151
- this.props.onSelect({
152
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
153
- items: this.state.selected
154
- });
155
- } else {
156
- this.props.onDeselect({
157
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
158
- itemIdsToRemove: [event.target.name]
159
- });
160
- }
161
- }
162
- });
163
-
164
- _defineProperty(this, "handleMultipleOrgUnitsSelect", orgUnits => {
165
- const selected = this.props.ouItems;
166
- this.props.onSelect({
167
- dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
168
- items: [...selected, ...orgUnits.reduce((obj, ou) => {
169
- // avoid duplicates when clicking "Select children" multiple times
170
- if (!selected.find(i => i.id === ou.id)) {
171
- obj.push({ ...ou,
172
- name: ou.name || ou.displayName
173
- });
174
- }
175
-
176
- return obj;
177
- }, [])]
178
- });
75
+ };
76
+
77
+ (0, _react.useEffect)(() => {
78
+ const doFetchOuLevels = async () => {
79
+ const result = await (0, _organisationUnits.apiFetchOrganisationUnitLevels)(dataEngine);
80
+ result.sort((a, b) => a.level > b.level ? 1 : -1);
81
+ setOuLevels(result);
82
+ };
83
+
84
+ const doFetchOuGroups = async () => {
85
+ const result = await (0, _organisationUnits.apiFetchOrganisationUnitGroups)(dataEngine);
86
+ setOuGroups(result);
87
+ };
88
+
89
+ doFetchOuLevels();
90
+ doFetchOuGroups();
91
+ }, [dataEngine]);
92
+
93
+ const onLevelChange = ids => {
94
+ const items = ids.map(id => ({
95
+ id: _ouIdHelper.ouIdHelper.addLevelPrefix(id),
96
+ name: ouLevels.find(level => level.id === id).displayName
97
+ }));
98
+ onSelect({
99
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
100
+ items: [...selected.filter(ou => !_ouIdHelper.ouIdHelper.hasLevelPrefix(ou.id)), ...items]
179
101
  });
102
+ };
180
103
 
181
- _defineProperty(this, "render", () => {
182
- const ids = this.props.ouItems.map(ou => ou.id);
183
- const selected = this.props.ouItems.filter(ou => !this.userOrgUnitIds.includes(ou.id) && !_ouIdHelper.ouIdHelper.hasLevelPrefix(ou.id) && !_ouIdHelper.ouIdHelper.hasGroupPrefix(ou.id));
184
- const userOrgUnits = this.getUserOrgUnitsFromIds(ids);
185
- const level = ids.filter(_ouIdHelper.ouIdHelper.hasLevelPrefix).map(_ouIdHelper.ouIdHelper.removePrefix);
186
- const group = ids.filter(_ouIdHelper.ouIdHelper.hasGroupPrefix).map(_ouIdHelper.ouIdHelper.removePrefix);
187
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, this.state.root && this.state.showOrgUnitsTree && /*#__PURE__*/_react.default.createElement(_d2UiOrgUnitDialog.OrgUnitSelector, {
188
- d2: this.props.d2,
189
- root: this.state.root,
190
- roots: this.state.roots,
191
- selected: selected,
192
- userOrgUnits: userOrgUnits,
193
- level: level,
194
- group: group,
195
- levelOptions: this.state.ouLevels,
196
- groupOptions: this.state.ouGroups,
197
- onLevelChange: this.onLevelChange,
198
- onGroupChange: this.onGroupChange,
199
- onDeselectAllClick: this.onDeselectAllClick,
200
- handleUserOrgUnitClick: this.handleUserOrgUnitClick,
201
- handleOrgUnitClick: this.handleOrgUnitClick,
202
- handleMultipleOrgUnitsSelect: this.handleMultipleOrgUnitsSelect,
203
- checkboxColor: "secondary",
204
- deselectAllTooltipFontColor: _ui.colors.grey900,
205
- deselectAllTooltipBackgroundColor: _ui.colors.grey300,
206
- displayNameProperty: this.props.displayNameProperty,
207
- isUserDataViewFallback: true
208
- }), !this.state.root && /*#__PURE__*/_react.default.createElement("div", {
209
- className: "jsx-".concat(_OrgUnitDimension.default.__hash) + " " + "loader"
210
- }, /*#__PURE__*/_react.default.createElement(_ui.CircularLoader, null)), /*#__PURE__*/_react.default.createElement(_style.default, {
211
- id: _OrgUnitDimension.default.__hash
212
- }, _OrgUnitDimension.default));
104
+ const onGroupChange = ids => {
105
+ const items = ids.map(id => ({
106
+ id: _ouIdHelper.ouIdHelper.addGroupPrefix(id),
107
+ name: ouGroups.find(group => group.id === id).displayName
108
+ }));
109
+ onSelect({
110
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
111
+ items: [...selected.filter(ou => !_ouIdHelper.ouIdHelper.hasGroupPrefix(ou.id)), ...items]
213
112
  });
214
-
215
- this.state = defaultState;
216
- this.userOrgUnitIds = _d2UiOrgUnitDialog.userOrgUnits.map(ou => ou.id);
217
- this.loadOrgUnitTree(props.d2, props.displayNameProperty);
218
- this.loadOrgUnitGroups(props.d2, props.displayNameProperty);
219
- this.loadOrgUnitLevels(props.d2);
220
- }
221
-
222
- componentDidUpdate(prevProps) {
223
- const previousId = prevProps.current ? prevProps.current.id : null;
224
- const currentId = this.props.current ? this.props.current.id : null; // remount org units selector component to ensure
225
- // only selected org units are expanded
226
-
227
- if (previousId !== currentId) {
228
- this.hideOrgUnitsTree();
229
- setTimeout(this.showOrgUnitsTree, 0);
230
- }
231
- }
232
-
233
- }
113
+ };
114
+
115
+ return /*#__PURE__*/_react.default.createElement("div", {
116
+ className: `jsx-${_OrgUnitDimension.default.__hash}` + " " + "container"
117
+ }, /*#__PURE__*/_react.default.createElement("div", {
118
+ className: `jsx-${_OrgUnitDimension.default.__hash}` + " " + "userOrgUnitsWrapper"
119
+ }, /*#__PURE__*/_react.default.createElement(_ui.Checkbox, {
120
+ label: _index.default.t('User organisation unit'),
121
+ checked: selected.some(item => item.id === _ouIdHelper.USER_ORG_UNIT),
122
+ onChange: ({
123
+ checked
124
+ }) => onSelectItems({
125
+ id: _ouIdHelper.USER_ORG_UNIT,
126
+ checked,
127
+ displayName: _index.default.t('User organisation unit')
128
+ }),
129
+ dense: true
130
+ }), /*#__PURE__*/_react.default.createElement(_ui.Checkbox, {
131
+ label: _index.default.t('User sub-units'),
132
+ checked: selected.some(item => item.id === _ouIdHelper.USER_ORG_UNIT_CHILDREN),
133
+ onChange: ({
134
+ checked
135
+ }) => onSelectItems({
136
+ id: _ouIdHelper.USER_ORG_UNIT_CHILDREN,
137
+ checked,
138
+ displayName: _index.default.t('User sub-units')
139
+ }),
140
+ dense: true
141
+ }), /*#__PURE__*/_react.default.createElement(_ui.Checkbox, {
142
+ label: _index.default.t('User sub-x2-units'),
143
+ checked: selected.some(item => item.id === _ouIdHelper.USER_ORG_UNIT_GRANDCHILDREN),
144
+ onChange: ({
145
+ checked
146
+ }) => onSelectItems({
147
+ id: _ouIdHelper.USER_ORG_UNIT_GRANDCHILDREN,
148
+ checked,
149
+ displayName: _index.default.t('User sub-x2-units')
150
+ }),
151
+ dense: true
152
+ })), /*#__PURE__*/_react.default.createElement("div", {
153
+ className: `jsx-${_OrgUnitDimension.default.__hash}` + " " + ((0, _classnames.default)('orgUnitTreeWrapper', {
154
+ disabled: selected.some(item => DYNAMIC_ORG_UNITS.includes(item.id))
155
+ }) || "")
156
+ }, /*#__PURE__*/_react.default.createElement(_ui.OrganisationUnitTree, {
157
+ roots: root,
158
+ initiallyExpanded: [root, ...selected.filter(item => !DYNAMIC_ORG_UNITS.includes(item.id) && !_ouIdHelper.ouIdHelper.hasLevelPrefix(item.id) && !_ouIdHelper.ouIdHelper.hasGroupPrefix(item.id)).map(item => item.path)],
159
+ selected: selected.filter(item => !DYNAMIC_ORG_UNITS.includes(item.id) && !_ouIdHelper.ouIdHelper.hasLevelPrefix(item.id) && !_ouIdHelper.ouIdHelper.hasGroupPrefix(item.id)).map(item => item.path),
160
+ onChange: onSelectItems,
161
+ dataTest: 'org-unit-tree'
162
+ })), /*#__PURE__*/_react.default.createElement("div", {
163
+ className: `jsx-${_OrgUnitDimension.default.__hash}` + " " + ((0, _classnames.default)('selectsWrapper', {
164
+ disabled: selected.some(item => DYNAMIC_ORG_UNITS.includes(item.id))
165
+ }) || "")
166
+ }, /*#__PURE__*/_react.default.createElement(_ui.MultiSelect, {
167
+ selected: ouLevels.length ? selected.filter(item => _ouIdHelper.ouIdHelper.hasLevelPrefix(item.id)).map(item => _ouIdHelper.ouIdHelper.removePrefix(item.id)) : [],
168
+ onChange: ({
169
+ selected
170
+ }) => onLevelChange(selected),
171
+ placeholder: _index.default.t('Select a level'),
172
+ loading: !ouLevels.length,
173
+ dense: true,
174
+ dataTest: 'org-unit-level-select'
175
+ }, ouLevels.map(level => /*#__PURE__*/_react.default.createElement(_ui.MultiSelectOption, {
176
+ key: level.id,
177
+ value: level.id,
178
+ label: level.displayName,
179
+ dataTest: `org-unit-level-select-option-${level.id}`
180
+ }))), /*#__PURE__*/_react.default.createElement(_ui.MultiSelect, {
181
+ selected: ouGroups.length ? selected.filter(item => _ouIdHelper.ouIdHelper.hasGroupPrefix(item.id)).map(item => _ouIdHelper.ouIdHelper.removePrefix(item.id)) : [],
182
+ onChange: ({
183
+ selected
184
+ }) => onGroupChange(selected),
185
+ placeholder: _index.default.t('Select a group'),
186
+ loading: !ouGroups.length,
187
+ dense: true,
188
+ dataTest: 'org-unit-group-select'
189
+ }, ouGroups.map(group => /*#__PURE__*/_react.default.createElement(_ui.MultiSelectOption, {
190
+ key: group.id,
191
+ value: group.id,
192
+ label: group.displayName,
193
+ dataTest: `org-unit-group-select-option-${group.id}`
194
+ })))), /*#__PURE__*/_react.default.createElement(_style.default, {
195
+ id: _OrgUnitDimension.default.__hash
196
+ }, _OrgUnitDimension.default));
197
+ };
234
198
 
235
199
  OrgUnitDimension.propTypes = {
236
- current: _propTypes.default.object,
237
- d2: _propTypes.default.object,
238
- displayNameProperty: _propTypes.default.string,
239
- ouItems: _propTypes.default.array,
240
- onDeselect: _propTypes.default.func,
200
+ root: _propTypes.default.string,
201
+ selected: _propTypes.default.arrayOf(_propTypes.default.shape({
202
+ id: _propTypes.default.string.isRequired,
203
+ name: _propTypes.default.string.isRequired,
204
+ path: _propTypes.default.string
205
+ })),
241
206
  onSelect: _propTypes.default.func
242
207
  };
243
208
  var _default = OrgUnitDimension;
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.defaultState = void 0;
7
+
8
+ var _style = _interopRequireDefault(require("styled-jsx/style"));
9
+
10
+ var _d2UiOrgUnitDialog = require("@dhis2/d2-ui-org-unit-dialog");
11
+
12
+ var _ui = require("@dhis2/ui");
13
+
14
+ var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
15
+
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _organisationUnits = require("../../api/organisationUnits");
21
+
22
+ var _ouIdHelper = require("../../modules/ouIdHelper");
23
+
24
+ var _predefinedDimensions = require("../../modules/predefinedDimensions");
25
+
26
+ var _OrgUnitDimension = _interopRequireDefault(require("./styles/OrgUnitDimension.style"));
27
+
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+
34
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
+
36
+ const defaultState = {
37
+ root: undefined,
38
+ roots: undefined,
39
+ // use "selected" property for cloning org units while user org unit(s) is (are) selected
40
+ selected: [],
41
+ ouLevels: [],
42
+ ouGroups: [],
43
+ showOrgUnitsTree: true
44
+ };
45
+ exports.defaultState = defaultState;
46
+
47
+ class OrgUnitDimension extends _react.Component {
48
+ constructor(props) {
49
+ super(props);
50
+
51
+ _defineProperty(this, "showOrgUnitsTree", () => {
52
+ this.setState({
53
+ showOrgUnitsTree: true
54
+ });
55
+ });
56
+
57
+ _defineProperty(this, "hideOrgUnitsTree", () => {
58
+ this.setState({
59
+ showOrgUnitsTree: false
60
+ });
61
+ });
62
+
63
+ _defineProperty(this, "getUserOrgUnitsFromIds", ids => {
64
+ return _d2UiOrgUnitDialog.userOrgUnits.filter(ou => ids.includes(ou.id));
65
+ });
66
+
67
+ _defineProperty(this, "onLevelChange", event => {
68
+ const levelIds = event.target.value.filter(id => !!id);
69
+ this.props.onSelect({
70
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
71
+ items: [...this.props.ouItems.filter(ou => !_ouIdHelper.ouIdHelper.hasLevelPrefix(ou.id)), ...levelIds.map(id => {
72
+ const levelOu = this.state.ouLevels.find(ou => ou.id === id);
73
+ return { ...levelOu,
74
+ id: _ouIdHelper.ouIdHelper.addLevelPrefix(levelOu.id)
75
+ };
76
+ })]
77
+ });
78
+ });
79
+
80
+ _defineProperty(this, "onGroupChange", event => {
81
+ const groupIds = event.target.value.filter(id => !!id);
82
+ this.props.onSelect({
83
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
84
+ items: [...this.props.ouItems.filter(ou => !_ouIdHelper.ouIdHelper.hasGroupPrefix(ou.id)), ...groupIds.map(id => {
85
+ const groupOu = this.state.ouGroups.find(ou => ou.id === id);
86
+ return { ...groupOu,
87
+ id: _ouIdHelper.ouIdHelper.addGroupPrefix(id)
88
+ };
89
+ })]
90
+ });
91
+ });
92
+
93
+ _defineProperty(this, "onDeselectAllClick", () => this.props.onDeselect({
94
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
95
+ itemIdsToRemove: this.props.ouItems.map(ou => ou.id)
96
+ }));
97
+
98
+ _defineProperty(this, "loadOrgUnitTree", (d2, displayNameProperty) => {
99
+ (0, _organisationUnits.apiFetchOrganisationUnits)(d2, displayNameProperty).then(rootLevel => rootLevel.toArray()).then(roots => {
100
+ this.setState({
101
+ roots,
102
+ root: roots[0]
103
+ });
104
+ });
105
+ });
106
+
107
+ _defineProperty(this, "loadOrgUnitGroups", (d2, displayNameProperty) => {
108
+ (0, _organisationUnits.apiFetchOrganisationUnitGroups)(d2, displayNameProperty).then(organisationUnitGroups => this.setState({
109
+ ouGroups: organisationUnitGroups
110
+ }));
111
+ });
112
+
113
+ _defineProperty(this, "loadOrgUnitLevels", d2 => {
114
+ (0, _organisationUnits.apiFetchOrganisationUnitLevels)(d2).then(organisationUnitLevels => this.setState({
115
+ ouLevels: (0, _sortBy.default)(organisationUnitLevels, ['level'])
116
+ }));
117
+ });
118
+
119
+ _defineProperty(this, "handleOrgUnitClick", (event, orgUnit) => {
120
+ const selected = this.props.ouItems;
121
+
122
+ if (selected.some(ou => ou.path === orgUnit.path)) {
123
+ this.props.onDeselect({
124
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
125
+ itemIdsToRemove: [orgUnit.id]
126
+ });
127
+ } else {
128
+ this.props.onSelect({
129
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
130
+ items: [...selected, { ...orgUnit,
131
+ name: orgUnit.name || orgUnit.displayName
132
+ }]
133
+ });
134
+ }
135
+ });
136
+
137
+ _defineProperty(this, "handleUserOrgUnitClick", (event, checked) => {
138
+ if (checked) {
139
+ if (!this.state.selected.length) {
140
+ this.setState({
141
+ selected: this.props.ouItems.slice()
142
+ });
143
+ }
144
+
145
+ this.props.onSelect({
146
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
147
+ items: [...this.props.ouItems.filter(ou => this.userOrgUnitIds.includes(ou.id)), _d2UiOrgUnitDialog.userOrgUnits.find(ou => ou.id === event.target.name)]
148
+ });
149
+ } else {
150
+ if (this.props.ouItems.length === 1 && this.state.selected.length > 0) {
151
+ this.props.onSelect({
152
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
153
+ items: this.state.selected
154
+ });
155
+ } else {
156
+ this.props.onDeselect({
157
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
158
+ itemIdsToRemove: [event.target.name]
159
+ });
160
+ }
161
+ }
162
+ });
163
+
164
+ _defineProperty(this, "handleMultipleOrgUnitsSelect", orgUnits => {
165
+ const selected = this.props.ouItems;
166
+ this.props.onSelect({
167
+ dimensionId: _predefinedDimensions.DIMENSION_ID_ORGUNIT,
168
+ items: [...selected, ...orgUnits.reduce((obj, ou) => {
169
+ // avoid duplicates when clicking "Select children" multiple times
170
+ if (!selected.find(i => i.id === ou.id)) {
171
+ obj.push({ ...ou,
172
+ name: ou.name || ou.displayName
173
+ });
174
+ }
175
+
176
+ return obj;
177
+ }, [])]
178
+ });
179
+ });
180
+
181
+ _defineProperty(this, "render", () => {
182
+ const ids = this.props.ouItems.map(ou => ou.id);
183
+ const selected = this.props.ouItems.filter(ou => !this.userOrgUnitIds.includes(ou.id) && !_ouIdHelper.ouIdHelper.hasLevelPrefix(ou.id) && !_ouIdHelper.ouIdHelper.hasGroupPrefix(ou.id));
184
+ const userOrgUnits = this.getUserOrgUnitsFromIds(ids);
185
+ const level = ids.filter(_ouIdHelper.ouIdHelper.hasLevelPrefix).map(_ouIdHelper.ouIdHelper.removePrefix);
186
+ const group = ids.filter(_ouIdHelper.ouIdHelper.hasGroupPrefix).map(_ouIdHelper.ouIdHelper.removePrefix);
187
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, this.state.root && this.state.showOrgUnitsTree && /*#__PURE__*/_react.default.createElement(_d2UiOrgUnitDialog.OrgUnitSelector, {
188
+ d2: this.props.d2,
189
+ root: this.state.root,
190
+ roots: this.state.roots,
191
+ selected: selected,
192
+ userOrgUnits: userOrgUnits,
193
+ level: level,
194
+ group: group,
195
+ levelOptions: this.state.ouLevels,
196
+ groupOptions: this.state.ouGroups,
197
+ onLevelChange: this.onLevelChange,
198
+ onGroupChange: this.onGroupChange,
199
+ onDeselectAllClick: this.onDeselectAllClick,
200
+ handleUserOrgUnitClick: this.handleUserOrgUnitClick,
201
+ handleOrgUnitClick: this.handleOrgUnitClick,
202
+ handleMultipleOrgUnitsSelect: this.handleMultipleOrgUnitsSelect,
203
+ checkboxColor: "secondary",
204
+ deselectAllTooltipFontColor: _ui.colors.grey900,
205
+ deselectAllTooltipBackgroundColor: _ui.colors.grey300,
206
+ displayNameProperty: this.props.displayNameProperty,
207
+ isUserDataViewFallback: true
208
+ }), !this.state.root && /*#__PURE__*/_react.default.createElement("div", {
209
+ className: `jsx-${_OrgUnitDimension.default.__hash}` + " " + "loader"
210
+ }, /*#__PURE__*/_react.default.createElement(_ui.CircularLoader, null)), /*#__PURE__*/_react.default.createElement(_style.default, {
211
+ id: _OrgUnitDimension.default.__hash
212
+ }, _OrgUnitDimension.default));
213
+ });
214
+
215
+ this.state = defaultState;
216
+ this.userOrgUnitIds = _d2UiOrgUnitDialog.userOrgUnits.map(ou => ou.id);
217
+ this.loadOrgUnitTree(props.d2, props.displayNameProperty);
218
+ this.loadOrgUnitGroups(props.d2, props.displayNameProperty);
219
+ this.loadOrgUnitLevels(props.d2);
220
+ }
221
+
222
+ componentDidUpdate(prevProps) {
223
+ const previousId = prevProps.current ? prevProps.current.id : null;
224
+ const currentId = this.props.current ? this.props.current.id : null; // remount org units selector component to ensure
225
+ // only selected org units are expanded
226
+
227
+ if (previousId !== currentId) {
228
+ this.hideOrgUnitsTree();
229
+ setTimeout(this.showOrgUnitsTree, 0);
230
+ }
231
+ }
232
+
233
+ }
234
+
235
+ OrgUnitDimension.propTypes = {
236
+ current: _propTypes.default.object,
237
+ d2: _propTypes.default.object,
238
+ displayNameProperty: _propTypes.default.string,
239
+ ouItems: _propTypes.default.array,
240
+ onDeselect: _propTypes.default.func,
241
+ onSelect: _propTypes.default.func
242
+ };
243
+ var _default = OrgUnitDimension;
244
+ exports.default = _default;