@ilo-org/react 0.7.8 → 0.8.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 (174) hide show
  1. package/CHANGELOG.md +14 -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 +19 -18
  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
@@ -4,9 +4,9 @@ var components_Accordion_AccordionButton = require('./Accordion/AccordionButton.
4
4
  var components_Accordion_AccordionPanel = require('./Accordion/AccordionPanel.js');
5
5
  var components_Accordion_AccordionItem = require('./Accordion/AccordionItem.js');
6
6
  var components_Accordion_Accordion = require('./Accordion/Accordion.js');
7
+ var components_Form_Form = require('./Form/Form.js');
7
8
  var components_Collapse_Collapse = require('./Collapse/Collapse.js');
8
9
  var components_Empty_Empty = require('./Empty/Empty.js');
9
- var components_FormGroup_FormGroup = require('./FormGroup/FormGroup.js');
10
10
  var components_Image_Image = require('./Image/Image.js');
11
11
  var components_Loading_Loading = require('./Loading/Loading.js');
12
12
  var components_Radio_Radio = require('./Radio/Radio.js');
@@ -21,10 +21,10 @@ require('../TagCtx-929c7753.js');
21
21
  var components_Button_Button = require('./Button/Button.js');
22
22
  var components_ContextMenu_ContextMenu = require('./ContextMenu/ContextMenu.js');
23
23
  var components_Fieldset_Fieldset = require('./Fieldset/Fieldset.js');
24
- var components_Input_Input = require('./Input/Input.js');
25
24
  var components_Notification_Notification = require('./Notification/Notification.js');
26
25
  var components_ReadMore_ReadMore = require('./ReadMore/ReadMore.js');
27
26
  var components_Textarea_Textarea = require('./Textarea/Textarea.js');
27
+ require('./Textarea/index.js');
28
28
  var components_Callout_Callout = require('./Callout/Callout.js');
29
29
  require('./Callout/index.js');
30
30
  var components_Credit_Credit = require('./Credit/Credit.js');
@@ -35,17 +35,15 @@ var components_NumberPicker_NumberPicker = require('./NumberPicker/NumberPicker.
35
35
  var components_RichText_RichText = require('./RichText/RichText.js');
36
36
  var components_Tooltip_Tooltip = require('./Tooltip/Tooltip.js');
37
37
  var components_Checkbox_Checkbox = require('./Checkbox/Checkbox.js');
38
+ require('./Checkbox/index.js');
38
39
  var components_DatePicker_DatePicker = require('./DatePicker/DatePicker.js');
39
- var components_Form_Form = require('./Form/Form.js');
40
40
  var components_Hero_Hero = require('./Hero/Hero.js');
41
41
  require('./SocialMedia/index.js');
42
42
  var components_LinkList_LinkList = require('./LinkList/LinkList.js');
43
43
  var components_Pagination_Pagination = require('./Pagination/Pagination.js');
44
44
  var components_SearchField_SearchField = require('./SearchField/SearchField.js');
45
45
  var components_Video_Video = require('./Video/Video.js');
46
- var components_ChoiceGroup_ChoiceGroup = require('./ChoiceGroup/ChoiceGroup.js');
47
46
  var components_Dropdown_Dropdown = require('./Dropdown/Dropdown.js');
48
- var components_FormElement_FormElement = require('./FormElement/FormElement.js');
49
47
  var components_Icon_Icon = require('./Icon/Icon.js');
50
48
  var components_List_List = require('./List/List.js');
51
49
  require('../ListCtx-7db7fe04.js');
@@ -68,8 +66,13 @@ require('../utils/getDefaultDimensionValue.js');
68
66
  require('../css-9c93400b.js');
69
67
  require('../utils/transitionEndListener.js');
70
68
  require('../utils/triggerBrowserReflow.js');
69
+ require('./FormControl/FormControl.js');
70
+ require('nanoid');
71
+ require('../hooks/usePrevious.js');
71
72
  require('./Hero/HeroCard.js');
72
73
  require('./SocialMedia/SocialMedia.js');
74
+ require('./Input/Input.js');
75
+ require('./FormElement/FormElement.js');
73
76
  require('../VideoPlayer-d576de50.js');
74
77
  require('../utils/hoursMinutesSeconds.js');
75
78
  require('screenfull');
@@ -83,9 +86,9 @@ exports.AccordionButton = components_Accordion_AccordionButton;
83
86
  exports.AccordionPanel = components_Accordion_AccordionPanel;
84
87
  exports.AccordionItem = components_Accordion_AccordionItem;
85
88
  exports.Accordion = components_Accordion_Accordion;
89
+ exports.Form = components_Form_Form;
86
90
  exports.Collapse = components_Collapse_Collapse;
87
91
  exports.Empty = components_Empty_Empty;
88
- exports.FormGroup = components_FormGroup_FormGroup;
89
92
  exports.Image = components_Image_Image;
90
93
  exports.Loading = components_Loading_Loading;
91
94
  exports.Radio = components_Radio_Radio;
@@ -93,8 +96,7 @@ exports.Tag = components_Tag_Tag;
93
96
  exports.GlobalProvider = components_GlobalProvider_GlobalProvider;
94
97
  exports.Button = components_Button_Button;
95
98
  exports.ContextMenu = components_ContextMenu_ContextMenu;
96
- exports.Fieldset = components_Fieldset_Fieldset;
97
- exports.Input = components_Input_Input;
99
+ exports.Fieldset = components_Fieldset_Fieldset.default;
98
100
  exports.Notification = components_Notification_Notification;
99
101
  exports.ReadMore = components_ReadMore_ReadMore;
100
102
  exports.Textarea = components_Textarea_Textarea;
@@ -108,15 +110,12 @@ exports.RichText = components_RichText_RichText;
108
110
  exports.Tooltip = components_Tooltip_Tooltip;
109
111
  exports.Checkbox = components_Checkbox_Checkbox;
110
112
  exports.DatePicker = components_DatePicker_DatePicker;
111
- exports.Form = components_Form_Form;
112
113
  exports.Hero = components_Hero_Hero;
113
114
  exports.LinkList = components_LinkList_LinkList;
114
115
  exports.Pagination = components_Pagination_Pagination;
115
116
  exports.SearchField = components_SearchField_SearchField;
116
117
  exports.Video = components_Video_Video;
117
- exports.ChoiceGroup = components_ChoiceGroup_ChoiceGroup;
118
118
  exports.Dropdown = components_Dropdown_Dropdown;
119
- exports.FormElement = components_FormElement_FormElement;
120
119
  exports.Icon = components_Icon_Icon;
121
120
  exports.List = components_List_List;
122
121
  exports.Profile = components_Profile_Profile;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var require$$0 = require('react');
6
+
7
+ // This code was shamelessly borrowed from the blog post
8
+ // "How to access previous props or state with React Hooks" by
9
+ // Ohans Emmanuel, published on LogRocket May 11, 2023
10
+ // https://blog.logrocket.com/accessing-previous-props-state-react-hooks/
11
+ function usePrevious(value) {
12
+ const ref = require$$0.useRef();
13
+ require$$0.useEffect(() => {
14
+ ref.current = value; //assign the value of ref to the argument
15
+ }, [value]); //this code will run when the value of 'value' changes
16
+ return ref.current; //in the end, return the current ref value.
17
+ }
18
+
19
+ exports.default = usePrevious;
20
+ exports.usePrevious = usePrevious;
package/lib/cjs/index.js CHANGED
@@ -4,9 +4,9 @@ var components_Accordion_AccordionButton = require('./components/Accordion/Accor
4
4
  var components_Accordion_AccordionPanel = require('./components/Accordion/AccordionPanel.js');
5
5
  var components_Accordion_AccordionItem = require('./components/Accordion/AccordionItem.js');
6
6
  var components_Accordion_Accordion = require('./components/Accordion/Accordion.js');
7
+ var components_Form_Form = require('./components/Form/Form.js');
7
8
  var components_Collapse_Collapse = require('./components/Collapse/Collapse.js');
8
9
  var components_Empty_Empty = require('./components/Empty/Empty.js');
9
- var components_FormGroup_FormGroup = require('./components/FormGroup/FormGroup.js');
10
10
  var components_Image_Image = require('./components/Image/Image.js');
11
11
  var components_Loading_Loading = require('./components/Loading/Loading.js');
12
12
  var components_Radio_Radio = require('./components/Radio/Radio.js');
@@ -21,10 +21,10 @@ require('./TagCtx-929c7753.js');
21
21
  var components_Button_Button = require('./components/Button/Button.js');
22
22
  var components_ContextMenu_ContextMenu = require('./components/ContextMenu/ContextMenu.js');
23
23
  var components_Fieldset_Fieldset = require('./components/Fieldset/Fieldset.js');
24
- var components_Input_Input = require('./components/Input/Input.js');
25
24
  var components_Notification_Notification = require('./components/Notification/Notification.js');
26
25
  var components_ReadMore_ReadMore = require('./components/ReadMore/ReadMore.js');
27
26
  var components_Textarea_Textarea = require('./components/Textarea/Textarea.js');
27
+ require('./components/Textarea/index.js');
28
28
  var components_Callout_Callout = require('./components/Callout/Callout.js');
29
29
  require('./components/Callout/index.js');
30
30
  var components_Credit_Credit = require('./components/Credit/Credit.js');
@@ -35,17 +35,15 @@ var components_NumberPicker_NumberPicker = require('./components/NumberPicker/Nu
35
35
  var components_RichText_RichText = require('./components/RichText/RichText.js');
36
36
  var components_Tooltip_Tooltip = require('./components/Tooltip/Tooltip.js');
37
37
  var components_Checkbox_Checkbox = require('./components/Checkbox/Checkbox.js');
38
+ require('./components/Checkbox/index.js');
38
39
  var components_DatePicker_DatePicker = require('./components/DatePicker/DatePicker.js');
39
- var components_Form_Form = require('./components/Form/Form.js');
40
40
  var components_Hero_Hero = require('./components/Hero/Hero.js');
41
41
  require('./components/SocialMedia/index.js');
42
42
  var components_LinkList_LinkList = require('./components/LinkList/LinkList.js');
43
43
  var components_Pagination_Pagination = require('./components/Pagination/Pagination.js');
44
44
  var components_SearchField_SearchField = require('./components/SearchField/SearchField.js');
45
45
  var components_Video_Video = require('./components/Video/Video.js');
46
- var components_ChoiceGroup_ChoiceGroup = require('./components/ChoiceGroup/ChoiceGroup.js');
47
46
  var components_Dropdown_Dropdown = require('./components/Dropdown/Dropdown.js');
48
- var components_FormElement_FormElement = require('./components/FormElement/FormElement.js');
49
47
  var components_Icon_Icon = require('./components/Icon/Icon.js');
50
48
  var components_List_List = require('./components/List/List.js');
51
49
  require('./ListCtx-7db7fe04.js');
@@ -68,9 +66,14 @@ require('./utils/getDefaultDimensionValue.js');
68
66
  require('./css-9c93400b.js');
69
67
  require('./utils/transitionEndListener.js');
70
68
  require('./utils/triggerBrowserReflow.js');
69
+ require('./components/FormControl/FormControl.js');
70
+ require('nanoid');
71
+ require('./hooks/usePrevious.js');
71
72
  require('@ilo-org/icons-react');
72
73
  require('./components/Hero/HeroCard.js');
73
74
  require('./components/SocialMedia/SocialMedia.js');
75
+ require('./components/Input/Input.js');
76
+ require('./components/FormElement/FormElement.js');
74
77
  require('./VideoPlayer-d576de50.js');
75
78
  require('./utils/hoursMinutesSeconds.js');
76
79
  require('screenfull');
@@ -83,9 +86,9 @@ exports.AccordionButton = components_Accordion_AccordionButton;
83
86
  exports.AccordionPanel = components_Accordion_AccordionPanel;
84
87
  exports.AccordionItem = components_Accordion_AccordionItem;
85
88
  exports.Accordion = components_Accordion_Accordion;
89
+ exports.Form = components_Form_Form;
86
90
  exports.Collapse = components_Collapse_Collapse;
87
91
  exports.Empty = components_Empty_Empty;
88
- exports.FormGroup = components_FormGroup_FormGroup;
89
92
  exports.Image = components_Image_Image;
90
93
  exports.Loading = components_Loading_Loading;
91
94
  exports.Radio = components_Radio_Radio;
@@ -93,8 +96,7 @@ exports.Tag = components_Tag_Tag;
93
96
  exports.GlobalProvider = components_GlobalProvider_GlobalProvider;
94
97
  exports.Button = components_Button_Button;
95
98
  exports.ContextMenu = components_ContextMenu_ContextMenu;
96
- exports.Fieldset = components_Fieldset_Fieldset;
97
- exports.Input = components_Input_Input;
99
+ exports.Fieldset = components_Fieldset_Fieldset.default;
98
100
  exports.Notification = components_Notification_Notification;
99
101
  exports.ReadMore = components_ReadMore_ReadMore;
100
102
  exports.Textarea = components_Textarea_Textarea;
@@ -108,15 +110,12 @@ exports.RichText = components_RichText_RichText;
108
110
  exports.Tooltip = components_Tooltip_Tooltip;
109
111
  exports.Checkbox = components_Checkbox_Checkbox;
110
112
  exports.DatePicker = components_DatePicker_DatePicker;
111
- exports.Form = components_Form_Form;
112
113
  exports.Hero = components_Hero_Hero;
113
114
  exports.LinkList = components_LinkList_LinkList;
114
115
  exports.Pagination = components_Pagination_Pagination;
115
116
  exports.SearchField = components_SearchField_SearchField;
116
117
  exports.Video = components_Video_Video;
117
- exports.ChoiceGroup = components_ChoiceGroup_ChoiceGroup;
118
118
  exports.Dropdown = components_Dropdown_Dropdown;
119
- exports.FormElement = components_FormElement_FormElement;
120
119
  exports.Icon = components_Icon_Icon;
121
120
  exports.List = components_List_List;
122
121
  exports.Profile = components_Profile_Profile;
@@ -1,32 +1,44 @@
1
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { useState } from 'react';
1
+ import { __rest } from 'tslib';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useEffect } from 'react';
3
4
  import classNames from 'classnames';
4
5
  import useGlobalSettings from '../../hooks/useGlobalSettings.js';
5
- import Fieldset from '../Fieldset/Fieldset.js';
6
- import FormElement from '../FormElement/FormElement.js';
7
- import 'tslib';
6
+ import { useFieldsetError } from '../Fieldset/Fieldset.js';
7
+ import FormControl, { useFormControl } from '../FormControl/FormControl.js';
8
+ import { usePrevious } from '../../hooks/usePrevious.js';
8
9
  import '../../GlobalCtx-7fb23cfa.js';
9
10
  import '../Tooltip/Tooltip.js';
10
11
  import 'react-dom';
12
+ import 'nanoid';
11
13
 
12
- const Checkbox = ({ callback, disabled = false, error, grouped, helper, id, label, name, required, tooltip, }) => {
14
+ const Checkbox = forwardRef((props, ref) => {
15
+ const { onChange, onBlur, disabled = false, error, id, name, required, defaultChecked = false, checked, value, } = props;
13
16
  const { prefix } = useGlobalSettings();
17
+ const { setHasError } = useFieldsetError();
18
+ const formControlCtx = useFormControl();
19
+ const { ariaDescribedBy } = formControlCtx;
14
20
  const baseClass = `${prefix}--checkbox`;
15
- const CheckboxClasses = classNames("", {
16
- [baseClass]: true,
17
- [`error`]: error,
21
+ const errorClass = `${baseClass}__error`;
22
+ const CheckboxClasses = classNames(baseClass, {
23
+ [errorClass]: error,
18
24
  });
19
- const [checked, setChecked] = useState(false);
20
- /**
21
- * On change, if there is a callback, call it
22
- */
25
+ const prevError = usePrevious(error);
26
+ useEffect(() => {
27
+ if (error !== prevError) {
28
+ setHasError(!!error);
29
+ }
30
+ }, [error, prevError, setHasError]);
23
31
  const handleChange = (e) => {
24
- setChecked(e.target.checked);
25
- if (callback) {
26
- callback(e);
32
+ if (onChange) {
33
+ onChange(e);
27
34
  }
28
35
  };
29
- return (jsxs(Fragment, { children: [grouped && (jsx(FormElement, Object.assign({ elemid: id, label: label, helper: helper, error: error, required: required, tooltip: tooltip }, { children: jsx("input", { id: id, name: name, onChange: handleChange, disabled: disabled, required: required, type: "checkbox", className: CheckboxClasses, checked: checked }) }))), !grouped && (jsx(Fieldset, { children: jsx(FormElement, Object.assign({ elemid: id, label: label, helper: helper, error: error, required: required, tooltip: tooltip, type: "checkbox" }, { children: jsx("input", { id: id, name: name, onChange: handleChange, disabled: disabled, required: required, type: "checkbox", className: CheckboxClasses, checked: checked }) })) }))] }));
30
- };
36
+ return (jsx("input", { ref: ref, id: id ? id : name, name: name, onChange: handleChange, onBlur: onBlur, disabled: disabled, required: required, type: "checkbox", className: CheckboxClasses, defaultChecked: defaultChecked, "aria-describedby": ariaDescribedBy, checked: checked, value: value }));
37
+ });
38
+ const LabelledCheckbox = forwardRef((props, ref) => {
39
+ const fieldId = props.id ? props.id : props.name;
40
+ const { style, inputStyle, className, labelPlacement = "end", labelSize = "small" } = props, rest = __rest(props, ["style", "inputStyle", "className", "labelPlacement", "labelSize"]);
41
+ return (jsx(FormControl, Object.assign({ fieldId: fieldId, style: style, className: className, labelPlacement: labelPlacement, labelSize: labelSize }, rest, { children: jsx(Checkbox, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
42
+ });
31
43
 
32
- export { Checkbox as default };
44
+ export { LabelledCheckbox as default };
@@ -1,11 +1,36 @@
1
1
  export { default as Checkbox } from './Checkbox.js';
2
+ import 'tslib';
2
3
  import 'react/jsx-runtime';
3
4
  import 'react';
4
5
  import 'classnames';
5
6
  import '../../hooks/useGlobalSettings.js';
6
- import 'tslib';
7
7
  import '../../GlobalCtx-7fb23cfa.js';
8
8
  import '../Fieldset/Fieldset.js';
9
9
  import '../Tooltip/Tooltip.js';
10
10
  import 'react-dom';
11
- import '../FormElement/FormElement.js';
11
+ import '../FormControl/FormControl.js';
12
+ import 'nanoid';
13
+ import '../../hooks/usePrevious.js';
14
+
15
+ const NUMBER_CHECKBOXES = 3;
16
+ const basic = {
17
+ label: "Checkbox",
18
+ className: "checkbox",
19
+ name: "checkbox",
20
+ };
21
+ const basicCheckBoxes = Array(NUMBER_CHECKBOXES).map((_, i) => (Object.assign(Object.assign({}, basic), { id: `checkbox-${i}` })));
22
+ const checked = Object.assign(Object.assign({}, basic), { defaultChecked: true });
23
+ const error = Object.assign(Object.assign({}, basic), { error: true });
24
+ const errorCheckBoxes = Array(NUMBER_CHECKBOXES).map((_, i) => (Object.assign(Object.assign({}, error), { id: `checkbox-${i}` })));
25
+ /**
26
+ * Sample prop definitions Checkbox's enumerable properties (imported in stories and test)
27
+ */
28
+ const CheckboxArgs = {
29
+ basic,
30
+ basicCheckBoxes,
31
+ errorCheckBoxes,
32
+ checked,
33
+ error,
34
+ };
35
+
36
+ export { CheckboxArgs };
@@ -1,30 +1,35 @@
1
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
1
+ import { __rest } from 'tslib';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
2
4
  import classNames from 'classnames';
3
5
  import useGlobalSettings from '../../hooks/useGlobalSettings.js';
4
- import Fieldset from '../Fieldset/Fieldset.js';
5
- import FormElement from '../FormElement/FormElement.js';
6
- import 'tslib';
7
- import 'react';
6
+ import FormControl, { useFormControl } from '../FormControl/FormControl.js';
8
7
  import '../../GlobalCtx-7fb23cfa.js';
8
+ import 'nanoid';
9
9
  import '../Tooltip/Tooltip.js';
10
10
  import 'react-dom';
11
11
 
12
- const DatePicker = ({ callback, disabled = false, enddata, error, helper, id, label, name, placeholder, range, required, tooltip, }) => {
12
+ const DatePicker = forwardRef((props, ref) => {
13
+ const { onChange, onBlur, disabled = false, error, id, name, placeholder, required, max, min, step, } = props;
13
14
  const { prefix } = useGlobalSettings();
15
+ const formControlCtx = useFormControl();
16
+ const { ariaDescribedBy } = formControlCtx;
17
+ const inputClass = `${prefix}--input`;
14
18
  const baseClass = `${prefix}--datepicker`;
15
- const DatePickerClasses = classNames("", {
16
- [baseClass]: true,
19
+ const datePickerClasses = classNames(inputClass, baseClass, {
17
20
  [`error`]: error,
18
21
  });
19
- /**
20
- * On change, if there is a callback, call it
21
- */
22
- const handleChange = (e, picker) => {
23
- if (callback) {
24
- callback(e, picker);
22
+ const handleChange = (e) => {
23
+ if (onChange) {
24
+ onChange(e);
25
25
  }
26
26
  };
27
- return (jsxs(Fragment, { children: [!range && (jsx(Fieldset, { children: jsx(FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip }, { children: jsx("input", { id: `${id ? id : name}`, name: `${name}`, onChange: handleChange, disabled: disabled, placeholder: placeholder, required: required, type: "date", className: `${DatePickerClasses} ${prefix}--input` }) })) })), range && (jsxs("div", Object.assign({ className: `${baseClass}--range` }, { children: [jsx(Fieldset, { children: jsx(FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip, type: "date" }, { children: jsx("input", { id: `${id ? id : name}`, name: `${name}`, onChange: handleChange, disabled: disabled, placeholder: placeholder, required: required, type: "date", className: `${DatePickerClasses} ${prefix}--input` }) })) }), jsx(Fieldset, { children: jsx(FormElement, Object.assign({ elemid: enddata === null || enddata === void 0 ? void 0 : enddata.name, label: enddata === null || enddata === void 0 ? void 0 : enddata.label, helper: enddata === null || enddata === void 0 ? void 0 : enddata.helper, error: enddata === null || enddata === void 0 ? void 0 : enddata.error, required: enddata === null || enddata === void 0 ? void 0 : enddata.required, tooltip: enddata === null || enddata === void 0 ? void 0 : enddata.tooltip, type: "date" }, { children: jsx("input", { id: (enddata === null || enddata === void 0 ? void 0 : enddata.id) ? enddata === null || enddata === void 0 ? void 0 : enddata.id : enddata === null || enddata === void 0 ? void 0 : enddata.name, name: enddata === null || enddata === void 0 ? void 0 : enddata.name, onChange: (e) => handleChange(e, "end"), disabled: enddata === null || enddata === void 0 ? void 0 : enddata.disabled, placeholder: enddata === null || enddata === void 0 ? void 0 : enddata.placeholder, required: enddata === null || enddata === void 0 ? void 0 : enddata.required, type: "date", className: `${DatePickerClasses} ${prefix}--input` }) })) })] })))] }));
28
- };
27
+ return (jsx("input", { ref: ref, type: "date", id: id ? id : name, name: name, onChange: handleChange, onBlur: onBlur, disabled: disabled, placeholder: placeholder, required: required, className: datePickerClasses, max: max, min: min, step: step, "aria-describedby": ariaDescribedBy }));
28
+ });
29
+ const LabelledDatePicker = forwardRef((props, ref) => {
30
+ const { style, inputStyle, className } = props, rest = __rest(props, ["style", "inputStyle", "className"]);
31
+ const fieldId = props.id ? props.id : props.name;
32
+ return (jsx(FormControl, Object.assign({ fieldId: fieldId, style: style, className: className }, rest, { children: jsx(DatePicker, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
33
+ });
29
34
 
30
- export { DatePicker as default };
35
+ export { LabelledDatePicker as default };
@@ -1,11 +1,11 @@
1
1
  export { default as DatePicker } from './DatePicker.js';
2
+ import 'tslib';
2
3
  import 'react/jsx-runtime';
4
+ import 'react';
3
5
  import 'classnames';
4
6
  import '../../hooks/useGlobalSettings.js';
5
- import 'tslib';
6
- import 'react';
7
7
  import '../../GlobalCtx-7fb23cfa.js';
8
- import '../Fieldset/Fieldset.js';
8
+ import '../FormControl/FormControl.js';
9
+ import 'nanoid';
9
10
  import '../Tooltip/Tooltip.js';
10
11
  import 'react-dom';
11
- import '../FormElement/FormElement.js';
@@ -1,33 +1,37 @@
1
+ import { __rest } from 'tslib';
1
2
  import { jsx } from 'react/jsx-runtime';
2
- import { useState } from 'react';
3
+ import { forwardRef, useState } from 'react';
3
4
  import classNames from 'classnames';
4
5
  import useGlobalSettings from '../../hooks/useGlobalSettings.js';
5
- import Fieldset from '../Fieldset/Fieldset.js';
6
- import FormElement from '../FormElement/FormElement.js';
7
- import 'tslib';
6
+ import FormControl, { useFormControl } from '../FormControl/FormControl.js';
8
7
  import '../../GlobalCtx-7fb23cfa.js';
8
+ import 'nanoid';
9
9
  import '../Tooltip/Tooltip.js';
10
10
  import 'react-dom';
11
11
 
12
- const Dropdown = ({ autocomplete, callback, disabled = false, error, helper, id, label, name, options, required, tooltip, value, }) => {
12
+ const Dropdown = forwardRef((props, ref) => {
13
+ const { autocomplete, onChange, onBlur, disabled = false, error, id, name, options, required, value, form, multiple, selectSize, } = props;
13
14
  const { prefix } = useGlobalSettings();
15
+ const formControlCtx = useFormControl();
16
+ const { ariaDescribedBy } = formControlCtx;
14
17
  const baseClass = `${prefix}--dropdown`;
15
- const dropdownClasses = classNames("", {
16
- [baseClass]: true,
18
+ const dropdownClasses = classNames(baseClass, {
17
19
  [`error`]: error,
18
20
  });
19
21
  const [currentvalue, setValue] = useState(value);
20
- /**
21
- * On change, if there is a callback, call it
22
- */
23
22
  const handleChange = (e) => {
24
23
  setValue(e.target.value);
25
- if (callback) {
26
- callback(e);
24
+ if (onChange) {
25
+ onChange(e);
27
26
  }
28
27
  };
29
- return (jsx(Fieldset, { children: jsx(FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip, type: "dropdown" }, { children: jsx("div", Object.assign({ className: `${baseClass}--wrapper` }, { children: jsx("select", Object.assign({ id: id ? id : name, autoComplete: autocomplete, name: name, required: required, onChange: handleChange, disabled: disabled, className: dropdownClasses, value: currentvalue }, { children: options &&
30
- options.map((option, i) => (jsx("option", { disabled: option.disabled, label: option.label, value: option.value }, `${baseClass}--option--${i}`))) })) })) })) }));
31
- };
28
+ return (jsx("div", Object.assign({ className: `${baseClass}--wrapper` }, { children: jsx("select", Object.assign({ ref: ref, id: id ? id : name, autoComplete: autocomplete, name: name, required: required, onChange: handleChange, onBlur: onBlur, disabled: disabled, className: dropdownClasses, value: currentvalue, form: form, multiple: multiple, size: selectSize, "aria-describedby": ariaDescribedBy }, { children: options &&
29
+ options.map((option, i) => (jsx("option", { disabled: option.disabled, label: option.label, value: option.value }, `${baseClass}--option--${i}`))) })) })));
30
+ });
31
+ const LabelledDropdown = forwardRef((props, ref) => {
32
+ const { style, inputStyle, className } = props, rest = __rest(props, ["style", "inputStyle", "className"]);
33
+ const fieldId = props.id ? props.id : props.name;
34
+ return (jsx(FormControl, Object.assign({ fieldId: fieldId, style: style, className: className }, rest, { children: jsx(Dropdown, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
35
+ });
32
36
 
33
- export { Dropdown as default };
37
+ export { LabelledDropdown as default };
@@ -1,11 +1,11 @@
1
1
  export { default as Dropdown } from './Dropdown.js';
2
+ import 'tslib';
2
3
  import 'react/jsx-runtime';
3
4
  import 'react';
4
5
  import 'classnames';
5
6
  import '../../hooks/useGlobalSettings.js';
6
- import 'tslib';
7
7
  import '../../GlobalCtx-7fb23cfa.js';
8
- import '../Fieldset/Fieldset.js';
8
+ import '../FormControl/FormControl.js';
9
+ import 'nanoid';
9
10
  import '../Tooltip/Tooltip.js';
10
11
  import 'react-dom';
11
- import '../FormElement/FormElement.js';
@@ -1,22 +1,42 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import { Children } from 'react';
1
+ import { __rest } from 'tslib';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { createContext, useContext, useState } from 'react';
3
4
  import classNames from 'classnames';
4
5
  import useGlobalSettings from '../../hooks/useGlobalSettings.js';
5
6
  import Tooltip from '../Tooltip/Tooltip.js';
6
- import 'tslib';
7
7
  import '../../GlobalCtx-7fb23cfa.js';
8
8
  import 'react-dom';
9
9
 
10
- const Fieldset = ({ children, className, fieldsetid, grouperror, grouphelper, grouptooltip, legend, }) => {
10
+ // Create a new context for the error state
11
+ const FieldsetErrorContext = createContext({
12
+ hasError: false,
13
+ setHasError: (value) => value,
14
+ });
15
+ // Custom hook to access the error state from the context
16
+ const useFieldsetError = () => useContext(FieldsetErrorContext);
17
+ const Fieldset = (_a) => {
18
+ var { children, className, legend, helper, tooltip, errorMessage, disabled = false, wrap = "nowrap", direction = "column" } = _a, props = __rest(_a, ["children", "className", "legend", "helper", "tooltip", "errorMessage", "disabled", "wrap", "direction"]);
11
19
  const { prefix } = useGlobalSettings();
20
+ const [hasError, setHasError] = useState(false);
12
21
  const baseClass = `${prefix}--fieldset`;
13
- const fieldsetClasses = classNames(className, {
14
- [baseClass]: true,
22
+ const wrapClass = `${baseClass}--wrap__${wrap}`;
23
+ const directionClass = `${baseClass}--direction__${direction}`;
24
+ const helperClass = `${baseClass}--helper`;
25
+ const errorClass = `${baseClass}__error`;
26
+ const disabledClass = `${baseClass}__disabled`;
27
+ const fieldsetClasses = classNames(className, baseClass, wrapClass, directionClass, {
28
+ [disabledClass]: disabled,
15
29
  });
16
- return (jsxs("fieldset", Object.assign({ className: fieldsetClasses, id: fieldsetid ? fieldsetid : undefined }, { children: [legend && (jsxs("legend", Object.assign({ className: `${baseClass}--legend` }, { children: [legend, grouptooltip && (jsx(Tooltip, { className: `${baseClass}--legend--tooltip`, icon: true, label: grouptooltip, theme: "dark" }))] }))), grouphelper && !grouperror && (jsx("span", Object.assign({ className: `${baseClass}--helper` }, { children: grouphelper }))), grouperror && (jsx("span", Object.assign({ className: `${baseClass}--error` }, { children: grouperror }))), Children.map(children, (child, i) => {
17
- var _a;
18
- return (jsx(Fragment, { children: child && child.props && (jsxs("div", Object.assign({ className: `${baseClass}--input${((_a = child.props) === null || _a === void 0 ? void 0 : _a.type) ? "--" + child.props.type : ""} ${child.props.error ? "error" : ""}` }, { children: [child.props.label && (jsxs("label", Object.assign({ className: `${baseClass}--label`, htmlFor: child.props.id ? child.props.id : child.props.name }, { children: [child.props.label, child.props.tooltip && (jsx(Tooltip, { className: `${baseClass}--label--tooltip`, icon: true, label: child.props.tooltip, theme: "dark" }))] }))), child, child.props.helper && !child.props.error && (jsx("span", Object.assign({ className: `${baseClass}--helper` }, { children: child.props.helper }))), child.props.error && (jsx("span", Object.assign({ className: `${baseClass}--error` }, { children: child.props.error })))] }), `${baseClass}--input--${i}`)) }));
19
- })] })));
30
+ const helperClasses = classNames(helperClass, {
31
+ [errorClass]: hasError,
32
+ });
33
+ const contextValue = {
34
+ hasError,
35
+ setHasError,
36
+ };
37
+ const showHelper = !!helper || hasError;
38
+ const helperMessage = hasError ? errorMessage : helper;
39
+ return (jsxs("fieldset", Object.assign({ className: fieldsetClasses }, props, { children: [legend || helper ? (jsxs("div", Object.assign({ className: `${baseClass}--legend-wrapper` }, { children: [legend && (jsxs("legend", Object.assign({ className: `${baseClass}--legend` }, { children: [legend, tooltip && (jsx(Tooltip, { className: `${baseClass}--legend--tooltip`, icon: true, label: tooltip, theme: "dark" }))] }))), showHelper && jsx("span", Object.assign({ className: helperClasses }, { children: helperMessage }))] }))) : null, jsx("div", Object.assign({ className: `${baseClass}--elements` }, { children: jsx(FieldsetErrorContext.Provider, Object.assign({ value: contextValue }, { children: children })) }))] })));
20
40
  };
21
41
 
22
- export { Fieldset as default };
42
+ export { FieldsetErrorContext, Fieldset as default, useFieldsetError };
@@ -1,9 +1,9 @@
1
1
  export { default as Fieldset } from './Fieldset.js';
2
+ import 'tslib';
2
3
  import 'react/jsx-runtime';
3
4
  import 'react';
4
5
  import 'classnames';
5
6
  import '../../hooks/useGlobalSettings.js';
6
- import 'tslib';
7
7
  import '../../GlobalCtx-7fb23cfa.js';
8
8
  import '../Tooltip/Tooltip.js';
9
9
  import 'react-dom';
@@ -1,33 +1,47 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState } from 'react';
1
+ import { __rest } from 'tslib';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import require$$0, { useState } from 'react';
3
4
  import classNames from 'classnames';
4
5
  import useGlobalSettings from '../../hooks/useGlobalSettings.js';
5
- import Fieldset from '../Fieldset/Fieldset.js';
6
- import FormElement from '../FormElement/FormElement.js';
7
- import 'tslib';
6
+ import FormControl, { useFormControl } from '../FormControl/FormControl.js';
8
7
  import '../../GlobalCtx-7fb23cfa.js';
8
+ import 'nanoid';
9
9
  import '../Tooltip/Tooltip.js';
10
10
  import 'react-dom';
11
11
 
12
- const FileUpload = ({ callback, disabled = false, error, helper, id, label, multiple, name, placeholder, required, tooltip, }) => {
12
+ function formatBytes(bytes, decimals = 2) {
13
+ if (!+bytes)
14
+ return "0 Bytes";
15
+ const k = 1024;
16
+ const dm = decimals < 0 ? 0 : decimals;
17
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
18
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
19
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
20
+ }
21
+ const FileUpload = require$$0.forwardRef(({ onChange, onBlur, disabled = false, error, id, multiple, name, placeholder, required, }, ref) => {
13
22
  const { prefix } = useGlobalSettings();
23
+ const formControlCtx = useFormControl();
24
+ const { ariaDescribedBy } = formControlCtx;
14
25
  const baseClass = `${prefix}--file-upload`;
15
- const FileUploadClasses = classNames("", {
16
- [baseClass]: true,
26
+ const fileUploadClasses = classNames(baseClass, {
17
27
  [`error`]: error,
18
28
  });
19
- const [uploadfiles, setUploadFiles] = useState([]);
20
- /**
21
- * On change, add file to listed files, if there is a callback, call it
22
- */
29
+ const inputClass = `${baseClass}--input`;
30
+ const [uploadfiles, setUploadFiles] = useState(null);
23
31
  const handleChange = (e) => {
24
32
  const files = e.target.files;
25
33
  setUploadFiles(files);
26
- if (callback) {
27
- callback(e);
34
+ if (onChange) {
35
+ onChange(e);
28
36
  }
29
37
  };
30
- return (jsxs(Fieldset, Object.assign({ className: "file-upload" }, { children: [jsx(FormElement, Object.assign({ elemid: name, label: label, helper: helper, error: error, required: required, tooltip: tooltip, type: "file" }, { children: jsx("input", { id: id ? id : name, name: name, onChange: handleChange, disabled: disabled, multiple: multiple, placeholder: placeholder, required: required, type: "file", className: FileUploadClasses, "data-label": placeholder }) })), uploadfiles.length > 0 && (jsx("ul", Object.assign({ className: `${baseClass}--list` }, { children: [...uploadfiles].map((file, i) => (jsx("li", Object.assign({ className: `${baseClass}--list-item` }, { children: file.name }), `${baseClass}--list-item-${i}`))) })))] })));
31
- };
38
+ const inputId = id ? id : name;
39
+ return (jsxs(Fragment, { children: [jsx("div", Object.assign({ className: fileUploadClasses }, { children: jsxs("label", Object.assign({ className: inputClass }, { children: [placeholder, jsx("input", { ref: ref, id: inputId, name: name, onChange: handleChange, onBlur: onBlur, disabled: disabled, multiple: multiple, placeholder: placeholder, required: required, type: "file", "data-label": placeholder, "aria-describedby": ariaDescribedBy })] })) })), uploadfiles && uploadfiles.length > 0 && (jsx("ul", Object.assign({ className: `${baseClass}--list` }, { children: [...uploadfiles].map((file, i) => (jsx("li", Object.assign({ className: `${baseClass}--list-item` }, { children: `${file.name} (${formatBytes(file.size)})` }), `${baseClass}--list-item-${i}`))) })))] }));
40
+ });
41
+ const LabelledFileUpload = require$$0.forwardRef((props, ref) => {
42
+ const { style, inputStyle, className } = props, rest = __rest(props, ["style", "inputStyle", "className"]);
43
+ const fieldId = props.id ? props.id : props.name;
44
+ return (jsx(FormControl, Object.assign({ fieldId: fieldId, style: style, className: className }, rest, { children: jsx(FileUpload, Object.assign({ ref: ref, style: inputStyle }, rest)) })));
45
+ });
32
46
 
33
- export { FileUpload as default };
47
+ export { LabelledFileUpload as default };
@@ -1,11 +1,11 @@
1
1
  export { default as FileUpload } from './FileUpload.js';
2
+ import 'tslib';
2
3
  import 'react/jsx-runtime';
3
4
  import 'react';
4
5
  import 'classnames';
5
6
  import '../../hooks/useGlobalSettings.js';
6
- import 'tslib';
7
7
  import '../../GlobalCtx-7fb23cfa.js';
8
- import '../Fieldset/Fieldset.js';
8
+ import '../FormControl/FormControl.js';
9
+ import 'nanoid';
9
10
  import '../Tooltip/Tooltip.js';
10
11
  import 'react-dom';
11
- import '../FormElement/FormElement.js';