@zohodesk/library-platform 1.1.3-exp.3 → 1.1.3-exp.4

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 (113) hide show
  1. package/es/bc/zhttp/Errors.js +14 -0
  2. package/es/bc/zhttp/index.js +3 -1
  3. package/es/bc/zlist/Constants.js +8 -1
  4. package/es/bc/zlist/Events.js +140 -0
  5. package/es/bc/zlist/index.js +2 -1
  6. package/es/bc/zrecord/Constants.js +3 -1
  7. package/es/cc/component/FallbackView.js +1 -0
  8. package/es/cc/fields/currency/Model.js +2 -0
  9. package/es/cc/fields/field/Properties.js +1 -1
  10. package/es/cc/fields/formula/Model.js +5 -0
  11. package/es/cc/index.js +1 -0
  12. package/es/cc/link/Properties.js +0 -1
  13. package/es/cc/table-connected/ErrorEventType.js +32 -0
  14. package/es/cc/table-connected/Events.js +96 -0
  15. package/es/cc/table-connected/Properties.js +16 -0
  16. package/es/cc/table-connected/SdkContract.js +120 -0
  17. package/es/cc/table-connected/constants/Events.js +2 -0
  18. package/es/cc/table-connected/index.js +3 -1
  19. package/es/cc/table-list/Constants.js +4 -0
  20. package/es/cc/table-list/Properties.js +25 -0
  21. package/es/cc/table-list/row/Properties.js +44 -0
  22. package/es/index.js +2 -1
  23. package/es/library/custom-component/adapters/gateways/event-manager/EventManager.js +116 -4
  24. package/es/library/custom-component/applications/interfaces/gateways/ISchemaValidator.js +1 -0
  25. package/es/library/custom-component/applications/usecases/InitializeUseCase.js +3 -2
  26. package/es/library/custom-component/applications/usecases/UpdatePropertyUseCase.js +3 -2
  27. package/es/library/custom-component/domain/entities/Component.js +16 -3
  28. package/es/library/custom-component/domain/entities/Properties.js +19 -1
  29. package/es/library/custom-component/frameworks/json-schema-validator/Validator.js +36 -1
  30. package/es/library/custom-component/frameworks/ui/CreateCustomComponent.js +23 -11
  31. package/es/library/custom-component/frameworks/ui/DependencyFactory.js +4 -3
  32. package/es/library/dot/components/table-list/frameworks/hooks/useDropIndicator.js +8 -0
  33. package/es/library/dot/components/table-list/frameworks/hooks/useRowData.js +15 -0
  34. package/es/library/dot/components/table-list/frameworks/hooks/useTableRowReorder.js +105 -0
  35. package/es/library/dot/components/table-list/frameworks/ui/TableListView.js +85 -15
  36. package/es/library/dot/components/table-list/frameworks/ui/css/TableList.module.css +240 -1
  37. package/es/library/dot/components/table-list/frameworks/ui/sub-components/Header.js +28 -4
  38. package/es/library/dot/components/table-list/frameworks/ui/sub-components/Rows.js +25 -9
  39. package/es/library/dot/components/table-list/frameworks/ui/sub-components/header/MassAction.js +11 -2
  40. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/Row.js +50 -8
  41. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/RowSelection.js +6 -1
  42. package/es/library/dot/components/table-list/frameworks/utils/getHeaderClasses.js +37 -0
  43. package/es/library/dot/components/table-list/frameworks/utils/getTableListClassName.js +37 -0
  44. package/es/library/dot/components/table-list/frameworks/utils/reOrder.js +90 -0
  45. package/es/library/dot/legacy-to-new-arch/text-area/frameworks/ui/TextAreaView.js +1 -1
  46. package/es/platform/client-actions/components/action-event-mediator/frameworks/ui/ClientActionsAdapter.js +96 -0
  47. package/es/platform/client-actions/components/action-event-mediator/frameworks/ui/EventHandlersFactory.js +11 -3
  48. package/es/platform/client-actions/template-resolver/index.js +1 -0
  49. package/es/platform/client-actions/translators/context-resolver/index.js +6 -6
  50. package/es/platform/components/table-connected/adapters/controllers/ColumnChooserOpenedController.js +1 -1
  51. package/es/platform/components/table-connected/adapters/controllers/ReOrderFinishController.js +21 -0
  52. package/es/platform/components/table-connected/adapters/resources/ErrorPrinter.js +20 -0
  53. package/es/platform/components/table-connected/adapters/resources/SmartTableResource.js +85 -0
  54. package/es/platform/components/table-connected/frameworks/ErrorEventHandlersFactory.js +126 -0
  55. package/es/platform/components/table-connected/frameworks/EventHandlersFactory.js +39 -3
  56. package/es/platform/components/table-connected/frameworks/ListSdkFactory.js +4 -2
  57. package/es/platform/components/table-connected/frameworks/TableConnectedFactory.js +2 -0
  58. package/es/platform/components/table-connected/frameworks/TableConnectedView.js +8 -2
  59. package/es/platform/data-source/http-template/reOrderRecord.js +44 -0
  60. package/es/platform/data-source/index.js +2 -0
  61. package/es/platform/sdk/application/interfaces/gateways/AbstractResource.js +1 -2
  62. package/es/platform/sdk/domain/entities/ResourceManager.js +1 -1
  63. package/es/platform/zdata-source/domain/entities/DataSource.js +18 -12
  64. package/es/platform/zfield/domain/entities/fields-manager/FieldsManager.js +7 -1
  65. package/es/platform/zform/adapters/presenter/FormTranslator.js +6 -127
  66. package/es/platform/zform/adapters/presenter/translators/SectionTranslator.js +32 -0
  67. package/es/platform/zform/adapters/presenter/translators/fields/BooleanFieldTranslator.js +20 -0
  68. package/es/platform/zform/adapters/presenter/translators/fields/CurrencyFieldTranslator.js +29 -0
  69. package/es/platform/zform/adapters/presenter/translators/fields/DateFieldTranslator.js +20 -0
  70. package/es/platform/zform/adapters/presenter/translators/fields/DateTimeFieldTranslator.js +21 -0
  71. package/es/platform/zform/adapters/presenter/translators/fields/DecimalFieldTranslator.js +29 -0
  72. package/es/platform/zform/adapters/presenter/translators/fields/EmailFieldTranslator.js +30 -0
  73. package/es/platform/zform/adapters/presenter/translators/fields/LookUpFieldTranslator.js +30 -0
  74. package/es/platform/zform/adapters/presenter/translators/fields/MultiselectFieldTranslator.js +29 -0
  75. package/es/platform/zform/adapters/presenter/translators/fields/NumberFieldTranslator.js +30 -0
  76. package/es/platform/zform/adapters/presenter/translators/fields/PercentageFieldTranslator.js +30 -0
  77. package/es/platform/zform/adapters/presenter/translators/fields/PhoneFieldTranslator.js +29 -0
  78. package/es/platform/zform/adapters/presenter/translators/fields/PicklistFieldTranslator.js +29 -0
  79. package/es/platform/zform/adapters/presenter/translators/fields/TextAreaFieldTranslator.js +30 -0
  80. package/es/platform/zform/adapters/presenter/translators/fields/TextFieldTranslator.js +27 -0
  81. package/es/platform/zform/adapters/presenter/translators/fields/URLFieldTranslator.js +30 -0
  82. package/es/platform/zform/adapters/presenter/translators/fields/index.js +15 -0
  83. package/es/platform/zform/applications/usecases/MyFormSuccessUseCase.js +3 -1
  84. package/es/platform/zform/domain/ZField.js +61 -16
  85. package/es/platform/zform/domain/ZSection.js +20 -7
  86. package/es/platform/zhttp/applications/usecases/FetchUseCase.js +111 -66
  87. package/es/platform/zlist/adapters/controllers/FieldExecuteFailedController.js +25 -0
  88. package/es/platform/zlist/adapters/controllers/ReOrderController.js +25 -0
  89. package/es/platform/zlist/adapters/controllers/ReOrderFailedController.js +26 -0
  90. package/es/platform/zlist/adapters/gateways/Repository.js +12 -2
  91. package/es/platform/zlist/adapters/gateways/Service.js +8 -0
  92. package/es/platform/zlist/adapters/presenters/TableTranslator.js +15 -4
  93. package/es/platform/zlist/adapters/presenters/translators/ColumnTranslator.js +11 -12
  94. package/es/platform/zlist/adapters/presenters/translators/EmptyViewModel.js +2 -1
  95. package/es/platform/zlist/adapters/presenters/translators/Header.js +3 -2
  96. package/es/platform/zlist/adapters/presenters/translators/HeadersTranslator.js +3 -2
  97. package/es/platform/zlist/adapters/presenters/translators/fields/CurrencyFieldTranslator.js +1 -0
  98. package/es/platform/zlist/adapters/presenters/translators/fields/FormulaFieldTranslator.js +3 -0
  99. package/es/platform/zlist/adapters/presenters/utils/DefaultClientActions.js +1 -1
  100. package/es/platform/zlist/applications/entities-factory/ListFactory.js +3 -2
  101. package/es/platform/zlist/applications/interfaces/input/ReOrderRecordUseCaseInput.js +1 -0
  102. package/es/platform/zlist/applications/usecases/FetchMoreUseCase.js +1 -1
  103. package/es/platform/zlist/applications/usecases/ReOrderFailedUseCase.js +22 -0
  104. package/es/platform/zlist/applications/usecases/ReOrderUseCase.js +25 -0
  105. package/es/platform/zlist/applications/usecases/RecordExecuteFailedUseCase.js +3 -2
  106. package/es/platform/zlist/applications/usecases/RecordSuccessCallbackUsecase.js +24 -3
  107. package/es/platform/zlist/domain/entities/List.js +61 -48
  108. package/es/platform/zlist/domain/entities/ListErrorState.js +167 -0
  109. package/es/platform/zlist/frameworks/EventHandlersFactory.js +13 -3
  110. package/es/platform/zlist/frameworks/ZListBehaviourFactory.js +6 -0
  111. package/es/platform/zrecord/domain/entities/GetReOrderRecordsStrategy.js +40 -0
  112. package/es/platform/zrecord/domain/entities/RecordsManager.js +3 -1
  113. package/package.json +6 -3
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useRef } from 'react';
2
2
  import Table from '@zohodesk-private/desk-components/es/table/Table/Table';
3
3
  import Header from "./sub-components/Header";
4
4
  import Body from "./sub-components/Body";
@@ -7,7 +7,10 @@ import NoData from "./sub-components/NoData";
7
7
  import ErrorState from "./sub-components/ErrorState";
8
8
  import Loading from "./sub-components/Loading";
9
9
  import ColumnResizingLine from "./sub-components/ColumnResizingLine";
10
- import handleScroll from "./handlers/HandleScroll"; // @ts-ignore
10
+ import handleScroll from "./handlers/HandleScroll";
11
+ import { useTableRowReorder } from "../hooks/useTableRowReorder";
12
+ import { SortableContainer } from 'react-sortable-hoc';
13
+ import getTableListClassName from "../utils/getTableListClassName"; // @ts-ignore
11
14
 
12
15
  import style from "./css/TableList.module.css";
13
16
 
@@ -16,13 +19,16 @@ function TableListView(_ref2, _ref) {
16
19
  state,
17
20
  helpers
18
21
  } = _ref2;
22
+ const TableRef = useRef(null);
19
23
  const {
20
24
  dispatch
21
25
  } = helpers;
22
26
  const {
23
27
  data,
24
28
  isLoading,
29
+ isReOrderLoading,
25
30
  resizerState,
31
+ reOrderConfig,
26
32
  selectionConfig,
27
33
  isFlexibleColumns,
28
34
  rowCursor,
@@ -45,17 +51,26 @@ function TableListView(_ref2, _ref) {
45
51
  const isDataEmpty = !hasRows && !isLoading && !isError; // TODO: derive from state.properties
46
52
 
47
53
  const isKeyboardControlsEnabled = keyboardControlsConfig.isEnabled;
54
+ const isReorderEnabled = reOrderConfig.isEnabled;
55
+ const isSelectionEnabled = selectionConfig.isEnabled;
56
+ const className = getTableListClassName({
57
+ isKeyboardControlsEnabled,
58
+ isReorderEnabled,
59
+ isSelectionEnabled
60
+ });
48
61
  return /*#__PURE__*/React.createElement("div", {
49
- className: style.wrapper,
62
+ className: `${style.wrapper} ${style[className]}`,
50
63
  ref: _ref
51
64
  }, /*#__PURE__*/React.createElement(Table, {
65
+ ref: TableRef,
52
66
  $event_onScroll: e => handleScroll(dispatch, {
53
67
  scrollEvent: e
54
68
  })
55
69
  }, renderHeader({
56
70
  headers,
57
71
  resizerState,
58
- selectionConfig,
72
+ isReorderEnabled,
73
+ isSelectionEnabled,
59
74
  selection,
60
75
  isKeyboardControlsEnabled,
61
76
  isFlexibleColumns,
@@ -63,15 +78,19 @@ function TableListView(_ref2, _ref) {
63
78
  rowActionsColumnWidth,
64
79
  dispatch
65
80
  }), renderBody({
81
+ TableRef,
82
+ dispatch,
66
83
  headers,
67
84
  rows,
68
85
  isFlexibleColumns,
69
- selectionConfig,
86
+ isReorderEnabled,
87
+ isSelectionEnabled,
70
88
  isKeyboardControlsEnabled,
71
89
  rowCursor,
72
90
  hasRowActions,
73
91
  rowActionsColumnWidth,
74
- hasRows
92
+ hasRows,
93
+ isReOrderLoading
75
94
  }), /*#__PURE__*/React.createElement(NoData, {
76
95
  isDataEmpty: isDataEmpty,
77
96
  emptyStateUiType: emptyStateUiType
@@ -87,7 +106,8 @@ function renderHeader(_ref3) {
87
106
  let {
88
107
  headers,
89
108
  resizerState,
90
- selectionConfig,
109
+ isReorderEnabled,
110
+ isSelectionEnabled,
91
111
  selection,
92
112
  isKeyboardControlsEnabled,
93
113
  isFlexibleColumns,
@@ -96,7 +116,8 @@ function renderHeader(_ref3) {
96
116
  dispatch
97
117
  } = _ref3;
98
118
  return /*#__PURE__*/React.createElement(Header, {
99
- isSelectionEnabled: selectionConfig.isEnabled,
119
+ isReorderEnabled: isReorderEnabled,
120
+ isSelectionEnabled: isSelectionEnabled,
100
121
  isResizerEnabled: resizerState.isEnabled,
101
122
  isKeyboardControlsEnabled: isKeyboardControlsEnabled,
102
123
  currentlyResizingColumn: resizerState.currentlyResizingColumn,
@@ -111,30 +132,79 @@ function renderHeader(_ref3) {
111
132
  });
112
133
  }
113
134
 
135
+ const SortableTableContainer = SortableContainer(props => {
136
+ const {
137
+ hasRows,
138
+ isFlexibleColumns,
139
+ children
140
+ } = props;
141
+ return /*#__PURE__*/React.createElement(Body, {
142
+ hasRows: hasRows,
143
+ isFlexibleColumns: isFlexibleColumns
144
+ }, children);
145
+ });
146
+
114
147
  function renderBody(_ref4) {
115
148
  let {
149
+ TableRef,
150
+ dispatch,
116
151
  headers,
117
152
  rows,
118
153
  isFlexibleColumns,
119
- selectionConfig,
154
+ isReorderEnabled,
155
+ isSelectionEnabled,
120
156
  isKeyboardControlsEnabled,
121
157
  rowCursor,
122
158
  hasRowActions,
123
159
  rowActionsColumnWidth,
124
- hasRows
160
+ hasRows,
161
+ isReOrderLoading
125
162
  } = _ref4;
126
- return /*#__PURE__*/React.createElement(Body, {
163
+ const {
164
+ rowData,
165
+ dropIndicator,
166
+ handleSortStart,
167
+ handleSortEnd,
168
+ handleSortOver,
169
+ getHelperDimensions,
170
+ getHelperContainer,
171
+ getHelperClass
172
+ } = useTableRowReorder({
173
+ rows,
174
+ TableRef,
175
+ dispatch
176
+ });
177
+
178
+ if (!hasRows) {
179
+ return null;
180
+ }
181
+
182
+ return /*#__PURE__*/React.createElement(SortableTableContainer, {
127
183
  hasRows: hasRows,
128
- isFlexibleColumns: isFlexibleColumns
184
+ isFlexibleColumns: isFlexibleColumns,
185
+ helperClass: getHelperClass(),
186
+ useDragHandle: true,
187
+ helperContainer: getHelperContainer,
188
+ onSortStart: handleSortStart,
189
+ onSortEnd: handleSortEnd,
190
+ onSortOver: handleSortOver,
191
+ getHelperDimensions: getHelperDimensions,
192
+ axis: "y",
193
+ lockAxis: "y",
194
+ lockToContainerEdges: true,
195
+ distance: 1
129
196
  }, /*#__PURE__*/React.createElement(Rows, {
130
197
  headers: headers,
131
- rows: rows,
198
+ rows: rowData,
132
199
  isFlexibleColumns: isFlexibleColumns,
133
- isSelectionEnabled: selectionConfig.isEnabled,
200
+ isReorderEnabled: isReorderEnabled,
201
+ isSelectionEnabled: isSelectionEnabled,
134
202
  rowCursor: rowCursor,
135
203
  hasRowActions: hasRowActions,
136
204
  rowActionsColumnWidth: rowActionsColumnWidth,
137
- isKeyboardControlsEnabled: isKeyboardControlsEnabled
205
+ isKeyboardControlsEnabled: isKeyboardControlsEnabled,
206
+ dropIndicator: dropIndicator,
207
+ isReOrderLoading: isReOrderLoading
138
208
  }));
139
209
  }
140
210
 
@@ -1,36 +1,151 @@
1
+ /* Default: no special styles */
2
+ .tableListRow {
3
+ /* */
4
+ }
5
+
6
+ /* Keyboard + Reorder + Selection */
7
+ .tableListRow-kbdReorderSelection {
8
+ --local-tableList-selectionColumn-width: 56px;
9
+ --local-tableList-selectionColumn-left: 24px;
10
+ --local-tableList-reorder-left: 8px;
11
+ }
12
+
13
+ /* Keyboard + Reorder, no Selection */
14
+ .tableListRow-kbdReorder {
15
+ --local-tableList-reorder-left: 8px;
16
+ }
17
+
18
+ /* Keyboard + Selection, no Reorder */
19
+ .tableListRow-kbdSelection {
20
+ --local-tableList-row-paddingLeft: 8px;
21
+ --local-tableList-selectionColumn-width: 72px;
22
+ --local-tableList-selectionColumn-left: 8px;
23
+ --local-tableList-selectionColumn-paddingRight: 8px;
24
+ --local-tableList-selectionColumn-justifyContent: center;
25
+ }
26
+
27
+ /* Keyboard only */
28
+ .tableListRow-kbd {
29
+ /* */
30
+ }
31
+
32
+ /* Reorder + Selection, no Keyboard */
33
+ .tableListRow-reorderSelection {
34
+ --local-tableList-selectionColumn-width: 56px;
35
+ --local-tableList-selectionColumn-left: 24px;
36
+ --local-tableList-selectionColumn-paddingRight: 16px;
37
+ --local-tableList-reorder-paddingLeft: 8px;
38
+ }
39
+
40
+ /* Reorder only */
41
+ .tableListRow-reorder {
42
+ --local-tableList-reorder-paddingLeft: 8px;
43
+ }
44
+
45
+ /* Selection only */
46
+ .tableListRow-selection {
47
+ --local-tableList-selectionColumn-justifyContent: center;
48
+ }
49
+
50
+ /* Default: no special styles */
51
+ .tableListHeader {
52
+ /* */
53
+ }
54
+
55
+ /* Keyboard + Reorder + Selection */
56
+ .tableListHeader-kbdReorderSelection {
57
+ --local-tableList-reorderHeader-paddingRight: 8px;
58
+ --local-tableList-massActionHeader-left: 24px;
59
+ --local-tableList-reorderHeader-left: 8px;
60
+ --local-tableList-reorderHeader-width: 16px;
61
+
62
+ --local-tableList-massActionHeader-left: 24px;
63
+ --local-tableList-massActionHeader-paddingRight: 24px;
64
+ --local-tableList-massActionHeader-width: 56px;
65
+ }
66
+
67
+ /* Keyboard + Reorder, no Selection */
68
+ .tableListHeader-kbdReorder {
69
+ --local-tableList-reorderHeader-left: 8px;
70
+ --local-tableList-reorderHeader-paddingRight: 8px;
71
+ --local-tableList-reorderHeader-width: 16px;
72
+ }
73
+
74
+ /* Reorder only */
75
+ .tableListHeader-reorder {
76
+ --local-tableList-reorderHeader-width: 24px;
77
+ }
78
+
79
+ /* Keyboard + Selection, no Reorder */
80
+ .tableListHeader-kbdSelection {
81
+ --local-tableList-header-paddingLeft: 8px;
82
+ --local-tableList-massActionHeader-left: 8px;
83
+ --local-tableList-massActionHeader-paddingRight: 8px;
84
+ --local-tableList-massActionHeader-width: 72px;
85
+ }
86
+
87
+ /* Keyboard only */
88
+ .tableListHeader-kbd {
89
+ --local-tableList-header-paddingLeft: 24px;
90
+ }
91
+
92
+ /* Reorder + Selection, no Keyboard */
93
+ .tableListHeader-reorderSelection {
94
+ --local-tableList-reorderHeader-width: 24px;
95
+ --local-tableList-massActionHeader-left: 24px;
96
+ --local-tableList-massActionHeader-paddingRight: 24px;
97
+ --local-tableList-massActionHeader-width: 56px;
98
+ }
99
+
100
+ /* Selection only */
101
+ .tableListHeader-selection {
102
+ /* */
103
+ }
104
+
1
105
  .loader {
2
106
  padding: var(--zd_size40) 0
3
107
  }
108
+
4
109
  .wrapper {
5
110
  height: 100% ;
6
111
  width: 100% ;
7
112
  position: relative
8
113
  }
114
+
9
115
  .resizerSpace {
10
116
  width: calc(var(--local_table_resizer_extra_space, 0) * var(--zd_size1));
11
117
  flex-shrink: 0
12
118
  }
119
+
13
120
  .contentWrapper {
14
121
  composes: sticky from '~@zohodesk/components/es/common/common.module.css';
15
122
  }
123
+
16
124
  [dir=ltr] .contentWrapper {
17
125
  left: 0 ;
18
126
  }
127
+
19
128
  [dir=rtl] .contentWrapper {
20
129
  right: 0 ;
21
130
  }
131
+
22
132
  .initialLoading {
23
133
  height: calc(100% - (var(--zd_size100)))
24
134
  }
135
+
25
136
  .emptyContent {
26
137
  padding: var(--zd_size160) 0 var(--zd_size60)
27
138
  }
139
+
28
140
  .errorContent {
29
141
  padding: var(--zd_size60) 0
30
142
  }
31
- .headerWithActions, .fieldWithActions {
143
+
144
+ .headerWithActions,
145
+ .fieldWithActions {
32
146
  gap: var(--zd_size6)
33
147
  }
148
+
34
149
  .actions {
35
150
  gap: var(--zd_size8)
36
151
  }
@@ -38,9 +153,133 @@
38
153
  .rowCursor_default {
39
154
  cursor: default
40
155
  }
156
+
41
157
  .rowCursor_pointer {
42
158
  cursor: pointer
43
159
  }
160
+
44
161
  .rowCursor_not-allowed {
45
162
  cursor: not-allowed
163
+ }
164
+
165
+ .preventTextSelection {
166
+ -webkit-user-select: none;
167
+ -moz-user-select: none;
168
+ -ms-user-select: none;
169
+ user-select: none;
170
+ }
171
+
172
+ .preventPointerEvents {
173
+ pointer-events: none;
174
+ }
175
+
176
+ .dragging {
177
+ overflow: hidden;
178
+ box-shadow: var(--local_tablelist_box_shadow);
179
+ }
180
+
181
+ :global(.GLOBAL_ZDDC_tableList).dragging .dragHandleContainer {
182
+ /* css:theme-validation:ignore */
183
+ color: var(--local_drag_handle_hover_color);
184
+ background-color: var(--local_drag_handle_dragging_bg);
185
+ }
186
+
187
+ :global(.GLOBAL_ZDDC_tableList).dragging .dragHandleContainer,
188
+ :global(.GLOBAL_ZDDC_tableList:hover) .dragHandleContainer,
189
+ :global(.GLOBAL_ZDDC_tableList:focus-within) .dragHandleContainer {
190
+ visibility: visible;
191
+ opacity: 1;
192
+ }
193
+
194
+ .dragHandleContainer {
195
+ opacity: 0;
196
+ visibility: hidden;
197
+ }
198
+
199
+ .dragHandleWrapper {
200
+ align-self: stretch;
201
+ composes: sticky from '~@zohodesk/components/es/common/common.module.css';
202
+ z-index: 1;
203
+ /* css:theme-validation:ignore */
204
+ background-color: var(--local_tablelist_bg);
205
+ }
206
+
207
+ [dir=ltr] .dragHandleWrapper {
208
+ left: var(--local-tableList-reorder-left, 0);
209
+ padding: 0 var(--local-tableList-reorder-paddingRight, 0) 0 var(--local-tableList-reorder-paddingLeft, 0);
210
+ }
211
+
212
+ [dir=rtl] .dragHandleWrapper {
213
+ right: var(--local-tableList-reorder-left, 0);
214
+ padding: 0 var(--local-tableList-reorder-paddingLeft, 0) 0 var(--local-tableList-reorder-paddingRight, 0);
215
+ }
216
+
217
+ .rowDropIndicator {
218
+ width: 100% ;
219
+ height: var(--zd_size2) ;
220
+ /* css:theme-validation:ignore */
221
+ position: absolute;
222
+ z-index: 2;
223
+ background-color: var(--local_tablelist_reorder_placeholderline_bg);
224
+ }
225
+
226
+ .dropIndicatorTop {
227
+ top: 0 ;
228
+ }
229
+
230
+ .dropIndicatorBottom {
231
+ bottom: calc( var(--zd_size3) * -1 ) ;
232
+ }
233
+
234
+ .row {
235
+ --local_padding_left: var(--local-tableList-row-paddingLeft);
236
+ }
237
+
238
+ .tableListSelectContainer {
239
+ --local_column_width: var(--local-tableList-selectionColumn-width);
240
+ justify-content: var(--local-tableList-selectionColumn-justifyContent, start);
241
+ }
242
+
243
+ [dir=ltr] .tableListSelectContainer {
244
+ left: var(--local-tableList-selectionColumn-left, 0);
245
+ padding-left: var(--local-tableList-selectionColumn-paddingLeft, 0);
246
+ padding-right: var(--local-tableList-selectionColumn-paddingRight, 0);
247
+ }
248
+
249
+ [dir=rtl] .tableListSelectContainer {
250
+ right: var(--local-tableList-selectionColumn-left, 0);
251
+ padding-right: var(--local-tableList-selectionColumn-paddingLeft, 0);
252
+ padding-left: var(--local-tableList-selectionColumn-paddingRight, 0);
253
+ }
254
+
255
+ .header {
256
+ --local_padding_left: var(--local-tableList-header-paddingLeft);
257
+ }
258
+
259
+ .reOrderHeader {
260
+ --local_column_width: var(--local-tableList-reorderHeader-width);
261
+ }
262
+
263
+ [dir=ltr] .reOrderHeader {
264
+ left: var(--local-tableList-reorderHeader-left, 0);
265
+ padding-right: var(--local-tableList-reorderHeader-paddingRight, 0);
266
+ }
267
+
268
+ [dir=rtl] .reOrderHeader {
269
+ right: var(--local-tableList-reorderHeader-left, 0);
270
+ padding-left: var(--local-tableList-reorderHeader-paddingRight, 0);
271
+ }
272
+
273
+ .massActionHeader {
274
+ --local_column_width: var(--local-tableList-massActionHeader-width);
275
+ }
276
+
277
+ [dir=ltr] .massActionHeader {
278
+ left: var(--local-tableList-massActionHeader-left, 0);
279
+ padding-right: var(--local-tableList-massActionHeader-paddingRight, 0);
280
+ }
281
+
282
+ [dir=rtl] .massActionHeader {
283
+ right: var(--local-tableList-massActionHeader-left, 0);
284
+ padding-left: var(--local-tableList-massActionHeader-paddingRight, 0);
46
285
  }
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import TableHeader from '@zohodesk-private/desk-components/es/table/TableHeader/TableHeader'; // import TableHeaderRow from '@zohodesk-private/desk-components/es/table/TableHeader/TableHeaderRow';
2
+ import TableHeader from '@zohodesk-private/desk-components/es/table/TableHeader/TableHeader';
3
+ import TableHeadFirstNode from '@zohodesk-private/desk-components/es/table/TableHeadFirstNode/TableHeadFirstNode'; // import TableHeaderRow from '@zohodesk-private/desk-components/es/table/TableHeader/TableHeaderRow';
3
4
 
4
5
  const TableHeaderRow = _ref => {
5
6
  let {
@@ -12,9 +13,12 @@ import MassAction from "./header/MassAction";
12
13
  import Headers from "./header/Headers";
13
14
  import ActionColumn from "./header/ActionColumn";
14
15
  import ResizerExtraSpace from "./header/ResizerExtraSpace";
16
+ import getHeaderClasses from "./../../utils/getHeaderClasses";
17
+ import style from "./../css/TableList.module.css";
15
18
 
16
19
  function Header(_ref2) {
17
20
  let {
21
+ isReorderEnabled,
18
22
  isSelectionEnabled,
19
23
  actions,
20
24
  isKeyboardControlsEnabled,
@@ -33,11 +37,19 @@ function Header(_ref2) {
33
37
  return null;
34
38
  }
35
39
 
40
+ const headerClasses = getHeaderClasses({
41
+ isReorderEnabled,
42
+ isSelectionEnabled,
43
+ isKeyboardControlsEnabled
44
+ });
36
45
  return /*#__PURE__*/React.createElement(TableHeader, {
37
46
  $flag_isColumnsFlexible: isFlexibleColumns,
38
- $flag_padding: !isSelectionEnabled,
39
- $flag_hasHighlighter: isKeyboardControlsEnabled
40
- }, /*#__PURE__*/React.createElement(TableHeaderRow, null, rendermassAction(isSelectionEnabled, actions), renderHeaders(headers, currentlyResizingColumn, isResizerEnabled, isFlexibleColumns, dispatch), renderActionColumn(hasRowActions, rowActionsColumnWidth), renderResizerExtraSpace(isCurrentlyResizing, resizerExtraWidth)));
47
+ $flag_padding: !isSelectionEnabled && !isReorderEnabled,
48
+ $flag_hasHighlighter: isKeyboardControlsEnabled,
49
+ customStyle: {
50
+ tableHeader: `${style.header} ${style[headerClasses]}`
51
+ }
52
+ }, /*#__PURE__*/React.createElement(TableHeaderRow, null, renderReOrderColumn(isReorderEnabled), rendermassAction(isSelectionEnabled, actions), renderHeaders(headers, currentlyResizingColumn, isResizerEnabled, isFlexibleColumns, dispatch), renderActionColumn(hasRowActions, rowActionsColumnWidth), renderResizerExtraSpace(isCurrentlyResizing, resizerExtraWidth)));
41
53
  }
42
54
 
43
55
  function rendermassAction(isSelectionEnabled, actions) {
@@ -47,6 +59,18 @@ function rendermassAction(isSelectionEnabled, actions) {
47
59
  });
48
60
  }
49
61
 
62
+ function renderReOrderColumn(isReorderEnabled) {
63
+ if (!isReorderEnabled) {
64
+ return null;
65
+ }
66
+
67
+ return /*#__PURE__*/React.createElement(TableHeadFirstNode, {
68
+ customStyle: {
69
+ container: style.reOrderHeader
70
+ }
71
+ }, /*#__PURE__*/React.createElement(React.Fragment, null));
72
+ }
73
+
50
74
  function renderHeaders(headers, currentlyResizingColumn, isResizerEnabled, isFlexibleColumns, dispatch) {
51
75
  return /*#__PURE__*/React.createElement(Headers, {
52
76
  headers: headers,
@@ -1,24 +1,36 @@
1
1
  import React from 'react';
2
2
  import Row from "./row/Row";
3
+ import { SortableElement } from 'react-sortable-hoc';
4
+ const SortableRow = SortableElement(props => /*#__PURE__*/React.createElement(Row, { ...props
5
+ }));
3
6
 
4
- function Rows(_ref) {
7
+ const Rows = _ref => {
5
8
  let {
6
9
  headers,
7
10
  rows,
8
11
  isFlexibleColumns,
12
+ isReorderEnabled,
9
13
  isSelectionEnabled,
10
14
  rowCursor,
11
15
  hasRowActions,
12
16
  rowActionsColumnWidth,
13
- isKeyboardControlsEnabled
17
+ isKeyboardControlsEnabled,
18
+ dropIndicator,
19
+ isReOrderLoading
14
20
  } = _ref;
15
- return rows.map((row, index) => /*#__PURE__*/React.createElement(Row, {
16
- key: index,
17
- ...getRowProps(row, headers, isFlexibleColumns, isSelectionEnabled, rowCursor, hasRowActions, rowActionsColumnWidth, isKeyboardControlsEnabled)
18
- }));
19
- }
21
+ return rows.map((row, index) => {
22
+ const isDroppable = dropIndicator.index !== null ? dropIndicator.index === index ? true : false : false;
23
+ const dropPosition = dropIndicator.position;
24
+ return /*#__PURE__*/React.createElement(SortableRow, {
25
+ key: `${row.id}`,
26
+ index: index,
27
+ disabled: isReOrderLoading,
28
+ ...getRowProps(row, headers, isFlexibleColumns, isReorderEnabled, isSelectionEnabled, rowCursor, hasRowActions, rowActionsColumnWidth, isKeyboardControlsEnabled, isDroppable, dropPosition, isReOrderLoading)
29
+ });
30
+ });
31
+ };
20
32
 
21
- function getRowProps(row, headers, isFlexibleColumns, isSelectionEnabled, rowCursor, hasRowActions, rowActionsColumnWidth, isKeyboardControlsEnabled) {
33
+ function getRowProps(row, headers, isFlexibleColumns, isReorderEnabled, isSelectionEnabled, rowCursor, hasRowActions, rowActionsColumnWidth, isKeyboardControlsEnabled, isDroppable, dropPosition, isReOrderLoading) {
22
34
  const {
23
35
  id,
24
36
  columns,
@@ -38,11 +50,15 @@ function getRowProps(row, headers, isFlexibleColumns, isSelectionEnabled, rowCur
38
50
  isFocussed,
39
51
  selectionTooltip,
40
52
  isFlexibleColumns,
53
+ isReorderEnabled,
41
54
  isSelectionEnabled,
42
55
  cursor: rowCursor,
43
56
  hasActions: hasRowActions,
44
57
  isKeyboardControlsEnabled,
45
- rowActionsColumnWidth
58
+ rowActionsColumnWidth,
59
+ isDroppable,
60
+ dropPosition,
61
+ isReOrderLoading
46
62
  };
47
63
  }
48
64
 
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import TableHeadFirstNode from '@zohodesk-private/desk-components/es/table/TableHeadFirstNode/TableHeadFirstNode';
3
3
  import TableHeading from '@zohodesk-private/desk-components/es/table/TableHeading/TableHeading';
4
4
  import ActionEventMediator from "../../../../../../../../platform/client-actions/components/action-event-mediator/frameworks/ui/ActionEventMediator";
5
+ import style from "./../../css/TableList.module.css";
5
6
 
6
7
  function MassAction(_ref) {
7
8
  let {
@@ -14,13 +15,21 @@ function MassAction(_ref) {
14
15
  }
15
16
 
16
17
  if (!actions || actions.length === 0) {
17
- return /*#__PURE__*/React.createElement(TableHeadFirstNode, null, /*#__PURE__*/React.createElement(TableHeading, {
18
+ return /*#__PURE__*/React.createElement(TableHeadFirstNode, {
19
+ customStyle: {
20
+ container: style.massActionHeader
21
+ }
22
+ }, /*#__PURE__*/React.createElement(TableHeading, {
18
23
  $i18n_text: "M/A",
19
24
  $i18n_tooltip: "Mass Action"
20
25
  }));
21
26
  }
22
27
 
23
- return /*#__PURE__*/React.createElement(TableHeadFirstNode, null, /*#__PURE__*/React.createElement(ActionEventMediator, {
28
+ return /*#__PURE__*/React.createElement(TableHeadFirstNode, {
29
+ customStyle: {
30
+ container: style.massActionHeader
31
+ }
32
+ }, /*#__PURE__*/React.createElement(ActionEventMediator, {
24
33
  actions: actions
25
34
  }));
26
35
  }