no-frills-ui 0.0.14-alpha.0 → 0.0.14-alpha.10

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 (221) hide show
  1. package/README.md +63 -24
  2. package/dist/index.js +3550 -4336
  3. package/dist/index.js.map +1 -1
  4. package/lib-esm/components/Accordion/Accordion.d.ts +11 -16
  5. package/lib-esm/components/Accordion/Accordion.js +25 -29
  6. package/lib-esm/components/Accordion/Accordion.js.map +1 -1
  7. package/lib-esm/components/Accordion/AccordionStep.d.ts +22 -22
  8. package/lib-esm/components/Accordion/AccordionStep.js +111 -109
  9. package/lib-esm/components/Accordion/AccordionStep.js.map +1 -1
  10. package/lib-esm/components/Badge/Badge.d.ts +13 -16
  11. package/lib-esm/components/Badge/Badge.js +31 -51
  12. package/lib-esm/components/Badge/Badge.js.map +1 -1
  13. package/lib-esm/components/Button/ActionButton.d.ts +9 -5
  14. package/lib-esm/components/Button/ActionButton.js +18 -38
  15. package/lib-esm/components/Button/ActionButton.js.map +1 -1
  16. package/lib-esm/components/Button/Button.d.ts +9 -5
  17. package/lib-esm/components/Button/Button.js +18 -40
  18. package/lib-esm/components/Button/Button.js.map +1 -1
  19. package/lib-esm/components/Button/IconButton.d.ts +9 -5
  20. package/lib-esm/components/Button/IconButton.js +18 -42
  21. package/lib-esm/components/Button/IconButton.js.map +1 -1
  22. package/lib-esm/components/Button/LinkButton.d.ts +9 -5
  23. package/lib-esm/components/Button/LinkButton.js +18 -32
  24. package/lib-esm/components/Button/LinkButton.js.map +1 -1
  25. package/lib-esm/components/Button/RaisedButton.d.ts +9 -5
  26. package/lib-esm/components/Button/RaisedButton.js +18 -46
  27. package/lib-esm/components/Button/RaisedButton.js.map +1 -1
  28. package/lib-esm/components/Card/Card.d.ts +4 -6
  29. package/lib-esm/components/Card/Card.js +18 -13
  30. package/lib-esm/components/Card/Card.js.map +1 -1
  31. package/lib-esm/components/Chip/Chip.d.ts +8 -3
  32. package/lib-esm/components/Chip/Chip.js +44 -42
  33. package/lib-esm/components/Chip/Chip.js.map +1 -1
  34. package/lib-esm/components/ChipInput/ChipInput.d.ts +31 -0
  35. package/lib-esm/components/ChipInput/ChipInput.js +198 -0
  36. package/lib-esm/components/ChipInput/ChipInput.js.map +1 -0
  37. package/lib-esm/components/ChipInput/index.d.ts +1 -0
  38. package/lib-esm/components/Dialog/AlertDialog.d.ts +11 -12
  39. package/lib-esm/components/Dialog/AlertDialog.js +44 -28
  40. package/lib-esm/components/Dialog/AlertDialog.js.map +1 -1
  41. package/lib-esm/components/Dialog/ConfirmDialog.d.ts +13 -14
  42. package/lib-esm/components/Dialog/ConfirmDialog.js +49 -33
  43. package/lib-esm/components/Dialog/ConfirmDialog.js.map +1 -1
  44. package/lib-esm/components/Dialog/Dialog.d.ts +40 -18
  45. package/lib-esm/components/Dialog/Dialog.js +125 -70
  46. package/lib-esm/components/Dialog/Dialog.js.map +1 -1
  47. package/lib-esm/components/Dialog/PromptDialog.d.ts +18 -19
  48. package/lib-esm/components/Dialog/PromptDialog.js +78 -49
  49. package/lib-esm/components/Dialog/PromptDialog.js.map +1 -1
  50. package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +43 -14
  51. package/lib-esm/components/DragAndDrop/DragAndDrop.js +128 -19
  52. package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +1 -1
  53. package/lib-esm/components/DragAndDrop/DragItem.d.ts +41 -0
  54. package/lib-esm/components/DragAndDrop/DragItem.js +253 -36
  55. package/lib-esm/components/DragAndDrop/DragItem.js.map +1 -1
  56. package/lib-esm/components/DragAndDrop/types.d.ts +25 -3
  57. package/lib-esm/components/DragAndDrop/types.js +9 -6
  58. package/lib-esm/components/DragAndDrop/types.js.map +1 -1
  59. package/lib-esm/components/Drawer/Drawer.d.ts +86 -22
  60. package/lib-esm/components/Drawer/Drawer.js +176 -97
  61. package/lib-esm/components/Drawer/Drawer.js.map +1 -1
  62. package/lib-esm/components/Drawer/index.d.ts +1 -1
  63. package/lib-esm/components/Groups/Group.d.ts +5 -8
  64. package/lib-esm/components/Groups/Group.js +34 -79
  65. package/lib-esm/components/Groups/Group.js.map +1 -1
  66. package/lib-esm/components/Groups/GroupLabel.js +8 -17
  67. package/lib-esm/components/Groups/GroupLabel.js.map +1 -1
  68. package/lib-esm/components/Input/Checkbox.d.ts +12 -15
  69. package/lib-esm/components/Input/Checkbox.js +51 -118
  70. package/lib-esm/components/Input/Checkbox.js.map +1 -1
  71. package/lib-esm/components/Input/Dropdown.d.ts +11 -12
  72. package/lib-esm/components/Input/Dropdown.js +133 -52
  73. package/lib-esm/components/Input/Dropdown.js.map +1 -1
  74. package/lib-esm/components/Input/Input.d.ts +3 -3
  75. package/lib-esm/components/Input/Input.js +61 -109
  76. package/lib-esm/components/Input/Input.js.map +1 -1
  77. package/lib-esm/components/Input/Radio.d.ts +4 -8
  78. package/lib-esm/components/Input/Radio.js +35 -79
  79. package/lib-esm/components/Input/Radio.js.map +1 -1
  80. package/lib-esm/components/Input/RadioButton.d.ts +4 -8
  81. package/lib-esm/components/Input/RadioButton.js +34 -71
  82. package/lib-esm/components/Input/RadioButton.js.map +1 -1
  83. package/lib-esm/components/Input/Select.d.ts +6 -13
  84. package/lib-esm/components/Input/Select.js +75 -122
  85. package/lib-esm/components/Input/Select.js.map +1 -1
  86. package/lib-esm/components/Input/TextArea.d.ts +6 -13
  87. package/lib-esm/components/Input/TextArea.js +64 -108
  88. package/lib-esm/components/Input/TextArea.js.map +1 -1
  89. package/lib-esm/components/Input/Toggle.d.ts +4 -9
  90. package/lib-esm/components/Input/Toggle.js +31 -80
  91. package/lib-esm/components/Input/Toggle.js.map +1 -1
  92. package/lib-esm/components/Menu/Menu.d.ts +8 -6
  93. package/lib-esm/components/Menu/Menu.js +116 -31
  94. package/lib-esm/components/Menu/Menu.js.map +1 -1
  95. package/lib-esm/components/Menu/MenuContext.d.ts +11 -5
  96. package/lib-esm/components/Menu/MenuContext.js +6 -2
  97. package/lib-esm/components/Menu/MenuContext.js.map +1 -1
  98. package/lib-esm/components/Menu/MenuItem.d.ts +7 -4
  99. package/lib-esm/components/Menu/MenuItem.js +46 -47
  100. package/lib-esm/components/Menu/MenuItem.js.map +1 -1
  101. package/lib-esm/components/Modal/Modal.d.ts +75 -16
  102. package/lib-esm/components/Modal/Modal.js +150 -51
  103. package/lib-esm/components/Modal/Modal.js.map +1 -1
  104. package/lib-esm/components/Notification/Notification.d.ts +46 -39
  105. package/lib-esm/components/Notification/Notification.js +80 -87
  106. package/lib-esm/components/Notification/Notification.js.map +1 -1
  107. package/lib-esm/components/Notification/NotificationManager.d.ts +19 -5
  108. package/lib-esm/components/Notification/NotificationManager.js +177 -79
  109. package/lib-esm/components/Notification/NotificationManager.js.map +1 -1
  110. package/lib-esm/components/Notification/style.d.ts +6 -3
  111. package/lib-esm/components/Notification/style.js +64 -140
  112. package/lib-esm/components/Notification/style.js.map +1 -1
  113. package/lib-esm/components/Notification/types.d.ts +2 -0
  114. package/lib-esm/components/Notification/types.js +9 -10
  115. package/lib-esm/components/Notification/types.js.map +1 -1
  116. package/lib-esm/components/Popover/Popover.d.ts +21 -20
  117. package/lib-esm/components/Popover/Popover.js +159 -126
  118. package/lib-esm/components/Popover/Popover.js.map +1 -1
  119. package/lib-esm/components/Spinner/Spinner.d.ts +14 -12
  120. package/lib-esm/components/Spinner/Spinner.js +22 -27
  121. package/lib-esm/components/Spinner/Spinner.js.map +1 -1
  122. package/lib-esm/components/Stepper/Step.d.ts +15 -12
  123. package/lib-esm/components/Stepper/Step.js +18 -25
  124. package/lib-esm/components/Stepper/Step.js.map +1 -1
  125. package/lib-esm/components/Stepper/Stepper.d.ts +11 -17
  126. package/lib-esm/components/Stepper/Stepper.js +104 -102
  127. package/lib-esm/components/Stepper/Stepper.js.map +1 -1
  128. package/lib-esm/components/Tabs/Tab.d.ts +10 -16
  129. package/lib-esm/components/Tabs/Tab.js +9 -15
  130. package/lib-esm/components/Tabs/Tab.js.map +1 -1
  131. package/lib-esm/components/Tabs/Tabs.d.ts +11 -22
  132. package/lib-esm/components/Tabs/Tabs.js +97 -55
  133. package/lib-esm/components/Tabs/Tabs.js.map +1 -1
  134. package/lib-esm/components/Toast/Toast.d.ts +34 -7
  135. package/lib-esm/components/Toast/Toast.js +200 -109
  136. package/lib-esm/components/Toast/Toast.js.map +1 -1
  137. package/lib-esm/components/Toast/ToastStory.d.ts +21 -24
  138. package/lib-esm/components/Tooltip/Tooltip.d.ts +11 -14
  139. package/lib-esm/components/Tooltip/Tooltip.js +52 -67
  140. package/lib-esm/components/Tooltip/Tooltip.js.map +1 -1
  141. package/lib-esm/components/index.d.ts +1 -0
  142. package/lib-esm/components/index.js +43 -20
  143. package/lib-esm/components/index.js.map +1 -1
  144. package/lib-esm/icons/CheckCircle.d.ts +1 -1
  145. package/lib-esm/icons/CheckCircle.js +22 -4
  146. package/lib-esm/icons/CheckCircle.js.map +1 -1
  147. package/lib-esm/icons/Close.d.ts +1 -1
  148. package/lib-esm/icons/Close.js +22 -4
  149. package/lib-esm/icons/Close.js.map +1 -1
  150. package/lib-esm/icons/DragIndicator.d.ts +1 -1
  151. package/lib-esm/icons/DragIndicator.js +22 -4
  152. package/lib-esm/icons/DragIndicator.js.map +1 -1
  153. package/lib-esm/icons/ErrorOutline.d.ts +1 -1
  154. package/lib-esm/icons/ErrorOutline.js +16 -4
  155. package/lib-esm/icons/ErrorOutline.js.map +1 -1
  156. package/lib-esm/icons/ExpandMore.d.ts +1 -1
  157. package/lib-esm/icons/ExpandMore.js +22 -4
  158. package/lib-esm/icons/ExpandMore.js.map +1 -1
  159. package/lib-esm/icons/FiberManualRecord.d.ts +1 -1
  160. package/lib-esm/icons/FiberManualRecord.js +24 -4
  161. package/lib-esm/icons/FiberManualRecord.js.map +1 -1
  162. package/lib-esm/icons/Info.d.ts +1 -1
  163. package/lib-esm/icons/Info.js +22 -4
  164. package/lib-esm/icons/Info.js.map +1 -1
  165. package/lib-esm/icons/ReportProblem.d.ts +1 -1
  166. package/lib-esm/icons/ReportProblem.js +22 -4
  167. package/lib-esm/icons/ReportProblem.js.map +1 -1
  168. package/lib-esm/shared/LayerManager.d.ts +34 -4
  169. package/lib-esm/shared/LayerManager.js +248 -114
  170. package/lib-esm/shared/LayerManager.js.map +1 -1
  171. package/lib-esm/shared/constants.d.ts +58 -27
  172. package/lib-esm/shared/constants.js +62 -26
  173. package/lib-esm/shared/constants.js.map +1 -1
  174. package/lib-esm/shared/styles.d.ts +1 -1
  175. package/lib-esm/shared/styles.js +21 -24
  176. package/lib-esm/shared/styles.js.map +1 -1
  177. package/package.json +130 -72
  178. package/lib-esm/components/Accordion/index.js +0 -3
  179. package/lib-esm/components/Accordion/index.js.map +0 -1
  180. package/lib-esm/components/Badge/index.js +0 -2
  181. package/lib-esm/components/Badge/index.js.map +0 -1
  182. package/lib-esm/components/Button/index.js +0 -6
  183. package/lib-esm/components/Button/index.js.map +0 -1
  184. package/lib-esm/components/Card/index.js +0 -3
  185. package/lib-esm/components/Card/index.js.map +0 -1
  186. package/lib-esm/components/Chip/index.js +0 -2
  187. package/lib-esm/components/Chip/index.js.map +0 -1
  188. package/lib-esm/components/Dialog/index.js +0 -5
  189. package/lib-esm/components/Dialog/index.js.map +0 -1
  190. package/lib-esm/components/DragAndDrop/index.js +0 -3
  191. package/lib-esm/components/DragAndDrop/index.js.map +0 -1
  192. package/lib-esm/components/Drawer/index.js +0 -2
  193. package/lib-esm/components/Drawer/index.js.map +0 -1
  194. package/lib-esm/components/Groups/index.js +0 -3
  195. package/lib-esm/components/Groups/index.js.map +0 -1
  196. package/lib-esm/components/Input/index.js +0 -9
  197. package/lib-esm/components/Input/index.js.map +0 -1
  198. package/lib-esm/components/Menu/index.js +0 -3
  199. package/lib-esm/components/Menu/index.js.map +0 -1
  200. package/lib-esm/components/Modal/index.js +0 -2
  201. package/lib-esm/components/Modal/index.js.map +0 -1
  202. package/lib-esm/components/Notification/index.js +0 -3
  203. package/lib-esm/components/Notification/index.js.map +0 -1
  204. package/lib-esm/components/Popover/index.js +0 -2
  205. package/lib-esm/components/Popover/index.js.map +0 -1
  206. package/lib-esm/components/Spinner/index.js +0 -2
  207. package/lib-esm/components/Spinner/index.js.map +0 -1
  208. package/lib-esm/components/Stepper/index.js +0 -4
  209. package/lib-esm/components/Stepper/index.js.map +0 -1
  210. package/lib-esm/components/Tabs/index.js +0 -3
  211. package/lib-esm/components/Tabs/index.js.map +0 -1
  212. package/lib-esm/components/Toast/ToastStory.js +0 -35
  213. package/lib-esm/components/Toast/ToastStory.js.map +0 -1
  214. package/lib-esm/components/Toast/index.js +0 -2
  215. package/lib-esm/components/Toast/index.js.map +0 -1
  216. package/lib-esm/components/Tooltip/index.js +0 -2
  217. package/lib-esm/components/Tooltip/index.js.map +0 -1
  218. package/lib-esm/icons/index.js +0 -9
  219. package/lib-esm/icons/index.js.map +0 -1
  220. package/lib-esm/index.js +0 -2
  221. package/lib-esm/index.js.map +0 -1
@@ -1,136 +1,92 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { useState } from 'react';
3
- import PropTypes from 'prop-types';
1
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
+ import React, { useState, useId, useEffect } from 'react';
4
3
  import styled from '@emotion/styled';
5
- import constants from '../../shared/constants';
6
- const Label = styled.label `
7
- display: inline-flex;
8
- flex-direction: column;
9
- flex: 1;
10
- position: relative;
11
- margin: 10px 5px;
12
- `;
13
- const TextField = styled.textarea `
14
- border: none;
15
- color: inherit;
16
- padding: 8px;
17
- min-height: 150px;
18
- min-width: 250px;
19
- border-radius: 3px;
20
- border: 1px solid var(--border-color, ${constants.BORDER_COLOR});
21
- display: inline-block;
22
- background-color: var(--background, ${constants.BACKGROUND});
4
+ import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
23
5
 
24
- /** Focused */
25
- &:focus, &:active {
26
- border-color: var(--primary, ${constants.PRIMARY});
27
- box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});
28
- }
29
-
30
- &:focus + span, &:active + span {
31
- color: var(--primary, ${constants.PRIMARY});
32
- }
33
-
34
- /** Disabled */
35
- &:disabled {
36
- border-color: var(--disabled-border, ${constants.DISABLED_BORDER});
37
- background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});
38
- }
39
-
40
- &:disabled + span {
41
- color: var(--disabled, ${constants.DISABLED});
42
- }
43
-
44
- /** Invalid */
45
- &:focus:invalid {
46
- border-color: var(--error, ${constants.ERROR});
47
- box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});
48
- }
49
-
50
- ${props => props.touched ? `
6
+ const Label$4 = /*#__PURE__*/ styled("label", {
7
+ target: "e1ifgue60",
8
+ label: "Label"
9
+ })("display:inline-flex;flex-direction:column;position:relative;margin:10px 5px;");
10
+ const TextField = /*#__PURE__*/ styled("textarea", {
11
+ target: "e1ifgue61",
12
+ label: "TextField"
13
+ })("border:none;color:inherit;padding:8px;min-height:150px;min-width:250px;border-radius:3px;border:1px solid ", getThemeValue(THEME_NAME.BORDER_COLOR), ";display:inline-block;background-color:", getThemeValue(THEME_NAME.BACKGROUND), ";&:focus,&:active{border-color:", getThemeValue(THEME_NAME.PRIMARY), ";box-shadow:0 0 0 4px ", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";}&:focus + span,&:active + span{color:", getThemeValue(THEME_NAME.PRIMARY), ";}&:disabled{border-color:", getThemeValue(THEME_NAME.DISABLED_BORDER), ";background-color:", getThemeValue(THEME_NAME.DISABLED_BACKGROUND), ";}&:disabled + span{color:", getThemeValue(THEME_NAME.DISABLED), ";}&:focus:invalid{border-color:", getThemeValue(THEME_NAME.ERROR), ";box-shadow:0 0 0 4px ", getThemeValue(THEME_NAME.ERROR_LIGHT), ";}", (props)=>props.touched ? `
51
14
  &:invalid {
52
- border-color: var(--error, ${constants.ERROR});
15
+ border-color: ${getThemeValue(THEME_NAME.ERROR)};
53
16
  }
54
17
 
55
18
  &:invalid + span {
56
- color: var(--error, ${constants.ERROR});
57
- }
58
- ` : ''}
59
-
60
- /** Error */
61
- ${props => props.errorText ? `
62
- border-color: var(--error, ${constants.ERROR});
63
-
64
- & + span {
65
- color: var(--error, ${constants.ERROR});
66
- }
67
- ` : ''}
68
-
69
- /** Required */
70
- &:required + span:after {
71
- content: '*';
72
- margin-left: 2px;
73
- color: var(--error, ${constants.ERROR});
19
+ color: ${getThemeValue(THEME_NAME.ERROR)};
74
20
  }
21
+ ` : '', " \n ", (props)=>props.errorText ? `
22
+ border-color: ${getThemeValue(THEME_NAME.ERROR)};
75
23
 
76
- /** Label Animation */
77
24
  & + span {
78
- position: absolute;
79
- padding: 0 5px;
80
- top: 0px;
81
- left: 4px;
82
- font-size: 14px;
83
- line-height: 32px;
84
- transition: all 300ms ease;
25
+ color: ${getThemeValue(THEME_NAME.ERROR)};
85
26
  }
86
-
87
- ${props => props.value !== '' ? `
27
+ ` : '', " \n &:required + span:after{content:'*';margin-left:2px;color:", getThemeValue(THEME_NAME.ERROR), ";}& + span{position:absolute;padding:0 5px;top:0px;left:4px;font-size:14px;line-height:32px;transition:all 300ms ease;}", (props)=>props.value !== '' ? `
88
28
  & + span {
89
29
  top: -8px;
90
- background: var(--background, ${constants.BACKGROUND});
91
- font-size: 12px;
92
- line-height: 14px;
93
- }
94
- ` : ''}
95
-
96
- &:focus + span, &:placeholder-shown + span {
97
- top: -8px;
98
- background: var(--background, ${constants.BACKGROUND});
30
+ background: ${getThemeValue(THEME_NAME.BACKGROUND)};
99
31
  font-size: 12px;
100
32
  line-height: 14px;
101
33
  }
102
- `;
103
- const ErrorContainer = styled.div `
104
- color: var(--error, ${constants.ERROR});
105
- padding-top: 3px;
106
- font-size: 12px;
107
- line-height: 14px;
108
- margin-left: 3px;
109
- `;
110
- export default function TextArea(props) {
34
+ ` : '', " &:focus + span,&:placeholder-shown + span{top:-8px;background:", getThemeValue(THEME_NAME.BACKGROUND), ";font-size:12px;line-height:14px;}");
35
+ const ErrorContainer$2 = /*#__PURE__*/ styled("div", {
36
+ target: "e1ifgue62",
37
+ label: "ErrorContainer"
38
+ })("color:", getThemeValue(THEME_NAME.ERROR), ";padding-top:3px;font-size:12px;line-height:14px;margin-left:3px;");
39
+ function TextAreaComponent(props, ref) {
40
+ const { label, errorText, value: propsValue, required, ...rest } = props;
111
41
  const [touched, setTouched] = useState(false);
112
- const [value, setValue] = useState(props.value || '');
113
- const handleFocus = (e) => {
42
+ const [value, setValue] = useState(propsValue || '');
43
+ const errorId = useId();
44
+ useEffect(()=>{
45
+ if (propsValue !== undefined) {
46
+ setValue(propsValue);
47
+ }
48
+ }, [
49
+ propsValue
50
+ ]);
51
+ const handleFocus = (e)=>{
114
52
  setTouched(true);
115
53
  if (props.onFocus) {
116
54
  props.onFocus(e);
117
55
  }
118
56
  };
119
- const onChangeHandler = (e) => {
57
+ const onChangeHandler = (e)=>{
120
58
  if (props.onChange) {
121
59
  setValue(e.target.value);
122
60
  props.onChange(e);
123
- }
124
- else {
61
+ } else {
125
62
  setValue(e.target.value);
126
63
  }
127
64
  };
128
- return (_jsxs(Label, { children: [_jsx(TextField, Object.assign({}, props, { value: value, onChange: onChangeHandler, onFocus: handleFocus, touched: touched })), _jsx("span", { children: props.label }), props.errorText && _jsx(ErrorContainer, { children: props.errorText })] }));
65
+ return /*#__PURE__*/ jsxs(Label$4, {
66
+ children: [
67
+ /*#__PURE__*/ jsx(TextField, {
68
+ ...rest,
69
+ ref: ref,
70
+ value: value,
71
+ onChange: onChangeHandler,
72
+ onFocus: handleFocus,
73
+ touched: touched,
74
+ required: required,
75
+ "aria-invalid": !!errorText,
76
+ "aria-required": required,
77
+ "aria-describedby": errorText ? errorId : undefined
78
+ }),
79
+ /*#__PURE__*/ jsx("span", {
80
+ children: label
81
+ }),
82
+ errorText && /*#__PURE__*/ jsx(ErrorContainer$2, {
83
+ id: errorId,
84
+ children: errorText
85
+ })
86
+ ]
87
+ });
129
88
  }
130
- TextArea.propTypes = {
131
- /** Label for the field */
132
- label: PropTypes.string,
133
- /** Error text to be shown below the field */
134
- errorText: PropTypes.string,
135
- };
136
- //# sourceMappingURL=TextArea.js.map
89
+ const TextArea = /*#__PURE__*/ React.forwardRef(TextAreaComponent);
90
+
91
+ export { TextArea as default };
92
+ //# sourceMappingURL=TextArea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../src/components/Input/TextArea.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextArea.js","sources":["../../../src/components/Input/TextArea.tsx"],"sourcesContent":["import React, { useState, useEffect, useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype TextAreaProps = {\n /** Label for the field */\n label: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLTextAreaElement>;\n\ntype TextAreaInternalProps = {\n touched: boolean;\n errorText?: string;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.textarea<TextAreaInternalProps>`\n border: none;\n color: inherit;\n padding: 8px;\n min-height: 150px;\n min-width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nfunction TextAreaComponent(props: TextAreaProps, ref: React.Ref<HTMLTextAreaElement>) {\n const { label, errorText, value: propsValue, required, ...rest } = props;\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(propsValue || '');\n const errorId = useId();\n\n useEffect(() => {\n if (propsValue !== undefined) {\n setValue(propsValue);\n }\n }, [propsValue]);\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...rest}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n required={required}\n aria-invalid={!!errorText}\n aria-required={required}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span>{label}</span>\n {errorText && <ErrorContainer id={errorId}>{errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nconst TextArea = React.forwardRef(TextAreaComponent);\nexport default TextArea;\n"],"names":["Label","styled","TextField","getThemeValue","THEME_NAME","BORDER_COLOR","BACKGROUND","PRIMARY","PRIMARY_LIGHT","DISABLED_BORDER","DISABLED_BACKGROUND","DISABLED","ERROR","ERROR_LIGHT","props","touched","errorText","value","ErrorContainer","TextAreaComponent","ref","label","propsValue","required","rest","setTouched","useState","setValue","errorId","useId","useEffect","undefined","handleFocus","e","onFocus","onChangeHandler","onChange","target","_jsxs","_jsx","aria-invalid","aria-required","aria-describedby","span","id","TextArea","React","forwardRef"],"mappings":"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"}
@@ -1,11 +1,6 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
- type ToggleProps = PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof Toggle.propTypes>;
4
- declare function Toggle(props: ToggleProps): import("@emotion/react/jsx-runtime").JSX.Element;
5
- declare namespace Toggle {
6
- var propTypes: {
7
- /** Label for the field */
8
- label: PropTypes.Requireable<string>;
9
- };
10
- }
2
+ declare const Toggle: React.ForwardRefExoticComponent<{
3
+ /** Label for the field */
4
+ label?: string;
5
+ } & React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>;
11
6
  export default Toggle;
@@ -1,83 +1,34 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import PropTypes from 'prop-types';
1
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
+ import React from 'react';
3
3
  import styled from '@emotion/styled';
4
- import constants from '../../shared/constants';
5
- const Switch = styled.label `
6
- position: relative;
7
- display: inline-flex;
8
- margin: 5px 0;
9
- `;
10
- const Input = styled.input `
11
- appearance: none;
12
- margin: 0;
4
+ import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
13
5
 
14
- & + span {
15
- position: relative;
16
- cursor: pointer;
17
- width: 30px;
18
- height: 18px;
19
- background-color: ${constants.LIGHT_GREY};
20
- transition: .4s;
21
- border-radius: 10px;
22
- padding: 0 3px;
23
- margin: 0 10px 0 5px;
24
- }
25
- & + span:before {
26
- position: absolute;
27
- content: "";
28
- height: 14px;
29
- width: 14px;
30
- left: 1px;
31
- top: 1px;
32
- border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});
33
- border-radius: 50%;
34
- background-color: var(--background, ${constants.BACKGROUND});
35
- transition: .4s;
36
- }
37
-
38
- /* checked */
39
- &:checked + span {
40
- background-color: var(--primary, ${constants.PRIMARY_LIGHT});
41
- }
42
-
43
- &:checked + span:before {
44
- transform: translateX(18px);
45
- border-color: var(--primary, ${constants.PRIMARY});
46
- }
47
-
48
- /* focus */
49
- &:enabled:focus + span:before {
50
- box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT});
51
- border-color: var(--primary, ${constants.PRIMARY});
52
- }
53
-
54
- /* hover */
55
- &:enabled:hover ~ span {
56
- cursor: pointer;
57
- color: var(--primary, ${constants.PRIMARY});
58
- }
59
-
60
- /* disabled */
61
- &:disabled ~ span {
62
- color: var(--disabled-border, ${constants.DISABLED_BORDER});
63
- }
64
-
65
- &:disabled + span {
66
- background-color: ${constants.LIGHT_GREY};
67
- cursor: not-allowed;
68
- }
69
-
70
- &:disabled + span:before {
71
- background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});
72
- border-color: var(--disabled-border, ${constants.DISABLED_BORDER});
73
- }
74
- `;
75
- function Toggle(props) {
76
- return (_jsxs(Switch, { children: [_jsx(Input, Object.assign({}, props, { type: 'checkbox' })), _jsx("span", {}), _jsx("span", { children: props.label })] }));
6
+ const Switch = /*#__PURE__*/ styled("label", {
7
+ target: "ebp76g50",
8
+ label: "Switch"
9
+ })("position:relative;display:inline-flex;margin:5px 0;");
10
+ const Input$1 = /*#__PURE__*/ styled("input", {
11
+ target: "ebp76g51",
12
+ label: "Input"
13
+ })("position:absolute;width:0;height:0;appearance:none;margin:0;& + span{position:relative;cursor:pointer;width:30px;height:18px;background-color:", getThemeValue(THEME_NAME.LIGHT_GREY), ";transition:0.4s;border-radius:10px;padding:0 3px;margin:0 10px 0 5px;}& + span:before{position:absolute;content:'';height:14px;width:14px;left:1px;top:1px;border:1px solid ", getThemeValue(THEME_NAME.DISABLED_BORDER), ";border-radius:50%;background-color:", getThemeValue(THEME_NAME.BACKGROUND), ";transition:0.4s;}&:checked + span{background-color:", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";}&:checked + span:before{transform:translateX(18px);border-color:", getThemeValue(THEME_NAME.PRIMARY), ";}&:enabled:focus + span:before{box-shadow:0 0 0 3px ", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";border-color:", getThemeValue(THEME_NAME.PRIMARY), ";}&:enabled:hover ~ span{cursor:pointer;color:", getThemeValue(THEME_NAME.PRIMARY), ";}&:disabled ~ span{color:", getThemeValue(THEME_NAME.DISABLED_BORDER), ";}&:disabled + span{background-color:", getThemeValue(THEME_NAME.LIGHT_GREY), ";cursor:not-allowed;}&:disabled + span:before{background-color:", getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR), ";border-color:", getThemeValue(THEME_NAME.DISABLED_BORDER), ";}");
14
+ function ToggleComponent(props, ref) {
15
+ return /*#__PURE__*/ jsxs(Switch, {
16
+ children: [
17
+ /*#__PURE__*/ jsx(Input$1, {
18
+ ...props,
19
+ ref: ref,
20
+ type: "checkbox",
21
+ role: "switch",
22
+ "aria-checked": props.checked
23
+ }),
24
+ /*#__PURE__*/ jsx("span", {}),
25
+ /*#__PURE__*/ jsx("span", {
26
+ children: props.label
27
+ })
28
+ ]
29
+ });
77
30
  }
78
- Toggle.propTypes = {
79
- /** Label for the field */
80
- label: PropTypes.string,
81
- };
82
- export default Toggle;
83
- //# sourceMappingURL=Toggle.js.map
31
+ const Toggle = /*#__PURE__*/ React.forwardRef(ToggleComponent);
32
+
33
+ export { Toggle as default };
34
+ //# sourceMappingURL=Toggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../src/components/Input/Toggle.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAA;;;;CAI1B,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;;4BASE,SAAS,CAAC,UAAU;;;;;;;;;;;;;mDAaG,SAAS,CAAC,eAAe;;8CAE9B,SAAS,CAAC,UAAU;;;;;;2CAMvB,SAAS,CAAC,aAAa;;;;;uCAK3B,SAAS,CAAC,OAAO;;;;;+CAKT,SAAS,CAAC,aAAa;uCAC/B,SAAS,CAAC,OAAO;;;;;;gCAMxB,SAAS,CAAC,OAAO;;;;;wCAKT,SAAS,CAAC,eAAe;;;;4BAIrC,SAAS,CAAC,UAAU;;;;;sDAKM,SAAS,CAAC,kBAAkB;+CACnC,SAAS,CAAC,eAAe;;CAEvE,CAAC;AAKF,SAAS,MAAM,CAAC,KAAkB;IAC9B,OAAO,CACH,MAAC,MAAM,eACH,KAAC,KAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,UAAU,IAAG,EACpC,gBAAa,EACb,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACrB,CACZ,CAAC;AACN,CAAC;AAED,MAAM,CAAC,SAAS,GAAG;IACf,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAA;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Toggle.js","sources":["../../../src/components/Input/Toggle.tsx"],"sourcesContent":["import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Switch = styled.label`\n position: relative;\n display: inline-flex;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n appearance: none;\n margin: 0;\n\n & + span {\n position: relative;\n cursor: pointer;\n width: 30px;\n height: 18px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n transition: 0.4s;\n border-radius: 10px;\n padding: 0 3px;\n margin: 0 10px 0 5px;\n }\n & + span:before {\n position: absolute;\n content: '';\n height: 14px;\n width: 14px;\n left: 1px;\n top: 1px;\n border: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n border-radius: 50%;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: 0.4s;\n }\n\n /* checked */\n &:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:checked + span:before {\n transform: translateX(18px);\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* focus */\n &:enabled:focus + span:before {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* hover */\n &:enabled:hover ~ span {\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled + span:before {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\ntype ToggleProps = {\n /** Label for the field */\n label?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nfunction ToggleComponent(props: ToggleProps, ref: React.Ref<HTMLInputElement>) {\n return (\n <Switch>\n <Input\n {...props}\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={props.checked}\n />\n <span></span>\n <span>{props.label}</span>\n </Switch>\n );\n}\n\nconst Toggle = React.forwardRef(ToggleComponent);\nexport default Toggle;\n"],"names":["Switch","styled","Input","getThemeValue","THEME_NAME","LIGHT_GREY","DISABLED_BORDER","BACKGROUND","PRIMARY_LIGHT","PRIMARY","BORDER_LIGHT_COLOR","ToggleComponent","props","ref","_jsxs","_jsx","type","role","aria-checked","checked","span","label","Toggle","React","forwardRef"],"mappings":";;;;;AAIA,MAAMA,MAAAA,iBAASC,MAAAA,CAAAA,OAAAA,EAAAA;;;;AAMf,MAAMC,OAAAA,iBAAQD,MAAAA,CAAAA,OAAAA,EAAAA;;;qJAYcE,aAAAA,CAAcC,UAAAA,CAAWC,UAAU,CAAA,EAAA,+KAAA,EAanCF,aAAAA,CAAcC,WAAWE,eAAe,CAAA,EAAA,sCAAA,EAExCH,cAAcC,UAAAA,CAAWG,UAAU,2DAMnCJ,aAAAA,CAAcC,UAAAA,CAAWI,aAAa,CAAA,EAAA,oEAAA,EAK1CL,aAAAA,CAAcC,WAAWK,OAAO,CAAA,EAAA,uDAAA,EAKxBN,cAAcC,UAAAA,CAAWI,aAAa,qBAC9CL,aAAAA,CAAcC,UAAAA,CAAWK,OAAO,CAAA,EAAA,gDAAA,EAMvCN,aAAAA,CAAcC,WAAWK,OAAO,CAAA,EAAA,4BAAA,EAKhCN,cAAcC,UAAAA,CAAWE,eAAe,4CAI7BH,aAAAA,CAAcC,UAAAA,CAAWC,UAAU,CAAA,EAAA,iEAAA,EAKnCF,aAAAA,CAAcC,WAAWM,kBAAkB,CAAA,EAAA,gBAAA,EAC/CP,aAAAA,CAAcC,UAAAA,CAAWE,eAAe,CAAA,EAAA,IAAA,CAAA;AAShE,SAASK,eAAAA,CAAgBC,KAAkB,EAAEC,GAAgC,EAAA;AACzE,IAAA,qBACIC,IAAA,CAACd,MAAAA,EAAAA;;0BACGe,GAAA,CAACb,OAAAA,EAAAA;AACI,gBAAA,GAAGU,KAAK;gBACTC,GAAAA,EAAKA,GAAAA;gBACLG,IAAAA,EAAK,UAAA;gBACLC,IAAAA,EAAK,QAAA;AACLC,gBAAAA,cAAAA,EAAcN,MAAMO;;0BAExBJ,GAAA,CAACK,MAAAA,EAAAA,EAAAA,CAAAA;0BACDL,GAAA,CAACK,MAAAA,EAAAA;AAAMR,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMS;;;;AAGzB;AAEA,MAAMC,MAAAA,iBAASC,KAAAA,CAAMC,UAAU,CAACb,eAAAA;;;;"}
@@ -1,13 +1,15 @@
1
- import React, { ReactNode } from 'react';
2
- interface MenuProps<T> {
1
+ import React from 'react';
2
+ /**
3
+ * Props for the Menu component.
4
+ * @template T - The type of value(s) in the menu.
5
+ */
6
+ type MenuProps<T> = {
3
7
  /** Multiple Menu Items can be selected */
4
8
  multiSelect?: boolean;
5
9
  /** Value(s) selected */
6
10
  value?: T | T[];
7
11
  /** Callback when the selected value changes */
8
12
  onChange?: (value: T | T[]) => void;
9
- /** Menu Items */
10
- children?: ReactNode;
11
- }
12
- declare const Menu: React.ForwardRefExoticComponent<MenuProps<unknown> & React.RefAttributes<HTMLDivElement>>;
13
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>;
14
+ declare const Menu: <T>(props: MenuProps<T> & React.RefAttributes<HTMLDivElement>) => React.ReactElement;
13
15
  export default Menu;
@@ -1,45 +1,130 @@
1
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
1
+ import { jsx } from '@emotion/react/jsx-runtime';
2
2
  import React, { useState } from 'react';
3
3
  import styled from '@emotion/styled';
4
- import MenuContext from './MenuContext';
5
- const MenuContainer = styled.div `
6
- flex: 1;
7
- display: flex;
8
- flex-direction: column;
4
+ import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
5
+ import MenuContext from './MenuContext.js';
9
6
 
10
- & div:last-child {
11
- border-bottom: none;
12
- }
13
- `;
14
- const Menu = React.forwardRef(function (props, ref) {
15
- const { multiSelect, onChange } = props;
16
- const [value, setValue] = useState(props.value || (multiSelect ? [] : ''));
17
- const updateValue = (val) => {
7
+ const MenuContainer = /*#__PURE__*/ styled("div", {
8
+ target: "e1nm0ogj0",
9
+ label: "MenuContainer"
10
+ })("flex:1;display:flex;flex-direction:column;& div:last-child{border-bottom:none;}&:focus-within{box-shadow:0 0 0 4px ", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";}");
11
+ /**
12
+ * Menu component that allows selection of items from a list.
13
+ * Supports single and multi-select modes and keyboard navigation.
14
+ *
15
+ * @template T - The type of value(s) in the menu.
16
+ * @param props - The menu properties.
17
+ * @param ref - The ref forwarded to the menu container.
18
+ */ function MenuInner(props, ref) {
19
+ const { multiSelect = false, onChange, value: propValue, children, ...rest } = props;
20
+ // State holds either a single T or an array of T when multiSelect
21
+ const [value, setValue] = useState(propValue);
22
+ /**
23
+ * Updates the selected value(s).
24
+ * Handles both single and multi-select logic.
25
+ *
26
+ * @param {T} val - The value to select or deselect.
27
+ */ const updateValue = (val)=>{
18
28
  let newVal;
19
29
  if (multiSelect) {
20
30
  if (Array.isArray(value)) {
21
31
  if (value.includes(val)) {
22
- newVal = value.filter(item => item !== val);
23
- }
24
- else {
25
- newVal = [...value, val];
32
+ newVal = value.filter((item)=>item !== val);
33
+ } else {
34
+ newVal = [
35
+ ...value,
36
+ val
37
+ ];
26
38
  }
39
+ } else {
40
+ newVal = [
41
+ val
42
+ ];
27
43
  }
28
- }
29
- else {
44
+ } else {
30
45
  newVal = val;
31
46
  }
32
47
  setValue(newVal);
33
- onChange === null || onChange === void 0 ? void 0 : onChange(newVal);
48
+ onChange?.(newVal);
49
+ };
50
+ /**
51
+ * Handles keyboard navigation within the menu.
52
+ * Supports Arrow keys for navigation, and Enter/Space for selection.
53
+ *
54
+ * @param {React.KeyboardEvent} e - The keyboard event.
55
+ */ const handleKeyDown = (e)=>{
56
+ const target = e.target;
57
+ const container = e.currentTarget;
58
+ const items = Array.from(container.querySelectorAll('[role="option"]'));
59
+ const currentIndex = items.indexOf(target);
60
+ let nextIndex;
61
+ switch(e.key){
62
+ case 'ArrowDown':
63
+ e.preventDefault();
64
+ nextIndex = currentIndex + 1;
65
+ if (nextIndex >= items.length) nextIndex = 0;
66
+ items[nextIndex]?.focus();
67
+ break;
68
+ case 'ArrowUp':
69
+ e.preventDefault();
70
+ nextIndex = currentIndex - 1;
71
+ if (nextIndex < 0) nextIndex = items.length - 1;
72
+ items[nextIndex]?.focus();
73
+ break;
74
+ case 'Home':
75
+ e.preventDefault();
76
+ items[0]?.focus();
77
+ break;
78
+ case 'End':
79
+ e.preventDefault();
80
+ items[items.length - 1]?.focus();
81
+ break;
82
+ case 'Enter':
83
+ case ' ':
84
+ e.preventDefault();
85
+ target.click();
86
+ break;
87
+ }
34
88
  };
35
- return (_jsx(MenuContext.Provider, { value: {
36
- value,
37
- multiSelect,
89
+ /**
90
+ * Handles focus events on the menu container.
91
+ * Delegates focus to the first item if the container itself receives focus.
92
+ *
93
+ * @param {React.FocusEvent} e - The focus event.
94
+ */ const focusHandler = (e)=>{
95
+ // Prevent trap: If focus came from inside (Shift+Tab), do NOT auto-focus again.
96
+ // This allows focus to land on the container, and the next Shift+Tab will exit.
97
+ if (e.currentTarget.contains(e.relatedTarget)) {
98
+ return;
99
+ }
100
+ // Only if focus is actually on the container (e.g. tabbing into it)
101
+ // and not bubbling up from a child
102
+ if (e.target === e.currentTarget) {
103
+ // Prevent the container from holding focus; delegate to first item
104
+ const firstItem = e.currentTarget.querySelector('[role="option"]');
105
+ firstItem?.focus();
106
+ }
107
+ };
108
+ return(// @ts-expect-error Generic context typing
109
+ /*#__PURE__*/ jsx(MenuContext.Provider, {
110
+ value: {
111
+ value: value,
112
+ multiSelect: !!multiSelect,
38
113
  updateValue
39
- }, children: _jsx(MenuContainer, { ref: ref, children: props.children }) }));
40
- });
41
- Menu.defaultProps = {
42
- multiSelect: false,
43
- };
44
- export default Menu;
45
- //# sourceMappingURL=Menu.js.map
114
+ },
115
+ children: /*#__PURE__*/ jsx(MenuContainer, {
116
+ ...rest,
117
+ ref: ref,
118
+ role: "listbox",
119
+ "aria-multiselectable": multiSelect,
120
+ tabIndex: 0,
121
+ onKeyDown: handleKeyDown,
122
+ onFocus: focusHandler,
123
+ children: children
124
+ })
125
+ }));
126
+ }
127
+ const Menu = /*#__PURE__*/ React.forwardRef(MenuInner);
128
+
129
+ export { Menu as default };
130
+ //# sourceMappingURL=Menu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/components/Menu/Menu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAA2B,MAAM,OAAO,CAAC;AACjE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,WAAW,MAAM,eAAe,CAAC;AAYxC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;CAQ/B,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,UAAa,KAAmB,EAAE,GAAiC;IAC7F,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3E,MAAM,WAAW,GAAG,CAAC,GAAM,EAAE,EAAE;QAC3B,IAAI,MAAM,CAAC;QACX,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACJ,MAAM,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAG,CAAC;QACjB,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,MAAM,CAAC,CAAC;IACvB,CAAC,CAAA;IAED,OAAO,CACH,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE;YACzB,KAAK;YACL,WAAW;YACX,WAAW;SACd,YACG,KAAC,aAAa,IAAC,GAAG,EAAE,GAAG,YAClB,KAAK,CAAC,QAAQ,GACH,GACG,CAC1B,CAAA;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,YAAY,GAAG;IAChB,WAAW,EAAE,KAAK;CACrB,CAAA;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Menu.js","sources":["../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, { useState, ForwardedRef } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport MenuContext from './MenuContext';\n/**\n * Props for the Menu component.\n * @template T - The type of value(s) in the menu.\n */\ntype MenuProps<T> = {\n /** Multiple Menu Items can be selected */\n multiSelect?: boolean;\n /** Value(s) selected */\n value?: T | T[];\n /** Callback when the selected value changes */\n onChange?: (value: T | T[]) => void;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\nconst MenuContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n\n & div:last-child {\n border-bottom: none;\n }\n\n &:focus-within {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/**\n * Menu component that allows selection of items from a list.\n * Supports single and multi-select modes and keyboard navigation.\n *\n * @template T - The type of value(s) in the menu.\n * @param props - The menu properties.\n * @param ref - The ref forwarded to the menu container.\n */\nfunction MenuInner<T>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n const { multiSelect = false, onChange, value: propValue, children, ...rest } = props;\n // State holds either a single T or an array of T when multiSelect\n const [value, setValue] = useState<unknown | undefined>(propValue);\n\n /**\n * Updates the selected value(s).\n * Handles both single and multi-select logic.\n *\n * @param {T} val - The value to select or deselect.\n */\n const updateValue = (val: unknown) => {\n let newVal: unknown;\n if (multiSelect) {\n if (Array.isArray(value)) {\n if (value.includes(val as unknown as T)) {\n newVal = (value as T[]).filter((item) => item !== val);\n } else {\n newVal = [...(value as T[]), val];\n }\n } else {\n newVal = [val];\n }\n } else {\n newVal = val;\n }\n\n setValue(newVal as T | T[]);\n onChange?.(newVal as T | T[]);\n };\n\n /**\n * Handles keyboard navigation within the menu.\n * Supports Arrow keys for navigation, and Enter/Space for selection.\n *\n * @param {React.KeyboardEvent} e - The keyboard event.\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const container = e.currentTarget as HTMLElement;\n const items = Array.from(container.querySelectorAll('[role=\"option\"]')) as HTMLElement[];\n const currentIndex = items.indexOf(target as HTMLElement);\n\n let nextIndex;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextIndex = currentIndex + 1;\n if (nextIndex >= items.length) nextIndex = 0;\n items[nextIndex]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextIndex = currentIndex - 1;\n if (nextIndex < 0) nextIndex = items.length - 1;\n items[nextIndex]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Enter':\n case ' ': // Space\n e.preventDefault();\n target.click();\n break;\n default:\n break;\n }\n };\n\n /**\n * Handles focus events on the menu container.\n * Delegates focus to the first item if the container itself receives focus.\n *\n * @param {React.FocusEvent} e - The focus event.\n */\n const focusHandler = (e: React.FocusEvent) => {\n // Prevent trap: If focus came from inside (Shift+Tab), do NOT auto-focus again.\n // This allows focus to land on the container, and the next Shift+Tab will exit.\n if (e.currentTarget.contains(e.relatedTarget as Node)) {\n return;\n }\n\n // Only if focus is actually on the container (e.g. tabbing into it)\n // and not bubbling up from a child\n if (e.target === e.currentTarget) {\n // Prevent the container from holding focus; delegate to first item\n const firstItem = e.currentTarget.querySelector('[role=\"option\"]') as HTMLElement;\n firstItem?.focus();\n }\n };\n\n return (\n // @ts-expect-error Generic context typing\n <MenuContext.Provider value={{ value: value, multiSelect: !!multiSelect, updateValue }}>\n <MenuContainer\n {...rest}\n ref={ref}\n role=\"listbox\"\n aria-multiselectable={multiSelect}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onFocus={focusHandler}\n >\n {children}\n </MenuContainer>\n </MenuContext.Provider>\n );\n}\n\nconst Menu = React.forwardRef(MenuInner) as <T>(\n props: MenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => React.ReactElement;\n\nexport default Menu;\n"],"names":["MenuContainer","styled","getThemeValue","THEME_NAME","PRIMARY_LIGHT","MenuInner","props","ref","multiSelect","onChange","value","propValue","children","rest","setValue","useState","updateValue","val","newVal","Array","isArray","includes","filter","item","handleKeyDown","e","target","container","currentTarget","items","from","querySelectorAll","currentIndex","indexOf","nextIndex","key","preventDefault","length","focus","click","focusHandler","contains","relatedTarget","firstItem","querySelector","_jsx","MenuContext","Provider","role","aria-multiselectable","tabIndex","onKeyDown","onFocus","Menu","React","forwardRef"],"mappings":"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"}
@@ -1,7 +1,13 @@
1
- export interface MenuContext<T> {
2
- value: T | T[];
3
- multiSelect: boolean;
1
+ type SingleSelect<T> = {
2
+ value?: T;
3
+ multiSelect: false;
4
4
  updateValue: (newVal: T) => void;
5
- }
6
- declare const _default: import("react").Context<MenuContext<any>>;
5
+ };
6
+ type MultiSelect<T> = {
7
+ value?: T[];
8
+ multiSelect: true;
9
+ updateValue: (newVal: T) => void;
10
+ };
11
+ export type MenuContextType<T> = SingleSelect<T> | MultiSelect<T>;
12
+ declare const _default: import("react").Context<MenuContextType<unknown> | undefined>;
7
13
  export default _default;