@onehat/ui 0.3.234 → 0.3.236

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.3.234",
3
+ "version": "0.3.236",
4
4
  "description": "Base UI for OneHat apps",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -205,7 +205,7 @@ function GridComponent(props) {
205
205
  isAddingRef = useRef(),
206
206
  expandedRowsRef = useRef({}),
207
207
  cachedDragElements = useRef(),
208
- idsRef = useRef([]),
208
+ dragSelectionRef = useRef([]),
209
209
  [isInited, setIsInited] = useState(false),
210
210
  [isReady, setIsReady] = useState(false),
211
211
  [isLoading, setIsLoading] = useState(false),
@@ -449,9 +449,8 @@ function GridComponent(props) {
449
449
  let WhichRow = GridRow;
450
450
  if (CURRENT_MODE === UI_MODE_WEB) { // DND is currrently web-only TODO: implement for RN
451
451
  // Create a method that gets an always-current copy of the selection ids
452
- const ids = _.map(selection, (item) => item.id);
453
- idsRef.current = ids;
454
- const getIds = () => idsRef.current;
452
+ dragSelectionRef.current = selection;
453
+ const getSelection = () => dragSelectionRef.current;
455
454
 
456
455
  // assign event handlers
457
456
  if (canRowsReorder && isDragMode) {
@@ -461,7 +460,7 @@ function GridComponent(props) {
461
460
  const dragIx = showHeaders ? index - 1 : index;
462
461
  rowReorderProps.dragSourceItem = {
463
462
  id: item.id,
464
- getIds,
463
+ getSelection,
465
464
  onDrag: (dragState) => {
466
465
  onRowReorderDrag(dragState, dragIx);
467
466
  },
@@ -474,11 +473,11 @@ function GridComponent(props) {
474
473
  rowDragProps.isDragSource = true;
475
474
  rowDragProps.dragSourceType = rowDragSourceType;
476
475
  if (getRowDragSourceItem) {
477
- rowDragProps.dragSourceItem = getRowDragSourceItem(item, getIds, rowDragSourceType);
476
+ rowDragProps.dragSourceItem = getRowDragSourceItem(item, getSelection, rowDragSourceType);
478
477
  } else {
479
478
  rowDragProps.dragSourceItem = {
480
479
  id: item.id,
481
- getIds,
480
+ getSelection,
482
481
  type: rowDragSourceType,
483
482
  };
484
483
  }
@@ -6,6 +6,7 @@ import {
6
6
  EDITOR_MODE__VIEW,
7
7
  EDITOR_MODE__ADD,
8
8
  EDITOR_MODE__EDIT,
9
+ EDITOR_TYPE__SIDE,
9
10
  } from '../../Constants/Editor.js';
10
11
  import UiGlobals from '../../UiGlobals.js';
11
12
  import _ from 'lodash';
@@ -34,6 +35,7 @@ export default function withEditor(WrappedComponent, isTree = false) {
34
35
  }
35
36
  return 'record' + (selection[0].displayValue ? ' "' + selection[0].displayValue + '"' : '') + '?';
36
37
  },
38
+ editorType,
37
39
  onAdd,
38
40
  onChange, // any kind of crud change
39
41
  onDelete,
@@ -437,23 +439,28 @@ export default function withEditor(WrappedComponent, isTree = false) {
437
439
 
438
440
  // calculateEditorMode gets called only on selection changes
439
441
  let mode;
440
- if (isIgnoreNextSelectionChange) {
441
- mode = editorMode;
442
- if (!canEditorViewOnly && userCanEdit) {
443
- if (selection.length > 1) {
444
- if (!disableEdit) {
445
- // For multiple entities selected, change it to edit multiple mode
446
- mode = EDITOR_MODE__EDIT;
447
- }
448
- } else if (selection.length === 1 && !selection[0].isDestroyed && selection[0].isPhantom) {
449
- if (!disableAdd) {
450
- // When a phantom entity is selected, change it to add mode.
451
- mode = EDITOR_MODE__ADD;
442
+ if (editorType === EDITOR_TYPE__SIDE && !_.isNil(UiGlobals.isSideEditorAlwaysEditMode) && UiGlobals.isSideEditorAlwaysEditMode) {
443
+ // special case: side editor is always edit mode
444
+ mode = EDITOR_MODE__EDIT;
445
+ } else {
446
+ if (isIgnoreNextSelectionChange) {
447
+ mode = editorMode;
448
+ if (!canEditorViewOnly && userCanEdit) {
449
+ if (selection.length > 1) {
450
+ if (!disableEdit) {
451
+ // For multiple entities selected, change it to edit multiple mode
452
+ mode = EDITOR_MODE__EDIT;
453
+ }
454
+ } else if (selection.length === 1 && !selection[0].isDestroyed && selection[0].isPhantom) {
455
+ if (!disableAdd) {
456
+ // When a phantom entity is selected, change it to add mode.
457
+ mode = EDITOR_MODE__ADD;
458
+ }
452
459
  }
453
460
  }
461
+ } else {
462
+ mode = selection.length > 1 ? EDITOR_MODE__EDIT : EDITOR_MODE__VIEW;
454
463
  }
455
- } else {
456
- mode = selection.length > 1 ? EDITOR_MODE__EDIT : EDITOR_MODE__VIEW;
457
464
  }
458
465
  return mode;
459
466
  },
@@ -18,8 +18,23 @@ import Form from '../Form/Form.js';
18
18
  import withEditor from './withEditor.js';
19
19
  import _ from 'lodash';
20
20
 
21
+
22
+
23
+ function withAdditionalProps(WrappedComponent) {
24
+ return (props) => {
25
+ // provide the editorType to withEditor
26
+ return <WrappedComponent
27
+ editorType={EDITOR_TYPE__INLINE}
28
+ {...props}
29
+ />;
30
+ };
31
+ }
32
+
33
+ // NOTE: Effectivtly, the HOC composition is:
34
+ // withAdditionalProps(withEditor(withWindowedEditor))
35
+
21
36
  export default function withInlineEditor(WrappedComponent) {
22
- return withEditor((props) => {
37
+ return withAdditionalProps(withEditor((props) => {
23
38
  const {
24
39
  editorType,
25
40
  isEditorShown = false,
@@ -147,5 +162,5 @@ export default function withInlineEditor(WrappedComponent) {
147
162
  inlineEditor={inlineEditor}
148
163
  isInlineEditorShown={isEditorShown}
149
164
  />;
150
- });
165
+ }));
151
166
  }
@@ -6,8 +6,21 @@ import withEditor from './withEditor.js';
6
6
  import _ from 'lodash';
7
7
 
8
8
 
9
+ function withAdditionalProps(WrappedComponent) {
10
+ return (props) => {
11
+ // provide the editorType to withEditor
12
+ return <WrappedComponent
13
+ editorType={EDITOR_TYPE__SIDE}
14
+ {...props}
15
+ />;
16
+ };
17
+ }
18
+
19
+ // NOTE: Effectivtly, the HOC composition is:
20
+ // withAdditionalProps(withEditor(withSideEditor))
21
+
9
22
  export default function withSideEditor(WrappedComponent, isTree = false) {
10
- return withEditor((props) => {
23
+ return withAdditionalProps(withEditor((props) => {
11
24
  const {
12
25
  Editor,
13
26
  editorProps = {},
@@ -44,5 +57,5 @@ export default function withSideEditor(WrappedComponent, isTree = false) {
44
57
  reference="editor"
45
58
  />}
46
59
  />;
47
- });
60
+ }));
48
61
  }
@@ -25,8 +25,24 @@ import _ from 'lodash';
25
25
  // then switch position to absolute, draggable area would be header of panel
26
26
  // const DraggableColumn = withAdditionalProps(withDraggable(Column));
27
27
 
28
+
29
+
30
+
31
+ function withAdditionalProps(WrappedComponent) {
32
+ return (props) => {
33
+ // provide the editorType to withEditor
34
+ return <WrappedComponent
35
+ editorType={EDITOR_TYPE__WINDOWED}
36
+ {...props}
37
+ />;
38
+ };
39
+ }
40
+
41
+ // NOTE: Effectivtly, the HOC composition is:
42
+ // withAdditionalProps(withEditor(withWindowedEditor))
43
+
28
44
  export default function withWindowedEditor(WrappedComponent, isTree = false) {
29
- return withEditor((props) => {
45
+ return withAdditionalProps(withEditor((props) => {
30
46
  const {
31
47
  isEditorShown = false,
32
48
  setIsEditorShown,
@@ -65,5 +81,5 @@ export default function withWindowedEditor(WrappedComponent, isTree = false) {
65
81
  />
66
82
  </Modal>}
67
83
  </>;
68
- }, isTree);
84
+ }, isTree));
69
85
  }