@atlaskit/react-select 2.0.7 → 2.1.0

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,18 @@
1
1
  # @atlaskit/react-select
2
2
 
3
+ ## 2.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#135853](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/135853)
8
+ [`37d9e41733fc5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/37d9e41733fc5) -
9
+ Select components now sync with the experimental open layer observer, using the
10
+ useNotifyOpenLayerObserver hook.
11
+
12
+ This is used to close any open select menus when page layout slots are resized.
13
+
14
+ These changes are behind feature flags.
15
+
3
16
  ## 2.0.7
4
17
 
5
18
  ### Patch Changes
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NotifyOpenLayerObserver = NotifyOpenLayerObserver;
7
+ var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
8
+ /**
9
+ * Functional component wrapper around `useNotifyOpenLayerObserver`.
10
+ *
11
+ * This is needed as Select is a class component, which cannot use hooks directly.
12
+ */
13
+ function NotifyOpenLayerObserver(_ref) {
14
+ var isOpen = _ref.isOpen,
15
+ onClose = _ref.onClose;
16
+ (0, _openLayerObserver.useNotifyOpenLayerObserver)({
17
+ isOpen: isOpen,
18
+ onClose: onClose
19
+ });
20
+ return null;
21
+ }
@@ -21,6 +21,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
21
21
  var _builtins = require("./builtins");
22
22
  var _components = require("./components");
23
23
  var _internal = require("./components/internal");
24
+ var _notifyOpenLayerObserver = require("./components/internal/notify-open-layer-observer");
24
25
  var _liveRegion = _interopRequireDefault(require("./components/live-region"));
25
26
  var _menu = require("./components/menu");
26
27
  var _filters = require("./filters");
@@ -826,6 +827,12 @@ var Select = exports.default = /*#__PURE__*/function (_Component) {
826
827
  }
827
828
  event.preventDefault();
828
829
  });
830
+ (0, _defineProperty2.default)(_this, "handleOpenLayerObserverCloseSignal", function () {
831
+ if (!(0, _platformFeatureFlags.fg)('platform_dst_layer_observer_select')) {
832
+ return;
833
+ }
834
+ _this.onMenuClose();
835
+ });
829
836
  _this.state.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);
830
837
  _this.state.selectValue = (0, _utils.cleanValue)(_props.value);
831
838
  // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen)
@@ -1831,7 +1838,10 @@ var Select = exports.default = /*#__PURE__*/function (_Component) {
1831
1838
  innerProps: _objectSpread({}, testId && {
1832
1839
  'data-testid': "".concat(testId, "-select--indicators-container")
1833
1840
  })
1834
- }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());
1841
+ }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField(), /*#__PURE__*/_react.default.createElement(_notifyOpenLayerObserver.NotifyOpenLayerObserver, {
1842
+ isOpen: (0, _platformFeatureFlags.fg)('platform_dst_layer_observer_select') && this.props.menuIsOpen,
1843
+ onClose: this.handleOpenLayerObserverCloseSignal
1844
+ }));
1835
1845
  }
1836
1846
  }], [{
1837
1847
  key: "getDerivedStateFromProps",
@@ -0,0 +1,16 @@
1
+ import { useNotifyOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
2
+ /**
3
+ * Functional component wrapper around `useNotifyOpenLayerObserver`.
4
+ *
5
+ * This is needed as Select is a class component, which cannot use hooks directly.
6
+ */
7
+ export function NotifyOpenLayerObserver({
8
+ isOpen,
9
+ onClose
10
+ }) {
11
+ useNotifyOpenLayerObserver({
12
+ isOpen,
13
+ onClose
14
+ });
15
+ return null;
16
+ }
@@ -7,6 +7,7 @@ import { fg } from '@atlaskit/platform-feature-flags';
7
7
  import { formatGroupLabel as formatGroupLabelBuiltin, getOptionLabel as getOptionLabelBuiltin, getOptionValue as getOptionValueBuiltin, isOptionDisabled as isOptionDisabledBuiltin } from './builtins';
8
8
  import { defaultComponents } from './components';
9
9
  import { DummyInput, RequiredInput, ScrollManager } from './components/internal';
10
+ import { NotifyOpenLayerObserver } from './components/internal/notify-open-layer-observer';
10
11
  import LiveRegion from './components/live-region';
11
12
  import { MenuPlacer } from './components/menu';
12
13
  import { createFilter } from './filters';
@@ -802,6 +803,12 @@ export default class Select extends Component {
802
803
  }
803
804
  event.preventDefault();
804
805
  });
806
+ _defineProperty(this, "handleOpenLayerObserverCloseSignal", () => {
807
+ if (!fg('platform_dst_layer_observer_select')) {
808
+ return;
809
+ }
810
+ this.onMenuClose();
811
+ });
805
812
  this.state.instancePrefix = 'react-select-' + (this.props.instanceId || ++instanceId);
806
813
  this.state.selectValue = cleanValue(_props.value);
807
814
  // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen)
@@ -1867,7 +1874,10 @@ export default class Select extends Component {
1867
1874
  'data-testid': `${testId}-select--indicators-container`
1868
1875
  })
1869
1876
  }
1870
- }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());
1877
+ }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField(), /*#__PURE__*/React.createElement(NotifyOpenLayerObserver, {
1878
+ isOpen: fg('platform_dst_layer_observer_select') && this.props.menuIsOpen,
1879
+ onClose: this.handleOpenLayerObserverCloseSignal
1880
+ }));
1871
1881
  }
1872
1882
  }
1873
1883
  _defineProperty(Select, "defaultProps", defaultProps);
@@ -0,0 +1,15 @@
1
+ import { useNotifyOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
2
+ /**
3
+ * Functional component wrapper around `useNotifyOpenLayerObserver`.
4
+ *
5
+ * This is needed as Select is a class component, which cannot use hooks directly.
6
+ */
7
+ export function NotifyOpenLayerObserver(_ref) {
8
+ var isOpen = _ref.isOpen,
9
+ onClose = _ref.onClose;
10
+ useNotifyOpenLayerObserver({
11
+ isOpen: isOpen,
12
+ onClose: onClose
13
+ });
14
+ return null;
15
+ }
@@ -18,6 +18,7 @@ import { fg } from '@atlaskit/platform-feature-flags';
18
18
  import { formatGroupLabel as formatGroupLabelBuiltin, getOptionLabel as getOptionLabelBuiltin, getOptionValue as getOptionValueBuiltin, isOptionDisabled as isOptionDisabledBuiltin } from './builtins';
19
19
  import { defaultComponents } from './components';
20
20
  import { DummyInput, RequiredInput, ScrollManager } from './components/internal';
21
+ import { NotifyOpenLayerObserver } from './components/internal/notify-open-layer-observer';
21
22
  import LiveRegion from './components/live-region';
22
23
  import { MenuPlacer } from './components/menu';
23
24
  import { createFilter } from './filters';
@@ -817,6 +818,12 @@ var Select = /*#__PURE__*/function (_Component) {
817
818
  }
818
819
  event.preventDefault();
819
820
  });
821
+ _defineProperty(_this, "handleOpenLayerObserverCloseSignal", function () {
822
+ if (!fg('platform_dst_layer_observer_select')) {
823
+ return;
824
+ }
825
+ _this.onMenuClose();
826
+ });
820
827
  _this.state.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);
821
828
  _this.state.selectValue = cleanValue(_props.value);
822
829
  // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen)
@@ -1822,7 +1829,10 @@ var Select = /*#__PURE__*/function (_Component) {
1822
1829
  innerProps: _objectSpread({}, testId && {
1823
1830
  'data-testid': "".concat(testId, "-select--indicators-container")
1824
1831
  })
1825
- }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());
1832
+ }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField(), /*#__PURE__*/React.createElement(NotifyOpenLayerObserver, {
1833
+ isOpen: fg('platform_dst_layer_observer_select') && this.props.menuIsOpen,
1834
+ onClose: this.handleOpenLayerObserverCloseSignal
1835
+ }));
1826
1836
  }
1827
1837
  }], [{
1828
1838
  key: "getDerivedStateFromProps",
@@ -0,0 +1,9 @@
1
+ import { useNotifyOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
2
+ type NotifyOpenLayerObserverProps = Parameters<typeof useNotifyOpenLayerObserver>[0];
3
+ /**
4
+ * Functional component wrapper around `useNotifyOpenLayerObserver`.
5
+ *
6
+ * This is needed as Select is a class component, which cannot use hooks directly.
7
+ */
8
+ export declare function NotifyOpenLayerObserver({ isOpen, onClose }: NotifyOpenLayerObserverProps): null;
9
+ export {};
@@ -694,6 +694,7 @@ export default class Select<Option = unknown, IsMulti extends boolean = false, G
694
694
  renderFormField(): React.JSX.Element | undefined;
695
695
  renderLiveRegion(): React.JSX.Element;
696
696
  renderMultiselectMessage(): React.JSX.Element;
697
+ handleOpenLayerObserverCloseSignal: () => void;
697
698
  render(): React.JSX.Element;
698
699
  }
699
700
  export type PublicBaseSelectProps<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = JSX.LibraryManagedAttributes<typeof Select, SelectProps<Option, IsMulti, Group>>;
@@ -0,0 +1,9 @@
1
+ import { useNotifyOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
2
+ type NotifyOpenLayerObserverProps = Parameters<typeof useNotifyOpenLayerObserver>[0];
3
+ /**
4
+ * Functional component wrapper around `useNotifyOpenLayerObserver`.
5
+ *
6
+ * This is needed as Select is a class component, which cannot use hooks directly.
7
+ */
8
+ export declare function NotifyOpenLayerObserver({ isOpen, onClose }: NotifyOpenLayerObserverProps): null;
9
+ export {};
@@ -694,6 +694,7 @@ export default class Select<Option = unknown, IsMulti extends boolean = false, G
694
694
  renderFormField(): React.JSX.Element | undefined;
695
695
  renderLiveRegion(): React.JSX.Element;
696
696
  renderMultiselectMessage(): React.JSX.Element;
697
+ handleOpenLayerObserverCloseSignal: () => void;
697
698
  render(): React.JSX.Element;
698
699
  }
699
700
  export type PublicBaseSelectProps<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = JSX.LibraryManagedAttributes<typeof Select, SelectProps<Option, IsMulti, Group>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-select",
3
- "version": "2.0.7",
3
+ "version": "2.1.0",
4
4
  "description": "A forked version of react-select to only be used in atlaskit/select",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -30,11 +30,12 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@atlaskit/ds-lib": "^4.0.0",
33
- "@atlaskit/icon": "^25.1.0",
33
+ "@atlaskit/icon": "^25.5.0",
34
+ "@atlaskit/layering": "^2.1.0",
34
35
  "@atlaskit/platform-feature-flags": "^1.1.0",
35
- "@atlaskit/primitives": "^14.2.0",
36
+ "@atlaskit/primitives": "^14.3.0",
36
37
  "@atlaskit/spinner": "^18.0.0",
37
- "@atlaskit/tokens": "^4.5.0",
38
+ "@atlaskit/tokens": "^4.6.0",
38
39
  "@babel/runtime": "^7.0.0",
39
40
  "@emotion/react": "^11.7.1",
40
41
  "@floating-ui/dom": "^1.0.1",
@@ -69,6 +70,9 @@
69
70
  },
70
71
  "platform-visual-refresh-icons-legacy-facade": {
71
72
  "type": "boolean"
73
+ },
74
+ "platform_dst_layer_observer_select": {
75
+ "type": "boolean"
72
76
  }
73
77
  },
74
78
  "techstack": {