react-science 19.7.1 → 19.9.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 (30) hide show
  1. package/lib/components/form/components/field_groups/svg_line_style.d.ts +2 -0
  2. package/lib/components/form/components/field_groups/svg_line_style.d.ts.map +1 -1
  3. package/lib/components/form/components/field_groups/svg_text_style.d.ts +2 -0
  4. package/lib/components/form/components/field_groups/svg_text_style.d.ts.map +1 -1
  5. package/lib/components/form/components/input/index.d.ts +10 -0
  6. package/lib/components/form/components/input/index.d.ts.map +1 -0
  7. package/lib/components/form/components/input/index.js +2 -0
  8. package/lib/components/form/components/input/index.js.map +1 -0
  9. package/lib/components/form/components/input/radio_group.d.ts +13 -0
  10. package/lib/components/form/components/input/radio_group.d.ts.map +1 -0
  11. package/lib/components/form/components/input/radio_group.js +27 -0
  12. package/lib/components/form/components/input/radio_group.js.map +1 -0
  13. package/lib/components/form/components/layout/index.d.ts +2 -0
  14. package/lib/components/form/components/layout/index.d.ts.map +1 -0
  15. package/lib/components/form/components/layout/index.js +2 -0
  16. package/lib/components/form/components/layout/index.js.map +1 -0
  17. package/lib/components/form/context/use_ts_form.d.ts +7 -0
  18. package/lib/components/form/context/use_ts_form.d.ts.map +1 -1
  19. package/lib/components/form/context/use_ts_form.js +9 -0
  20. package/lib/components/form/context/use_ts_form.js.map +1 -1
  21. package/lib/components/index.d.ts +3 -1
  22. package/lib/components/index.d.ts.map +1 -1
  23. package/lib/components/index.js +3 -1
  24. package/lib/components/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/components/form/components/input/index.ts +9 -0
  27. package/src/components/form/components/input/radio_group.tsx +70 -0
  28. package/src/components/form/components/layout/index.ts +1 -0
  29. package/src/components/form/context/use_ts_form.ts +9 -0
  30. package/src/components/index.ts +3 -1
@@ -19,6 +19,7 @@ export declare const FieldGroupSVGLineStyleFields: <TFormData, TFields extends i
19
19
  readonly Select: typeof import("../input/select.tsx").Select;
20
20
  readonly Switch: typeof import("../input/switch.tsx").Switch;
21
21
  readonly ColorPicker: typeof import("../input/color_picker.tsx").ColorPicker;
22
+ readonly RadioGroup: typeof import("../input/radio_group.tsx").RadioGroup;
22
23
  }, {
23
24
  readonly SubmitButton: typeof import("../input/submit_button.tsx").SubmitButton;
24
25
  readonly ResetButton: typeof import("../input/reset_button.tsx").ResetButton;
@@ -30,6 +31,7 @@ export declare const FieldGroupSVGLineStyleFields: <TFormData, TFields extends i
30
31
  readonly Select: typeof import("../input/select.tsx").Select;
31
32
  readonly Switch: typeof import("../input/switch.tsx").Switch;
32
33
  readonly ColorPicker: typeof import("../input/color_picker.tsx").ColorPicker;
34
+ readonly RadioGroup: typeof import("../input/radio_group.tsx").RadioGroup;
33
35
  }, {
34
36
  readonly SubmitButton: typeof import("../input/submit_button.tsx").SubmitButton;
35
37
  readonly ResetButton: typeof import("../input/reset_button.tsx").ResetButton;
@@ -1 +1 @@
1
- {"version":3,"file":"svg_line_style.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/field_groups/svg_line_style.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAaD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAqCvC,CAAC"}
1
+ {"version":3,"file":"svg_line_style.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/field_groups/svg_line_style.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAaD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAqCvC,CAAC"}
@@ -20,6 +20,7 @@ export declare const FieldGroupSVGTextStyleFields: <TFormData, TFields extends i
20
20
  readonly Select: typeof import("../input/select.tsx").Select;
21
21
  readonly Switch: typeof import("../input/switch.tsx").Switch;
22
22
  readonly ColorPicker: typeof import("../input/color_picker.tsx").ColorPicker;
23
+ readonly RadioGroup: typeof import("../input/radio_group.tsx").RadioGroup;
23
24
  }, {
24
25
  readonly SubmitButton: typeof import("../input/submit_button.tsx").SubmitButton;
25
26
  readonly ResetButton: typeof import("../input/reset_button.tsx").ResetButton;
@@ -31,6 +32,7 @@ export declare const FieldGroupSVGTextStyleFields: <TFormData, TFields extends i
31
32
  readonly Select: typeof import("../input/select.tsx").Select;
32
33
  readonly Switch: typeof import("../input/switch.tsx").Switch;
33
34
  readonly ColorPicker: typeof import("../input/color_picker.tsx").ColorPicker;
35
+ readonly RadioGroup: typeof import("../input/radio_group.tsx").RadioGroup;
34
36
  }, {
35
37
  readonly SubmitButton: typeof import("../input/submit_button.tsx").SubmitButton;
36
38
  readonly ResetButton: typeof import("../input/reset_button.tsx").ResetButton;
@@ -1 +1 @@
1
- {"version":3,"file":"svg_text_style.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/field_groups/svg_text_style.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDA4DvC,CAAC"}
1
+ {"version":3,"file":"svg_text_style.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/field_groups/svg_text_style.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDA4DvC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { type Checkbox as _Checkbox } from './checkbox.js';
2
+ export { type ColorPicker as _ColorPicker } from './color_picker.js';
3
+ export { type Input as _Input } from './input.js';
4
+ export { type NumericInput as _NumericInput } from './numeric_input.js';
5
+ export { type RadioGroup as _RadioGroup } from './radio_group.js';
6
+ export { type ResetButton as _ResetButton } from './reset_button.js';
7
+ export { type Select as _Select } from './select.js';
8
+ export { type SubmitButton as _SubmitButton } from './submit_button.js';
9
+ export { type Switch as _Switch } from './switch.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,KAAK,WAAW,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,KAAK,KAAK,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,KAAK,UAAU,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,KAAK,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,YAAY,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,KAAK,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form/components/input/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { RadioGroupProps as BPRadioGroupProps } from '@blueprintjs/core';
2
+ import type { FormGroupInputProps } from '../input_groups/index.ts';
3
+ interface RadioGroupProps extends Omit<FormGroupInputProps, 'placeholder'>, Omit<BPRadioGroupProps, keyof FormGroupInputProps | 'onChange' | 'id' | 'name' | 'onBlur' | 'selectedValue'> {
4
+ }
5
+ /**
6
+ * Default inline to true if the final layout (`layout ?? formLayout`) is 'inline'
7
+ * If you need to override this, set `inline={false}`.
8
+ *
9
+ * @param props
10
+ */
11
+ export declare function RadioGroup(props: RadioGroupProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=radio_group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio_group.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/input/radio_group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAM9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,UAAU,eACR,SACE,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,EACxC,IAAI,CACF,iBAAiB,EACf,MAAM,mBAAmB,GACzB,UAAU,GACV,IAAI,GACJ,MAAM,GACN,QAAQ,GACR,eAAe,CAClB;CAAG;AAER;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAyChD"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { RadioGroup as BPRadioGroup } from '@blueprintjs/core';
3
+ import { useFieldContext } from "../../context/use_ts_form.js";
4
+ import { useFormContext } from "../input_groups/form_context.js";
5
+ import { FormGroup } from "../input_groups/index.js";
6
+ /**
7
+ * Default inline to true if the final layout (`layout ?? formLayout`) is 'inline'
8
+ * If you need to override this, set `inline={false}`.
9
+ *
10
+ * @param props
11
+ */
12
+ export function RadioGroup(props) {
13
+ const { label, required, helpText, layout, fullWidth, ...radioGroupProps } = props;
14
+ const { layout: formLayout } = useFormContext();
15
+ const finalLayout = layout ?? formLayout;
16
+ const overridableRadioGroupProps = finalLayout === 'inline' ? { inline: true } : {};
17
+ const field = useFieldContext();
18
+ const error = field
19
+ .getMeta()
20
+ .errors.map((e) => e.message)
21
+ .at(0);
22
+ function onChange(event) {
23
+ return field.handleChange(event.currentTarget.value);
24
+ }
25
+ return (_jsx(FormGroup, { name: field.name, label: label, intent: error ? 'danger' : 'none', required: required, error: error, helpText: helpText, layout: layout, fullWidth: fullWidth, children: _jsx(BPRadioGroup, { ...overridableRadioGroupProps, ...radioGroupProps, id: field.name, name: field.name, onBlur: field.handleBlur, selectedValue: field.state.value, onChange: onChange }) }));
26
+ }
27
+ //# sourceMappingURL=radio_group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio_group.js","sourceRoot":"","sources":["../../../../../src/components/form/components/input/radio_group.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAerD;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GACxE,KAAK,CAAC;IAER,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,IAAI,UAAU,CAAC;IACzC,MAAM,0BAA0B,GAC9B,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnD,MAAM,KAAK,GAAG,eAAe,EAAU,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK;SAChB,OAAO,EAAE;SACT,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SAC5B,EAAE,CAAC,CAAC,CAAC,CAAC;IAET,SAAS,QAAQ,CAAC,KAAkC;QAClD,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CACL,KAAC,SAAS,IACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EACjC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,YAEpB,KAAC,YAAY,OACP,0BAA0B,KAC1B,eAAe,EACnB,EAAE,EAAE,KAAK,CAAC,IAAI,EACd,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAChC,QAAQ,EAAE,QAAQ,GAClB,GACQ,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { type Section as _Section } from './Section.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form/components/layout/index.ts"],"names":[],"mappings":""}
@@ -2,6 +2,7 @@ import { Checkbox } from '../components/input/checkbox.js';
2
2
  import { ColorPicker } from '../components/input/color_picker.tsx';
3
3
  import { Input } from '../components/input/input.js';
4
4
  import { NumericInput } from '../components/input/numeric_input.js';
5
+ import { RadioGroup } from '../components/input/radio_group.js';
5
6
  import { ResetButton } from '../components/input/reset_button.js';
6
7
  import { Select } from '../components/input/select.js';
7
8
  import { SubmitButton } from '../components/input/submit_button.js';
@@ -15,6 +16,7 @@ declare const withForm: <TFormData, TOnMount extends import("@tanstack/react-for
15
16
  readonly Select: typeof Select;
16
17
  readonly Switch: typeof Switch;
17
18
  readonly ColorPicker: typeof ColorPicker;
19
+ readonly RadioGroup: typeof RadioGroup;
18
20
  }, {
19
21
  readonly SubmitButton: typeof SubmitButton;
20
22
  readonly ResetButton: typeof ResetButton;
@@ -27,6 +29,7 @@ declare const withForm: <TFormData, TOnMount extends import("@tanstack/react-for
27
29
  readonly Select: typeof Select;
28
30
  readonly Switch: typeof Switch;
29
31
  readonly ColorPicker: typeof ColorPicker;
32
+ readonly RadioGroup: typeof RadioGroup;
30
33
  }, {
31
34
  readonly SubmitButton: typeof SubmitButton;
32
35
  readonly ResetButton: typeof ResetButton;
@@ -39,6 +42,7 @@ declare const withForm: <TFormData, TOnMount extends import("@tanstack/react-for
39
42
  readonly Select: typeof Select;
40
43
  readonly Switch: typeof Switch;
41
44
  readonly ColorPicker: typeof ColorPicker;
45
+ readonly RadioGroup: typeof RadioGroup;
42
46
  }, {
43
47
  readonly SubmitButton: typeof SubmitButton;
44
48
  readonly ResetButton: typeof ResetButton;
@@ -51,6 +55,7 @@ declare const withForm: <TFormData, TOnMount extends import("@tanstack/react-for
51
55
  readonly Select: typeof Select;
52
56
  readonly Switch: typeof Switch;
53
57
  readonly ColorPicker: typeof ColorPicker;
58
+ readonly RadioGroup: typeof RadioGroup;
54
59
  }, {
55
60
  readonly SubmitButton: typeof SubmitButton;
56
61
  readonly ResetButton: typeof ResetButton;
@@ -62,6 +67,7 @@ declare const withForm: <TFormData, TOnMount extends import("@tanstack/react-for
62
67
  readonly Select: typeof Select;
63
68
  readonly Switch: typeof Switch;
64
69
  readonly ColorPicker: typeof ColorPicker;
70
+ readonly RadioGroup: typeof RadioGroup;
65
71
  }, {
66
72
  readonly SubmitButton: typeof SubmitButton;
67
73
  readonly ResetButton: typeof ResetButton;
@@ -76,6 +82,7 @@ export declare const useForm: <TFormData, TOnMount extends import("@tanstack/rea
76
82
  readonly Select: typeof Select;
77
83
  readonly Switch: typeof Switch;
78
84
  readonly ColorPicker: typeof ColorPicker;
85
+ readonly RadioGroup: typeof RadioGroup;
79
86
  }, {
80
87
  readonly SubmitButton: typeof SubmitButton;
81
88
  readonly ResetButton: typeof ResetButton;
@@ -1 +1 @@
1
- {"version":3,"file":"use_ts_form.d.ts","sourceRoot":"","sources":["../../../../src/components/form/context/use_ts_form.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE1D,QAAA,MAAQ,cAAc,2IAAE,eAAe,8KACb,CAAC;AAE3B,QAAA,MAAoB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;KAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAgB1C,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;;EAAa,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"use_ts_form.d.ts","sourceRoot":"","sources":["../../../../src/components/form/context/use_ts_form.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE1D,QAAA,MAAQ,cAAc,2IAAE,eAAe,8KACb,CAAC;AAS3B,QAAA,MAAoB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;KAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAiB1C,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;;;EAAa,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC"}
@@ -3,12 +3,20 @@ import { Checkbox } from '../components/input/checkbox.js';
3
3
  import { ColorPicker } from "../components/input/color_picker.js";
4
4
  import { Input } from '../components/input/input.js';
5
5
  import { NumericInput } from '../components/input/numeric_input.js';
6
+ import { RadioGroup } from '../components/input/radio_group.js';
6
7
  import { ResetButton } from '../components/input/reset_button.js';
7
8
  import { Select } from '../components/input/select.js';
8
9
  import { SubmitButton } from '../components/input/submit_button.js';
9
10
  import { Switch } from '../components/input/switch.js';
10
11
  import { Section } from '../components/layout/Section.js';
11
12
  const { useFormContext, useFieldContext, formContext, fieldContext } = createFormHookContexts();
13
+ /*
14
+ * formComponents and fieldComponents components MUST have their types
15
+ * exported from the `../components/input/index.ts`
16
+ * or `../components/layout/index.ts` file.
17
+ *
18
+ * It is necessary for `withForm` usage.
19
+ */
12
20
  const { useAppForm, withForm, withFieldGroup } = createFormHook({
13
21
  fieldContext,
14
22
  formContext,
@@ -24,6 +32,7 @@ const { useAppForm, withForm, withFieldGroup } = createFormHook({
24
32
  Select,
25
33
  Switch,
26
34
  ColorPicker,
35
+ RadioGroup,
27
36
  },
28
37
  });
29
38
  export const useForm = useAppForm;
@@ -1 +1 @@
1
- {"version":3,"file":"use_ts_form.js","sourceRoot":"","sources":["../../../../src/components/form/context/use_ts_form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAsC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE1D,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,GAClE,sBAAsB,EAAE,CAAC;AAE3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC;IAC9D,YAAY;IACZ,WAAW;IACX,cAAc,EAAE;QACd,YAAY;QACZ,WAAW;QACX,OAAO;KACR;IACD,eAAe,EAAE;QACf,KAAK;QACL,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,MAAM;QACN,WAAW;KACZ;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"use_ts_form.js","sourceRoot":"","sources":["../../../../src/components/form/context/use_ts_form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAsC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE1D,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,GAClE,sBAAsB,EAAE,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC;IAC9D,YAAY;IACZ,WAAW;IACX,cAAc,EAAE;QACd,YAAY;QACZ,WAAW;QACX,OAAO;KACR;IACD,eAAe,EAAE;QACf,KAAK;QACL,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,MAAM;QACN,WAAW;QACX,UAAU;KACX;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC"}
@@ -14,9 +14,11 @@ export * from './root-layout/index.js';
14
14
  export * from './split_pane/index.js';
15
15
  export * from './table/index.js';
16
16
  export * from './toolbar/index.js';
17
- export * from './form/context/use_ts_form.js';
18
17
  export * from './form/components/field_groups/index.js';
19
18
  export * from './form/components/input_groups/index.js';
19
+ export * from './form/components/input/index.js';
20
+ export * from './form/components/layout/index.js';
21
+ export * from './form/context/use_ts_form.js';
20
22
  export * from './activity_bar/index.js';
21
23
  export * from './activity_panel/index.js';
22
24
  export * from './utils/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC"}
@@ -14,9 +14,11 @@ export * from './root-layout/index.js';
14
14
  export * from './split_pane/index.js';
15
15
  export * from './table/index.js';
16
16
  export * from './toolbar/index.js';
17
- export * from './form/context/use_ts_form.js';
18
17
  export * from './form/components/field_groups/index.js';
19
18
  export * from './form/components/input_groups/index.js';
19
+ export * from './form/components/input/index.js';
20
+ export * from './form/components/layout/index.js';
21
+ export * from './form/context/use_ts_form.js';
20
22
  export * from './activity_bar/index.js';
21
23
  export * from './activity_panel/index.js';
22
24
  export * from './utils/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-science",
3
- "version": "19.7.1",
3
+ "version": "19.9.0",
4
4
  "description": "React components to build scientific applications UI",
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,9 @@
1
+ export { type Checkbox as _Checkbox } from './checkbox.js';
2
+ export { type ColorPicker as _ColorPicker } from './color_picker.js';
3
+ export { type Input as _Input } from './input.js';
4
+ export { type NumericInput as _NumericInput } from './numeric_input.js';
5
+ export { type RadioGroup as _RadioGroup } from './radio_group.js';
6
+ export { type ResetButton as _ResetButton } from './reset_button.js';
7
+ export { type Select as _Select } from './select.js';
8
+ export { type SubmitButton as _SubmitButton } from './submit_button.js';
9
+ export { type Switch as _Switch } from './switch.js';
@@ -0,0 +1,70 @@
1
+ import type { RadioGroupProps as BPRadioGroupProps } from '@blueprintjs/core';
2
+ import { RadioGroup as BPRadioGroup } from '@blueprintjs/core';
3
+ import type { FormEvent } from 'react';
4
+
5
+ import { useFieldContext } from '../../context/use_ts_form.ts';
6
+ import { useFormContext } from '../input_groups/form_context.ts';
7
+ import type { FormGroupInputProps } from '../input_groups/index.ts';
8
+ import { FormGroup } from '../input_groups/index.ts';
9
+
10
+ interface RadioGroupProps
11
+ extends
12
+ Omit<FormGroupInputProps, 'placeholder'>,
13
+ Omit<
14
+ BPRadioGroupProps,
15
+ | keyof FormGroupInputProps
16
+ | 'onChange'
17
+ | 'id'
18
+ | 'name'
19
+ | 'onBlur'
20
+ | 'selectedValue'
21
+ > {}
22
+
23
+ /**
24
+ * Default inline to true if the final layout (`layout ?? formLayout`) is 'inline'
25
+ * If you need to override this, set `inline={false}`.
26
+ *
27
+ * @param props
28
+ */
29
+ export function RadioGroup(props: RadioGroupProps) {
30
+ const { label, required, helpText, layout, fullWidth, ...radioGroupProps } =
31
+ props;
32
+
33
+ const { layout: formLayout } = useFormContext();
34
+ const finalLayout = layout ?? formLayout;
35
+ const overridableRadioGroupProps: Pick<BPRadioGroupProps, 'inline'> =
36
+ finalLayout === 'inline' ? { inline: true } : {};
37
+
38
+ const field = useFieldContext<string>();
39
+ const error = field
40
+ .getMeta()
41
+ .errors.map((e) => e.message)
42
+ .at(0);
43
+
44
+ function onChange(event: FormEvent<HTMLInputElement>) {
45
+ return field.handleChange(event.currentTarget.value);
46
+ }
47
+
48
+ return (
49
+ <FormGroup
50
+ name={field.name}
51
+ label={label}
52
+ intent={error ? 'danger' : 'none'}
53
+ required={required}
54
+ error={error}
55
+ helpText={helpText}
56
+ layout={layout}
57
+ fullWidth={fullWidth}
58
+ >
59
+ <BPRadioGroup
60
+ {...overridableRadioGroupProps}
61
+ {...radioGroupProps}
62
+ id={field.name}
63
+ name={field.name}
64
+ onBlur={field.handleBlur}
65
+ selectedValue={field.state.value}
66
+ onChange={onChange}
67
+ />
68
+ </FormGroup>
69
+ );
70
+ }
@@ -0,0 +1 @@
1
+ export { type Section as _Section } from './Section.js';
@@ -4,6 +4,7 @@ import { Checkbox } from '../components/input/checkbox.js';
4
4
  import { ColorPicker } from '../components/input/color_picker.tsx';
5
5
  import { Input } from '../components/input/input.js';
6
6
  import { NumericInput } from '../components/input/numeric_input.js';
7
+ import { RadioGroup } from '../components/input/radio_group.js';
7
8
  import { ResetButton } from '../components/input/reset_button.js';
8
9
  import { Select } from '../components/input/select.js';
9
10
  import { SubmitButton } from '../components/input/submit_button.js';
@@ -13,6 +14,13 @@ import { Section } from '../components/layout/Section.js';
13
14
  const { useFormContext, useFieldContext, formContext, fieldContext } =
14
15
  createFormHookContexts();
15
16
 
17
+ /*
18
+ * formComponents and fieldComponents components MUST have their types
19
+ * exported from the `../components/input/index.ts`
20
+ * or `../components/layout/index.ts` file.
21
+ *
22
+ * It is necessary for `withForm` usage.
23
+ */
16
24
  const { useAppForm, withForm, withFieldGroup } = createFormHook({
17
25
  fieldContext,
18
26
  formContext,
@@ -28,6 +36,7 @@ const { useAppForm, withForm, withFieldGroup } = createFormHook({
28
36
  Select,
29
37
  Switch,
30
38
  ColorPicker,
39
+ RadioGroup,
31
40
  },
32
41
  });
33
42
 
@@ -14,9 +14,11 @@ export * from './root-layout/index.js';
14
14
  export * from './split_pane/index.js';
15
15
  export * from './table/index.js';
16
16
  export * from './toolbar/index.js';
17
- export * from './form/context/use_ts_form.js';
18
17
  export * from './form/components/field_groups/index.js';
19
18
  export * from './form/components/input_groups/index.js';
19
+ export * from './form/components/input/index.js';
20
+ export * from './form/components/layout/index.js';
21
+ export * from './form/context/use_ts_form.js';
20
22
  export * from './activity_bar/index.js';
21
23
  export * from './activity_panel/index.js';
22
24
  export * from './utils/index.js';