@rvx/ui 0.1.13 → 0.1.14

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 (94) hide show
  1. package/dist/common/theme.d.ts +10 -0
  2. package/dist/components/button.js +3 -2
  3. package/dist/components/button.js.map +1 -1
  4. package/dist/components/card.d.ts +1 -0
  5. package/dist/components/card.js +6 -3
  6. package/dist/components/card.js.map +1 -1
  7. package/dist/components/checkbox.js +6 -6
  8. package/dist/components/checkbox.js.map +1 -1
  9. package/dist/components/collapse.d.ts +16 -2
  10. package/dist/components/collapse.js +85 -4
  11. package/dist/components/collapse.js.map +1 -1
  12. package/dist/components/column.d.ts +1 -0
  13. package/dist/components/column.js +1 -0
  14. package/dist/components/column.js.map +1 -1
  15. package/dist/components/dialog.d.ts +1 -2
  16. package/dist/components/dialog.js +3 -5
  17. package/dist/components/dialog.js.map +1 -1
  18. package/dist/components/dropdown-input.js +2 -2
  19. package/dist/components/dropdown-input.js.map +1 -1
  20. package/dist/components/dropdown.js +2 -2
  21. package/dist/components/dropdown.js.map +1 -1
  22. package/dist/components/label.js +1 -1
  23. package/dist/components/label.js.map +1 -1
  24. package/dist/components/link.js +2 -1
  25. package/dist/components/link.js.map +1 -1
  26. package/dist/components/nav-list.js +2 -1
  27. package/dist/components/nav-list.js.map +1 -1
  28. package/dist/components/popout.d.ts +1 -2
  29. package/dist/components/popout.js +1 -2
  30. package/dist/components/popout.js.map +1 -1
  31. package/dist/components/popover.js +1 -2
  32. package/dist/components/popover.js.map +1 -1
  33. package/dist/components/radio-buttons.js +11 -10
  34. package/dist/components/radio-buttons.js.map +1 -1
  35. package/dist/components/slider.js +1 -2
  36. package/dist/components/slider.js.map +1 -1
  37. package/dist/components/tabs.d.ts +10 -0
  38. package/dist/components/tabs.js +31 -0
  39. package/dist/components/tabs.js.map +1 -0
  40. package/dist/components/text-input.js +5 -4
  41. package/dist/components/text-input.js.map +1 -1
  42. package/dist/components/validation-rules.d.ts +11 -0
  43. package/dist/components/validation-rules.js +37 -0
  44. package/dist/components/validation-rules.js.map +1 -0
  45. package/dist/components/validation.d.ts +53 -77
  46. package/dist/components/validation.js +117 -95
  47. package/dist/components/validation.js.map +1 -1
  48. package/dist/index.d.ts +2 -3
  49. package/dist/index.js +2 -3
  50. package/dist/index.js.map +1 -1
  51. package/dist/theme.module.css +75 -0
  52. package/dist/theme.module.css.map +1 -1
  53. package/package.json +3 -3
  54. package/src/common/theme.tsx +11 -0
  55. package/src/components/button.tsx +3 -2
  56. package/src/components/card.tsx +10 -5
  57. package/src/components/checkbox.tsx +6 -6
  58. package/src/components/collapse.tsx +127 -5
  59. package/src/components/column.tsx +2 -0
  60. package/src/components/dialog.tsx +3 -5
  61. package/src/components/dropdown-input.tsx +2 -2
  62. package/src/components/dropdown.tsx +2 -2
  63. package/src/components/label.tsx +1 -3
  64. package/src/components/link.tsx +2 -1
  65. package/src/components/nav-list.tsx +2 -1
  66. package/src/components/popout.tsx +1 -2
  67. package/src/components/popover.tsx +1 -2
  68. package/src/components/radio-buttons.tsx +21 -20
  69. package/src/components/slider.tsx +1 -2
  70. package/src/components/tabs.tsx +67 -0
  71. package/src/components/text-input.tsx +5 -4
  72. package/src/components/validation-rules.tsx +50 -0
  73. package/src/components/validation.tsx +175 -177
  74. package/src/index.tsx +2 -3
  75. package/src/theme/base.scss +7 -0
  76. package/src/theme/components/card.scss +4 -1
  77. package/src/theme/components/checkbox.scss +5 -0
  78. package/src/theme/components/column.scss +5 -0
  79. package/src/theme/components/radio-buttons.scss +5 -0
  80. package/src/theme/components/slider.scss +1 -0
  81. package/src/theme/components/tabs.scss +72 -0
  82. package/src/theme/theme.scss +1 -0
  83. package/dist/common/debounce.d.ts +0 -12
  84. package/dist/common/debounce.js +0 -23
  85. package/dist/common/debounce.js.map +0 -1
  86. package/dist/common/parsers.d.ts +0 -88
  87. package/dist/common/parsers.js +0 -62
  88. package/dist/common/parsers.js.map +0 -1
  89. package/dist/common/trim.d.ts +0 -12
  90. package/dist/common/trim.js +0 -16
  91. package/dist/common/trim.js.map +0 -1
  92. package/src/common/debounce.tsx +0 -36
  93. package/src/common/parsers.tsx +0 -167
  94. package/src/common/trim.tsx +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAA0B,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAc,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAEnH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAoC,MAAM,aAAa,CAAC;AAavE,MAAM,UAAU,aAAa,CAAC,KAqD7B;IACA,OAAO,IAAI,MAAM,CAAC;QACjB,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC;QAClD,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC;QACnD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,EAAE;YACjE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAQ,CAAC;YAC7B,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAE7B,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAC9B,MAAM,CAAC,IAAI,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;gBAC5B,IAAI,SAAS,EAAE,CAAC;oBACf,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;oBAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;oBACzH,MAAM,MAAM,GAAG,4CAA4C,SAAS,OAAO,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,wCAAwC,CAAC;oBACpJ,QAAQ,YAAY,EAAE,CAAC;wBACtB,KAAK,IAAI;4BACR,cAAc,CAAC,KAAK,GAAG,aAAa,MAAM,QAAQ,CAAC;4BACnD,MAAM;wBACP,KAAK,EAAE;4BACN,cAAc,CAAC,KAAK,GAAG,aAAa,MAAM,KAAK,WAAW,CAAC,MAAM,oBAAoB,CAAC;4BACtF,MAAM;wBACP,KAAK,KAAK;4BACT,cAAc,CAAC,KAAK,GAAG,kBAAkB,MAAM,kBAAkB,CAAC;4BAClE,MAAM;wBACP,KAAK,IAAI;4BACR,cAAc,CAAC,KAAK,GAAG,aAAa,WAAW,CAAC,KAAK,OAAO,MAAM,iBAAiB,CAAC;4BACpF,MAAM;oBACR,CAAC;gBACF,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,cAAK,KAAK,EAAE,KAAK,EAAE,kBAAkB,YACtD,cAAK,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,YACrE,KAAC,MAAM,IAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAChC,GAAG,EAAE;4BACL,OAAO,cAAK,OAAO,EAAC,WAAW,EAAC,mBAAmB,EAAC,MAAM,YACzD,eAAM,CAAC,EAAC,qBAAqB,GAAG,GAC3B,CAAC;wBACR,CAAC,GACO,GACJ,GACc,CAAC;YAEtB,MAAM,OAAO,GAAG,cAAK,KAAK,EAAE;oBAC3B,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE,eAAe;iBACtB,YACC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,GACN,CAAC;YACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAE1B,MAAM,IAAI,GAAG,eACZ,QAAQ,EAAC,IAAI,EACb,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,EACzC,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAE;oBACN,KAAK,EAAE,OAAO;oBACd,KAAK,CAAC,KAAK;iBACX,EACD,KAAK,EAAE;oBACN,KAAK,CAAC,KAAK;oBACX;wBACC,aAAa,EAAE,KAAK,CAAC,UAAU;wBAC/B,iBAAiB,EAAE,KAAK,CAAC,aAAa;wBACtC,YAAY,EAAE,KAAK,CAAC,SAAS;wBAC7B,gBAAgB,EAAE,KAAK,CAAC,YAAY;qBACpC;iBACD,gBACW,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,sBACvB,KAAK,CAAC,kBAAkB,CAAC,aAE1C,SAAS,EACV,cAAK,KAAK,EAAE,KAAK,EAAE,mBAAmB,YACpC,OAAO,GACH,IACc,CAAC;YACtB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACb,CAAC;QACD,aAAa,EAAE,KAAK,CAAC,aAAa;KAClC,CAAC,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,OAAO,CAAC,KAmFvB;IACA,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,aAAa,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC,QAAQ;QACvB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAElB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;QACjC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,SAAS;YAC/D,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,SAAS,CAAC;QACb,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,MAAM,EAAE,KAAK,CAAC,EAAE;YACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,EAAE;QACF,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;QACjC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC;KAC3C,CAAC,CAAC,CAAC;IAEJ,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1,27 +1,28 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "rvx/jsx-runtime";
2
- import { For, get, map, optionalString, Signal, string } from "rvx";
2
+ import { For, get, map, Signal, uniqueId } from "rvx";
3
3
  import { isPending } from "rvx/async";
4
+ import { optionalString, string } from "rvx/convert";
4
5
  import { THEME } from "../common/theme.js";
5
6
  import { Text } from "./text.js";
6
- import { validatorFor } from "./validation.js";
7
- import { uniqueId } from "rvx/id";
7
+ import { closestValidator } from "./validation.js";
8
8
  export function RadioButtons(props) {
9
9
  const group = uniqueId();
10
10
  const theme = THEME.current;
11
11
  const disabled = props.value instanceof Signal
12
12
  ? () => isPending() || get(props.disabled)
13
13
  : true;
14
- const validator = props.value instanceof Signal ? validatorFor(props.value) : undefined;
14
+ const validator = props.value instanceof Signal ? closestValidator(props.value) : undefined;
15
15
  return _jsx("div", { role: "radiogroup", id: props.id, class: [
16
16
  theme?.radio_buttons,
17
17
  props.class,
18
- ], style: props.style, "aria-readonly": string(!(props.options instanceof Signal)), "aria-invalid": validator ? optionalString(validator.invalid) : undefined, "aria-errormessage": validator ? validator.errorMessageIds : undefined, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], children: _jsx(For, { each: props.options, children: (option, index) => {
18
+ ], style: props.style, "aria-readonly": string(!(props.options instanceof Signal)), "aria-invalid": validator ? optionalString(validator.invalid) : undefined, "aria-errormessage": validator ? validator.messageIds : undefined, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], children: _jsx(For, { each: props.options, children: (option, index) => {
19
19
  const id = uniqueId();
20
- return _jsxs("label", { for: id, class: theme?.radio_button_label, children: [_jsx("input", { id: id, type: "radio", class: theme?.radio_button_input, name: group, value: id, disabled: disabled, autofocus: () => get(props.autofocus) && index() === 0, "prop:checked": map(props.value, x => x === option.value), "on:input": () => {
21
- if (props.value instanceof Signal) {
22
- props.value.value = option.value;
23
- }
24
- } }), _jsx(Text, { class: theme?.radio_button_content, children: option.label })] });
20
+ const input = _jsx("input", { id: id, type: "radio", class: theme?.radio_button_input, name: group, value: id, disabled: disabled, autofocus: () => get(props.autofocus) && index() === 0, "prop:checked": map(props.value, x => x === option.value), "on:input": () => {
21
+ if (props.value instanceof Signal) {
22
+ props.value.value = option.value;
23
+ }
24
+ } });
25
+ return _jsxs("label", { for: id, class: theme?.radio_button_label, children: [theme?.radio_button_padding ? _jsx("div", { class: theme.radio_button_padding, children: input }) : input, _jsx(Text, { class: theme?.radio_button_content, children: option.label })] });
25
26
  } }) });
26
27
  }
27
28
  //# sourceMappingURL=radio-buttons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-buttons.js","sourceRoot":"","sources":["../../src/components/radio-buttons.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAc,MAAM,KAAK,CAAC;AACxG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAOlC,MAAM,UAAU,YAAY,CAAI,KAc/B;IACA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAE5B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,YAAY,MAAM;QAC7C,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC;IAER,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAExF,OAAO,cACN,IAAI,EAAC,YAAY,EACjB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,mBACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,MAAM,CAAC,CAAC,kBAC3C,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,uBACpD,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,gBACxD,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,YAEzC,KAAC,GAAG,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,YACtB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAClB,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;gBAEtB,OAAO,iBACN,GAAG,EAAE,EAAE,EACP,KAAK,EAAE,KAAK,EAAE,kBAAkB,aAEhC,gBACC,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAChC,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE,KAAK,CAAC,kBACxC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,cAC7C,GAAG,EAAE;gCACd,IAAI,KAAK,CAAC,KAAK,YAAY,MAAM,EAAE,CAAC;oCACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gCAClC,CAAC;4BACF,CAAC,GACA,EACF,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,YACtC,MAAM,CAAC,KAAK,GACP,IACA,CAAC;YACV,CAAC,GACI,GACD,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"radio-buttons.js","sourceRoot":"","sources":["../../src/components/radio-buttons.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAc,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOnD,MAAM,UAAU,YAAY,CAAI,KAc/B;IACA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAE5B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,YAAY,MAAM;QAC7C,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC;IAER,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5F,OAAO,cACN,IAAI,EAAC,YAAY,EACjB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,mBACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,MAAM,CAAC,CAAC,kBAC3C,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,uBACpD,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,gBACnD,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,YAEzC,KAAC,GAAG,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,YACtB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAClB,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,gBACb,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAChC,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE,KAAK,CAAC,kBACxC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,cAC7C,GAAG,EAAE;wBACd,IAAI,KAAK,CAAC,KAAK,YAAY,MAAM,EAAE,CAAC;4BACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBAClC,CAAC;oBACF,CAAC,GACA,CAAC;gBAEH,OAAO,iBACN,GAAG,EAAE,EAAE,EACP,KAAK,EAAE,KAAK,EAAE,kBAAkB,aAE/B,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,cAAK,KAAK,EAAE,KAAK,CAAC,oBAAoB,YAAG,KAAK,GAAO,CAAC,CAAC,CAAC,KAAK,EAC5F,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,YACtC,MAAM,CAAC,KAAK,GACP,IACA,CAAC;YACV,CAAC,GACI,GACD,CAAC;AACR,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "rvx/jsx-runtime";
2
- import { map, Show, Signal } from "rvx";
3
- import { uniqueId } from "rvx/id";
2
+ import { map, Show, Signal, uniqueId } from "rvx";
4
3
  import { THEME } from "../common/theme.js";
5
4
  export function Slider(props) {
6
5
  const theme = THEME.current;
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAc,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,UAAU,MAAM,CAAC,KAQtB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAE5B,MAAM,KAAK,GAAG,gBACb,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAC,OAAO,EACZ,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EACpC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EACtC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,gBAC5B,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,cACzC,GAAG,EAAE;YACd,IAAI,KAAK,CAAC,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACF,CAAC,EACD,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAC9C,CAAC;IAEvB,OAAO,eACN,KAAK,EAAE,KAAK,EAAE,WAAW,aAExB,KAAK,EAEN,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,YACvB,OAAO,CAAC,EAAE,CAAC,mBAAU,EAAE,EAAE,QAAQ,YAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAQ,KAAK,EAAE,MAAM,GAAI,CAAC,GACvC,GACL,EAEN,KAAK,CAAC,QAAQ,IACV,CAAC;AACR,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY;IACnE,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACf,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"slider.js","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAc,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,UAAU,MAAM,CAAC,KAQtB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAE5B,MAAM,KAAK,GAAG,gBACb,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAC,OAAO,EACZ,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EACpC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EACtC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,gBAC5B,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,cACzC,GAAG,EAAE;YACd,IAAI,KAAK,CAAC,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACF,CAAC,EACD,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAC9C,CAAC;IAEvB,OAAO,eACN,KAAK,EAAE,KAAK,EAAE,WAAW,aAExB,KAAK,EAEN,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,YACvB,OAAO,CAAC,EAAE,CAAC,mBAAU,EAAE,EAAE,QAAQ,YAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAQ,KAAK,EAAE,MAAM,GAAI,CAAC,GACvC,GACL,EAEN,KAAK,CAAC,QAAQ,IACV,CAAC;AACR,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY;IACnE,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACf,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Component, Expression, Signal } from "rvx";
2
+ export interface Tab {
3
+ label: Component;
4
+ content: Component;
5
+ }
6
+ export declare function Tabs(props: {
7
+ tabs: Expression<Iterable<Tab>>;
8
+ selected?: Signal<Tab | undefined>;
9
+ padded?: Expression<boolean | undefined>;
10
+ }): unknown;
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "rvx/jsx-runtime";
2
+ import { $, For, get, map, Show, uniqueIdFor, watch } from "rvx";
3
+ import { string } from "rvx/convert";
4
+ import { THEME } from "../common/theme.js";
5
+ export function Tabs(props) {
6
+ const theme = THEME.current;
7
+ const selected = props.selected ?? $(undefined);
8
+ watch(selected, current => {
9
+ if (current === undefined) {
10
+ for (const tab of get(props.tabs)) {
11
+ selected.value = tab;
12
+ break;
13
+ }
14
+ }
15
+ });
16
+ return _jsxs(_Fragment, { children: [_jsx("div", { role: "tablist", class: [
17
+ theme?.tab_list,
18
+ map(props.padded, padded => padded ? theme?.tab_list_padded : undefined),
19
+ ], children: _jsx(For, { each: props.tabs, children: tab => _jsx("button", { role: "tab", class: [
20
+ theme?.tab_handle,
21
+ () => selected.value === tab ? theme?.tab_handle_current : undefined,
22
+ ], "aria-selected": string(() => selected.value === tab), "aria-controls": uniqueIdFor(tab), "on:click": event => {
23
+ event.stopImmediatePropagation();
24
+ event.preventDefault();
25
+ selected.value = tab;
26
+ }, children: tab.label() }) }) }), _jsx(Show, { when: selected, children: tab => _jsx("div", { role: "tabpanel", id: uniqueIdFor(tab), class: [
27
+ theme?.tab_panel,
28
+ map(props.padded, padded => padded ? theme?.tab_panel_padded : undefined),
29
+ ], children: tab.content() }) })] });
30
+ }
31
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAU,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAO3C,MAAM,UAAU,IAAI,CAAC,KAIpB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;IAEhD,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;QACzB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;gBACrB,MAAM;YACP,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,8BACN,cACC,IAAI,EAAC,SAAS,EACd,KAAK,EAAE;oBACN,KAAK,EAAE,QAAQ;oBACf,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;iBACxE,YAED,KAAC,GAAG,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,YACnB,GAAG,CAAC,EAAE,CAAC,iBACP,IAAI,EAAC,KAAK,EACV,KAAK,EAAE;4BACN,KAAK,EAAE,UAAU;4BACjB,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,SAAS;yBACpE,mBACc,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,mBACpC,WAAW,CAAC,GAAG,CAAC,cACrB,KAAK,CAAC,EAAE;4BACjB,KAAK,CAAC,wBAAwB,EAAE,CAAC;4BACjC,KAAK,CAAC,cAAc,EAAE,CAAC;4BACvB,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;wBACtB,CAAC,YAEA,GAAG,CAAC,KAAK,EAAE,GACJ,GACJ,GACD,EACN,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,YAClB,GAAG,CAAC,EAAE,CAAC,cACP,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,EACpB,KAAK,EAAE;wBACN,KAAK,EAAE,SAAS;wBAChB,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;qBACzE,YAEA,GAAG,CAAC,OAAO,EAAE,GACT,GACA,IACL,CAAC;AACL,CAAC"}
@@ -1,13 +1,14 @@
1
1
  import { jsx as _jsx } from "rvx/jsx-runtime";
2
- import { get, optionalString, Signal } from "rvx";
2
+ import { get, Signal } from "rvx";
3
3
  import { isPending, waitFor } from "rvx/async";
4
+ import { optionalString } from "rvx/convert";
4
5
  import { keyFor } from "../common/events.js";
5
6
  import { THEME } from "../common/theme.js";
6
- import { validatorFor } from "./validation.js";
7
+ import { closestValidator } from "./validation.js";
7
8
  export function TextInput(props) {
8
9
  const theme = THEME.current;
9
10
  const disabled = () => isPending() || get(props.disabled);
10
- const validator = props.value instanceof Signal ? validatorFor(props.value) : undefined;
11
+ const validator = props.value instanceof Signal ? closestValidator(props.value) : undefined;
11
12
  const InputTag = props.multiline ? "textarea" : "input";
12
13
  const input = _jsx(InputTag, { type: props.multiline ? undefined : (() => get(props.type) ?? "text"), rows: props.multiline ? props.rows : undefined, wrap: props.multiline ? props.wrap : undefined, disabled: disabled, class: [
13
14
  theme?.text_input,
@@ -29,7 +30,7 @@ export function TextInput(props) {
29
30
  waitFor(result);
30
31
  }
31
32
  }
32
- }, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], "aria-invalid": validator ? optionalString(validator.invalid) : undefined, "aria-errormessage": validator ? validator.errorMessageIds : undefined });
33
+ }, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], "aria-invalid": validator ? optionalString(validator.invalid) : undefined, "aria-errormessage": validator ? validator.messageIds : undefined });
33
34
  return input;
34
35
  }
35
36
  //# sourceMappingURL=text-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/components/text-input.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/components/text-input.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Component, Expression, Signal } from "rvx";
2
+ export declare function rule<T>(source: Signal<T>, condition: (value: T) => boolean, message: Component): Signal<T>;
3
+ export interface IntParserOptions {
4
+ /** The validation message for invalid formats. */
5
+ format: Component;
6
+ /** The validation message for an out of range value. Defaults to the format message. */
7
+ range?: Component;
8
+ min?: Expression<number>;
9
+ max?: Expression<number>;
10
+ }
11
+ export declare function intParser(source: Signal<number>, options: IntParserOptions): Signal<string>;
@@ -0,0 +1,37 @@
1
+ import { $, get, watchUpdates } from "rvx";
2
+ import { Validator } from "./validation.js";
3
+ export function rule(source, condition, message) {
4
+ Validator.get(source).prependRule(() => {
5
+ if (!condition(source.value)) {
6
+ return [message];
7
+ }
8
+ });
9
+ return source;
10
+ }
11
+ export function intParser(source, options) {
12
+ const input = $(String(source.value), source);
13
+ const messages = $([]);
14
+ Validator.get(source).prependRule(() => messages.value);
15
+ const min = options.min ?? Number.MIN_SAFE_INTEGER;
16
+ const max = options.max ?? Number.MAX_SAFE_INTEGER;
17
+ watchUpdates(source, value => {
18
+ input.value = String(value);
19
+ });
20
+ watchUpdates(input, value => {
21
+ if (/^-?\d+$/.test(value)) {
22
+ const num = Number.parseInt(value);
23
+ if (Number.isSafeInteger(num) && num >= get(min) && num <= get(max)) {
24
+ messages.value = [];
25
+ source.value = num;
26
+ }
27
+ else {
28
+ messages.value = [options.range ?? options.format];
29
+ }
30
+ }
31
+ else {
32
+ messages.value = [options.format];
33
+ }
34
+ });
35
+ return input;
36
+ }
37
+ //# sourceMappingURL=validation-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-rules.js","sourceRoot":"","sources":["../../src/components/validation-rules.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAyB,GAAG,EAAU,YAAY,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,IAAI,CAAI,MAAiB,EAAE,SAAgC,EAAE,OAAkB;IAC9F,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,OAAO,CAAC,CAAC;QAClB,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AACf,CAAC;AAWD,MAAM,UAAU,SAAS,CAAC,MAAsB,EAAE,OAAyB;IAC1E,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,CAAC,CAAc,EAAE,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAEnD,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;QAC5B,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;QAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrE,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACP,QAAQ,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;QACF,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -1,110 +1,86 @@
1
- import { ClassValue, Context, Expression, Signal, StyleValue, TriggerPipe } from "rvx";
2
- import { Emitter, Event } from "rvx/event";
3
- /**
4
- * Context for validation options used by new validators.
5
- */
1
+ import { Component, Context, Signal } from "rvx";
6
2
  export declare const VALIDATION: Context<ValidationOptions | undefined>;
7
- /**
8
- * Defines when accessed signals trigger automatic validation.
9
- *
10
- * + **if-validated** - **Default.** Validate if validation did run before.
11
- * + **if-invalid** - Validate if currently invalid.
12
- * + **never** - Never validate automatically.
13
- */
14
- export type ValidationSignalTrigger = "if-validated" | "if-invalid" | "never";
3
+ export type ValidationTrigger = "if-validated" | "if-invalid" | "never";
15
4
  export interface ValidationOptions {
16
- signalTrigger?: ValidationSignalTrigger;
5
+ trigger?: ValidationTrigger;
6
+ }
7
+ export interface ValidationRule {
8
+ /**
9
+ * Validate this rule.
10
+ *
11
+ * Immediately accessed signals may be tracked by the caller to trigger automatic re-validation when updated.
12
+ *
13
+ * @param abortSignal An optional abort signal to abort validaiton if supported.
14
+ * @returns An array of validation message components. If empty, this rule is considered valid.
15
+ */
16
+ (abortSignal?: AbortSignal): Component[] | undefined | Promise<Component[] | undefined>;
17
+ }
18
+ export declare class ValidationRuleEntry {
19
+ #private;
20
+ constructor(rule: ValidationRule, notify: () => void);
21
+ get messages(): Component[];
22
+ validate(abortSignal: AbortSignal | undefined, sideEffect: boolean): Promise<boolean>;
23
+ reset(): void;
17
24
  }
18
25
  export declare class Validator {
19
26
  #private;
20
27
  constructor();
28
+ validate(abortSignal?: AbortSignal): Promise<boolean>;
21
29
  /**
22
- * Reactively get all validation rule entries.
23
- */
24
- rules: () => readonly ValidationRuleEntry[];
25
- /**
26
- * An expression to get a space separated list of error message ids.
27
- */
28
- errorMessageIds: () => string;
29
- /**
30
- * An expression to check if this validator is in an invalid state.
30
+ * Reactively check if this validator is in an invalid state.
31
+ *
32
+ * @returns `true` if invalid.
31
33
  */
32
34
  invalid: () => boolean;
33
35
  /**
34
- * Add a rule to be validated first until the current lifecycle is disposed.
36
+ * Reactively get a space separated list of message ids.
35
37
  */
36
- prependRule(rule: ValidationRule): void;
38
+ messageIds: () => string;
39
+ get rules(): ValidationRuleEntry[];
37
40
  /**
38
- * Add a rule to be validated last until the current lifecycle is disposed.
41
+ * Append a rule to this validator until the current lifecycle is disposed.
39
42
  */
40
43
  appendRule(rule: ValidationRule): void;
41
44
  /**
42
- * Attach this validator to an object.
43
- */
44
- attach(target: object): void;
45
- /**
46
- * Validate using the currently attached rules.
47
- */
48
- validate(signal?: AbortSignal): Promise<boolean>;
49
- /**
50
- * Trigger validation as a side effect.
45
+ * Prepend a rule to this validator until the current lifecycle is disposed.
51
46
  */
52
- triggerValidation(): void;
47
+ prependRule(rule: ValidationRule): void;
53
48
  /**
54
- * Reset this validator to it's initial state.
49
+ * Attach this validator to the specified target.
50
+ *
51
+ * This will overwrite existing validators on the target.
55
52
  */
56
- reset(): void;
53
+ attach(target: Signal<unknown>): void;
57
54
  /**
58
- * Get or attach a validator to an object.
55
+ * Find the {@link closestValidator closest validator} or {@link Validator.prototype.attach attach} a new one to the target's {@link Signal.prototype.root root}.
59
56
  */
60
- static attach(target: object): Validator;
57
+ static get(target: Signal<unknown>): Validator;
61
58
  }
62
59
  /**
63
60
  * Get the validator attached to the specified target.
61
+ *
62
+ * @param target The target.
63
+ * @returns The validator or `undefined` if there is none.
64
64
  */
65
- export declare function validatorFor(target: object): Validator | undefined;
66
- export interface ValidationRule {
67
- validate(signal?: AbortSignal): boolean | Promise<boolean>;
68
- message: unknown;
69
- }
70
- export declare class ValidationRuleEntry {
71
- readonly id: string;
72
- readonly visible: Signal<boolean>;
73
- readonly alert: Emitter<[]>;
74
- readonly message: unknown;
75
- readonly validate: ValidationRule["validate"];
76
- readonly updated: TriggerPipe;
77
- constructor(rule: ValidationRule, updated: TriggerPipe);
78
- }
79
- export interface ValidateFn<T> {
80
- (value: T, signal?: AbortSignal): boolean | Promise<boolean>;
81
- }
65
+ export declare function validatorFor(target: Signal<unknown>): Validator | undefined;
82
66
  /**
83
- * Prepend a validation rule to the validator attached to the specified signal.
67
+ * Find the closest validator attached to the specified target or any of it's {@link Signal.prototype.source sources}.
84
68
  *
85
- * This is a shorthand, meant to be used with `signal.pipe`.
86
- *
87
- * @param target The signal to attach the validator to.
88
- * @param validate A function to validate the current value. Immediately accessed signals may trigger re-validation when updated.
89
- * @param message The validation message to show when invalid.
90
- * @returns The target itself.
69
+ * @param target The target.
70
+ * @returns The validator or `undefined` if there is none.
91
71
  */
92
- export declare function rule<T>(target: Signal<T>, validate: ValidateFn<T>, message: unknown): Signal<T>;
72
+ export declare function closestValidator(target: Signal<unknown>): Validator | undefined;
93
73
  /**
94
- * Validate all specified targets in parallel.
74
+ * Validate the specified targets in parallel.
75
+ *
76
+ * @param targets The targets that have attached validators.
77
+ * @param abortSignal An optional abort signal to abort validation if supported.
78
+ * @returns `true` if valid.
95
79
  */
96
- export declare function validate(...targets: object[]): Promise<boolean>;
80
+ export declare function validate(targets: Signal<unknown>[], abortSignal?: AbortSignal): Promise<boolean>;
97
81
  export declare function ValidationMessage(props: {
98
- visible?: Expression<boolean | undefined>;
99
- alert?: Event<[]>;
100
- class?: ClassValue;
101
- style?: StyleValue;
102
- id?: Expression<string | undefined>;
103
- children?: unknown;
82
+ children: unknown;
104
83
  }): unknown;
105
- /**
106
- * Render validation messages for the validator attached to a specific target.
107
- */
108
84
  export declare function ValidationMessages(props: {
109
- for: object;
85
+ for: Signal<unknown> | Validator;
110
86
  }): unknown;