@onehat/ui 0.3.343 → 0.3.345

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.343",
3
+ "version": "0.3.345",
4
4
  "description": "Base UI for OneHat apps",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -1,7 +1,5 @@
1
- import React, { useState, useEffect, useRef, } from 'react';
2
1
  import {
3
2
  Row,
4
- Text,
5
3
  Tooltip,
6
4
  } from 'native-base';
7
5
  import {
@@ -11,7 +9,6 @@ import {
11
9
  import UiGlobals from '../../../UiGlobals.js';
12
10
  import withComponent from '../../Hoc/withComponent.js';
13
11
  import withValue from '../../Hoc/withValue.js';
14
- import testProps from '../../../Functions/testProps.js';
15
12
  import getComponentFromType from '../../../Functions/getComponentFromType.js';
16
13
  import _ from 'lodash';
17
14
 
@@ -45,6 +42,7 @@ export function JsonElement(props) {
45
42
  flex={1}
46
43
  {...propsToPass}
47
44
  justifyContent="flex-start"
45
+ testID={testID}
48
46
  >
49
47
  <JsonEditor
50
48
  width="100%"
@@ -55,6 +53,7 @@ export function JsonElement(props) {
55
53
  onEdit={(obj) => {
56
54
  setValue(JSON.stringify(obj.updated_src));
57
55
  }}
56
+ {...props}
58
57
  />
59
58
  </Row>;
60
59
 
@@ -73,6 +73,11 @@ import Inflector from 'inflector-js';
73
73
  import _ from 'lodash';
74
74
  const $ = Cypress.$;
75
75
 
76
+ export const WINDOWED = 'WINDOWED';
77
+ export const INLINE = 'INLINE';
78
+ export const SIDE = 'SIDE';
79
+ export const FULL = 'FULL';
80
+
76
81
 
77
82
  // Form fields
78
83
  export function crudCombo(selector, newData, editData, schema, ancillaryData, level = 0) {
@@ -108,6 +113,13 @@ export function crudTag(selector, newData, editData, schema, ancillaryData, leve
108
113
 
109
114
  clickTrigger(selector);
110
115
  }
116
+ export function crudJson(selector, newData, editData, schema, ancillaryData, level = 0) {
117
+ cy.then(() => {
118
+ Cypress.log({ name: 'crudJson' });
119
+ });
120
+
121
+ // do nothing for now
122
+ }
111
123
 
112
124
 
113
125
  // Grid
@@ -194,7 +206,7 @@ export function crudSideGridRecord(gridSelector, newData, editData, schema, anci
194
206
  verifyGridRecordExistsById(gridSelector, id);
195
207
 
196
208
  // edit
197
- editGridRecord(gridSelector, editData, schema, id);
209
+ editGridRecord(gridSelector, editData, schema, id, 0, SIDE);
198
210
 
199
211
  // delete
200
212
  verifyGridRecordExistsById(gridSelector, id);
@@ -290,7 +302,7 @@ export function addInlineGridRecord(gridSelector, fieldValues, schema, ancillary
290
302
  cy.wait(500); // allow window to close
291
303
  // TODO: Change this to wait until window is closed
292
304
  }
293
- export function editGridRecord(gridSelector, fieldValues, schema, id, level = 0) {
305
+ export function editGridRecord(gridSelector, fieldValues, schema, id, level = 0, whichEditor = WINDOWED) {
294
306
 
295
307
  cy.then(() => {
296
308
  Cypress.log({ name: 'editGridRecord ' + gridSelector + ' ' + id});
@@ -303,13 +315,12 @@ export function editGridRecord(gridSelector, fieldValues, schema, id, level = 0)
303
315
  viewerSelector = editorSelector + '/viewer',
304
316
  formSelector = editorSelector + '/form';
305
317
 
306
- const gridName = getLastPartOfPath(gridSelector);
307
- if (gridName.match(/SideGrid/)) { // as opposed to 'SideA' -- we want the side editor, not particular sides of another editor
308
- // side editor
309
- // switch to Edit mode if necessary
318
+ if (whichEditor === SIDE) {
319
+ Cypress.log({ name: 'switch to Edit mode if necessary ' + viewerSelector});
310
320
  clickToEditButtonIfExists(viewerSelector);
311
321
  } else {
312
322
  // windowed or inline editor
323
+ Cypress.log({ name: 'click editBtn ' + gridSelector});
313
324
  clickEditButton(gridSelector);
314
325
  }
315
326
  cy.wait(1500); // allow form to build
@@ -334,7 +345,7 @@ export function editWindowedGridRecord(gridSelector, fieldValues, schema, id, le
334
345
  Cypress.log({ name: 'editWindowedGridRecord ' + gridSelector + ' ' + id});
335
346
  });
336
347
 
337
- editGridRecord(gridSelector, fieldValues, schema, id, level);
348
+ editGridRecord(gridSelector, fieldValues, schema, id, level, WINDOWED);
338
349
 
339
350
  const formSelector = gridSelector + '/editor/form';
340
351
  clickCloseButton(formSelector);
@@ -348,7 +359,7 @@ export function editInlineGridRecord(gridSelector, fieldValues, schema, id, leve
348
359
  Cypress.log({ name: 'editWindowedGridRecord ' + gridSelector + ' ' + id});
349
360
  });
350
361
 
351
- editGridRecord(gridSelector, fieldValues, schema, id, level);
362
+ editGridRecord(gridSelector, fieldValues, schema, id, level, INLINE);
352
363
 
353
364
  const formSelector = gridSelector + '/editor/form';
354
365
  clickCloseButton(formSelector);
@@ -427,7 +438,7 @@ export function crudWindowedTreeRecord(treeSelector, newData, editData, schema,
427
438
  verifyTreeRecordExistsById(treeSelector, id);
428
439
 
429
440
  // edit
430
- editWindowedTreeRecord(treeSelector, editData, schema, id);
441
+ editWindowedTreeRecord(treeSelector, editData, schema, id, level);
431
442
 
432
443
  // delete
433
444
  verifyTreeRecordExistsById(treeSelector, id);
@@ -456,7 +467,7 @@ export function crudSideTreeRecord(treeSelector, newData, editData, schema, anci
456
467
  verifyTreeRecordExistsById(treeSelector, id);
457
468
 
458
469
  // edit
459
- editTreeRecord(treeSelector, editData, schema, id);
470
+ editTreeRecord(treeSelector, editData, schema, id, level, SIDE);
460
471
 
461
472
  // delete
462
473
  verifyTreeRecordExistsById(treeSelector, id);
@@ -546,7 +557,7 @@ export function addWindowedTreeRecord(treeSelector, fieldValues, schema, ancilla
546
557
  cy.wait(500); // allow window to close
547
558
  // TODO: Change this to wait until window is closed
548
559
  }
549
- export function editTreeRecord(treeSelector, fieldValues, schema, id, level = 0) {
560
+ export function editTreeRecord(treeSelector, fieldValues, schema, id, level = 0, whichEditor = WINDOWED) {
550
561
 
551
562
  cy.then(() => {
552
563
  Cypress.log({ name: 'editTreeRecord ' + treeSelector + ' ' + id});
@@ -559,13 +570,11 @@ export function editTreeRecord(treeSelector, fieldValues, schema, id, level = 0)
559
570
  viewerSelector = editorSelector + '/viewer',
560
571
  formSelector = editorSelector + '/form';
561
572
 
562
- const treeName = getLastPartOfPath(treeSelector);
563
- if (treeName.match(/SideTree/)) { // as opposed to 'SideA' -- we want the side editor, not particular sides of another editor
564
- // side editor
565
- // switch to Edit mode if necessary
573
+ if (whichEditor === SIDE) {
574
+ Cypress.log({ name: 'switch to Edit mode if necessary ' + viewerSelector});
566
575
  clickToEditButtonIfExists(viewerSelector);
567
576
  } else {
568
- // windowed or inline editor
577
+ Cypress.log({ name: 'click editBtn ' + treeSelector});
569
578
  clickEditButton(treeSelector);
570
579
  }
571
580
  cy.wait(1500); // allow form to build
@@ -590,7 +599,7 @@ export function editWindowedTreeRecord(treeSelector, fieldValues, schema, id, le
590
599
  Cypress.log({ name: 'editWindowedTreeRecord ' + treeSelector + ' ' + id});
591
600
  });
592
601
 
593
- editTreeRecord(treeSelector, fieldValues, schema, id, level);
602
+ editTreeRecord(treeSelector, fieldValues, schema, id, level, WINDOWED);
594
603
 
595
604
  const formSelector = treeSelector + '/editor/form';
596
605
  clickCloseButton(formSelector);
@@ -707,9 +716,16 @@ export function runClosureTreeControlledManagerScreenCrudTests(model, schema, ne
707
716
  });
708
717
 
709
718
  }
710
- export function runClosureTreeManagerScreenCrudTests(model, schema, newData, editData, ancillaryData) {
711
-
712
- const
719
+ export function runClosureTreeManagerScreenCrudTests(args) {
720
+
721
+ const {
722
+ model,
723
+ schema,
724
+ newData,
725
+ editData,
726
+ ancillaryData,
727
+ skip = null,
728
+ } = args,
713
729
  Models = fixInflector(Inflector.camelize(Inflector.pluralize(model))),
714
730
  url = fixInflector(Inflector.dasherize(Inflector.underscore(Models)));
715
731
 
@@ -730,90 +746,50 @@ export function runClosureTreeManagerScreenCrudTests(model, schema, newData, edi
730
746
  // logout();
731
747
  // });
732
748
 
733
- it('CRUD in full mode', function() {
734
-
735
- const
736
- managerSelector = '/' + Models + 'Manager',
737
- treeSelector = '/' + Models + 'TreeEditor';
738
-
739
- toFullMode(managerSelector);
740
- cy.wait(500); // wait for grid to load
741
-
742
- crudWindowedTreeRecord(treeSelector, newData, editData, schema, ancillaryData);
743
-
744
- });
745
-
746
- it('CRUD in side mode', function() {
747
-
748
- const
749
- managerSelector = '/' + Models + 'Manager',
750
- treeSelector = '/' + Models + 'TreeEditor';
751
-
752
- toSideMode(managerSelector);
753
- cy.wait(1000); // wait for grid to load
754
-
755
- crudSideTreeRecord(treeSelector, newData, editData, schema, ancillaryData);
756
-
757
- });
749
+ if (skip !== FULL) {
750
+ it('CRUD in full mode', function() {
758
751
 
759
- });
752
+ const
753
+ managerSelector = '/' + Models + 'Manager',
754
+ treeSelector = '/' + Models + 'TreeEditor';
760
755
 
761
- }
762
- export function runInlineManagerScreenCrudTests(model, schema, newData, editData, ancillaryData) {
763
-
764
- const
765
- Models = fixInflector(Inflector.camelize(Inflector.pluralize(model))),
766
- url = fixInflector(Inflector.dasherize(Inflector.underscore(Models)));
756
+ toFullMode(managerSelector);
757
+ cy.wait(500); // wait for grid to load
767
758
 
768
- describe(Models + 'Manager', () => {
759
+ crudWindowedTreeRecord(treeSelector, newData, editData, schema, ancillaryData);
769
760
 
770
- beforeEach(function () {
771
- login();
772
- cy.restoreLocalStorage();
773
- cy.url().then((currentUrl) => {
774
- if (!currentUrl.endsWith(url)) {
775
- navigateViaTabOrHomeButtonTo(url);
776
- }
777
761
  });
778
- });
779
-
780
- afterEach(function () {
781
- cy.saveLocalStorage();
782
- logout();
783
- });
784
-
785
- it('CRUD with inline editor in full mode', function() {
786
-
787
- const
788
- managerSelector = '/' + Models + 'Manager',
789
- gridSelector = '/' + Models + 'GridEditor';
790
-
791
- toFullMode(managerSelector);
792
- cy.wait(500); // wait for grid to load
793
-
794
- crudInlineGridRecord(gridSelector, newData, editData, schema, ancillaryData);
795
-
796
- });
762
+ }
797
763
 
798
- it('CRUD in side mode', function() {
764
+ if (skip !== SIDE) {
765
+ it('CRUD in side mode', function() {
799
766
 
800
- const
801
- managerSelector = '/' + Models + 'Manager',
802
- gridSelector = '/' + Models + 'GridEditor';
767
+ const
768
+ managerSelector = '/' + Models + 'Manager',
769
+ treeSelector = '/' + Models + 'TreeEditor';
803
770
 
804
- toSideMode(managerSelector);
805
- cy.wait(1000); // wait for grid to load
771
+ toSideMode(managerSelector);
772
+ cy.wait(1000); // wait for grid to load
806
773
 
807
- crudSideGridRecord(gridSelector, newData, editData, schema, ancillaryData);
774
+ crudSideTreeRecord(treeSelector, newData, editData, schema, ancillaryData);
808
775
 
809
- });
776
+ });
777
+ }
810
778
 
811
779
  });
812
780
 
813
781
  }
814
- export function runManagerScreenCrudTests(model, schema, newData, editData, ancillaryData) {
815
-
816
- const
782
+ export function runManagerScreenCrudTests(args) {
783
+
784
+ const {
785
+ model,
786
+ schema,
787
+ newData,
788
+ editData,
789
+ ancillaryData,
790
+ fullIsInline = false,
791
+ skip = null,
792
+ } = args,
817
793
  Models = fixInflector(Inflector.camelize(Inflector.pluralize(model))),
818
794
  url = fixInflector(Inflector.dasherize(Inflector.underscore(Models)));
819
795
 
@@ -834,31 +810,39 @@ export function runManagerScreenCrudTests(model, schema, newData, editData, anci
834
810
  // logout();
835
811
  // });
836
812
 
837
- it('CRUD in full mode', function() {
838
-
839
- const
840
- managerSelector = '/' + Models + 'Manager',
841
- gridSelector = '/' + Models + 'GridEditor';
842
-
843
- toFullMode(managerSelector);
844
- cy.wait(500); // wait for grid to load
845
-
846
- crudWindowedGridRecord(gridSelector, newData, editData, schema, ancillaryData);
847
-
848
- });
849
-
850
- it('CRUD in side mode', function() {
851
-
852
- const
853
- managerSelector = '/' + Models + 'Manager',
854
- gridSelector = '/' + Models + 'GridEditor';
855
-
856
- toSideMode(managerSelector);
857
- cy.wait(1000); // wait for grid to load
858
-
859
- crudSideGridRecord(gridSelector, newData, editData, schema, ancillaryData);
813
+ if (skip !== FULL) {
814
+ it('CRUD in full mode', function() {
815
+
816
+ const
817
+ managerSelector = '/' + Models + 'Manager',
818
+ gridSelector = '/' + Models + 'GridEditor';
819
+
820
+ toFullMode(managerSelector);
821
+ cy.wait(500); // wait for grid to load
822
+
823
+ if (fullIsInline) {
824
+ crudInlineGridRecord(gridSelector, newData, editData, schema, ancillaryData);
825
+ } else {
826
+ crudWindowedGridRecord(gridSelector, newData, editData, schema, ancillaryData);
827
+ }
828
+
829
+ });
830
+ }
860
831
 
861
- });
832
+ if (skip !== SIDE) {
833
+ it('CRUD in side mode', function() {
834
+
835
+ const
836
+ managerSelector = '/' + Models + 'Manager',
837
+ gridSelector = '/' + Models + 'GridEditor';
838
+
839
+ toSideMode(managerSelector);
840
+ cy.wait(1000); // wait for grid to load
841
+
842
+ crudSideGridRecord(gridSelector, newData, editData, schema, ancillaryData);
843
+
844
+ });
845
+ }
862
846
 
863
847
  });
864
848
 
@@ -10,6 +10,7 @@ import {
10
10
  import {
11
11
  crudCombo,
12
12
  crudTag,
13
+ crudJson,
13
14
  } from './crud_functions.js';
14
15
  import natsort from 'natsort';
15
16
  import _ from 'lodash';
@@ -88,6 +89,9 @@ export function fillForm(selector, fieldValues, schema, level = 0) {
88
89
  } else
89
90
  if (editorType === 'File') {
90
91
  // setFileValue(selectors, value);
92
+ } else
93
+ if (editorType === 'Json') {
94
+ // do nothing for now
91
95
  } else {
92
96
  const editorFn = customFormFunctions.getCustomEditorSetFn(editorType);
93
97
  if (editorFn) {