@dhis2-ui/transfer 8.2.0 → 8.2.3
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.
- package/build/cjs/__e2e__/add_remove-highlighted-options.stories.e2e.js +30 -21
- package/build/cjs/__e2e__/common/stateful-decorator.js +26 -19
- package/build/cjs/__e2e__/disabled-transfer-buttons.stories.e2e.js +70 -49
- package/build/cjs/__e2e__/disabled-transfer-options.stories.e2e.js +14 -11
- package/build/cjs/__e2e__/display-order.stories.e2e.js +29 -20
- package/build/cjs/__e2e__/filter-options-list.stories.e2e.js +97 -73
- package/build/cjs/__e2e__/highlight-range-of-options.stories.e2e.js +49 -34
- package/build/cjs/__e2e__/loading_lists.stories.e2e.js +1 -1
- package/build/cjs/__e2e__/notify_at_end_of_list.stories.e2e.js +61 -43
- package/build/cjs/__e2e__/reorder-with-buttons.stories.e2e.js +19 -13
- package/build/cjs/__e2e__/set_unset-highlighted-option.stories.e2e.js +30 -21
- package/build/cjs/__e2e__/transferring-items.stories.e2e.js +29 -20
- package/build/cjs/__tests__/helper/use-highlighted-option/toggle-add.test.js +6 -3
- package/build/cjs/__tests__/helper/use-highlighted-option/toggle-range.test.js +48 -24
- package/build/cjs/__tests__/transfer.test.js +18 -10
- package/build/cjs/actions.js +13 -10
- package/build/cjs/add-all.js +17 -14
- package/build/cjs/add-individual.js +16 -13
- package/build/cjs/common/get-mode-by-modifier-key.js +7 -6
- package/build/cjs/common/modes.js +1 -1
- package/build/cjs/container.js +15 -12
- package/build/cjs/end-intersection-detector.js +21 -15
- package/build/cjs/features/disabled-transfer-options/index.js +4 -2
- package/build/cjs/features/display-order/index.js +47 -26
- package/build/cjs/features/filter-options-list/index.js +6 -3
- package/build/cjs/features/highlight-range-of-options/index.js +10 -5
- package/build/cjs/features/loading_lists/index.js +2 -2
- package/build/cjs/features/notify_at_end_of_list/index.js +5 -3
- package/build/cjs/features/set_unset-highlighted-option/index.js +6 -3
- package/build/cjs/features/transferring-items/index.js +77 -42
- package/build/cjs/filter.js +26 -23
- package/build/cjs/icons.js +134 -116
- package/build/cjs/left-footer.js +13 -10
- package/build/cjs/left-header.js +13 -10
- package/build/cjs/left-side.js +19 -16
- package/build/cjs/options-container.js +17 -16
- package/build/cjs/picked-options.js +22 -19
- package/build/cjs/remove-all.js +16 -13
- package/build/cjs/remove-individual.js +16 -13
- package/build/cjs/reordering-actions.js +34 -31
- package/build/cjs/right-footer.js +13 -10
- package/build/cjs/right-header.js +13 -10
- package/build/cjs/right-side.js +19 -16
- package/build/cjs/source-options.js +22 -19
- package/build/cjs/transfer/add-all-selectable-source-options.js +13 -9
- package/build/cjs/transfer/add-individual-source-options.js +11 -9
- package/build/cjs/transfer/create-double-click-handlers.js +17 -13
- package/build/cjs/transfer/default-filter-callback.js +6 -3
- package/build/cjs/transfer/is-reorder-down-disabled.js +10 -6
- package/build/cjs/transfer/is-reorder-up-disabled.js +10 -6
- package/build/cjs/transfer/move-highlighted-picked-option-down.js +6 -5
- package/build/cjs/transfer/move-highlighted-picked-option-up.js +6 -5
- package/build/cjs/transfer/remove-all-picked-options.js +5 -4
- package/build/cjs/transfer/remove-individual-picked-options.js +10 -8
- package/build/cjs/transfer/use-filter.js +8 -7
- package/build/cjs/transfer/use-highlighted-options/create-toggle-highlighted-option.js +45 -40
- package/build/cjs/transfer/use-highlighted-options/toggle-add.js +7 -6
- package/build/cjs/transfer/use-highlighted-options/toggle-range.js +16 -11
- package/build/cjs/transfer/use-highlighted-options/toggle-replace.js +7 -5
- package/build/cjs/transfer/use-highlighted-options.js +7 -5
- package/build/cjs/transfer-option.js +12 -11
- package/build/cjs/transfer.js +86 -72
- package/build/cjs/transfer.stories.js +127 -131
- package/build/es/__e2e__/add_remove-highlighted-options.stories.e2e.js +29 -20
- package/build/es/__e2e__/common/stateful-decorator.js +26 -19
- package/build/es/__e2e__/disabled-transfer-buttons.stories.e2e.js +69 -48
- package/build/es/__e2e__/disabled-transfer-options.stories.e2e.js +13 -10
- package/build/es/__e2e__/display-order.stories.e2e.js +28 -19
- package/build/es/__e2e__/filter-options-list.stories.e2e.js +96 -72
- package/build/es/__e2e__/highlight-range-of-options.stories.e2e.js +48 -33
- package/build/es/__e2e__/notify_at_end_of_list.stories.e2e.js +60 -42
- package/build/es/__e2e__/reorder-with-buttons.stories.e2e.js +18 -12
- package/build/es/__e2e__/set_unset-highlighted-option.stories.e2e.js +29 -20
- package/build/es/__e2e__/transferring-items.stories.e2e.js +28 -19
- package/build/es/__tests__/helper/use-highlighted-option/toggle-add.test.js +6 -3
- package/build/es/__tests__/helper/use-highlighted-option/toggle-range.test.js +48 -24
- package/build/es/__tests__/transfer.test.js +18 -10
- package/build/es/actions.js +13 -10
- package/build/es/add-all.js +17 -14
- package/build/es/add-individual.js +16 -13
- package/build/es/common/get-mode-by-modifier-key.js +7 -6
- package/build/es/container.js +15 -12
- package/build/es/end-intersection-detector.js +21 -15
- package/build/es/features/disabled-transfer-options/index.js +4 -2
- package/build/es/features/display-order/index.js +47 -26
- package/build/es/features/filter-options-list/index.js +6 -3
- package/build/es/features/highlight-range-of-options/index.js +10 -5
- package/build/es/features/loading_lists/index.js +2 -2
- package/build/es/features/notify_at_end_of_list/index.js +5 -3
- package/build/es/features/set_unset-highlighted-option/index.js +6 -3
- package/build/es/features/transferring-items/index.js +77 -42
- package/build/es/filter.js +26 -23
- package/build/es/icons.js +133 -115
- package/build/es/left-footer.js +13 -10
- package/build/es/left-header.js +13 -10
- package/build/es/left-side.js +19 -16
- package/build/es/options-container.js +17 -16
- package/build/es/picked-options.js +22 -19
- package/build/es/remove-all.js +16 -13
- package/build/es/remove-individual.js +16 -13
- package/build/es/reordering-actions.js +34 -31
- package/build/es/right-footer.js +13 -10
- package/build/es/right-header.js +13 -10
- package/build/es/right-side.js +19 -16
- package/build/es/source-options.js +22 -19
- package/build/es/transfer/add-all-selectable-source-options.js +13 -9
- package/build/es/transfer/add-individual-source-options.js +11 -9
- package/build/es/transfer/create-double-click-handlers.js +17 -13
- package/build/es/transfer/default-filter-callback.js +6 -3
- package/build/es/transfer/is-reorder-down-disabled.js +10 -6
- package/build/es/transfer/is-reorder-up-disabled.js +10 -6
- package/build/es/transfer/move-highlighted-picked-option-down.js +6 -5
- package/build/es/transfer/move-highlighted-picked-option-up.js +6 -5
- package/build/es/transfer/remove-all-picked-options.js +5 -4
- package/build/es/transfer/remove-individual-picked-options.js +10 -8
- package/build/es/transfer/use-filter.js +8 -7
- package/build/es/transfer/use-highlighted-options/create-toggle-highlighted-option.js +45 -40
- package/build/es/transfer/use-highlighted-options/toggle-add.js +7 -6
- package/build/es/transfer/use-highlighted-options/toggle-range.js +16 -11
- package/build/es/transfer/use-highlighted-options/toggle-replace.js +7 -5
- package/build/es/transfer/use-highlighted-options.js +7 -5
- package/build/es/transfer-option.js +12 -11
- package/build/es/transfer.js +86 -72
- package/build/es/transfer.stories.js +126 -130
- package/package.json +7 -7
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
* @param {string[]} args.selected
|
|
5
5
|
* @returns {bool}
|
|
6
6
|
*/
|
|
7
|
-
export const isReorderUpDisabled =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const isReorderUpDisabled = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
highlightedPickedOptions,
|
|
10
|
+
selected
|
|
11
|
+
} = _ref;
|
|
12
|
+
return (// only one item can be moved with the buttons
|
|
13
|
+
highlightedPickedOptions.length !== 1 || // can't move an item up if it's the first one
|
|
14
|
+
selected.indexOf(highlightedPickedOptions[0]) === 0
|
|
15
|
+
);
|
|
16
|
+
};
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
* @param {Function} args.onChange
|
|
6
6
|
* @returns {void}
|
|
7
7
|
*/
|
|
8
|
-
export const moveHighlightedPickedOptionDown =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export const moveHighlightedPickedOptionDown = _ref => {
|
|
9
|
+
let {
|
|
10
|
+
selected,
|
|
11
|
+
highlightedPickedOptions,
|
|
12
|
+
onChange
|
|
13
|
+
} = _ref;
|
|
13
14
|
const optionIndex = selected.findIndex(selectedOption => selectedOption === highlightedPickedOptions[0]); // Can't move down last or non-existing option
|
|
14
15
|
|
|
15
16
|
if (optionIndex === -1 || optionIndex > selected.length - 2) {
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
* @param {Function} args.onChange
|
|
6
6
|
* @returns {void}
|
|
7
7
|
*/
|
|
8
|
-
export const moveHighlightedPickedOptionUp =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export const moveHighlightedPickedOptionUp = _ref => {
|
|
9
|
+
let {
|
|
10
|
+
selected,
|
|
11
|
+
highlightedPickedOptions,
|
|
12
|
+
onChange
|
|
13
|
+
} = _ref;
|
|
13
14
|
const optionIndex = selected.findIndex(selectedOption => selectedOption === highlightedPickedOptions[0]); // Can't move up option at index 0 or non-existing option
|
|
14
15
|
|
|
15
16
|
if (optionIndex < 1) {
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* @param {Function} args.onChange
|
|
5
5
|
* @returns {void}
|
|
6
6
|
*/
|
|
7
|
-
export const removeAllPickedOptions =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export const removeAllPickedOptions = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
setHighlightedPickedOptions,
|
|
10
|
+
onChange
|
|
11
|
+
} = _ref;
|
|
11
12
|
setHighlightedPickedOptions([]);
|
|
12
13
|
onChange({
|
|
13
14
|
selected: []
|
|
@@ -6,14 +6,16 @@
|
|
|
6
6
|
* @param {Function} args.onChange
|
|
7
7
|
* @returns {void}
|
|
8
8
|
*/
|
|
9
|
-
export const removeIndividualPickedOptions =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
export const removeIndividualPickedOptions = _ref => {
|
|
10
|
+
let {
|
|
11
|
+
filterablePicked,
|
|
12
|
+
pickedOptions,
|
|
13
|
+
highlightedPickedOptions,
|
|
14
|
+
onChange,
|
|
15
|
+
selected,
|
|
16
|
+
setHighlightedPickedOptions
|
|
17
|
+
} = _ref;
|
|
18
|
+
|
|
17
19
|
/**
|
|
18
20
|
* Creates a subset of the highlighted options to reflect a changed
|
|
19
21
|
* filter value in case previously highlighted options are now
|
|
@@ -2,13 +2,14 @@ import { useState } from 'react';
|
|
|
2
2
|
|
|
3
3
|
const identity = value => value;
|
|
4
4
|
|
|
5
|
-
export const useFilter =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
export const useFilter = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
initialSearchTerm,
|
|
8
|
+
onFilterChange,
|
|
9
|
+
externalSearchTerm,
|
|
10
|
+
filterable,
|
|
11
|
+
filterCallback
|
|
12
|
+
} = _ref;
|
|
12
13
|
const [internalFilter, setInternalFilter] = useState(initialSearchTerm);
|
|
13
14
|
const filterValue = onFilterChange ? externalSearchTerm : internalFilter;
|
|
14
15
|
const filter = filterable ? filterCallback : identity;
|
|
@@ -14,50 +14,55 @@ import { toggleReplace } from './toggle-replace.js';
|
|
|
14
14
|
* @returns {void}
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
export const createToggleHighlightedOption =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
17
|
+
export const createToggleHighlightedOption = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
disabled,
|
|
20
|
+
highlightedOptions,
|
|
21
|
+
setHighlightedOptions,
|
|
22
|
+
maxSelections,
|
|
23
|
+
setLastClicked,
|
|
24
|
+
options,
|
|
25
|
+
lastClicked
|
|
26
|
+
} = _ref;
|
|
27
|
+
return _ref2 => {
|
|
28
|
+
let {
|
|
29
|
+
option,
|
|
30
|
+
mode
|
|
31
|
+
} = _ref2;
|
|
32
|
+
|
|
33
|
+
if (disabled) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
setHighlightedOptions([]);
|
|
38
|
+
|
|
39
|
+
if (mode === ADD_MODE) {
|
|
40
|
+
setLastClicked(option.value);
|
|
41
|
+
return toggleAdd({
|
|
42
|
+
highlightedOptions,
|
|
43
|
+
maxSelections,
|
|
44
|
+
option,
|
|
45
|
+
setHighlightedOptions
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (mode === RANGE_MODE) {
|
|
50
|
+
return toggleRange({
|
|
51
|
+
highlightedOptions,
|
|
52
|
+
options,
|
|
53
|
+
option,
|
|
54
|
+
setHighlightedOptions,
|
|
55
|
+
lastClicked,
|
|
56
|
+
maxSelections
|
|
57
|
+
});
|
|
58
|
+
} // REPLACE_MODE
|
|
32
59
|
|
|
33
|
-
setHighlightedOptions([]);
|
|
34
60
|
|
|
35
|
-
if (mode === ADD_MODE) {
|
|
36
61
|
setLastClicked(option.value);
|
|
37
|
-
return
|
|
38
|
-
highlightedOptions,
|
|
39
|
-
maxSelections,
|
|
62
|
+
return toggleReplace({
|
|
40
63
|
option,
|
|
41
|
-
setHighlightedOptions
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (mode === RANGE_MODE) {
|
|
46
|
-
return toggleRange({
|
|
47
64
|
highlightedOptions,
|
|
48
|
-
|
|
49
|
-
option,
|
|
50
|
-
setHighlightedOptions,
|
|
51
|
-
lastClicked,
|
|
52
|
-
maxSelections
|
|
65
|
+
setHighlightedOptions
|
|
53
66
|
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
setLastClicked(option.value);
|
|
58
|
-
return toggleReplace({
|
|
59
|
-
option,
|
|
60
|
-
highlightedOptions,
|
|
61
|
-
setHighlightedOptions
|
|
62
|
-
});
|
|
67
|
+
};
|
|
63
68
|
};
|
|
@@ -8,12 +8,13 @@ import { toggleValue } from '../../common/index.js';
|
|
|
8
8
|
* @returns {void}
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
export const toggleAdd =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
export const toggleAdd = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
highlightedOptions,
|
|
14
|
+
maxSelections,
|
|
15
|
+
option,
|
|
16
|
+
setHighlightedOptions
|
|
17
|
+
} = _ref;
|
|
17
18
|
const afterToggled = toggleValue(highlightedOptions, option.value);
|
|
18
19
|
const capped = afterToggled.slice(-1 * maxSelections);
|
|
19
20
|
setHighlightedOptions(capped);
|
|
@@ -10,14 +10,16 @@ import { findOptionIndex } from '../../common/index.js';
|
|
|
10
10
|
* @returns {void}
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
export const toggleRange =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
export const toggleRange = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
highlightedOptions,
|
|
16
|
+
options,
|
|
17
|
+
option,
|
|
18
|
+
setHighlightedOptions,
|
|
19
|
+
lastClicked,
|
|
20
|
+
maxSelections
|
|
21
|
+
} = _ref;
|
|
22
|
+
|
|
21
23
|
if (highlightedOptions.length === 0) {
|
|
22
24
|
setHighlightedOptions([option.value]);
|
|
23
25
|
} else {
|
|
@@ -42,9 +44,12 @@ export const toggleRange = ({
|
|
|
42
44
|
|
|
43
45
|
const lower = Math.min(from, to);
|
|
44
46
|
const higher = Math.max(from, to);
|
|
45
|
-
const newHighlightedSourceOptions = options.slice(lower, higher + 1).filter(option => !option.disabled).slice(maxSelections * -1).map(
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
const newHighlightedSourceOptions = options.slice(lower, higher + 1).filter(option => !option.disabled).slice(maxSelections * -1).map(_ref2 => {
|
|
48
|
+
let {
|
|
49
|
+
value
|
|
50
|
+
} = _ref2;
|
|
51
|
+
return value;
|
|
52
|
+
});
|
|
48
53
|
setHighlightedOptions(newHighlightedSourceOptions);
|
|
49
54
|
}
|
|
50
55
|
};
|
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
* @param {Function} args.setHighlightedOption
|
|
6
6
|
* @returns {void}
|
|
7
7
|
*/
|
|
8
|
-
export const toggleReplace =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export const toggleReplace = _ref => {
|
|
9
|
+
let {
|
|
10
|
+
option,
|
|
11
|
+
highlightedOptions,
|
|
12
|
+
setHighlightedOptions
|
|
13
|
+
} = _ref;
|
|
14
|
+
|
|
13
15
|
if (highlightedOptions.length > 1) {
|
|
14
16
|
setHighlightedOptions([option.value]);
|
|
15
17
|
} else {
|
|
@@ -8,11 +8,13 @@ import { createToggleHighlightedOption } from './use-highlighted-options/create-
|
|
|
8
8
|
* @returns {Object} highlighted options & helpers
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
export const useHighlightedOptions =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export const useHighlightedOptions = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
disabled,
|
|
14
|
+
maxSelections,
|
|
15
|
+
options
|
|
16
|
+
} = _ref;
|
|
17
|
+
|
|
16
18
|
/**
|
|
17
19
|
* These are important so the stored element can be used
|
|
18
20
|
* as range-start when using shift multiple times consecutively
|
|
@@ -4,16 +4,17 @@ import cx from 'classnames';
|
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import React, { useRef } from 'react';
|
|
6
6
|
const DOUBLE_CLICK_MAX_DELAY = 500;
|
|
7
|
-
export const TransferOption =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
export const TransferOption = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
className,
|
|
10
|
+
disabled,
|
|
11
|
+
dataTest,
|
|
12
|
+
highlighted,
|
|
13
|
+
onClick,
|
|
14
|
+
onDoubleClick,
|
|
15
|
+
label,
|
|
16
|
+
value
|
|
17
|
+
} = _ref;
|
|
17
18
|
const doubleClickTimeout = useRef(null);
|
|
18
19
|
return /*#__PURE__*/React.createElement("div", {
|
|
19
20
|
"data-test": dataTest,
|
|
@@ -46,7 +47,7 @@ export const TransferOption = ({
|
|
|
46
47
|
}, label, /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
47
48
|
id: "4216903932",
|
|
48
49
|
dynamic: [colors.grey900, colors.grey200, colors.teal700, colors.white, colors.grey600]
|
|
49
|
-
}, [
|
|
50
|
+
}, ["div.__jsx-style-dynamic-selector{font-size:14px;line-height:16px;padding:4px 8px;color:".concat(colors.grey900, ";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}"), "div.__jsx-style-dynamic-selector:hover{background:".concat(colors.grey200, ";}"), "div.highlighted.__jsx-style-dynamic-selector{background:".concat(colors.teal700, ";color:").concat(colors.white, ";}"), "div.disabled.__jsx-style-dynamic-selector{color:".concat(colors.grey600, ";cursor:not-allowed;}")]));
|
|
50
51
|
};
|
|
51
52
|
TransferOption.defaultProps = {
|
|
52
53
|
dataTest: 'dhis2-uicore-transferoption'
|
package/build/es/transfer.js
CHANGED
|
@@ -20,50 +20,52 @@ import { addAllSelectableSourceOptions, addIndividualSourceOptions, createDouble
|
|
|
20
20
|
|
|
21
21
|
const identity = value => value;
|
|
22
22
|
|
|
23
|
-
export const Transfer =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
23
|
+
export const Transfer = _ref => {
|
|
24
|
+
let {
|
|
25
|
+
options,
|
|
26
|
+
onChange,
|
|
27
|
+
addAllText,
|
|
28
|
+
addIndividualText,
|
|
29
|
+
className,
|
|
30
|
+
dataTest,
|
|
31
|
+
disabled,
|
|
32
|
+
enableOrderChange,
|
|
33
|
+
filterCallback,
|
|
34
|
+
filterCallbackPicked,
|
|
35
|
+
filterLabel,
|
|
36
|
+
filterLabelPicked,
|
|
37
|
+
filterPlaceholder,
|
|
38
|
+
filterPlaceholderPicked,
|
|
39
|
+
filterable,
|
|
40
|
+
filterablePicked,
|
|
41
|
+
height,
|
|
42
|
+
hideFilterInput,
|
|
43
|
+
hideFilterInputPicked,
|
|
44
|
+
initialSearchTerm,
|
|
45
|
+
initialSearchTermPicked,
|
|
46
|
+
leftFooter,
|
|
47
|
+
leftHeader,
|
|
48
|
+
loadingPicked,
|
|
49
|
+
loading,
|
|
50
|
+
maxSelections,
|
|
51
|
+
optionsWidth,
|
|
52
|
+
removeAllText,
|
|
53
|
+
removeIndividualText,
|
|
54
|
+
renderOption,
|
|
55
|
+
rightFooter,
|
|
56
|
+
rightHeader,
|
|
57
|
+
searchTerm,
|
|
58
|
+
searchTermPicked,
|
|
59
|
+
selected,
|
|
60
|
+
selectedEmptyComponent,
|
|
61
|
+
selectedWidth,
|
|
62
|
+
sourceEmptyPlaceholder,
|
|
63
|
+
onFilterChange,
|
|
64
|
+
onFilterChangePicked,
|
|
65
|
+
onEndReached,
|
|
66
|
+
onEndReachedPicked
|
|
67
|
+
} = _ref;
|
|
68
|
+
|
|
67
69
|
/* Source options search value:
|
|
68
70
|
* Depending on whether the onFilterChange callback has been provided
|
|
69
71
|
* either the internal or external search value is used */
|
|
@@ -84,9 +86,12 @@ export const Transfer = ({
|
|
|
84
86
|
* Filters options if filterable is true.
|
|
85
87
|
*/
|
|
86
88
|
|
|
87
|
-
const sourceOptions = actualFilterCallback(options.filter(
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
const sourceOptions = actualFilterCallback(options.filter(_ref2 => {
|
|
90
|
+
let {
|
|
91
|
+
value
|
|
92
|
+
} = _ref2;
|
|
93
|
+
return !selected.includes(value);
|
|
94
|
+
}), actualFilter);
|
|
90
95
|
/*
|
|
91
96
|
* Picked options highlighting:
|
|
92
97
|
* These are all the highlighted options on the options side.
|
|
@@ -158,9 +163,12 @@ export const Transfer = ({
|
|
|
158
163
|
* Disabled button states
|
|
159
164
|
*/
|
|
160
165
|
|
|
161
|
-
const isAddAllDisabled = disabled || sourceOptions.filter(
|
|
162
|
-
|
|
163
|
-
|
|
166
|
+
const isAddAllDisabled = disabled || sourceOptions.filter(_ref3 => {
|
|
167
|
+
let {
|
|
168
|
+
disabled
|
|
169
|
+
} = _ref3;
|
|
170
|
+
return !disabled;
|
|
171
|
+
}).length === 0;
|
|
164
172
|
const isAddIndividualDisabled = disabled || !highlightedSourceOptions.length;
|
|
165
173
|
const isRemoveAllDisabled = disabled || !selected.length;
|
|
166
174
|
const isRemoveIndividualDisabled = disabled || !highlightedPickedOptions.length;
|
|
@@ -169,20 +177,23 @@ export const Transfer = ({
|
|
|
169
177
|
className: className,
|
|
170
178
|
height: height
|
|
171
179
|
}, /*#__PURE__*/React.createElement(LeftSide, {
|
|
172
|
-
dataTest:
|
|
180
|
+
dataTest: "".concat(dataTest, "-leftside"),
|
|
173
181
|
width: optionsWidth
|
|
174
182
|
}, (leftHeader || filterable) && /*#__PURE__*/React.createElement(LeftHeader, {
|
|
175
|
-
dataTest:
|
|
183
|
+
dataTest: "".concat(dataTest, "-leftheader")
|
|
176
184
|
}, leftHeader, filterable && !hideFilterInput && /*#__PURE__*/React.createElement(Filter, {
|
|
177
185
|
label: filterLabel,
|
|
178
186
|
placeholder: filterPlaceholder,
|
|
179
|
-
dataTest:
|
|
187
|
+
dataTest: "".concat(dataTest, "-filter"),
|
|
180
188
|
filter: actualFilter,
|
|
181
|
-
onChange: onFilterChange ? onFilterChange :
|
|
182
|
-
|
|
183
|
-
|
|
189
|
+
onChange: onFilterChange ? onFilterChange : _ref4 => {
|
|
190
|
+
let {
|
|
191
|
+
value
|
|
192
|
+
} = _ref4;
|
|
193
|
+
return setInternalFilter(value);
|
|
194
|
+
}
|
|
184
195
|
})), /*#__PURE__*/React.createElement(OptionsContainer, {
|
|
185
|
-
dataTest:
|
|
196
|
+
dataTest: "".concat(dataTest, "-sourceoptions"),
|
|
186
197
|
emptyComponent: sourceEmptyPlaceholder,
|
|
187
198
|
getOptionClickHandlers: getOptionClickHandlers,
|
|
188
199
|
highlightedOptions: highlightedSourceOptions,
|
|
@@ -193,12 +204,12 @@ export const Transfer = ({
|
|
|
193
204
|
toggleHighlightedOption: toggleHighlightedSourceOption,
|
|
194
205
|
onEndReached: onEndReached
|
|
195
206
|
}), leftFooter && /*#__PURE__*/React.createElement(LeftFooter, {
|
|
196
|
-
dataTest:
|
|
207
|
+
dataTest: "".concat(dataTest, "-leftfooter")
|
|
197
208
|
}, leftFooter)), /*#__PURE__*/React.createElement(Actions, {
|
|
198
|
-
dataTest:
|
|
209
|
+
dataTest: "".concat(dataTest, "-actions")
|
|
199
210
|
}, maxSelections === Infinity && /*#__PURE__*/React.createElement(AddAll, {
|
|
200
211
|
label: addAllText,
|
|
201
|
-
dataTest:
|
|
212
|
+
dataTest: "".concat(dataTest, "-actions-addall"),
|
|
202
213
|
disabled: isAddAllDisabled,
|
|
203
214
|
onClick: () => addAllSelectableSourceOptions({
|
|
204
215
|
sourceOptions,
|
|
@@ -208,7 +219,7 @@ export const Transfer = ({
|
|
|
208
219
|
})
|
|
209
220
|
}), /*#__PURE__*/React.createElement(AddIndividual, {
|
|
210
221
|
label: addIndividualText,
|
|
211
|
-
dataTest:
|
|
222
|
+
dataTest: "".concat(dataTest, "-actions-addindividual"),
|
|
212
223
|
disabled: isAddIndividualDisabled,
|
|
213
224
|
onClick: () => addIndividualSourceOptions({
|
|
214
225
|
filterable,
|
|
@@ -221,7 +232,7 @@ export const Transfer = ({
|
|
|
221
232
|
})
|
|
222
233
|
}), maxSelections === Infinity && /*#__PURE__*/React.createElement(RemoveAll, {
|
|
223
234
|
label: removeAllText,
|
|
224
|
-
dataTest:
|
|
235
|
+
dataTest: "".concat(dataTest, "-actions-removeall"),
|
|
225
236
|
disabled: isRemoveAllDisabled,
|
|
226
237
|
onClick: () => removeAllPickedOptions({
|
|
227
238
|
setHighlightedPickedOptions,
|
|
@@ -229,7 +240,7 @@ export const Transfer = ({
|
|
|
229
240
|
})
|
|
230
241
|
}), /*#__PURE__*/React.createElement(RemoveIndividual, {
|
|
231
242
|
label: removeIndividualText,
|
|
232
|
-
dataTest:
|
|
243
|
+
dataTest: "".concat(dataTest, "-actions-removeindividual"),
|
|
233
244
|
disabled: isRemoveIndividualDisabled,
|
|
234
245
|
onClick: () => removeIndividualPickedOptions({
|
|
235
246
|
filterablePicked,
|
|
@@ -240,21 +251,24 @@ export const Transfer = ({
|
|
|
240
251
|
setHighlightedPickedOptions
|
|
241
252
|
})
|
|
242
253
|
})), /*#__PURE__*/React.createElement(RightSide, {
|
|
243
|
-
dataTest:
|
|
254
|
+
dataTest: "".concat(dataTest, "-rightside"),
|
|
244
255
|
width: selectedWidth
|
|
245
256
|
}, (rightHeader || filterablePicked) && /*#__PURE__*/React.createElement(RightHeader, {
|
|
246
|
-
dataTest:
|
|
257
|
+
dataTest: "".concat(dataTest, "-rightheader")
|
|
247
258
|
}, rightHeader, filterablePicked && !hideFilterInputPicked && /*#__PURE__*/React.createElement(Filter, {
|
|
248
259
|
label: filterLabelPicked,
|
|
249
260
|
placeholder: filterPlaceholderPicked,
|
|
250
|
-
dataTest:
|
|
261
|
+
dataTest: "".concat(dataTest, "-filter"),
|
|
251
262
|
filter: actualFilterPicked,
|
|
252
|
-
onChange: onFilterChangePicked ? onFilterChangePicked :
|
|
253
|
-
|
|
254
|
-
|
|
263
|
+
onChange: onFilterChangePicked ? onFilterChangePicked : _ref5 => {
|
|
264
|
+
let {
|
|
265
|
+
value
|
|
266
|
+
} = _ref5;
|
|
267
|
+
return setInternalFilterPicked(value);
|
|
268
|
+
}
|
|
255
269
|
})), /*#__PURE__*/React.createElement(OptionsContainer, {
|
|
256
270
|
selected: true,
|
|
257
|
-
dataTest:
|
|
271
|
+
dataTest: "".concat(dataTest, "-pickedoptions"),
|
|
258
272
|
emptyComponent: selectedEmptyComponent,
|
|
259
273
|
getOptionClickHandlers: getOptionClickHandlers,
|
|
260
274
|
highlightedOptions: highlightedPickedOptions,
|
|
@@ -265,9 +279,9 @@ export const Transfer = ({
|
|
|
265
279
|
toggleHighlightedOption: toggleHighlightedPickedOption,
|
|
266
280
|
onEndReached: onEndReachedPicked
|
|
267
281
|
}), (rightFooter || enableOrderChange) && /*#__PURE__*/React.createElement(RightFooter, {
|
|
268
|
-
dataTest:
|
|
282
|
+
dataTest: "".concat(dataTest, "-rightfooter")
|
|
269
283
|
}, enableOrderChange && /*#__PURE__*/React.createElement(ReorderingActions, {
|
|
270
|
-
dataTest:
|
|
284
|
+
dataTest: "".concat(dataTest, "-reorderingactions"),
|
|
271
285
|
disabledDown: isReorderDownDisabled({
|
|
272
286
|
highlightedPickedOptions,
|
|
273
287
|
selected
|