@onehat/ui 0.2.42 → 0.2.43

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onehat/ui",
3
- "version": "0.2.42",
3
+ "version": "0.2.43",
4
4
  "description": "Base UI for OneHat apps",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -83,7 +83,7 @@ function Form(props) {
83
83
  onSave = onEditorSave,
84
84
  onClose,
85
85
 
86
- // withSelection
86
+ // DataMgt
87
87
  selectorId,
88
88
  selectorSelected,
89
89
 
@@ -82,6 +82,7 @@ export function Grid(props) {
82
82
  hideNavColumn = true,
83
83
  noneFoundText,
84
84
  disableLoadingIndicator = false,
85
+ disableSelectorSelected = false,
85
86
  showRowExpander = false,
86
87
  rowExpanderTpl = '',
87
88
  showHeaders = true,
@@ -129,10 +130,9 @@ export function Grid(props) {
129
130
  isInSelection,
130
131
  noSelectorMeansNoResults = false,
131
132
 
132
- // selectorSelected
133
+ // DataMgt
133
134
  selectorId,
134
135
  selectorSelected,
135
- disableSelectorSelected = false,
136
136
 
137
137
  // withInlineEditor
138
138
  inlineEditorRef,
@@ -27,6 +27,10 @@ export default function withEditor(WrappedComponent) {
27
27
  },
28
28
  record,
29
29
 
30
+ // DataMgt
31
+ selectorId,
32
+ selectorSelected,
33
+
30
34
  // withData
31
35
  Repository,
32
36
 
@@ -47,7 +51,13 @@ export default function withEditor(WrappedComponent) {
47
51
  }
48
52
  const
49
53
  defaultValues = Repository.getSchema().model.defaultValues,
50
- entity = await Repository.add(defaultValues, false, true, true);
54
+ addValues = _.clone(defaultValues);
55
+
56
+ if (selectorId && !_.isEmpty(selectorSelected)) {
57
+ addValues[selectorId] = selectorSelected.id;
58
+ }
59
+
60
+ const entity = await Repository.add(addValues, false, true, true);
51
61
  setSelection([entity]);
52
62
  setIsEditorViewOnly(false);
53
63
  setEditorMode(EDITOR_MODE__ADD);
@@ -118,11 +128,15 @@ export default function withEditor(WrappedComponent) {
118
128
  } else if (selection.length > 1) {
119
129
  // Edit multiple entities
120
130
 
121
-
122
- debugger;
123
-
124
-
125
-
131
+ // Loop through all entities and change fields that are not null
132
+ const propertyNames = Object.getOwnPropertyNames(data);
133
+ _.each(propertyNames, (propertyName) => {
134
+ if (!_.isNil(data[propertyName])) {
135
+ _.each(what, (rec) => {
136
+ rec[propertyName] = data[propertyName]
137
+ });
138
+ }
139
+ });
126
140
  }
127
141
  await Repository.save();
128
142
  setIsEditorShown(false);
@@ -33,12 +33,6 @@ export default function withPresetButtons(WrappedComponent) {
33
33
  } = props,
34
34
  {
35
35
  // for local use
36
- selection,
37
- onAdd,
38
- onEdit,
39
- onDelete,
40
- onView,
41
- onDuplicate,
42
36
  useEditor = true,
43
37
  disableAdd = false,
44
38
  disableEdit = false,
@@ -51,6 +45,19 @@ export default function withPresetButtons(WrappedComponent) {
51
45
  // withEditor
52
46
  userCanEdit = true,
53
47
  userCanView = true,
48
+ onAdd,
49
+ onEdit,
50
+ onDelete,
51
+ onView,
52
+ onDuplicate,
53
+
54
+ // withSelection
55
+ selection,
56
+ setSelection,
57
+
58
+ // DataMgt
59
+ selectorId,
60
+ selectorSelected,
54
61
  } = props,
55
62
  [isReady, setIsReady] = useState(false),
56
63
  [localContextMenuItems, setLocalContextMenuItems] = useState([]),
@@ -210,7 +217,7 @@ export default function withPresetButtons(WrappedComponent) {
210
217
  if (!isReady) {
211
218
  setIsReady(true);
212
219
  }
213
- }, [selection, localColumnsConfig]);
220
+ }, [selection, selectorSelected, localColumnsConfig]);
214
221
 
215
222
  if (!isReady) {
216
223
  return null;
@@ -229,6 +236,7 @@ export default function withPresetButtons(WrappedComponent) {
229
236
  if (additionalToolbarButtons) {
230
237
  additionalToolbarButtonsToPass.concat(additionalToolbarButtons);
231
238
  }
239
+
232
240
  return <WrappedComponent
233
241
  {...propsToPass}
234
242
  contextMenuItems={contextMenuItemsToPass}
@@ -44,8 +44,8 @@ export default function DataMgt(props) {
44
44
  [isWestCollapsed, setIsWestCollapsed] = useState(westStartsCollapsed),
45
45
  [isEastCollapsed, setIsEastCollapsed] = useState(eastStartsCollapsed),
46
46
  [isFullscreen, setIsFullscreen] = useState(false),
47
- [westSelected, setWestSelectedRaw] = useState([]),
48
- [centerSelected, setCenterSelected] = useState([]),
47
+ [westSelected, setWestSelectedRaw] = useState(),
48
+ [centerSelected, setCenterSelected] = useState(),
49
49
  setWestSelected = (selected) => {
50
50
  setWestSelectedRaw(selected);
51
51
  setCenterSelected(); // clear selection in center
@@ -156,7 +156,7 @@ export default function DataMgt(props) {
156
156
  autoLoad={!showSelector}
157
157
  uniqueRepository={true}
158
158
  selectorId={showSelector ? westSelector_id : null}
159
- selectorSelected={westSelected}
159
+ selectorSelected={westSelected?.[0]}
160
160
  noSelectorMeansNoResults={centerNoSelectorMeansNoResults}
161
161
  onChangeSelection={setCenterSelected}
162
162
  onEvent={onEvent}
@@ -167,7 +167,7 @@ export default function DataMgt(props) {
167
167
  isFullscreen,
168
168
  showSelector,
169
169
  westSelected,
170
- westSelected?.hash,
170
+ westSelected?.[0].hash,
171
171
  centerNoSelectorMeansNoResults,
172
172
  // {...centerProps}
173
173
  ])
@@ -191,7 +191,7 @@ export default function DataMgt(props) {
191
191
  controlledByCenter = typeof associatedPanel.props.controlledByCenter === 'undefined' ? true : associatedPanel.props.controlledByCenter,
192
192
  thisAssociatedPanelProps = {
193
193
  selectorId: controlledByCenter ? centerSelector_id : westSelector_id,
194
- selectorSelected: controlledByCenter ? centerSelected : westSelected,
194
+ selectorSelected: controlledByCenter ? centerSelected?.[0] : westSelected?.[0],
195
195
  ...associatedPanel.props,
196
196
  };
197
197
  return React.cloneElement(associatedPanel, { key: ix, reference: 'associatedPanel' + ix, ...allAssociatedPanelProps, ...thisAssociatedPanelProps, });