@dhis2-ui/transfer 9.10.3 → 9.11.1-beta.1

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/build/cjs/__e2e__/{add_remove-highlighted-options.stories.e2e.js → add_remove-highlighted-options.e2e.stories.js} +2 -13
  2. package/build/cjs/__e2e__/common/options.js +2 -3
  3. package/build/cjs/__e2e__/common/stateful-decorator.js +3 -8
  4. package/build/cjs/__e2e__/{disabled-transfer-buttons.stories.e2e.js → disabled-transfer-buttons.e2e.stories.js} +4 -20
  5. package/build/cjs/__e2e__/{disabled-transfer-options.stories.e2e.js → disabled-transfer-options.e2e.stories.js} +4 -12
  6. package/build/cjs/__e2e__/{display-order.stories.e2e.js → display-order.e2e.stories.js} +2 -13
  7. package/build/cjs/__e2e__/{filter-options-list.stories.e2e.js → filter-options-list.e2e.stories.js} +3 -24
  8. package/build/cjs/__e2e__/{highlight-range-of-options.stories.e2e.js → highlight-range-of-options.e2e.stories.js} +2 -15
  9. package/build/cjs/__e2e__/{loading_lists.stories.e2e.js → loading_lists.e2e.stories.js} +2 -16
  10. package/build/cjs/__e2e__/{notify_at_end_of_list.stories.e2e.js → notify_at_end_of_list.e2e.stories.js} +2 -17
  11. package/build/cjs/__e2e__/{reorder-with-buttons.stories.e2e.js → reorder-with-buttons.e2e.stories.js} +2 -11
  12. package/build/cjs/__e2e__/{set_unset-highlighted-option.stories.e2e.js → set_unset-highlighted-option.e2e.stories.js} +2 -13
  13. package/build/cjs/__e2e__/{transferring-items.stories.e2e.js → transferring-items.e2e.stories.js} +2 -13
  14. package/build/cjs/__tests__/common.test.js +0 -1
  15. package/build/cjs/__tests__/helper/add-all-selectable-source-options.test.js +0 -1
  16. package/build/cjs/__tests__/helper/add-individual-source-options.test.js +0 -1
  17. package/build/cjs/__tests__/helper/default-filter-callback.test.js +0 -1
  18. package/build/cjs/__tests__/helper/is-reorder-down-disabled.test.js +0 -1
  19. package/build/cjs/__tests__/helper/is-reorder-up-disabled.test.js +0 -1
  20. package/build/cjs/__tests__/helper/move-highlighted-picked-option-down.test.js +0 -1
  21. package/build/cjs/__tests__/helper/move-highlighted-picked-option-up.test.js +0 -1
  22. package/build/cjs/__tests__/helper/remove-all-picked-options.test.js +0 -1
  23. package/build/cjs/__tests__/helper/remove-individual-picked-options.test.js +0 -1
  24. package/build/cjs/__tests__/helper/use-highlighted-option/create-toggle-highlighted-option.test.js +2 -9
  25. package/build/cjs/__tests__/helper/use-highlighted-option/toggle-add.test.js +0 -1
  26. package/build/cjs/__tests__/helper/use-highlighted-option/toggle-range.test.js +2 -3
  27. package/build/cjs/__tests__/helper/use-highlighted-option/toggle-replace.test.js +0 -1
  28. package/build/cjs/__tests__/helper/use-highlighted-option.test.js +1 -5
  29. package/build/cjs/__tests__/transfer.test.js +1 -5
  30. package/build/cjs/actions.js +2 -9
  31. package/build/cjs/add-all.js +2 -9
  32. package/build/cjs/add-individual.js +2 -9
  33. package/build/cjs/common/find-option-index.js +0 -3
  34. package/build/cjs/common/get-mode-by-modifier-key.js +2 -8
  35. package/build/cjs/common/index.js +0 -6
  36. package/build/cjs/common/is-option.js +0 -2
  37. package/build/cjs/common/modes.js +6 -9
  38. package/build/cjs/common/remove-option.js +0 -6
  39. package/build/cjs/common/styles.js +3 -8
  40. package/build/cjs/common/toggle-value.js +0 -4
  41. package/build/cjs/container.js +2 -8
  42. package/build/cjs/end-intersection-detector.js +1 -8
  43. package/build/cjs/features/add_remove-highlighted-options/index.js +0 -1
  44. package/build/cjs/features/common/index.js +0 -2
  45. package/build/cjs/features/disabled-transfer-buttons/index.js +0 -1
  46. package/build/cjs/features/disabled-transfer-options/index.js +0 -2
  47. package/build/cjs/features/display-order/index.js +6 -5
  48. package/build/cjs/features/filter-options-list/index.js +6 -8
  49. package/build/cjs/features/highlight-range-of-options/index.js +8 -5
  50. package/build/cjs/features/loading_lists/index.js +2 -3
  51. package/build/cjs/features/notify_at_end_of_list/index.js +1 -2
  52. package/build/cjs/features/reorder-with-buttons/index.js +3 -3
  53. package/build/cjs/features/set_unset-highlighted-option/index.js +0 -2
  54. package/build/cjs/features/transferring-items/index.js +6 -6
  55. package/build/cjs/filter.js +5 -14
  56. package/build/cjs/icons.js +17 -35
  57. package/build/cjs/index.js +0 -2
  58. package/build/cjs/left-footer.js +2 -10
  59. package/build/cjs/left-header.js +2 -10
  60. package/build/cjs/left-side.js +2 -9
  61. package/build/cjs/options-container.js +9 -20
  62. package/build/cjs/picked-options.js +2 -10
  63. package/build/cjs/remove-all.js +2 -9
  64. package/build/cjs/remove-individual.js +2 -9
  65. package/build/cjs/reordering-actions.js +7 -16
  66. package/build/cjs/right-footer.js +2 -10
  67. package/build/cjs/right-header.js +2 -10
  68. package/build/cjs/right-side.js +2 -9
  69. package/build/cjs/source-options.js +2 -10
  70. package/build/cjs/transfer/add-all-selectable-source-options.js +3 -4
  71. package/build/cjs/transfer/add-individual-source-options.js +1 -4
  72. package/build/cjs/transfer/create-double-click-handlers.js +0 -5
  73. package/build/cjs/transfer/default-filter-callback.js +0 -2
  74. package/build/cjs/transfer/get-option-click-handlers.js +0 -3
  75. package/build/cjs/transfer/index.js +0 -26
  76. package/build/cjs/transfer/is-reorder-down-disabled.js +4 -4
  77. package/build/cjs/transfer/is-reorder-up-disabled.js +4 -4
  78. package/build/cjs/transfer/move-highlighted-picked-option-down.js +4 -5
  79. package/build/cjs/transfer/move-highlighted-picked-option-up.js +4 -5
  80. package/build/cjs/transfer/remove-all-picked-options.js +0 -2
  81. package/build/cjs/transfer/remove-individual-picked-options.js +1 -4
  82. package/build/cjs/transfer/use-filter.js +0 -4
  83. package/build/cjs/transfer/use-highlighted-options/create-toggle-highlighted-option.js +2 -12
  84. package/build/cjs/transfer/use-highlighted-options/toggle-add.js +0 -3
  85. package/build/cjs/transfer/use-highlighted-options/toggle-range.js +3 -8
  86. package/build/cjs/transfer/use-highlighted-options/toggle-replace.js +0 -4
  87. package/build/cjs/transfer/use-highlighted-options.js +0 -5
  88. package/build/cjs/transfer-option.js +4 -16
  89. package/build/cjs/transfer.js +29 -54
  90. package/build/cjs/{transfer.stories.js → transfer.prod.stories.js} +83 -103
  91. package/build/cjs/use-resize-counter.js +0 -4
  92. package/build/es/__e2e__/common/stateful-decorator.js +1 -2
  93. package/build/es/__e2e__/{disabled-transfer-buttons.stories.e2e.js → disabled-transfer-buttons.e2e.stories.js} +2 -1
  94. package/build/es/__e2e__/{disabled-transfer-options.stories.e2e.js → disabled-transfer-options.e2e.stories.js} +2 -1
  95. package/build/es/__e2e__/{filter-options-list.stories.e2e.js → filter-options-list.e2e.stories.js} +1 -3
  96. package/build/es/__tests__/helper/use-highlighted-option/create-toggle-highlighted-option.test.js +2 -1
  97. package/build/es/__tests__/helper/use-highlighted-option/toggle-range.test.js +2 -2
  98. package/build/es/__tests__/helper/use-highlighted-option.test.js +1 -1
  99. package/build/es/actions.js +1 -1
  100. package/build/es/add-all.js +1 -1
  101. package/build/es/add-individual.js +1 -1
  102. package/build/es/common/find-option-index.js +1 -1
  103. package/build/es/common/get-mode-by-modifier-key.js +3 -6
  104. package/build/es/common/modes.js +5 -4
  105. package/build/es/common/remove-option.js +1 -4
  106. package/build/es/common/toggle-value.js +0 -2
  107. package/build/es/container.js +1 -1
  108. package/build/es/features/display-order/index.js +6 -3
  109. package/build/es/features/filter-options-list/index.js +6 -6
  110. package/build/es/features/highlight-range-of-options/index.js +8 -3
  111. package/build/es/features/loading_lists/index.js +2 -2
  112. package/build/es/features/notify_at_end_of_list/index.js +1 -1
  113. package/build/es/features/reorder-with-buttons/index.js +3 -2
  114. package/build/es/features/transferring-items/index.js +6 -3
  115. package/build/es/filter.js +4 -4
  116. package/build/es/icons.js +16 -16
  117. package/build/es/left-footer.js +1 -1
  118. package/build/es/left-header.js +1 -1
  119. package/build/es/left-side.js +1 -1
  120. package/build/es/options-container.js +6 -5
  121. package/build/es/picked-options.js +1 -1
  122. package/build/es/remove-all.js +1 -1
  123. package/build/es/remove-individual.js +1 -1
  124. package/build/es/reordering-actions.js +6 -6
  125. package/build/es/right-footer.js +1 -1
  126. package/build/es/right-header.js +1 -1
  127. package/build/es/right-side.js +1 -1
  128. package/build/es/source-options.js +1 -1
  129. package/build/es/transfer/add-all-selectable-source-options.js +3 -2
  130. package/build/es/transfer/add-individual-source-options.js +1 -2
  131. package/build/es/transfer/create-double-click-handlers.js +0 -3
  132. package/build/es/transfer/get-option-click-handlers.js +1 -1
  133. package/build/es/transfer/is-reorder-down-disabled.js +4 -2
  134. package/build/es/transfer/is-reorder-up-disabled.js +4 -2
  135. package/build/es/transfer/move-highlighted-picked-option-down.js +4 -3
  136. package/build/es/transfer/move-highlighted-picked-option-up.js +4 -3
  137. package/build/es/transfer/remove-individual-picked-options.js +1 -2
  138. package/build/es/transfer/use-filter.js +0 -2
  139. package/build/es/transfer/use-highlighted-options/create-toggle-highlighted-option.js +3 -7
  140. package/build/es/transfer/use-highlighted-options/toggle-add.js +1 -1
  141. package/build/es/transfer/use-highlighted-options/toggle-range.js +4 -6
  142. package/build/es/transfer/use-highlighted-options/toggle-replace.js +0 -2
  143. package/build/es/transfer/use-highlighted-options.js +1 -2
  144. package/build/es/transfer-option.js +1 -2
  145. package/build/es/transfer.js +28 -32
  146. package/build/es/{transfer.stories.js → transfer.prod.stories.js} +65 -50
  147. package/build/es/use-resize-counter.js +1 -2
  148. package/package.json +10 -10
  149. /package/build/es/__e2e__/{add_remove-highlighted-options.stories.e2e.js → add_remove-highlighted-options.e2e.stories.js} +0 -0
  150. /package/build/es/__e2e__/{display-order.stories.e2e.js → display-order.e2e.stories.js} +0 -0
  151. /package/build/es/__e2e__/{highlight-range-of-options.stories.e2e.js → highlight-range-of-options.e2e.stories.js} +0 -0
  152. /package/build/es/__e2e__/{loading_lists.stories.e2e.js → loading_lists.e2e.stories.js} +0 -0
  153. /package/build/es/__e2e__/{notify_at_end_of_list.stories.e2e.js → notify_at_end_of_list.e2e.stories.js} +0 -0
  154. /package/build/es/__e2e__/{reorder-with-buttons.stories.e2e.js → reorder-with-buttons.e2e.stories.js} +0 -0
  155. /package/build/es/__e2e__/{set_unset-highlighted-option.stories.e2e.js → set_unset-highlighted-option.e2e.stories.js} +0 -0
  156. /package/build/es/__e2e__/{transferring-items.stories.e2e.js → transferring-items.e2e.stories.js} +0 -0
@@ -1,5 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
-
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
2
  import { SingleSelectField, SingleSelectOption } from '@dhis2-ui/select';
4
3
  import { Tab, TabBar } from '@dhis2-ui/tab';
5
4
  import PropTypes from 'prop-types';
@@ -7,7 +6,37 @@ import React, { useEffect, useState } from 'react';
7
6
  import { TransferOption } from './transfer-option.js';
8
7
  import { Transfer } from './transfer.js';
9
8
  const subtitle = 'Allows users to select options from a list';
10
- const description = "\n#### Usage\n\nUse a transfer component wherever a user needs to make a complex selection. Simple selections can be achieved with checkboxes, radio buttons or a select.\n\nThere are use-cases that are particularly suitable for a transfer component:\n\n- when a user needs to select some options from several different groups at the same time\n- if the selection needs to have a defined order\n- when the user will be interacting with and editing the selection often\n- if a user needs to easily compare non-selected and selected options\n- if a user is making selections as part of a complex flow, especially where there are many options to choose from\n\n#### Terminology\n\nThis component has to differentiate between different types of options,\nhere's an explanation of their meaning:\n\n- source options: These are options listed on the left and are available for selection\n- picked options: These options have been selected by the user and are on the right side\n- highlighted option: These are visually highlighted options than can be on either side and are ready for transferral with the action buttons to the other side\n- filtered options: These are the displayed source options filtered by a search term or a custom search algorithm. The api surface uses \"selected\" for \"picked\" to be consistent with the rest of the library\n\n#### More details\n\nSee more about the options available for Transfers at [Design System: Transfer](https://github.com/dhis2/design-system/blob/master/organisms/transfer.md#transfer).\n\n```js\nimport { Transfer, TransferOption } from '@dhis2/ui'\n```\n";
9
+ const description = `
10
+ #### Usage
11
+
12
+ Use a transfer component wherever a user needs to make a complex selection. Simple selections can be achieved with checkboxes, radio buttons or a select.
13
+
14
+ There are use-cases that are particularly suitable for a transfer component:
15
+
16
+ - when a user needs to select some options from several different groups at the same time
17
+ - if the selection needs to have a defined order
18
+ - when the user will be interacting with and editing the selection often
19
+ - if a user needs to easily compare non-selected and selected options
20
+ - if a user is making selections as part of a complex flow, especially where there are many options to choose from
21
+
22
+ #### Terminology
23
+
24
+ This component has to differentiate between different types of options,
25
+ here's an explanation of their meaning:
26
+
27
+ - source options: These are options listed on the left and are available for selection
28
+ - picked options: These options have been selected by the user and are on the right side
29
+ - highlighted option: These are visually highlighted options than can be on either side and are ready for transferral with the action buttons to the other side
30
+ - filtered options: These are the displayed source options filtered by a search term or a custom search algorithm. The api surface uses "selected" for "picked" to be consistent with the rest of the library
31
+
32
+ #### More details
33
+
34
+ See more about the options available for Transfers at [Design System: Transfer](https://github.com/dhis2/design-system/blob/master/organisms/transfer.md#transfer).
35
+
36
+ \`\`\`js
37
+ import { Transfer, TransferOption } from '@dhis2/ui'
38
+ \`\`\`
39
+ `;
11
40
  const options = [{
12
41
  label: 'ANC 1st visit',
13
42
  value: 'anc_1st_visit'
@@ -75,6 +104,7 @@ const options = [{
75
104
  label: 'ART entry point: No PMTCT',
76
105
  value: 'art_entry_point:_no_pmtct'
77
106
  }];
107
+
78
108
  /**
79
109
  * Default args are needed because storybook currently struggles with
80
110
  * functions as default props: they are sent to the component as strings when
@@ -83,7 +113,6 @@ const options = [{
83
113
  *
84
114
  * https://github.com/storybookjs/storybook/issues/12455#issuecomment-702763930
85
115
  */
86
-
87
116
  export default {
88
117
  title: 'Transfer',
89
118
  component: Transfer,
@@ -99,26 +128,23 @@ export default {
99
128
  }
100
129
  },
101
130
  // Default args:
102
- args: { ...Transfer.defaultProps,
131
+ args: {
132
+ ...Transfer.defaultProps,
103
133
  options: options
104
134
  }
105
135
  };
106
-
107
136
  const StatefulTemplate = _ref => {
108
137
  let {
109
138
  initiallySelected,
110
139
  ...args
111
140
  } = _ref;
112
141
  const [selected, setSelected] = useState(initiallySelected);
113
-
114
142
  const onChange = payload => setSelected(payload.selected);
115
-
116
143
  return /*#__PURE__*/React.createElement(Transfer, _extends({}, args, {
117
144
  selected: selected,
118
145
  onChange: onChange
119
146
  }));
120
147
  };
121
-
122
148
  StatefulTemplate.defaultProps = {
123
149
  initiallySelected: []
124
150
  };
@@ -171,7 +197,6 @@ FilteredPlaceholder.args = {
171
197
  filterLabel: 'Filter with placeholder',
172
198
  filterPlaceholder: 'Search'
173
199
  };
174
-
175
200
  const renderOption = _ref3 => {
176
201
  let {
177
202
  label,
@@ -191,24 +216,29 @@ const renderOption = _ref3 => {
191
216
  }
192
217
  }, "Custom: ", label, " (label), ", value, " (value)");
193
218
  };
194
-
195
- const RenderOptionCode = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("strong", null, "Custom option code:"), /*#__PURE__*/React.createElement("code", null, /*#__PURE__*/React.createElement("pre", null, "const renderOption = ({ label, value, onClick, highlighted, selected }) => (\n <p\n onClick={event => onClick({ label, value }, event)}\n style={{\n background: highlighted ? 'green' : 'blue',\n color: selected ? 'orange' : 'white',\n }}\n >\n Custom: {label} (label), {value} (value)\n </p>\n )")));
196
-
219
+ const RenderOptionCode = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("strong", null, "Custom option code:"), /*#__PURE__*/React.createElement("code", null, /*#__PURE__*/React.createElement("pre", null, `const renderOption = ({ label, value, onClick, highlighted, selected }) => (
220
+ <p
221
+ onClick={event => onClick({ label, value }, event)}
222
+ style={{
223
+ background: highlighted ? 'green' : 'blue',
224
+ color: selected ? 'orange' : 'white',
225
+ }}
226
+ >
227
+ Custom: {label} (label), {value} (value)
228
+ </p>
229
+ )`)));
197
230
  const StatefulTemplateCustomRenderOption = _ref4 => {
198
231
  let {
199
232
  initiallySelected,
200
233
  ...args
201
234
  } = _ref4;
202
235
  const [selected, setSelected] = useState(initiallySelected);
203
-
204
236
  const onChange = payload => setSelected(payload.selected);
205
-
206
237
  return /*#__PURE__*/React.createElement(Transfer, _extends({}, args, {
207
238
  selected: selected,
208
239
  onChange: onChange
209
240
  }));
210
241
  };
211
-
212
242
  StatefulTemplateCustomRenderOption.defaultProps = {
213
243
  initiallySelected: []
214
244
  };
@@ -236,7 +266,6 @@ IndividualCustomOption.args = {
236
266
  if (option.value === options[0].value) {
237
267
  return renderOption(option);
238
268
  }
239
-
240
269
  return /*#__PURE__*/React.createElement(TransferOption, option);
241
270
  }
242
271
  };
@@ -291,18 +320,18 @@ DifferentWidths.args = {
291
320
  optionsWidth: '500px',
292
321
  selectedWidth: '240px'
293
322
  };
294
-
295
323
  const createCustomFilteringInHeader = hideFilterInput => {
296
- const relativePeriods = options.slice(0, 10).map((option, index) => ({ ...option,
324
+ const relativePeriods = options.slice(0, 10).map((option, index) => ({
325
+ ...option,
297
326
  relativePeriod: true,
298
327
  year: index < 5 ? '2020' : '2019'
299
328
  }));
300
- const fixedPeriods = options.slice(10, 20).map((option, index) => ({ ...option,
329
+ const fixedPeriods = options.slice(10, 20).map((option, index) => ({
330
+ ...option,
301
331
  relativePeriod: false,
302
332
  year: index < 5 ? '2020' : '2019'
303
333
  }));
304
334
  const allOptions = [...relativePeriods, ...fixedPeriods];
305
-
306
335
  const Header = _ref7 => {
307
336
  let {
308
337
  onClick,
@@ -339,20 +368,16 @@ const createCustomFilteringInHeader = hideFilterInput => {
339
368
  };
340
369
  /* eslint-enable react/prop-types */
341
370
 
342
-
343
371
  const CustomTransfer = props => {
344
372
  const [filter, setFilter] = useState('');
345
373
  const [relativePeriod, setRelativePeriod] = useState(true);
346
374
  const [year, setYear] = useState('2020');
347
-
348
375
  const filterCallback = (options, filter) => {
349
376
  const optionsWithYear = options.filter(option => option.year === year);
350
377
  const optionsWithPeriod = optionsWithYear.filter(option => option.relativePeriod === relativePeriod);
351
-
352
378
  if (filter === '') {
353
379
  return optionsWithPeriod;
354
380
  }
355
-
356
381
  return optionsWithPeriod.filter(_ref8 => {
357
382
  let {
358
383
  label
@@ -360,7 +385,6 @@ const createCustomFilteringInHeader = hideFilterInput => {
360
385
  return label.indexOf(filter) !== -1;
361
386
  });
362
387
  };
363
-
364
388
  const header = /*#__PURE__*/React.createElement(Header, {
365
389
  relativePeriod: relativePeriod,
366
390
  selectedYear: year,
@@ -396,67 +420,62 @@ const createCustomFilteringInHeader = hideFilterInput => {
396
420
  filterPlaceholder: "Search"
397
421
  }));
398
422
  };
399
-
400
423
  return _ref12 => {
401
424
  let {
402
425
  initiallySelected,
403
426
  ...args
404
427
  } = _ref12;
405
428
  const [selected, setSelected] = useState(initiallySelected);
406
-
407
429
  const onChange = payload => setSelected(payload.selected);
408
-
409
430
  return /*#__PURE__*/React.createElement(CustomTransfer, _extends({}, args, {
410
431
  selected: selected,
411
432
  onChange: onChange
412
433
  }));
413
434
  };
414
435
  };
415
-
416
436
  export const CustomFilteringWithFilterInput = createCustomFilteringInHeader(false);
417
437
  export const CustomFilteringWithoutFilterInput = createCustomFilteringInHeader(true);
418
438
  const optionsPool = options;
419
439
  const pageSize = 5;
440
+
420
441
  /*
421
442
  * The page size is: 5
422
443
  * To keep the code as small as possible, handling selecting items is not
423
444
  included
424
445
  */
425
-
426
446
  export const InfiniteLoading = args => {
427
447
  useEffect(() => {
428
448
  console.clear();
429
- }, []); // state for whether the next page's options are being loaded
430
-
431
- const [loading, setLoading] = useState(false); // captures the current page
432
-
433
- const [page, setPage] = useState(0); // all options (incl. available AND selected options)
434
-
435
- const [options, setOptions] = useState([]); // selected options
436
-
437
- const [selected] = useState( // second page is already selected
449
+ }, []);
450
+
451
+ // state for whether the next page's options are being loaded
452
+ const [loading, setLoading] = useState(false);
453
+ // captures the current page
454
+ const [page, setPage] = useState(0);
455
+ // all options (incl. available AND selected options)
456
+ const [options, setOptions] = useState([]);
457
+ // selected options
458
+ const [selected] = useState(
459
+ // second page is already selected
438
460
  optionsPool.slice(pageSize, pageSize * 2).map(_ref13 => {
439
461
  let {
440
462
  value
441
463
  } = _ref13;
442
464
  return value;
443
465
  }));
444
-
445
466
  const onEndReached = () => {
446
467
  // do nothing when loading already
447
468
  if (loading) {
448
469
  return;
449
470
  }
450
-
451
471
  setPage(page + 1);
452
- }; // fake fetch request
453
-
472
+ };
454
473
 
474
+ // fake fetch request
455
475
  const fetchOptions = nextPage => new Promise(resolve => setTimeout(() => {
456
476
  const nextOptions = optionsPool.slice(options.length, nextPage * pageSize);
457
477
  resolve(nextOptions);
458
478
  }, 2000));
459
-
460
479
  const loadNextOptions = async () => {
461
480
  setLoading(true);
462
481
  const nextOptions = await fetchOptions(page);
@@ -468,12 +487,10 @@ export const InfiniteLoading = args => {
468
487
  } = nextOption;
469
488
  return selected.includes(value);
470
489
  });
471
-
472
490
  if (allAlreadySelected) {
473
491
  onEndReached();
474
492
  }
475
493
  };
476
-
477
494
  useEffect(() => {
478
495
  // prevent initial call
479
496
  if (page > 0) {
@@ -484,9 +501,7 @@ export const InfiniteLoading = args => {
484
501
  loading: loading,
485
502
  options: options,
486
503
  selected: selected,
487
- onChange: () => null
488
- /* noop */
489
- ,
504
+ onChange: () => null /* noop */,
490
505
  onEndReached: onEndReached
491
506
  }));
492
507
  };
@@ -1,4 +1,5 @@
1
1
  import { useEffect, useState } from 'react';
2
+
2
3
  /*
3
4
  * The initial call is irrelevant as there has been
4
5
  * no resize yet that we want to react to
@@ -7,7 +8,6 @@ import { useEffect, useState } from 'react';
7
8
  * @param {Element} element
8
9
  * @returns {number}
9
10
  */
10
-
11
11
  export const useResizeCounter = element => {
12
12
  const [counter, setCounter] = useState(-1);
13
13
  useEffect(() => {
@@ -17,7 +17,6 @@ export const useResizeCounter = element => {
17
17
  // it's executed as the callback passed to `ResizeObserver`
18
18
  // will be executed on construction
19
19
  let internalCounter = counter;
20
-
21
20
  if (element) {
22
21
  const observer = new ResizeObserver(() => {
23
22
  ++internalCounter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhis2-ui/transfer",
3
- "version": "9.10.3",
3
+ "version": "9.11.1-beta.1",
4
4
  "description": "UI Transfer",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,23 +22,23 @@
22
22
  "access": "public"
23
23
  },
24
24
  "scripts": {
25
- "start": "start-storybook -c ../../storybook/config --port 5000",
25
+ "start": "storybook dev -c ../../storybook/config --port 5000",
26
26
  "build": "d2-app-scripts build",
27
27
  "test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js"
28
28
  },
29
29
  "peerDependencies": {
30
- "react": "^16.8",
31
- "react-dom": "^16.8",
30
+ "react": "^16.13",
31
+ "react-dom": "^16.13",
32
32
  "styled-jsx": "^4"
33
33
  },
34
34
  "dependencies": {
35
35
  "@dhis2/prop-types": "^3.1.2",
36
- "@dhis2-ui/button": "9.10.3",
37
- "@dhis2-ui/field": "9.10.3",
38
- "@dhis2-ui/input": "9.10.3",
39
- "@dhis2-ui/intersection-detector": "9.10.3",
40
- "@dhis2-ui/loader": "9.10.3",
41
- "@dhis2/ui-constants": "9.10.3",
36
+ "@dhis2-ui/button": "9.11.1-beta.1",
37
+ "@dhis2-ui/field": "9.11.1-beta.1",
38
+ "@dhis2-ui/input": "9.11.1-beta.1",
39
+ "@dhis2-ui/intersection-detector": "9.11.1-beta.1",
40
+ "@dhis2-ui/loader": "9.11.1-beta.1",
41
+ "@dhis2/ui-constants": "9.11.1-beta.1",
42
42
  "classnames": "^2.3.1",
43
43
  "prop-types": "^15.7.2"
44
44
  },