@ilo-org/react 0.7.8 → 0.8.1

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 (174) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/cjs/components/Checkbox/Checkbox.js +28 -16
  3. package/lib/cjs/components/Checkbox/index.js +25 -3
  4. package/lib/cjs/components/DatePicker/DatePicker.js +21 -16
  5. package/lib/cjs/components/DatePicker/index.js +4 -4
  6. package/lib/cjs/components/Dropdown/Dropdown.js +19 -15
  7. package/lib/cjs/components/Dropdown/index.js +3 -3
  8. package/lib/cjs/components/Fieldset/Fieldset.js +33 -9
  9. package/lib/cjs/components/Fieldset/index.js +2 -2
  10. package/lib/cjs/components/FileUpload/FileUpload.js +29 -15
  11. package/lib/cjs/components/FileUpload/index.js +3 -3
  12. package/lib/cjs/components/Form/Form.js +8 -55
  13. package/lib/cjs/components/Form/index.js +10 -20
  14. package/lib/cjs/components/FormControl/FormControl.js +79 -0
  15. package/lib/cjs/components/FormControl/index.js +16 -0
  16. package/lib/cjs/components/Input/Input.js +1 -1
  17. package/lib/cjs/components/NumberPicker/NumberPicker.js +21 -16
  18. package/lib/cjs/components/NumberPicker/index.js +4 -4
  19. package/lib/cjs/components/Radio/Radio.js +34 -17
  20. package/lib/cjs/components/Radio/index.js +19 -4
  21. package/lib/cjs/components/TextInput/TextInput.js +30 -0
  22. package/lib/cjs/components/TextInput/index.js +52 -0
  23. package/lib/cjs/components/Textarea/Textarea.js +19 -19
  24. package/lib/cjs/components/Textarea/index.js +26 -5
  25. package/lib/cjs/components/Toggle/Toggle.js +33 -0
  26. package/lib/cjs/components/Toggle/index.js +51 -0
  27. package/lib/cjs/components/Tooltip/Tooltip.js +2 -2
  28. package/lib/cjs/components/index.js +10 -11
  29. package/lib/cjs/hooks/usePrevious.js +20 -0
  30. package/lib/cjs/index.js +10 -11
  31. package/lib/esm/components/Checkbox/Checkbox.js +31 -19
  32. package/lib/esm/components/Checkbox/index.js +27 -2
  33. package/lib/esm/components/DatePicker/DatePicker.js +22 -17
  34. package/lib/esm/components/DatePicker/index.js +4 -4
  35. package/lib/esm/components/Dropdown/Dropdown.js +20 -16
  36. package/lib/esm/components/Dropdown/index.js +3 -3
  37. package/lib/esm/components/Fieldset/Fieldset.js +31 -11
  38. package/lib/esm/components/Fieldset/index.js +1 -1
  39. package/lib/esm/components/FileUpload/FileUpload.js +31 -17
  40. package/lib/esm/components/FileUpload/index.js +3 -3
  41. package/lib/esm/components/Form/Form.js +10 -57
  42. package/lib/esm/components/Form/index.js +13 -20
  43. package/lib/esm/components/FormControl/FormControl.js +73 -0
  44. package/lib/esm/components/{ChoiceGroup → FormControl}/index.js +3 -6
  45. package/lib/esm/components/NumberPicker/NumberPicker.js +21 -16
  46. package/lib/esm/components/NumberPicker/index.js +4 -4
  47. package/lib/esm/components/Radio/Radio.js +34 -17
  48. package/lib/esm/components/Radio/index.js +21 -3
  49. package/lib/esm/components/TextInput/TextInput.js +28 -0
  50. package/lib/esm/components/TextInput/index.js +49 -0
  51. package/lib/esm/components/Textarea/Textarea.js +19 -19
  52. package/lib/esm/components/Textarea/index.js +28 -4
  53. package/lib/esm/components/Toggle/Toggle.js +31 -0
  54. package/lib/esm/components/Toggle/index.js +48 -0
  55. package/lib/esm/components/Tooltip/Tooltip.js +2 -2
  56. package/lib/esm/components/index.js +8 -5
  57. package/lib/esm/hooks/usePrevious.js +15 -0
  58. package/lib/esm/index.js +8 -5
  59. package/lib/types/react/src/components/Checkbox/Checkbox.args.d.ts +52 -0
  60. package/lib/types/react/src/components/Checkbox/Checkbox.d.ts +5 -3
  61. package/lib/types/react/src/components/Checkbox/Checkbox.props.d.ts +4 -13
  62. package/lib/types/react/src/components/Checkbox/index.d.ts +1 -0
  63. package/lib/types/react/src/components/DatePicker/DatePicker.d.ts +4 -3
  64. package/lib/types/react/src/components/DatePicker/DatePicker.props.d.ts +10 -43
  65. package/lib/types/react/src/components/Dropdown/Dropdown.d.ts +5 -3
  66. package/lib/types/react/src/components/Dropdown/Dropdown.props.d.ts +16 -42
  67. package/lib/types/react/src/components/Fieldset/Fieldset.d.ts +6 -0
  68. package/lib/types/react/src/components/Fieldset/Fieldset.props.d.ts +14 -21
  69. package/lib/types/react/src/components/FileUpload/FileUpload.d.ts +5 -3
  70. package/lib/types/react/src/components/FileUpload/FileUpload.props.d.ts +7 -44
  71. package/lib/types/react/src/components/Form/Form.args.d.ts +2 -0
  72. package/lib/types/react/src/components/Form/Form.d.ts +1 -2
  73. package/lib/types/react/src/components/Form/Form.props.d.ts +4 -111
  74. package/lib/types/react/src/components/Form/index.d.ts +1 -0
  75. package/lib/types/react/src/components/FormControl/FormControl.d.ts +9 -0
  76. package/lib/types/react/src/components/FormControl/FormControl.props.d.ts +55 -0
  77. package/lib/types/react/src/components/FormControl/index.d.ts +2 -0
  78. package/lib/types/react/src/components/FormElement/FormElement.props.d.ts +2 -2
  79. package/lib/types/react/src/components/Input/Input.props.d.ts +2 -2
  80. package/lib/types/react/src/components/NumberPicker/NumberPicker.d.ts +5 -3
  81. package/lib/types/react/src/components/NumberPicker/NumberPicker.props.d.ts +5 -42
  82. package/lib/types/react/src/components/Radio/Radio.args.d.ts +8 -0
  83. package/lib/types/react/src/components/Radio/Radio.d.ts +5 -3
  84. package/lib/types/react/src/components/Radio/Radio.props.d.ts +4 -14
  85. package/lib/types/react/src/components/Radio/index.d.ts +1 -0
  86. package/lib/types/react/src/components/TextInput/TextInput.args.d.ts +10 -0
  87. package/lib/types/react/src/components/TextInput/TextInput.d.ts +6 -0
  88. package/lib/types/react/src/components/TextInput/TextInput.props.d.ts +17 -0
  89. package/lib/types/react/src/components/TextInput/index.d.ts +2 -0
  90. package/lib/types/react/src/components/Textarea/Textarea.args.d.ts +10 -0
  91. package/lib/types/react/src/components/Textarea/Textarea.d.ts +5 -3
  92. package/lib/types/react/src/components/Textarea/Textarea.props.d.ts +17 -39
  93. package/lib/types/react/src/components/Textarea/index.d.ts +2 -0
  94. package/lib/types/react/src/components/Toggle/Toggle.args.d.ts +12 -0
  95. package/lib/types/react/src/components/Toggle/Toggle.d.ts +5 -0
  96. package/lib/types/react/src/components/Toggle/Toggle.props.d.ts +22 -0
  97. package/lib/types/react/src/components/Toggle/index.d.ts +3 -0
  98. package/lib/types/react/src/components/Tooltip/Tooltip.props.d.ts +4 -0
  99. package/lib/types/react/src/components/index.d.ts +1 -5
  100. package/lib/types/react/src/hooks/usePrevious.d.ts +2 -0
  101. package/lib/types/react/src/types/index.d.ts +57 -1
  102. package/package.json +20 -19
  103. package/src/components/Checkbox/Checkbox.args.ts +31 -9
  104. package/src/components/Checkbox/Checkbox.props.ts +5 -13
  105. package/src/components/Checkbox/Checkbox.tsx +78 -76
  106. package/src/components/Checkbox/index.ts +1 -0
  107. package/src/components/DatePicker/DatePicker.args.ts +6 -32
  108. package/src/components/DatePicker/DatePicker.props.ts +11 -51
  109. package/src/components/DatePicker/DatePicker.tsx +71 -110
  110. package/src/components/Dropdown/Dropdown.args.ts +42 -192
  111. package/src/components/Dropdown/Dropdown.props.ts +18 -49
  112. package/src/components/Dropdown/Dropdown.tsx +73 -62
  113. package/src/components/Fieldset/Fieldset.props.ts +14 -23
  114. package/src/components/Fieldset/Fieldset.tsx +75 -69
  115. package/src/components/FileUpload/FileUpload.args.ts +25 -27
  116. package/src/components/FileUpload/FileUpload.props.ts +8 -53
  117. package/src/components/FileUpload/FileUpload.tsx +103 -72
  118. package/src/components/Form/Form.args.ts +2 -184
  119. package/src/components/Form/Form.props.ts +4 -133
  120. package/src/components/Form/Form.tsx +17 -77
  121. package/src/components/Form/index.ts +1 -0
  122. package/src/components/FormControl/FormControl.props.ts +72 -0
  123. package/src/components/FormControl/FormControl.tsx +169 -0
  124. package/src/components/FormControl/index.ts +2 -0
  125. package/src/components/FormElement/FormElement.props.ts +2 -2
  126. package/src/components/Input/Input.props.ts +2 -2
  127. package/src/components/Navigation/Navigation.args.ts +2 -1
  128. package/src/components/NumberPicker/NumberPicker.args.ts +18 -26
  129. package/src/components/NumberPicker/NumberPicker.props.ts +7 -52
  130. package/src/components/NumberPicker/NumberPicker.tsx +73 -56
  131. package/src/components/Radio/Radio.args.ts +1 -7
  132. package/src/components/Radio/Radio.props.ts +6 -14
  133. package/src/components/Radio/Radio.tsx +90 -52
  134. package/src/components/Radio/index.ts +1 -0
  135. package/src/components/TextInput/TextInput.args.ts +75 -0
  136. package/src/components/TextInput/TextInput.props.ts +20 -0
  137. package/src/components/TextInput/TextInput.tsx +71 -0
  138. package/src/components/TextInput/index.ts +2 -0
  139. package/src/components/Textarea/Textarea.args.ts +19 -37
  140. package/src/components/Textarea/Textarea.props.ts +18 -46
  141. package/src/components/Textarea/Textarea.tsx +44 -59
  142. package/src/components/Textarea/index.ts +2 -0
  143. package/src/components/Toggle/Toggle.args.ts +62 -0
  144. package/src/components/Toggle/Toggle.props.ts +27 -0
  145. package/src/components/Toggle/Toggle.tsx +85 -0
  146. package/src/components/Toggle/index.ts +3 -0
  147. package/src/components/Tooltip/Tooltip.props.ts +5 -0
  148. package/src/components/Tooltip/Tooltip.tsx +2 -0
  149. package/src/components/index.ts +1 -5
  150. package/src/hooks/usePrevious.ts +15 -0
  151. package/src/types/forms.args.ts +288 -0
  152. package/src/types/index.ts +69 -1
  153. package/tsconfig.json +2 -1
  154. package/lib/cjs/components/ChoiceGroup/ChoiceGroup.js +0 -34
  155. package/lib/cjs/components/ChoiceGroup/index.js +0 -19
  156. package/lib/cjs/components/FormGroup/FormGroup.js +0 -58
  157. package/lib/cjs/components/FormGroup/index.js +0 -26
  158. package/lib/esm/components/ChoiceGroup/ChoiceGroup.js +0 -32
  159. package/lib/esm/components/FormGroup/FormGroup.js +0 -56
  160. package/lib/esm/components/FormGroup/index.js +0 -20
  161. package/lib/types/react/src/components/ChoiceGroup/ChoiceGroup.d.ts +0 -4
  162. package/lib/types/react/src/components/ChoiceGroup/ChoiceGroup.props.d.ts +0 -20
  163. package/lib/types/react/src/components/ChoiceGroup/index.d.ts +0 -1
  164. package/lib/types/react/src/components/FormGroup/FormGroup.d.ts +0 -4
  165. package/lib/types/react/src/components/FormGroup/FormGroup.props.d.ts +0 -81
  166. package/lib/types/react/src/components/FormGroup/index.d.ts +0 -1
  167. package/src/components/ChoiceGroup/ChoiceGroup.args.ts +0 -95
  168. package/src/components/ChoiceGroup/ChoiceGroup.props.ts +0 -25
  169. package/src/components/ChoiceGroup/ChoiceGroup.tsx +0 -54
  170. package/src/components/ChoiceGroup/index.ts +0 -1
  171. package/src/components/FormGroup/FormGroup.args.ts +0 -85
  172. package/src/components/FormGroup/FormGroup.props.ts +0 -102
  173. package/src/components/FormGroup/FormGroup.tsx +0 -73
  174. package/src/components/FormGroup/index.ts +0 -1
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var classNames = require('classnames');
7
+ var nanoid = require('nanoid');
8
+ var require$$0 = require('react');
9
+ var hooks_useGlobalSettings = require('../../hooks/useGlobalSettings.js');
10
+ var components_Tooltip_Tooltip = require('../Tooltip/Tooltip.js');
11
+ require('tslib');
12
+ require('../../GlobalCtx-97e4b433.js');
13
+ require('react-dom');
14
+
15
+ // Calculates unique IDs for the internal accessibility elements
16
+ // TODO: When we upgrade to React 8, this should use useId instead
17
+ function getA11yFields(baseClass = "", { tooltip, helper, errorMessage } = {}) {
18
+ return {
19
+ tooltipId: tooltip && `${baseClass}--tooltip--${nanoid.nanoid()}`,
20
+ helperId: helper && `${baseClass}--helper--${nanoid.nanoid()}`,
21
+ errorId: errorMessage && `${baseClass}--error--${nanoid.nanoid()}`,
22
+ };
23
+ }
24
+ // Calculates the aria-describedby attribute value based on whether or not there's an error
25
+ function getAriaDescribedBy(getAllyFields, hasError) {
26
+ const { tooltipId, helperId, errorId } = getAllyFields;
27
+ const ariaDescribedBy = classNames(tooltipId, {
28
+ [`${helperId}`]: !hasError,
29
+ [`${errorId}`]: hasError,
30
+ });
31
+ // For some reason, classnames seems to return "undefined" as a string sometimes
32
+ if (!ariaDescribedBy || ariaDescribedBy === "undefined") {
33
+ return undefined;
34
+ }
35
+ return ariaDescribedBy;
36
+ }
37
+ // The context passed down to form elements wrapped by the form control
38
+ const FormControlContext = require$$0.createContext({});
39
+ // Hook to get the context value
40
+ const useFormControl = () => require$$0.useContext(FormControlContext);
41
+ const FormControl = ({ children, className, label, helper, errorMessage, tooltip, style, error, disabled, fieldId, labelSize = "medium", labelPlacement = "top", }) => {
42
+ const { prefix } = hooks_useGlobalSettings();
43
+ // Classes applied to the outer container
44
+ const baseClass = `${prefix}--form-control`;
45
+ // The ids of the tooltip, helper, and error only get calculated on first render
46
+ const a11yFields = require$$0.useMemo(() => getA11yFields(baseClass, { helper, errorMessage, tooltip }), [baseClass, helper, errorMessage, tooltip]);
47
+ // The ids of the tooltip, helper, and error
48
+ const { tooltipId, helperId, errorId } = a11yFields;
49
+ // The aria-describedby attribute value
50
+ const [ariaDescribedBy, setAriaDescribedBy] = require$$0.useState(undefined);
51
+ // Update the aria-describedby attribute value when the error changes
52
+ require$$0.useEffect(() => {
53
+ setAriaDescribedBy(getAriaDescribedBy({ tooltipId, helperId, errorId }, error));
54
+ }, [tooltipId, helperId, errorId, error]);
55
+ // The context passed down to form elements wrapped by the form control
56
+ const contextValue = {
57
+ ariaDescribedBy,
58
+ };
59
+ // Classes applied to the outer container
60
+ const errorClass = `${baseClass}__error`;
61
+ const disabledClass = `${baseClass}__disabled`;
62
+ const labelPlacementClass = `${baseClass}__label-placement__${labelPlacement}`;
63
+ const formControlClass = classNames(baseClass, className, labelPlacementClass, [{ [errorClass]: error }, { [disabledClass]: disabled }]);
64
+ // Classes applies to the label
65
+ const labelBaseClass = `${baseClass}--label`;
66
+ const labelSizeClass = `${labelBaseClass}__size__${labelSize}`;
67
+ const labelClass = classNames(labelBaseClass, labelSizeClass);
68
+ // Helper class
69
+ const helperClass = `${baseClass}--helper`;
70
+ // Show the error message if there is an error and an error message
71
+ const showError = !!error && !!errorMessage;
72
+ // Show the helper text if there is no error and a helper text
73
+ const showHelper = !showError && !!helper;
74
+ return (jsxRuntime.jsx(FormControlContext.Provider, Object.assign({ value: contextValue }, { children: jsxRuntime.jsxs("div", Object.assign({ className: formControlClass, style: style }, { children: [jsxRuntime.jsxs("span", Object.assign({ className: labelClass }, { children: [jsxRuntime.jsx("label", Object.assign({ htmlFor: fieldId }, { children: label })), tooltip && (jsxRuntime.jsx(components_Tooltip_Tooltip, { id: tooltipId, className: `${baseClass}--legend--tooltip`, icon: true, label: tooltip, theme: "dark" }))] })), children, showHelper && (jsxRuntime.jsx("span", Object.assign({ id: helperId, className: helperClass }, { children: helper }))), showError && (jsxRuntime.jsx("span", Object.assign({ id: errorId, className: helperClass, "aria-live": "assertive" }, { children: errorMessage })))] })) })));
75
+ };
76
+
77
+ exports.FormControlContext = FormControlContext;
78
+ exports.default = FormControl;
79
+ exports.useFormControl = useFormControl;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var components_FormControl_FormControl = require('./FormControl.js');
4
+ require('react/jsx-runtime');
5
+ require('classnames');
6
+ require('nanoid');
7
+ require('react');
8
+ require('../../hooks/useGlobalSettings.js');
9
+ require('tslib');
10
+ require('../../GlobalCtx-97e4b433.js');
11
+ require('../Tooltip/Tooltip.js');
12
+ require('react-dom');
13
+
14
+
15
+
16
+ exports.FormControl = components_FormControl_FormControl.default;
@@ -26,7 +26,7 @@ const Input = ({ callback, disabled = false, error, helper, id, label, name, pla
26
26
  callback(e);
27
27
  }
28
28
  };
29
- return (jsxRuntime.jsx(components_Fieldset_Fieldset, { children: jsxRuntime.jsx(components_FormElement_FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip }, { children: jsxRuntime.jsx("input", { id: id ? id : name, name: name, onChange: handleChange, disabled: disabled, placeholder: placeholder, required: required, type: type, className: InputClasses }) })) }));
29
+ return (jsxRuntime.jsx(components_Fieldset_Fieldset.default, { children: jsxRuntime.jsx(components_FormElement_FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip }, { children: jsxRuntime.jsx("input", { id: id ? id : name, name: name, onChange: handleChange, disabled: disabled, placeholder: placeholder, required: required, type: type, className: InputClasses }) })) }));
30
30
  };
31
31
 
32
32
  module.exports = Input;
@@ -1,32 +1,37 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var jsxRuntime = require('react/jsx-runtime');
5
+ var require$$0 = require('react');
4
6
  var classNames = require('classnames');
5
7
  var hooks_useGlobalSettings = require('../../hooks/useGlobalSettings.js');
6
- var components_Fieldset_Fieldset = require('../Fieldset/Fieldset.js');
7
- var components_FormElement_FormElement = require('../FormElement/FormElement.js');
8
- require('tslib');
9
- require('react');
8
+ var components_FormControl_FormControl = require('../FormControl/FormControl.js');
10
9
  require('../../GlobalCtx-97e4b433.js');
10
+ require('nanoid');
11
11
  require('../Tooltip/Tooltip.js');
12
12
  require('react-dom');
13
13
 
14
- const NumberPicker = ({ callback, disabled = false, error, helper, id, label, name, placeholder, required, tooltip, }) => {
14
+ const NumberPicker = require$$0.forwardRef(({ onChange, onBlur, disabled = false, error, id, name, placeholder, required, }, ref) => {
15
15
  const { prefix } = hooks_useGlobalSettings();
16
+ const formControlCtx = components_FormControl_FormControl.useFormControl();
17
+ const { ariaDescribedBy } = formControlCtx;
18
+ const inputClass = `${prefix}--input`;
16
19
  const baseClass = `${prefix}--numberpicker`;
17
- const NumberPickerClasses = classNames("", {
18
- [baseClass]: true,
19
- [`error`]: error,
20
+ const hasError = !disabled && !!error;
21
+ const numberPickerClasses = classNames(inputClass, baseClass, {
22
+ error: hasError,
20
23
  });
21
- /**
22
- * On change, if there is a callback, call it
23
- */
24
24
  const handleChange = (e) => {
25
- if (callback) {
26
- callback(e);
25
+ if (onChange) {
26
+ onChange(e);
27
27
  }
28
28
  };
29
- return (jsxRuntime.jsx(components_Fieldset_Fieldset, { children: jsxRuntime.jsx(components_FormElement_FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip, type: "text" }, { children: jsxRuntime.jsx("input", { id: id ? id : name, name: name, onChange: handleChange, disabled: disabled, placeholder: placeholder, required: required, type: "text", className: `${NumberPickerClasses} ${prefix}--input`, pattern: "[0-9]*", inputMode: "numeric" }) })) }));
30
- };
29
+ return (jsxRuntime.jsx("input", { ref: ref, id: id ? id : name, name: name, onChange: handleChange, onBlur: onBlur, disabled: disabled, placeholder: placeholder, required: required, type: "number", className: numberPickerClasses, pattern: "[0-9]*", inputMode: "numeric", "aria-describedby": ariaDescribedBy }));
30
+ });
31
+ const LabelledNumberPicker = require$$0.forwardRef((props, ref) => {
32
+ const { style, inputStyle, className } = props, rest = tslib.__rest(props, ["style", "inputStyle", "className"]);
33
+ const fieldId = props.id ? props.id : props.name;
34
+ return (jsxRuntime.jsx(components_FormControl_FormControl.default, Object.assign({ fieldId: fieldId, style: style, className: className }, rest, { children: jsxRuntime.jsx(NumberPicker, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
35
+ });
31
36
 
32
- module.exports = NumberPicker;
37
+ module.exports = LabelledNumberPicker;
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  var components_NumberPicker_NumberPicker = require('./NumberPicker.js');
4
+ require('tslib');
4
5
  require('react/jsx-runtime');
6
+ require('react');
5
7
  require('classnames');
6
8
  require('../../hooks/useGlobalSettings.js');
7
- require('tslib');
8
- require('react');
9
9
  require('../../GlobalCtx-97e4b433.js');
10
- require('../Fieldset/Fieldset.js');
10
+ require('../FormControl/FormControl.js');
11
+ require('nanoid');
11
12
  require('../Tooltip/Tooltip.js');
12
13
  require('react-dom');
13
- require('../FormElement/FormElement.js');
14
14
 
15
15
 
16
16
 
@@ -1,29 +1,46 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var jsxRuntime = require('react/jsx-runtime');
5
+ var require$$0 = require('react');
4
6
  var classNames = require('classnames');
5
7
  var hooks_useGlobalSettings = require('../../hooks/useGlobalSettings.js');
6
- var components_FormElement_FormElement = require('../FormElement/FormElement.js');
7
- require('tslib');
8
- require('react');
8
+ var components_Fieldset_Fieldset = require('../Fieldset/Fieldset.js');
9
+ var components_FormControl_FormControl = require('../FormControl/FormControl.js');
10
+ var hooks_usePrevious = require('../../hooks/usePrevious.js');
9
11
  require('../../GlobalCtx-97e4b433.js');
12
+ require('../Tooltip/Tooltip.js');
13
+ require('react-dom');
14
+ require('nanoid');
10
15
 
11
- const Radio = ({ callback, disabled = false, error, helper, id, label, name, required, selected, tooltip, value, }) => {
16
+ const Radio = require$$0.forwardRef(({ onChange, onBlur, disabled = false, error, id, name, required, checked, defaultChecked = false, value, }, ref) => {
12
17
  const { prefix } = hooks_useGlobalSettings();
13
- const baseClass = `${prefix}--radio`;
14
- const RadioClasses = classNames("", {
15
- [baseClass]: true,
16
- [`error`]: error,
17
- });
18
- /**
19
- * On change, if there is a callback, call it
20
- */
18
+ const { setHasError } = components_Fieldset_Fieldset.useFieldsetError();
19
+ const formControlCtx = components_FormControl_FormControl.useFormControl();
20
+ const prevError = hooks_usePrevious.usePrevious(error);
21
+ require$$0.useEffect(() => {
22
+ if (error !== prevError) {
23
+ setHasError(!!error);
24
+ }
25
+ }, [error, prevError, setHasError]);
26
+ const { ariaDescribedBy } = formControlCtx;
21
27
  const handleChange = (e) => {
22
- if (callback) {
23
- callback(e);
28
+ console.log(e.target.value);
29
+ if (onChange) {
30
+ onChange(e);
24
31
  }
25
32
  };
26
- return (jsxRuntime.jsx(components_FormElement_FormElement, Object.assign({ elemid: id, label: label, helper: helper, error: error, required: required, tooltip: tooltip }, { children: jsxRuntime.jsx("input", { id: id, name: name, onChange: handleChange, disabled: disabled, required: required, type: "radio", className: RadioClasses, checked: selected === value, value: value }) })));
27
- };
33
+ const baseClass = `${prefix}--radio`;
34
+ const errorClass = `${baseClass}__error`;
35
+ const RadioClasses = classNames(baseClass, {
36
+ [errorClass]: error,
37
+ });
38
+ return (jsxRuntime.jsx("input", { ref: ref, id: id ? id : name, name: name, onChange: handleChange, onBlur: onBlur, disabled: disabled, required: required, type: "radio", className: RadioClasses, defaultChecked: defaultChecked, "aria-describedby": ariaDescribedBy, checked: checked, value: value }));
39
+ });
40
+ const LabelledRadio = require$$0.forwardRef((props, ref) => {
41
+ const { style, inputStyle, className, labelPlacement = "end", labelSize = "small" } = props, rest = tslib.__rest(props, ["style", "inputStyle", "className", "labelPlacement", "labelSize"]);
42
+ const fieldId = props.id ? props.id : props.name;
43
+ return (jsxRuntime.jsx(components_FormControl_FormControl.default, Object.assign({ fieldId: fieldId, style: style, className: className, labelPlacement: labelPlacement, labelSize: labelSize }, rest, { children: jsxRuntime.jsx(Radio, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
44
+ });
28
45
 
29
- module.exports = Radio;
46
+ module.exports = LabelledRadio;
@@ -1,14 +1,29 @@
1
1
  'use strict';
2
2
 
3
3
  var components_Radio_Radio = require('./Radio.js');
4
+ require('tslib');
4
5
  require('react/jsx-runtime');
6
+ require('react');
5
7
  require('classnames');
6
8
  require('../../hooks/useGlobalSettings.js');
7
- require('tslib');
8
- require('react');
9
9
  require('../../GlobalCtx-97e4b433.js');
10
- require('../FormElement/FormElement.js');
11
-
10
+ require('../Fieldset/Fieldset.js');
11
+ require('../Tooltip/Tooltip.js');
12
+ require('react-dom');
13
+ require('../FormControl/FormControl.js');
14
+ require('nanoid');
15
+ require('../../hooks/usePrevious.js');
12
16
 
17
+ const basic = {
18
+ className: "Radio",
19
+ name: "radio",
20
+ };
21
+ /**
22
+ * Sample prop definitions Radio's enumerable properties (imported in stories and test)
23
+ */
24
+ const RadioArgs = {
25
+ basic,
26
+ };
13
27
 
14
28
  exports.Radio = components_Radio_Radio;
29
+ exports.RadioArgs = RadioArgs;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var require$$0 = require('react');
6
+ var classNames = require('classnames');
7
+ var hooks_useGlobalSettings = require('../../hooks/useGlobalSettings.js');
8
+ var components_FormControl_FormControl = require('../FormControl/FormControl.js');
9
+ require('../../GlobalCtx-97e4b433.js');
10
+ require('nanoid');
11
+ require('../Tooltip/Tooltip.js');
12
+ require('react-dom');
13
+
14
+ const TextInput = require$$0.forwardRef(({ onChange, onBlur, error, id, name, placeholder, required, pattern, disabled = false, type = "text", }, ref) => {
15
+ const { prefix } = hooks_useGlobalSettings();
16
+ const formControlCtx = components_FormControl_FormControl.useFormControl();
17
+ const { ariaDescribedBy } = formControlCtx;
18
+ const baseClass = `${prefix}--text-input`;
19
+ const inputClass = classNames(baseClass, {
20
+ [`${baseClass}__error`]: error,
21
+ });
22
+ return (jsxRuntime.jsx("input", { ref: ref, id: id ? id : name, name: name, onChange: onChange, onBlur: onBlur, disabled: disabled, placeholder: placeholder, required: required, type: type, className: inputClass, pattern: pattern, "aria-describedby": ariaDescribedBy }));
23
+ });
24
+ const LabelledTextInput = require$$0.forwardRef((props, ref) => {
25
+ const { style, inputStyle, className } = props, rest = tslib.__rest(props, ["style", "inputStyle", "className"]);
26
+ const fieldId = props.id ? props.id : props.name;
27
+ return (jsxRuntime.jsx(components_FormControl_FormControl.default, Object.assign({ fieldId: fieldId, style: style, className: className }, rest, { children: jsxRuntime.jsx(TextInput, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
28
+ });
29
+
30
+ module.exports = LabelledTextInput;
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var components_TextInput_TextInput = require('./TextInput.js');
4
+ require('tslib');
5
+ require('react/jsx-runtime');
6
+ require('react');
7
+ require('classnames');
8
+ require('../../hooks/useGlobalSettings.js');
9
+ require('../../GlobalCtx-97e4b433.js');
10
+ require('../FormControl/FormControl.js');
11
+ require('nanoid');
12
+ require('../Tooltip/Tooltip.js');
13
+ require('react-dom');
14
+
15
+ const basic = {
16
+ disabled: false,
17
+ errorMessage: "This is an error message",
18
+ error: false,
19
+ style: { width: "100%" },
20
+ id: "text-input",
21
+ label: "Insert your name here",
22
+ labelPlacement: "top",
23
+ labelSize: "medium",
24
+ name: "text",
25
+ placeholder: "This is a text field",
26
+ required: false,
27
+ type: "text",
28
+ };
29
+ const isdisabled = Object.assign(Object.assign({}, basic), { disabled: true, placeholder: "Disabled Text Field" });
30
+ const hashelper = Object.assign(Object.assign({}, basic), { placeholder: "This has a helper text" });
31
+ const haserror = Object.assign(Object.assign({}, basic), { placeholder: "This has an error", error: true });
32
+ const hastooltip = Object.assign(Object.assign({}, basic), { placeholder: "This has an tooltip", tooltip: "This is a tooltip" });
33
+ const email = Object.assign(Object.assign({}, basic), { label: "Enter your email address", placeholder: "my@email.com", type: "email", id: "email-input" });
34
+ const password = Object.assign(Object.assign({}, basic), { label: "Enter your password", placeholder: "Must be 8 digits long", type: "password", id: "password-input" });
35
+ const telephone = Object.assign(Object.assign({}, basic), { name: "tel", label: "Enter your telephone number", placeholder: "###-###-####", required: false, type: "tel", pattern: "[0-9]{3}-[0-9]{3}-[0-9]{4}" });
36
+ const url = Object.assign(Object.assign({}, basic), { label: "Enter website address", id: "url-input", name: "url", placeholder: "https://www.example.com", required: false, type: "url" });
37
+
38
+ var TextInput_args = /*#__PURE__*/Object.freeze({
39
+ __proto__: null,
40
+ basic: basic,
41
+ email: email,
42
+ haserror: haserror,
43
+ hashelper: hashelper,
44
+ hastooltip: hastooltip,
45
+ isdisabled: isdisabled,
46
+ password: password,
47
+ telephone: telephone,
48
+ url: url
49
+ });
50
+
51
+ exports.TextInput = components_TextInput_TextInput;
52
+ exports.TextInputArgs = TextInput_args;
@@ -1,32 +1,32 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var jsxRuntime = require('react/jsx-runtime');
5
+ var require$$0 = require('react');
4
6
  var classNames = require('classnames');
5
7
  var hooks_useGlobalSettings = require('../../hooks/useGlobalSettings.js');
6
- var components_Fieldset_Fieldset = require('../Fieldset/Fieldset.js');
7
- var components_FormElement_FormElement = require('../FormElement/FormElement.js');
8
- require('tslib');
9
- require('react');
8
+ var components_FormControl_FormControl = require('../FormControl/FormControl.js');
10
9
  require('../../GlobalCtx-97e4b433.js');
10
+ require('nanoid');
11
11
  require('../Tooltip/Tooltip.js');
12
12
  require('react-dom');
13
13
 
14
- const Textarea = ({ callback, disabled = false, error, helper, id, label, maxlength, minlength, name, placeholder, required, spellcheck, tooltip, }) => {
14
+ const Textarea = require$$0.forwardRef((_a, ref) => {
15
+ var { error, className, name, id } = _a, props = tslib.__rest(_a, ["error", "className", "name", "id"]);
15
16
  const { prefix } = hooks_useGlobalSettings();
17
+ const formControlCtx = components_FormControl_FormControl.useFormControl();
18
+ const { ariaDescribedBy } = formControlCtx;
16
19
  const baseClass = `${prefix}--textarea`;
17
- const TextareaClasses = classNames("", {
18
- [baseClass]: true,
19
- [`error`]: error,
20
+ const errorClass = `${baseClass}__error`;
21
+ const textAreaClass = classNames(baseClass, className, {
22
+ [errorClass]: error,
20
23
  });
21
- /**
22
- * On change, if there is a callback, call it
23
- */
24
- const handleChange = (e) => {
25
- if (callback) {
26
- callback(e);
27
- }
28
- };
29
- return (jsxRuntime.jsx(components_Fieldset_Fieldset, { children: jsxRuntime.jsx(components_FormElement_FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip }, { children: jsxRuntime.jsx("textarea", { id: id, name: name, onChange: handleChange, disabled: disabled, placeholder: placeholder, required: required, className: TextareaClasses, maxLength: maxlength, minLength: minlength, spellCheck: spellcheck }) })) }));
30
- };
24
+ return (jsxRuntime.jsx("textarea", Object.assign({ ref: ref, className: textAreaClass, name: name, id: id ? id : name, "aria-describedby": ariaDescribedBy }, props)));
25
+ });
26
+ const LabelledTextarea = require$$0.forwardRef((props, ref) => {
27
+ const { style, inputStyle, className } = props, rest = tslib.__rest(props, ["style", "inputStyle", "className"]);
28
+ const fieldId = props.id ? props.id : props.name;
29
+ return (jsxRuntime.jsx(components_FormControl_FormControl.default, Object.assign({ fieldId: fieldId, style: style, className: className }, rest, { children: jsxRuntime.jsx(Textarea, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
30
+ });
31
31
 
32
- module.exports = Textarea;
32
+ module.exports = LabelledTextarea;
@@ -1,17 +1,38 @@
1
1
  'use strict';
2
2
 
3
3
  var components_Textarea_Textarea = require('./Textarea.js');
4
+ require('tslib');
4
5
  require('react/jsx-runtime');
6
+ require('react');
5
7
  require('classnames');
6
8
  require('../../hooks/useGlobalSettings.js');
7
- require('tslib');
8
- require('react');
9
9
  require('../../GlobalCtx-97e4b433.js');
10
- require('../Fieldset/Fieldset.js');
10
+ require('../FormControl/FormControl.js');
11
+ require('nanoid');
11
12
  require('../Tooltip/Tooltip.js');
12
13
  require('react-dom');
13
- require('../FormElement/FormElement.js');
14
-
15
14
 
15
+ const placeholder = "It was a cold day in April and the clocks were striking thirteen....";
16
+ const basic = {
17
+ id: "textarea",
18
+ disabled: false,
19
+ name: "textarea",
20
+ placeholder,
21
+ required: false,
22
+ spellcheck: false,
23
+ label: "Insert your life story here",
24
+ labelPlacement: "top",
25
+ labelSize: "medium",
26
+ style: { width: "100%" },
27
+ errorMessage: "This is an error message",
28
+ };
29
+ const haserror = Object.assign(Object.assign({}, basic), { error: true });
30
+ const disabled = Object.assign(Object.assign({}, basic), { disabled: true });
31
+ var Textarea_args = {
32
+ basic,
33
+ haserror,
34
+ disabled,
35
+ };
16
36
 
17
37
  exports.Textarea = components_Textarea_Textarea;
38
+ exports.TextareaArgs = Textarea_args;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var require$$0 = require('react');
6
+ var hooks_useGlobalSettings = require('../../hooks/useGlobalSettings.js');
7
+ var classNames = require('classnames');
8
+ var components_FormControl_FormControl = require('../FormControl/FormControl.js');
9
+ require('../../GlobalCtx-97e4b433.js');
10
+ require('nanoid');
11
+ require('../Tooltip/Tooltip.js');
12
+ require('react-dom');
13
+
14
+ const Toggle = require$$0.forwardRef(({ size = "medium", error = false, disabled = false, defaultChecked = false, required = false, id, name, onChange, onBlur, onClick, checked, className, }, ref) => {
15
+ const { prefix } = hooks_useGlobalSettings();
16
+ const formControlCtx = components_FormControl_FormControl.useFormControl();
17
+ const { ariaDescribedBy } = formControlCtx;
18
+ const hasError = !disabled && !!error;
19
+ const baseClass = `${prefix}--input--toggle`;
20
+ const sliderClass = `${baseClass}--slider`;
21
+ const toggleClass = classNames(baseClass, className, `${baseClass}__size__${size}`, [
22
+ { [`${baseClass}__error`]: hasError },
23
+ { [`${baseClass}__disabled`]: disabled },
24
+ ]);
25
+ return (jsxRuntime.jsxs("div", Object.assign({ className: toggleClass }, { children: [jsxRuntime.jsx("input", { ref: ref, checked: checked, disabled: disabled, defaultChecked: defaultChecked, name: name, id: id ? id : name, type: "checkbox", role: "switch", required: required, onChange: onChange, onBlur: onBlur, onClick: onClick, "aria-describedby": ariaDescribedBy }), jsxRuntime.jsx("span", { className: sliderClass })] })));
26
+ });
27
+ const LabelledToggle = require$$0.forwardRef((props, ref) => {
28
+ const fieldId = props.id ? props.id : props.name;
29
+ const { style, inputStyle, className } = props, rest = tslib.__rest(props, ["style", "inputStyle", "className"]);
30
+ return (jsxRuntime.jsx(components_FormControl_FormControl.default, Object.assign({ fieldId: fieldId, style: style, className: className }, rest, { children: jsxRuntime.jsx(Toggle, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
31
+ });
32
+
33
+ module.exports = LabelledToggle;
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var components_Toggle_Toggle = require('./Toggle.js');
4
+ require('tslib');
5
+ require('react/jsx-runtime');
6
+ require('react');
7
+ require('../../hooks/useGlobalSettings.js');
8
+ require('../../GlobalCtx-97e4b433.js');
9
+ require('classnames');
10
+ require('../FormControl/FormControl.js');
11
+ require('nanoid');
12
+ require('../Tooltip/Tooltip.js');
13
+ require('react-dom');
14
+
15
+ const Default = {
16
+ defaultChecked: false,
17
+ errorMessage: "Invalid option",
18
+ name: "my-toggle",
19
+ size: "medium",
20
+ label: "Show details",
21
+ labelPlacement: "end",
22
+ labelSize: "small",
23
+ };
24
+ const Checked = Object.assign(Object.assign({}, Default), { defaultChecked: true });
25
+ const Disabled = Object.assign(Object.assign({}, Default), { disabled: true });
26
+ const Helper = Object.assign(Object.assign({}, Default), { helper: "This is a helper text" });
27
+ const Tooltip = Object.assign(Object.assign({}, Helper), { tooltip: "This is a tooltip" });
28
+ const Error = Object.assign(Object.assign({}, Default), { error: true });
29
+ const DefaultChecked = Object.assign(Object.assign({}, Default), { defaultChecked: true });
30
+ const Controlled = Object.assign(Object.assign({}, Default), { onClick: () => console.log("clicked"), checked: true });
31
+ const Large = Object.assign(Object.assign({}, Default), { size: "large" });
32
+ const Medium = Object.assign(Object.assign({}, Default), { size: "medium" });
33
+ const Small = Object.assign(Object.assign({}, Default), { size: "small" });
34
+
35
+ var Toggle_args = /*#__PURE__*/Object.freeze({
36
+ __proto__: null,
37
+ Checked: Checked,
38
+ Controlled: Controlled,
39
+ Default: Default,
40
+ DefaultChecked: DefaultChecked,
41
+ Disabled: Disabled,
42
+ Error: Error,
43
+ Helper: Helper,
44
+ Large: Large,
45
+ Medium: Medium,
46
+ Small: Small,
47
+ Tooltip: Tooltip
48
+ });
49
+
50
+ exports.Toggle = components_Toggle_Toggle;
51
+ exports.ToggleArgs = Toggle_args;
@@ -8,7 +8,7 @@ var ReactDOM = require('react-dom');
8
8
  require('tslib');
9
9
  require('../../GlobalCtx-97e4b433.js');
10
10
 
11
- const Tooltip = ({ className, children, icon, label, theme, }) => {
11
+ const Tooltip = ({ className, children, icon, label, theme, id, }) => {
12
12
  const { prefix } = hooks_useGlobalSettings();
13
13
  const baseClass = `${prefix}--tooltip`;
14
14
  const [isVisible, setIsVisible] = require$$0.useState(false);
@@ -97,7 +97,7 @@ const Tooltip = ({ className, children, icon, label, theme, }) => {
97
97
  left: position.x + "px",
98
98
  top: position.y + "px",
99
99
  };
100
- return (jsxRuntime.jsxs("div", Object.assign({ className: `${baseClass}--wrapper ${icon && "has-icon"}`, onMouseOver: handleOnMouseOver, onFocus: handleOnMouseOver, onMouseOut: handleOnMouseOut, onBlur: handleOnMouseOut }, { children: [!icon && jsxRuntime.jsx(jsxRuntime.Fragment, { children: children }), jsxRuntime.jsxs("span", Object.assign({ className: tooltipClasses, style: style, ref: tooltipRef }, { children: [jsxRuntime.jsx("span", { className: tooltipArrowClasses, role: "presentation" }), label] }))] })));
100
+ return (jsxRuntime.jsxs("div", Object.assign({ className: `${baseClass}--wrapper ${icon && "has-icon"}`, onMouseOver: handleOnMouseOver, onFocus: handleOnMouseOver, onMouseOut: handleOnMouseOut, onBlur: handleOnMouseOut, id: id }, { children: [!icon && jsxRuntime.jsx(jsxRuntime.Fragment, { children: children }), jsxRuntime.jsxs("span", Object.assign({ className: tooltipClasses, style: style, ref: tooltipRef }, { children: [jsxRuntime.jsx("span", { className: tooltipArrowClasses, role: "presentation" }), label] }))] })));
101
101
  };
102
102
 
103
103
  module.exports = Tooltip;