@atlaskit/user-picker 9.3.6 → 9.4.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.
- package/CHANGELOG.md +12 -0
- package/analytics/package.json +8 -1
- package/dist/cjs/components/AvatarItemOption.js +37 -19
- package/dist/cjs/components/TeamOption/main.js +12 -1
- package/dist/cjs/components/utils.js +8 -2
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/components/AvatarItemOption.js +41 -24
- package/dist/es2019/components/TeamOption/main.js +13 -1
- package/dist/es2019/components/utils.js +4 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/components/AvatarItemOption.js +35 -19
- package/dist/esm/components/TeamOption/main.js +13 -1
- package/dist/esm/components/utils.js +3 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/components/AvatarItemOption.d.ts +1 -1
- package/dist/types/components/PopupUserPicker.d.ts +1 -1
- package/dist/types/components/TeamOption/main.d.ts +1 -0
- package/dist/types/components/utils.d.ts +3 -2
- package/dist/types/types.d.ts +2 -1
- package/dist/types-ts4.0/analytics.d.ts +24 -0
- package/dist/types-ts4.0/clients/UserSourceProvider.d.ts +11 -0
- package/dist/types-ts4.0/components/AddOptionAvatar.d.ts +6 -0
- package/dist/types-ts4.0/components/AvatarItemOption.d.ts +11 -0
- package/dist/types-ts4.0/components/BaseUserPicker.d.ts +60 -0
- package/dist/types-ts4.0/components/ClearIndicator.d.ts +6 -0
- package/dist/types-ts4.0/components/EmailOption/index.d.ts +3 -0
- package/dist/types-ts4.0/components/EmailOption/main.d.ts +17 -0
- package/dist/types-ts4.0/components/ExternalUserOption/ExternalAvatarItemOption.d.ts +9 -0
- package/dist/types-ts4.0/components/ExternalUserOption/InfoIcon.d.ts +3 -0
- package/dist/types-ts4.0/components/ExternalUserOption/SourcesTooltipContent.d.ts +6 -0
- package/dist/types-ts4.0/components/ExternalUserOption/index.d.ts +3 -0
- package/dist/types-ts4.0/components/ExternalUserOption/main.d.ts +12 -0
- package/dist/types-ts4.0/components/ExternalUserSourcesContainer.d.ts +15 -0
- package/dist/types-ts4.0/components/GroupOption/index.d.ts +3 -0
- package/dist/types-ts4.0/components/GroupOption/main.d.ts +15 -0
- package/dist/types-ts4.0/components/HighlightText.d.ts +9 -0
- package/dist/types-ts4.0/components/Input.d.ts +11 -0
- package/dist/types-ts4.0/components/MessagesIntlProvider.d.ts +3 -0
- package/dist/types-ts4.0/components/MultiValue.d.ts +25 -0
- package/dist/types-ts4.0/components/MultiValueContainer.d.ts +30 -0
- package/dist/types-ts4.0/components/Option.d.ts +14 -0
- package/dist/types-ts4.0/components/PopupControl.d.ts +6 -0
- package/dist/types-ts4.0/components/PopupInput.d.ts +13 -0
- package/dist/types-ts4.0/components/PopupUserPicker.d.ts +39 -0
- package/dist/types-ts4.0/components/SingleValue.d.ts +8 -0
- package/dist/types-ts4.0/components/SingleValueContainer.d.ts +8 -0
- package/dist/types-ts4.0/components/SizeableAvatar.d.ts +10 -0
- package/dist/types-ts4.0/components/TeamOption/index.d.ts +3 -0
- package/dist/types-ts4.0/components/TeamOption/main.d.ts +15 -0
- package/dist/types-ts4.0/components/UserOption.d.ts +14 -0
- package/dist/types-ts4.0/components/UserPicker.d.ts +16 -0
- package/dist/types-ts4.0/components/assets/github.d.ts +2 -0
- package/dist/types-ts4.0/components/assets/google.d.ts +2 -0
- package/dist/types-ts4.0/components/assets/microsoft.d.ts +2 -0
- package/dist/types-ts4.0/components/assets/slack.d.ts +2 -0
- package/dist/types-ts4.0/components/batch.d.ts +1 -0
- package/dist/types-ts4.0/components/components.d.ts +55 -0
- package/dist/types-ts4.0/components/creatable.d.ts +12 -0
- package/dist/types-ts4.0/components/creatableEmailSuggestion.d.ts +19 -0
- package/dist/types-ts4.0/components/emailValidation.d.ts +3 -0
- package/dist/types-ts4.0/components/i18n.d.ts +127 -0
- package/dist/types-ts4.0/components/popup.d.ts +48 -0
- package/dist/types-ts4.0/components/styles.d.ts +17 -0
- package/dist/types-ts4.0/components/utils.d.ts +28 -0
- package/dist/types-ts4.0/i18n/cs.d.ts +33 -0
- package/dist/types-ts4.0/i18n/da.d.ts +33 -0
- package/dist/types-ts4.0/i18n/de.d.ts +33 -0
- package/dist/types-ts4.0/i18n/en.d.ts +7 -0
- package/dist/types-ts4.0/i18n/en_GB.d.ts +7 -0
- package/dist/types-ts4.0/i18n/en_ZZ.d.ts +33 -0
- package/dist/types-ts4.0/i18n/es.d.ts +33 -0
- package/dist/types-ts4.0/i18n/et.d.ts +15 -0
- package/dist/types-ts4.0/i18n/fi.d.ts +33 -0
- package/dist/types-ts4.0/i18n/fr.d.ts +33 -0
- package/dist/types-ts4.0/i18n/hu.d.ts +33 -0
- package/dist/types-ts4.0/i18n/index.d.ts +36 -0
- package/dist/types-ts4.0/i18n/is.d.ts +7 -0
- package/dist/types-ts4.0/i18n/it.d.ts +33 -0
- package/dist/types-ts4.0/i18n/ja.d.ts +33 -0
- package/dist/types-ts4.0/i18n/ko.d.ts +33 -0
- package/dist/types-ts4.0/i18n/languages.d.ts +27 -0
- package/dist/types-ts4.0/i18n/nb.d.ts +33 -0
- package/dist/types-ts4.0/i18n/nl.d.ts +33 -0
- package/dist/types-ts4.0/i18n/pl.d.ts +33 -0
- package/dist/types-ts4.0/i18n/pt_BR.d.ts +33 -0
- package/dist/types-ts4.0/i18n/pt_PT.d.ts +15 -0
- package/dist/types-ts4.0/i18n/ro.d.ts +7 -0
- package/dist/types-ts4.0/i18n/ru.d.ts +33 -0
- package/dist/types-ts4.0/i18n/sk.d.ts +15 -0
- package/dist/types-ts4.0/i18n/sv.d.ts +33 -0
- package/dist/types-ts4.0/i18n/th.d.ts +33 -0
- package/dist/types-ts4.0/i18n/tr.d.ts +33 -0
- package/dist/types-ts4.0/i18n/uk.d.ts +33 -0
- package/dist/types-ts4.0/i18n/vi.d.ts +33 -0
- package/dist/types-ts4.0/i18n/zh.d.ts +33 -0
- package/dist/types-ts4.0/i18n/zh_TW.d.ts +33 -0
- package/dist/types-ts4.0/index.d.ts +7 -0
- package/dist/types-ts4.0/types.d.ts +294 -0
- package/dist/types-ts4.0/util/i18n-util.d.ts +11 -0
- package/dist/types-ts4.0/util/ufoExperiences.d.ts +10 -0
- package/package.json +11 -4
- package/report.api.md +167 -194
- package/types/package.json +8 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/user-picker
|
|
2
2
|
|
|
3
|
+
## 9.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`8cc2f888c83`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8cc2f888c83) - Upgrade Typescript from `4.3.5` to `4.5.5`
|
|
8
|
+
|
|
9
|
+
## 9.4.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [`47c6607c914`](https://bitbucket.org/atlassian/atlassian-frontend/commits/47c6607c914) - [ux] Adding ability for Options of type Team to allow for custom html in the lozenge prop. Added byline prop for type Team which will override the default byline generated from includesYou and memberCount props.
|
|
14
|
+
|
|
3
15
|
## 9.3.6
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/analytics/package.json
CHANGED
|
@@ -4,5 +4,12 @@
|
|
|
4
4
|
"module": "../dist/esm/analytics.js",
|
|
5
5
|
"module:es2019": "../dist/es2019/analytics.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"types": "../dist/types/analytics.d.ts"
|
|
7
|
+
"types": "../dist/types/analytics.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
">=4.0 <4.5": {
|
|
10
|
+
"*": [
|
|
11
|
+
"../dist/types-ts4.0/analytics.d.ts"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
8
15
|
}
|
|
@@ -13,10 +13,14 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
13
13
|
|
|
14
14
|
var _react = _interopRequireDefault(require("react"));
|
|
15
15
|
|
|
16
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
17
|
+
|
|
16
18
|
var _core = require("@emotion/core");
|
|
17
19
|
|
|
18
20
|
var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
19
21
|
|
|
22
|
+
var _utils = require("./utils");
|
|
23
|
+
|
|
20
24
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
25
|
|
|
22
26
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -45,6 +49,13 @@ var wrapper = (0, _core.css)({
|
|
|
45
49
|
width: '100%',
|
|
46
50
|
cursor: 'pointer'
|
|
47
51
|
});
|
|
52
|
+
var optionWrapper = (0, _core.css)({
|
|
53
|
+
maxWidth: '100%',
|
|
54
|
+
minWidth: 0,
|
|
55
|
+
flex: '1 1 100%',
|
|
56
|
+
lineHeight: '1.4',
|
|
57
|
+
paddingLeft: "".concat((0, _constants.gridSize)(), "px")
|
|
58
|
+
});
|
|
48
59
|
|
|
49
60
|
var getTextStyle = function getTextStyle(isSecondary) {
|
|
50
61
|
var secondaryCssArgs = isSecondary ? {
|
|
@@ -66,7 +77,7 @@ var textWrapper = function textWrapper(color) {
|
|
|
66
77
|
return (0, _core.css)({
|
|
67
78
|
overflow: 'hidden',
|
|
68
79
|
textOverflow: 'ellipsis',
|
|
69
|
-
display: 'inline
|
|
80
|
+
display: 'inline',
|
|
70
81
|
color: color
|
|
71
82
|
});
|
|
72
83
|
};
|
|
@@ -78,29 +89,36 @@ var AvatarItemOption = function AvatarItemOption(_ref) {
|
|
|
78
89
|
primaryText = _ref.primaryText,
|
|
79
90
|
secondaryText = _ref.secondaryText,
|
|
80
91
|
lozenge = _ref.lozenge;
|
|
92
|
+
|
|
93
|
+
var renderLozenge = function renderLozenge() {
|
|
94
|
+
if ((0, _utils.isLozengeText)(lozenge)) {
|
|
95
|
+
if (lozenge !== null && lozenge !== void 0 && lozenge.tooltip) {
|
|
96
|
+
// Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
|
|
97
|
+
// Lozenge text) or tooltip won't work
|
|
98
|
+
return (0, _core.jsx)(_react.default.Suspense, {
|
|
99
|
+
fallback: (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)
|
|
100
|
+
}, (0, _core.jsx)(AsyncTooltip, {
|
|
101
|
+
content: lozenge.tooltip
|
|
102
|
+
}, (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return lozenge;
|
|
109
|
+
};
|
|
110
|
+
|
|
81
111
|
return (0, _core.jsx)("span", {
|
|
82
112
|
css: wrapper
|
|
83
113
|
}, avatar, (0, _core.jsx)("div", {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
minWidth: 0,
|
|
87
|
-
flex: '1 1 100%',
|
|
88
|
-
lineHeight: '1.4',
|
|
89
|
-
paddingLeft: '8px'
|
|
90
|
-
}
|
|
91
|
-
}, (0, _core.jsx)("div", null, (0, _core.jsx)("span", {
|
|
114
|
+
css: optionWrapper
|
|
115
|
+
}, (0, _core.jsx)("div", null, (0, _core.jsx)("div", {
|
|
92
116
|
css: getTextStyle()
|
|
93
|
-
}, primaryText), (0, _core.jsx)("
|
|
94
|
-
css: additionalInfo
|
|
95
|
-
}, (lozenge === null || lozenge === void 0 ? void 0 : lozenge.text) && (lozenge !== null && lozenge !== void 0 && lozenge.tooltip ? // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
|
|
96
|
-
// Lozenge text) or tooltip won't work
|
|
97
|
-
(0, _core.jsx)(_react.default.Suspense, {
|
|
98
|
-
fallback: (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)
|
|
99
|
-
}, (0, _core.jsx)(AsyncTooltip, {
|
|
100
|
-
content: lozenge.tooltip
|
|
101
|
-
}, (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text))) : (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)))), (0, _core.jsx)("div", null, (0, _core.jsx)("span", {
|
|
117
|
+
}, primaryText), secondaryText && (0, _core.jsx)("div", {
|
|
102
118
|
css: getTextStyle(true)
|
|
103
|
-
}, secondaryText))))
|
|
119
|
+
}, secondaryText))), lozenge && (0, _core.jsx)("div", {
|
|
120
|
+
css: additionalInfo
|
|
121
|
+
}, renderLozenge()));
|
|
104
122
|
};
|
|
105
123
|
|
|
106
124
|
exports.AvatarItemOption = AvatarItemOption;
|
|
@@ -124,6 +124,17 @@ var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
124
124
|
text: _this.props.team.lozenge
|
|
125
125
|
} : _this.props.team.lozenge;
|
|
126
126
|
});
|
|
127
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderCustomByLine", function () {
|
|
128
|
+
var _this$props$team4;
|
|
129
|
+
|
|
130
|
+
if (!((_this$props$team4 = _this.props.team) !== null && _this$props$team4 !== void 0 && _this$props$team4.byline)) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return (0, _core.jsx)("span", {
|
|
135
|
+
css: (0, _AvatarItemOption.textWrapper)(_this.props.isSelected ? (0, _tokens.token)('color.text.selected', _colors.B400) : (0, _tokens.token)('color.text.subtlest', _colors.N200))
|
|
136
|
+
}, _this.props.team.byline);
|
|
137
|
+
});
|
|
127
138
|
return _this;
|
|
128
139
|
}
|
|
129
140
|
|
|
@@ -132,7 +143,7 @@ var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
132
143
|
value: function render() {
|
|
133
144
|
return (0, _core.jsx)(_AvatarItemOption.AvatarItemOption, {
|
|
134
145
|
avatar: this.renderAvatar(),
|
|
135
|
-
secondaryText: this.renderByline(),
|
|
146
|
+
secondaryText: this.renderCustomByLine() || this.renderByline(),
|
|
136
147
|
primaryText: this.getPrimaryText(),
|
|
137
148
|
lozenge: this.getLozengeProps()
|
|
138
149
|
});
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.optionToSelectableOptions = exports.optionToSelectableOption = exports.isUser = exports.isTeam = exports.isSingleValue = exports.isPopupUserPickerByProps = exports.isPopupUserPickerByComponent = exports.isIterable = exports.isGroup = exports.isExternalUser = exports.isEmail = exports.isDefaultValuePopulated = exports.isChildInput = exports.hasValue = exports.getOptions = exports.getAvatarUrl = exports.getAvatarSize = exports.extractOptionValue = exports.callCallback = void 0;
|
|
8
|
+
exports.optionToSelectableOptions = exports.optionToSelectableOption = exports.isUser = exports.isTeam = exports.isSingleValue = exports.isPopupUserPickerByProps = exports.isPopupUserPickerByComponent = exports.isLozengeText = exports.isIterable = exports.isGroup = exports.isExternalUser = exports.isEmail = exports.isDefaultValuePopulated = exports.isChildInput = exports.hasValue = exports.getOptions = exports.getAvatarUrl = exports.getAvatarSize = exports.extractOptionValue = exports.callCallback = void 0;
|
|
9
9
|
|
|
10
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
11
|
|
|
@@ -182,4 +182,10 @@ var isPopupUserPickerByProps = function isPopupUserPickerByProps(selectProps) {
|
|
|
182
182
|
return selectProps.searchThreshold === -1;
|
|
183
183
|
};
|
|
184
184
|
|
|
185
|
-
exports.isPopupUserPickerByProps = isPopupUserPickerByProps;
|
|
185
|
+
exports.isPopupUserPickerByProps = isPopupUserPickerByProps;
|
|
186
|
+
|
|
187
|
+
var isLozengeText = function isLozengeText(lozengeProp) {
|
|
188
|
+
return (lozengeProp === null || lozengeProp === void 0 ? void 0 : lozengeProp.hasOwnProperty('text')) || false;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
exports.isLozengeText = isLozengeText;
|
package/dist/cjs/version.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { gridSize } from '@atlaskit/theme/constants';
|
|
3
4
|
import { css, jsx } from '@emotion/core';
|
|
4
5
|
import Lozenge from '@atlaskit/lozenge';
|
|
6
|
+
import { isLozengeText } from './utils';
|
|
5
7
|
const AsyncTooltip = /*#__PURE__*/React.lazy(() => import(
|
|
6
8
|
/* webpackChunkName: "@atlaskit-internal_@atlaskit/tooltip" */
|
|
7
9
|
'@atlaskit/tooltip').then(module => {
|
|
@@ -19,6 +21,13 @@ const wrapper = css({
|
|
|
19
21
|
width: '100%',
|
|
20
22
|
cursor: 'pointer'
|
|
21
23
|
});
|
|
24
|
+
const optionWrapper = css({
|
|
25
|
+
maxWidth: '100%',
|
|
26
|
+
minWidth: 0,
|
|
27
|
+
flex: '1 1 100%',
|
|
28
|
+
lineHeight: '1.4',
|
|
29
|
+
paddingLeft: `${gridSize()}px`
|
|
30
|
+
});
|
|
22
31
|
|
|
23
32
|
const getTextStyle = isSecondary => {
|
|
24
33
|
const secondaryCssArgs = isSecondary ? {
|
|
@@ -39,7 +48,7 @@ const additionalInfo = css({
|
|
|
39
48
|
export const textWrapper = color => css({
|
|
40
49
|
overflow: 'hidden',
|
|
41
50
|
textOverflow: 'ellipsis',
|
|
42
|
-
display: 'inline
|
|
51
|
+
display: 'inline',
|
|
43
52
|
color
|
|
44
53
|
});
|
|
45
54
|
export const AvatarItemOption = ({
|
|
@@ -47,26 +56,34 @@ export const AvatarItemOption = ({
|
|
|
47
56
|
primaryText,
|
|
48
57
|
secondaryText,
|
|
49
58
|
lozenge
|
|
50
|
-
}) =>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}, jsx(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
59
|
+
}) => {
|
|
60
|
+
const renderLozenge = () => {
|
|
61
|
+
if (isLozengeText(lozenge)) {
|
|
62
|
+
if (lozenge !== null && lozenge !== void 0 && lozenge.tooltip) {
|
|
63
|
+
// Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
|
|
64
|
+
// Lozenge text) or tooltip won't work
|
|
65
|
+
return jsx(React.Suspense, {
|
|
66
|
+
fallback: jsx(Lozenge, lozenge, lozenge.text)
|
|
67
|
+
}, jsx(AsyncTooltip, {
|
|
68
|
+
content: lozenge.tooltip
|
|
69
|
+
}, jsx(Lozenge, lozenge, lozenge.text)));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return jsx(Lozenge, lozenge, lozenge.text);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return lozenge;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
return jsx("span", {
|
|
79
|
+
css: wrapper
|
|
80
|
+
}, avatar, jsx("div", {
|
|
81
|
+
css: optionWrapper
|
|
82
|
+
}, jsx("div", null, jsx("div", {
|
|
83
|
+
css: getTextStyle()
|
|
84
|
+
}, primaryText), secondaryText && jsx("div", {
|
|
85
|
+
css: getTextStyle(true)
|
|
86
|
+
}, secondaryText))), lozenge && jsx("div", {
|
|
87
|
+
css: additionalInfo
|
|
88
|
+
}, renderLozenge()));
|
|
89
|
+
};
|
|
@@ -87,12 +87,24 @@ export class TeamOption extends React.PureComponent {
|
|
|
87
87
|
_defineProperty(this, "getLozengeProps", () => typeof this.props.team.lozenge === 'string' ? {
|
|
88
88
|
text: this.props.team.lozenge
|
|
89
89
|
} : this.props.team.lozenge);
|
|
90
|
+
|
|
91
|
+
_defineProperty(this, "renderCustomByLine", () => {
|
|
92
|
+
var _this$props$team;
|
|
93
|
+
|
|
94
|
+
if (!((_this$props$team = this.props.team) !== null && _this$props$team !== void 0 && _this$props$team.byline)) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return jsx("span", {
|
|
99
|
+
css: textWrapper(this.props.isSelected ? token('color.text.selected', B400) : token('color.text.subtlest', N200))
|
|
100
|
+
}, this.props.team.byline);
|
|
101
|
+
});
|
|
90
102
|
}
|
|
91
103
|
|
|
92
104
|
render() {
|
|
93
105
|
return jsx(AvatarItemOption, {
|
|
94
106
|
avatar: this.renderAvatar(),
|
|
95
|
-
secondaryText: this.renderByline(),
|
|
107
|
+
secondaryText: this.renderCustomByLine() || this.renderByline(),
|
|
96
108
|
primaryText: this.getPrimaryText(),
|
|
97
109
|
lozenge: this.getLozengeProps()
|
|
98
110
|
});
|
|
@@ -76,4 +76,7 @@ export const getAvatarUrl = optionData => {
|
|
|
76
76
|
return undefined;
|
|
77
77
|
};
|
|
78
78
|
export const isPopupUserPickerByComponent = SelectComponent => SelectComponent === PopupSelect;
|
|
79
|
-
export const isPopupUserPickerByProps = selectProps => selectProps.searchThreshold === -1;
|
|
79
|
+
export const isPopupUserPickerByProps = selectProps => selectProps.searchThreshold === -1;
|
|
80
|
+
export const isLozengeText = lozengeProp => {
|
|
81
|
+
return (lozengeProp === null || lozengeProp === void 0 ? void 0 : lozengeProp.hasOwnProperty('text')) || false;
|
|
82
|
+
};
|
package/dist/es2019/version.json
CHANGED
|
@@ -6,8 +6,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
6
6
|
|
|
7
7
|
/** @jsx jsx */
|
|
8
8
|
import React from 'react';
|
|
9
|
+
import { gridSize } from '@atlaskit/theme/constants';
|
|
9
10
|
import { css, jsx } from '@emotion/core';
|
|
10
11
|
import Lozenge from '@atlaskit/lozenge';
|
|
12
|
+
import { isLozengeText } from './utils';
|
|
11
13
|
var AsyncTooltip = /*#__PURE__*/React.lazy(function () {
|
|
12
14
|
return import(
|
|
13
15
|
/* webpackChunkName: "@atlaskit-internal_@atlaskit/tooltip" */
|
|
@@ -27,6 +29,13 @@ var wrapper = css({
|
|
|
27
29
|
width: '100%',
|
|
28
30
|
cursor: 'pointer'
|
|
29
31
|
});
|
|
32
|
+
var optionWrapper = css({
|
|
33
|
+
maxWidth: '100%',
|
|
34
|
+
minWidth: 0,
|
|
35
|
+
flex: '1 1 100%',
|
|
36
|
+
lineHeight: '1.4',
|
|
37
|
+
paddingLeft: "".concat(gridSize(), "px")
|
|
38
|
+
});
|
|
30
39
|
|
|
31
40
|
var getTextStyle = function getTextStyle(isSecondary) {
|
|
32
41
|
var secondaryCssArgs = isSecondary ? {
|
|
@@ -47,7 +56,7 @@ export var textWrapper = function textWrapper(color) {
|
|
|
47
56
|
return css({
|
|
48
57
|
overflow: 'hidden',
|
|
49
58
|
textOverflow: 'ellipsis',
|
|
50
|
-
display: 'inline
|
|
59
|
+
display: 'inline',
|
|
51
60
|
color: color
|
|
52
61
|
});
|
|
53
62
|
};
|
|
@@ -56,27 +65,34 @@ export var AvatarItemOption = function AvatarItemOption(_ref) {
|
|
|
56
65
|
primaryText = _ref.primaryText,
|
|
57
66
|
secondaryText = _ref.secondaryText,
|
|
58
67
|
lozenge = _ref.lozenge;
|
|
68
|
+
|
|
69
|
+
var renderLozenge = function renderLozenge() {
|
|
70
|
+
if (isLozengeText(lozenge)) {
|
|
71
|
+
if (lozenge !== null && lozenge !== void 0 && lozenge.tooltip) {
|
|
72
|
+
// Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
|
|
73
|
+
// Lozenge text) or tooltip won't work
|
|
74
|
+
return jsx(React.Suspense, {
|
|
75
|
+
fallback: jsx(Lozenge, lozenge, lozenge.text)
|
|
76
|
+
}, jsx(AsyncTooltip, {
|
|
77
|
+
content: lozenge.tooltip
|
|
78
|
+
}, jsx(Lozenge, lozenge, lozenge.text)));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return jsx(Lozenge, lozenge, lozenge.text);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return lozenge;
|
|
85
|
+
};
|
|
86
|
+
|
|
59
87
|
return jsx("span", {
|
|
60
88
|
css: wrapper
|
|
61
89
|
}, avatar, jsx("div", {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
minWidth: 0,
|
|
65
|
-
flex: '1 1 100%',
|
|
66
|
-
lineHeight: '1.4',
|
|
67
|
-
paddingLeft: '8px'
|
|
68
|
-
}
|
|
69
|
-
}, jsx("div", null, jsx("span", {
|
|
90
|
+
css: optionWrapper
|
|
91
|
+
}, jsx("div", null, jsx("div", {
|
|
70
92
|
css: getTextStyle()
|
|
71
|
-
}, primaryText), jsx("
|
|
72
|
-
css: additionalInfo
|
|
73
|
-
}, (lozenge === null || lozenge === void 0 ? void 0 : lozenge.text) && (lozenge !== null && lozenge !== void 0 && lozenge.tooltip ? // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
|
|
74
|
-
// Lozenge text) or tooltip won't work
|
|
75
|
-
jsx(React.Suspense, {
|
|
76
|
-
fallback: jsx(Lozenge, lozenge, lozenge.text)
|
|
77
|
-
}, jsx(AsyncTooltip, {
|
|
78
|
-
content: lozenge.tooltip
|
|
79
|
-
}, jsx(Lozenge, lozenge, lozenge.text))) : jsx(Lozenge, lozenge, lozenge.text)))), jsx("div", null, jsx("span", {
|
|
93
|
+
}, primaryText), secondaryText && jsx("div", {
|
|
80
94
|
css: getTextStyle(true)
|
|
81
|
-
}, secondaryText)))
|
|
95
|
+
}, secondaryText))), lozenge && jsx("div", {
|
|
96
|
+
css: additionalInfo
|
|
97
|
+
}, renderLozenge()));
|
|
82
98
|
};
|
|
@@ -106,6 +106,18 @@ export var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
106
106
|
} : _this.props.team.lozenge;
|
|
107
107
|
});
|
|
108
108
|
|
|
109
|
+
_defineProperty(_assertThisInitialized(_this), "renderCustomByLine", function () {
|
|
110
|
+
var _this$props$team4;
|
|
111
|
+
|
|
112
|
+
if (!((_this$props$team4 = _this.props.team) !== null && _this$props$team4 !== void 0 && _this$props$team4.byline)) {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return jsx("span", {
|
|
117
|
+
css: textWrapper(_this.props.isSelected ? token('color.text.selected', B400) : token('color.text.subtlest', N200))
|
|
118
|
+
}, _this.props.team.byline);
|
|
119
|
+
});
|
|
120
|
+
|
|
109
121
|
return _this;
|
|
110
122
|
}
|
|
111
123
|
|
|
@@ -114,7 +126,7 @@ export var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
114
126
|
value: function render() {
|
|
115
127
|
return jsx(AvatarItemOption, {
|
|
116
128
|
avatar: this.renderAvatar(),
|
|
117
|
-
secondaryText: this.renderByline(),
|
|
129
|
+
secondaryText: this.renderCustomByLine() || this.renderByline(),
|
|
118
130
|
primaryText: this.getPrimaryText(),
|
|
119
131
|
lozenge: this.getLozengeProps()
|
|
120
132
|
});
|
|
@@ -118,4 +118,7 @@ export var isPopupUserPickerByComponent = function isPopupUserPickerByComponent(
|
|
|
118
118
|
};
|
|
119
119
|
export var isPopupUserPickerByProps = function isPopupUserPickerByProps(selectProps) {
|
|
120
120
|
return selectProps.searchThreshold === -1;
|
|
121
|
+
};
|
|
122
|
+
export var isLozengeText = function isLozengeText(lozengeProp) {
|
|
123
|
+
return (lozengeProp === null || lozengeProp === void 0 ? void 0 : lozengeProp.hasOwnProperty('text')) || false;
|
|
121
124
|
};
|
package/dist/esm/version.json
CHANGED
|
@@ -6,6 +6,6 @@ export declare type AvatarItemOptionProps = {
|
|
|
6
6
|
avatar: ReactNode;
|
|
7
7
|
primaryText?: ReactNode;
|
|
8
8
|
secondaryText?: ReactNode;
|
|
9
|
-
lozenge?: LozengeProps;
|
|
9
|
+
lozenge?: ReactNode | LozengeProps;
|
|
10
10
|
};
|
|
11
11
|
export declare const AvatarItemOption: ({ avatar, primaryText, secondaryText, lozenge, }: AvatarItemOptionProps) => JSX.Element;
|
|
@@ -27,7 +27,7 @@ export declare class PopupUserPickerWithoutAnalytics extends React.Component<Pop
|
|
|
27
27
|
};
|
|
28
28
|
render(): JSX.Element;
|
|
29
29
|
}
|
|
30
|
-
export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "target" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isDisabled" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "options" | "placeholder" | "styles" | "value" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadUserSource" | "search" | "anchor" | "open" | "onSelection" | "onClear" | "onClose" | "appearance" | "subtle" | "noBorder" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabelledBy" | "ariaLive" | "popupTitle"> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "offset" | "isMulti" | "width" | "
|
|
30
|
+
export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "target" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isDisabled" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "options" | "placeholder" | "styles" | "value" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadUserSource" | "search" | "anchor" | "open" | "onSelection" | "onClear" | "onClose" | "appearance" | "subtle" | "noBorder" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabelledBy" | "ariaLive" | "popupTitle"> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "offset" | "isMulti" | "width" | "rootBoundary" | "boundariesElement" | "placement" | "shouldFlip">> & Partial<Pick<{
|
|
31
31
|
boundariesElement: string;
|
|
32
32
|
width: number;
|
|
33
33
|
isMulti: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactChild, ReactElement } from 'react';
|
|
2
|
-
import { AtlaskitSelectValue, ExternalUser, Email, Option, OptionData, Promisable, Team, Group, User, OptionIdentifier, DefaultValue } from '../types';
|
|
1
|
+
import { ReactChild, ReactElement, ReactNode } from 'react';
|
|
2
|
+
import { AtlaskitSelectValue, ExternalUser, Email, Option, OptionData, Promisable, Team, Group, User, OptionIdentifier, DefaultValue, LozengeProps } from '../types';
|
|
3
3
|
export declare const isExternalUser: (option: OptionData) => option is ExternalUser;
|
|
4
4
|
export declare const isUser: (option: OptionData) => option is User;
|
|
5
5
|
export declare const isTeam: (option: OptionData) => option is Team;
|
|
@@ -25,3 +25,4 @@ export declare const callCallback: <U extends any[], R>(callback: ((...U: U) =>
|
|
|
25
25
|
export declare const getAvatarUrl: (optionData: OptionData) => string | undefined;
|
|
26
26
|
export declare const isPopupUserPickerByComponent: (SelectComponent: React.ComponentClass<any>) => boolean;
|
|
27
27
|
export declare const isPopupUserPickerByProps: (selectProps: any) => boolean;
|
|
28
|
+
export declare const isLozengeText: (lozengeProp: ReactNode | LozengeProps) => lozengeProp is LozengeProps;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -203,7 +203,7 @@ export interface OptionData {
|
|
|
203
203
|
name: string;
|
|
204
204
|
type?: 'user' | 'team' | 'email' | 'group';
|
|
205
205
|
fixed?: boolean;
|
|
206
|
-
lozenge?: string | LozengeProps;
|
|
206
|
+
lozenge?: string | LozengeProps | ReactNode;
|
|
207
207
|
}
|
|
208
208
|
export declare const UserType = "user";
|
|
209
209
|
export declare type UserSource = 'google' | 'slack' | 'microsoft' | 'github' | 'jira' | 'confluence' | 'other-atlassian';
|
|
@@ -241,6 +241,7 @@ export interface Team extends OptionData {
|
|
|
241
241
|
includesYou?: boolean;
|
|
242
242
|
highlight?: TeamHighlight;
|
|
243
243
|
type: 'team';
|
|
244
|
+
byline?: string;
|
|
244
245
|
}
|
|
245
246
|
export declare const GroupType = "group";
|
|
246
247
|
export interface Group extends OptionData {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AnalyticsEventPayload } from '@atlaskit/analytics-next';
|
|
2
|
+
import { UserPickerProps, UserPickerState } from './types';
|
|
3
|
+
export declare type UserPickerSession = {
|
|
4
|
+
id: string;
|
|
5
|
+
start: number;
|
|
6
|
+
inputChangeTime: number;
|
|
7
|
+
upCount: number;
|
|
8
|
+
downCount: number;
|
|
9
|
+
lastKey?: number;
|
|
10
|
+
};
|
|
11
|
+
export declare const startSession: () => UserPickerSession;
|
|
12
|
+
export declare const createAndFireEventInElementsChannel: (payload: AnalyticsEventPayload) => (createAnalyticsEvent: import("@atlaskit/analytics-next").CreateUIAnalyticsEvent) => import("@atlaskit/analytics-next").UIAnalyticsEvent;
|
|
13
|
+
export interface EventCreator {
|
|
14
|
+
(props: UserPickerProps, state: UserPickerState, session?: UserPickerSession): AnalyticsEventPayload;
|
|
15
|
+
(props: UserPickerProps, state: UserPickerState, session?: UserPickerSession, ...args: any[]): AnalyticsEventPayload;
|
|
16
|
+
}
|
|
17
|
+
export declare const focusEvent: EventCreator;
|
|
18
|
+
export declare const clearEvent: EventCreator;
|
|
19
|
+
export declare const deleteEvent: EventCreator;
|
|
20
|
+
export declare const cancelEvent: EventCreator;
|
|
21
|
+
export declare const selectEvent: EventCreator;
|
|
22
|
+
export declare const searchedEvent: EventCreator;
|
|
23
|
+
export declare const failedEvent: EventCreator;
|
|
24
|
+
export declare const userInfoEvent: (sources: string[], accountId: string) => AnalyticsEventPayload;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { LoadUserSource, UserSource } from '../types';
|
|
3
|
+
export interface UserSourceContext {
|
|
4
|
+
fetchUserSource?: LoadUserSource;
|
|
5
|
+
}
|
|
6
|
+
export declare const ExusUserSourceProvider: React.FC<UserSourceContext>;
|
|
7
|
+
export declare const useUserSource: (accountId: string, shouldFetchSources: boolean, existingSources?: UserSource[] | undefined) => {
|
|
8
|
+
sources: UserSource[];
|
|
9
|
+
loading: boolean;
|
|
10
|
+
error: string | null;
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { LozengeProps } from '../types';
|
|
4
|
+
export declare const textWrapper: (color?: string | undefined) => import("@emotion/utils").SerializedStyles;
|
|
5
|
+
export declare type AvatarItemOptionProps = {
|
|
6
|
+
avatar: ReactNode;
|
|
7
|
+
primaryText?: ReactNode;
|
|
8
|
+
secondaryText?: ReactNode;
|
|
9
|
+
lozenge?: ReactNode | LozengeProps;
|
|
10
|
+
};
|
|
11
|
+
export declare const AvatarItemOption: ({ avatar, primaryText, secondaryText, lozenge, }: AvatarItemOptionProps) => JSX.Element;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { UserPickerProps, UserPickerState } from '../types';
|
|
3
|
+
export declare type BaseUserPickerProps = UserPickerProps & {
|
|
4
|
+
SelectComponent: React.ComponentClass<any>;
|
|
5
|
+
pickerProps?: any;
|
|
6
|
+
styles: any;
|
|
7
|
+
components: any;
|
|
8
|
+
width: string | number;
|
|
9
|
+
};
|
|
10
|
+
export declare class BaseUserPickerWithoutAnalytics extends React.Component<BaseUserPickerProps, UserPickerState> {
|
|
11
|
+
static defaultProps: {
|
|
12
|
+
isMulti: boolean;
|
|
13
|
+
subtle: boolean;
|
|
14
|
+
noBorder: boolean;
|
|
15
|
+
textFieldBackgroundColor: boolean;
|
|
16
|
+
isClearable: boolean;
|
|
17
|
+
};
|
|
18
|
+
static getDerivedStateFromProps(nextProps: Partial<UserPickerProps>, prevState: UserPickerState): Partial<UserPickerState>;
|
|
19
|
+
private selectRef;
|
|
20
|
+
private session?;
|
|
21
|
+
private journeyId?;
|
|
22
|
+
private optionsShownUfoExperienceInstance;
|
|
23
|
+
constructor(props: BaseUserPickerProps);
|
|
24
|
+
private getSessionId;
|
|
25
|
+
private withSelectRef;
|
|
26
|
+
nextOption: () => void;
|
|
27
|
+
previousOption: () => void;
|
|
28
|
+
focus: () => void;
|
|
29
|
+
blur: () => void;
|
|
30
|
+
selectOption: () => void;
|
|
31
|
+
private handleChange;
|
|
32
|
+
private handleSelectRef;
|
|
33
|
+
private addOptions;
|
|
34
|
+
private handleLoadOptionsError;
|
|
35
|
+
private debouncedLoadOptions;
|
|
36
|
+
abortOptionsShownUfoExperience: () => void;
|
|
37
|
+
startOptionsShownUfoExperience: () => void;
|
|
38
|
+
private executeLoadOptions;
|
|
39
|
+
private handleFocus;
|
|
40
|
+
private resetInputState;
|
|
41
|
+
private handleBlur;
|
|
42
|
+
private handleClose;
|
|
43
|
+
private handleInputChange;
|
|
44
|
+
private fireEvent;
|
|
45
|
+
private startSession;
|
|
46
|
+
componentDidMount(): void;
|
|
47
|
+
componentDidUpdate(_: UserPickerProps, prevState: UserPickerState): void;
|
|
48
|
+
private handleKeyDown;
|
|
49
|
+
handleClearIndicatorHover: (hoveringClearIndicator: boolean) => void;
|
|
50
|
+
private getOptions;
|
|
51
|
+
private getAppearance;
|
|
52
|
+
render(): JSX.Element;
|
|
53
|
+
}
|
|
54
|
+
export declare const BaseUserPicker: React.ForwardRefExoticComponent<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "components" | "inputId" | "isDisabled" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "options" | "placeholder" | "styles" | "value" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "loadOptions" | "loadUserSource" | "search" | "anchor" | "open" | "onSelection" | "onClear" | "onClose" | "appearance" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabelledBy" | "ariaLive" | "SelectComponent" | "pickerProps"> & Partial<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isClearable" | "isMulti" | "textFieldBackgroundColor" | "subtle" | "noBorder">> & Partial<Pick<{
|
|
55
|
+
isMulti: boolean;
|
|
56
|
+
subtle: boolean;
|
|
57
|
+
noBorder: boolean;
|
|
58
|
+
textFieldBackgroundColor: boolean;
|
|
59
|
+
isClearable: boolean;
|
|
60
|
+
}, never>> & React.RefAttributes<any>>;
|