baseui 10.12.0 → 11.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/README.md +3 -3
  2. package/accordion/accordion.js +60 -13
  3. package/accordion/accordion.js.flow +49 -12
  4. package/accordion/index.d.ts +0 -3
  5. package/accordion/panel.js +7 -6
  6. package/accordion/panel.js.flow +20 -20
  7. package/accordion/stateless-accordion.js +2 -4
  8. package/accordion/stateless-accordion.js.flow +0 -2
  9. package/accordion/types.js.flow +0 -5
  10. package/button/constants.js +1 -2
  11. package/button/constants.js.flow +0 -1
  12. package/button/index.d.ts +0 -1
  13. package/button/styled-components.js +2 -29
  14. package/button/styled-components.js.flow +2 -30
  15. package/checkbox/checkbox.js +6 -30
  16. package/checkbox/checkbox.js.flow +7 -38
  17. package/checkbox/constants.js +2 -1
  18. package/checkbox/constants.js.flow +2 -1
  19. package/checkbox/index.d.ts +4 -6
  20. package/checkbox/index.js +0 -6
  21. package/checkbox/index.js.flow +0 -1
  22. package/checkbox/styled-components.js +52 -149
  23. package/checkbox/styled-components.js.flow +59 -165
  24. package/checkbox/types.js.flow +0 -5
  25. package/data-table/column-categorical.js +1 -1
  26. package/data-table/column-categorical.js.flow +1 -1
  27. package/data-table/column-datetime.js +1 -1
  28. package/data-table/column-datetime.js.flow +3 -1
  29. package/data-table/column.js +6 -2
  30. package/data-table/column.js.flow +9 -7
  31. package/data-table/data-table.js +10 -2
  32. package/data-table/data-table.js.flow +4 -1
  33. package/data-table/header-cell.js +3 -0
  34. package/data-table/header-cell.js.flow +1 -1
  35. package/data-table/index.d.ts +7 -8
  36. package/data-table/stateful-data-table.js +2 -1
  37. package/data-table/stateful-data-table.js.flow +1 -0
  38. package/data-table/types.js.flow +8 -0
  39. package/datepicker/calendar.js +15 -7
  40. package/datepicker/calendar.js.flow +23 -9
  41. package/datepicker/constants.js +12 -2
  42. package/datepicker/constants.js.flow +10 -0
  43. package/datepicker/datepicker.js +61 -30
  44. package/datepicker/datepicker.js.flow +77 -37
  45. package/datepicker/day.js +85 -34
  46. package/datepicker/day.js.flow +118 -54
  47. package/datepicker/locale.js.flow +0 -1
  48. package/datepicker/month.js +3 -1
  49. package/datepicker/month.js.flow +2 -0
  50. package/datepicker/stateful-container.js.flow +2 -1
  51. package/datepicker/styled-components.js +23 -1
  52. package/datepicker/styled-components.js.flow +12 -2
  53. package/datepicker/types.js.flow +35 -10
  54. package/datepicker/utils/date-helpers.js +30 -0
  55. package/datepicker/utils/date-helpers.js.flow +12 -0
  56. package/datepicker/week.js +3 -1
  57. package/datepicker/week.js.flow +2 -0
  58. package/es/accordion/accordion.js +52 -12
  59. package/es/accordion/panel.js +7 -5
  60. package/es/accordion/stateless-accordion.js +2 -4
  61. package/es/button/constants.js +1 -2
  62. package/es/button/styled-components.js +2 -29
  63. package/es/checkbox/checkbox.js +7 -32
  64. package/es/checkbox/constants.js +2 -1
  65. package/es/checkbox/index.js +1 -1
  66. package/es/checkbox/styled-components.js +51 -146
  67. package/es/data-table/column-categorical.js +1 -1
  68. package/es/data-table/column-datetime.js +1 -1
  69. package/es/data-table/column.js +6 -2
  70. package/es/data-table/data-table.js +6 -2
  71. package/es/data-table/header-cell.js +3 -0
  72. package/es/data-table/stateful-data-table.js +2 -1
  73. package/es/datepicker/calendar.js +15 -7
  74. package/es/datepicker/constants.js +8 -0
  75. package/es/datepicker/datepicker.js +56 -29
  76. package/es/datepicker/day.js +77 -34
  77. package/es/datepicker/month.js +3 -1
  78. package/es/datepicker/styled-components.js +8 -2
  79. package/es/datepicker/types.js +1 -1
  80. package/es/datepicker/utils/date-helpers.js +16 -0
  81. package/es/datepicker/week.js +3 -1
  82. package/es/file-uploader/file-uploader.js +4 -4
  83. package/es/form-control/styled-components.js +0 -1
  84. package/es/header-navigation/styled-components.js +3 -3
  85. package/es/helpers/overrides.js +1 -2
  86. package/es/input/styled-components.js +4 -4
  87. package/es/layer/layer.js +4 -4
  88. package/es/list/list-item.js +5 -1
  89. package/es/list/menu-adapter.js +4 -0
  90. package/es/locale/index.js +0 -7
  91. package/es/menu/stateful-container.js +0 -1
  92. package/es/menu/styled-components.js +1 -1
  93. package/es/modal/index.js +1 -1
  94. package/es/modal/modal.js +19 -65
  95. package/es/modal/styled-components.js +12 -48
  96. package/es/phone-input/default-props.js +1 -1
  97. package/es/phone-input/index.js +0 -4
  98. package/es/phone-input/phone-input-lite.js +55 -31
  99. package/es/radio/radio.js +1 -7
  100. package/es/radio/radiogroup.js +3 -28
  101. package/es/radio/styled-components.js +4 -5
  102. package/es/rating/styled-components.js +3 -3
  103. package/es/select/index.js +1 -2
  104. package/es/select/select-component.js +20 -20
  105. package/es/select/styled-components.js +21 -17
  106. package/es/snackbar/styled-components.js +2 -2
  107. package/es/spinner/index.js +3 -9
  108. package/es/spinner/styled-components.js +2 -32
  109. package/es/table/filter.js +3 -3
  110. package/es/tag/styled-components.js +1 -1
  111. package/es/themes/dark-theme/color-component-tokens.js +0 -38
  112. package/es/themes/dark-theme/color-tokens.js +0 -2
  113. package/es/themes/dark-theme/create-dark-theme.js +0 -2
  114. package/es/themes/dark-theme/dark-theme.js +0 -2
  115. package/es/themes/light-theme/color-component-tokens.js +0 -38
  116. package/es/themes/light-theme/color-tokens.js +0 -2
  117. package/es/themes/light-theme/create-light-theme.js +0 -2
  118. package/es/themes/light-theme/light-theme.js +0 -2
  119. package/es/timepicker/timepicker.js +1 -8
  120. package/es/typography/index.js +1 -31
  121. package/esm/accordion/accordion.js +60 -13
  122. package/esm/accordion/panel.js +7 -6
  123. package/esm/accordion/stateless-accordion.js +2 -4
  124. package/esm/button/constants.js +1 -2
  125. package/esm/button/styled-components.js +2 -29
  126. package/esm/checkbox/checkbox.js +7 -30
  127. package/esm/checkbox/constants.js +2 -1
  128. package/esm/checkbox/index.js +1 -1
  129. package/esm/checkbox/styled-components.js +52 -147
  130. package/esm/data-table/column-categorical.js +1 -1
  131. package/esm/data-table/column-datetime.js +1 -1
  132. package/esm/data-table/column.js +6 -2
  133. package/esm/data-table/data-table.js +10 -2
  134. package/esm/data-table/header-cell.js +3 -0
  135. package/esm/data-table/stateful-data-table.js +2 -1
  136. package/esm/datepicker/calendar.js +15 -7
  137. package/esm/datepicker/constants.js +8 -0
  138. package/esm/datepicker/datepicker.js +60 -30
  139. package/esm/datepicker/day.js +84 -34
  140. package/esm/datepicker/month.js +3 -1
  141. package/esm/datepicker/styled-components.js +24 -2
  142. package/esm/datepicker/types.js +1 -1
  143. package/esm/datepicker/utils/date-helpers.js +30 -0
  144. package/esm/datepicker/week.js +3 -1
  145. package/esm/file-uploader/file-uploader.js +4 -4
  146. package/esm/form-control/styled-components.js +0 -1
  147. package/esm/header-navigation/styled-components.js +3 -3
  148. package/esm/helpers/overrides.js +1 -2
  149. package/esm/input/styled-components.js +4 -4
  150. package/esm/layer/layer.js +4 -4
  151. package/esm/list/list-item.js +5 -1
  152. package/esm/list/menu-adapter.js +4 -0
  153. package/esm/locale/index.js +0 -7
  154. package/esm/menu/stateful-container.js +0 -1
  155. package/esm/menu/styled-components.js +1 -1
  156. package/esm/modal/index.js +1 -1
  157. package/esm/modal/modal.js +28 -71
  158. package/esm/modal/styled-components.js +6 -38
  159. package/esm/phone-input/default-props.js +1 -1
  160. package/esm/phone-input/index.js +0 -4
  161. package/esm/phone-input/phone-input-lite.js +60 -37
  162. package/esm/radio/radio.js +1 -7
  163. package/esm/radio/radiogroup.js +3 -28
  164. package/esm/radio/styled-components.js +4 -5
  165. package/esm/rating/styled-components.js +3 -3
  166. package/esm/select/index.js +1 -2
  167. package/esm/select/select-component.js +20 -20
  168. package/esm/select/styled-components.js +21 -14
  169. package/esm/snackbar/styled-components.js +2 -2
  170. package/esm/spinner/index.js +3 -9
  171. package/esm/spinner/styled-components.js +2 -40
  172. package/esm/table/filter.js +3 -3
  173. package/esm/tag/styled-components.js +1 -1
  174. package/esm/themes/dark-theme/color-component-tokens.js +0 -38
  175. package/esm/themes/dark-theme/color-tokens.js +0 -2
  176. package/esm/themes/dark-theme/create-dark-theme.js +1 -2
  177. package/esm/themes/dark-theme/dark-theme.js +1 -2
  178. package/esm/themes/light-theme/color-component-tokens.js +0 -38
  179. package/esm/themes/light-theme/color-tokens.js +0 -2
  180. package/esm/themes/light-theme/create-light-theme.js +1 -2
  181. package/esm/themes/light-theme/light-theme.js +1 -2
  182. package/esm/timepicker/timepicker.js +1 -8
  183. package/esm/typography/index.js +1 -35
  184. package/file-uploader/file-uploader.js +3 -3
  185. package/file-uploader/file-uploader.js.flow +4 -4
  186. package/form-control/index.d.ts +9 -0
  187. package/form-control/styled-components.js +0 -1
  188. package/form-control/styled-components.js.flow +0 -1
  189. package/header-navigation/styled-components.js +3 -3
  190. package/header-navigation/styled-components.js.flow +3 -3
  191. package/helpers/overrides.js +1 -2
  192. package/helpers/overrides.js.flow +1 -1
  193. package/input/index.d.ts +5 -9
  194. package/input/styled-components.js +4 -4
  195. package/input/styled-components.js.flow +4 -4
  196. package/layer/layer.js +4 -4
  197. package/layer/layer.js.flow +4 -3
  198. package/list/list-item.js +5 -1
  199. package/list/list-item.js.flow +4 -0
  200. package/list/menu-adapter.js +4 -0
  201. package/list/menu-adapter.js.flow +4 -0
  202. package/list/types.js.flow +4 -0
  203. package/locale/index.js +0 -7
  204. package/locale/index.js.flow +0 -7
  205. package/locale.ts +0 -1
  206. package/menu/index.d.ts +1 -3
  207. package/menu/stateful-container.js +0 -1
  208. package/menu/stateful-container.js.flow +0 -1
  209. package/menu/styled-components.js +1 -1
  210. package/menu/styled-components.js.flow +1 -1
  211. package/modal/index.d.ts +4 -6
  212. package/modal/index.js +0 -6
  213. package/modal/index.js.flow +0 -1
  214. package/modal/modal.js +27 -70
  215. package/modal/modal.js.flow +17 -83
  216. package/modal/styled-components.js +7 -40
  217. package/modal/styled-components.js.flow +12 -44
  218. package/modal/types.js.flow +1 -10
  219. package/package.json +3 -2
  220. package/phone-input/default-props.js +1 -1
  221. package/phone-input/default-props.js.flow +1 -1
  222. package/phone-input/index.d.ts +0 -1
  223. package/phone-input/index.js +0 -36
  224. package/phone-input/index.js.flow +0 -4
  225. package/phone-input/phone-input-lite.js +63 -38
  226. package/phone-input/phone-input-lite.js.flow +66 -44
  227. package/radio/index.d.ts +4 -9
  228. package/radio/radio.js +1 -7
  229. package/radio/radio.js.flow +1 -8
  230. package/radio/radiogroup.js +3 -28
  231. package/radio/radiogroup.js.flow +2 -26
  232. package/radio/styled-components.js +4 -5
  233. package/radio/styled-components.js.flow +3 -4
  234. package/radio/types.js.flow +4 -15
  235. package/rating/styled-components.js +3 -3
  236. package/rating/styled-components.js.flow +3 -3
  237. package/select/index.d.ts +0 -2
  238. package/select/index.js +0 -6
  239. package/select/index.js.flow +0 -2
  240. package/select/select-component.js +23 -24
  241. package/select/select-component.js.flow +25 -14
  242. package/select/styled-components.js +23 -17
  243. package/select/styled-components.js.flow +17 -12
  244. package/snackbar/styled-components.js +1 -1
  245. package/snackbar/styled-components.js.flow +11 -11
  246. package/spinner/index.d.ts +5 -18
  247. package/spinner/index.js +2 -68
  248. package/spinner/index.js.flow +2 -27
  249. package/spinner/styled-components.js +9 -45
  250. package/spinner/styled-components.js.flow +2 -34
  251. package/spinner/types.js.flow +1 -19
  252. package/styles/types.js.flow +0 -2
  253. package/table/filter.js +3 -3
  254. package/table/filter.js.flow +3 -3
  255. package/tag/styled-components.js +1 -1
  256. package/tag/styled-components.js.flow +1 -1
  257. package/theme.ts +0 -81
  258. package/themes/dark-theme/color-component-tokens.js +0 -38
  259. package/themes/dark-theme/color-component-tokens.js.flow +0 -42
  260. package/themes/dark-theme/color-tokens.js +0 -2
  261. package/themes/dark-theme/color-tokens.js.flow +0 -2
  262. package/themes/dark-theme/create-dark-theme.js +1 -3
  263. package/themes/dark-theme/create-dark-theme.js.flow +0 -2
  264. package/themes/dark-theme/dark-theme.js +1 -3
  265. package/themes/dark-theme/dark-theme.js.flow +0 -2
  266. package/themes/light-theme/color-component-tokens.js +0 -38
  267. package/themes/light-theme/color-component-tokens.js.flow +0 -43
  268. package/themes/light-theme/color-tokens.js +0 -2
  269. package/themes/light-theme/color-tokens.js.flow +0 -2
  270. package/themes/light-theme/create-light-theme.js +1 -3
  271. package/themes/light-theme/create-light-theme.js.flow +0 -2
  272. package/themes/light-theme/light-theme.js +1 -3
  273. package/themes/light-theme/light-theme.js.flow +0 -2
  274. package/themes/types.js.flow +0 -68
  275. package/timepicker/timepicker.js +1 -8
  276. package/timepicker/timepicker.js.flow +4 -10
  277. package/typography/index.d.ts +0 -23
  278. package/typography/index.js +2 -57
  279. package/typography/index.js.flow +0 -31
  280. package/es/spinner/spinner.js +0 -68
  281. package/es/themes/dark-theme/color-deprecated-semantic-tokens.js +0 -35
  282. package/es/themes/light-theme/color-deprecated-semantic-tokens.js +0 -35
  283. package/esm/spinner/spinner.js +0 -125
  284. package/esm/themes/dark-theme/color-deprecated-semantic-tokens.js +0 -38
  285. package/esm/themes/light-theme/color-deprecated-semantic-tokens.js +0 -38
  286. package/spinner/spinner.js +0 -136
  287. package/spinner/spinner.js.flow +0 -75
  288. package/themes/dark-theme/color-deprecated-semantic-tokens.js +0 -50
  289. package/themes/dark-theme/color-deprecated-semantic-tokens.js.flow +0 -42
  290. package/themes/light-theme/color-deprecated-semantic-tokens.js +0 -50
  291. package/themes/light-theme/color-deprecated-semantic-tokens.js.flow +0 -42
package/modal/index.d.ts CHANGED
@@ -32,22 +32,22 @@ export interface SharedStylePropsArg {
32
32
  $size?: SIZE[keyof SIZE];
33
33
  $role?: ROLE[keyof ROLE];
34
34
  $closeable?: boolean;
35
- $unstable_ModalBackdropScroll?: boolean;
36
35
  }
37
36
 
38
37
  export interface ModalOverrides {
39
38
  Root?: Override<SharedStylePropsArg>;
40
- Backdrop?: Override<SharedStylePropsArg>;
41
39
  Dialog?: Override<SharedStylePropsArg>;
42
40
  DialogContainer?: Override<SharedStylePropsArg>;
43
41
  Close?: Override<SharedStylePropsArg>;
44
42
  }
45
43
  export interface ModalProps {
46
44
  animate?: boolean;
47
- autofocus?: boolean;
48
45
  autoFocus?: boolean;
49
46
  focusLock?: boolean;
50
- returnFocus?: boolean | FocusOptions | ((returnTo: Element) => boolean | FocusOptions);
47
+ returnFocus?:
48
+ | boolean
49
+ | FocusOptions
50
+ | ((returnTo: Element) => boolean | FocusOptions);
51
51
  children?: React.ReactNode;
52
52
  closeable?: boolean;
53
53
  isOpen?: boolean;
@@ -56,7 +56,6 @@ export interface ModalProps {
56
56
  overrides?: ModalOverrides;
57
57
  role?: ROLE[keyof ROLE];
58
58
  size?: SIZE[keyof SIZE];
59
- unstable_ModalBackdropScroll?: boolean;
60
59
  }
61
60
  export interface ModalState {
62
61
  isVisible: boolean;
@@ -92,7 +91,6 @@ export class ModalButton extends React.Component<
92
91
  export class FocusOnce extends React.Component<{children: React.ReactNode}> {}
93
92
 
94
93
  export const StyledRoot: StyletronComponent<any>;
95
- export const StyledBackdrop: StyletronComponent<any>;
96
94
  export const StyledDialog: StyletronComponent<any>;
97
95
  export const StyledDialogContainer: StyletronComponent<any>;
98
96
  export const StyledClose: StyletronComponent<any>;
package/modal/index.js CHANGED
@@ -45,12 +45,6 @@ Object.defineProperty(exports, "StyledRoot", {
45
45
  return _styledComponents.Root;
46
46
  }
47
47
  });
48
- Object.defineProperty(exports, "StyledBackdrop", {
49
- enumerable: true,
50
- get: function get() {
51
- return _styledComponents.Backdrop;
52
- }
53
- });
54
48
  Object.defineProperty(exports, "StyledDialog", {
55
49
  enumerable: true,
56
50
  get: function get() {
@@ -11,7 +11,6 @@ export { default as FocusOnce } from './focus-once.js';
11
11
  export { SIZE, ROLE, CLOSE_SOURCE } from './constants.js';
12
12
  export {
13
13
  Root as StyledRoot,
14
- Backdrop as StyledBackdrop,
15
14
  Dialog as StyledDialog,
16
15
  DialogContainer as StyledDialogContainer,
17
16
  Close as StyledClose,
package/modal/modal.js CHANGED
@@ -87,11 +87,13 @@ var Modal = /*#__PURE__*/function (_React$Component) {
87
87
 
88
88
  _defineProperty(_assertThisInitialized(_this), "animateStartTimer", void 0);
89
89
 
90
+ _defineProperty(_assertThisInitialized(_this), "dialogContainerRef", /*#__PURE__*/React.createRef());
91
+
90
92
  _defineProperty(_assertThisInitialized(_this), "lastFocus", null);
91
93
 
92
94
  _defineProperty(_assertThisInitialized(_this), "lastMountNodeOverflowStyle", null);
93
95
 
94
- _defineProperty(_assertThisInitialized(_this), "_refs", {});
96
+ _defineProperty(_assertThisInitialized(_this), "rootRef", /*#__PURE__*/React.createRef());
95
97
 
96
98
  _defineProperty(_assertThisInitialized(_this), "state", {
97
99
  isVisible: false,
@@ -124,10 +126,7 @@ var Modal = /*#__PURE__*/function (_React$Component) {
124
126
  });
125
127
 
126
128
  _defineProperty(_assertThisInitialized(_this), "onDocumentClick", function (e) {
127
- if (e.target && e.target instanceof HTMLElement && ( // Handles modal closure when unstable_ModalBackdropScroll is set to true
128
- e.target.contains(_this.getRef('DialogContainer').current) || // Handles modal closure when unstable_ModalBackdropScroll is set to false
129
- // $FlowFixMe
130
- e.target.contains(_this.getRef('DeprecatedBackdrop').current))) {
129
+ if (e.target && e.target instanceof HTMLElement && e.target.contains(_this.dialogContainerRef.current)) {
131
130
  _this.onBackdropClick();
132
131
  }
133
132
  });
@@ -158,18 +157,10 @@ var Modal = /*#__PURE__*/function (_React$Component) {
158
157
  value: function componentDidMount() {
159
158
  this.setState({
160
159
  mounted: true
161
- }); // TODO(v11)
160
+ });
162
161
 
163
162
  if (process.env.NODE_ENV !== "production") {
164
- if (!this.props.unstable_ModalBackdropScroll) {
165
- console.warn("Consider setting 'unstable_ModalBackdropScroll' prop to true\n to prepare for the next major version upgrade. 'unstable_ModalBackdropScroll'\n prop will be removed in the next major version but implemented as the default behavior.");
166
- }
167
-
168
- if (this.props.overrides && this.props.overrides.Backdrop) {
169
- console.warn("Backdrop element will be removed in the next major version in favor of\n DialogContainer element that will have the backdrop styles and backdrop click handle.\n Consider setting 'unstable_ModalBackdropScroll' prop to true that will apply backdrop\n styles to DialogContainer enable modal scrolling while cursor in over the backdrop.\n Then pass backdrop overrides to DialogContainer instead. Tha will help you with\n the next major version upgrade.");
170
- } // $FlowFixMe: flow complains that this prop doesn't exist
171
-
172
-
163
+ // $FlowFixMe: flow complains that this prop doesn't exist
173
164
  if (this.props.closable) {
174
165
  console.warn('The property `closable` is not supported on the Modal. Did you mean `closeable`?');
175
166
  }
@@ -237,7 +228,7 @@ var Modal = /*#__PURE__*/function (_React$Component) {
237
228
 
238
229
  // Sometimes scroll starts past zero, possibly due to animation
239
230
  // Reset scroll to 0 (other libraries do this as well)
240
- var rootRef = this.getRef('Root').current;
231
+ var rootRef = this.rootRef.current;
241
232
 
242
233
  if (rootRef) {
243
234
  rootRef.scrollTop = 0;
@@ -277,8 +268,7 @@ var Modal = /*#__PURE__*/function (_React$Component) {
277
268
  isOpen = _this$props.isOpen,
278
269
  size = _this$props.size,
279
270
  role = _this$props.role,
280
- closeable = _this$props.closeable,
281
- unstable_ModalBackdropScroll = _this$props.unstable_ModalBackdropScroll;
271
+ closeable = _this$props.closeable;
282
272
  return {
283
273
  $animate: animate,
284
274
  $isVisible: this.state.isVisible,
@@ -286,7 +276,6 @@ var Modal = /*#__PURE__*/function (_React$Component) {
286
276
  $size: size,
287
277
  $role: role,
288
278
  $closeable: !!closeable,
289
- $unstable_ModalBackdropScroll: unstable_ModalBackdropScroll,
290
279
  $isFocusVisible: this.state.isFocusVisible
291
280
  };
292
281
  }
@@ -309,15 +298,6 @@ var Modal = /*#__PURE__*/function (_React$Component) {
309
298
  var children = this.props.children;
310
299
  return typeof children === 'function' ? children() : children;
311
300
  }
312
- }, {
313
- key: "getRef",
314
- value: function getRef(component) {
315
- if (!this._refs[component]) {
316
- this._refs[component] = /*#__PURE__*/React.createRef();
317
- }
318
-
319
- return this._refs[component];
320
- }
321
301
  }, {
322
302
  key: "renderModal",
323
303
  value: function renderModal() {
@@ -328,15 +308,12 @@ var Modal = /*#__PURE__*/function (_React$Component) {
328
308
  overrides = _this$props2$override === void 0 ? {} : _this$props2$override,
329
309
  closeable = _this$props2.closeable,
330
310
  role = _this$props2.role,
331
- unstable_ModalBackdropScroll = _this$props2.unstable_ModalBackdropScroll,
332
- autofocus = _this$props2.autofocus,
333
311
  autoFocus = _this$props2.autoFocus,
334
312
  focusLock = _this$props2.focusLock,
335
313
  returnFocus = _this$props2.returnFocus;
336
314
  var RootOverride = overrides.Root,
337
315
  DialogOverride = overrides.Dialog,
338
316
  DialogContainerOverride = overrides.DialogContainer,
339
- BackdropOverride = overrides.Backdrop,
340
317
  CloseOverride = overrides.Close;
341
318
 
342
319
  var _getOverrides = (0, _overrides.getOverrides)(RootOverride, _styledComponents.Root),
@@ -344,59 +321,42 @@ var Modal = /*#__PURE__*/function (_React$Component) {
344
321
  Root = _getOverrides2[0],
345
322
  rootProps = _getOverrides2[1];
346
323
 
347
- var _getOverrides3 = (0, _overrides.getOverrides)(BackdropOverride, _styledComponents.Backdrop),
324
+ var _getOverrides3 = (0, _overrides.getOverrides)(DialogContainerOverride, _styledComponents.DialogContainer),
348
325
  _getOverrides4 = _slicedToArray(_getOverrides3, 2),
349
- Backdrop = _getOverrides4[0],
350
- backdropProps = _getOverrides4[1];
326
+ DialogContainer = _getOverrides4[0],
327
+ dialogContainerProps = _getOverrides4[1];
351
328
 
352
- var _getOverrides5 = (0, _overrides.getOverrides)(DialogContainerOverride, _styledComponents.DialogContainer),
329
+ var _getOverrides5 = (0, _overrides.getOverrides)(DialogOverride, _styledComponents.Dialog),
353
330
  _getOverrides6 = _slicedToArray(_getOverrides5, 2),
354
- DialogContainer = _getOverrides6[0],
355
- dialogContainerProps = _getOverrides6[1];
331
+ Dialog = _getOverrides6[0],
332
+ dialogProps = _getOverrides6[1];
356
333
 
357
- var _getOverrides7 = (0, _overrides.getOverrides)(DialogOverride, _styledComponents.Dialog),
334
+ var _getOverrides7 = (0, _overrides.getOverrides)(CloseOverride, _styledComponents.Close),
358
335
  _getOverrides8 = _slicedToArray(_getOverrides7, 2),
359
- Dialog = _getOverrides8[0],
360
- dialogProps = _getOverrides8[1];
361
-
362
- var _getOverrides9 = (0, _overrides.getOverrides)(CloseOverride, _styledComponents.Close),
363
- _getOverrides10 = _slicedToArray(_getOverrides9, 2),
364
- Close = _getOverrides10[0],
365
- closeProps = _getOverrides10[1];
336
+ Close = _getOverrides8[0],
337
+ closeProps = _getOverrides8[1];
366
338
 
367
339
  var sharedProps = this.getSharedProps();
368
340
  var children = this.getChildren();
369
-
370
- if (autofocus === false && process.env.NODE_ENV !== "production") {
371
- console.warn("The prop \"autofocus\" is deprecated in favor of \"autoFocus\" to be consistent across the project.\n The property \"autofocus\" will be removed in a future major version.");
372
- } // Handles backdrop click when `unstable_ModalBackdropScroll` is set to true
373
-
374
-
375
- if (dialogContainerProps.ref) {
376
- this._refs.DialogContainer = dialogContainerProps.ref;
377
- }
378
-
379
- var dialogContainerConditionalProps = unstable_ModalBackdropScroll ? {
380
- ref: this.getRef('DialogContainer')
381
- } : {};
382
341
  return /*#__PURE__*/React.createElement(_index.LocaleContext.Consumer, null, function (locale) {
383
342
  return /*#__PURE__*/React.createElement(_reactFocusLock.default, {
384
343
  disabled: !focusLock // Allow focus to escape when UI is within an iframe
385
344
  ,
386
345
  crossFrame: false,
387
346
  returnFocus: returnFocus,
388
- autoFocus: autofocus !== null ? autofocus : autoFocus
347
+ autoFocus: autoFocus
389
348
  }, /*#__PURE__*/React.createElement(Root, _extends({
390
- "data-baseweb": "modal",
391
- ref: _this3.getRef('Root')
392
- }, sharedProps, rootProps), /*#__PURE__*/React.createElement(Backdrop, _extends({}, unstable_ModalBackdropScroll ? {} : {
393
- ref: _this3.getRef('DeprecatedBackdrop')
394
- }, sharedProps, backdropProps)), /*#__PURE__*/React.createElement(DialogContainer, _extends({}, dialogContainerConditionalProps, sharedProps, dialogContainerProps), /*#__PURE__*/React.createElement(Dialog, _extends({
349
+ "data-baseweb": "modal" // flowlint-next-line unclear-type:off
350
+ ,
351
+ ref: _this3.rootRef
352
+ }, sharedProps, rootProps), /*#__PURE__*/React.createElement(DialogContainer // flowlint-next-line unclear-type:off
353
+ , _extends({
354
+ ref: _this3.dialogContainerRef
355
+ }, sharedProps, dialogContainerProps), /*#__PURE__*/React.createElement(Dialog, _extends({
395
356
  tabIndex: -1,
396
357
  "aria-modal": true,
397
358
  "aria-label": "dialog",
398
- role: role,
399
- ref: _this3.getRef('Dialog')
359
+ role: role
400
360
  }, sharedProps, dialogProps), children, closeable ? /*#__PURE__*/React.createElement(Close, _extends({
401
361
  "aria-label": locale.modal.close,
402
362
  onClick: _this3.onCloseClick
@@ -432,8 +392,6 @@ var Modal = /*#__PURE__*/function (_React$Component) {
432
392
 
433
393
  _defineProperty(Modal, "defaultProps", {
434
394
  animate: true,
435
- // TODO(v11): remove
436
- autofocus: null,
437
395
  autoFocus: true,
438
396
  focusLock: true,
439
397
  returnFocus: true,
@@ -442,8 +400,7 @@ _defineProperty(Modal, "defaultProps", {
442
400
  isOpen: false,
443
401
  overrides: {},
444
402
  role: _constants.ROLE.dialog,
445
- size: _constants.SIZE.default,
446
- unstable_ModalBackdropScroll: false
403
+ size: _constants.SIZE.default
447
404
  });
448
405
 
449
406
  var _default = Modal;
@@ -16,27 +16,18 @@ import { Layer } from '../layer/index.js';
16
16
  import { SIZE, ROLE, CLOSE_SOURCE } from './constants.js';
17
17
  import {
18
18
  Root as StyledRoot,
19
- Backdrop as StyledBackdrop,
20
19
  Dialog as StyledDialog,
21
20
  DialogContainer as StyledDialogContainer,
22
21
  Close as StyledClose,
23
22
  } from './styled-components.js';
24
23
  import { CloseIcon } from './close-icon.js';
25
24
 
26
- import type {
27
- ModalPropsT,
28
- ModalStateT,
29
- SharedStylePropsArgT,
30
- CloseSourceT,
31
- ElementRefT,
32
- } from './types.js';
25
+ import type { ModalPropsT, ModalStateT, SharedStylePropsArgT, CloseSourceT } from './types.js';
33
26
  import { isFocusVisible, forkFocus, forkBlur } from '../utils/focusVisible.js';
34
27
 
35
28
  class Modal extends React.Component<ModalPropsT, ModalStateT> {
36
29
  static defaultProps: $Shape<ModalPropsT> = {
37
30
  animate: true,
38
- // TODO(v11): remove
39
- autofocus: null,
40
31
  autoFocus: true,
41
32
  focusLock: true,
42
33
  returnFocus: true,
@@ -46,14 +37,14 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
46
37
  overrides: {},
47
38
  role: ROLE.dialog,
48
39
  size: SIZE.default,
49
- unstable_ModalBackdropScroll: false,
50
40
  };
51
41
 
52
42
  animateOutTimer: ?TimeoutID;
53
43
  animateStartTimer: ?AnimationFrameID;
44
+ dialogContainerRef = React.createRef<HTMLElement>();
54
45
  lastFocus: ?HTMLElement = null;
55
46
  lastMountNodeOverflowStyle: ?string = null;
56
- _refs: { [string]: ElementRefT } = {};
47
+ rootRef = React.createRef<HTMLElement>();
57
48
 
58
49
  state = {
59
50
  isVisible: false,
@@ -63,21 +54,7 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
63
54
 
64
55
  componentDidMount() {
65
56
  this.setState({ mounted: true });
66
- // TODO(v11)
67
57
  if (__DEV__) {
68
- if (!this.props.unstable_ModalBackdropScroll) {
69
- console.warn(`Consider setting 'unstable_ModalBackdropScroll' prop to true
70
- to prepare for the next major version upgrade. 'unstable_ModalBackdropScroll'
71
- prop will be removed in the next major version but implemented as the default behavior.`);
72
- }
73
- if (this.props.overrides && this.props.overrides.Backdrop) {
74
- console.warn(`Backdrop element will be removed in the next major version in favor of
75
- DialogContainer element that will have the backdrop styles and backdrop click handle.
76
- Consider setting 'unstable_ModalBackdropScroll' prop to true that will apply backdrop
77
- styles to DialogContainer enable modal scrolling while cursor in over the backdrop.
78
- Then pass backdrop overrides to DialogContainer instead. Tha will help you with
79
- the next major version upgrade.`);
80
- }
81
58
  // $FlowFixMe: flow complains that this prop doesn't exist
82
59
  if (this.props.closable) {
83
60
  console.warn(
@@ -149,11 +126,7 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
149
126
  if (
150
127
  e.target &&
151
128
  e.target instanceof HTMLElement &&
152
- // Handles modal closure when unstable_ModalBackdropScroll is set to true
153
- (e.target.contains(this.getRef('DialogContainer').current) ||
154
- // Handles modal closure when unstable_ModalBackdropScroll is set to false
155
- // $FlowFixMe
156
- e.target.contains(this.getRef('DeprecatedBackdrop').current))
129
+ e.target.contains(this.dialogContainerRef.current)
157
130
  ) {
158
131
  this.onBackdropClick();
159
132
  }
@@ -183,7 +156,7 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
183
156
  didOpen() {
184
157
  // Sometimes scroll starts past zero, possibly due to animation
185
158
  // Reset scroll to 0 (other libraries do this as well)
186
- const rootRef = this.getRef('Root').current;
159
+ const rootRef = this.rootRef.current;
187
160
  if (rootRef) {
188
161
  rootRef.scrollTop = 0;
189
162
  }
@@ -220,7 +193,7 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
220
193
  };
221
194
 
222
195
  getSharedProps(): $Diff<SharedStylePropsArgT, { children?: React.Node }> {
223
- const { animate, isOpen, size, role, closeable, unstable_ModalBackdropScroll } = this.props;
196
+ const { animate, isOpen, size, role, closeable } = this.props;
224
197
  return {
225
198
  $animate: animate,
226
199
  $isVisible: this.state.isVisible,
@@ -228,7 +201,6 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
228
201
  $size: size,
229
202
  $role: role,
230
203
  $closeable: !!closeable,
231
- $unstable_ModalBackdropScroll: unstable_ModalBackdropScroll,
232
204
  $isFocusVisible: this.state.isFocusVisible,
233
205
  };
234
206
  }
@@ -248,35 +220,17 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
248
220
  return typeof children === 'function' ? children() : children;
249
221
  }
250
222
 
251
- getRef(component: string): ElementRefT {
252
- if (!this._refs[component]) {
253
- this._refs[component] = React.createRef();
254
- }
255
- return this._refs[component];
256
- }
257
-
258
223
  renderModal() {
259
- const {
260
- overrides = {},
261
- closeable,
262
- role,
263
- unstable_ModalBackdropScroll,
264
- autofocus,
265
- autoFocus,
266
- focusLock,
267
- returnFocus,
268
- } = this.props;
224
+ const { overrides = {}, closeable, role, autoFocus, focusLock, returnFocus } = this.props;
269
225
 
270
226
  const {
271
227
  Root: RootOverride,
272
228
  Dialog: DialogOverride,
273
229
  DialogContainer: DialogContainerOverride,
274
- Backdrop: BackdropOverride,
275
230
  Close: CloseOverride,
276
231
  } = overrides;
277
232
 
278
233
  const [Root, rootProps] = getOverrides(RootOverride, StyledRoot);
279
- const [Backdrop, backdropProps] = getOverrides(BackdropOverride, StyledBackdrop);
280
234
  const [DialogContainer, dialogContainerProps] = getOverrides(
281
235
  DialogContainerOverride,
282
236
  StyledDialogContainer
@@ -287,23 +241,6 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
287
241
  const sharedProps = this.getSharedProps();
288
242
  const children = this.getChildren();
289
243
 
290
- if (autofocus === false && __DEV__) {
291
- console.warn(
292
- `The prop "autofocus" is deprecated in favor of "autoFocus" to be consistent across the project.
293
- The property "autofocus" will be removed in a future major version.`
294
- );
295
- }
296
-
297
- // Handles backdrop click when `unstable_ModalBackdropScroll` is set to true
298
- if (dialogContainerProps.ref) {
299
- this._refs.DialogContainer = dialogContainerProps.ref;
300
- }
301
- const dialogContainerConditionalProps = unstable_ModalBackdropScroll
302
- ? {
303
- ref: this.getRef('DialogContainer'),
304
- }
305
- : {};
306
-
307
244
  return (
308
245
  <LocaleContext.Consumer>
309
246
  {(locale) => (
@@ -312,20 +249,18 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
312
249
  // Allow focus to escape when UI is within an iframe
313
250
  crossFrame={false}
314
251
  returnFocus={returnFocus}
315
- autoFocus={autofocus !== null ? autofocus : autoFocus}
252
+ autoFocus={autoFocus}
316
253
  >
317
- <Root data-baseweb="modal" ref={this.getRef('Root')} {...sharedProps} {...rootProps}>
318
- <Backdrop
319
- {...(unstable_ModalBackdropScroll
320
- ? {}
321
- : {
322
- ref: this.getRef('DeprecatedBackdrop'),
323
- })}
324
- {...sharedProps}
325
- {...backdropProps}
326
- />
254
+ <Root
255
+ data-baseweb="modal"
256
+ // flowlint-next-line unclear-type:off
257
+ ref={(this.rootRef: any)}
258
+ {...sharedProps}
259
+ {...rootProps}
260
+ >
327
261
  <DialogContainer
328
- {...dialogContainerConditionalProps}
262
+ // flowlint-next-line unclear-type:off
263
+ ref={(this.dialogContainerRef: any)}
329
264
  {...sharedProps}
330
265
  {...dialogContainerProps}
331
266
  >
@@ -334,7 +269,6 @@ class Modal extends React.Component<ModalPropsT, ModalStateT> {
334
269
  aria-modal
335
270
  aria-label="dialog"
336
271
  role={role}
337
- ref={this.getRef('Dialog')}
338
272
  {...sharedProps}
339
273
  {...dialogProps}
340
274
  >
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Close = exports.Dialog = exports.DialogContainer = exports.Backdrop = exports.Root = void 0;
6
+ exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Close = exports.Dialog = exports.DialogContainer = exports.Root = void 0;
7
7
 
8
8
  var _index = require("../styles/index.js");
9
9
 
@@ -50,62 +50,29 @@ var Root = (0, _index.styled)('div', function (props) {
50
50
  });
51
51
  exports.Root = Root;
52
52
  Root.displayName = "Root";
53
- var Backdrop = (0, _index.styled)('div', function (props) {
53
+ var DialogContainer = (0, _index.styled)('div', function (props) {
54
54
  var $animate = props.$animate,
55
55
  $isOpen = props.$isOpen,
56
56
  $isVisible = props.$isVisible,
57
- $theme = props.$theme,
58
- $unstable_ModalBackdropScroll = props.$unstable_ModalBackdropScroll;
59
-
60
- if ($unstable_ModalBackdropScroll) {
61
- return {};
62
- }
63
-
64
- return _objectSpread({
65
- position: 'fixed',
66
- right: 0,
67
- bottom: 0,
68
- top: 0,
69
- left: 0,
70
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
71
- // Remove grey highlight
72
- WebkitTapHighlightColor: 'transparent',
73
- // Disable scroll capabilities.
74
- touchAction: 'none',
75
- opacity: $isVisible && $isOpen ? 1 : 0
76
- }, $animate ? {
57
+ $theme = props.$theme;
58
+ var animationRules = {
77
59
  transitionProperty: 'opacity',
78
60
  transitionDuration: $theme.animation.timing400,
79
61
  transitionTimingFunction: $theme.animation.easeOutCurve
80
- } : null);
81
- });
82
- exports.Backdrop = Backdrop;
83
- Backdrop.displayName = "Backdrop";
84
- var DialogContainer = (0, _index.styled)('div', function (props) {
85
- var $animate = props.$animate,
86
- $isOpen = props.$isOpen,
87
- $isVisible = props.$isVisible,
88
- $theme = props.$theme,
89
- $unstable_ModalBackdropScroll = props.$unstable_ModalBackdropScroll;
62
+ };
90
63
  return _objectSpread({
91
64
  display: 'flex',
92
65
  alignItems: 'center',
93
66
  justifyContent: 'center',
94
67
  width: '100%',
95
68
  minHeight: '100%',
96
- pointerEvents: 'none',
97
- userSelect: 'none'
98
- }, $unstable_ModalBackdropScroll ? _objectSpread({
69
+ userSelect: 'none',
99
70
  pointerEvents: 'auto',
100
71
  backgroundColor: 'rgba(0, 0, 0, 0.5)',
101
72
  // Remove grey highlight
102
73
  WebkitTapHighlightColor: 'transparent',
103
74
  opacity: $isVisible && $isOpen ? 1 : 0
104
- }, $animate ? {
105
- transitionProperty: 'opacity',
106
- transitionDuration: $theme.animation.timing400,
107
- transitionTimingFunction: $theme.animation.easeOutCurve
108
- } : null) : {});
75
+ }, $animate ? animationRules : null);
109
76
  });
110
77
  exports.DialogContainer = DialogContainer;
111
78
  DialogContainer.displayName = "DialogContainer";
@@ -47,59 +47,27 @@ export const Root = styled<SharedStylePropsArgT>('div', (props) => {
47
47
  };
48
48
  });
49
49
 
50
- export const Backdrop = styled<SharedStylePropsArgT>('div', (props) => {
51
- const { $animate, $isOpen, $isVisible, $theme, $unstable_ModalBackdropScroll } = props;
52
- if ($unstable_ModalBackdropScroll) {
53
- return {};
54
- }
55
- return {
56
- position: 'fixed',
57
- right: 0,
58
- bottom: 0,
59
- top: 0,
60
- left: 0,
61
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
62
- // Remove grey highlight
63
- WebkitTapHighlightColor: 'transparent',
64
- // Disable scroll capabilities.
65
- touchAction: 'none',
66
- opacity: $isVisible && $isOpen ? 1 : 0,
67
- ...($animate
68
- ? {
69
- transitionProperty: 'opacity',
70
- transitionDuration: $theme.animation.timing400,
71
- transitionTimingFunction: $theme.animation.easeOutCurve,
72
- }
73
- : null),
50
+ export const DialogContainer = styled<SharedStylePropsArgT>('div', (props) => {
51
+ const { $animate, $isOpen, $isVisible, $theme } = props;
52
+ const animationRules = {
53
+ transitionProperty: 'opacity',
54
+ transitionDuration: $theme.animation.timing400,
55
+ transitionTimingFunction: $theme.animation.easeOutCurve,
74
56
  };
75
- });
76
57
 
77
- export const DialogContainer = styled<SharedStylePropsArgT>('div', (props) => {
78
- const { $animate, $isOpen, $isVisible, $theme, $unstable_ModalBackdropScroll } = props;
79
58
  return {
80
59
  display: 'flex',
81
60
  alignItems: 'center',
82
61
  justifyContent: 'center',
83
62
  width: '100%',
84
63
  minHeight: '100%',
85
- pointerEvents: 'none',
86
64
  userSelect: 'none',
87
- ...($unstable_ModalBackdropScroll
88
- ? {
89
- pointerEvents: 'auto',
90
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
91
- // Remove grey highlight
92
- WebkitTapHighlightColor: 'transparent',
93
- opacity: $isVisible && $isOpen ? 1 : 0,
94
- ...($animate
95
- ? {
96
- transitionProperty: 'opacity',
97
- transitionDuration: $theme.animation.timing400,
98
- transitionTimingFunction: $theme.animation.easeOutCurve,
99
- }
100
- : null),
101
- }
102
- : {}),
65
+ pointerEvents: 'auto',
66
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
67
+ // Remove grey highlight
68
+ WebkitTapHighlightColor: 'transparent',
69
+ opacity: $isVisible && $isOpen ? 1 : 0,
70
+ ...($animate ? animationRules : null),
103
71
  };
104
72
  });
105
73
 
@@ -20,15 +20,11 @@ export type CloseSourceT = $Keys<typeof CLOSE_SOURCE>;
20
20
 
21
21
  export type OverridesT = {
22
22
  Root?: OverrideT,
23
- Backdrop?: OverrideT,
24
23
  Dialog?: OverrideT,
25
24
  DialogContainer?: OverrideT,
26
25
  Close?: OverrideT,
27
26
  };
28
27
 
29
- // flowlint-next-line unclear-type:off
30
- export type ElementRefT = { current: React.ElementRef<any> | null };
31
-
32
28
  // Props shared by all flavors of modal
33
29
  export type ModalPropsT = {
34
30
  /** Sets whether the Modal should be displayed by easing in and out */
@@ -37,7 +33,6 @@ export type ModalPropsT = {
37
33
  * If false, the modal container itself will receive focus.
38
34
  * Moving focus into a newly opened modal is important for accessibility purposes, so please be careful!
39
35
  */
40
- autofocus: boolean | null,
41
36
  autoFocus: boolean,
42
37
  /** If true, focus will be locked to elements within the modal.
43
38
  */
@@ -53,7 +48,7 @@ export type ModalPropsT = {
53
48
  * for performance reasons (wont render until opened) */
54
49
  children?: React.Node | (() => React.Node),
55
50
  /** Whether the modal should be closeable by the user
56
- * (either via escape, backdrop click, etc). You can set this to
51
+ * (either via escape, dialog container click, etc). You can set this to
57
52
  * false if your modal has an action that the user must take before closing.*/
58
53
  closeable: boolean,
59
54
  isOpen: boolean,
@@ -70,9 +65,6 @@ export type ModalPropsT = {
70
65
  /** Controls the size of the modal (primarily width).
71
66
  * Can be a SIZE constant or css width property value. */
72
67
  size: SizePropT,
73
- /** Make modal scrollable while cursor is over the modal's backdrop.
74
- * Will be removed and implemented as the default behavior in the next major version */
75
- unstable_ModalBackdropScroll?: boolean,
76
68
  };
77
69
 
78
70
  export type ModalPropsWithoutChildrenT = $Diff<ModalPropsT, { children: ?React.Node }>;
@@ -90,7 +82,6 @@ export type SharedStylePropsArgT = {
90
82
  $size: SizePropT,
91
83
  $role: RolePropT,
92
84
  $closeable: boolean,
93
- $unstable_ModalBackdropScroll?: boolean,
94
85
  $isFocusVisible: boolean,
95
86
  };
96
87