@atlaskit/select 15.7.2 → 15.7.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/select
2
2
 
3
+ ## 15.7.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`5e578b89178`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5e578b89178) - Fixed an issue in PopupSelect that caused the page to scroll to the top.
8
+
3
9
  ## 15.7.2
4
10
 
5
11
  ### Patch Changes
@@ -132,6 +132,7 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
132
132
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isOpenControlled", _this.props.isOpen !== undefined);
133
133
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "defaultOpenState", _this.isOpenControlled ? _this.props.isOpen : _this.props.defaultIsOpen);
134
134
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
135
+ focusLockEnabled: false,
135
136
  isOpen: (_this$defaultOpenStat = _this.defaultOpenState) !== null && _this$defaultOpenStat !== void 0 ? _this$defaultOpenStat : false,
136
137
  mergedComponents: _components.defaultComponents,
137
138
  mergedPopperProps: defaultPopperProps
@@ -188,6 +189,14 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
188
189
  onChange(value, actionMeta);
189
190
  }
190
191
  });
192
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleFirstPopperUpdate", function () {
193
+ // When the popup opens it's focused into. Since the popup is inside a portal, it's position is
194
+ // initially set to 0,0 - this causes the window scroll position to jump to the top. To prevent
195
+ // this we defer enabling the focus-lock until after Popper has positioned the popup the first time.
196
+ _this.setState({
197
+ focusLockEnabled: true
198
+ });
199
+ });
191
200
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "open", function (options) {
192
201
  var onOpen = _this.props.onOpen;
193
202
 
@@ -245,6 +254,10 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
245
254
  isOpen: false
246
255
  });
247
256
 
257
+ _this.setState({
258
+ focusLockEnabled: false
259
+ });
260
+
248
261
  if (_this.targetRef != null) {
249
262
  _this.targetRef.focus();
250
263
  }
@@ -328,6 +341,7 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
328
341
  target = _this$props4.target,
329
342
  props = (0, _objectWithoutProperties2.default)(_this$props4, _excluded);
330
343
  var _this$state = _this.state,
344
+ focusLockEnabled = _this$state.focusLockEnabled,
331
345
  isOpen = _this$state.isOpen,
332
346
  mergedComponents = _this$state.mergedComponents,
333
347
  mergedPopperProps = _this$state.mergedPopperProps;
@@ -344,7 +358,15 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
344
358
  return null;
345
359
  }
346
360
 
347
- var popper = /*#__PURE__*/_react.default.createElement(_reactPopper.Popper, mergedPopperProps, function (_ref2) {
361
+ var popper = /*#__PURE__*/_react.default.createElement(_reactPopper.Popper, (0, _extends2.default)({}, mergedPopperProps, {
362
+ onFirstUpdate: function onFirstUpdate(state) {
363
+ var _mergedPopperProps$on;
364
+
365
+ _this.handleFirstPopperUpdate();
366
+
367
+ (_mergedPopperProps$on = mergedPopperProps.onFirstUpdate) === null || _mergedPopperProps$on === void 0 ? void 0 : _mergedPopperProps$on.call(mergedPopperProps, state);
368
+ }
369
+ }), function (_ref2) {
348
370
  var placement = _ref2.placement,
349
371
  ref = _ref2.ref,
350
372
  style = _ref2.style;
@@ -357,6 +379,7 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
357
379
  maxWidth: maxMenuWidth,
358
380
  id: _this.popperWrapperId
359
381
  }, /*#__PURE__*/_react.default.createElement(_reactFocusLock.default, {
382
+ disabled: !focusLockEnabled,
360
383
  returnFocus: true
361
384
  }, /*#__PURE__*/_react.default.createElement(_reactSelect.default, (0, _extends2.default)({
362
385
  backspaceRemovesValue: false,
@@ -14,7 +14,7 @@ var _analyticsNext = require("@atlaskit/analytics-next");
14
14
  var _createSelect = _interopRequireDefault(require("./createSelect"));
15
15
 
16
16
  var packageName = "@atlaskit/select";
17
- var packageVersion = "15.7.2";
17
+ var packageVersion = "15.7.3";
18
18
  var SelectWithoutAnalytics = (0, _createSelect.default)(_reactSelect.default);
19
19
  exports.SelectWithoutAnalytics = SelectWithoutAnalytics;
20
20
  var createAndFireEventOnAtlaskit = (0, _analyticsNext.createAndFireEvent)('atlaskit');
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/select",
3
- "version": "15.7.2",
3
+ "version": "15.7.3",
4
4
  "sideEffects": false
5
5
  }
@@ -71,6 +71,7 @@ export default class PopupSelect extends PureComponent {
71
71
  _defineProperty(this, "defaultOpenState", this.isOpenControlled ? this.props.isOpen : this.props.defaultIsOpen);
72
72
 
73
73
  _defineProperty(this, "state", {
74
+ focusLockEnabled: false,
74
75
  isOpen: (_this$defaultOpenStat = this.defaultOpenState) !== null && _this$defaultOpenStat !== void 0 ? _this$defaultOpenStat : false,
75
76
  mergedComponents: defaultComponents,
76
77
  mergedPopperProps: defaultPopperProps
@@ -135,6 +136,15 @@ export default class PopupSelect extends PureComponent {
135
136
  }
136
137
  });
137
138
 
139
+ _defineProperty(this, "handleFirstPopperUpdate", () => {
140
+ // When the popup opens it's focused into. Since the popup is inside a portal, it's position is
141
+ // initially set to 0,0 - this causes the window scroll position to jump to the top. To prevent
142
+ // this we defer enabling the focus-lock until after Popper has positioned the popup the first time.
143
+ this.setState({
144
+ focusLockEnabled: true
145
+ });
146
+ });
147
+
138
148
  _defineProperty(this, "open", options => {
139
149
  const {
140
150
  onOpen
@@ -194,6 +204,9 @@ export default class PopupSelect extends PureComponent {
194
204
  this.setState({
195
205
  isOpen: false
196
206
  });
207
+ this.setState({
208
+ focusLockEnabled: false
209
+ });
197
210
 
198
211
  if (this.targetRef != null) {
199
212
  this.targetRef.focus();
@@ -286,6 +299,7 @@ export default class PopupSelect extends PureComponent {
286
299
  ...props
287
300
  } = this.props;
288
301
  const {
302
+ focusLockEnabled,
289
303
  isOpen,
290
304
  mergedComponents,
291
305
  mergedPopperProps
@@ -300,7 +314,14 @@ export default class PopupSelect extends PureComponent {
300
314
  return null;
301
315
  }
302
316
 
303
- const popper = /*#__PURE__*/React.createElement(Popper, mergedPopperProps, ({
317
+ const popper = /*#__PURE__*/React.createElement(Popper, _extends({}, mergedPopperProps, {
318
+ onFirstUpdate: state => {
319
+ var _mergedPopperProps$on;
320
+
321
+ this.handleFirstPopperUpdate();
322
+ (_mergedPopperProps$on = mergedPopperProps.onFirstUpdate) === null || _mergedPopperProps$on === void 0 ? void 0 : _mergedPopperProps$on.call(mergedPopperProps, state);
323
+ }
324
+ }), ({
304
325
  placement,
305
326
  ref,
306
327
  style
@@ -314,6 +335,7 @@ export default class PopupSelect extends PureComponent {
314
335
  maxWidth: maxMenuWidth,
315
336
  id: this.popperWrapperId
316
337
  }, /*#__PURE__*/React.createElement(FocusLock, {
338
+ disabled: !focusLockEnabled,
317
339
  returnFocus: true
318
340
  }, /*#__PURE__*/React.createElement(Select, _extends({
319
341
  backspaceRemovesValue: false,
@@ -2,7 +2,7 @@ import Select from 'react-select';
2
2
  import { withAnalyticsEvents, withAnalyticsContext, createAndFireEvent } from '@atlaskit/analytics-next';
3
3
  import createSelect from './createSelect';
4
4
  const packageName = "@atlaskit/select";
5
- const packageVersion = "15.7.2";
5
+ const packageVersion = "15.7.3";
6
6
  export const SelectWithoutAnalytics = createSelect(Select);
7
7
  const createAndFireEventOnAtlaskit = createAndFireEvent('atlaskit');
8
8
  export default withAnalyticsContext({
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/select",
3
- "version": "15.7.2",
3
+ "version": "15.7.3",
4
4
  "sideEffects": false
5
5
  }
@@ -106,6 +106,7 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
106
106
  _defineProperty(_assertThisInitialized(_this), "defaultOpenState", _this.isOpenControlled ? _this.props.isOpen : _this.props.defaultIsOpen);
107
107
 
108
108
  _defineProperty(_assertThisInitialized(_this), "state", {
109
+ focusLockEnabled: false,
109
110
  isOpen: (_this$defaultOpenStat = _this.defaultOpenState) !== null && _this$defaultOpenStat !== void 0 ? _this$defaultOpenStat : false,
110
111
  mergedComponents: defaultComponents,
111
112
  mergedPopperProps: defaultPopperProps
@@ -167,6 +168,15 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
167
168
  }
168
169
  });
169
170
 
171
+ _defineProperty(_assertThisInitialized(_this), "handleFirstPopperUpdate", function () {
172
+ // When the popup opens it's focused into. Since the popup is inside a portal, it's position is
173
+ // initially set to 0,0 - this causes the window scroll position to jump to the top. To prevent
174
+ // this we defer enabling the focus-lock until after Popper has positioned the popup the first time.
175
+ _this.setState({
176
+ focusLockEnabled: true
177
+ });
178
+ });
179
+
170
180
  _defineProperty(_assertThisInitialized(_this), "open", function (options) {
171
181
  var onOpen = _this.props.onOpen;
172
182
 
@@ -225,6 +235,10 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
225
235
  isOpen: false
226
236
  });
227
237
 
238
+ _this.setState({
239
+ focusLockEnabled: false
240
+ });
241
+
228
242
  if (_this.targetRef != null) {
229
243
  _this.targetRef.focus();
230
244
  }
@@ -316,6 +330,7 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
316
330
  props = _objectWithoutProperties(_this$props4, _excluded);
317
331
 
318
332
  var _this$state = _this.state,
333
+ focusLockEnabled = _this$state.focusLockEnabled,
319
334
  isOpen = _this$state.isOpen,
320
335
  mergedComponents = _this$state.mergedComponents,
321
336
  mergedPopperProps = _this$state.mergedPopperProps;
@@ -332,7 +347,15 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
332
347
  return null;
333
348
  }
334
349
 
335
- var popper = /*#__PURE__*/React.createElement(Popper, mergedPopperProps, function (_ref2) {
350
+ var popper = /*#__PURE__*/React.createElement(Popper, _extends({}, mergedPopperProps, {
351
+ onFirstUpdate: function onFirstUpdate(state) {
352
+ var _mergedPopperProps$on;
353
+
354
+ _this.handleFirstPopperUpdate();
355
+
356
+ (_mergedPopperProps$on = mergedPopperProps.onFirstUpdate) === null || _mergedPopperProps$on === void 0 ? void 0 : _mergedPopperProps$on.call(mergedPopperProps, state);
357
+ }
358
+ }), function (_ref2) {
336
359
  var placement = _ref2.placement,
337
360
  ref = _ref2.ref,
338
361
  style = _ref2.style;
@@ -345,6 +368,7 @@ var PopupSelect = /*#__PURE__*/function (_PureComponent) {
345
368
  maxWidth: maxMenuWidth,
346
369
  id: _this.popperWrapperId
347
370
  }, /*#__PURE__*/React.createElement(FocusLock, {
371
+ disabled: !focusLockEnabled,
348
372
  returnFocus: true
349
373
  }, /*#__PURE__*/React.createElement(Select, _extends({
350
374
  backspaceRemovesValue: false,
@@ -2,7 +2,7 @@ import Select from 'react-select';
2
2
  import { withAnalyticsEvents, withAnalyticsContext, createAndFireEvent } from '@atlaskit/analytics-next';
3
3
  import createSelect from './createSelect';
4
4
  var packageName = "@atlaskit/select";
5
- var packageVersion = "15.7.2";
5
+ var packageVersion = "15.7.3";
6
6
  export var SelectWithoutAnalytics = createSelect(Select);
7
7
  var createAndFireEventOnAtlaskit = createAndFireEvent('atlaskit');
8
8
  export default withAnalyticsContext({
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/select",
3
- "version": "15.7.2",
3
+ "version": "15.7.3",
4
4
  "sideEffects": false
5
5
  }
@@ -70,6 +70,7 @@ export interface PopupSelectProps<Option = OptionType, IsMulti extends boolean =
70
70
  isInvalid?: boolean;
71
71
  }
72
72
  interface State<Modifiers = string> {
73
+ focusLockEnabled: boolean;
73
74
  isOpen: boolean;
74
75
  mergedComponents: Object;
75
76
  mergedPopperProps: PopperPropsNoChildren<defaultModifiers | Modifiers>;
@@ -84,6 +85,7 @@ export default class PopupSelect<Option = OptionType, IsMulti extends boolean =
84
85
  isOpenControlled: boolean;
85
86
  defaultOpenState: boolean | undefined;
86
87
  state: {
88
+ focusLockEnabled: boolean;
87
89
  isOpen: boolean;
88
90
  mergedComponents: {
89
91
  Control: React.FC<import("../types").ControlProps<OptionType, boolean>>;
@@ -112,6 +114,7 @@ export default class PopupSelect<Option = OptionType, IsMulti extends boolean =
112
114
  handleKeyDown: (event: KeyboardEvent) => void;
113
115
  handleClick: ({ target }: MouseEvent) => void;
114
116
  handleSelectChange: (value: ValueType<Option, IsMulti>, actionMeta: ActionMeta<Option>) => void;
117
+ handleFirstPopperUpdate: () => void;
115
118
  /**
116
119
  * Opens the popup
117
120
  *
@@ -70,6 +70,7 @@ export interface PopupSelectProps<Option = OptionType, IsMulti extends boolean =
70
70
  isInvalid?: boolean;
71
71
  }
72
72
  interface State<Modifiers = string> {
73
+ focusLockEnabled: boolean;
73
74
  isOpen: boolean;
74
75
  mergedComponents: Object;
75
76
  mergedPopperProps: PopperPropsNoChildren<defaultModifiers | Modifiers>;
@@ -84,6 +85,7 @@ export default class PopupSelect<Option = OptionType, IsMulti extends boolean =
84
85
  isOpenControlled: boolean;
85
86
  defaultOpenState: boolean | undefined;
86
87
  state: {
88
+ focusLockEnabled: boolean;
87
89
  isOpen: boolean;
88
90
  mergedComponents: {
89
91
  Control: React.FC<import("../types").ControlProps<OptionType, boolean>>;
@@ -112,6 +114,7 @@ export default class PopupSelect<Option = OptionType, IsMulti extends boolean =
112
114
  handleKeyDown: (event: KeyboardEvent) => void;
113
115
  handleClick: ({ target }: MouseEvent) => void;
114
116
  handleSelectChange: (value: ValueType<Option, IsMulti>, actionMeta: ActionMeta<Option>) => void;
117
+ handleFirstPopperUpdate: () => void;
115
118
  /**
116
119
  * Opens the popup
117
120
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/select",
3
- "version": "15.7.2",
3
+ "version": "15.7.3",
4
4
  "description": "Select allows users to make a single selection or multiple selections from a list of options.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"