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,133 +1,224 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import ReactDOM from 'react-dom';
1
+ import { jsx, Fragment, jsxs } from '@emotion/react/jsx-runtime';
2
+ import { createRoot } from 'react-dom/client';
3
3
  import styled from '@emotion/styled';
4
- import { Card } from '../Card';
5
- import LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';
6
- import constants from '../../shared/constants';
7
- export var TOAST_TYPE;
8
- (function (TOAST_TYPE) {
4
+ import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
5
+ import LayerManager, { LAYER_POSITION } from '../../shared/LayerManager.js';
6
+ import Card from '../Card/Card.js';
7
+
8
+ var TOAST_TYPE = /*#__PURE__*/ function(TOAST_TYPE) {
9
9
  TOAST_TYPE["NORMAL"] = "NORMAL";
10
10
  TOAST_TYPE["INFO"] = "INFO";
11
11
  TOAST_TYPE["SUCCESS"] = "SUCCESS";
12
12
  TOAST_TYPE["WARNING"] = "WARNING";
13
13
  TOAST_TYPE["DANGER"] = "DANGER";
14
- })(TOAST_TYPE || (TOAST_TYPE = {}));
15
- const getBackgroundColor = (type) => {
16
- switch (type) {
17
- case TOAST_TYPE.INFO:
18
- return `var(--info, ${constants.INFO})`;
19
- case TOAST_TYPE.SUCCESS:
20
- return `var(--success, ${constants.SUCCESS})`;
21
- case TOAST_TYPE.WARNING:
22
- return `var(--warning, ${constants.WARNING})`;
23
- case TOAST_TYPE.DANGER:
24
- return `var(--error, ${constants.ERROR})`;
25
- case TOAST_TYPE.NORMAL:
26
- return `var(--toast, ${constants.TOAST})`;
14
+ return TOAST_TYPE;
15
+ }({});
16
+ const getBackgroundColor = (type)=>{
17
+ switch(type){
18
+ case "INFO":
19
+ return getThemeValue(THEME_NAME.INFO);
20
+ case "SUCCESS":
21
+ return getThemeValue(THEME_NAME.SUCCESS);
22
+ case "WARNING":
23
+ return getThemeValue(THEME_NAME.WARNING);
24
+ case "DANGER":
25
+ return getThemeValue(THEME_NAME.ERROR);
26
+ case "NORMAL":
27
+ return getThemeValue(THEME_NAME.TOAST);
27
28
  }
28
29
  };
29
- const ToastContainer = styled(Card) `
30
- box-sizing: border-box;
31
- border-radius: 3px;
32
- padding: 12px;
33
- background-color: ${props => getBackgroundColor(props.type)};
34
- color: #fff;
35
- margin: 20px;
36
- font-size: 14px;
37
- line-height: 20px;
38
- transform: translateY(100%);
39
- transition: transform .3s ease;
40
- width: 344px;
41
- display: flex;
42
- align-items: center;
43
-
44
- & svg {
45
- width: 20px;
46
- height: 20px;
47
- fill: currentColor;
48
- }
49
-
50
- @media (max-width: 480px) {
51
- & {
52
- margin: 0;
53
- width: 100vw;
54
- border-radius: 0;
55
- }
56
- }
57
-
58
- .nf-layer-enter & {
59
- transform: translateY(0%);
60
- }
61
- `;
62
- const TextContainer = styled.div `
63
- flex: 1;
64
- `;
65
- const CloseContainer = styled.button `
66
- background-color: transparent;
67
- color: var(--primary, ${constants.PRIMARY_LIGHT});
68
- padding: 6px 10px;
69
- border: none;
70
- border-radius: 3px;
71
- text-transform: uppercase;
72
- cursor: pointer;
73
-
74
- &:focus {
75
- background-color: rgba(255, 255, 255, 0.1);
76
- }
77
- `;
30
+ const ToastContainer = /*#__PURE__*/ styled(Card, {
31
+ target: "e1bc14ug0",
32
+ label: "ToastContainer"
33
+ })("box-sizing:border-box;border-radius:3px;padding:12px;background-color:", (props)=>getBackgroundColor(props.type), ";color:", getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT), ";margin:20px;font-size:14px;line-height:20px;transform:translateY(100%);transition:transform 0.3s ease;width:344px;display:flex;align-items:center;position:relative;& svg{width:20px;height:20px;fill:currentColor;}@media (max-width:480px){&{margin:0;width:100vw;border-radius:0;}}.nf-layer-enter &{transform:translateY(0%);}");
34
+ const TextContainer = /*#__PURE__*/ styled("div", {
35
+ target: "e1bc14ug1",
36
+ label: "TextContainer"
37
+ })("flex:1;");
38
+ const CloseContainer = /*#__PURE__*/ styled("button", {
39
+ target: "e1bc14ug2",
40
+ label: "CloseContainer"
41
+ })("background-color:transparent;color:", getThemeValue(THEME_NAME.PRIMARY_LIGHT), ";padding:6px 10px;border:none;border-radius:3px;text-transform:uppercase;cursor:pointer;&:focus{background-color:rgba(255,255,255,0.1);}");
78
42
  const DEFAULT_DURATION = 2000;
43
+ const createAriaLiveRegion = (id, ariaLive)=>{
44
+ const region = document.createElement('div');
45
+ region.id = id;
46
+ region.style.position = 'absolute';
47
+ region.style.width = '1px';
48
+ region.style.height = '1px';
49
+ region.style.padding = '0';
50
+ region.style.margin = '-1px';
51
+ region.style.overflow = 'hidden';
52
+ region.style.clip = 'rect(0, 0, 0, 0)';
53
+ region.style.whiteSpace = 'nowrap';
54
+ region.style.borderWidth = '0';
55
+ region.setAttribute('role', ariaLive === 'assertive' ? 'alert' : 'log');
56
+ region.setAttribute('aria-live', ariaLive);
57
+ region.setAttribute('aria-atomic', 'true');
58
+ return region;
59
+ };
79
60
  class Toast {
80
- constructor() {
81
- this.remove = () => {
82
- if (this.toast) {
83
- this.toast[1]();
84
- clearTimeout(this.timeout);
85
- this.timeout = null;
86
- }
87
- this.toast = null;
88
- setTimeout(() => {
89
- if (!this.toast) {
90
- ReactDOM.unmountComponentAtNode(this.element);
91
- }
92
- }, 300);
93
- };
94
- /**
95
- * Pause toast when user is hovering over it.
96
- *
97
- * @param id
98
- */
99
- this.pause = () => {
100
- clearTimeout(this.timeout);
101
- };
102
- /**
103
- * Restart the removal of toast.
104
- *
105
- * @param id
106
- */
107
- this.resume = (options) => () => {
108
- this.timeout = setTimeout(() => {
109
- this.remove();
110
- }, options.duration || DEFAULT_DURATION);
111
- };
112
- this.element = document === null || document === void 0 ? void 0 : document.createElement('div');
113
- }
114
61
  add(options) {
115
- const { text, buttonText, buttonClick, duration, type = TOAST_TYPE.NORMAL } = options;
62
+ if (!this.element) return;
63
+ const { text, buttonText, buttonClick, duration, type = "NORMAL" } = options;
64
+ this.currentOptions = options;
65
+ this.isPaused = false;
116
66
  this.remove();
67
+ // Determine if this is an assertive message (warning/danger)
68
+ const isAssertive = type === "WARNING" || type === "DANGER";
69
+ // Announce to screen readers
70
+ const announcement = buttonText ? `${text} ${buttonText} button available` : text;
71
+ this.updateLiveRegion(announcement, isAssertive);
117
72
  this.toast = LayerManager.renderLayer({
118
73
  exitDelay: 300,
119
74
  closeOnEsc: false,
120
75
  closeOnOverlayClick: false,
121
76
  alwaysOnTop: true,
122
77
  position: LAYER_POSITION.BOTTOM_LEFT,
123
- component: (_jsxs(ToastContainer, Object.assign({}, options, { type: type, elevated: true, onMouseEnter: this.pause, onMouseLeave: this.resume(options), children: [_jsx(TextContainer, { children: text }), buttonText && (_jsx(CloseContainer, { onClick: buttonClick, type: 'button', children: buttonText }))] })))
78
+ component: /*#__PURE__*/ jsx(Fragment, {
79
+ children: /*#__PURE__*/ jsxs(ToastContainer, {
80
+ ...options,
81
+ type: type,
82
+ elevated: true,
83
+ onMouseEnter: this.pause,
84
+ onMouseLeave: this.resume(options),
85
+ "aria-hidden": "true",
86
+ children: [
87
+ /*#__PURE__*/ jsx(TextContainer, {
88
+ children: text
89
+ }),
90
+ buttonText && /*#__PURE__*/ jsx(CloseContainer, {
91
+ onClick: buttonClick,
92
+ type: "button",
93
+ "aria-label": `${buttonText} - Press Space to pause auto-dismiss, Escape to close`,
94
+ children: buttonText
95
+ })
96
+ ]
97
+ })
98
+ })
124
99
  });
125
100
  const Component = this.toast[0];
126
- ReactDOM.render(_jsx(Component, {}), this.element);
127
- this.timeout = setTimeout(() => {
101
+ this.root = createRoot(this.element);
102
+ this.root.render(/*#__PURE__*/ jsx(Component, {}));
103
+ this.timeout = setTimeout(()=>{
128
104
  this.remove();
129
105
  }, duration || DEFAULT_DURATION);
130
106
  }
107
+ constructor(){
108
+ this.isPaused = false;
109
+ this.currentOptions = null;
110
+ /**
111
+ * Clean up event listeners and DOM elements
112
+ * Call this when the app is tearing down (useful for tests)
113
+ */ this.destroy = ()=>{
114
+ if (typeof document !== 'undefined') {
115
+ document.removeEventListener('keydown', this.handleKeyDown);
116
+ }
117
+ this.remove();
118
+ if (this.ariaLiveContainer && document.body.contains(this.ariaLiveContainer)) {
119
+ document.body.removeChild(this.ariaLiveContainer);
120
+ }
121
+ this.politeRegion = undefined;
122
+ this.assertiveRegion = undefined;
123
+ this.ariaLiveContainer = undefined;
124
+ };
125
+ /**
126
+ * Set up keyboard listener for dismissing toast with Escape key
127
+ */ this.setupKeyboardListeners = ()=>{
128
+ if (typeof document !== 'undefined') {
129
+ document.addEventListener('keydown', this.handleKeyDown);
130
+ }
131
+ };
132
+ /**
133
+ * Handle keyboard events for toast interaction
134
+ */ this.handleKeyDown = (event)=>{
135
+ if (!this.toast) return;
136
+ // Escape key dismisses the toast
137
+ if (event.key === 'Escape') {
138
+ this.remove();
139
+ } else if (event.key === ' ' && this.currentOptions) {
140
+ event.preventDefault();
141
+ if (this.isPaused) {
142
+ this.resumeTimeout();
143
+ } else {
144
+ this.pauseTimeout();
145
+ }
146
+ }
147
+ };
148
+ /**
149
+ * Update the appropriate live region with toast content
150
+ */ this.updateLiveRegion = (content, isAssertive)=>{
151
+ const region = isAssertive ? this.assertiveRegion : this.politeRegion;
152
+ if (region) {
153
+ region.textContent = '';
154
+ // Add content after delay
155
+ setTimeout(()=>{
156
+ if (region) {
157
+ region.textContent = content;
158
+ }
159
+ }, 200);
160
+ }
161
+ };
162
+ this.remove = ()=>{
163
+ if (this.toast) {
164
+ this.toast[1]();
165
+ if (this.timeout) {
166
+ clearTimeout(this.timeout);
167
+ this.timeout = undefined;
168
+ }
169
+ }
170
+ this.toast = undefined;
171
+ this.currentOptions = null;
172
+ this.isPaused = false;
173
+ setTimeout(()=>{
174
+ if (!this.toast && this.root) {
175
+ this.root.unmount();
176
+ this.root = undefined;
177
+ }
178
+ }, 300);
179
+ };
180
+ /**
181
+ * Pause toast auto-dismiss
182
+ */ this.pauseTimeout = ()=>{
183
+ if (this.timeout) {
184
+ clearTimeout(this.timeout);
185
+ this.isPaused = true;
186
+ }
187
+ };
188
+ /**
189
+ * Resume toast auto-dismiss
190
+ */ this.resumeTimeout = ()=>{
191
+ if (this.currentOptions && this.isPaused) {
192
+ this.timeout = setTimeout(()=>{
193
+ this.remove();
194
+ }, this.currentOptions.duration || DEFAULT_DURATION);
195
+ this.isPaused = false;
196
+ }
197
+ };
198
+ /**
199
+ * Pause toast when user is hovering over it.
200
+ */ this.pause = ()=>{
201
+ this.pauseTimeout();
202
+ };
203
+ /**
204
+ * Restart the removal of toast.
205
+ */ this.resume = (options)=>()=>{
206
+ this.currentOptions = options;
207
+ this.resumeTimeout();
208
+ };
209
+ if (typeof document === 'undefined') return;
210
+ this.element = document?.createElement('div');
211
+ this.ariaLiveContainer = document?.createElement('div');
212
+ this.ariaLiveContainer.id = 'nf-toast-container';
213
+ document.body.appendChild(this.ariaLiveContainer);
214
+ this.politeRegion = createAriaLiveRegion('nf-toast-polite-region', 'polite');
215
+ this.assertiveRegion = createAriaLiveRegion('nf-toast-assertive-region', 'assertive');
216
+ this.ariaLiveContainer.appendChild(this.politeRegion);
217
+ this.ariaLiveContainer.appendChild(this.assertiveRegion);
218
+ this.setupKeyboardListeners();
219
+ }
131
220
  }
132
- export default new Toast();
133
- //# sourceMappingURL=Toast.js.map
221
+ var Toast_default = new Toast();
222
+
223
+ export { TOAST_TYPE, Toast_default as default };
224
+ //# sourceMappingURL=Toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,YAAY,EAAE,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAU/C,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IAClB,+BAAe,CAAA;IACf,2BAAW,CAAA;IACX,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,+BAAe,CAAA;AACnB,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AAED,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC5C,QAAO,IAAI,EAAE,CAAC;QACV,KAAK,UAAU,CAAC,IAAI;YAChB,OAAO,eAAe,SAAS,CAAC,IAAI,GAAG,CAAC;QAC5C,KAAK,UAAU,CAAC,OAAO;YACnB,OAAO,kBAAkB,SAAS,CAAC,OAAO,GAAG,CAAC;QAClD,KAAK,UAAU,CAAC,OAAO;YACnB,OAAO,kBAAkB,SAAS,CAAC,OAAO,GAAG,CAAC;QAClD,KAAK,UAAU,CAAC,MAAM;YAClB,OAAO,gBAAgB,SAAS,CAAC,KAAK,GAAG,CAAC;QAC9C,KAAK,UAAU,CAAC,MAAM;YAClB,OAAO,gBAAgB,SAAS,CAAC,KAAK,GAAG,CAAC;IAClD,CAAC;AACL,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAsB;;;;wBAIjC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B9D,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;CAE/B,CAAC;AAEF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAA;;4BAER,SAAS,CAAC,aAAa;;;;;;;;;;CAUlD,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,MAAM,KAAK;IAKP;QAIO,WAAM,GAAG,GAAG,EAAE;YACjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YAEjB,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACd,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAA;QAED;;;;WAIG;QACI,UAAK,GAAG,GAAG,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAA;QAED;;;;WAIG;QACI,WAAM,GAAG,CAAC,OAAqB,EAAE,EAAE,CAAC,GAAG,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC,CAAC;QAC7C,CAAC,CAAA;QApCG,IAAI,CAAC,OAAO,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAqCM,GAAG,CAAC,OAAqB;QAC5B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;QACtF,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC;YAClC,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,KAAK;YACjB,mBAAmB,EAAE,KAAK;YAC1B,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,cAAc,CAAC,WAAW;YACpC,SAAS,EAAE,CACP,MAAC,cAAc,oBACP,OAAO,IACX,IAAI,EAAE,IAAI,EACV,QAAQ,QACR,YAAY,EAAE,IAAI,CAAC,KAAK,EACxB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAElC,KAAC,aAAa,cAAE,IAAI,GAAiB,EACpC,UAAU,IAAI,CACX,KAAC,cAAc,IAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAC,QAAQ,YAC9C,UAAU,GACE,CACpB,KACY,CACpB;SACJ,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,KAAC,SAAS,KAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC,EAAE,QAAQ,IAAI,gBAAgB,CAAC,CAAC;IACrC,CAAC;CACJ;AAED,eAAe,IAAI,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"Toast.js","sources":["../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { createRoot, type Root } from 'react-dom/client';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport interface ToastOptions {\n text: string;\n buttonText?: string;\n buttonClick?: () => void;\n duration?: number;\n type?: TOAST_TYPE;\n}\n\nexport enum TOAST_TYPE {\n NORMAL = 'NORMAL',\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n WARNING = 'WARNING',\n DANGER = 'DANGER',\n}\n\nconst getBackgroundColor = (type: TOAST_TYPE) => {\n switch (type) {\n case TOAST_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n case TOAST_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case TOAST_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case TOAST_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case TOAST_TYPE.NORMAL:\n return getThemeValue(THEME_NAME.TOAST);\n }\n};\n\nconst ToastContainer = styled(Card)<{ type: TOAST_TYPE }>`\n box-sizing: border-box;\n border-radius: 3px;\n padding: 12px;\n background-color: ${(props) => getBackgroundColor(props.type)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n margin: 20px;\n font-size: 14px;\n line-height: 20px;\n transform: translateY(100%);\n transition: transform 0.3s ease;\n width: 344px;\n display: flex;\n align-items: center;\n position: relative;\n\n & svg {\n width: 20px;\n height: 20px;\n fill: currentColor;\n }\n\n @media (max-width: 480px) {\n & {\n margin: 0;\n width: 100vw;\n border-radius: 0;\n }\n }\n\n .nf-layer-enter & {\n transform: translateY(0%);\n }\n`;\n\nconst TextContainer = styled.div`\n flex: 1;\n`;\n\nconst CloseContainer = styled.button`\n background-color: transparent;\n color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n padding: 6px 10px;\n border: none;\n border-radius: 3px;\n text-transform: uppercase;\n cursor: pointer;\n\n &:focus {\n background-color: rgba(255, 255, 255, 0.1);\n }\n`;\n\nconst DEFAULT_DURATION = 2000;\n\nconst createAriaLiveRegion = (id: string, ariaLive: 'polite' | 'assertive') => {\n const region = document.createElement('div');\n region.id = id;\n region.style.position = 'absolute';\n region.style.width = '1px';\n region.style.height = '1px';\n region.style.padding = '0';\n region.style.margin = '-1px';\n region.style.overflow = 'hidden';\n region.style.clip = 'rect(0, 0, 0, 0)';\n region.style.whiteSpace = 'nowrap';\n region.style.borderWidth = '0';\n region.setAttribute('role', ariaLive === 'assertive' ? 'alert' : 'log');\n region.setAttribute('aria-live', ariaLive);\n region.setAttribute('aria-atomic', 'true');\n return region;\n};\n\nclass Toast {\n private element?: HTMLDivElement;\n private ariaLiveContainer?: HTMLDivElement;\n private toast?: ReturnType<typeof LayerManager.renderLayer>;\n private timeout?: NodeJS.Timeout;\n private root?: Root;\n private politeRegion?: HTMLDivElement;\n private assertiveRegion?: HTMLDivElement;\n private isPaused: boolean = false;\n private currentOptions: ToastOptions | null = null;\n\n constructor() {\n if (typeof document === 'undefined') return;\n\n this.element = document?.createElement('div');\n this.ariaLiveContainer = document?.createElement('div');\n this.ariaLiveContainer.id = 'nf-toast-container';\n document.body.appendChild(this.ariaLiveContainer);\n\n this.politeRegion = createAriaLiveRegion('nf-toast-polite-region', 'polite');\n this.assertiveRegion = createAriaLiveRegion('nf-toast-assertive-region', 'assertive');\n this.ariaLiveContainer.appendChild(this.politeRegion);\n this.ariaLiveContainer.appendChild(this.assertiveRegion);\n\n this.setupKeyboardListeners();\n }\n\n /**\n * Clean up event listeners and DOM elements\n * Call this when the app is tearing down (useful for tests)\n */\n public destroy = () => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n this.remove();\n if (this.ariaLiveContainer && document.body.contains(this.ariaLiveContainer)) {\n document.body.removeChild(this.ariaLiveContainer);\n }\n this.politeRegion = undefined;\n this.assertiveRegion = undefined;\n this.ariaLiveContainer = undefined;\n };\n\n /**\n * Set up keyboard listener for dismissing toast with Escape key\n */\n private setupKeyboardListeners = () => {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', this.handleKeyDown);\n }\n };\n\n /**\n * Handle keyboard events for toast interaction\n */\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.toast) return;\n\n // Escape key dismisses the toast\n if (event.key === 'Escape') {\n this.remove();\n }\n // Space key pauses/resumes auto-dismiss\n else if (event.key === ' ' && this.currentOptions) {\n event.preventDefault();\n if (this.isPaused) {\n this.resumeTimeout();\n } else {\n this.pauseTimeout();\n }\n }\n };\n\n /**\n * Update the appropriate live region with toast content\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegion : this.politeRegion;\n\n if (region) {\n region.textContent = '';\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 200);\n }\n };\n\n public remove = () => {\n if (this.toast) {\n this.toast[1]();\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n }\n this.toast = undefined;\n this.currentOptions = null;\n this.isPaused = false;\n\n setTimeout(() => {\n if (!this.toast && this.root) {\n this.root.unmount();\n this.root = undefined;\n }\n }, 300);\n };\n\n /**\n * Pause toast auto-dismiss\n */\n private pauseTimeout = () => {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.isPaused = true;\n }\n };\n\n /**\n * Resume toast auto-dismiss\n */\n private resumeTimeout = () => {\n if (this.currentOptions && this.isPaused) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.currentOptions.duration || DEFAULT_DURATION);\n this.isPaused = false;\n }\n };\n\n /**\n * Pause toast when user is hovering over it.\n */\n public pause = () => {\n this.pauseTimeout();\n };\n\n /**\n * Restart the removal of toast.\n */\n public resume = (options: ToastOptions) => () => {\n this.currentOptions = options;\n this.resumeTimeout();\n };\n\n public add(options: ToastOptions) {\n if (!this.element) return;\n\n const { text, buttonText, buttonClick, duration, type = TOAST_TYPE.NORMAL } = options;\n this.currentOptions = options;\n this.isPaused = false;\n this.remove();\n\n // Determine if this is an assertive message (warning/danger)\n const isAssertive = type === TOAST_TYPE.WARNING || type === TOAST_TYPE.DANGER;\n\n // Announce to screen readers\n const announcement = buttonText ? `${text} ${buttonText} button available` : text;\n this.updateLiveRegion(announcement, isAssertive);\n\n this.toast = LayerManager.renderLayer({\n exitDelay: 300,\n closeOnEsc: false,\n closeOnOverlayClick: false,\n alwaysOnTop: true,\n position: LAYER_POSITION.BOTTOM_LEFT,\n component: (\n <>\n {/* Visual toast (hidden from screen readers) */}\n <ToastContainer\n {...options}\n type={type}\n elevated\n onMouseEnter={this.pause}\n onMouseLeave={this.resume(options)}\n aria-hidden=\"true\"\n >\n <TextContainer>{text}</TextContainer>\n {buttonText && (\n <CloseContainer\n onClick={buttonClick}\n type=\"button\"\n aria-label={`${buttonText} - Press Space to pause auto-dismiss, Escape to close`}\n >\n {buttonText}\n </CloseContainer>\n )}\n </ToastContainer>\n </>\n ),\n });\n const Component = this.toast[0];\n this.root = createRoot(this.element);\n this.root.render(<Component />);\n\n this.timeout = setTimeout(() => {\n this.remove();\n }, duration || DEFAULT_DURATION);\n }\n}\n\nexport default new Toast();\n"],"names":["TOAST_TYPE","getBackgroundColor","type","getThemeValue","THEME_NAME","INFO","SUCCESS","WARNING","ERROR","TOAST","ToastContainer","styled","Card","props","TEXT_COLOR_LIGHT","TextContainer","CloseContainer","PRIMARY_LIGHT","DEFAULT_DURATION","createAriaLiveRegion","id","ariaLive","region","document","createElement","style","position","width","height","padding","margin","overflow","clip","whiteSpace","borderWidth","setAttribute","Toast","add","options","element","text","buttonText","buttonClick","duration","currentOptions","isPaused","remove","isAssertive","announcement","updateLiveRegion","toast","LayerManager","renderLayer","exitDelay","closeOnEsc","closeOnOverlayClick","alwaysOnTop","LAYER_POSITION","BOTTOM_LEFT","component","_jsx","_Fragment","_jsxs","elevated","onMouseEnter","pause","onMouseLeave","resume","aria-hidden","onClick","aria-label","Component","root","createRoot","render","timeout","setTimeout","destroy","removeEventListener","handleKeyDown","ariaLiveContainer","body","contains","removeChild","politeRegion","undefined","assertiveRegion","setupKeyboardListeners","addEventListener","event","key","preventDefault","resumeTimeout","pauseTimeout","content","textContent","clearTimeout","unmount","appendChild"],"mappings":"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"}
@@ -1,27 +1,24 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
1
  import { TOAST_TYPE } from './Toast';
4
- type ToastOptions = PropTypes.InferProps<typeof ToastStory.propTypes>;
2
+ type ToastOptions = {
3
+ /** Text of the toast */
4
+ text: string;
5
+ /** Id for the notification, helps in de-duplication. */
6
+ id?: string;
7
+ /**
8
+ * Duration for the toast in milliseconds
9
+ * @default 2000
10
+ */
11
+ duration?: number;
12
+ /**
13
+ * Type of toast
14
+ * @default TOAST_TYPE.NORMAL
15
+ */
16
+ type?: TOAST_TYPE;
17
+ /** Action button text */
18
+ buttonText?: string;
19
+ /** Action button click callback */
20
+ buttonClick?: () => void;
21
+ };
5
22
  /** This component is only used for storybook documentation */
6
- export default class ToastStory extends React.Component<ToastOptions> {
7
- static propTypes: {
8
- /** Text of the toast */
9
- text: PropTypes.Validator<string>;
10
- /** Id for the notification, helps in de-duplication. */
11
- id: PropTypes.Requireable<string>;
12
- /** Duration for the toast in milliseconds */
13
- duration: PropTypes.Requireable<number>;
14
- /** Type of toast */
15
- type: PropTypes.Requireable<TOAST_TYPE>;
16
- /** Action button text */
17
- buttonText: PropTypes.Requireable<string>;
18
- /** Action button click callback */
19
- buttonClick: PropTypes.Requireable<(...args: any[]) => any>;
20
- };
21
- static defaultProps: {
22
- duration: number;
23
- type: TOAST_TYPE;
24
- };
25
- render(): React.ReactNode;
26
- }
23
+ export default function ToastStory(props: ToastOptions): null;
27
24
  export {};
@@ -1,22 +1,19 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
  export declare enum TOOLTIP_POSITION {
4
3
  TOP = "TOP",
5
4
  BOTTOM = "BOTTOM",
6
5
  LEFT = "LEFT",
7
6
  RIGHT = "RIGHT"
8
7
  }
9
- declare function Tooltip(props: React.PropsWithChildren<TooltipProps>): import("@emotion/react/jsx-runtime").JSX.Element;
10
- declare namespace Tooltip {
11
- var propTypes: {
12
- /** Text to show in the tooltip */
13
- tooltipText: PropTypes.Validator<NonNullable<NonNullable<PropTypes.ReactNodeLike>>>;
14
- /** Position of the tooltip */
15
- position: PropTypes.Requireable<TOOLTIP_POSITION>;
16
- };
17
- var defaultProps: {
18
- position: TOOLTIP_POSITION;
19
- };
20
- }
8
+ declare const Tooltip: React.ForwardRefExoticComponent<{
9
+ /** Text to show in the tooltip */
10
+ tooltipText: string | React.ReactNode;
11
+ /**
12
+ * Position of the tooltip
13
+ * @default TOOLTIP_POSITION.BOTTOM
14
+ */
15
+ position?: TOOLTIP_POSITION;
16
+ } & {
17
+ children?: React.ReactNode | undefined;
18
+ } & React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
21
19
  export default Tooltip;
22
- type TooltipProps = PropTypes.InferProps<typeof Tooltip.propTypes>;
@@ -1,95 +1,80 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
13
- import PropTypes from 'prop-types';
1
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
+ import React, { useId } from 'react';
14
3
  import styled from '@emotion/styled';
15
- import constants from '../../shared/constants';
16
- export var TOOLTIP_POSITION;
17
- (function (TOOLTIP_POSITION) {
4
+ import { getThemeValue, THEME_NAME } from '../../shared/constants.js';
5
+
6
+ var TOOLTIP_POSITION = /*#__PURE__*/ function(TOOLTIP_POSITION) {
18
7
  TOOLTIP_POSITION["TOP"] = "TOP";
19
8
  TOOLTIP_POSITION["BOTTOM"] = "BOTTOM";
20
9
  TOOLTIP_POSITION["LEFT"] = "LEFT";
21
10
  TOOLTIP_POSITION["RIGHT"] = "RIGHT";
22
- })(TOOLTIP_POSITION || (TOOLTIP_POSITION = {}));
23
- ;
11
+ return TOOLTIP_POSITION;
12
+ }({});
24
13
  const positionStyle = {
25
- [TOOLTIP_POSITION.LEFT]: `
14
+ ["LEFT"]: `
26
15
  left: 0;
27
16
  transform: translateX(-50%) scale(0);
28
17
  `,
29
- [TOOLTIP_POSITION.RIGHT]: `
18
+ ["RIGHT"]: `
30
19
  right: 0;
31
20
  transform: translateX(50%) scale(0);
32
21
  `,
33
- [TOOLTIP_POSITION.TOP]: `
22
+ ["TOP"]: `
34
23
  top: 0;
35
24
  transform: translateY(-10px) scale(0);
36
25
  `,
37
- [TOOLTIP_POSITION.BOTTOM]: `
26
+ ["BOTTOM"]: `
38
27
  bottom: 0;
39
28
  transform: translateY(10px) scale(0);
40
- `,
29
+ `
41
30
  };
42
31
  const positionHoverStyle = {
43
- [TOOLTIP_POSITION.LEFT]: `
32
+ ["LEFT"]: `
44
33
  transform: translateX(-100%) scale(1);
45
34
  `,
46
- [TOOLTIP_POSITION.RIGHT]: `
35
+ ["RIGHT"]: `
47
36
  transform: translateX(100%) scale(1);
48
37
  `,
49
- [TOOLTIP_POSITION.TOP]: `
38
+ ["TOP"]: `
50
39
  transform: translateY(-25px) scale(1);
51
40
  `,
52
- [TOOLTIP_POSITION.BOTTOM]: `
41
+ ["BOTTOM"]: `
53
42
  transform: translateY(25px) scale(1);
54
- `,
43
+ `
55
44
  };
56
- const TooltipDiv = styled.div `
57
- position: absolute;
58
- background-color: var(--tooltip-color, ${constants.TOOLTIP_COLOR});
59
- padding: 5px;
60
- color: #fff;
61
- border-radius: 3px;
62
- transition: transform .3s ease;
63
- font-size: 12px;
64
- z-index: 1;
65
- ${props => positionStyle[props.position]}
66
- `;
67
- const TooltipContainer = styled.div `
68
- position: relative;
69
- display: inline-flex;
70
- justify-content: center;
71
- align-items: center;
72
-
73
- &:hover ${TooltipDiv} {
74
- ${props => positionHoverStyle[props.position]}
75
- }
76
- `;
77
- export default function Tooltip(props) {
78
- const { children, position } = props, rest = __rest(props, ["children", "position"]);
79
- return (_jsxs(TooltipContainer, Object.assign({ position: position }, rest, { children: [children, _jsx(TooltipDiv, { position: position, children: rest.tooltipText })] })));
45
+ const TooltipDiv = /*#__PURE__*/ styled("div", {
46
+ target: "ebjobmh0",
47
+ label: "TooltipDiv"
48
+ })("position:absolute;background-color:", getThemeValue(THEME_NAME.TOOLTIP_COLOR), ";padding:5px;color:", getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT), ";border-radius:3px;transition:transform 0.3s ease;font-size:12px;z-index:1;", (props)=>positionStyle[props.position]);
49
+ const TooltipContainer = /*#__PURE__*/ styled("div", {
50
+ target: "ebjobmh1",
51
+ label: "TooltipContainer"
52
+ })("position:relative;display:inline-flex;justify-content:center;align-items:center;&:hover ", TooltipDiv, ",&:focus-within ", TooltipDiv, "{", (props)=>positionHoverStyle[props.position], "}");
53
+ function TooltipComponent(props, ref) {
54
+ const { children, position = "BOTTOM", ...rest } = props;
55
+ const tooltipId = useId();
56
+ // Clone the child to inject aria-describedby and tabIndex if possible
57
+ const trigger = /*#__PURE__*/ React.isValidElement(children) ? /*#__PURE__*/ React.cloneElement(children, {
58
+ 'aria-describedby': tooltipId,
59
+ tabIndex: children.props && typeof children.props.tabIndex !== 'undefined' ? children.props.tabIndex : 0
60
+ }) : children;
61
+ return /*#__PURE__*/ jsxs(TooltipContainer, {
62
+ ...rest,
63
+ ref: ref,
64
+ position: position,
65
+ children: [
66
+ trigger,
67
+ /*#__PURE__*/ jsx(TooltipDiv, {
68
+ id: tooltipId,
69
+ "aria-hidden": "true",
70
+ role: "tooltip",
71
+ position: position,
72
+ children: rest.tooltipText
73
+ })
74
+ ]
75
+ });
80
76
  }
81
- Tooltip.propTypes = {
82
- /** Text to show in the tooltip */
83
- tooltipText: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,
84
- /** Position of the tooltip */
85
- position: PropTypes.oneOf([
86
- TOOLTIP_POSITION.TOP,
87
- TOOLTIP_POSITION.LEFT,
88
- TOOLTIP_POSITION.RIGHT,
89
- TOOLTIP_POSITION.BOTTOM
90
- ]),
91
- };
92
- Tooltip.defaultProps = {
93
- position: TOOLTIP_POSITION.BOTTOM
94
- };
95
- //# sourceMappingURL=Tooltip.js.map
77
+ const Tooltip = /*#__PURE__*/ React.forwardRef(TooltipComponent);
78
+
79
+ export { TOOLTIP_POSITION, Tooltip as default };
80
+ //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,iCAAa,CAAA;IACb,mCAAe,CAAA;AACnB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AAAA,CAAC;AAEF,MAAM,aAAa,GAAG;IAClB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;;;KAGxB;IACD,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;;KAGzB;IACD,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;;;KAGvB;IACD,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;;;KAG1B;CACJ,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACvB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;;KAExB;IACD,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;KAEzB;IACD,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;;KAEvB;IACD,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;;KAE1B;CACJ,CAAC;AAEF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAgC;;6CAEhB,SAAS,CAAC,aAAa;;;;;;;MAO9D,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;CAC3C,CAAC;AAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAgC;;;;;;cAMrD,UAAU;UACd,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;;CAEpD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAA4C;IACxE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAAvC,wBAA+B,CAAQ,CAAC;IAE9C,OAAO,CACH,MAAC,gBAAgB,kBAAC,QAAQ,EAAE,QAAQ,IAAM,IAAI,eACzC,QAAQ,EACT,KAAC,UAAU,IAAC,QAAQ,EAAE,QAAQ,YAAG,IAAI,CAAC,WAAW,GAAc,KAChD,CACtB,CAAC;AACN,CAAC;AAID,OAAO,CAAC,SAAS,GAAG;IAChB,kCAAkC;IAClC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;IAC/E,8BAA8B;IAC9B,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC;QACtB,gBAAgB,CAAC,GAAG;QACpB,gBAAgB,CAAC,IAAI;QACrB,gBAAgB,CAAC,KAAK;QACtB,gBAAgB,CAAC,MAAM;KAC1B,CAAC;CACL,CAAA;AAED,OAAO,CAAC,YAAY,GAAG;IACnB,QAAQ,EAAE,gBAAgB,CAAC,MAAM;CACpC,CAAA"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport enum TOOLTIP_POSITION {\n TOP = 'TOP',\n BOTTOM = 'BOTTOM',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nconst positionStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n left: 0;\n transform: translateX(-50%) scale(0);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n right: 0;\n transform: translateX(50%) scale(0);\n `,\n [TOOLTIP_POSITION.TOP]: `\n top: 0;\n transform: translateY(-10px) scale(0);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n bottom: 0;\n transform: translateY(10px) scale(0);\n `,\n};\n\nconst positionHoverStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n transform: translateX(-100%) scale(1);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n transform: translateX(100%) scale(1);\n `,\n [TOOLTIP_POSITION.TOP]: `\n transform: translateY(-25px) scale(1);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n transform: translateY(25px) scale(1);\n `,\n};\n\nconst TooltipDiv = styled.div<{ position: TOOLTIP_POSITION }>`\n position: absolute;\n background-color: ${getThemeValue(THEME_NAME.TOOLTIP_COLOR)};\n padding: 5px;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 3px;\n transition: transform 0.3s ease;\n font-size: 12px;\n z-index: 1;\n ${(props) => positionStyle[props.position]}\n`;\n\nconst TooltipContainer = styled.div<{ position: TOOLTIP_POSITION }>`\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n &:hover ${TooltipDiv}, &:focus-within ${TooltipDiv} {\n ${(props) => positionHoverStyle[props.position]}\n }\n`;\n\ntype TooltipProps = React.PropsWithChildren<{\n /** Text to show in the tooltip */\n tooltipText: string | React.ReactNode;\n /**\n * Position of the tooltip\n * @default TOOLTIP_POSITION.BOTTOM\n */\n position?: TOOLTIP_POSITION;\n}> &\n React.HTMLAttributes<HTMLDivElement>;\n\nfunction TooltipComponent(props: TooltipProps, ref: React.Ref<HTMLDivElement>) {\n const { children, position = TOOLTIP_POSITION.BOTTOM, ...rest } = props;\n const tooltipId = useId();\n\n // Clone the child to inject aria-describedby and tabIndex if possible\n const trigger = React.isValidElement(children)\n ? React.cloneElement(children as React.ReactElement, {\n 'aria-describedby': tooltipId,\n tabIndex:\n children.props && typeof children.props.tabIndex !== 'undefined'\n ? children.props.tabIndex\n : 0,\n })\n : children;\n\n return (\n <TooltipContainer {...rest} ref={ref} position={position}>\n {trigger}\n <TooltipDiv id={tooltipId} aria-hidden=\"true\" role=\"tooltip\" position={position}>\n {rest.tooltipText as React.ReactNode}\n </TooltipDiv>\n </TooltipContainer>\n );\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(TooltipComponent);\nexport default Tooltip;\n"],"names":["TOOLTIP_POSITION","positionStyle","positionHoverStyle","TooltipDiv","styled","getThemeValue","THEME_NAME","TOOLTIP_COLOR","TEXT_COLOR_LIGHT","props","position","TooltipContainer","TooltipComponent","ref","children","rest","tooltipId","useId","trigger","React","isValidElement","cloneElement","tabIndex","_jsxs","_jsx","id","aria-hidden","role","tooltipText","Tooltip","forwardRef"],"mappings":";;;;;AAIO,IAAA,gBAAKA,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,gBAAAA;AAKX,CAAA,CAAA,EAAA;AAED,MAAMC,aAAAA,GAAgB;AAClB,IAAA,CAAA,MAAA,GAAyB;;;IAGzB,CAAC;AACD,IAAA,CAAA,OAAA,GAA0B;;;IAG1B,CAAC;AACD,IAAA,CAAA,KAAA,GAAwB;;;IAGxB,CAAC;AACD,IAAA,CAAA,QAAA,GAA2B;;;IAG3B;AACJ,CAAA;AAEA,MAAMC,kBAAAA,GAAqB;AACvB,IAAA,CAAA,MAAA,GAAyB;;IAEzB,CAAC;AACD,IAAA,CAAA,OAAA,GAA0B;;IAE1B,CAAC;AACD,IAAA,CAAA,KAAA,GAAwB;;IAExB,CAAC;AACD,IAAA,CAAA,QAAA,GAA2B;;IAE3B;AACJ,CAAA;AAEA,MAAMC,UAAAA,iBAAaC,MAAAA,CAAAA,KAAAA,EAAAA;;;AAEKC,CAAAA,CAAAA,CAAAA,qCAAAA,EAAAA,aAAAA,CAAcC,UAAAA,CAAWC,aAAa,CAAA,EAAA,qBAAA,EAEjDF,aAAAA,CAAcC,UAAAA,CAAWE,gBAAgB,CAAA,EAAA,6EAAA,EAKhD,CAACC,KAAAA,GAAUR,aAAa,CAACQ,KAAAA,CAAMC,QAAQ,CAAC,CAAA;AAG9C,MAAMC,gBAAAA,iBAAmBP,MAAAA,CAAAA,KAAAA,EAAAA;;;AAMXD,CAAAA,CAAAA,CAAAA,0FAAAA,EAAAA,UAAAA,EAAAA,kBAAAA,EAA8BA,iBAClC,CAACM,KAAAA,GAAUP,kBAAkB,CAACO,KAAAA,CAAMC,QAAQ,CAAC,EAAA,GAAA,CAAA;AAevD,SAASE,gBAAAA,CAAiBH,KAAmB,EAAEI,GAA8B,EAAA;AACzE,IAAA,MAAM,EAAEC,QAAQ,EAAEJ,mBAAkC,EAAE,GAAGK,MAAM,GAAGN,KAAAA;AAClE,IAAA,MAAMO,SAAAA,GAAYC,KAAAA,EAAAA;;IAGlB,MAAMC,OAAAA,iBAAUC,MAAMC,cAAc,CAACN,0BAC/BK,KAAAA,CAAME,YAAY,CAACP,QAAAA,EAAgC;QAC/C,kBAAA,EAAoBE,SAAAA;AACpBM,QAAAA,QAAAA,EACIR,QAAAA,CAASL,KAAK,IAAI,OAAOK,SAASL,KAAK,CAACa,QAAQ,KAAK,WAAA,GAC/CR,QAAAA,CAASL,KAAK,CAACa,QAAQ,GACvB;KACd,CAAA,GACAR,QAAAA;AAEN,IAAA,qBACIS,IAAA,CAACZ,gBAAAA,EAAAA;AAAkB,QAAA,GAAGI,IAAI;QAAEF,GAAAA,EAAKA,GAAAA;QAAKH,QAAAA,EAAUA,QAAAA;;AAC3CQ,YAAAA,OAAAA;0BACDM,GAAA,CAACrB,UAAAA,EAAAA;gBAAWsB,EAAAA,EAAIT,SAAAA;gBAAWU,aAAAA,EAAY,MAAA;gBAAOC,IAAAA,EAAK,SAAA;gBAAUjB,QAAAA,EAAUA,QAAAA;AAClEK,gBAAAA,QAAAA,EAAAA,IAAAA,CAAKa;;;;AAItB;AAEA,MAAMC,OAAAA,iBAAUV,KAAAA,CAAMW,UAAU,CAA+BlB,gBAAAA;;;;"}