nexus-shared 3.0.0 → 3.2.0

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 (162) hide show
  1. package/CHANGELOG.md +442 -0
  2. package/README.md +1123 -1000
  3. package/dist/Client.Index.d.ts +6 -0
  4. package/dist/Client.Index.js +6 -0
  5. package/dist/Components/Chats/ChatParts.d.ts +2 -2
  6. package/dist/Components/Chats/ChatParts.js +3 -7
  7. package/dist/Components/Chats/ChatThread.js +3 -3
  8. package/dist/Components/Documents/Button.d.ts +6 -1
  9. package/dist/Components/Documents/Button.js +2 -2
  10. package/dist/Components/Documents/Menu.js +21 -9
  11. package/dist/Components/Documents/SplitButton.d.ts +3 -1
  12. package/dist/Components/Documents/SplitButton.js +7 -5
  13. package/dist/Components/Documents/TabButtons.d.ts +5 -2
  14. package/dist/Components/Documents/TabButtons.js +2 -2
  15. package/dist/Components/Forms/ApiForm.d.ts +1 -1
  16. package/dist/Components/Forms/ApiForm.js +1 -1
  17. package/dist/Components/Forms/Crud.js +486 -206
  18. package/dist/Components/Forms/CrudHistory.d.ts +66 -0
  19. package/dist/Components/Forms/CrudHistory.js +140 -0
  20. package/dist/Components/Forms/CrudParts.d.ts +5 -1
  21. package/dist/Components/Forms/CrudParts.js +38 -5
  22. package/dist/Components/Forms/ExcelImport.d.ts +23 -7
  23. package/dist/Components/Forms/ExcelImport.js +189 -60
  24. package/dist/Components/Forms/Form.js +9 -14
  25. package/dist/Components/Forms/SubmitForm.d.ts +11 -2
  26. package/dist/Components/Forms/SubmitForm.js +23 -12
  27. package/dist/Components/Inputs/CodeBox.d.ts +69 -0
  28. package/dist/Components/Inputs/CodeBox.js +316 -0
  29. package/dist/Components/Inputs/DatePicker.js +4 -1
  30. package/dist/Components/Inputs/DateRangePicker.js +4 -1
  31. package/dist/Components/Inputs/DateTimePicker.js +4 -1
  32. package/dist/Components/Inputs/Dropdown.js +4 -1
  33. package/dist/Components/Inputs/DropdownParts.d.ts +1 -1
  34. package/dist/Components/Inputs/DropdownParts.js +4 -6
  35. package/dist/Components/Inputs/InputRenderer.js +3 -0
  36. package/dist/Components/Inputs/NumberBox.js +26 -2
  37. package/dist/Components/Inputs/RowsInput.js +2 -2
  38. package/dist/Components/Inputs/Slider.js +4 -1
  39. package/dist/Components/Inputs/TabularForm.js +42 -10
  40. package/dist/Components/Inputs/TextArea.js +4 -1
  41. package/dist/Components/Inputs/TextBox.js +4 -1
  42. package/dist/Components/Inputs/TimePanel.js +4 -3
  43. package/dist/Components/Inputs/TimePicker.js +4 -1
  44. package/dist/Components/Inputs/TreeView.d.ts +55 -5
  45. package/dist/Components/Inputs/TreeView.js +372 -23
  46. package/dist/Components/Layouts/Popup.js +1 -4
  47. package/dist/Components/Layouts/ThemePicker.d.ts +21 -3
  48. package/dist/Components/Layouts/ThemePicker.js +89 -6
  49. package/dist/Components/Layouts/ThemeScript.d.ts +4 -2
  50. package/dist/Components/Layouts/ThemeScript.js +4 -2
  51. package/dist/Components/Layouts/ThemeSwitcher.d.ts +6 -3
  52. package/dist/Components/Layouts/ThemeSwitcher.js +9 -8
  53. package/dist/Components/Viewers/Avatar.d.ts +21 -0
  54. package/dist/Components/Viewers/Avatar.js +21 -0
  55. package/dist/Components/Viewers/DataTable.js +252 -62
  56. package/dist/Components/Viewers/DataTableColumns.d.ts +7 -3
  57. package/dist/Components/Viewers/DataTableColumns.js +25 -68
  58. package/dist/Components/Viewers/DataTableFilters.d.ts +21 -0
  59. package/dist/Components/Viewers/DataTableFilters.js +68 -0
  60. package/dist/Components/Viewers/DataTableParts.d.ts +28 -10
  61. package/dist/Components/Viewers/DataTableParts.js +42 -13
  62. package/dist/Helpers/AnimationHelpers.d.ts +11 -0
  63. package/dist/Helpers/AnimationHelpers.js +20 -2
  64. package/dist/Helpers/ApiModules.d.ts +3 -34
  65. package/dist/Helpers/ApiModules.js +3 -3
  66. package/dist/Helpers/ApiRoutes.d.ts +68 -26
  67. package/dist/Helpers/ApiRoutes.js +31 -27
  68. package/dist/Helpers/ArrayHelpers.d.ts +0 -0
  69. package/dist/Helpers/ArrayHelpers.js +2 -0
  70. package/dist/Helpers/CodeHelpers.d.ts +97 -0
  71. package/dist/Helpers/CodeHelpers.js +332 -0
  72. package/dist/Helpers/CrudBackend.d.ts +101 -8
  73. package/dist/Helpers/CrudBackend.js +172 -11
  74. package/dist/Helpers/CrudColumns.d.ts +51 -0
  75. package/dist/Helpers/CrudColumns.js +69 -0
  76. package/dist/Helpers/CrudHelpers.d.ts +50 -5
  77. package/dist/Helpers/CrudHelpers.js +109 -12
  78. package/dist/Helpers/ExcelBackend.d.ts +3 -3
  79. package/dist/Helpers/ExcelBackend.js +8 -2
  80. package/dist/Helpers/ExcelHelpers.d.ts +36 -8
  81. package/dist/Helpers/ExcelHelpers.js +55 -13
  82. package/dist/Helpers/FormStore.d.ts +9 -5
  83. package/dist/Helpers/FormStore.js +25 -5
  84. package/dist/Helpers/InputParamsHelpers.js +8 -0
  85. package/dist/Helpers/MessageBuilder.js +3 -0
  86. package/dist/Helpers/NexusHelpers.d.ts +0 -0
  87. package/dist/Helpers/NexusHelpers.js +1 -0
  88. package/dist/Helpers/NumberHelpers.d.ts +7 -1
  89. package/dist/Helpers/NumberHelpers.js +41 -3
  90. package/dist/Helpers/PopoverHelpers.d.ts +17 -5
  91. package/dist/Helpers/PopoverHelpers.js +52 -17
  92. package/dist/Helpers/PopoverHooks.d.ts +24 -0
  93. package/dist/Helpers/PopoverHooks.js +62 -0
  94. package/dist/Helpers/RequestCache.d.ts +35 -0
  95. package/dist/Helpers/RequestCache.js +113 -0
  96. package/dist/Helpers/RowsStore.d.ts +7 -2
  97. package/dist/Helpers/RowsStore.js +15 -3
  98. package/dist/Helpers/TableFilters.d.ts +25 -0
  99. package/dist/Helpers/TableFilters.js +162 -0
  100. package/dist/Helpers/TableHelpers.d.ts +7 -4
  101. package/dist/Helpers/TableHelpers.js +15 -6
  102. package/dist/Helpers/TableJoins.d.ts +70 -0
  103. package/dist/Helpers/TableJoins.js +250 -0
  104. package/dist/Helpers/TableStore.d.ts +16 -3
  105. package/dist/Helpers/TableStore.js +25 -5
  106. package/dist/Helpers/ThemeHelpers.d.ts +21 -4
  107. package/dist/Helpers/ThemeHelpers.js +46 -9
  108. package/dist/Helpers/TreeStore.d.ts +225 -11
  109. package/dist/Helpers/TreeStore.js +683 -90
  110. package/dist/Helpers/UserPreferences.d.ts +22 -0
  111. package/dist/Helpers/UserPreferences.js +116 -0
  112. package/dist/Interfaces/CrudInterfaces.d.ts +67 -10
  113. package/dist/Interfaces/ExcelInterfaces.d.ts +12 -0
  114. package/dist/Interfaces/FormInterfaces.d.ts +37 -6
  115. package/dist/Interfaces/InputInterfaces.d.ts +24 -0
  116. package/dist/Interfaces/MessageInterfaces.d.ts +1 -1
  117. package/dist/Interfaces/PreferenceInterfaces.d.ts +51 -0
  118. package/dist/Interfaces/PreferenceInterfaces.js +25 -0
  119. package/dist/Interfaces/TableInterfaces.d.ts +145 -16
  120. package/dist/Interfaces/ThemeInterfaces.d.ts +25 -0
  121. package/dist/Interfaces/ThemeInterfaces.js +15 -0
  122. package/dist/Services/ApiProxy.d.ts +36 -1
  123. package/dist/Services/ApiProxy.js +182 -52
  124. package/dist/Services/ApiProxyRules.d.ts +203 -0
  125. package/dist/Services/ApiProxyRules.js +426 -0
  126. package/dist/Services/ExcelApi.d.ts +3 -1
  127. package/dist/Services/ExcelApi.js +1 -1
  128. package/dist/Services/JoinSources.d.ts +48 -0
  129. package/dist/Services/JoinSources.js +74 -0
  130. package/dist/Services/ServerApi.d.ts +13 -2
  131. package/dist/Services/ServerApi.js +8 -3
  132. package/dist/Services/ThemeService.d.ts +18 -2
  133. package/dist/Services/ThemeService.js +80 -16
  134. package/dist/Shared.Index.d.ts +6 -0
  135. package/dist/Shared.Index.js +6 -0
  136. package/package.json +4 -2
  137. package/src/Styles/Nexus.Avatar.css +79 -0
  138. package/src/Styles/Nexus.Base.css +51 -4
  139. package/src/Styles/Nexus.Button.css +27 -0
  140. package/src/Styles/Nexus.Calendar.css +4 -6
  141. package/src/Styles/Nexus.Chat.css +5 -51
  142. package/src/Styles/Nexus.Choice.css +4 -6
  143. package/src/Styles/Nexus.Crud.css +16 -9
  144. package/src/Styles/Nexus.Dropdown.css +12 -61
  145. package/src/Styles/Nexus.Editor.css +4 -6
  146. package/src/Styles/Nexus.Excel.css +34 -15
  147. package/src/Styles/Nexus.Form.css +25 -67
  148. package/src/Styles/Nexus.Index.css +1 -0
  149. package/src/Styles/Nexus.Input.css +794 -637
  150. package/src/Styles/Nexus.Markdown.css +0 -28
  151. package/src/Styles/Nexus.Menu.css +8 -30
  152. package/src/Styles/Nexus.Popup.css +22 -29
  153. package/src/Styles/Nexus.RichText.css +2 -32
  154. package/src/Styles/Nexus.Rows.css +51 -10
  155. package/src/Styles/Nexus.Slider.css +3 -5
  156. package/src/Styles/Nexus.Tab.Buttons.css +20 -7
  157. package/src/Styles/Nexus.Table.css +1387 -1296
  158. package/src/Styles/Nexus.Theme.Picker.css +342 -232
  159. package/src/Styles/Nexus.Time.css +9 -12
  160. package/src/Styles/Nexus.Toast.css +6 -8
  161. package/src/Styles/Nexus.Tokens.css +17 -0
  162. package/src/Styles/Nexus.Tree.css +76 -11
@@ -32,14 +32,31 @@
32
32
  --nx-space-5: 20px;
33
33
  --nx-space-6: 24px;
34
34
  --nx-space-8: 32px;
35
+
36
+ /* Density: the sizes a compact and a cozy page differ by (cozy below). Everything sized by them follows. */
35
37
  --nx-control-sm: 28px;
36
38
  --nx-control-md: 34px;
37
39
  --nx-control-lg: 40px;
40
+ /* A row in a list: a menu's item, a table's row and header, a dropdown's option, the Columns panel's line. */
41
+ --nx-row: 32px;
42
+ /* A bottom band, such as a table's footer: small controls with 6px above and below, and its 1px line. */
43
+ --nx-footbar: calc(var(--nx-control-sm) + 13px);
38
44
 
39
45
  /* Motion */
40
46
  --nx-duration: 120ms;
41
47
  }
42
48
 
49
+ /*
50
+ * Cozy: every control 4px taller and every row 6px, for a touch screen or a large monitor. One attribute on <html>
51
+ * (ThemeScript and ThemeSwitcher set it), so no component asks; compact, the default, is the sizes above.
52
+ */
53
+ :root[data-nx-density="cozy"] {
54
+ --nx-control-sm: 32px;
55
+ --nx-control-md: 38px;
56
+ --nx-control-lg: 44px;
57
+ --nx-row: 38px;
58
+ }
59
+
43
60
  :root[data-nx-mode="light"] {
44
61
  color-scheme: light;
45
62
  }
@@ -109,8 +109,6 @@
109
109
  overflow: auto;
110
110
  overscroll-behavior: contain;
111
111
  outline: none;
112
- scrollbar-width: thin;
113
- scrollbar-color: var(--nx-field-scrollbar) transparent;
114
112
  }
115
113
 
116
114
  .nx-tree__viewport:focus-visible {
@@ -272,6 +270,75 @@
272
270
  vertical-align: 0;
273
271
  }
274
272
 
273
+ /*
274
+ * Rows that are not items, under a parent of a lazy tree (loadChildren): its page on its way, a page that failed
275
+ * with Retry, and Load more. They sit at the children's level and take no checkbox; the whole row is the button, so
276
+ * the Retry drawn in it is not a second stop for the keyboard.
277
+ */
278
+ .nx-tree__row--status {
279
+ cursor: default;
280
+ }
281
+
282
+ .nx-tree__row--more,
283
+ .nx-tree__row--error {
284
+ cursor: pointer;
285
+ }
286
+
287
+ /* Nothing to press while a page comes. */
288
+ .nx-tree__row--loading[role="treeitem"]:hover {
289
+ background-color: transparent;
290
+ }
291
+
292
+ .nx-tree__status-icon {
293
+ flex: none;
294
+ width: 14px;
295
+ height: 14px;
296
+ color: var(--nx-tree-muted);
297
+ vertical-align: 0;
298
+ }
299
+
300
+ /* The sentence keeps its own width, so Retry follows it rather than the row's far end. */
301
+ .nx-tree__row--status .nx-tree__text {
302
+ flex: 0 1 auto;
303
+ }
304
+
305
+ .nx-tree__status-text {
306
+ flex: 0 1 auto;
307
+ min-width: 0;
308
+ overflow: hidden;
309
+ color: var(--nx-tree-muted);
310
+ text-overflow: ellipsis;
311
+ }
312
+
313
+ .nx-tree__row--error .nx-tree__status-icon {
314
+ color: var(--nx-danger);
315
+ }
316
+
317
+ .nx-tree__row--error .nx-tree__status-text {
318
+ color: var(--nx-text);
319
+ }
320
+
321
+ /* The accent as text; on the hover tint it moves toward the text color, as muted texts do, to keep 4.5:1 (the plain
322
+ accent measured 3.79:1 on Dracula dark's hover tint). */
323
+ .nx-tree__row--more {
324
+ --nx-tree-link: var(--nx-primary);
325
+ }
326
+
327
+ .nx-tree__row--more:is(:hover, :focus-visible) {
328
+ --nx-tree-link: color-mix(in oklab, var(--nx-primary), var(--nx-text) 35%);
329
+ }
330
+
331
+ .nx-tree__row--more .nx-tree__status-text {
332
+ color: var(--nx-tree-link);
333
+ font-weight: 500;
334
+ }
335
+
336
+ .nx-btn.nx-tree__retry {
337
+ --nx-btn-height: calc(var(--nx-tree-row) - 6px);
338
+ flex: none;
339
+ margin-left: var(--nx-space-1);
340
+ }
341
+
275
342
  /* A locked item: the read-only box (data-readonly), a muted label, and a lock. */
276
343
  .nx-tree__row--locked {
277
344
  cursor: default;
@@ -421,15 +488,13 @@
421
488
  cursor: default;
422
489
  }
423
490
 
424
- @media (prefers-reduced-motion: reduce) {
425
- .nx-tree__motion,
426
- .nx-tree__skeleton {
427
- animation: none;
428
- }
491
+ [data-nx-motion="reduce"] .nx-tree__motion,
492
+ [data-nx-motion="reduce"] .nx-tree__skeleton {
493
+ animation: none;
494
+ }
429
495
 
430
- .nx-tree,
431
- .nx-tree__toggle .nx-icon {
432
- transition: none;
433
- }
496
+ [data-nx-motion="reduce"] .nx-tree,
497
+ [data-nx-motion="reduce"] .nx-tree__toggle .nx-icon {
498
+ transition: none;
434
499
  }
435
500
  }