nexus-shared 3.1.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 (104) hide show
  1. package/CHANGELOG.md +704 -446
  2. package/LICENSE +21 -21
  3. package/README.md +44 -5
  4. package/dist/Client.Index.d.ts +3 -0
  5. package/dist/Client.Index.js +3 -0
  6. package/dist/Components/Forms/Crud.js +322 -161
  7. package/dist/Components/Forms/CrudHistory.d.ts +66 -0
  8. package/dist/Components/Forms/CrudHistory.js +140 -0
  9. package/dist/Components/Forms/CrudParts.js +2 -1
  10. package/dist/Components/Forms/Form.js +4 -1
  11. package/dist/Components/Inputs/CodeBox.d.ts +69 -0
  12. package/dist/Components/Inputs/CodeBox.js +316 -0
  13. package/dist/Components/Inputs/DatePicker.js +4 -1
  14. package/dist/Components/Inputs/DateRangePicker.js +4 -1
  15. package/dist/Components/Inputs/DateTimePicker.js +4 -1
  16. package/dist/Components/Inputs/Dropdown.js +4 -1
  17. package/dist/Components/Inputs/InputRenderer.js +3 -0
  18. package/dist/Components/Inputs/NumberBox.js +4 -2
  19. package/dist/Components/Inputs/TextArea.js +4 -1
  20. package/dist/Components/Inputs/TextBox.js +4 -1
  21. package/dist/Components/Inputs/TimePicker.js +4 -1
  22. package/dist/Components/Inputs/TreeView.d.ts +55 -5
  23. package/dist/Components/Inputs/TreeView.js +372 -23
  24. package/dist/Components/Layouts/ThemePicker.d.ts +3 -2
  25. package/dist/Components/Layouts/ThemePicker.js +16 -4
  26. package/dist/Components/Viewers/DataTable.js +63 -21
  27. package/dist/Components/Viewers/DataTableParts.d.ts +26 -8
  28. package/dist/Components/Viewers/DataTableParts.js +39 -10
  29. package/dist/Helpers/ApiModules.d.ts +3 -34
  30. package/dist/Helpers/ApiModules.js +3 -3
  31. package/dist/Helpers/ApiRoutes.d.ts +68 -26
  32. package/dist/Helpers/ApiRoutes.js +31 -27
  33. package/dist/Helpers/ArrayHelpers.d.ts +0 -0
  34. package/dist/Helpers/ArrayHelpers.js +2 -0
  35. package/dist/Helpers/CodeHelpers.d.ts +97 -0
  36. package/dist/Helpers/CodeHelpers.js +332 -0
  37. package/dist/Helpers/CrudBackend.d.ts +94 -4
  38. package/dist/Helpers/CrudBackend.js +168 -9
  39. package/dist/Helpers/CrudColumns.d.ts +51 -0
  40. package/dist/Helpers/CrudColumns.js +69 -0
  41. package/dist/Helpers/CrudHelpers.d.ts +50 -5
  42. package/dist/Helpers/CrudHelpers.js +109 -12
  43. package/dist/Helpers/InputParamsHelpers.js +8 -0
  44. package/dist/Helpers/MessageBuilder.js +2 -0
  45. package/dist/Helpers/NexusHelpers.d.ts +0 -0
  46. package/dist/Helpers/NexusHelpers.js +1 -0
  47. package/dist/Helpers/RequestCache.d.ts +35 -0
  48. package/dist/Helpers/RequestCache.js +113 -0
  49. package/dist/Helpers/TableExport.js +12 -12
  50. package/dist/Helpers/TableHelpers.d.ts +1 -1
  51. package/dist/Helpers/TableHelpers.js +7 -2
  52. package/dist/Helpers/TableJoins.d.ts +70 -0
  53. package/dist/Helpers/TableJoins.js +250 -0
  54. package/dist/Helpers/TableStore.d.ts +5 -0
  55. package/dist/Helpers/TableStore.js +9 -0
  56. package/dist/Helpers/TreeStore.d.ts +225 -11
  57. package/dist/Helpers/TreeStore.js +683 -90
  58. package/dist/Helpers/UserPreferences.d.ts +8 -0
  59. package/dist/Helpers/UserPreferences.js +17 -0
  60. package/dist/Interfaces/CrudInterfaces.d.ts +47 -9
  61. package/dist/Interfaces/FormInterfaces.d.ts +4 -1
  62. package/dist/Interfaces/InputInterfaces.d.ts +24 -0
  63. package/dist/Interfaces/MessageInterfaces.d.ts +1 -1
  64. package/dist/Interfaces/PreferenceInterfaces.d.ts +8 -0
  65. package/dist/Interfaces/PreferenceInterfaces.js +2 -5
  66. package/dist/Interfaces/TableInterfaces.d.ts +86 -4
  67. package/dist/Services/ApiProxy.d.ts +36 -1
  68. package/dist/Services/ApiProxy.js +182 -52
  69. package/dist/Services/ApiProxyRules.d.ts +203 -0
  70. package/dist/Services/ApiProxyRules.js +426 -0
  71. package/dist/Services/JoinSources.d.ts +48 -0
  72. package/dist/Services/JoinSources.js +74 -0
  73. package/dist/Services/ServerApi.d.ts +13 -2
  74. package/dist/Services/ServerApi.js +8 -3
  75. package/dist/Shared.Index.d.ts +4 -0
  76. package/dist/Shared.Index.js +4 -0
  77. package/package.json +87 -85
  78. package/src/Styles/Nexus.Avatar.css +79 -79
  79. package/src/Styles/Nexus.Base.css +117 -117
  80. package/src/Styles/Nexus.Button.css +180 -180
  81. package/src/Styles/Nexus.Calendar.css +273 -273
  82. package/src/Styles/Nexus.Chat.css +1443 -1443
  83. package/src/Styles/Nexus.Choice.css +343 -343
  84. package/src/Styles/Nexus.Crud.css +168 -168
  85. package/src/Styles/Nexus.DateTime.css +81 -81
  86. package/src/Styles/Nexus.Dropdown.css +725 -725
  87. package/src/Styles/Nexus.Editor.css +295 -295
  88. package/src/Styles/Nexus.Excel.css +389 -389
  89. package/src/Styles/Nexus.Form.css +279 -279
  90. package/src/Styles/Nexus.Index.css +37 -37
  91. package/src/Styles/Nexus.Input.css +196 -4
  92. package/src/Styles/Nexus.Markdown.css +237 -237
  93. package/src/Styles/Nexus.Menu.css +237 -237
  94. package/src/Styles/Nexus.Popup.css +724 -724
  95. package/src/Styles/Nexus.Rows.css +637 -637
  96. package/src/Styles/Nexus.Slider.css +276 -276
  97. package/src/Styles/Nexus.Tab.Buttons.css +432 -432
  98. package/src/Styles/Nexus.Table.css +31 -30
  99. package/src/Styles/Nexus.Theme.Picker.css +59 -3
  100. package/src/Styles/Nexus.Themes.css +194 -194
  101. package/src/Styles/Nexus.Time.css +144 -144
  102. package/src/Styles/Nexus.Toast.css +263 -263
  103. package/src/Styles/Nexus.Tokens.css +89 -89
  104. package/src/Styles/Nexus.Tree.css +500 -431
@@ -1,144 +1,144 @@
1
- @layer nexus.components {
2
- /*
3
- * Time picker: the box lines digits up, and its panel opens in a popover placed by the component. The panel shows
4
- * columns of hours, minutes, seconds, and AM/PM whose chosen items scroll to the middle row, so the chosen time reads
5
- * as one line with its neighbours above and below; or a single list of slots. Chosen items are solid primary, like
6
- * the calendar's chosen day.
7
- */
8
- .nx-field__control--time {
9
- font-variant-numeric: tabular-nums;
10
- }
11
-
12
- .nx-field__action--clock[aria-expanded="true"] {
13
- color: var(--nx-field-accent);
14
- }
15
-
16
- .nx-time-popover {
17
- position: fixed;
18
- inset: auto;
19
- padding: 0;
20
- }
21
-
22
- .nx-time {
23
- --nx-time-item: 32px;
24
- --nx-time-rows: 7;
25
- --nx-time-bg: light-dark(var(--nx-surface), var(--nx-surface-2));
26
-
27
- display: grid;
28
- color: var(--nx-text);
29
- font-size: var(--nx-text-sm);
30
- line-height: 1.3;
31
- user-select: none;
32
- }
33
-
34
- .nx-time__columns {
35
- display: flex;
36
- padding: var(--nx-space-1);
37
- }
38
-
39
- /* A column scrolls; the space before its first item and after its last lets both reach the middle row. */
40
- .nx-time__column {
41
- position: relative;
42
- width: 56px;
43
- height: calc(var(--nx-time-item) * var(--nx-time-rows));
44
- padding: calc(var(--nx-time-item) * (var(--nx-time-rows) - 1) / 2) var(--nx-space-1);
45
- overflow-y: auto;
46
- overscroll-behavior: contain;
47
- outline: none;
48
- transition: scrollbar-color var(--nx-duration);
49
- }
50
-
51
- .nx-time__column--meridiem {
52
- width: auto;
53
- min-width: 56px;
54
- }
55
-
56
- /*
57
- * The columns stand side by side, so a bar in each would draw a stripe between every pair: the thumb stays hidden
58
- * until the pointer or the keys are in the column, and then it is the shared bar (Nexus.Base.css).
59
- */
60
- .nx-time__column:not(:hover, :focus-within) {
61
- scrollbar-color: transparent transparent;
62
- }
63
-
64
- .nx-time__column + .nx-time__column {
65
- border-left: 1px solid var(--nx-border);
66
- }
67
-
68
- .nx-time__item {
69
- display: grid;
70
- place-items: center;
71
- height: var(--nx-time-item);
72
- padding: 0 var(--nx-space-2);
73
- border-radius: var(--nx-radius);
74
- font-variant-numeric: tabular-nums;
75
- white-space: nowrap;
76
- cursor: pointer;
77
- outline: none;
78
- transition:
79
- background-color var(--nx-duration),
80
- color var(--nx-duration);
81
- }
82
-
83
- .nx-time__item:hover:not([aria-disabled="true"], [aria-selected="true"]) {
84
- background: var(--nx-surface-hover);
85
- }
86
-
87
- .nx-time__item[aria-selected="true"] {
88
- background: var(--nx-primary-solid);
89
- color: var(--nx-primary-text);
90
- font-weight: 600;
91
- }
92
-
93
- /* An inset ring, so the column does not clip it, with a band of the panel's color that shows on a chosen item. */
94
- .nx-time__item:focus-visible {
95
- box-shadow:
96
- inset 0 0 0 2px var(--nx-primary),
97
- inset 0 0 0 4px var(--nx-time-bg);
98
- }
99
-
100
- .nx-time__item[aria-disabled="true"] {
101
- color: var(--nx-text-subtle);
102
- opacity: 0.45;
103
- cursor: default;
104
- }
105
-
106
- .nx-time__item[aria-disabled="true"][aria-selected="true"] {
107
- color: var(--nx-primary-text);
108
- opacity: 0.7;
109
- }
110
-
111
- .nx-time__foot {
112
- display: flex;
113
- justify-content: space-between;
114
- gap: var(--nx-space-2);
115
- padding: 6px var(--nx-space-2);
116
- border-top: 1px solid var(--nx-border);
117
- }
118
-
119
- /* List of slots */
120
- .nx-time__list {
121
- position: relative;
122
- min-width: 132px;
123
- max-height: calc(var(--nx-time-item) * 8 + var(--nx-space-2));
124
- padding: var(--nx-space-1);
125
- overflow-y: auto;
126
- overscroll-behavior: contain;
127
- outline: none;
128
- }
129
-
130
- .nx-time__slot {
131
- place-items: center start;
132
- padding: 0 var(--nx-space-3);
133
- }
134
-
135
- .nx-time__empty {
136
- padding: var(--nx-space-2) var(--nx-space-3);
137
- color: var(--nx-text-muted);
138
- }
139
-
140
- [data-nx-motion="reduce"] .nx-time__item,
141
- [data-nx-motion="reduce"] .nx-time__column {
142
- transition: none;
143
- }
144
- }
1
+ @layer nexus.components {
2
+ /*
3
+ * Time picker: the box lines digits up, and its panel opens in a popover placed by the component. The panel shows
4
+ * columns of hours, minutes, seconds, and AM/PM whose chosen items scroll to the middle row, so the chosen time reads
5
+ * as one line with its neighbours above and below; or a single list of slots. Chosen items are solid primary, like
6
+ * the calendar's chosen day.
7
+ */
8
+ .nx-field__control--time {
9
+ font-variant-numeric: tabular-nums;
10
+ }
11
+
12
+ .nx-field__action--clock[aria-expanded="true"] {
13
+ color: var(--nx-field-accent);
14
+ }
15
+
16
+ .nx-time-popover {
17
+ position: fixed;
18
+ inset: auto;
19
+ padding: 0;
20
+ }
21
+
22
+ .nx-time {
23
+ --nx-time-item: 32px;
24
+ --nx-time-rows: 7;
25
+ --nx-time-bg: light-dark(var(--nx-surface), var(--nx-surface-2));
26
+
27
+ display: grid;
28
+ color: var(--nx-text);
29
+ font-size: var(--nx-text-sm);
30
+ line-height: 1.3;
31
+ user-select: none;
32
+ }
33
+
34
+ .nx-time__columns {
35
+ display: flex;
36
+ padding: var(--nx-space-1);
37
+ }
38
+
39
+ /* A column scrolls; the space before its first item and after its last lets both reach the middle row. */
40
+ .nx-time__column {
41
+ position: relative;
42
+ width: 56px;
43
+ height: calc(var(--nx-time-item) * var(--nx-time-rows));
44
+ padding: calc(var(--nx-time-item) * (var(--nx-time-rows) - 1) / 2) var(--nx-space-1);
45
+ overflow-y: auto;
46
+ overscroll-behavior: contain;
47
+ outline: none;
48
+ transition: scrollbar-color var(--nx-duration);
49
+ }
50
+
51
+ .nx-time__column--meridiem {
52
+ width: auto;
53
+ min-width: 56px;
54
+ }
55
+
56
+ /*
57
+ * The columns stand side by side, so a bar in each would draw a stripe between every pair: the thumb stays hidden
58
+ * until the pointer or the keys are in the column, and then it is the shared bar (Nexus.Base.css).
59
+ */
60
+ .nx-time__column:not(:hover, :focus-within) {
61
+ scrollbar-color: transparent transparent;
62
+ }
63
+
64
+ .nx-time__column + .nx-time__column {
65
+ border-left: 1px solid var(--nx-border);
66
+ }
67
+
68
+ .nx-time__item {
69
+ display: grid;
70
+ place-items: center;
71
+ height: var(--nx-time-item);
72
+ padding: 0 var(--nx-space-2);
73
+ border-radius: var(--nx-radius);
74
+ font-variant-numeric: tabular-nums;
75
+ white-space: nowrap;
76
+ cursor: pointer;
77
+ outline: none;
78
+ transition:
79
+ background-color var(--nx-duration),
80
+ color var(--nx-duration);
81
+ }
82
+
83
+ .nx-time__item:hover:not([aria-disabled="true"], [aria-selected="true"]) {
84
+ background: var(--nx-surface-hover);
85
+ }
86
+
87
+ .nx-time__item[aria-selected="true"] {
88
+ background: var(--nx-primary-solid);
89
+ color: var(--nx-primary-text);
90
+ font-weight: 600;
91
+ }
92
+
93
+ /* An inset ring, so the column does not clip it, with a band of the panel's color that shows on a chosen item. */
94
+ .nx-time__item:focus-visible {
95
+ box-shadow:
96
+ inset 0 0 0 2px var(--nx-primary),
97
+ inset 0 0 0 4px var(--nx-time-bg);
98
+ }
99
+
100
+ .nx-time__item[aria-disabled="true"] {
101
+ color: var(--nx-text-subtle);
102
+ opacity: 0.45;
103
+ cursor: default;
104
+ }
105
+
106
+ .nx-time__item[aria-disabled="true"][aria-selected="true"] {
107
+ color: var(--nx-primary-text);
108
+ opacity: 0.7;
109
+ }
110
+
111
+ .nx-time__foot {
112
+ display: flex;
113
+ justify-content: space-between;
114
+ gap: var(--nx-space-2);
115
+ padding: 6px var(--nx-space-2);
116
+ border-top: 1px solid var(--nx-border);
117
+ }
118
+
119
+ /* List of slots */
120
+ .nx-time__list {
121
+ position: relative;
122
+ min-width: 132px;
123
+ max-height: calc(var(--nx-time-item) * 8 + var(--nx-space-2));
124
+ padding: var(--nx-space-1);
125
+ overflow-y: auto;
126
+ overscroll-behavior: contain;
127
+ outline: none;
128
+ }
129
+
130
+ .nx-time__slot {
131
+ place-items: center start;
132
+ padding: 0 var(--nx-space-3);
133
+ }
134
+
135
+ .nx-time__empty {
136
+ padding: var(--nx-space-2) var(--nx-space-3);
137
+ color: var(--nx-text-muted);
138
+ }
139
+
140
+ [data-nx-motion="reduce"] .nx-time__item,
141
+ [data-nx-motion="reduce"] .nx-time__column {
142
+ transition: none;
143
+ }
144
+ }