@elliemae/ds-shuttle 2.3.0-next.0 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/cjs/AnimationState.js +75 -0
  2. package/dist/cjs/AnimationState.js.map +7 -0
  3. package/dist/cjs/DSShuttle.js +170 -0
  4. package/dist/cjs/DSShuttle.js.map +7 -0
  5. package/dist/cjs/SearchState.js +60 -0
  6. package/dist/cjs/SearchState.js.map +7 -0
  7. package/dist/cjs/Shuttle.actions.js +126 -0
  8. package/dist/cjs/Shuttle.actions.js.map +7 -0
  9. package/dist/cjs/ShuttleContainer.js +82 -0
  10. package/dist/cjs/ShuttleContainer.js.map +7 -0
  11. package/dist/cjs/ShuttleImpl.js +214 -0
  12. package/dist/cjs/ShuttleImpl.js.map +7 -0
  13. package/dist/cjs/ShuttleRenderer.js +144 -0
  14. package/dist/cjs/ShuttleRenderer.js.map +7 -0
  15. package/dist/cjs/ShuttleState.js +84 -0
  16. package/dist/cjs/ShuttleState.js.map +7 -0
  17. package/dist/cjs/animation/animationConfig.js +78 -0
  18. package/dist/cjs/animation/animationConfig.js.map +7 -0
  19. package/dist/cjs/classedComponents.js +72 -0
  20. package/dist/cjs/classedComponents.js.map +7 -0
  21. package/dist/cjs/components/LoadingIndicator.js +52 -0
  22. package/dist/cjs/components/LoadingIndicator.js.map +7 -0
  23. package/dist/cjs/components/OverflowList.js +55 -0
  24. package/dist/cjs/components/OverflowList.js.map +7 -0
  25. package/dist/cjs/components/ShuttleBreadcrumb.js +54 -0
  26. package/dist/cjs/components/ShuttleBreadcrumb.js.map +7 -0
  27. package/dist/cjs/components/ShuttleInfiniteScrollIndicator.js +48 -0
  28. package/dist/cjs/components/ShuttleInfiniteScrollIndicator.js.map +7 -0
  29. package/dist/cjs/components/ShuttleListItem/ActionButtons.js +60 -0
  30. package/dist/cjs/components/ShuttleListItem/ActionButtons.js.map +7 -0
  31. package/dist/cjs/components/ShuttleListItem/ShuttleListItem.js +83 -0
  32. package/dist/cjs/components/ShuttleListItem/ShuttleListItem.js.map +7 -0
  33. package/dist/cjs/components/ShuttleListItem/ShuttleSourceListItem.js +90 -0
  34. package/dist/cjs/components/ShuttleListItem/ShuttleSourceListItem.js.map +7 -0
  35. package/dist/cjs/components/ShuttleListItem/ShuttleTargetListItem.js +73 -0
  36. package/dist/cjs/components/ShuttleListItem/ShuttleTargetListItem.js.map +7 -0
  37. package/dist/cjs/components/ShuttleListPanel.js +49 -0
  38. package/dist/cjs/components/ShuttleListPanel.js.map +7 -0
  39. package/dist/cjs/components/ShuttleSearchBox.js +99 -0
  40. package/dist/cjs/components/ShuttleSearchBox.js.map +7 -0
  41. package/dist/cjs/components/ShuttleSource.js +192 -0
  42. package/dist/cjs/components/ShuttleSource.js.map +7 -0
  43. package/dist/cjs/components/ShuttleTarget.js +104 -0
  44. package/dist/cjs/components/ShuttleTarget.js.map +7 -0
  45. package/dist/cjs/components/VirtualizedItem.js +51 -0
  46. package/dist/cjs/components/VirtualizedItem.js.map +7 -0
  47. package/dist/cjs/components/VirtualizedList.js +88 -0
  48. package/dist/cjs/components/VirtualizedList.js.map +7 -0
  49. package/dist/cjs/components/VirtualizedSortableList.js +48 -0
  50. package/dist/cjs/components/VirtualizedSortableList.js.map +7 -0
  51. package/dist/cjs/helper.js +83 -0
  52. package/dist/cjs/helper.js.map +7 -0
  53. package/dist/cjs/index.js +38 -0
  54. package/dist/cjs/index.js.map +7 -0
  55. package/dist/cjs/tests/utils.js +1218 -0
  56. package/dist/cjs/tests/utils.js.map +7 -0
  57. package/dist/cjs/updateShuttleStateFromProps.js +98 -0
  58. package/dist/cjs/updateShuttleStateFromProps.js.map +7 -0
  59. package/dist/cjs/utils.js +41 -0
  60. package/dist/cjs/utils.js.map +7 -0
  61. package/dist/cjs/withProviders.js +45 -0
  62. package/dist/cjs/withProviders.js.map +7 -0
  63. package/{esm → dist/esm}/AnimationState.js +12 -8
  64. package/dist/esm/AnimationState.js.map +7 -0
  65. package/dist/esm/DSShuttle.js +141 -0
  66. package/dist/esm/DSShuttle.js.map +7 -0
  67. package/dist/esm/SearchState.js +31 -0
  68. package/dist/esm/SearchState.js.map +7 -0
  69. package/dist/esm/Shuttle.actions.js +106 -0
  70. package/dist/esm/Shuttle.actions.js.map +7 -0
  71. package/dist/esm/ShuttleContainer.js +64 -0
  72. package/dist/esm/ShuttleContainer.js.map +7 -0
  73. package/dist/esm/ShuttleImpl.js +199 -0
  74. package/dist/esm/ShuttleImpl.js.map +7 -0
  75. package/dist/esm/ShuttleRenderer.js +115 -0
  76. package/dist/esm/ShuttleRenderer.js.map +7 -0
  77. package/dist/esm/ShuttleState.js +55 -0
  78. package/dist/esm/ShuttleState.js.map +7 -0
  79. package/dist/esm/animation/animationConfig.js +49 -0
  80. package/dist/esm/animation/animationConfig.js.map +7 -0
  81. package/dist/esm/classedComponents.js +43 -0
  82. package/dist/esm/classedComponents.js.map +7 -0
  83. package/dist/esm/components/LoadingIndicator.js +23 -0
  84. package/dist/esm/components/LoadingIndicator.js.map +7 -0
  85. package/dist/esm/components/OverflowList.js +26 -0
  86. package/dist/esm/components/OverflowList.js.map +7 -0
  87. package/dist/esm/components/ShuttleBreadcrumb.js +25 -0
  88. package/dist/esm/components/ShuttleBreadcrumb.js.map +7 -0
  89. package/dist/esm/components/ShuttleInfiniteScrollIndicator.js +19 -0
  90. package/dist/esm/components/ShuttleInfiniteScrollIndicator.js.map +7 -0
  91. package/dist/esm/components/ShuttleListItem/ActionButtons.js +31 -0
  92. package/dist/esm/components/ShuttleListItem/ActionButtons.js.map +7 -0
  93. package/dist/esm/components/ShuttleListItem/ShuttleListItem.js +54 -0
  94. package/dist/esm/components/ShuttleListItem/ShuttleListItem.js.map +7 -0
  95. package/dist/esm/components/ShuttleListItem/ShuttleSourceListItem.js +61 -0
  96. package/dist/esm/components/ShuttleListItem/ShuttleSourceListItem.js.map +7 -0
  97. package/dist/esm/components/ShuttleListItem/ShuttleTargetListItem.js +44 -0
  98. package/dist/esm/components/ShuttleListItem/ShuttleTargetListItem.js.map +7 -0
  99. package/dist/esm/components/ShuttleListPanel.js +20 -0
  100. package/dist/esm/components/ShuttleListPanel.js.map +7 -0
  101. package/dist/esm/components/ShuttleSearchBox.js +70 -0
  102. package/dist/esm/components/ShuttleSearchBox.js.map +7 -0
  103. package/dist/esm/components/ShuttleSource.js +175 -0
  104. package/dist/esm/components/ShuttleSource.js.map +7 -0
  105. package/dist/esm/components/ShuttleTarget.js +86 -0
  106. package/dist/esm/components/ShuttleTarget.js.map +7 -0
  107. package/dist/esm/components/VirtualizedItem.js +22 -0
  108. package/dist/esm/components/VirtualizedItem.js.map +7 -0
  109. package/dist/esm/components/VirtualizedList.js +59 -0
  110. package/dist/esm/components/VirtualizedList.js.map +7 -0
  111. package/dist/esm/components/VirtualizedSortableList.js +19 -0
  112. package/dist/esm/components/VirtualizedSortableList.js.map +7 -0
  113. package/dist/esm/helper.js +54 -0
  114. package/dist/esm/helper.js.map +7 -0
  115. package/dist/esm/index.js +9 -0
  116. package/dist/esm/index.js.map +7 -0
  117. package/dist/esm/tests/utils.js +1189 -0
  118. package/dist/esm/tests/utils.js.map +7 -0
  119. package/dist/esm/updateShuttleStateFromProps.js +69 -0
  120. package/dist/esm/updateShuttleStateFromProps.js.map +7 -0
  121. package/dist/esm/utils.js +12 -0
  122. package/dist/esm/utils.js.map +7 -0
  123. package/dist/esm/withProviders.js +16 -0
  124. package/dist/esm/withProviders.js.map +7 -0
  125. package/{types → dist/types}/AnimationState.d.ts +3 -2
  126. package/{types → dist/types}/DSShuttle.d.ts +1 -1
  127. package/{types → dist/types}/SearchState.d.ts +3 -2
  128. package/{types → dist/types}/Shuttle.actions.d.ts +0 -0
  129. package/{types → dist/types}/ShuttleContainer.d.ts +0 -0
  130. package/dist/types/ShuttleImpl.d.ts +4 -0
  131. package/{types → dist/types}/ShuttleRenderer.d.ts +1 -0
  132. package/{types → dist/types}/ShuttleState.d.ts +3 -2
  133. package/{types → dist/types}/animation/animationConfig.d.ts +0 -0
  134. package/{types → dist/types}/classedComponents.d.ts +0 -0
  135. package/{types → dist/types}/components/LoadingIndicator.d.ts +1 -0
  136. package/{types → dist/types}/components/OverflowList.d.ts +1 -0
  137. package/{types → dist/types}/components/ShuttleBreadcrumb.d.ts +1 -0
  138. package/{types → dist/types}/components/ShuttleInfiniteScrollIndicator.d.ts +1 -0
  139. package/{types → dist/types}/components/ShuttleListItem/ActionButtons.d.ts +0 -0
  140. package/{types → dist/types}/components/ShuttleListItem/ShuttleListItem.d.ts +1 -0
  141. package/{types → dist/types}/components/ShuttleListItem/ShuttleSourceListItem.d.ts +1 -0
  142. package/{types → dist/types}/components/ShuttleListItem/ShuttleTargetListItem.d.ts +1 -0
  143. package/{types → dist/types}/components/ShuttleListPanel.d.ts +1 -0
  144. package/{types → dist/types}/components/ShuttleSearchBox.d.ts +3 -1
  145. package/{types → dist/types}/components/ShuttleSource.d.ts +1 -0
  146. package/{types → dist/types}/components/ShuttleTarget.d.ts +1 -0
  147. package/{types → dist/types}/components/VirtualizedItem.d.ts +1 -0
  148. package/{types → dist/types}/components/VirtualizedList.d.ts +1 -0
  149. package/{types → dist/types}/components/VirtualizedSortableList.d.ts +1 -0
  150. package/{types → dist/types}/helper.d.ts +0 -0
  151. package/dist/types/index.d.ts +1 -0
  152. package/{types → dist/types}/tests/DSShuttle.events.test.d.ts +0 -0
  153. package/{types → dist/types}/tests/DSShuttle.test.d.ts +0 -0
  154. package/{types → dist/types}/tests/utils.d.ts +0 -0
  155. package/dist/types/updateShuttleStateFromProps.d.ts +3 -0
  156. package/{types → dist/types}/utils.d.ts +0 -0
  157. package/{types → dist/types}/withProviders.d.ts +1 -0
  158. package/package.json +97 -89
  159. package/cjs/AnimationState.js +0 -48
  160. package/cjs/DSShuttle.js +0 -223
  161. package/cjs/SearchState.js +0 -41
  162. package/cjs/Shuttle.actions.js +0 -137
  163. package/cjs/ShuttleContainer.js +0 -87
  164. package/cjs/ShuttleImpl.js +0 -311
  165. package/cjs/ShuttleRenderer.js +0 -139
  166. package/cjs/ShuttleState.js +0 -80
  167. package/cjs/animation/animationConfig.js +0 -81
  168. package/cjs/classedComponents.js +0 -71
  169. package/cjs/components/LoadingIndicator.js +0 -25
  170. package/cjs/components/OverflowList.js +0 -53
  171. package/cjs/components/ShuttleBreadcrumb.js +0 -42
  172. package/cjs/components/ShuttleInfiniteScrollIndicator.js +0 -39
  173. package/cjs/components/ShuttleListItem/ActionButtons.js +0 -55
  174. package/cjs/components/ShuttleListItem/ShuttleListItem.js +0 -85
  175. package/cjs/components/ShuttleListItem/ShuttleSourceListItem.js +0 -76
  176. package/cjs/components/ShuttleListItem/ShuttleTargetListItem.js +0 -57
  177. package/cjs/components/ShuttleListPanel.js +0 -31
  178. package/cjs/components/ShuttleSearchBox.js +0 -110
  179. package/cjs/components/ShuttleSource.js +0 -188
  180. package/cjs/components/ShuttleTarget.js +0 -116
  181. package/cjs/components/VirtualizedItem.js +0 -46
  182. package/cjs/components/VirtualizedList.js +0 -93
  183. package/cjs/components/VirtualizedSortableList.js +0 -41
  184. package/cjs/helper.js +0 -117
  185. package/cjs/index.js +0 -12
  186. package/cjs/updateShuttleStateFromProps.js +0 -94
  187. package/cjs/utils.js +0 -43
  188. package/cjs/withProviders.js +0 -29
  189. package/esm/DSShuttle.js +0 -213
  190. package/esm/SearchState.js +0 -35
  191. package/esm/Shuttle.actions.js +0 -123
  192. package/esm/ShuttleContainer.js +0 -80
  193. package/esm/ShuttleImpl.js +0 -304
  194. package/esm/ShuttleRenderer.js +0 -132
  195. package/esm/ShuttleState.js +0 -74
  196. package/esm/animation/animationConfig.js +0 -77
  197. package/esm/classedComponents.js +0 -51
  198. package/esm/components/LoadingIndicator.js +0 -18
  199. package/esm/components/OverflowList.js +0 -46
  200. package/esm/components/ShuttleBreadcrumb.js +0 -35
  201. package/esm/components/ShuttleInfiniteScrollIndicator.js +0 -32
  202. package/esm/components/ShuttleListItem/ActionButtons.js +0 -43
  203. package/esm/components/ShuttleListItem/ShuttleListItem.js +0 -76
  204. package/esm/components/ShuttleListItem/ShuttleSourceListItem.js +0 -68
  205. package/esm/components/ShuttleListItem/ShuttleTargetListItem.js +0 -49
  206. package/esm/components/ShuttleListPanel.js +0 -24
  207. package/esm/components/ShuttleSearchBox.js +0 -104
  208. package/esm/components/ShuttleSource.js +0 -179
  209. package/esm/components/ShuttleTarget.js +0 -107
  210. package/esm/components/VirtualizedItem.js +0 -40
  211. package/esm/components/VirtualizedList.js +0 -84
  212. package/esm/components/VirtualizedSortableList.js +0 -34
  213. package/esm/helper.js +0 -78
  214. package/esm/index.js +0 -2
  215. package/esm/updateShuttleStateFromProps.js +0 -88
  216. package/esm/utils.js +0 -18
  217. package/esm/withProviders.js +0 -22
  218. package/types/ShuttleImpl.d.ts +0 -3
  219. package/types/index.d.ts +0 -1
  220. package/types/updateShuttleStateFromProps.d.ts +0 -1
@@ -1,104 +0,0 @@
1
- import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import { Component } from 'react';
3
- import { aggregatedClasses } from '@elliemae/ds-classnames';
4
- import { debounce } from '@elliemae/ds-utilities';
5
- import { DSTextBox } from '@elliemae/ds-form';
6
-
7
- const blockName = 'shuttle-search-box';
8
- const SearchBoxContainer = aggregatedClasses('div')(blockName, null, _ref => {
9
- let {
10
- isOpen
11
- } = _ref;
12
- return {
13
- opened: isOpen
14
- };
15
- });
16
- const filterList = debounce((term, onFilterCallback) => {
17
- onFilterCallback(term);
18
- }, 200);
19
- class ShuttleSearchBox extends Component {
20
- constructor(props) {
21
- super(props);
22
- this.state = {
23
- value: props.value,
24
- prevProps: {}
25
- };
26
- this.handleChange = this.handleChange.bind(this);
27
- this.handleKeyPress = this.handleKeyPress.bind(this);
28
- }
29
-
30
- static getDerivedStateFromProps(nextProps, _ref2) {
31
- let {
32
- prevProps
33
- } = _ref2;
34
- const {
35
- value
36
- } = nextProps;
37
-
38
- if (value !== prevProps.value) {
39
- return {
40
- value,
41
- prevProps: {
42
- value
43
- }
44
- };
45
- }
46
-
47
- return null;
48
- }
49
-
50
- handleChange(e) {
51
- const {
52
- onChange,
53
- filterOnKeyStroke,
54
- onFilter
55
- } = this.props;
56
- const {
57
- value
58
- } = e.target;
59
- onChange(value);
60
- if (filterOnKeyStroke) filterList(value, onFilter);
61
- this.setState({
62
- value
63
- });
64
- }
65
-
66
- handleKeyPress(e) {
67
- const {
68
- onFilter
69
- } = this.props;
70
- if (e.keyCode === 13) onFilter(e.target.value);
71
- }
72
-
73
- render() {
74
- const {
75
- value
76
- } = this.state;
77
- const {
78
- isOpen,
79
- onClose,
80
- placeholder
81
- } = this.props;
82
- return /*#__PURE__*/_jsx(SearchBoxContainer, {
83
- classProps: {
84
- isOpen
85
- }
86
- }, void 0, /*#__PURE__*/_jsx(DSTextBox, {
87
- autoFocus: true,
88
- clearable: true,
89
- onChange: this.handleChange,
90
- onClear: onClose,
91
- onKeyDown: this.handleKeyPress,
92
- placeholder: placeholder,
93
- value: value
94
- }));
95
- }
96
-
97
- }
98
- ShuttleSearchBox.defaultProps = {
99
- filterOnKeyStroke: false,
100
- onChange: () => null,
101
- onFilter: () => null
102
- };
103
-
104
- export { ShuttleSearchBox as default };
@@ -1,179 +0,0 @@
1
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
2
- import _jsx from '@babel/runtime/helpers/esm/jsx';
3
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
4
- import 'core-js/modules/esnext.async-iterator.reduce.js';
5
- import 'core-js/modules/esnext.iterator.constructor.js';
6
- import 'core-js/modules/esnext.iterator.reduce.js';
7
- import 'core-js/modules/esnext.async-iterator.filter.js';
8
- import 'core-js/modules/esnext.iterator.filter.js';
9
- import 'core-js/modules/esnext.async-iterator.for-each.js';
10
- import 'core-js/modules/esnext.iterator.for-each.js';
11
- import { useContext, useMemo, useCallback } from 'react';
12
- import { Search, ArrowShortRight } from '@elliemae/ds-icons';
13
- import DSButton from '@elliemae/ds-button';
14
- import { runAll } from '@elliemae/ds-utilities';
15
- import ShuttleSearchBox from './ShuttleSearchBox.js';
16
- import ShuttleInfiniteScrollIndicator from './ShuttleInfiniteScrollIndicator.js';
17
- import ShuttleSourceListItem from './ShuttleListItem/ShuttleSourceListItem.js';
18
- import { ShuttleWrapper, ShuttleHeader, ShuttleHeaderBreadcrumb, ShuttleHeaderSearchToggle, ShuttleList, Overflow, LoadingList, EmptyMessage, ShuttleFooter, ShuttleFooterActions, ShuttleFooterCounter } from '../classedComponents.js';
19
- import ShuttleListPanel from './ShuttleListPanel.js';
20
- import VirtualizedList from './VirtualizedList.js';
21
- import { getActiveIdFromHierarchy } from '../helper.js';
22
- import AnimationContext from '../AnimationState.js';
23
- import SearchState from '../SearchState.js';
24
- import VirtualizedSortableList from './VirtualizedSortableList.js';
25
- import LoadingIndicator from './LoadingIndicator.js';
26
- import { jsx } from 'react/jsx-runtime';
27
-
28
- const _excluded = ["item"];
29
-
30
- var _Search, _LoadingList, _ArrowShortRight, _ShuttleInfiniteScrol;
31
-
32
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
33
-
34
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
35
-
36
- const noop = () => {};
37
-
38
- function ShuttleSource(_ref) {
39
- let {
40
- items = [],
41
- checkedItems = [],
42
- // build Map() and memoize it for better performance
43
- hierarchy = [],
44
- onMoveItem = noop,
45
- onCheckItem = noop,
46
- onMoveCheckedItems = noop,
47
- onNavigateTo = noop,
48
- onClearCheckedItems = noop,
49
- emptyMessage = 'No items found',
50
- composeSourceItemProps = noop,
51
- loading = false,
52
- onSearch = noop,
53
- onSearchClose = noop,
54
- onSearchOpen = noop,
55
- sourceSortable = false,
56
- onSortEnd = noop,
57
- sourceClearItemsText = 'CLEAR ALL',
58
- searchPlaceholder,
59
- renderSourceCounter = amount => "".concat(amount, " items"),
60
- onGetMoreItems = () => {},
61
- moreItemsLoading = false,
62
- hasNextPage = false
63
- } = _ref;
64
- const {
65
- state: {
66
- isMovingBack = false,
67
- isMoving
68
- }
69
- } = useContext(AnimationContext.Context);
70
- const {
71
- state: {
72
- searching,
73
- searchTerm
74
- },
75
- setSearchTerm,
76
- reset: resetSearch,
77
- toggleSearchBox
78
- } = useContext(SearchState.Context);
79
- const hashedCheckedItems = useMemo(() => checkedItems.reduce((result, item) => _objectSpread(_objectSpread({}, result), {}, {
80
- [item]: true
81
- }), {}), [checkedItems]);
82
- const handleCloseSearch = useCallback(() => {
83
- setSearchTerm('');
84
- runAll(resetSearch, onSearchClose)();
85
- }, [searching]);
86
- const handleToggleSearch = useCallback(() => {
87
- toggleSearchBox(!searching);
88
-
89
- if (searching) {
90
- handleCloseSearch();
91
- } else {
92
- onSearchOpen();
93
- }
94
- }, [searching]);
95
- const ComponentList = useMemo(() => sourceSortable ? VirtualizedSortableList : VirtualizedList, [sourceSortable]);
96
-
97
- const handleSortEnd = _ref2 => {
98
- let {
99
- oldIndex,
100
- newIndex
101
- } = _ref2;
102
- onSortEnd({
103
- sourceItem: items[oldIndex],
104
- targetItem: items[newIndex]
105
- });
106
- };
107
-
108
- const isEmpty = !items.length;
109
- const hasContent = !loading && !isEmpty;
110
- const contentIsEmpty = !loading && isEmpty;
111
- return /*#__PURE__*/_jsx(ShuttleWrapper, {}, void 0, /*#__PURE__*/_jsx(ShuttleHeader, {}, void 0, /*#__PURE__*/_jsx(ShuttleHeaderBreadcrumb, {
112
- hierarchy: hierarchy,
113
- onNavigateTo: onNavigateTo
114
- }), /*#__PURE__*/_jsx(ShuttleHeaderSearchToggle, {
115
- buttonType: "text",
116
- icon: _Search || (_Search = /*#__PURE__*/_jsx(Search, {})),
117
- onClick: handleToggleSearch,
118
- containerProps: {
119
- 'data-testid': 'shuttle-header-search-toggle'
120
- }
121
- })), /*#__PURE__*/_jsx(ShuttleList, {
122
- classProps: {
123
- showPulse: isMovingBack
124
- },
125
- style: {
126
- pointerEvents: isMoving ? 'none' : null
127
- }
128
- }, void 0, /*#__PURE__*/_jsx(ShuttleSearchBox, {
129
- isOpen: searching,
130
- onClose: runAll(() => toggleSearchBox(false), handleCloseSearch),
131
- onFilter: runAll(setSearchTerm, onSearch),
132
- placeholder: searchPlaceholder,
133
- value: searchTerm
134
- }, searching), hasContent ? /*#__PURE__*/_jsx(Overflow, {
135
- activeHierarchy: getActiveIdFromHierarchy(hierarchy).id,
136
- classProps: {
137
- searching,
138
- empty: isEmpty
139
- }
140
- }, void 0, /*#__PURE__*/_jsx(ComponentList, {
141
- helperClass: "drag-helper",
142
- itemRenderer: _ref3 => {
143
- let {
144
- item
145
- } = _ref3,
146
- rest = _objectWithoutProperties(_ref3, _excluded);
147
-
148
- return /*#__PURE__*/jsx(ShuttleSourceListItem, _objectSpread(_objectSpread(_objectSpread({
149
- "data-testid": "source-list-item"
150
- }, rest), composeSourceItemProps(item, rest)), {}, {
151
- isChecked: !!hashedCheckedItems[item.id],
152
- item: item,
153
- onItemCheck: onCheckItem,
154
- onMoveToTarget: onMoveItem,
155
- onNavigateOnSourceTo: onNavigateTo,
156
- showSortHandler: sourceSortable
157
- }));
158
- },
159
- items: items,
160
- onSortEnd: handleSortEnd,
161
- getMoreItems: onGetMoreItems,
162
- hasNextPage: hasNextPage
163
- }, searchTerm)) : null, contentIsEmpty ? /*#__PURE__*/_jsx(LoadingList, {
164
- "data-testid": "shuttle__loading-list"
165
- }, void 0, /*#__PURE__*/_jsx(EmptyMessage, {}, void 0, emptyMessage)) : null, loading ? _LoadingList || (_LoadingList = /*#__PURE__*/_jsx(LoadingList, {
166
- "data-testid": "shuttle__loading-list"
167
- }, void 0, /*#__PURE__*/_jsx(LoadingIndicator, {}))) : null, /*#__PURE__*/_jsx(ShuttleListPanel, {
168
- onClick: onMoveCheckedItems,
169
- open: checkedItems.length > 1
170
- }, void 0, _ArrowShortRight || (_ArrowShortRight = /*#__PURE__*/_jsx(ArrowShortRight, {}))), moreItemsLoading ? _ShuttleInfiniteScrol || (_ShuttleInfiniteScrol = /*#__PURE__*/_jsx(ShuttleInfiniteScrollIndicator, {
171
- isOpen: true
172
- })) : null), /*#__PURE__*/_jsx(ShuttleFooter, {}, void 0, /*#__PURE__*/_jsx(ShuttleFooterActions, {}, void 0, !!checkedItems.length && /*#__PURE__*/_jsx(DSButton, {
173
- buttonType: "link",
174
- labelText: sourceClearItemsText,
175
- onClick: onClearCheckedItems
176
- })), /*#__PURE__*/_jsx(ShuttleFooterCounter, {}, void 0, renderSourceCounter(checkedItems.length))));
177
- }
178
-
179
- export { ShuttleSource as default };
@@ -1,107 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
8
- import _jsx from '@babel/runtime/helpers/esm/jsx';
9
- import { useContext } from 'react';
10
- import DSButton from '@elliemae/ds-button';
11
- import { ShuttleWrapper, ShuttleHeader, ShuttleHeaderBreadcrumb, ShuttleList, Overflow, LoadingList, ShuttleFooter, ShuttleFooterActions, ShuttleFooterCounter, EmptyMessage } from '../classedComponents.js';
12
- import { getActiveIdFromHierarchy } from '../helper.js';
13
- import AnimationContext from '../AnimationState.js';
14
- import VirtualizedList from './VirtualizedList.js';
15
- import ShuttleTargetListItem from './ShuttleListItem/ShuttleTargetListItem.js';
16
- import VirtualizedSortableList from './VirtualizedSortableList.js';
17
- import LoadingIndicator from './LoadingIndicator.js';
18
- import { jsx } from 'react/jsx-runtime';
19
-
20
- const _excluded = ["item"];
21
-
22
- var _LoadingIndicator;
23
-
24
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
-
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
27
-
28
- const noop = () => {};
29
-
30
- function ShuttleTarget(_ref) {
31
- let {
32
- items = [],
33
- hierarchy = [],
34
- onNavigateTo = noop,
35
- onMoveItem = noop,
36
- onClearMovedItems = noop,
37
- emptyMessage = 'No items selected',
38
- composeTargetItemProps = () => ({}),
39
- targetSortable = false,
40
- onSortEnd = noop,
41
- targetClearItemsText = 'CLEAR ALL',
42
- renderTargetCounter = amount => "".concat(amount, " items"),
43
- loading = false
44
- } = _ref;
45
- const {
46
- state: {
47
- isMoving = false
48
- }
49
- } = useContext(AnimationContext.Context);
50
- const isEmpty = !items.length;
51
- const emptyContent = loading ? _LoadingIndicator || (_LoadingIndicator = /*#__PURE__*/_jsx(LoadingIndicator, {})) : /*#__PURE__*/_jsx(EmptyMessage, {}, void 0, emptyMessage);
52
- const ComponentList = targetSortable ? VirtualizedSortableList : VirtualizedList;
53
-
54
- const handleSortEnd = _ref2 => {
55
- let {
56
- oldIndex,
57
- newIndex
58
- } = _ref2;
59
- onSortEnd({
60
- sourceItem: items[oldIndex],
61
- targetItem: items[newIndex]
62
- });
63
- };
64
-
65
- return /*#__PURE__*/_jsx(ShuttleWrapper, {}, void 0, /*#__PURE__*/_jsx(ShuttleHeader, {}, void 0, /*#__PURE__*/_jsx(ShuttleHeaderBreadcrumb, {
66
- hierarchy: hierarchy,
67
- onNavigateTo: onNavigateTo
68
- })), /*#__PURE__*/_jsx(ShuttleList, {
69
- classProps: {
70
- showPulse: isMoving
71
- }
72
- }, void 0, !loading && !isEmpty ? /*#__PURE__*/_jsx(Overflow, {
73
- activeHierarchy: getActiveIdFromHierarchy(hierarchy).id,
74
- classProps: {
75
- empty: !items.length
76
- }
77
- }, void 0, /*#__PURE__*/_jsx(ComponentList, {
78
- itemRenderer: _ref3 => {
79
- let {
80
- item
81
- } = _ref3,
82
- rest = _objectWithoutProperties(_ref3, _excluded);
83
-
84
- return /*#__PURE__*/jsx(ShuttleTargetListItem, _objectSpread(_objectSpread(_objectSpread({
85
- "data-testid": "target-list-item"
86
- }, rest), composeTargetItemProps(item, rest)), {}, {
87
- isRoot: !getActiveIdFromHierarchy(hierarchy).id,
88
- item: item,
89
- onMoveToSource: onMoveItem,
90
- onNavigateOnTargetTo: onNavigateTo,
91
- showSortHandler: targetSortable
92
- }));
93
- },
94
- items: items,
95
- onSortEnd: handleSortEnd,
96
- target: true
97
- })) : /*#__PURE__*/_jsx(LoadingList, {}, void 0, emptyContent)), /*#__PURE__*/_jsx(ShuttleFooter, {}, void 0, /*#__PURE__*/_jsx(ShuttleFooterActions, {}, void 0, !!items.length && /*#__PURE__*/_jsx(DSButton, {
98
- containerProps: {
99
- 'data-testid': 'shuttle-clear-all-target'
100
- },
101
- buttonType: "link",
102
- labelText: targetClearItemsText,
103
- onClick: onClearMovedItems
104
- })), /*#__PURE__*/_jsx(ShuttleFooterCounter, {}, void 0, renderTargetCounter(items.length))));
105
- }
106
-
107
- export { ShuttleTarget as default };
@@ -1,40 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import { memo } from 'react';
8
- import { areEqual } from 'react-window';
9
-
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
- const VirtualizedItem = /*#__PURE__*/memo(_ref => {
14
- let {
15
- data,
16
- index,
17
- style: virtualizedStyles,
18
- showSortHandler = false
19
- } = _ref;
20
- const {
21
- items,
22
- itemRenderer,
23
- isItemMoving
24
- } = data;
25
- const {
26
- item,
27
- props: animatedStyles,
28
- key
29
- } = items[index] || {};
30
- if (!item) return null;
31
- return itemRenderer({
32
- index,
33
- key,
34
- item,
35
- showSortHandler,
36
- style: isItemMoving ? _objectSpread(_objectSpread({}, animatedStyles), virtualizedStyles) : virtualizedStyles
37
- });
38
- }, areEqual);
39
-
40
- export { VirtualizedItem as default };
@@ -1,84 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _jsx from '@babel/runtime/helpers/esm/jsx';
7
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
8
- import { useRef, useContext, useEffect } from 'react';
9
- import { useTransition } from 'react-spring/web';
10
- import { FixedSizeList } from 'react-window';
11
- import InfiniteLoader from 'react-window-infinite-loader';
12
- import AutoSizer from 'react-virtualized-auto-sizer';
13
- import { animationConfig } from '../animation/animationConfig.js';
14
- import AnimationContext from '../AnimationState.js';
15
- import VirtualizedItem from './VirtualizedItem.js';
16
- import { jsx } from 'react/jsx-runtime';
17
-
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
-
22
- function VirtualizedList(_ref) {
23
- let {
24
- items,
25
- itemRenderer,
26
- searching,
27
- target = false,
28
- innerRef,
29
- children,
30
- hasNextPage = true,
31
- getMoreItems = () => {}
32
- } = _ref;
33
- const hasMounted = useRef(false);
34
- const {
35
- state: {
36
- isMoving,
37
- isMovingBack
38
- },
39
- reset
40
- } = useContext(AnimationContext.Context);
41
- useEffect(() => {
42
- hasMounted.current = true;
43
- }, []);
44
- const transitions = useTransition(items, item => item.id, _objectSpread(_objectSpread({}, animationConfig.moveItem(target)), {}, {
45
- onDestroyed: () => reset()
46
- }));
47
- const itemCount = hasNextPage ? items.length + 1 : items.length;
48
-
49
- const isItemLoaded = index => !hasNextPage || index < items.length;
50
-
51
- return /*#__PURE__*/_jsx(AutoSizer, {}, void 0, _ref2 => {
52
- let {
53
- height,
54
- width
55
- } = _ref2;
56
- return /*#__PURE__*/_jsx(InfiniteLoader, {
57
- isItemLoaded: isItemLoaded,
58
- itemCount: itemCount,
59
- loadMoreItems: getMoreItems
60
- }, void 0, _ref3 => {
61
- let {
62
- onItemsRendered,
63
- ref
64
- } = _ref3;
65
- return /*#__PURE__*/jsx(FixedSizeList, {
66
- height: searching ? 300 : height,
67
- width: width,
68
- innerRef: innerRef,
69
- itemCount: transitions.length,
70
- itemData: {
71
- items: transitions,
72
- itemRenderer,
73
- isItemMoving: hasMounted.current && (isMoving || isMovingBack)
74
- },
75
- itemSize: 35,
76
- onItemsRendered: onItemsRendered,
77
- ref: ref,
78
- children: children || VirtualizedItem
79
- });
80
- });
81
- });
82
- }
83
-
84
- export { VirtualizedList as default };
@@ -1,34 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
8
- import 'react';
9
- import { sortableContainer, sortableElement } from 'react-sortable-hoc';
10
- import VirtualizedList from './VirtualizedList.js';
11
- import VirtualizedItem from './VirtualizedItem.js';
12
- import { jsx } from 'react/jsx-runtime';
13
-
14
- const _excluded = ["items"];
15
-
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
-
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
- const SortableList = sortableContainer(VirtualizedList);
20
-
21
- function VirtualizedSortableList(_ref) {
22
- let {
23
- items
24
- } = _ref,
25
- otherProps = _objectWithoutProperties(_ref, _excluded);
26
-
27
- return /*#__PURE__*/jsx(SortableList, _objectSpread(_objectSpread({}, otherProps), {}, {
28
- items: items,
29
- useDragHandle: true,
30
- children: sortableElement(VirtualizedItem)
31
- }));
32
- }
33
-
34
- export { VirtualizedSortableList as default };
package/esm/helper.js DELETED
@@ -1,78 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.for-each.js';
2
- import 'core-js/modules/esnext.iterator.for-each.js';
3
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
4
- import 'core-js/modules/esnext.async-iterator.some.js';
5
- import 'core-js/modules/esnext.iterator.constructor.js';
6
- import 'core-js/modules/esnext.iterator.some.js';
7
- import 'core-js/modules/esnext.async-iterator.filter.js';
8
- import 'core-js/modules/esnext.iterator.filter.js';
9
- import 'core-js/modules/esnext.async-iterator.reduce.js';
10
- import 'core-js/modules/esnext.iterator.reduce.js';
11
- import 'core-js/modules/esnext.async-iterator.find.js';
12
- import 'core-js/modules/esnext.iterator.find.js';
13
- import 'core-js/modules/esnext.async-iterator.map.js';
14
- import 'core-js/modules/esnext.iterator.map.js';
15
- import { omit, compose, hashArray } from '@elliemae/ds-utilities';
16
- import * as tree from 'treetabular';
17
-
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
- const getHierarchyTypeName = dest => !dest ? 'hierarchy' : 'hierarchyDest';
22
- const checkHasChildren = (list, currentItem) => list.some(item => currentItem.id === item.parent);
23
- const getActiveIdFromHierarchy = function () {
24
- let hierarchy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
25
- return hierarchy[hierarchy.length - 1] || {};
26
- };
27
- const filterItemsByHierarchy = function (list, hierarchyId) {
28
- let parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'parent';
29
- return list.filter(item => item[parentField] === hierarchyId);
30
- };
31
- const getItemsById = (ids, list) => ids.reduce((acc, id) => acc.concat(list.find(item => String(item.id) === String(id))), []).filter(item => item);
32
- const toggleInObject = (obj, key, value) => obj[key] ? omit(obj, [key]) : _objectSpread(_objectSpread({}, obj), {}, {
33
- [key]: value
34
- });
35
- const isMovable = item => !item.forceNotMovable && (item.hasChildren && item.isMoveableContainer || !item.hasChildren); // utility to execute all specified actions in sequence
36
-
37
- const pipe = actions => (initState, props) => actions.reduce((prevState, action) => action(prevState, props), initState);
38
- const moveItems = _ref => {
39
- let {
40
- oldIndex,
41
- newIndex
42
- } = _ref;
43
- return items => {
44
- const sourceItem = items[oldIndex];
45
- items.splice(oldIndex, 1);
46
- items.splice(newIndex, 0, sourceItem);
47
- return items;
48
- };
49
- };
50
- const prepareItems = items => compose(tree.fixOrder(), items => items.map(item => _objectSpread(_objectSpread({}, item), {}, {
51
- hasChildren: checkHasChildren(items, item)
52
- })))(items);
53
- const defaultOptions = {
54
- parentField: 'parent',
55
- idField: 'id',
56
- op: hasMoved => !hasMoved
57
- };
58
- function getChildrenFromParent(parentId, options) {
59
- const {
60
- parentField
61
- } = _objectSpread(_objectSpread({}, defaultOptions), options);
62
-
63
- return items => items.filter(item => item[parentField] === parentId);
64
- }
65
- function filterMovedItems(movedItems, options) {
66
- const {
67
- idField,
68
- op: filterOp
69
- } = _objectSpread(_objectSpread({}, defaultOptions), options);
70
-
71
- const movedItemsHash = hashArray(movedItems, idField);
72
- return items => items.filter(item => filterOp(!!movedItemsHash[item[idField]]));
73
- }
74
- function filterBySearch(term, searching) {
75
- return items => searching ? items.filter(item => item.name.toLowerCase().indexOf(String(term).toLowerCase()) !== -1) : items;
76
- }
77
-
78
- export { checkHasChildren, filterBySearch, filterItemsByHierarchy, filterMovedItems, getActiveIdFromHierarchy, getChildrenFromParent, getHierarchyTypeName, getItemsById, isMovable, moveItems, pipe, prepareItems, toggleInObject };
package/esm/index.js DELETED
@@ -1,2 +0,0 @@
1
- export { DSShuttleWithSchema, default } from './DSShuttle.js';
2
- export { default as utils } from './utils.js';