@atlaskit/user-picker 10.24.1 → 10.25.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cjs/analytics.js +1 -1
  3. package/dist/cjs/components/BaseUserPicker.js +2 -0
  4. package/dist/cjs/components/ClearIndicator.js +1 -0
  5. package/dist/cjs/components/Input.js +1 -0
  6. package/dist/cjs/components/MultiValueContainer.js +2 -0
  7. package/dist/cjs/components/SingleValueContainer.js +1 -0
  8. package/dist/cjs/components/UserPicker.js +1 -1
  9. package/dist/cjs/components/styles.js +3 -3
  10. package/dist/es2019/analytics.js +1 -1
  11. package/dist/es2019/components/BaseUserPicker.js +2 -0
  12. package/dist/es2019/components/ClearIndicator.js +2 -0
  13. package/dist/es2019/components/Input.js +1 -0
  14. package/dist/es2019/components/MultiValueContainer.js +3 -0
  15. package/dist/es2019/components/PopupControl.js +1 -0
  16. package/dist/es2019/components/SingleValue.js +1 -0
  17. package/dist/es2019/components/SingleValueContainer.js +2 -0
  18. package/dist/es2019/components/UserPicker.js +1 -1
  19. package/dist/es2019/components/styles.js +3 -3
  20. package/dist/esm/analytics.js +1 -1
  21. package/dist/esm/components/BaseUserPicker.js +2 -0
  22. package/dist/esm/components/ClearIndicator.js +1 -0
  23. package/dist/esm/components/Input.js +1 -0
  24. package/dist/esm/components/MultiValueContainer.js +2 -0
  25. package/dist/esm/components/SingleValueContainer.js +1 -0
  26. package/dist/esm/components/UserPicker.js +1 -1
  27. package/dist/esm/components/styles.js +3 -3
  28. package/dist/types/components/BaseUserPicker.d.ts +1 -1
  29. package/dist/types/components/PopupUserPicker.d.ts +1 -1
  30. package/dist/types/components/UserPicker.d.ts +1 -1
  31. package/dist/types/components/styles.d.ts +1 -1
  32. package/dist/types/types.d.ts +2 -0
  33. package/dist/types-ts4.5/components/BaseUserPicker.d.ts +1 -1
  34. package/dist/types-ts4.5/components/PopupUserPicker.d.ts +1 -1
  35. package/dist/types-ts4.5/components/UserPicker.d.ts +1 -1
  36. package/dist/types-ts4.5/components/styles.d.ts +1 -1
  37. package/dist/types-ts4.5/types.d.ts +2 -0
  38. package/package.json +13 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @atlaskit/user-picker
2
2
 
3
+ ## 10.25.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#148732](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/148732)
8
+ [`9391607579cb6`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/9391607579cb6) -
9
+ UserPicker component updated to accept isInvalid prop, and display invalid state styles when the
10
+ prop is set to true
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies
15
+
16
+ ## 10.24.2
17
+
18
+ ### Patch Changes
19
+
20
+ - [#143559](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/143559)
21
+ [`56dfbfe361f96`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/56dfbfe361f96) -
22
+ Upgrade react-select from 5.4 to 5.8 and replace it with internal atlaskit/react-select
23
+ - [#143559](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/143559)
24
+ [`56dfbfe361f96`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/56dfbfe361f96) -
25
+ Upgrade react-select from 5.4 to 5.8 and replace it with internal atlaskit/react-select
26
+ - Updated dependencies
27
+
3
28
  ## 10.24.1
4
29
 
5
30
  ### Patch Changes
@@ -12,7 +12,7 @@ var _utils = require("./components/utils");
12
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
13
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
14
  var packageName = "@atlaskit/user-picker";
15
- var packageVersion = "10.24.1";
15
+ var packageVersion = "10.25.0";
16
16
  var UUID_REGEXP_TEAMS_GROUPS = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
17
17
  var UUID_REGEXP_OLD_AAID = /^[a-fA-F0-9]{1,8}:[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
18
18
  var UUID_REGEXP_NEW_AAID = /^[a-fA-F0-9]{24,24}$/;
@@ -474,6 +474,7 @@ var BaseUserPickerWithoutAnalytics = exports.BaseUserPickerWithoutAnalytics = /*
474
474
  placeholder = _this$props4.placeholder,
475
475
  isClearable = _this$props4.isClearable,
476
476
  isDisabled = _this$props4.isDisabled,
477
+ isInvalid = _this$props4.isInvalid,
477
478
  clearValueLabel = _this$props4.clearValueLabel,
478
479
  menuMinWidth = _this$props4.menuMinWidth,
479
480
  menuPortalTarget = _this$props4.menuPortalTarget,
@@ -548,6 +549,7 @@ var BaseUserPickerWithoutAnalytics = exports.BaseUserPickerWithoutAnalytics = /*
548
549
  },
549
550
  footer: footer,
550
551
  isDisabled: isDisabled,
552
+ isInvalid: isInvalid,
551
553
  isFocused: menuIsOpen,
552
554
  backspaceRemovesValue: isMulti,
553
555
  filterOption: null // disable local filtering
@@ -50,6 +50,7 @@ var ClearIndicator = exports.ClearIndicator = /*#__PURE__*/function (_React$Pure
50
50
  clearValue = _this$props.clearValue,
51
51
  selectProps = _this$props.selectProps;
52
52
  clearValue();
53
+ //@ts-ignore react-select unsupported props
53
54
  if (selectProps && !selectProps.isFocused) {
54
55
  event.stopPropagation();
55
56
  }
@@ -34,6 +34,7 @@ var Input = exports.Input = /*#__PURE__*/function (_React$Component) {
34
34
  if (e.key === 'Enter') {
35
35
  e.preventDefault();
36
36
  }
37
+ //@ts-ignore react-select unsupported props
37
38
  if ((_this$props$selectPro = _this.props.selectProps) !== null && _this$props$selectPro !== void 0 && _this$props$selectPro.disableInput) {
38
39
  e.preventDefault();
39
40
  }
@@ -81,6 +81,7 @@ var MultiValueContainer = exports.MultiValueContainer = /*#__PURE__*/function (_
81
81
  }
82
82
  return _this.addPlaceholder(addMoreMessage);
83
83
  });
84
+ //@ts-ignore react-select unsupported props
84
85
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onValueContainerClick", _this.props.selectProps.onValueContainerClick);
85
86
  _this.state = {
86
87
  valueSize: 0,
@@ -97,6 +98,7 @@ var MultiValueContainer = exports.MultiValueContainer = /*#__PURE__*/function (_
97
98
  var _this$state = this.state,
98
99
  previousValueSize = _this$state.previousValueSize,
99
100
  valueSize = _this$state.valueSize;
101
+ //@ts-ignore react-select unsupported props
100
102
  var isFocused = this.props.selectProps.isFocused;
101
103
  if (valueSize > previousValueSize && isFocused) {
102
104
  if (this.timeoutId) {
@@ -62,6 +62,7 @@ var SingleValueContainer = exports.SingleValueContainer = /*#__PURE__*/function
62
62
  }
63
63
  return null;
64
64
  });
65
+ //@ts-ignore react-select unsupported props
65
66
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onValueContainerClick", _this.props.selectProps.onValueContainerClick);
66
67
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "Wrapper", function (_ref) {
67
68
  var children = _ref.children;
@@ -95,7 +95,7 @@ var UserPickerWithoutAnalytics = exports.UserPickerWithoutAnalytics = /*#__PURE_
95
95
  SelectComponent: SelectComponent
96
96
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
97
97
  ,
98
- styles: (0, _styles.getStyles)(width, isMulti, this.props.appearance === 'compact', this.props.styles),
98
+ styles: (0, _styles.getStyles)(width, isMulti, this.props.appearance === 'compact', this.props.styles, this.props.isInvalid),
99
99
  components: (0, _components.getComponents)(isMulti, anchor),
100
100
  pickerProps: pickerProps
101
101
  })))));
@@ -17,7 +17,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
17
17
  var BORDER_PADDING = exports.BORDER_PADDING = "var(--ds-space-075, 6px)";
18
18
  var AVATAR_PADDING = exports.AVATAR_PADDING = 6;
19
19
  var INDICATOR_WIDTH = exports.INDICATOR_WIDTH = 39;
20
- var getStyles = exports.getStyles = (0, _memoizeOne.default)(function (width, isMulti, isCompact, overrideStyles) {
20
+ var getStyles = exports.getStyles = (0, _memoizeOne.default)(function (width, isMulti, isCompact, overrideStyles, isInvalid) {
21
21
  var styles = {
22
22
  menu: function menu(css, state) {
23
23
  return _objectSpread(_objectSpread({}, css), {}, {
@@ -35,13 +35,13 @@ var getStyles = exports.getStyles = (0, _memoizeOne.default)(function (width, is
35
35
  var isMulti = state.selectProps.isMulti;
36
36
  return _objectSpread(_objectSpread({}, css), {}, {
37
37
  width: width,
38
- borderColor: state.isFocused ? "var(--ds-border-focused, ".concat(css.borderColor, ")") : state.selectProps.subtle || state.selectProps.noBorder ? 'transparent' : "var(--ds-border-input, ".concat(_colors.N90, ")"),
38
+ borderColor: isInvalid ? "var(--ds-border-danger, ".concat(_colors.R400, ")") : state.isFocused ? "var(--ds-border-focused, ".concat(css.borderColor, ")") : state.selectProps.subtle || state.selectProps.noBorder ? 'transparent' : "var(--ds-border-input, ".concat(_colors.N90, ")"),
39
39
  backgroundColor: state.isFocused ? "var(--ds-background-input, ".concat(css['backgroundColor'], ")") : state.selectProps.subtle ? 'transparent' : state.selectProps.textFieldBackgroundColor ? "var(--ds-background-input, ".concat(_colors.N10, ")") : "var(--ds-background-input, ".concat(_colors.N20, ")"),
40
40
  '&:hover .fabric-user-picker__clear-indicator': {
41
41
  opacity: 1
42
42
  },
43
43
  ':hover': _objectSpread(_objectSpread({}, css[':hover']), {}, {
44
- borderColor: state.isFocused ? css[':hover'] ? "var(--ds-border-focused, ".concat(css[':hover'].borderColor, ")") : "var(--ds-border-focused, ".concat(_colors.B100, ")") : state.selectProps.subtle ? 'transparent' : "var(--ds-border-input, ".concat(_colors.N90, ")"),
44
+ borderColor: isInvalid ? "var(--ds-border-danger, ".concat(_colors.R400, ")") : state.isFocused ? css[':hover'] ? "var(--ds-border-focused, ".concat(css[':hover'].borderColor, ")") : "var(--ds-border-focused, ".concat(_colors.B100, ")") : state.selectProps.subtle ? 'transparent' : "var(--ds-border-input, ".concat(_colors.N90, ")"),
45
45
  backgroundColor: state.selectProps.subtle && state.selectProps.hoveringClearIndicator ? "var(--ds-background-danger, ".concat(_colors.R50, ")") : state.isFocused ? css[':hover'] ? "var(--ds-background-input, ".concat(css[':hover'].backgroundColor, ")") : "var(--ds-background-input, ".concat(_colors.N0, ")") : state.isDisabled ? "var(--ds-background-disabled, ".concat(_colors.N10, ")") : "var(--ds-background-input-hovered, ".concat(_colors.N30, ")")
46
46
  }),
47
47
  padding: 0,
@@ -2,7 +2,7 @@ import { createAndFireEvent } from '@atlaskit/analytics-next';
2
2
  import { v4 as uuidv4 } from 'uuid';
3
3
  import { isCustom, isExternalUser } from './components/utils';
4
4
  const packageName = "@atlaskit/user-picker";
5
- const packageVersion = "10.24.1";
5
+ const packageVersion = "10.25.0";
6
6
  const UUID_REGEXP_TEAMS_GROUPS = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
7
7
  const UUID_REGEXP_OLD_AAID = /^[a-fA-F0-9]{1,8}:[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
8
8
  const UUID_REGEXP_NEW_AAID = /^[a-fA-F0-9]{24,24}$/;
@@ -450,6 +450,7 @@ export class BaseUserPickerWithoutAnalytics extends React.Component {
450
450
  placeholder,
451
451
  isClearable,
452
452
  isDisabled,
453
+ isInvalid,
453
454
  clearValueLabel,
454
455
  menuMinWidth,
455
456
  menuPortalTarget,
@@ -526,6 +527,7 @@ export class BaseUserPickerWithoutAnalytics extends React.Component {
526
527
  noOptionsMessage: showError ? loadOptionsErrorMessage : typeof noOptionsMessage === 'function' ? noOptionsMessage : () => noOptionsMessage,
527
528
  footer: footer,
528
529
  isDisabled: isDisabled,
530
+ isInvalid: isInvalid,
529
531
  isFocused: menuIsOpen,
530
532
  backspaceRemovesValue: isMulti,
531
533
  filterOption: null // disable local filtering
@@ -20,6 +20,7 @@ export class ClearIndicator extends React.PureComponent {
20
20
  selectProps
21
21
  } = this.props;
22
22
  clearValue();
23
+ //@ts-ignore react-select unsupported props
23
24
  if (selectProps && !selectProps.isFocused) {
24
25
  event.stopPropagation();
25
26
  }
@@ -27,6 +28,7 @@ export class ClearIndicator extends React.PureComponent {
27
28
  }
28
29
  render() {
29
30
  const {
31
+ //@ts-ignore react-select unsupported props
30
32
  selectProps: {
31
33
  clearValueLabel
32
34
  }
@@ -12,6 +12,7 @@ export class Input extends React.Component {
12
12
  if (e.key === 'Enter') {
13
13
  e.preventDefault();
14
14
  }
15
+ //@ts-ignore react-select unsupported props
15
16
  if ((_this$props$selectPro = this.props.selectProps) !== null && _this$props$selectPro !== void 0 && _this$props$selectPro.disableInput) {
16
17
  e.preventDefault();
17
18
  }
@@ -48,6 +48,7 @@ export class MultiValueContainer extends React.PureComponent {
48
48
  });
49
49
  _defineProperty(this, "renderChildren", () => {
50
50
  const {
51
+ //@ts-ignore react-select unsupported props
51
52
  selectProps: {
52
53
  addMoreMessage,
53
54
  isDisabled
@@ -70,6 +71,7 @@ export class MultiValueContainer extends React.PureComponent {
70
71
  }
71
72
  return this.addPlaceholder(addMoreMessage);
72
73
  });
74
+ //@ts-ignore react-select unsupported props
73
75
  _defineProperty(this, "onValueContainerClick", this.props.selectProps.onValueContainerClick);
74
76
  this.state = {
75
77
  valueSize: 0,
@@ -84,6 +86,7 @@ export class MultiValueContainer extends React.PureComponent {
84
86
  previousValueSize,
85
87
  valueSize
86
88
  } = this.state;
89
+ //@ts-ignore react-select unsupported props
87
90
  const {
88
91
  isFocused
89
92
  } = this.props.selectProps;
@@ -30,6 +30,7 @@ const getLabelStyle = () => css({
30
30
  export class PopupControl extends React.PureComponent {
31
31
  render() {
32
32
  const {
33
+ //@ts-ignore react-select unsupported props
33
34
  selectProps: {
34
35
  popupTitle
35
36
  }
@@ -33,6 +33,7 @@ export const SingleValue = props => {
33
33
  label,
34
34
  data
35
35
  },
36
+ //@ts-ignore react-select unsupported props
36
37
  selectProps: {
37
38
  appearance,
38
39
  isFocused
@@ -23,6 +23,7 @@ export class SingleValueContainer extends React.Component {
23
23
  _defineProperty(this, "renderAvatar", () => {
24
24
  const {
25
25
  hasValue,
26
+ //@ts-ignore react-select unsupported props
26
27
  selectProps: {
27
28
  appearance,
28
29
  isFocused,
@@ -40,6 +41,7 @@ export class SingleValueContainer extends React.Component {
40
41
  }
41
42
  return null;
42
43
  });
44
+ //@ts-ignore react-select unsupported props
43
45
  _defineProperty(this, "onValueContainerClick", this.props.selectProps.onValueContainerClick);
44
46
  _defineProperty(this, "Wrapper", ({
45
47
  children
@@ -71,7 +71,7 @@ export class UserPickerWithoutAnalytics extends React.Component {
71
71
  SelectComponent: SelectComponent
72
72
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
73
73
  ,
74
- styles: getStyles(width, isMulti, this.props.appearance === 'compact', this.props.styles),
74
+ styles: getStyles(width, isMulti, this.props.appearance === 'compact', this.props.styles, this.props.isInvalid),
75
75
  components: getComponents(isMulti, anchor),
76
76
  pickerProps: pickerProps
77
77
  })))));
@@ -4,7 +4,7 @@ import { mergeStyles } from '@atlaskit/select';
4
4
  export const BORDER_PADDING = "var(--ds-space-075, 6px)";
5
5
  export const AVATAR_PADDING = 6;
6
6
  export const INDICATOR_WIDTH = 39;
7
- export const getStyles = memoizeOne((width, isMulti, isCompact, overrideStyles) => {
7
+ export const getStyles = memoizeOne((width, isMulti, isCompact, overrideStyles, isInvalid) => {
8
8
  let styles = {
9
9
  menu: (css, state) => ({
10
10
  ...css,
@@ -21,14 +21,14 @@ export const getStyles = memoizeOne((width, isMulti, isCompact, overrideStyles)
21
21
  return {
22
22
  ...css,
23
23
  width,
24
- borderColor: state.isFocused ? `var(--ds-border-focused, ${css.borderColor})` : state.selectProps.subtle || state.selectProps.noBorder ? 'transparent' : `var(--ds-border-input, ${N90})`,
24
+ borderColor: isInvalid ? `var(--ds-border-danger, ${R400})` : state.isFocused ? `var(--ds-border-focused, ${css.borderColor})` : state.selectProps.subtle || state.selectProps.noBorder ? 'transparent' : `var(--ds-border-input, ${N90})`,
25
25
  backgroundColor: state.isFocused ? `var(--ds-background-input, ${css['backgroundColor']})` : state.selectProps.subtle ? 'transparent' : state.selectProps.textFieldBackgroundColor ? `var(--ds-background-input, ${N10})` : `var(--ds-background-input, ${N20})`,
26
26
  '&:hover .fabric-user-picker__clear-indicator': {
27
27
  opacity: 1
28
28
  },
29
29
  ':hover': {
30
30
  ...css[':hover'],
31
- borderColor: state.isFocused ? css[':hover'] ? `var(--ds-border-focused, ${css[':hover'].borderColor})` : `var(--ds-border-focused, ${B100})` : state.selectProps.subtle ? 'transparent' : `var(--ds-border-input, ${N90})`,
31
+ borderColor: isInvalid ? `var(--ds-border-danger, ${R400})` : state.isFocused ? css[':hover'] ? `var(--ds-border-focused, ${css[':hover'].borderColor})` : `var(--ds-border-focused, ${B100})` : state.selectProps.subtle ? 'transparent' : `var(--ds-border-input, ${N90})`,
32
32
  backgroundColor: state.selectProps.subtle && state.selectProps.hoveringClearIndicator ? `var(--ds-background-danger, ${R50})` : state.isFocused ? css[':hover'] ? `var(--ds-background-input, ${css[':hover'].backgroundColor})` : `var(--ds-background-input, ${N0})` : state.isDisabled ? `var(--ds-background-disabled, ${N10})` : `var(--ds-background-input-hovered, ${N30})`
33
33
  },
34
34
  padding: 0,
@@ -5,7 +5,7 @@ import { createAndFireEvent } from '@atlaskit/analytics-next';
5
5
  import { v4 as uuidv4 } from 'uuid';
6
6
  import { isCustom, isExternalUser } from './components/utils';
7
7
  var packageName = "@atlaskit/user-picker";
8
- var packageVersion = "10.24.1";
8
+ var packageVersion = "10.25.0";
9
9
  var UUID_REGEXP_TEAMS_GROUPS = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
10
10
  var UUID_REGEXP_OLD_AAID = /^[a-fA-F0-9]{1,8}:[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
11
11
  var UUID_REGEXP_NEW_AAID = /^[a-fA-F0-9]{24,24}$/;
@@ -467,6 +467,7 @@ export var BaseUserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Compon
467
467
  placeholder = _this$props4.placeholder,
468
468
  isClearable = _this$props4.isClearable,
469
469
  isDisabled = _this$props4.isDisabled,
470
+ isInvalid = _this$props4.isInvalid,
470
471
  clearValueLabel = _this$props4.clearValueLabel,
471
472
  menuMinWidth = _this$props4.menuMinWidth,
472
473
  menuPortalTarget = _this$props4.menuPortalTarget,
@@ -541,6 +542,7 @@ export var BaseUserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Compon
541
542
  },
542
543
  footer: footer,
543
544
  isDisabled: isDisabled,
545
+ isInvalid: isInvalid,
544
546
  isFocused: menuIsOpen,
545
547
  backspaceRemovesValue: isMulti,
546
548
  filterOption: null // disable local filtering
@@ -38,6 +38,7 @@ export var ClearIndicator = /*#__PURE__*/function (_React$PureComponent) {
38
38
  clearValue = _this$props.clearValue,
39
39
  selectProps = _this$props.selectProps;
40
40
  clearValue();
41
+ //@ts-ignore react-select unsupported props
41
42
  if (selectProps && !selectProps.isFocused) {
42
43
  event.stopPropagation();
43
44
  }
@@ -27,6 +27,7 @@ export var Input = /*#__PURE__*/function (_React$Component) {
27
27
  if (e.key === 'Enter') {
28
28
  e.preventDefault();
29
29
  }
30
+ //@ts-ignore react-select unsupported props
30
31
  if ((_this$props$selectPro = _this.props.selectProps) !== null && _this$props$selectPro !== void 0 && _this$props$selectPro.disableInput) {
31
32
  e.preventDefault();
32
33
  }
@@ -71,6 +71,7 @@ export var MultiValueContainer = /*#__PURE__*/function (_React$PureComponent) {
71
71
  }
72
72
  return _this.addPlaceholder(addMoreMessage);
73
73
  });
74
+ //@ts-ignore react-select unsupported props
74
75
  _defineProperty(_assertThisInitialized(_this), "onValueContainerClick", _this.props.selectProps.onValueContainerClick);
75
76
  _this.state = {
76
77
  valueSize: 0,
@@ -87,6 +88,7 @@ export var MultiValueContainer = /*#__PURE__*/function (_React$PureComponent) {
87
88
  var _this$state = this.state,
88
89
  previousValueSize = _this$state.previousValueSize,
89
90
  valueSize = _this$state.valueSize;
91
+ //@ts-ignore react-select unsupported props
90
92
  var isFocused = this.props.selectProps.isFocused;
91
93
  if (valueSize > previousValueSize && isFocused) {
92
94
  if (this.timeoutId) {
@@ -57,6 +57,7 @@ export var SingleValueContainer = /*#__PURE__*/function (_React$Component) {
57
57
  }
58
58
  return null;
59
59
  });
60
+ //@ts-ignore react-select unsupported props
60
61
  _defineProperty(_assertThisInitialized(_this), "onValueContainerClick", _this.props.selectProps.onValueContainerClick);
61
62
  _defineProperty(_assertThisInitialized(_this), "Wrapper", function (_ref) {
62
63
  var children = _ref.children;
@@ -85,7 +85,7 @@ export var UserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Component)
85
85
  SelectComponent: SelectComponent
86
86
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
87
87
  ,
88
- styles: getStyles(width, isMulti, this.props.appearance === 'compact', this.props.styles),
88
+ styles: getStyles(width, isMulti, this.props.appearance === 'compact', this.props.styles, this.props.isInvalid),
89
89
  components: getComponents(isMulti, anchor),
90
90
  pickerProps: pickerProps
91
91
  })))));
@@ -10,7 +10,7 @@ import { mergeStyles } from '@atlaskit/select';
10
10
  export var BORDER_PADDING = "var(--ds-space-075, 6px)";
11
11
  export var AVATAR_PADDING = 6;
12
12
  export var INDICATOR_WIDTH = 39;
13
- export var getStyles = memoizeOne(function (width, isMulti, isCompact, overrideStyles) {
13
+ export var getStyles = memoizeOne(function (width, isMulti, isCompact, overrideStyles, isInvalid) {
14
14
  var styles = {
15
15
  menu: function menu(css, state) {
16
16
  return _objectSpread(_objectSpread({}, css), {}, {
@@ -28,13 +28,13 @@ export var getStyles = memoizeOne(function (width, isMulti, isCompact, overrideS
28
28
  var isMulti = state.selectProps.isMulti;
29
29
  return _objectSpread(_objectSpread({}, css), {}, {
30
30
  width: width,
31
- borderColor: state.isFocused ? "var(--ds-border-focused, ".concat(css.borderColor, ")") : state.selectProps.subtle || state.selectProps.noBorder ? 'transparent' : "var(--ds-border-input, ".concat(N90, ")"),
31
+ borderColor: isInvalid ? "var(--ds-border-danger, ".concat(R400, ")") : state.isFocused ? "var(--ds-border-focused, ".concat(css.borderColor, ")") : state.selectProps.subtle || state.selectProps.noBorder ? 'transparent' : "var(--ds-border-input, ".concat(N90, ")"),
32
32
  backgroundColor: state.isFocused ? "var(--ds-background-input, ".concat(css['backgroundColor'], ")") : state.selectProps.subtle ? 'transparent' : state.selectProps.textFieldBackgroundColor ? "var(--ds-background-input, ".concat(N10, ")") : "var(--ds-background-input, ".concat(N20, ")"),
33
33
  '&:hover .fabric-user-picker__clear-indicator': {
34
34
  opacity: 1
35
35
  },
36
36
  ':hover': _objectSpread(_objectSpread({}, css[':hover']), {}, {
37
- borderColor: state.isFocused ? css[':hover'] ? "var(--ds-border-focused, ".concat(css[':hover'].borderColor, ")") : "var(--ds-border-focused, ".concat(B100, ")") : state.selectProps.subtle ? 'transparent' : "var(--ds-border-input, ".concat(N90, ")"),
37
+ borderColor: isInvalid ? "var(--ds-border-danger, ".concat(R400, ")") : state.isFocused ? css[':hover'] ? "var(--ds-border-focused, ".concat(css[':hover'].borderColor, ")") : "var(--ds-border-focused, ".concat(B100, ")") : state.selectProps.subtle ? 'transparent' : "var(--ds-border-input, ".concat(N90, ")"),
38
38
  backgroundColor: state.selectProps.subtle && state.selectProps.hoveringClearIndicator ? "var(--ds-background-danger, ".concat(R50, ")") : state.isFocused ? css[':hover'] ? "var(--ds-background-input, ".concat(css[':hover'].backgroundColor, ")") : "var(--ds-background-input, ".concat(N0, ")") : state.isDisabled ? "var(--ds-background-disabled, ".concat(N10, ")") : "var(--ds-background-input-hovered, ".concat(N30, ")")
39
39
  }),
40
40
  padding: 0,
@@ -64,7 +64,7 @@ export declare class BaseUserPickerWithoutAnalytics extends React.Component<Base
64
64
  private handleClickDraggableParentComponent;
65
65
  render(): JSX.Element;
66
66
  }
67
- export declare const BaseUserPicker: React.ForwardRefExoticComponent<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "components" | "inputId" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "styles" | "value" | "footer" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "loadOptions" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent" | "SelectComponent" | "pickerProps"> & Partial<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isClearable" | "isMulti" | "openMenuOnClick" | "textFieldBackgroundColor" | "loadOptionsErrorMessage" | "subtle" | "noBorder">> & Partial<Pick<{
67
+ export declare const BaseUserPicker: React.ForwardRefExoticComponent<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "components" | "inputId" | "isInvalid" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "styles" | "value" | "required" | "footer" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "loadOptions" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent" | "SelectComponent" | "pickerProps"> & Partial<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isClearable" | "isMulti" | "openMenuOnClick" | "textFieldBackgroundColor" | "loadOptionsErrorMessage" | "subtle" | "noBorder">> & Partial<Pick<{
68
68
  isMulti: boolean;
69
69
  subtle: boolean;
70
70
  noBorder: boolean;
@@ -19,5 +19,5 @@ export declare class PopupUserPickerWithoutAnalytics extends React.Component<Pop
19
19
  };
20
20
  render(): JSX.Element;
21
21
  }
22
- export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, never> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "footer" | "target" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip">> & Partial<Pick<Partial<PopupUserPickerProps>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "footer" | "target" | "defaultValue" | "createAnalyticsEvent" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip"> & React.RefAttributes<any>>;
22
+ export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, never> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isInvalid" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "required" | "footer" | "target" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip">> & Partial<Pick<Partial<PopupUserPickerProps>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isInvalid" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "required" | "footer" | "target" | "defaultValue" | "createAnalyticsEvent" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip"> & React.RefAttributes<any>>;
23
23
  export {};
@@ -10,7 +10,7 @@ export declare class UserPickerWithoutAnalytics extends React.Component<UserPick
10
10
  componentDidMount(): void;
11
11
  render(): JSX.Element;
12
12
  }
13
- export declare const UserPicker: React.ForwardRefExoticComponent<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "footer" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent"> & Partial<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isMulti" | "width">> & Partial<Pick<{
13
+ export declare const UserPicker: React.ForwardRefExoticComponent<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isInvalid" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "required" | "footer" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent"> & Partial<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isMulti" | "width">> & Partial<Pick<{
14
14
  width: number;
15
15
  isMulti: boolean;
16
16
  }, never>> & React.RefAttributes<any>>;
@@ -2,5 +2,5 @@ import { type StylesConfig } from '@atlaskit/select';
2
2
  export declare const BORDER_PADDING: "var(--ds-space-075)";
3
3
  export declare const AVATAR_PADDING = 6;
4
4
  export declare const INDICATOR_WIDTH = 39;
5
- export declare const getStyles: import("memoize-one").MemoizedFn<(width: string | number, isMulti?: boolean, isCompact?: boolean, overrideStyles?: StylesConfig) => StylesConfig>;
5
+ export declare const getStyles: import("memoize-one").MemoizedFn<(width: string | number, isMulti?: boolean, isCompact?: boolean, overrideStyles?: StylesConfig, isInvalid?: boolean) => StylesConfig>;
6
6
  export declare const getPopupStyles: import("memoize-one").MemoizedFn<(width: string | number, isMulti?: boolean, overrideStyles?: StylesConfig) => StylesConfig>;
@@ -120,6 +120,8 @@ export type UserPickerProps = WithAnalyticsEventsProps & {
120
120
  value?: Value;
121
121
  /** Disable all interactions with the picker, putting it in a read-only state. */
122
122
  isDisabled?: boolean;
123
+ /** Display the picker with a style to show the value is invalid */
124
+ isInvalid?: boolean;
123
125
  /** Display a remove button on the single picker. True by default. */
124
126
  isClearable?: boolean;
125
127
  /** Optional tooltip to display on hover over the clear indicator. */
@@ -64,7 +64,7 @@ export declare class BaseUserPickerWithoutAnalytics extends React.Component<Base
64
64
  private handleClickDraggableParentComponent;
65
65
  render(): JSX.Element;
66
66
  }
67
- export declare const BaseUserPicker: React.ForwardRefExoticComponent<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "components" | "inputId" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "styles" | "value" | "footer" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "loadOptions" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent" | "SelectComponent" | "pickerProps"> & Partial<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isClearable" | "isMulti" | "openMenuOnClick" | "textFieldBackgroundColor" | "loadOptionsErrorMessage" | "subtle" | "noBorder">> & Partial<Pick<{
67
+ export declare const BaseUserPicker: React.ForwardRefExoticComponent<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "components" | "inputId" | "isInvalid" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "styles" | "value" | "required" | "footer" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "loadOptions" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent" | "SelectComponent" | "pickerProps"> & Partial<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isClearable" | "isMulti" | "openMenuOnClick" | "textFieldBackgroundColor" | "loadOptionsErrorMessage" | "subtle" | "noBorder">> & Partial<Pick<{
68
68
  isMulti: boolean;
69
69
  subtle: boolean;
70
70
  noBorder: boolean;
@@ -19,5 +19,5 @@ export declare class PopupUserPickerWithoutAnalytics extends React.Component<Pop
19
19
  };
20
20
  render(): JSX.Element;
21
21
  }
22
- export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, never> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "footer" | "target" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip">> & Partial<Pick<Partial<PopupUserPickerProps>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "footer" | "target" | "defaultValue" | "createAnalyticsEvent" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip"> & React.RefAttributes<any>>;
22
+ export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, never> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isInvalid" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "required" | "footer" | "target" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip">> & Partial<Pick<Partial<PopupUserPickerProps>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>>, "options" | "search" | "placeholder" | "isDisabled" | "offset" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isInvalid" | "isLoading" | "isMulti" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "required" | "footer" | "target" | "defaultValue" | "createAnalyticsEvent" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent" | "popupTitle" | "placement" | "rootBoundary" | "boundariesElement" | "shouldFlip"> & React.RefAttributes<any>>;
23
23
  export {};
@@ -10,7 +10,7 @@ export declare class UserPickerWithoutAnalytics extends React.Component<UserPick
10
10
  componentDidMount(): void;
11
11
  render(): JSX.Element;
12
12
  }
13
- export declare const UserPicker: React.ForwardRefExoticComponent<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "footer" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "required" | "UNSAFE_hasDraggableParentComponent"> & Partial<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isMulti" | "width">> & Partial<Pick<{
13
+ export declare const UserPicker: React.ForwardRefExoticComponent<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "options" | "search" | "placeholder" | "isDisabled" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isInvalid" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "name" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "onKeyDown" | "openMenuOnClick" | "styles" | "value" | "required" | "footer" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadOptionsErrorMessage" | "loadUserSource" | "anchor" | "open" | "onSelection" | "onClear" | "onOpen" | "onClose" | "appearance" | "subtle" | "noBorder" | "placeholderAvatar" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabel" | "ariaLabelledBy" | "ariaLive" | "header" | "UNSAFE_hasDraggableParentComponent"> & Partial<Pick<Omit<UserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isMulti" | "width">> & Partial<Pick<{
14
14
  width: number;
15
15
  isMulti: boolean;
16
16
  }, never>> & React.RefAttributes<any>>;
@@ -2,5 +2,5 @@ import { type StylesConfig } from '@atlaskit/select';
2
2
  export declare const BORDER_PADDING: "var(--ds-space-075)";
3
3
  export declare const AVATAR_PADDING = 6;
4
4
  export declare const INDICATOR_WIDTH = 39;
5
- export declare const getStyles: import("memoize-one").MemoizedFn<(width: string | number, isMulti?: boolean, isCompact?: boolean, overrideStyles?: StylesConfig) => StylesConfig>;
5
+ export declare const getStyles: import("memoize-one").MemoizedFn<(width: string | number, isMulti?: boolean, isCompact?: boolean, overrideStyles?: StylesConfig, isInvalid?: boolean) => StylesConfig>;
6
6
  export declare const getPopupStyles: import("memoize-one").MemoizedFn<(width: string | number, isMulti?: boolean, overrideStyles?: StylesConfig) => StylesConfig>;
@@ -120,6 +120,8 @@ export type UserPickerProps = WithAnalyticsEventsProps & {
120
120
  value?: Value;
121
121
  /** Disable all interactions with the picker, putting it in a read-only state. */
122
122
  isDisabled?: boolean;
123
+ /** Display the picker with a style to show the value is invalid */
124
+ isInvalid?: boolean;
123
125
  /** Display a remove button on the single picker. True by default. */
124
126
  isClearable?: boolean;
125
127
  /** Optional tooltip to display on hover over the clear indicator. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "10.24.1",
3
+ "version": "10.25.0",
4
4
  "description": "Fabric component for display a dropdown to select a user from",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -30,6 +30,14 @@
30
30
  },
31
31
  "atlassian": {
32
32
  "team": "Search Platform: Search Experience",
33
+ "slack": {
34
+ "channel": "#search-plex-prs",
35
+ "notifications": {
36
+ "mergedPR": {
37
+ "message": "A PR was merged in @atlaskit/user-picker without maintainer approval."
38
+ }
39
+ }
40
+ },
33
41
  "website": {
34
42
  "name": "User Picker"
35
43
  }
@@ -40,17 +48,17 @@
40
48
  "dependencies": {
41
49
  "@atlaskit/analytics-next": "^10.1.0",
42
50
  "@atlaskit/avatar": "^21.15.0",
43
- "@atlaskit/icon": "^22.18.0",
51
+ "@atlaskit/icon": "^22.21.0",
44
52
  "@atlaskit/logo": "^14.3.0",
45
- "@atlaskit/lozenge": "^11.10.0",
53
+ "@atlaskit/lozenge": "^11.11.0",
46
54
  "@atlaskit/popper": "^6.3.0",
47
55
  "@atlaskit/primitives": "^12.2.0",
48
- "@atlaskit/select": "^17.19.0",
56
+ "@atlaskit/select": "^18.0.0",
49
57
  "@atlaskit/spinner": "^16.3.0",
50
58
  "@atlaskit/teams-avatar": "^1.1.0",
51
59
  "@atlaskit/theme": "^13.0.0",
52
60
  "@atlaskit/tokens": "^2.0.0",
53
- "@atlaskit/tooltip": "^18.7.0",
61
+ "@atlaskit/tooltip": "^18.8.0",
54
62
  "@atlaskit/ufo": "^0.3.0",
55
63
  "@babel/runtime": "^7.0.0",
56
64
  "@emotion/react": "^11.7.1",