nexus-shared 1.1.20 → 2.0.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 (332) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +903 -0
  3. package/dist/Client.Index.d.ts +44 -0
  4. package/dist/Client.Index.js +49 -0
  5. package/dist/Components/Documents/Button.d.ts +29 -0
  6. package/dist/Components/Documents/Button.js +11 -0
  7. package/dist/Components/Documents/Menu.d.ts +102 -0
  8. package/dist/Components/Documents/Menu.js +238 -0
  9. package/dist/Components/Documents/SplitButton.d.ts +64 -0
  10. package/dist/Components/Documents/SplitButton.js +127 -0
  11. package/dist/Components/Documents/TabButtons.d.ts +62 -0
  12. package/dist/Components/Documents/TabButtons.js +19 -0
  13. package/dist/Components/Forms/ApiForm.d.ts +21 -0
  14. package/dist/Components/Forms/ApiForm.js +99 -0
  15. package/dist/Components/Forms/Crud.d.ts +17 -0
  16. package/dist/Components/Forms/Crud.js +556 -0
  17. package/dist/Components/Forms/CrudParts.d.ts +15 -0
  18. package/dist/Components/Forms/CrudParts.js +36 -0
  19. package/dist/Components/Forms/Form.d.ts +52 -0
  20. package/dist/Components/Forms/Form.js +319 -0
  21. package/dist/Components/Forms/SubmitForm.d.ts +65 -0
  22. package/dist/Components/Forms/SubmitForm.js +198 -0
  23. package/dist/Components/Inputs/Calendar.d.ts +69 -0
  24. package/dist/Components/Inputs/Calendar.js +258 -0
  25. package/dist/Components/Inputs/CheckBox.d.ts +53 -0
  26. package/dist/Components/Inputs/CheckBox.js +87 -0
  27. package/dist/Components/Inputs/CheckBoxGroup.d.ts +20 -0
  28. package/dist/Components/Inputs/CheckBoxGroup.js +80 -0
  29. package/dist/Components/Inputs/ChoiceField.d.ts +122 -0
  30. package/dist/Components/Inputs/ChoiceField.js +169 -0
  31. package/dist/Components/Inputs/DatePicker.d.ts +54 -0
  32. package/dist/Components/Inputs/DatePicker.js +246 -0
  33. package/dist/Components/Inputs/DateRangePicker.d.ts +62 -0
  34. package/dist/Components/Inputs/DateRangePicker.js +283 -0
  35. package/dist/Components/Inputs/DateTimePicker.d.ts +75 -0
  36. package/dist/Components/Inputs/DateTimePicker.js +399 -0
  37. package/dist/Components/Inputs/Dropdown.d.ts +117 -0
  38. package/dist/Components/Inputs/Dropdown.js +839 -0
  39. package/dist/Components/Inputs/DropdownParts.d.ts +84 -0
  40. package/dist/Components/Inputs/DropdownParts.js +102 -0
  41. package/dist/Components/Inputs/EditorShell.d.ts +45 -0
  42. package/dist/Components/Inputs/EditorShell.js +214 -0
  43. package/dist/Components/Inputs/Field.d.ts +53 -0
  44. package/dist/Components/Inputs/Field.js +16 -0
  45. package/dist/Components/Inputs/GroupForm.d.ts +20 -0
  46. package/dist/Components/Inputs/GroupForm.js +170 -0
  47. package/dist/Components/Inputs/InputField.d.ts +59 -0
  48. package/dist/Components/Inputs/InputField.js +169 -0
  49. package/dist/Components/Inputs/InputRenderer.d.ts +35 -0
  50. package/dist/Components/Inputs/InputRenderer.js +99 -0
  51. package/dist/Components/Inputs/MarkdownEditor.d.ts +67 -0
  52. package/dist/Components/Inputs/MarkdownEditor.js +289 -0
  53. package/dist/Components/Inputs/NumberBox.d.ts +53 -0
  54. package/dist/Components/Inputs/NumberBox.js +228 -0
  55. package/dist/Components/Inputs/RadioGroup.d.ts +20 -0
  56. package/dist/Components/Inputs/RadioGroup.js +43 -0
  57. package/dist/Components/Inputs/ReadOnlyNotice.d.ts +36 -0
  58. package/dist/Components/Inputs/ReadOnlyNotice.js +116 -0
  59. package/dist/Components/Inputs/RichTextEditor.d.ts +103 -0
  60. package/dist/Components/Inputs/RichTextEditor.js +1170 -0
  61. package/dist/Components/Inputs/RichTextParts.d.ts +63 -0
  62. package/dist/Components/Inputs/RichTextParts.js +157 -0
  63. package/dist/Components/Inputs/RowsInput.d.ts +104 -0
  64. package/dist/Components/Inputs/RowsInput.js +259 -0
  65. package/dist/Components/Inputs/Slider.d.ts +87 -0
  66. package/dist/Components/Inputs/Slider.js +216 -0
  67. package/dist/Components/Inputs/TabularForm.d.ts +23 -0
  68. package/dist/Components/Inputs/TabularForm.js +283 -0
  69. package/dist/Components/Inputs/TextArea.d.ts +43 -0
  70. package/dist/Components/Inputs/TextArea.js +31 -0
  71. package/dist/Components/Inputs/TextBox.d.ts +52 -0
  72. package/dist/Components/Inputs/TextBox.js +58 -0
  73. package/dist/Components/Inputs/TextField.d.ts +31 -0
  74. package/dist/Components/Inputs/TextField.js +35 -0
  75. package/dist/Components/Inputs/TimePanel.d.ts +34 -0
  76. package/dist/Components/Inputs/TimePanel.js +288 -0
  77. package/dist/Components/Inputs/TimePicker.d.ts +54 -0
  78. package/dist/Components/Inputs/TimePicker.js +239 -0
  79. package/dist/Components/Inputs/TreeView.d.ts +160 -0
  80. package/dist/Components/Inputs/TreeView.js +947 -0
  81. package/dist/Components/Layouts/MessageBox.d.ts +71 -0
  82. package/dist/Components/Layouts/MessageBox.js +104 -0
  83. package/dist/Components/Layouts/Popup.d.ts +92 -0
  84. package/dist/Components/Layouts/Popup.js +376 -0
  85. package/dist/Components/Layouts/PopupContext.d.ts +2 -0
  86. package/dist/Components/Layouts/PopupContext.js +4 -0
  87. package/dist/Components/Layouts/PopupDock.d.ts +22 -0
  88. package/dist/Components/Layouts/PopupDock.js +121 -0
  89. package/dist/Components/Layouts/PopupHost.d.ts +56 -0
  90. package/dist/Components/Layouts/PopupHost.js +163 -0
  91. package/dist/Components/Layouts/PopupRules.d.ts +30 -0
  92. package/dist/Components/Layouts/PopupRules.js +63 -0
  93. package/dist/Components/Layouts/ThemePicker.d.ts +13 -0
  94. package/dist/Components/Layouts/ThemePicker.js +22 -0
  95. package/dist/Components/Layouts/ThemeScript.d.ts +14 -0
  96. package/dist/Components/Layouts/ThemeScript.js +13 -0
  97. package/dist/Components/Layouts/ThemeSwitcher.d.ts +13 -0
  98. package/dist/Components/Layouts/ThemeSwitcher.js +29 -0
  99. package/dist/Components/Layouts/Toaster.d.ts +76 -0
  100. package/dist/Components/Layouts/Toaster.js +172 -0
  101. package/dist/Components/Viewers/DataTable.d.ts +25 -0
  102. package/dist/Components/Viewers/DataTable.js +542 -0
  103. package/dist/Components/Viewers/DataTableParts.d.ts +134 -0
  104. package/dist/Components/Viewers/DataTableParts.js +145 -0
  105. package/dist/Components/Viewers/MarkdownView.d.ts +26 -0
  106. package/dist/Components/Viewers/MarkdownView.js +79 -0
  107. package/dist/Components/Viewers/RichTextView.d.ts +18 -0
  108. package/dist/Components/Viewers/RichTextView.js +17 -0
  109. package/dist/Helpers/AnimationHelpers.d.ts +6 -0
  110. package/dist/Helpers/AnimationHelpers.js +35 -0
  111. package/dist/Helpers/ApiClient.d.ts +74 -0
  112. package/dist/Helpers/ApiClient.js +197 -0
  113. package/dist/Helpers/ApiFormHelpers.d.ts +26 -0
  114. package/dist/Helpers/ApiFormHelpers.js +56 -0
  115. package/dist/Helpers/ApiModules.d.ts +135 -0
  116. package/dist/Helpers/ApiModules.js +194 -0
  117. package/dist/Helpers/ApiResponses.d.ts +41 -0
  118. package/dist/Helpers/ApiResponses.js +159 -0
  119. package/dist/Helpers/ApiRoutes.d.ts +150 -0
  120. package/dist/Helpers/ApiRoutes.js +191 -0
  121. package/dist/Helpers/ApiToasts.d.ts +21 -0
  122. package/dist/Helpers/ApiToasts.js +22 -0
  123. package/dist/Helpers/ClassHelpers.d.ts +3 -0
  124. package/dist/Helpers/ClassHelpers.js +4 -0
  125. package/dist/Helpers/CrudBackend.d.ts +56 -0
  126. package/dist/Helpers/CrudBackend.js +119 -0
  127. package/dist/Helpers/CrudHelpers.d.ts +76 -0
  128. package/dist/Helpers/CrudHelpers.js +202 -0
  129. package/dist/Helpers/DateHelpers.d.ts +88 -0
  130. package/dist/Helpers/DateHelpers.js +363 -0
  131. package/dist/Helpers/DatePreferences.d.ts +14 -0
  132. package/dist/Helpers/DatePreferences.js +94 -0
  133. package/dist/Helpers/DateTimeHelpers.d.ts +87 -0
  134. package/dist/Helpers/DateTimeHelpers.js +286 -0
  135. package/dist/Helpers/DragHelpers.d.ts +129 -0
  136. package/dist/Helpers/DragHelpers.js +281 -0
  137. package/dist/Helpers/DropdownHelpers.d.ts +56 -0
  138. package/dist/Helpers/DropdownHelpers.js +180 -0
  139. package/dist/Helpers/FormDrafts.d.ts +18 -0
  140. package/dist/Helpers/FormDrafts.js +76 -0
  141. package/dist/Helpers/FormStore.d.ts +231 -0
  142. package/dist/Helpers/FormStore.js +734 -0
  143. package/dist/Helpers/InputParamsHelpers.d.ts +79 -0
  144. package/dist/Helpers/InputParamsHelpers.js +388 -0
  145. package/dist/Helpers/MarkdownEditing.d.ts +27 -0
  146. package/dist/Helpers/MarkdownEditing.js +250 -0
  147. package/dist/Helpers/MarkdownHelpers.d.ts +82 -0
  148. package/dist/Helpers/MarkdownHelpers.js +775 -0
  149. package/dist/Helpers/MessageBuilder.d.ts +74 -0
  150. package/dist/Helpers/MessageBuilder.js +254 -0
  151. package/dist/Helpers/NepaliCalendar.d.ts +25 -0
  152. package/dist/Helpers/NepaliCalendar.js +107 -0
  153. package/dist/Helpers/NumberHelpers.d.ts +71 -0
  154. package/dist/Helpers/NumberHelpers.js +202 -0
  155. package/dist/Helpers/Permissions.d.ts +62 -0
  156. package/dist/Helpers/Permissions.js +133 -0
  157. package/dist/Helpers/PopoverHelpers.d.ts +43 -0
  158. package/dist/Helpers/PopoverHelpers.js +91 -0
  159. package/dist/Helpers/RichTextHelpers.d.ts +77 -0
  160. package/dist/Helpers/RichTextHelpers.js +1072 -0
  161. package/dist/Helpers/RowsStore.d.ts +160 -0
  162. package/dist/Helpers/RowsStore.js +584 -0
  163. package/dist/Helpers/TableColumns.d.ts +40 -0
  164. package/dist/Helpers/TableColumns.js +254 -0
  165. package/dist/Helpers/TableExport.d.ts +30 -0
  166. package/dist/Helpers/TableExport.js +97 -0
  167. package/dist/Helpers/TableHelpers.d.ts +102 -0
  168. package/dist/Helpers/TableHelpers.js +281 -0
  169. package/dist/Helpers/TableStore.d.ts +142 -0
  170. package/dist/Helpers/TableStore.js +530 -0
  171. package/dist/Helpers/ThemeHelpers.d.ts +15 -0
  172. package/dist/Helpers/ThemeHelpers.js +16 -0
  173. package/dist/Helpers/TimeHelpers.d.ts +73 -0
  174. package/dist/Helpers/TimeHelpers.js +253 -0
  175. package/dist/Helpers/TreeStore.d.ts +188 -0
  176. package/dist/Helpers/TreeStore.js +577 -0
  177. package/dist/Helpers/ValidationHelpers.d.ts +124 -0
  178. package/dist/Helpers/ValidationHelpers.js +301 -0
  179. package/dist/Interfaces/ApiInterfaces.d.ts +149 -0
  180. package/dist/Interfaces/ApiInterfaces.js +24 -0
  181. package/dist/Interfaces/CrudInterfaces.d.ts +171 -0
  182. package/{src/sso-client.tsx → dist/Interfaces/CrudInterfaces.js} +1 -1
  183. package/dist/Interfaces/DateInterfaces.d.ts +154 -0
  184. package/dist/Interfaces/DateInterfaces.js +29 -0
  185. package/dist/Interfaces/FormInterfaces.d.ts +352 -0
  186. package/dist/Interfaces/FormInterfaces.js +1 -0
  187. package/dist/Interfaces/InputInterfaces.d.ts +141 -0
  188. package/dist/Interfaces/InputInterfaces.js +1 -0
  189. package/dist/Interfaces/MessageInterfaces.d.ts +111 -0
  190. package/dist/Interfaces/MessageInterfaces.js +5 -0
  191. package/dist/Interfaces/TableInterfaces.d.ts +291 -0
  192. package/dist/Interfaces/TableInterfaces.js +1 -0
  193. package/dist/Interfaces/ThemeInterfaces.d.ts +17 -0
  194. package/dist/Interfaces/ThemeInterfaces.js +17 -0
  195. package/dist/Interfaces/TypeInterfaces.d.ts +4 -0
  196. package/dist/Interfaces/TypeInterfaces.js +1 -0
  197. package/dist/Server.Index.d.ts +2 -0
  198. package/dist/Server.Index.js +5 -0
  199. package/dist/Services/ApiProxy.d.ts +32 -0
  200. package/dist/Services/ApiProxy.js +111 -0
  201. package/dist/Services/BrowserApi.d.ts +78 -0
  202. package/dist/Services/BrowserApi.js +111 -0
  203. package/dist/Services/ServerApi.d.ts +49 -0
  204. package/dist/Services/ServerApi.js +75 -0
  205. package/dist/Services/ThemeService.d.ts +17 -0
  206. package/dist/Services/ThemeService.js +83 -0
  207. package/dist/Shared.Index.d.ts +43 -0
  208. package/dist/Shared.Index.js +47 -0
  209. package/package.json +82 -33
  210. package/src/Styles/Nexus.Base.css +70 -0
  211. package/src/Styles/Nexus.Button.css +151 -0
  212. package/src/Styles/Nexus.Calendar.css +275 -0
  213. package/src/Styles/Nexus.Choice.css +345 -0
  214. package/src/Styles/Nexus.Crud.css +84 -0
  215. package/src/Styles/Nexus.DateTime.css +81 -0
  216. package/src/Styles/Nexus.Dropdown.css +774 -0
  217. package/src/Styles/Nexus.Editor.css +297 -0
  218. package/src/Styles/Nexus.Form.css +298 -0
  219. package/src/Styles/Nexus.Index.css +34 -0
  220. package/src/Styles/Nexus.Input.css +637 -0
  221. package/src/Styles/Nexus.Markdown.css +265 -0
  222. package/src/Styles/Nexus.Menu.css +249 -0
  223. package/src/Styles/Nexus.Popup.css +731 -0
  224. package/src/Styles/Nexus.RichText.css +463 -0
  225. package/src/Styles/Nexus.Rows.css +566 -0
  226. package/src/Styles/Nexus.Slider.css +278 -0
  227. package/src/Styles/Nexus.Tab.Buttons.css +364 -0
  228. package/src/Styles/Nexus.Table.css +1014 -0
  229. package/src/Styles/Nexus.Theme.Picker.css +159 -0
  230. package/src/Styles/Nexus.Themes.css +194 -0
  231. package/src/Styles/Nexus.Time.css +147 -0
  232. package/src/Styles/Nexus.Toast.css +265 -0
  233. package/src/Styles/Nexus.Tokens.css +72 -0
  234. package/src/Styles/Nexus.Tree.css +435 -0
  235. package/src/api-services/authentication-service.tsx +0 -23
  236. package/src/api-services/preference-service.tsx +0 -5
  237. package/src/api-services/system-service.tsx +0 -34
  238. package/src/client.ts +0 -31
  239. package/src/components/documents/button.tsx +0 -142
  240. package/src/components/documents/icon-box.tsx +0 -93
  241. package/src/components/documents/page-title.tsx +0 -7
  242. package/src/components/documents/tab-button.tsx +0 -172
  243. package/src/components/documents/tag.tsx +0 -30
  244. package/src/components/index.js +0 -0
  245. package/src/components/inputs/checkbox-input.tsx +0 -66
  246. package/src/components/inputs/input-box.tsx +0 -48
  247. package/src/components/inputs/input-element.tsx +0 -65
  248. package/src/components/inputs/input-form.tsx +0 -164
  249. package/src/components/inputs/input.tsx +0 -181
  250. package/src/components/inputs/number-input.tsx +0 -108
  251. package/src/components/inputs/radiobox-input.tsx +0 -53
  252. package/src/components/inputs/textarea-input.tsx +0 -47
  253. package/src/components/inputs/textbox-input.tsx +0 -45
  254. package/src/components/layouts/global-dialogbox.tsx +0 -431
  255. package/src/components/layouts/global-layout.tsx +0 -59
  256. package/src/components/layouts/layout-helpers.tsx +0 -20
  257. package/src/components/layouts/panels/user-panel.tsx +0 -112
  258. package/src/components/layouts/utility-menu.tsx +0 -49
  259. package/src/components/panels/theme-panel.tsx +0 -46
  260. package/src/helpers/bitwise-helpers.tsx +0 -11
  261. package/src/helpers/browser-helpers.tsx +0 -156
  262. package/src/helpers/datasource-helpers.tsx +0 -99
  263. package/src/helpers/element-helpers.tsx +0 -57
  264. package/src/helpers/input-helpers.tsx +0 -74
  265. package/src/helpers/string-helpers.tsx +0 -28
  266. package/src/helpers/utility-helpers.tsx +0 -45
  267. package/src/helpers/validation-helpers.tsx +0 -302
  268. package/src/index.ts +0 -26
  269. package/src/interface.ts +0 -19
  270. package/src/interfaces/auth-token-interfaces.tsx +0 -6
  271. package/src/interfaces/browser-interfaces.tsx +0 -36
  272. package/src/interfaces/button-interfaces.tsx +0 -63
  273. package/src/interfaces/datasource-interfaces.tsx +0 -22
  274. package/src/interfaces/datatable-interfaces.tsx +0 -25
  275. package/src/interfaces/dialogbox-interfaces.tsx +0 -5
  276. package/src/interfaces/exception-interfaces.tsx +0 -99
  277. package/src/interfaces/http-interfaces.tsx +0 -129
  278. package/src/interfaces/icon-interfaces.tsx +0 -129
  279. package/src/interfaces/input-interfaces.tsx +0 -410
  280. package/src/interfaces/layout-interfaces.tsx +0 -191
  281. package/src/interfaces/menu-interfaces.tsx +0 -49
  282. package/src/interfaces/message-interfaces.tsx +0 -32
  283. package/src/interfaces/permission-interfaces.tsx +0 -9
  284. package/src/interfaces/storage-interfaces.tsx +0 -5
  285. package/src/interfaces/system-interfaces.tsx +0 -22
  286. package/src/interfaces/theme-interfaces.tsx +0 -123
  287. package/src/interfaces/type-interfaces.tsx +0 -28
  288. package/src/interfaces/user-interfaces.tsx +0 -47
  289. package/src/nexus-client.tsx +0 -21
  290. package/src/nexus.environments.tsx +0 -66
  291. package/src/proxy-api/proxy-backend.tsx +0 -60
  292. package/src/proxy-api/proxy-constants.tsx +0 -28
  293. package/src/proxy-api/proxy-helpers.tsx +0 -91
  294. package/src/proxy-api-client.tsx +0 -1
  295. package/src/proxy-api-server.tsx +0 -2
  296. package/src/services/http-client-services.tsx +0 -75
  297. package/src/services/http-services.tsx +0 -158
  298. package/src/services/loader-service.tsx +0 -185
  299. package/src/services/localstorage-service.tsx +0 -119
  300. package/src/services/message-services.tsx +0 -383
  301. package/src/services/theme-service.tsx +0 -161
  302. package/src/services/user-services.tsx +0 -10
  303. package/src/sso-config/auth-token-validation.ts +0 -16
  304. package/src/sso-config/callback-route.tsx +0 -35
  305. package/src/sso-config/cookie-encryption.ts +0 -51
  306. package/src/sso-config/cookie-helpers.tsx +0 -102
  307. package/src/sso-config/forgot-password-route.tsx +0 -36
  308. package/src/sso-config/oauth-callback-state.ts +0 -61
  309. package/src/sso-config/pkce-helpers.ts +0 -9
  310. package/src/sso-config/provider-complete-route.tsx +0 -18
  311. package/src/sso-config/redirect-context-actions.tsx +0 -45
  312. package/src/sso-config/redirect-context-helpers.tsx +0 -159
  313. package/src/sso-config/redirect-context-persist.tsx +0 -18
  314. package/src/sso-config/redirect-context-route.tsx +0 -45
  315. package/src/sso-config/refresh-route.tsx +0 -23
  316. package/src/sso-config/sign-in-route.tsx +0 -74
  317. package/src/sso-config/sign-out-route.tsx +0 -57
  318. package/src/sso-config/sign-up-route.tsx +0 -57
  319. package/src/sso-config/sso-backend-flow.ts +0 -38
  320. package/src/sso-config/sso-complete-route.tsx +0 -50
  321. package/src/sso-config/sso-config.ts +0 -59
  322. package/src/sso-config/sso-interfaces.tsx +0 -99
  323. package/src/sso-config/sso-response-helpers.tsx +0 -20
  324. package/src/sso-server.tsx +0 -21
  325. package/src/styles/nexus.animation.css +0 -269
  326. package/src/styles/nexus.core.css +0 -119
  327. package/src/styles/nexus.dialog.css +0 -144
  328. package/src/styles/nexus.icon.css +0 -51
  329. package/src/styles/nexus.input.css +0 -207
  330. package/src/styles/nexus.loader.css +0 -11
  331. package/src/styles/nexus.logic.css +0 -47
  332. package/src/styles/nexus.utility.css +0 -347
@@ -0,0 +1,231 @@
1
+ import type { FormErrors, FormRuleResult, FormValues, InputParams, InputValidationContext } from "../Interfaces/FormInterfaces.ts";
2
+ export interface FormStoreOptions<TValues extends FormValues = FormValues> {
3
+ inputs: readonly InputParams[];
4
+ validate?(values: TValues): FormRuleResult;
5
+ onFieldChange?(name: string, value: unknown, values: TValues): Partial<TValues> | null | undefined | void;
6
+ /** The user's date settings, so messages write dates the way the fields show them. */
7
+ context?: InputValidationContext;
8
+ /** The whole form is read-only or disabled: nothing is checked. */
9
+ locked?: boolean;
10
+ /** Unsaved changes are kept on this device under this key. */
11
+ draftKey?: string;
12
+ }
13
+ /** A draft brought back when the form opened. */
14
+ export interface FormRestoredDraft {
15
+ /** When the draft was saved (milliseconds since 1970). */
16
+ savedAt: number;
17
+ /** The inputs it brought back, in form order. */
18
+ names: readonly string[];
19
+ /** Of those, the ones whose saved value changed since the draft was made: someone else saved them. */
20
+ conflicts: readonly string[];
21
+ }
22
+ /** What the form's frame shows: the status line, the buttons, and the restored-draft notice. */
23
+ export interface FormStatus {
24
+ /** Some value differs from the ones the form opened with or saved last. */
25
+ changed: boolean;
26
+ /** A submit is running. */
27
+ submitting: boolean;
28
+ /** The values are loading: the inputs show placeholders. */
29
+ loading: boolean;
30
+ /** A submit ran and found problems: every message shows. */
31
+ showAll: boolean;
32
+ /** Inputs that need attention after a submit or a server's answer, in form order. */
33
+ problems: readonly string[];
34
+ /** A message about the whole form: the form's own rule after a submit, or a server's. */
35
+ message: string | null;
36
+ /** When the values were saved last. */
37
+ savedAt: number | null;
38
+ /** When the unsaved changes were last kept as a draft on this device. */
39
+ draftSavedAt: number | null;
40
+ /** A draft brought back when the form opened, until it is discarded, dismissed, or saved. */
41
+ restored: FormRestoredDraft | null;
42
+ /** The id of the `<form>` element, for Save buttons outside it. */
43
+ formId: string | null;
44
+ /** How many `FormButtons` show this form's status. Without any, the form shows its own message. */
45
+ buttons: number;
46
+ }
47
+ /** The form on the page, attached by the `Form` component. */
48
+ export interface FormView {
49
+ /** Checks the inputs on the page as a submit does: every message shows, and the first problem takes focus. Returns the inputs with problems. */
50
+ validate: () => string[];
51
+ /** Focuses an input by name, or the first one. */
52
+ focus: (name?: string) => void;
53
+ }
54
+ /** A store of any values, for code that works with every form (a hook, a bar of buttons). */
55
+ export type AnyFormStore = FormStore<any>;
56
+ export declare class FormStore<TValues extends FormValues = FormValues> {
57
+ private options;
58
+ private inputByName;
59
+ private values;
60
+ private initial;
61
+ private isStarted;
62
+ private ruleErrors;
63
+ /** Rows inputs are checked when asked: 10,000 rows on every keystroke would be slow, and the rows check themselves. */
64
+ private staleRules;
65
+ private crossErrors;
66
+ private crossMessage;
67
+ private serverErrors;
68
+ private serverMessage;
69
+ private forced;
70
+ private touched;
71
+ private showAll;
72
+ /** Inputs the page found problems in on the last submit. */
73
+ private attention;
74
+ private changedNames;
75
+ private revisions;
76
+ private generation;
77
+ private versions;
78
+ private fieldListeners;
79
+ private statusListeners;
80
+ private valueListeners;
81
+ private status;
82
+ private draftTimer;
83
+ /** The draft key already looked up. Drafts are written only after, so an old draft is never overwritten unread. */
84
+ private draftChecked;
85
+ private draftSeq;
86
+ /** The user cancelled: no draft is written until they change a value again. */
87
+ private draftDropped;
88
+ /** A load during a render tells nobody; `announce` does, once the form has mounted. */
89
+ private quiet;
90
+ private unannounced;
91
+ /** The form on the page. Set by `Form`. */
92
+ view: FormView | null;
93
+ /** Submits the `<form>`, as its Save button does. Set by `SubmitForm`. */
94
+ submitter: (() => void) | null;
95
+ /** Whether the form has loaded its first values. */
96
+ get started(): boolean;
97
+ get inputs(): readonly InputParams[];
98
+ /** Every value, plus the fields the record came with. The same object until something changes; do not change it. */
99
+ getValue(): TValues;
100
+ get(name: string): unknown;
101
+ /** The values the form opened with, or saved last. */
102
+ getInitial(): TValues;
103
+ /** Only the values that differ from the ones the form opened with or saved last. */
104
+ getChanges(): Partial<TValues>;
105
+ /** The inputs whose values changed, in form order. */
106
+ changedInputs(): string[];
107
+ isChanged(): boolean;
108
+ getStatus: () => FormStatus;
109
+ /** The message an input shows for the form: a server's, the form's rule once the input was left or a submit ran, or its own rule after a submit its input missed. */
110
+ shownError(name: string): string | undefined;
111
+ /** The shown message, with the form's rule messages given, such as the ones before a change. */
112
+ private shownWith;
113
+ /** The input's own rule message for its value, whether it shows or not. */
114
+ ruleError(name: string): string | null;
115
+ /** The form's own rule message for an input, whether it shows or not. */
116
+ formRuleError(name: string): string | null;
117
+ /** The form's own rule message about the whole form. */
118
+ get formRuleMessage(): string | null;
119
+ /** Inputs whose values break a rule, their own or the form's, in form order. Inputs on the page may find more, such as text that is not a date yet. */
120
+ problems(): string[];
121
+ /** Whether every value passes, as far as the values tell. `validate()` also asks the inputs on the page. */
122
+ isValid(): boolean;
123
+ /** Changes whenever the input must render again: a new value from code, or a message it shows. */
124
+ fieldVersion(name: string): number;
125
+ /** The input's render stamp: it mounts again when this changes, to show a value that did not come from typing. */
126
+ stamp(name: string): string;
127
+ subscribeField(name: string, listener: () => void): () => void;
128
+ subscribeStatus: (listener: () => void) => (() => void);
129
+ /** Every value after each change. `name` is the input the user changed, or `null` for a load, a reset, or several at once. */
130
+ subscribeValue: (listener: (values: TValues, name: string | null) => void) => (() => void);
131
+ /**
132
+ * New inputs or rules. `recheck` checks every value again (the form does after a change of inputs or settings);
133
+ * without it, only the callbacks are swapped, which a parent's render does every time.
134
+ */
135
+ configure(options: FormStoreOptions<TValues>, recheck?: boolean): void;
136
+ /**
137
+ * Loads values, such as a record from a server. They become the values the form compares with, and every input shows
138
+ * them. With `keepChanged`, the values the user changed stay (a refresh that merges): only the others change, and the
139
+ * names returned are the changed values whose loaded ones also changed, so the page can say so. `draft: false` leaves
140
+ * a saved draft for a later load (the form's placeholders show while the real values load). `quiet` tells no listener
141
+ * until `announce()`, for a load during a render.
142
+ */
143
+ load(values?: Partial<TValues>, { keepChanged, draft, quiet }?: {
144
+ keepChanged?: boolean;
145
+ draft?: boolean;
146
+ quiet?: boolean;
147
+ }): string[];
148
+ /** Tells listeners about a quiet load. */
149
+ announce(): void;
150
+ private loadValues;
151
+ /** Brings back the values the form opened with or saved last, and clears every message. The draft goes too. */
152
+ reset(): void;
153
+ /** Sets a value from code. Its input shows it at once, and it counts as a change. */
154
+ set(name: string, value: unknown): void;
155
+ /** Sets several values from code, as one change. */
156
+ setValues(values: Partial<TValues>): void;
157
+ /**
158
+ * A value the user typed or picked, from the input rendered with `stamp`. An input that was replaced since (by a value
159
+ * from code, a load, or a reset) can still report its last value as it leaves; that value is ignored.
160
+ */
161
+ input(name: string, value: unknown, stamp: string): void;
162
+ /** Marks an input as left by the user: the form's rule messages on it show from now on. */
163
+ touch(name: string): void;
164
+ /**
165
+ * Shows messages from outside, such as a server's, on their inputs, with a message for the whole form. They replace
166
+ * the ones shown before; an input's message clears once its value changes. Names that are not inputs join the form's message.
167
+ */
168
+ setErrors(errors?: FormErrors, message?: string | null): void;
169
+ /** Clears the messages set with `setErrors`. */
170
+ clearErrors(): void;
171
+ /** Checks every value as a submit does: every message shows, and the first problem takes focus. Returns whether all is valid. */
172
+ validate(): boolean;
173
+ /** Focuses an input by name, or the form's first input. */
174
+ focus(name?: string): void;
175
+ /** Submits the form as its Save button does. Only a `SubmitForm` or an `ApiForm` can. */
176
+ submit(): void;
177
+ /** Writes the draft now, e.g. when the page is hidden. With nothing changed, the draft is removed. */
178
+ flushDraft(): void;
179
+ /** Puts back the values of the draft brought back when the form opened, and removes the draft. */
180
+ discardDraft(): void;
181
+ /** Hides the notice of a restored draft and keeps its values. */
182
+ dismissDraft(): void;
183
+ /** Removes the draft and leaves the values as they are, e.g. when the user cancels. Drafts start again with the next change. */
184
+ dropDraft(): void;
185
+ /** @internal Shows every message, as a submit does. `forced` are inputs whose own messages missed a problem their values have. */
186
+ reveal(problems: string[], forced?: readonly string[]): string[];
187
+ /** @internal The inputs the page finds problems in, as values change after a submit. */
188
+ setAttention(names: string[]): void;
189
+ /** @internal A submit starts: messages from the last answer go. */
190
+ beginSubmit(): void;
191
+ /** @internal A submit ended without a save. */
192
+ endSubmit(): void;
193
+ /**
194
+ * @internal A save: the values sent become the ones the form compares with; values typed while it ran stay changes.
195
+ * `extra` (from the server, such as a new id) is set on top.
196
+ */
197
+ commit(saved: TValues, extra?: Partial<TValues>): void;
198
+ /** @internal A save after which the form went back to its opening values (`resetOnSuccess`). */
199
+ markSaved(): void;
200
+ /** @internal */
201
+ setLoading(loading: boolean): void;
202
+ /** @internal */
203
+ setFormId(formId: string | null): void;
204
+ /** @internal A `FormButtons` shows the status; returns its removal. */
205
+ addButtons(): () => void;
206
+ private indexInputs;
207
+ /** Each input's value in the type the input reports; a missing one is the input's default. Other fields stay as they came. */
208
+ private normalize;
209
+ /** Inputs that were not there, or were hidden, get their value in the input's type, as a load gives it. */
210
+ private adoptNewInputs;
211
+ private change;
212
+ private checkRule;
213
+ private checkAllRules;
214
+ /** Runs the form's own rule; returns the inputs whose message from it changed. */
215
+ private checkCross;
216
+ private clearMessages;
217
+ /** The form's message: a server's, or the form's own rule once a submit ran. */
218
+ private formMessage;
219
+ /** Inputs to point at: the ones the page found on the last submit, and those with a server's message, in form order. */
220
+ private problemList;
221
+ private nextRevision;
222
+ private bump;
223
+ private bumpAll;
224
+ private shownSnapshot;
225
+ private bumpShownChanges;
226
+ private patchStatus;
227
+ private emit;
228
+ private scheduleDraft;
229
+ /** Looks for a draft under the form's key and brings back its values, except those the user changed since the form opened. */
230
+ private restoreDraft;
231
+ }