no-frills-ui 0.0.14-alpha.2 → 0.0.14-alpha.3

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 (246) hide show
  1. package/dist/index.js +99 -49
  2. package/dist/index.js.map +1 -1
  3. package/lib-esm/components/Accordion/Accordion.d.ts +1 -0
  4. package/lib-esm/components/Accordion/Accordion.d.ts.map +1 -0
  5. package/lib-esm/components/Accordion/Accordion.js.map +1 -1
  6. package/lib-esm/components/Accordion/AccordionStep.d.ts +1 -0
  7. package/lib-esm/components/Accordion/AccordionStep.d.ts.map +1 -0
  8. package/lib-esm/components/Accordion/AccordionStep.js.map +1 -1
  9. package/lib-esm/components/Accordion/index.d.ts +1 -0
  10. package/lib-esm/components/Accordion/index.d.ts.map +1 -0
  11. package/lib-esm/components/Accordion/index.js.map +1 -1
  12. package/lib-esm/components/Badge/Badge.d.ts +1 -0
  13. package/lib-esm/components/Badge/Badge.d.ts.map +1 -0
  14. package/lib-esm/components/Badge/Badge.js.map +1 -1
  15. package/lib-esm/components/Badge/index.d.ts +1 -0
  16. package/lib-esm/components/Badge/index.d.ts.map +1 -0
  17. package/lib-esm/components/Badge/index.js.map +1 -1
  18. package/lib-esm/components/Button/ActionButton.d.ts +1 -0
  19. package/lib-esm/components/Button/ActionButton.d.ts.map +1 -0
  20. package/lib-esm/components/Button/ActionButton.js.map +1 -1
  21. package/lib-esm/components/Button/Button.d.ts +1 -0
  22. package/lib-esm/components/Button/Button.d.ts.map +1 -0
  23. package/lib-esm/components/Button/Button.js.map +1 -1
  24. package/lib-esm/components/Button/IconButton.d.ts +1 -0
  25. package/lib-esm/components/Button/IconButton.d.ts.map +1 -0
  26. package/lib-esm/components/Button/IconButton.js.map +1 -1
  27. package/lib-esm/components/Button/LinkButton.d.ts +1 -0
  28. package/lib-esm/components/Button/LinkButton.d.ts.map +1 -0
  29. package/lib-esm/components/Button/LinkButton.js.map +1 -1
  30. package/lib-esm/components/Button/RaisedButton.d.ts +1 -0
  31. package/lib-esm/components/Button/RaisedButton.d.ts.map +1 -0
  32. package/lib-esm/components/Button/RaisedButton.js.map +1 -1
  33. package/lib-esm/components/Button/index.d.ts +1 -0
  34. package/lib-esm/components/Button/index.d.ts.map +1 -0
  35. package/lib-esm/components/Button/index.js.map +1 -1
  36. package/lib-esm/components/Card/Card.d.ts +1 -0
  37. package/lib-esm/components/Card/Card.d.ts.map +1 -0
  38. package/lib-esm/components/Card/Card.js.map +1 -1
  39. package/lib-esm/components/Card/index.d.ts +1 -0
  40. package/lib-esm/components/Card/index.d.ts.map +1 -0
  41. package/lib-esm/components/Card/index.js.map +1 -1
  42. package/lib-esm/components/Chip/Chip.d.ts +1 -0
  43. package/lib-esm/components/Chip/Chip.d.ts.map +1 -0
  44. package/lib-esm/components/Chip/Chip.js.map +1 -1
  45. package/lib-esm/components/Chip/index.d.ts +1 -0
  46. package/lib-esm/components/Chip/index.d.ts.map +1 -0
  47. package/lib-esm/components/Chip/index.js.map +1 -1
  48. package/lib-esm/components/ChipInput/ChipInput.d.ts +1 -0
  49. package/lib-esm/components/ChipInput/ChipInput.d.ts.map +1 -0
  50. package/lib-esm/components/ChipInput/ChipInput.js.map +1 -1
  51. package/lib-esm/components/ChipInput/index.d.ts +1 -0
  52. package/lib-esm/components/ChipInput/index.d.ts.map +1 -0
  53. package/lib-esm/components/ChipInput/index.js.map +1 -1
  54. package/lib-esm/components/Dialog/AlertDialog.d.ts +1 -0
  55. package/lib-esm/components/Dialog/AlertDialog.d.ts.map +1 -0
  56. package/lib-esm/components/Dialog/AlertDialog.js +1 -1
  57. package/lib-esm/components/Dialog/AlertDialog.js.map +1 -1
  58. package/lib-esm/components/Dialog/ConfirmDialog.d.ts +1 -0
  59. package/lib-esm/components/Dialog/ConfirmDialog.d.ts.map +1 -0
  60. package/lib-esm/components/Dialog/ConfirmDialog.js.map +1 -1
  61. package/lib-esm/components/Dialog/Dialog.d.ts +3 -3
  62. package/lib-esm/components/Dialog/Dialog.d.ts.map +1 -0
  63. package/lib-esm/components/Dialog/Dialog.js +17 -13
  64. package/lib-esm/components/Dialog/Dialog.js.map +1 -1
  65. package/lib-esm/components/Dialog/PromptDialog.d.ts +1 -0
  66. package/lib-esm/components/Dialog/PromptDialog.d.ts.map +1 -0
  67. package/lib-esm/components/Dialog/PromptDialog.js.map +1 -1
  68. package/lib-esm/components/Dialog/index.d.ts +1 -0
  69. package/lib-esm/components/Dialog/index.d.ts.map +1 -0
  70. package/lib-esm/components/Dialog/index.js.map +1 -1
  71. package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +1 -0
  72. package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts.map +1 -0
  73. package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +1 -1
  74. package/lib-esm/components/DragAndDrop/DragItem.d.ts +1 -0
  75. package/lib-esm/components/DragAndDrop/DragItem.d.ts.map +1 -0
  76. package/lib-esm/components/DragAndDrop/DragItem.js.map +1 -1
  77. package/lib-esm/components/DragAndDrop/index.d.ts +1 -0
  78. package/lib-esm/components/DragAndDrop/index.d.ts.map +1 -0
  79. package/lib-esm/components/DragAndDrop/index.js.map +1 -1
  80. package/lib-esm/components/DragAndDrop/types.d.ts +1 -0
  81. package/lib-esm/components/DragAndDrop/types.d.ts.map +1 -0
  82. package/lib-esm/components/DragAndDrop/types.js.map +1 -1
  83. package/lib-esm/components/Drawer/Drawer.d.ts +1 -0
  84. package/lib-esm/components/Drawer/Drawer.d.ts.map +1 -0
  85. package/lib-esm/components/Drawer/Drawer.js.map +1 -1
  86. package/lib-esm/components/Drawer/index.d.ts +1 -0
  87. package/lib-esm/components/Drawer/index.d.ts.map +1 -0
  88. package/lib-esm/components/Drawer/index.js.map +1 -1
  89. package/lib-esm/components/Groups/Group.d.ts +1 -0
  90. package/lib-esm/components/Groups/Group.d.ts.map +1 -0
  91. package/lib-esm/components/Groups/Group.js.map +1 -1
  92. package/lib-esm/components/Groups/GroupLabel.d.ts +1 -0
  93. package/lib-esm/components/Groups/GroupLabel.d.ts.map +1 -0
  94. package/lib-esm/components/Groups/GroupLabel.js.map +1 -1
  95. package/lib-esm/components/Groups/index.d.ts +1 -0
  96. package/lib-esm/components/Groups/index.d.ts.map +1 -0
  97. package/lib-esm/components/Groups/index.js.map +1 -1
  98. package/lib-esm/components/Input/Checkbox.d.ts +1 -0
  99. package/lib-esm/components/Input/Checkbox.d.ts.map +1 -0
  100. package/lib-esm/components/Input/Checkbox.js.map +1 -1
  101. package/lib-esm/components/Input/Dropdown.d.ts +1 -0
  102. package/lib-esm/components/Input/Dropdown.d.ts.map +1 -0
  103. package/lib-esm/components/Input/Dropdown.js.map +1 -1
  104. package/lib-esm/components/Input/Input.d.ts +1 -0
  105. package/lib-esm/components/Input/Input.d.ts.map +1 -0
  106. package/lib-esm/components/Input/Input.js.map +1 -1
  107. package/lib-esm/components/Input/Radio.d.ts +1 -0
  108. package/lib-esm/components/Input/Radio.d.ts.map +1 -0
  109. package/lib-esm/components/Input/Radio.js.map +1 -1
  110. package/lib-esm/components/Input/RadioButton.d.ts +1 -0
  111. package/lib-esm/components/Input/RadioButton.d.ts.map +1 -0
  112. package/lib-esm/components/Input/RadioButton.js.map +1 -1
  113. package/lib-esm/components/Input/Select.d.ts +1 -0
  114. package/lib-esm/components/Input/Select.d.ts.map +1 -0
  115. package/lib-esm/components/Input/Select.js.map +1 -1
  116. package/lib-esm/components/Input/TextArea.d.ts +1 -0
  117. package/lib-esm/components/Input/TextArea.d.ts.map +1 -0
  118. package/lib-esm/components/Input/TextArea.js.map +1 -1
  119. package/lib-esm/components/Input/Toggle.d.ts +1 -0
  120. package/lib-esm/components/Input/Toggle.d.ts.map +1 -0
  121. package/lib-esm/components/Input/Toggle.js.map +1 -1
  122. package/lib-esm/components/Input/index.d.ts +1 -0
  123. package/lib-esm/components/Input/index.d.ts.map +1 -0
  124. package/lib-esm/components/Input/index.js.map +1 -1
  125. package/lib-esm/components/Menu/Menu.d.ts +1 -0
  126. package/lib-esm/components/Menu/Menu.d.ts.map +1 -0
  127. package/lib-esm/components/Menu/Menu.js.map +1 -1
  128. package/lib-esm/components/Menu/MenuContext.d.ts +1 -0
  129. package/lib-esm/components/Menu/MenuContext.d.ts.map +1 -0
  130. package/lib-esm/components/Menu/MenuContext.js.map +1 -1
  131. package/lib-esm/components/Menu/MenuItem.d.ts +1 -0
  132. package/lib-esm/components/Menu/MenuItem.d.ts.map +1 -0
  133. package/lib-esm/components/Menu/MenuItem.js.map +1 -1
  134. package/lib-esm/components/Menu/index.d.ts +1 -0
  135. package/lib-esm/components/Menu/index.d.ts.map +1 -0
  136. package/lib-esm/components/Menu/index.js.map +1 -1
  137. package/lib-esm/components/Modal/Modal.d.ts +1 -0
  138. package/lib-esm/components/Modal/Modal.d.ts.map +1 -0
  139. package/lib-esm/components/Modal/Modal.js.map +1 -1
  140. package/lib-esm/components/Modal/index.d.ts +1 -0
  141. package/lib-esm/components/Modal/index.d.ts.map +1 -0
  142. package/lib-esm/components/Modal/index.js.map +1 -1
  143. package/lib-esm/components/Notification/Notification.d.ts +1 -0
  144. package/lib-esm/components/Notification/Notification.d.ts.map +1 -0
  145. package/lib-esm/components/Notification/Notification.js.map +1 -1
  146. package/lib-esm/components/Notification/NotificationManager.d.ts +1 -0
  147. package/lib-esm/components/Notification/NotificationManager.d.ts.map +1 -0
  148. package/lib-esm/components/Notification/NotificationManager.js.map +1 -1
  149. package/lib-esm/components/Notification/index.d.ts +1 -0
  150. package/lib-esm/components/Notification/index.d.ts.map +1 -0
  151. package/lib-esm/components/Notification/index.js.map +1 -1
  152. package/lib-esm/components/Notification/style.d.ts +1 -0
  153. package/lib-esm/components/Notification/style.d.ts.map +1 -0
  154. package/lib-esm/components/Notification/style.js.map +1 -1
  155. package/lib-esm/components/Notification/types.d.ts +1 -0
  156. package/lib-esm/components/Notification/types.d.ts.map +1 -0
  157. package/lib-esm/components/Notification/types.js.map +1 -1
  158. package/lib-esm/components/Popover/Popover.d.ts +1 -0
  159. package/lib-esm/components/Popover/Popover.d.ts.map +1 -0
  160. package/lib-esm/components/Popover/Popover.js.map +1 -1
  161. package/lib-esm/components/Popover/index.d.ts +1 -0
  162. package/lib-esm/components/Popover/index.d.ts.map +1 -0
  163. package/lib-esm/components/Popover/index.js.map +1 -1
  164. package/lib-esm/components/Spinner/Spinner.d.ts +1 -0
  165. package/lib-esm/components/Spinner/Spinner.d.ts.map +1 -0
  166. package/lib-esm/components/Spinner/Spinner.js.map +1 -1
  167. package/lib-esm/components/Spinner/index.d.ts +1 -0
  168. package/lib-esm/components/Spinner/index.d.ts.map +1 -0
  169. package/lib-esm/components/Spinner/index.js.map +1 -1
  170. package/lib-esm/components/Stepper/Step.d.ts +1 -0
  171. package/lib-esm/components/Stepper/Step.d.ts.map +1 -0
  172. package/lib-esm/components/Stepper/Step.js.map +1 -1
  173. package/lib-esm/components/Stepper/Stepper.d.ts +1 -0
  174. package/lib-esm/components/Stepper/Stepper.d.ts.map +1 -0
  175. package/lib-esm/components/Stepper/Stepper.js.map +1 -1
  176. package/lib-esm/components/Stepper/index.d.ts +1 -0
  177. package/lib-esm/components/Stepper/index.d.ts.map +1 -0
  178. package/lib-esm/components/Stepper/index.js.map +1 -1
  179. package/lib-esm/components/Tabs/Tab.d.ts +1 -0
  180. package/lib-esm/components/Tabs/Tab.d.ts.map +1 -0
  181. package/lib-esm/components/Tabs/Tab.js.map +1 -1
  182. package/lib-esm/components/Tabs/Tabs.d.ts +1 -0
  183. package/lib-esm/components/Tabs/Tabs.d.ts.map +1 -0
  184. package/lib-esm/components/Tabs/Tabs.js.map +1 -1
  185. package/lib-esm/components/Tabs/index.d.ts +1 -0
  186. package/lib-esm/components/Tabs/index.d.ts.map +1 -0
  187. package/lib-esm/components/Tabs/index.js.map +1 -1
  188. package/lib-esm/components/Toast/Toast.d.ts +1 -0
  189. package/lib-esm/components/Toast/Toast.d.ts.map +1 -0
  190. package/lib-esm/components/Toast/Toast.js.map +1 -1
  191. package/lib-esm/components/Toast/ToastStory.d.ts +1 -0
  192. package/lib-esm/components/Toast/ToastStory.d.ts.map +1 -0
  193. package/lib-esm/components/Toast/ToastStory.js.map +1 -1
  194. package/lib-esm/components/Toast/index.d.ts +1 -0
  195. package/lib-esm/components/Toast/index.d.ts.map +1 -0
  196. package/lib-esm/components/Toast/index.js.map +1 -1
  197. package/lib-esm/components/Tooltip/Tooltip.d.ts +1 -0
  198. package/lib-esm/components/Tooltip/Tooltip.d.ts.map +1 -0
  199. package/lib-esm/components/Tooltip/Tooltip.js.map +1 -1
  200. package/lib-esm/components/Tooltip/index.d.ts +1 -0
  201. package/lib-esm/components/Tooltip/index.d.ts.map +1 -0
  202. package/lib-esm/components/Tooltip/index.js.map +1 -1
  203. package/lib-esm/components/index.d.ts +1 -0
  204. package/lib-esm/components/index.d.ts.map +1 -0
  205. package/lib-esm/components/index.js.map +1 -1
  206. package/lib-esm/icons/CheckCircle.d.ts +1 -0
  207. package/lib-esm/icons/CheckCircle.d.ts.map +1 -0
  208. package/lib-esm/icons/CheckCircle.js.map +1 -1
  209. package/lib-esm/icons/Close.d.ts +1 -0
  210. package/lib-esm/icons/Close.d.ts.map +1 -0
  211. package/lib-esm/icons/Close.js.map +1 -1
  212. package/lib-esm/icons/DragIndicator.d.ts +1 -0
  213. package/lib-esm/icons/DragIndicator.d.ts.map +1 -0
  214. package/lib-esm/icons/DragIndicator.js.map +1 -1
  215. package/lib-esm/icons/ErrorOutline.d.ts +1 -0
  216. package/lib-esm/icons/ErrorOutline.d.ts.map +1 -0
  217. package/lib-esm/icons/ErrorOutline.js.map +1 -1
  218. package/lib-esm/icons/ExpandMore.d.ts +1 -0
  219. package/lib-esm/icons/ExpandMore.d.ts.map +1 -0
  220. package/lib-esm/icons/ExpandMore.js.map +1 -1
  221. package/lib-esm/icons/FiberManualRecord.d.ts +1 -0
  222. package/lib-esm/icons/FiberManualRecord.d.ts.map +1 -0
  223. package/lib-esm/icons/FiberManualRecord.js.map +1 -1
  224. package/lib-esm/icons/Info.d.ts +1 -0
  225. package/lib-esm/icons/Info.d.ts.map +1 -0
  226. package/lib-esm/icons/Info.js.map +1 -1
  227. package/lib-esm/icons/ReportProblem.d.ts +1 -0
  228. package/lib-esm/icons/ReportProblem.d.ts.map +1 -0
  229. package/lib-esm/icons/ReportProblem.js.map +1 -1
  230. package/lib-esm/icons/index.d.ts +1 -0
  231. package/lib-esm/icons/index.d.ts.map +1 -0
  232. package/lib-esm/icons/index.js.map +1 -1
  233. package/lib-esm/index.d.ts +1 -0
  234. package/lib-esm/index.d.ts.map +1 -0
  235. package/lib-esm/index.js.map +1 -1
  236. package/lib-esm/shared/LayerManager.d.ts +28 -1
  237. package/lib-esm/shared/LayerManager.d.ts.map +1 -0
  238. package/lib-esm/shared/LayerManager.js +82 -36
  239. package/lib-esm/shared/LayerManager.js.map +1 -1
  240. package/lib-esm/shared/constants.d.ts +1 -0
  241. package/lib-esm/shared/constants.d.ts.map +1 -0
  242. package/lib-esm/shared/constants.js.map +1 -1
  243. package/lib-esm/shared/styles.d.ts +1 -0
  244. package/lib-esm/shared/styles.d.ts.map +1 -0
  245. package/lib-esm/shared/styles.js.map +1 -1
  246. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1115,6 +1115,32 @@ const KEY_CODES$1 = {
1115
1115
  * This way we need not worry about the z-index and can freely keep on creating
1116
1116
  * new layers. The staring layer z-index is 10000. Leaving enough z-index for the
1117
1117
  * user if they desires so.
1118
+ *
1119
+ * @important Usage Pattern
1120
+ * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),
1121
+ * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)
1122
+ * or in an imperative method (like `open()`).
1123
+ *
1124
+ * @example
1125
+ * // ❌ Don't call renderLayer in render() method
1126
+ * render() {
1127
+ * if (this.state.show) {
1128
+ * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render
1129
+ * return <Component />;
1130
+ * }
1131
+ * }
1132
+ *
1133
+ * @example
1134
+ * // ✅ Do call renderLayer once in a method and store the component
1135
+ * open() {
1136
+ * const [Component, closeFn] = LayerManager.renderLayer({ ... });
1137
+ * this.setState({ LayerComponent: Component });
1138
+ * }
1139
+ *
1140
+ * render() {
1141
+ * const { LayerComponent } = this.state;
1142
+ * return LayerComponent ? <LayerComponent /> : null;
1143
+ * }
1118
1144
  */
1119
1145
  class LayerManager {
1120
1146
  /**
@@ -1154,59 +1180,79 @@ class LayerManager {
1154
1180
  * @param config
1155
1181
  */
1156
1182
  this.renderLayer = (config) => {
1183
+ // SSR guard
1184
+ if (typeof document === 'undefined') {
1185
+ return [() => null, () => { }];
1186
+ }
1157
1187
  // Merge default config with the provided config.
1158
1188
  const layerConfig = Object.assign(Object.assign({}, defaultConfig), config);
1159
1189
  // Get the z-index for the new layer
1160
1190
  const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : this.nextIndex++;
1161
- // Prepare the div on DOM where the new layer will be mounted.
1162
- const divElement = document.createElement('div');
1163
- divElement.setAttribute('id', `nf-layer-manager-${currentIndex}`);
1164
- document.body.appendChild(divElement);
1165
- // Add layer to stack.
1166
- const currentLayer = {
1167
- id: `nf-layer-manager-${currentIndex}`,
1168
- config: layerConfig,
1169
- element: divElement,
1170
- };
1171
- this.layers.push(currentLayer);
1172
- const overlayClickHandler = (layer) => () => {
1173
- if (layer.config.closeOnOverlayClick !== false) {
1191
+ // Create a unique ID for tracking this layer
1192
+ const layerId = `nf-layer-manager-${currentIndex}`;
1193
+ const overlayClickHandler = () => {
1194
+ const layer = this.layers.find((l) => l.id === layerId);
1195
+ if (layer && layer.config.closeOnOverlayClick !== false) {
1174
1196
  this.unmount(layer);
1175
1197
  }
1176
1198
  };
1199
+ const closeFn = (resp) => {
1200
+ const layer = this.layers.find((l) => l.id === layerId);
1201
+ if (layer) {
1202
+ this.unmount(layer, resp);
1203
+ }
1204
+ };
1177
1205
  // Return callback which will trigger the un-mount.
1178
1206
  return [
1179
- // Render the layer and then add `nf-layer-enter` class to
1180
- // the div created above.
1181
- // This class will help component in triggering the entry animation.
1182
- function TestLayer() {
1207
+ () => {
1208
+ const [divElement, setDivElement] = React.useState(null);
1183
1209
  React.useEffect(() => {
1184
- // The delay is introduced to enable entry animation on Firefox.
1185
- // Somehow on Firefox, useEffect is triggered before the component
1186
- // is rendered it seems.
1210
+ // Create the div element only once when component mounts
1211
+ const div = document.createElement('div');
1212
+ div.setAttribute('id', layerId);
1213
+ document.body.appendChild(div);
1214
+ // Add layer to stack
1215
+ const currentLayer = {
1216
+ id: layerId,
1217
+ config: layerConfig,
1218
+ element: div,
1219
+ };
1220
+ this.layers.push(currentLayer);
1221
+ setDivElement(div);
1222
+ // Add entry animation class after a short delay
1187
1223
  setTimeout(() => {
1188
- divElement.setAttribute('class', 'nf-layer-enter');
1224
+ div.setAttribute('class', 'nf-layer-enter');
1189
1225
  }, 10);
1190
- // Cleanup function
1226
+ // Cleanup function - remove div when component unmounts
1191
1227
  return () => {
1192
- document.body.removeChild(divElement);
1228
+ if (document.body.contains(div)) {
1229
+ document.body.removeChild(div);
1230
+ }
1231
+ // Remove from layers array
1232
+ const index = this.layers.findIndex((layer) => layer.id === layerId);
1233
+ if (index !== -1) {
1234
+ this.layers.splice(index, 1);
1235
+ }
1193
1236
  };
1194
- }, []);
1195
- return ReactDOM.createPortal(jsxRuntime.jsx(Container$5, Object.assign({ onClick: overlayClickHandler(currentLayer), zIndex: currentIndex }, layerConfig, { children: layerConfig.component })), divElement);
1196
- },
1197
- (resp) => {
1198
- this.unmount(currentLayer, resp);
1237
+ }, []); // Empty dependency array - run only once
1238
+ if (!divElement) {
1239
+ return null;
1240
+ }
1241
+ return ReactDOM.createPortal(jsxRuntime.jsx(Container$5, Object.assign({ onClick: overlayClickHandler, zIndex: currentIndex }, layerConfig, { children: layerConfig.component })), divElement);
1199
1242
  },
1243
+ closeFn,
1200
1244
  ];
1201
1245
  };
1202
- document === null || document === void 0 ? void 0 : document.body.addEventListener('keyup', (e) => {
1203
- if (this.layers.length && e.keyCode === KEY_CODES$1.ESC) {
1204
- const lastLayer = this.layers.slice(-1)[0];
1205
- if (lastLayer.config.closeOnEsc !== false) {
1206
- this.unmount(lastLayer);
1246
+ if (typeof document !== 'undefined') {
1247
+ document.body.addEventListener('keyup', (e) => {
1248
+ if (this.layers.length && e.keyCode === KEY_CODES$1.ESC) {
1249
+ const lastLayer = this.layers.slice(-1)[0];
1250
+ if (lastLayer.config.closeOnEsc !== false) {
1251
+ this.unmount(lastLayer);
1252
+ }
1207
1253
  }
1208
- }
1209
- });
1254
+ });
1255
+ }
1210
1256
  }
1211
1257
  }
1212
1258
  // Return the instance of the class to create a Singleton.
@@ -1234,10 +1280,23 @@ class Dialog extends React.Component {
1234
1280
  super(...arguments);
1235
1281
  this.state = {
1236
1282
  show: false,
1283
+ LayerComponent: undefined,
1237
1284
  };
1238
1285
  this.open = (closeCallback) => {
1286
+ const _a = this.props, { closeOnEsc, closeOnOverlayClick, children } = _a, rest = __rest(_a, ["closeOnEsc", "closeOnOverlayClick", "children"]);
1287
+ const [Component, closeFn] = LayerManager$1.renderLayer({
1288
+ exitDelay: 300,
1289
+ overlay: true,
1290
+ closeOnEsc,
1291
+ closeCallback: this.closeCallback,
1292
+ closeOnOverlayClick,
1293
+ position: LAYER_POSITION.DIALOG,
1294
+ component: (jsxRuntime.jsx(DialogContainer, Object.assign({}, rest, { onClick: (e) => e.stopPropagation(), elevated: true, children: children }))),
1295
+ });
1296
+ this.closeDialog = closeFn;
1239
1297
  this.setState({
1240
1298
  show: true,
1299
+ LayerComponent: Component,
1241
1300
  });
1242
1301
  this.onCloseFn = closeCallback;
1243
1302
  };
@@ -1249,6 +1308,7 @@ class Dialog extends React.Component {
1249
1308
  var _a;
1250
1309
  this.setState({
1251
1310
  show: false,
1311
+ LayerComponent: undefined,
1252
1312
  });
1253
1313
  (_a = this.onCloseFn) === null || _a === void 0 ? void 0 : _a.call(this, resp);
1254
1314
  };
@@ -1257,19 +1317,9 @@ class Dialog extends React.Component {
1257
1317
  return this.state.show !== nextState.show;
1258
1318
  }
1259
1319
  render() {
1260
- const _a = this.props, { closeOnEsc, closeOnOverlayClick, children } = _a, rest = __rest(_a, ["closeOnEsc", "closeOnOverlayClick", "children"]);
1261
- if (this.state.show) {
1262
- const [Component, closeFn] = LayerManager$1.renderLayer({
1263
- exitDelay: 300,
1264
- overlay: true,
1265
- closeOnEsc,
1266
- closeCallback: this.closeCallback,
1267
- closeOnOverlayClick,
1268
- position: LAYER_POSITION.DIALOG,
1269
- component: (jsxRuntime.jsx(DialogContainer, Object.assign({}, rest, { onClick: (e) => e.stopPropagation(), elevated: true, children: children }))),
1270
- });
1271
- this.closeDialog = closeFn;
1272
- return jsxRuntime.jsx(Component, {});
1320
+ const { LayerComponent } = this.state;
1321
+ if (this.state.show && LayerComponent) {
1322
+ return jsxRuntime.jsx(LayerComponent, {});
1273
1323
  }
1274
1324
  else {
1275
1325
  return null;
@@ -1300,7 +1350,7 @@ class AlertDialog extends React.Component {
1300
1350
  this.close = () => this.dialog.current.close();
1301
1351
  }
1302
1352
  render() {
1303
- return (jsxRuntime.jsxs(Dialog, Object.assign({}, this.props.dialogProps, { ref: this.dialog, closeOnEsc: false, closeOnOverlayClick: false, children: [this.props.header && jsxRuntime.jsx(Header$1, { children: this.props.header }), jsxRuntime.jsx(Body$1, { children: this.props.body }), jsxRuntime.jsx(Footer$1, { children: jsxRuntime.jsx(Button$2, { onClick: this.close, children: this.props.buttonText }) })] })));
1353
+ return (jsxRuntime.jsxs(Dialog, Object.assign({}, this.props.dialogProps, { ref: this.dialog, closeOnEsc: false, closeOnOverlayClick: true, children: [this.props.header && jsxRuntime.jsx(Header$1, { children: this.props.header }), jsxRuntime.jsx(Body$1, { children: this.props.body }), jsxRuntime.jsx(Footer$1, { children: jsxRuntime.jsx(Button$2, { onClick: this.close, children: this.props.buttonText }) })] })));
1304
1354
  }
1305
1355
  }
1306
1356
  AlertDialog.propTypes = {