@onehat/ui 0.2.56 → 0.2.58

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 (163) hide show
  1. package/cypress/plugins/index.js +2 -0
  2. package/cypress/support/commands.js +2 -0
  3. package/cypress/support/e2e.js +2 -0
  4. package/cypress.config.js +41 -0
  5. package/package.json +34 -25
  6. package/src/Components/Form/Form.js +1 -1
  7. package/src/Components/Grid/Grid.js +12 -5
  8. package/src/Components/Grid/GridHeaderRow.js +5 -2
  9. package/src/Components/Grid/GridRow.js +2 -0
  10. package/src/Components/Hoc/withContextMenu.js +1 -1
  11. package/src/Components/Messages/WaitMessage.js +19 -7
  12. package/src/Components/Tree/Tree.js +813 -0
  13. package/src/Components/Tree/TreeNode.js +95 -0
  14. package/src/Constants/Styles.js +4 -0
  15. package/src/Functions/BankersRound.js +1 -1
  16. package/src/Functions/getTokenHeaders.js +2 -2
  17. package/src/UiGlobals.js +6 -1
  18. package/src/Components/Icons/AddressBook.js +0 -14
  19. package/src/Components/Icons/Alt.js +0 -17
  20. package/src/Components/Icons/AngleLeft.js +0 -18
  21. package/src/Components/Icons/AngleRight.js +0 -18
  22. package/src/Components/Icons/AnglesLeft.js +0 -18
  23. package/src/Components/Icons/AnglesRight.js +0 -18
  24. package/src/Components/Icons/Asterisk.js +0 -14
  25. package/src/Components/Icons/Ban.js +0 -18
  26. package/src/Components/Icons/Bars.js +0 -14
  27. package/src/Components/Icons/BigCircle.js +0 -17
  28. package/src/Components/Icons/Book.js +0 -14
  29. package/src/Components/Icons/BookOpen.js +0 -14
  30. package/src/Components/Icons/Bug.js +0 -14
  31. package/src/Components/Icons/Building.js +0 -14
  32. package/src/Components/Icons/Calendar.js +0 -18
  33. package/src/Components/Icons/Calendar2.js +0 -18
  34. package/src/Components/Icons/CalendarDays.js +0 -18
  35. package/src/Components/Icons/Camera.js +0 -18
  36. package/src/Components/Icons/CaretDown.js +0 -18
  37. package/src/Components/Icons/CaretUp.js +0 -18
  38. package/src/Components/Icons/CartPlus.js +0 -14
  39. package/src/Components/Icons/CartShopping.js +0 -14
  40. package/src/Components/Icons/CashRegister.js +0 -14
  41. package/src/Components/Icons/ChartLine.js +0 -14
  42. package/src/Components/Icons/Check.js +0 -14
  43. package/src/Components/Icons/CheckDouble.js +0 -14
  44. package/src/Components/Icons/ChevronDown.js +0 -14
  45. package/src/Components/Icons/ChevronLeft.js +0 -14
  46. package/src/Components/Icons/ChevronRight.js +0 -14
  47. package/src/Components/Icons/ChevronUp.js +0 -14
  48. package/src/Components/Icons/CircleArrowRight.js +0 -14
  49. package/src/Components/Icons/CircleExclamation.js +0 -18
  50. package/src/Components/Icons/CircleInfo.js +0 -14
  51. package/src/Components/Icons/CircleQuestion.js +0 -14
  52. package/src/Components/Icons/CircleXmark.js +0 -14
  53. package/src/Components/Icons/CircleXmarkRegular.js +0 -14
  54. package/src/Components/Icons/Clipboard.js +0 -18
  55. package/src/Components/Icons/Clock.js +0 -14
  56. package/src/Components/Icons/ClockRegular.js +0 -14
  57. package/src/Components/Icons/ClockRotateLeft.js +0 -14
  58. package/src/Components/Icons/Clone.js +0 -14
  59. package/src/Components/Icons/Comment.js +0 -14
  60. package/src/Components/Icons/CommentRegular.js +0 -14
  61. package/src/Components/Icons/Comments.js +0 -14
  62. package/src/Components/Icons/CommentsRegular.js +0 -14
  63. package/src/Components/Icons/Copyright.js +0 -14
  64. package/src/Components/Icons/Duplicate.js +0 -18
  65. package/src/Components/Icons/Edit.js +0 -18
  66. package/src/Components/Icons/EllipsisVertical.js +0 -18
  67. package/src/Components/Icons/Envelope.js +0 -14
  68. package/src/Components/Icons/EnvelopeRegular.js +0 -14
  69. package/src/Components/Icons/Exclamation.js +0 -14
  70. package/src/Components/Icons/Expand.js +0 -14
  71. package/src/Components/Icons/Eye.js +0 -18
  72. package/src/Components/Icons/EyeSlash.js +0 -14
  73. package/src/Components/Icons/File.js +0 -18
  74. package/src/Components/Icons/FloppyDiskRegular.js +0 -14
  75. package/src/Components/Icons/Gear.js +0 -18
  76. package/src/Components/Icons/Gift.js +0 -14
  77. package/src/Components/Icons/Grip.js +0 -18
  78. package/src/Components/Icons/GripLines.js +0 -18
  79. package/src/Components/Icons/GripLinesVertical.js +0 -18
  80. package/src/Components/Icons/GripVertical.js +0 -18
  81. package/src/Components/Icons/Hammer.js +0 -14
  82. package/src/Components/Icons/Hand.js +0 -14
  83. package/src/Components/Icons/House.js +0 -14
  84. package/src/Components/Icons/Info.js +0 -14
  85. package/src/Components/Icons/ItunesNote.js +0 -14
  86. package/src/Components/Icons/List.js +0 -14
  87. package/src/Components/Icons/ListCheck.js +0 -14
  88. package/src/Components/Icons/LocationDot.js +0 -14
  89. package/src/Components/Icons/Loop.js +0 -17
  90. package/src/Components/Icons/Loop1.js +0 -18
  91. package/src/Components/Icons/LoopAll.js +0 -18
  92. package/src/Components/Icons/Maximize.js +0 -14
  93. package/src/Components/Icons/Microphone.js +0 -14
  94. package/src/Components/Icons/Minimize.js +0 -14
  95. package/src/Components/Icons/Minus.js +0 -18
  96. package/src/Components/Icons/MobileScreenButton.js +0 -14
  97. package/src/Components/Icons/MoneyBill.js +0 -14
  98. package/src/Components/Icons/MoneyBillWave.js +0 -14
  99. package/src/Components/Icons/Mouth.js +0 -24
  100. package/src/Components/Icons/Music.js +0 -14
  101. package/src/Components/Icons/Na.js +0 -17
  102. package/src/Components/Icons/NoLoop.js +0 -24
  103. package/src/Components/Icons/NoReorderRows.js +0 -25
  104. package/src/Components/Icons/ObjectGroupRegular.js +0 -14
  105. package/src/Components/Icons/Pause.js +0 -14
  106. package/src/Components/Icons/Pencil.js +0 -18
  107. package/src/Components/Icons/Phone.js +0 -14
  108. package/src/Components/Icons/Play.js +0 -14
  109. package/src/Components/Icons/Plus.js +0 -18
  110. package/src/Components/Icons/Presentation.js +0 -19
  111. package/src/Components/Icons/Print.js +0 -18
  112. package/src/Components/Icons/Question.js +0 -14
  113. package/src/Components/Icons/Rate-.25x.js +0 -20
  114. package/src/Components/Icons/Rate-.5x.js +0 -19
  115. package/src/Components/Icons/Rate-.75x.js +0 -19
  116. package/src/Components/Icons/Rate-1.25x.js +0 -20
  117. package/src/Components/Icons/Rate-1.5x.js +0 -19
  118. package/src/Components/Icons/Rate-1.75x.js +0 -19
  119. package/src/Components/Icons/Rate-1x.js +0 -19
  120. package/src/Components/Icons/Rate-2x.js +0 -19
  121. package/src/Components/Icons/RateIcon-.25x.js +0 -20
  122. package/src/Components/Icons/RateIcon-.5x.js +0 -19
  123. package/src/Components/Icons/RateIcon-.75x.js +0 -19
  124. package/src/Components/Icons/RateIcon-1.25x.js +0 -20
  125. package/src/Components/Icons/RateIcon-1.5x.js +0 -19
  126. package/src/Components/Icons/RateIcon-1.75x.js +0 -19
  127. package/src/Components/Icons/RateIcon-1x.js +0 -19
  128. package/src/Components/Icons/RateIcon-2x.js +0 -19
  129. package/src/Components/Icons/RectangleXmark.js +0 -14
  130. package/src/Components/Icons/RectangleXmarkRegular.js +0 -14
  131. package/src/Components/Icons/ReorderRows.js +0 -21
  132. package/src/Components/Icons/RightFromBracket.js +0 -14
  133. package/src/Components/Icons/RightToBracket.js +0 -14
  134. package/src/Components/Icons/Rotate.js +0 -18
  135. package/src/Components/Icons/RotateLeft.js +0 -14
  136. package/src/Components/Icons/RotateRight.js +0 -18
  137. package/src/Components/Icons/ScrewdriverWrench.js +0 -14
  138. package/src/Components/Icons/Scroll.js +0 -14
  139. package/src/Components/Icons/Share.js +0 -14
  140. package/src/Components/Icons/Shop.js +0 -14
  141. package/src/Components/Icons/SortDown.js +0 -14
  142. package/src/Components/Icons/SortUp.js +0 -18
  143. package/src/Components/Icons/Square.js +0 -14
  144. package/src/Components/Icons/SquareCheck.js +0 -14
  145. package/src/Components/Icons/SquareCheckRegular.js +0 -14
  146. package/src/Components/Icons/SquareMinus.js +0 -18
  147. package/src/Components/Icons/SquareRegular.js +0 -14
  148. package/src/Components/Icons/Store.js +0 -14
  149. package/src/Components/Icons/ThumbsDown.js +0 -14
  150. package/src/Components/Icons/ThumbsDownRegular.js +0 -14
  151. package/src/Components/Icons/ThumbsUp.js +0 -14
  152. package/src/Components/Icons/ThumbsUpRegular.js +0 -14
  153. package/src/Components/Icons/Trash.js +0 -18
  154. package/src/Components/Icons/TrashCan.js +0 -18
  155. package/src/Components/Icons/TriangleExclamation.js +0 -18
  156. package/src/Components/Icons/Truck.js +0 -14
  157. package/src/Components/Icons/TruckFast.js +0 -14
  158. package/src/Components/Icons/User.js +0 -14
  159. package/src/Components/Icons/UserGroup.js +0 -14
  160. package/src/Components/Icons/UserPlus.js +0 -14
  161. package/src/Components/Icons/UserSecret.js +0 -14
  162. package/src/Components/Icons/X.js +0 -14
  163. package/src/Components/Icons/Xmark.js +0 -14
@@ -0,0 +1,2 @@
1
+ module.exports = (on) => {
2
+ }
@@ -0,0 +1,2 @@
1
+ // https://on.cypress.io/custom-commands
2
+
@@ -0,0 +1,2 @@
1
+ // https://on.cypress.io/configuration
2
+ import './commands.js';
@@ -0,0 +1,41 @@
1
+ import { defineConfig } from "cypress";
2
+ import webpackPreprocessor from "@cypress/webpack-preprocessor";
3
+
4
+ export default defineConfig({
5
+ e2e: {
6
+ experimentalRunAllSpecs: true,
7
+ chromeWebSecurity: false,
8
+ setupNodeEvents(on) {
9
+ const options = webpackPreprocessor.defaultOptions;
10
+ if (!options.module) {
11
+ options.module = {
12
+ rules: [],
13
+ }
14
+ }
15
+ if (!options.module.rules) {
16
+ options.module.rules = [];
17
+ }
18
+ options.module.rules.push({
19
+ test: /\.(js|jsx|mjs)$/,
20
+ exclude: [/node_modules\/(?!(@onehat)\/).*/],
21
+ use: [{
22
+ loader: 'babel-loader',
23
+ options: {
24
+ cacheDirectory: false,
25
+ presets: [
26
+ '@babel/preset-env'
27
+ ],
28
+ plugins: [
29
+ '@babel/plugin-transform-class-properties',
30
+ '@babel/plugin-transform-runtime'
31
+ ],
32
+ sourceType: 'unambiguous',
33
+ },
34
+ }],
35
+
36
+ });
37
+
38
+ on('file:preprocessor', webpackPreprocessor(options));
39
+ },
40
+ }
41
+ });
package/package.json CHANGED
@@ -1,11 +1,17 @@
1
1
  {
2
2
  "name": "@onehat/ui",
3
- "version": "0.2.56",
3
+ "version": "0.2.58",
4
4
  "description": "Base UI for OneHat apps",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
7
7
  "scripts": {
8
- "test": "npx cypress open --config-file ../cypress.json"
8
+ "test": "npx cypress open",
9
+ "test2": "DEBUG=cypress:* npx cypress open",
10
+ "docs": "jsdoc -c ./jsdoc.json -t ./node_modules/ink-docstrap/template -R README.md"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/OneHatRepo/ui.git"
9
15
  },
10
16
  "keywords": [
11
17
  "onehat",
@@ -19,35 +25,38 @@
19
25
  },
20
26
  "license": "UNLICENSED",
21
27
  "dependencies": {
22
- "@onehat/data": "^1.17.0",
23
- "@hookform/resolvers": "^2.9.11",
28
+ "@onehat/data": "^1.17.3",
29
+ "@hookform/resolvers": "^3.1.0",
24
30
  "@k-renwick/colour-mixer": "^1.2.1",
25
- "ckeditor5-custom-build": "file:ckeditor5",
26
- "js-cookie": "^3.0.1",
27
- "native-base": "^3.4.25",
28
- "react-hook-form": "^7.43.1"
31
+ "js-cookie": "^3.0.5",
32
+ "native-base": "^3.4.28",
33
+ "react-hook-form": "^7.44.3",
34
+ "yup": "^1.2.0"
29
35
  },
30
36
  "peerDependencies": {
31
- "@ckeditor/ckeditor5-react": "^5.0.6",
32
- "react": "*",
33
- "react-color": "^2.19.3",
34
- "react-datetime": "^3.2.0",
35
- "react-draggable": "^4.4.5",
36
- "react-native-draggable": "^3.3.0",
37
- "react-dom": "*",
38
- "react-native": "*"
37
+ "ckeditor5-custom-build": "file:ckeditor5",
38
+ "react": "*",
39
+ "react-color": "^2.19.3",
40
+ "react-datetime": "^3.2.0",
41
+ "react-draggable": "^4.4.5",
42
+ "react-native-draggable": "^3.3.0",
43
+ "react-dom": "*",
44
+ "react-native": "*"
39
45
  },
40
46
  "devDependencies": {
41
- "@babel/core": "^7.21.0",
42
- "@babel/node": "^7.20.7",
43
- "@babel/plugin-proposal-class-properties": "^7.18.6",
44
- "@babel/plugin-transform-runtime": "^7.21.0",
45
- "@babel/preset-env": "^7.20.2",
47
+ "@babel/core": "^7.22.1",
48
+ "@babel/node": "^7.22.1",
49
+ "@babel/plugin-transform-class-properties": "^7.22.3",
50
+ "@babel/plugin-transform-runtime": "^7.22.4",
51
+ "@babel/preset-env": "^7.22.4",
46
52
  "@babel/register": "^7.21.0",
47
- "@babel/runtime": "^7.21.0",
48
- "@cypress/webpack-preprocessor": "^5.17.0",
53
+ "@babel/runtime": "^7.22.3",
54
+ "@ckeditor/ckeditor5-react": "^5.0.6",
55
+ "@cypress/webpack-preprocessor": "^5.17.1",
49
56
  "babel-loader": "^9.1.2",
50
- "cypress": "^12.6.0",
51
- "webpack": "^5.75.0"
57
+ "cypress": "12.13.0",
58
+ "ink-docstrap": "^1.3.2",
59
+ "jsdoc": "^4.0.2",
60
+ "webpack": "^5.85.0"
52
61
  }
53
62
  }
@@ -388,7 +388,7 @@ function Form(props) {
388
388
  if (defaults?.labelWidth) {
389
389
  labelProps.w = defaults.labelWidth;
390
390
  }
391
- element = <Row w="100%">
391
+ element = <Row w="100%" py={1}>
392
392
  <Label {...labelProps}>{label}</Label>
393
393
  {element}
394
394
  </Row>;
@@ -143,7 +143,7 @@ export function Grid(props) {
143
143
  onChangeColumnsConfig(config);
144
144
  }
145
145
  },
146
- onRowClick = (item, rowIndex, e) => {
146
+ onRowClick = (item, e) => {
147
147
  const
148
148
  {
149
149
  shiftKey,
@@ -276,19 +276,22 @@ export function Grid(props) {
276
276
  return <Pressable
277
277
  // {...testProps(Repository ? Repository.schema.name + '-' + item.id : item.id)}
278
278
  onPress={(e) => {
279
+ if (e.preventDefault && e.cancelable) {
280
+ e.preventDefault();
281
+ }
279
282
  if (isHeaderRow || isReorderMode) {
280
283
  return
281
284
  }
282
285
  switch (e.detail) {
283
286
  case 1: // single click
284
- onRowClick(item, index, e); // sets selection
287
+ onRowClick(item, e); // sets selection
285
288
  if (onEditorRowClick) {
286
289
  onEditorRowClick(item, index, e);
287
290
  }
288
291
  break;
289
292
  case 2: // double click
290
293
  if (!isSelected) { // If a row was already selected when double-clicked, the first click will deselect it,
291
- onRowClick(item, index, e); // so reselect it
294
+ onRowClick(item, e); // so reselect it
292
295
  }
293
296
  if (onEdit) {
294
297
  onEdit();
@@ -300,9 +303,13 @@ export function Grid(props) {
300
303
  }
301
304
  }}
302
305
  onLongPress={(e) => {
306
+ if (e.preventDefault && e.cancelable) {
307
+ e.preventDefault();
308
+ }
303
309
  if (isHeaderRow || isReorderMode) {
304
310
  return
305
311
  }
312
+
306
313
  // context menu
307
314
  const selection = [item];
308
315
  setSelection(selection);
@@ -310,7 +317,7 @@ export function Grid(props) {
310
317
  onEditorRowClick(item, index, e);
311
318
  }
312
319
  if (onContextMenu) {
313
- onContextMenu(item, index, e, selection, setSelection);
320
+ onContextMenu(item, e, selection, setSelection);
314
321
  }
315
322
  }}
316
323
  flexDirection="row"
@@ -737,7 +744,7 @@ export function Grid(props) {
737
744
  Repository.off('changeFilters', onChangeFilters);
738
745
  Repository.off('changeSorters', onChangeSorters);
739
746
  };
740
- }, [deselectAll]);
747
+ }, []);
741
748
 
742
749
  useEffect(() => {
743
750
  if (!Repository) {
@@ -319,6 +319,9 @@ export default function GridHeaderRow(props) {
319
319
  return <Pressable
320
320
  key={ix}
321
321
  onPress={(e) => {
322
+ if (e.preventDefault) {
323
+ e.preventDefault();
324
+ }
322
325
  if (isBlocked.current) { // withDraggable initiates block
323
326
  return;
324
327
  }
@@ -369,8 +372,8 @@ export default function GridHeaderRow(props) {
369
372
  textOverflow="ellipsis"
370
373
  flex={1}
371
374
  h="100%"
372
- px={2}
373
- py={2}
375
+ px={styles.GRID_HEADER_CELL_PX}
376
+ py={styles.GRID_HEADER_CELL_PY}
374
377
  alignItems="center"
375
378
  justifyContent="center"
376
379
  numberOfLines={1}
@@ -100,6 +100,8 @@ export default function GridRow(props) {
100
100
  alignSelf="center"
101
101
  style={{ userSelect: 'none', }}
102
102
  fontSize={styles.GRID_CELL_FONTSIZE}
103
+ px={styles.GRID_CELL_PX}
104
+ py={styles.GRID_CELL_PY}
103
105
  numberOfLines={1}
104
106
  ellipsizeMode="head"
105
107
  {...propsToPass}
@@ -30,7 +30,7 @@ export default function withContextMenu(WrappedComponent) {
30
30
  [contextMenuX, setContextMenuX] = useState(0),
31
31
  [contextMenuY, setContextMenuY] = useState(0),
32
32
  [contextMenuItemComponents, setContextMenuItemComponents] = useState([]),
33
- onContextMenu = (entity, rowIx, e, selection, setSelection) => {
33
+ onContextMenu = (entity, e, selection, setSelection) => {
34
34
  if (disableContextMenu) {
35
35
  return;
36
36
  }
@@ -1,4 +1,6 @@
1
- import {
1
+ import {
2
+ Button,
3
+ Modal,
2
4
  Row,
3
5
  Text,
4
6
  } from 'native-base';
@@ -9,10 +11,20 @@ export default function WaitMessage(props) {
9
11
  textMessage = 'Please wait...',
10
12
  } = props;
11
13
 
12
- return <Row position="absolute" width="100%" top="40" left="0" _backdrop={{ bg: "#000" }} justifyContent="center" alignItems="center" pb={20} {...props}>
13
- <Row bg="#fff" p={3} width="50%" justifyContent="center" alignItems="center" borderColor="#000" borderRadius={5}>
14
- <Loading minHeight="auto" h={5} w={5} mr={2} />
15
- <Text color="#000">{textMessage}</Text>
16
- </Row>
17
- </Row>;
14
+ return <Modal {...props} _backdrop={{ bg: "#000" }}>
15
+ <Modal.Content>
16
+ <Modal.Body
17
+ borderTopWidth={0}
18
+ bg="#fff"
19
+ p={3}
20
+ justifyContent="center"
21
+ alignItems="center"
22
+ borderRadius={5}
23
+ flexDirection="row"
24
+ >
25
+ <Loading minHeight="auto" h={5} w={5} mr={2} />
26
+ <Text color="#000">{textMessage}</Text>
27
+ </Modal.Body>
28
+ </Modal.Content>
29
+ </Modal>;
18
30
  }