@atlaskit/link-picker 1.8.4 → 1.8.5
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 +6 -0
- package/dist/cjs/controllers/use-fix-height/index.js +27 -0
- package/dist/cjs/ui/link-picker/form-footer/index.js +76 -0
- package/dist/cjs/ui/link-picker/form-footer/styled.js +17 -0
- package/dist/cjs/ui/link-picker/index.js +29 -74
- package/dist/cjs/ui/link-picker/link-search-error/index.js +47 -6
- package/dist/cjs/ui/link-picker/link-search-list/index.js +89 -20
- package/dist/cjs/ui/link-picker/link-search-list/link-search-no-results/index.js +54 -0
- package/dist/cjs/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/index.js +0 -0
- package/dist/cjs/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/styled.js +0 -0
- package/dist/cjs/ui/link-picker/link-search-list/link-search-no-results/styled.js +17 -0
- package/dist/cjs/ui/link-picker/link-search-list/styled.js +13 -6
- package/dist/cjs/ui/link-picker/messages.js +0 -50
- package/dist/cjs/ui/link-picker/styled.js +16 -11
- package/dist/cjs/ui/link-picker/text-input/styled.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/controllers/use-fix-height/index.js +19 -0
- package/dist/es2019/ui/link-picker/form-footer/index.js +51 -0
- package/dist/es2019/ui/link-picker/form-footer/styled.js +5 -0
- package/dist/es2019/ui/link-picker/index.js +24 -66
- package/dist/es2019/ui/link-picker/link-search-error/index.js +40 -4
- package/dist/es2019/ui/link-picker/link-search-list/index.js +60 -14
- package/dist/es2019/ui/link-picker/link-search-list/link-search-no-results/index.js +35 -0
- package/dist/es2019/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/index.js +0 -0
- package/dist/es2019/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/styled.js +0 -0
- package/dist/es2019/ui/link-picker/link-search-list/link-search-no-results/styled.js +6 -0
- package/dist/es2019/ui/link-picker/link-search-list/styled.js +23 -2
- package/dist/es2019/ui/link-picker/messages.js +0 -50
- package/dist/es2019/ui/link-picker/styled.js +20 -15
- package/dist/es2019/ui/link-picker/text-input/styled.js +3 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/controllers/use-fix-height/index.js +19 -0
- package/dist/esm/ui/link-picker/form-footer/index.js +53 -0
- package/dist/esm/ui/link-picker/form-footer/styled.js +6 -0
- package/dist/esm/ui/link-picker/index.js +25 -71
- package/dist/esm/ui/link-picker/link-search-error/index.js +41 -5
- package/dist/esm/ui/link-picker/link-search-list/index.js +67 -13
- package/dist/esm/ui/link-picker/link-search-list/link-search-no-results/index.js +37 -0
- package/dist/esm/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/index.js +0 -0
- package/dist/esm/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/styled.js +0 -0
- package/dist/esm/ui/link-picker/link-search-list/link-search-no-results/styled.js +6 -0
- package/dist/esm/ui/link-picker/link-search-list/styled.js +11 -5
- package/dist/esm/ui/link-picker/messages.js +0 -50
- package/dist/esm/ui/link-picker/styled.js +14 -11
- package/dist/esm/ui/link-picker/text-input/styled.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/controllers/use-fix-height/index.d.ts +8 -0
- package/dist/types/ui/link-picker/form-footer/index.d.ts +13 -0
- package/dist/types/ui/link-picker/form-footer/styled.d.ts +1 -0
- package/dist/types/ui/link-picker/index.d.ts +16 -16
- package/dist/types/ui/link-picker/link-search-error/index.d.ts +19 -3
- package/dist/types/ui/link-picker/link-search-list/index.d.ts +30 -5
- package/dist/types/ui/link-picker/link-search-list/link-search-no-results/index.d.ts +19 -0
- package/dist/types/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/index.d.ts +0 -0
- package/dist/types/ui/link-picker/{link-search-no-results → link-search-list/link-search-no-results}/no-results-svg/styled.d.ts +0 -0
- package/dist/types/ui/link-picker/link-search-list/link-search-no-results/styled.d.ts +1 -0
- package/dist/types/ui/link-picker/link-search-list/styled.d.ts +1 -0
- package/dist/types/ui/link-picker/messages.d.ts +0 -50
- package/dist/types/ui/link-picker/styled.d.ts +5 -1
- package/package.json +6 -6
- package/dist/cjs/ui/link-picker/link-search-no-results/index.js +0 -27
- package/dist/es2019/ui/link-picker/link-search-no-results/index.js +0 -10
- package/dist/esm/ui/link-picker/link-search-no-results/index.js +0 -14
- package/dist/types/ui/link-picker/link-search-no-results/index.d.ts +0 -4
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var useFixHeight = function useFixHeight(shouldFixHeight) {
|
|
11
|
+
var ref = (0, _react.useRef)(null);
|
|
12
|
+
var currentHeight = (0, _react.useRef)(null);
|
|
13
|
+
(0, _react.useLayoutEffect)(function () {
|
|
14
|
+
if (ref.current) {
|
|
15
|
+
currentHeight.current = ref.current.getBoundingClientRect().height;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
ref: ref,
|
|
20
|
+
style: shouldFixHeight ? {
|
|
21
|
+
minHeight: currentHeight.current || 'auto'
|
|
22
|
+
} : undefined
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
var _default = useFixHeight;
|
|
27
|
+
exports.default = _default;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.testIds = exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
|
+
|
|
16
|
+
var _react = require("@emotion/react");
|
|
17
|
+
|
|
18
|
+
var _reactIntlNext = require("react-intl-next");
|
|
19
|
+
|
|
20
|
+
var _button = _interopRequireWildcard(require("@atlaskit/button"));
|
|
21
|
+
|
|
22
|
+
var _styled = require("./styled");
|
|
23
|
+
|
|
24
|
+
var _react2 = require("react");
|
|
25
|
+
|
|
26
|
+
var _excluded = ["isEditing", "onCancel"];
|
|
27
|
+
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
|
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
+
|
|
32
|
+
var messages = (0, _reactIntlNext.defineMessages)({
|
|
33
|
+
cancelButton: {
|
|
34
|
+
id: 'fabric.linkPicker.button.cancel',
|
|
35
|
+
defaultMessage: 'Cancel',
|
|
36
|
+
description: 'Button to cancel and dismiss the link picker'
|
|
37
|
+
},
|
|
38
|
+
saveButton: {
|
|
39
|
+
id: 'fabric.linkPicker.button.save',
|
|
40
|
+
defaultMessage: 'Save',
|
|
41
|
+
description: 'Button to save edited link'
|
|
42
|
+
},
|
|
43
|
+
insertButton: {
|
|
44
|
+
id: 'fabric.linkPicker.button.insert',
|
|
45
|
+
defaultMessage: 'Insert',
|
|
46
|
+
description: 'Button to insert searched or selected link'
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
var testIds = {
|
|
50
|
+
insertButton: 'link-picker-insert-button',
|
|
51
|
+
cancelButton: 'link-picker-cancel-button'
|
|
52
|
+
};
|
|
53
|
+
exports.testIds = testIds;
|
|
54
|
+
|
|
55
|
+
var FormFooter = function FormFooter(_ref) {
|
|
56
|
+
var isEditing = _ref.isEditing,
|
|
57
|
+
onCancel = _ref.onCancel,
|
|
58
|
+
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
59
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
60
|
+
var insertButtonMsg = isEditing ? messages.saveButton : messages.insertButton;
|
|
61
|
+
return (0, _react.jsx)("footer", (0, _extends2.default)({
|
|
62
|
+
css: _styled.formFooterStyles
|
|
63
|
+
}, restProps), (0, _react.jsx)(_button.ButtonGroup, null, (0, _react.jsx)(_button.default, {
|
|
64
|
+
appearance: "default",
|
|
65
|
+
onClick: onCancel,
|
|
66
|
+
testId: testIds.cancelButton
|
|
67
|
+
}, intl.formatMessage(messages.cancelButton)), (0, _react.jsx)(_button.default, {
|
|
68
|
+
type: "submit",
|
|
69
|
+
appearance: "primary",
|
|
70
|
+
testId: testIds.insertButton
|
|
71
|
+
}, intl.formatMessage(insertButtonMsg))));
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
var _default = /*#__PURE__*/(0, _react2.memo)(FormFooter);
|
|
75
|
+
|
|
76
|
+
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.formFooterStyles = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = require("@emotion/react");
|
|
13
|
+
|
|
14
|
+
var _templateObject;
|
|
15
|
+
|
|
16
|
+
var formFooterStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n justify-content: flex-end;\n"])));
|
|
17
|
+
exports.formFooterStyles = formFooterStyles;
|
|
@@ -23,10 +23,6 @@ var _reactIntlNext = require("react-intl-next");
|
|
|
23
23
|
|
|
24
24
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
25
25
|
|
|
26
|
-
var _button = _interopRequireWildcard(require("@atlaskit/button"));
|
|
27
|
-
|
|
28
|
-
var _form = require("@atlaskit/form");
|
|
29
|
-
|
|
30
26
|
var _search = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/search"));
|
|
31
27
|
|
|
32
28
|
var _tabs = _interopRequireWildcard(require("@atlaskit/tabs"));
|
|
@@ -47,21 +43,23 @@ var _messages = require("./messages");
|
|
|
47
43
|
|
|
48
44
|
var _textInput = _interopRequireDefault(require("./text-input"));
|
|
49
45
|
|
|
50
|
-
var _linkSearchList = _interopRequireDefault(require("./link-search-list"));
|
|
51
|
-
|
|
52
46
|
var _url2 = require("../../common/utils/url");
|
|
53
47
|
|
|
48
|
+
var _useFixHeight = _interopRequireDefault(require("../../controllers/use-fix-height"));
|
|
49
|
+
|
|
54
50
|
var _styled = require("./styled");
|
|
55
51
|
|
|
56
52
|
var _browser = require("./browser");
|
|
57
53
|
|
|
58
54
|
var _announcer = _interopRequireDefault(require("./announcer"));
|
|
59
55
|
|
|
60
|
-
var _linkSearchNoResults = _interopRequireDefault(require("./link-search-no-results"));
|
|
61
|
-
|
|
62
56
|
var _transformTimeStamp = require("./transformTimeStamp");
|
|
63
57
|
|
|
64
|
-
var
|
|
58
|
+
var _linkSearchList = _interopRequireWildcard(require("./link-search-list"));
|
|
59
|
+
|
|
60
|
+
var _linkSearchError = _interopRequireWildcard(require("./link-search-error"));
|
|
61
|
+
|
|
62
|
+
var _formFooter = _interopRequireWildcard(require("./form-footer"));
|
|
65
63
|
|
|
66
64
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
67
65
|
|
|
@@ -75,24 +73,19 @@ var RECENT_SEARCH_LIST_SIZE = 5;
|
|
|
75
73
|
exports.RECENT_SEARCH_LIST_SIZE = RECENT_SEARCH_LIST_SIZE;
|
|
76
74
|
var CONTACT_SUPPORT_LINK = 'https://support.atlassian.com/contact/';
|
|
77
75
|
exports.CONTACT_SUPPORT_LINK = CONTACT_SUPPORT_LINK;
|
|
78
|
-
|
|
76
|
+
|
|
77
|
+
var testIds = _objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
79
78
|
linkPicker: 'link-picker',
|
|
80
79
|
urlInputField: 'link-url',
|
|
81
80
|
textInputField: 'link-text',
|
|
82
|
-
searchIcon: 'link-picker-search-icon'
|
|
83
|
-
|
|
84
|
-
cancelButton: 'link-picker-cancel-button',
|
|
81
|
+
searchIcon: 'link-picker-search-icon'
|
|
82
|
+
}, _formFooter.testIds), _linkSearchError.testIds), _linkSearchList.testIds), {}, {
|
|
85
83
|
clearUrlButton: 'clear-text',
|
|
86
|
-
resultListTitle: 'link-picker-list-title',
|
|
87
|
-
emptyResultPage: 'link-search-no-results',
|
|
88
|
-
searchResultList: 'link-search-list',
|
|
89
|
-
searchResultItem: 'link-search-list-item',
|
|
90
|
-
searchResultLoadingIndicator: 'link-picker.results-loading-indicator',
|
|
91
84
|
urlError: 'link-error',
|
|
92
85
|
tabList: 'link-picker-tabs',
|
|
93
|
-
tabItem: 'link-picker-tab'
|
|
94
|
-
|
|
95
|
-
|
|
86
|
+
tabItem: 'link-picker-tab'
|
|
87
|
+
});
|
|
88
|
+
|
|
96
89
|
exports.testIds = testIds;
|
|
97
90
|
var initState = {
|
|
98
91
|
url: '',
|
|
@@ -115,7 +108,7 @@ function reducer(state, payload) {
|
|
|
115
108
|
}
|
|
116
109
|
|
|
117
110
|
function LinkPicker(_ref) {
|
|
118
|
-
var
|
|
111
|
+
var _errorFallback;
|
|
119
112
|
|
|
120
113
|
var onSubmit = _ref.onSubmit,
|
|
121
114
|
onCancel = _ref.onCancel,
|
|
@@ -153,6 +146,7 @@ function LinkPicker(_ref) {
|
|
|
153
146
|
retry = _usePlugins.retry,
|
|
154
147
|
errorFallback = _usePlugins.errorFallback;
|
|
155
148
|
|
|
149
|
+
var fixListHeightProps = (0, _useFixHeight.default)(isLoading);
|
|
156
150
|
var isEditing = !!initUrl;
|
|
157
151
|
var selectedItem = items === null || items === void 0 ? void 0 : items[selectedIndex];
|
|
158
152
|
var isSelectedItem = (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.url) === url;
|
|
@@ -281,9 +275,6 @@ function LinkPicker(_ref) {
|
|
|
281
275
|
});
|
|
282
276
|
}, [handleInsert, isSelectedItem, selectedItem, url]);
|
|
283
277
|
var linkPlaceHolder = isActivePlugin ? _messages.messages.placeholder : _messages.messages.linkPlaceholder;
|
|
284
|
-
var linkListTitle = (queryState === null || queryState === void 0 ? void 0 : (_queryState$query = queryState.query) === null || _queryState$query === void 0 ? void 0 : _queryState$query.length) !== 0 ? _messages.messages.titleResults : _messages.messages.titleRecentlyViewed;
|
|
285
|
-
var insertButtonMsg = isEditing ? _messages.messages.saveButton : _messages.messages.insertButton;
|
|
286
|
-
var noResults = (items === null || items === void 0 ? void 0 : items.length) === 0 && !error;
|
|
287
278
|
var screenReaderDescriptionId = 'search-recent-links-field-description';
|
|
288
279
|
var linkSearchListId = 'link-picker-search-list';
|
|
289
280
|
var ariaActiveDescendant = selectedIndex > -1 ? "link-search-list-item-".concat(selectedIndex) : ''; // Added workaround with a screen reader Announcer specifically for VoiceOver + Safari
|
|
@@ -341,7 +332,7 @@ function LinkPicker(_ref) {
|
|
|
341
332
|
onClear: handleClear,
|
|
342
333
|
onKeyDown: handleKeyDown,
|
|
343
334
|
onChange: handleChangeText
|
|
344
|
-
}), queryState && (0, _react2.jsx)(_react.Fragment, null, tabs.length > 0 && (0, _react2.jsx)("div", {
|
|
335
|
+
}), isActivePlugin && !!queryState && (0, _react2.jsx)(_react.Fragment, null, tabs.length > 0 && (0, _react2.jsx)("div", {
|
|
345
336
|
css: _styled.tabsWrapperStyles
|
|
346
337
|
}, (0, _react2.jsx)(_tabs.default, {
|
|
347
338
|
id: testIds.tabList,
|
|
@@ -359,61 +350,25 @@ function LinkPicker(_ref) {
|
|
|
359
350
|
key: tab.tabTitle,
|
|
360
351
|
testId: testIds.tabItem
|
|
361
352
|
}, tab.tabTitle);
|
|
362
|
-
})))),
|
|
363
|
-
css: _styled.
|
|
364
|
-
|
|
365
|
-
"data-testid": testIds.resultListTitle
|
|
366
|
-
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, linkListTitle)), (0, _react2.jsx)(_visuallyHidden.default, {
|
|
367
|
-
id: "fabric.smartcard.linkpicker.suggested.results"
|
|
368
|
-
}, url && (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages.searchLinkResults, {
|
|
369
|
-
values: {
|
|
370
|
-
count: (_items$length = items === null || items === void 0 ? void 0 : items.length) !== null && _items$length !== void 0 ? _items$length : 0
|
|
371
|
-
},
|
|
372
|
-
"aria-live": "polite",
|
|
373
|
-
"aria-atomic": "true"
|
|
374
|
-
}))), (0, _react2.jsx)(_linkSearchList.default, {
|
|
375
|
-
ariaLabelledBy: testIds.resultListTitle,
|
|
376
|
-
ariaControls: "fabric.smartcard.linkpicker.suggested.results",
|
|
353
|
+
})))), (0, _react2.jsx)("div", (0, _extends2.default)({
|
|
354
|
+
css: _styled.flexColumnStyles
|
|
355
|
+
}, fixListHeightProps), !error && (0, _react2.jsx)(_linkSearchList.default, {
|
|
377
356
|
id: linkSearchListId,
|
|
378
357
|
role: "listbox",
|
|
379
|
-
items: items
|
|
358
|
+
items: items,
|
|
380
359
|
isLoading: isLoading,
|
|
381
360
|
selectedIndex: selectedIndex,
|
|
382
361
|
activeIndex: activeIndex,
|
|
383
362
|
onSelect: handleSelected,
|
|
384
363
|
onMouseEnter: handleMouseEnterResultItem,
|
|
385
|
-
onMouseLeave: handleMouseLeaveResultItem
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
appearance: "link",
|
|
394
|
-
spacing: "none",
|
|
395
|
-
href: CONTACT_SUPPORT_LINK,
|
|
396
|
-
target: "_blank",
|
|
397
|
-
rel: "noopener noreferrer"
|
|
398
|
-
}, label);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}))
|
|
402
|
-
})), noResults && (0, _react2.jsx)(_linkSearchNoResults.default, {
|
|
403
|
-
testId: testIds.emptyResultPage,
|
|
404
|
-
header: intl.formatMessage(_messages.messages.noResults),
|
|
405
|
-
description: intl.formatMessage(_messages.messages.noResultsDescription)
|
|
406
|
-
})), (0, _react2.jsx)(_form.FormFooter, {
|
|
407
|
-
align: "end"
|
|
408
|
-
}, (0, _react2.jsx)(_button.ButtonGroup, null, (0, _react2.jsx)(_button.default, {
|
|
409
|
-
appearance: "default",
|
|
410
|
-
onClick: onCancel,
|
|
411
|
-
testId: testIds.cancelButton
|
|
412
|
-
}, intl.formatMessage(_messages.messages.cancelButton)), (0, _react2.jsx)(_button.default, {
|
|
413
|
-
type: "submit",
|
|
414
|
-
appearance: "primary",
|
|
415
|
-
testId: testIds.insertButton
|
|
416
|
-
}, intl.formatMessage(insertButtonMsg)))));
|
|
364
|
+
onMouseLeave: handleMouseLeaveResultItem,
|
|
365
|
+
error: error,
|
|
366
|
+
hasSearchTerm: !!(queryState !== null && queryState !== void 0 && queryState.query.length)
|
|
367
|
+
}), error && ((_errorFallback = errorFallback === null || errorFallback === void 0 ? void 0 : errorFallback(error, retry)) !== null && _errorFallback !== void 0 ? _errorFallback : (0, _react2.jsx)(_linkSearchError.default, null)))), (0, _react2.jsx)(_formFooter.default, {
|
|
368
|
+
css: !queryState || !(plugins !== null && plugins !== void 0 && plugins.length) ? _styled.formFooterMargin : undefined,
|
|
369
|
+
isEditing: isEditing,
|
|
370
|
+
onCancel: onCancel
|
|
371
|
+
}));
|
|
417
372
|
}
|
|
418
373
|
|
|
419
374
|
var _default = (0, _withLinkPickerAnalytics.withLinkPickerAnalyticsContext)( /*#__PURE__*/(0, _react.memo)(LinkPicker));
|
|
@@ -5,22 +5,63 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.default = void 0;
|
|
8
|
+
exports.testIds = exports.messages = exports.default = exports.CONTACT_SUPPORT_LINK = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
12
|
-
var _react =
|
|
12
|
+
var _react = require("@emotion/react");
|
|
13
|
+
|
|
14
|
+
var _reactIntlNext = require("react-intl-next");
|
|
15
|
+
|
|
16
|
+
var _button = _interopRequireDefault(require("@atlaskit/button"));
|
|
13
17
|
|
|
14
18
|
var _emptyState = _interopRequireDefault(require("@atlaskit/empty-state"));
|
|
15
19
|
|
|
16
20
|
var _genericErrorSvg = _interopRequireDefault(require("../../../common/generic-error-svg"));
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
/** @jsx jsx */
|
|
23
|
+
var CONTACT_SUPPORT_LINK = 'https://support.atlassian.com/contact/';
|
|
24
|
+
exports.CONTACT_SUPPORT_LINK = CONTACT_SUPPORT_LINK;
|
|
25
|
+
var messages = (0, _reactIntlNext.defineMessages)({
|
|
26
|
+
searchErrorHeader: {
|
|
27
|
+
id: 'fabric.linkPicker.search.error.heading',
|
|
28
|
+
defaultMessage: 'We’re having trouble loading data.',
|
|
29
|
+
description: 'Heading message shown when a search throws an error'
|
|
30
|
+
},
|
|
31
|
+
searchErrorDescription: {
|
|
32
|
+
id: 'fabric.linkPicker.search.error.description',
|
|
33
|
+
defaultMessage: 'Refresh the page, or contact <a>Atlassian Support</a> if this keeps happening.',
|
|
34
|
+
description: 'Describes possible actions when search throws an error'
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
exports.messages = messages;
|
|
38
|
+
var testIds = {
|
|
39
|
+
searchError: 'link-search-error'
|
|
40
|
+
};
|
|
41
|
+
exports.testIds = testIds;
|
|
42
|
+
|
|
43
|
+
var LinkSearchError = function LinkSearchError() {
|
|
44
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
45
|
+
return (0, _react.jsx)(_emptyState.default, {
|
|
46
|
+
testId: testIds.searchError,
|
|
47
|
+
header: intl.formatMessage(messages.searchErrorHeader),
|
|
48
|
+
description: (0, _react.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, messages.searchErrorDescription, {
|
|
49
|
+
values: {
|
|
50
|
+
a: function a(label) {
|
|
51
|
+
return (0, _react.jsx)(_button.default, {
|
|
52
|
+
appearance: "link",
|
|
53
|
+
spacing: "none",
|
|
54
|
+
href: CONTACT_SUPPORT_LINK,
|
|
55
|
+
target: "_blank",
|
|
56
|
+
rel: "noopener noreferrer"
|
|
57
|
+
}, label);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
})),
|
|
20
61
|
renderImage: function renderImage() {
|
|
21
|
-
return
|
|
62
|
+
return (0, _react.jsx)(_genericErrorSvg.default, null);
|
|
22
63
|
}
|
|
23
|
-
})
|
|
64
|
+
});
|
|
24
65
|
};
|
|
25
66
|
|
|
26
67
|
var _default = LinkSearchError;
|
|
@@ -2,23 +2,73 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
8
|
-
exports.default = void 0;
|
|
10
|
+
exports.testIds = exports.messages = exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
|
+
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
|
|
18
|
+
var _react = require("react");
|
|
19
|
+
|
|
20
|
+
var _react2 = require("@emotion/react");
|
|
9
21
|
|
|
10
|
-
var
|
|
22
|
+
var _reactIntlNext = require("react-intl-next");
|
|
11
23
|
|
|
12
24
|
var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
|
|
13
25
|
|
|
26
|
+
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
27
|
+
|
|
14
28
|
var _listItem = _interopRequireDefault(require("../list-item"));
|
|
15
29
|
|
|
16
30
|
var _styled = require("./styled");
|
|
17
31
|
|
|
18
|
-
var
|
|
32
|
+
var _linkSearchNoResults = _interopRequireWildcard(require("./link-search-no-results"));
|
|
33
|
+
|
|
34
|
+
var _excluded = ["onSelect", "onMouseEnter", "onMouseLeave", "items", "activeIndex", "selectedIndex", "isLoading", "ariaControls", "ariaLabelledBy", "role", "id", "hasSearchTerm"];
|
|
35
|
+
|
|
36
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
37
|
+
|
|
38
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
|
+
|
|
40
|
+
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; }
|
|
19
41
|
|
|
20
|
-
|
|
21
|
-
|
|
42
|
+
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; }
|
|
43
|
+
|
|
44
|
+
var messages = (0, _reactIntlNext.defineMessages)({
|
|
45
|
+
titleRecentlyViewed: {
|
|
46
|
+
id: 'fabric.linkPicker.listTitle.recentlyViewed',
|
|
47
|
+
defaultMessage: 'Recently Viewed',
|
|
48
|
+
description: 'Describes type of items shown in the list for screen-reader users'
|
|
49
|
+
},
|
|
50
|
+
titleResults: {
|
|
51
|
+
id: 'fabric.linkPicker.listTitle.results',
|
|
52
|
+
defaultMessage: 'Results',
|
|
53
|
+
description: 'Describes type of items shown in the list for screen-reader users'
|
|
54
|
+
},
|
|
55
|
+
searchLinkResults: {
|
|
56
|
+
id: 'fabric.linkPicker.hyperlink.searchLinkResults',
|
|
57
|
+
defaultMessage: '{count, plural, =0 {no results} one {# result} other {# results}} found',
|
|
58
|
+
description: 'Announce search results for screen-reader users.'
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
exports.messages = messages;
|
|
62
|
+
|
|
63
|
+
var testIds = _objectSpread(_objectSpread({}, _linkSearchNoResults.testIds), {}, {
|
|
64
|
+
resultListTitle: 'link-picker-list-title',
|
|
65
|
+
searchResultItem: 'link-search-list-item',
|
|
66
|
+
searchResultList: 'link-search-list',
|
|
67
|
+
searchResultLoadingIndicator: 'link-picker.results-loading-indicator'
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
exports.testIds = testIds;
|
|
71
|
+
var LinkSearchList = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
22
72
|
var onSelect = _ref.onSelect,
|
|
23
73
|
onMouseEnter = _ref.onMouseEnter,
|
|
24
74
|
onMouseLeave = _ref.onMouseLeave,
|
|
@@ -29,21 +79,40 @@ var LinkSearchList = function LinkSearchList(_ref) {
|
|
|
29
79
|
ariaControls = _ref.ariaControls,
|
|
30
80
|
ariaLabelledBy = _ref.ariaLabelledBy,
|
|
31
81
|
role = _ref.role,
|
|
32
|
-
id = _ref.id
|
|
82
|
+
id = _ref.id,
|
|
83
|
+
hasSearchTerm = _ref.hasSearchTerm,
|
|
84
|
+
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
33
85
|
var itemsContent;
|
|
34
86
|
var loadingContent;
|
|
87
|
+
var linkListTitle = hasSearchTerm ? messages.titleResults : messages.titleRecentlyViewed;
|
|
88
|
+
|
|
89
|
+
if ((items === null || items === void 0 ? void 0 : items.length) === 0) {
|
|
90
|
+
return (0, _react2.jsx)(_linkSearchNoResults.default, null);
|
|
91
|
+
}
|
|
35
92
|
|
|
36
93
|
if (items && items.length > 0) {
|
|
37
|
-
itemsContent = (0, _react.jsx)("
|
|
94
|
+
itemsContent = (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)("div", {
|
|
95
|
+
css: _styled.listTitleStyles,
|
|
96
|
+
id: testIds.resultListTitle,
|
|
97
|
+
"data-testid": testIds.resultListTitle
|
|
98
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, linkListTitle)), (0, _react2.jsx)(_visuallyHidden.default, {
|
|
99
|
+
id: "fabric.smartcard.linkpicker.suggested.results"
|
|
100
|
+
}, hasSearchTerm && (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, messages.searchLinkResults, {
|
|
101
|
+
values: {
|
|
102
|
+
count: items.length
|
|
103
|
+
},
|
|
104
|
+
"aria-live": "polite",
|
|
105
|
+
"aria-atomic": "true"
|
|
106
|
+
}))), (0, _react2.jsx)("ul", {
|
|
38
107
|
id: id,
|
|
39
108
|
role: role,
|
|
40
109
|
css: _styled.listStyles,
|
|
41
|
-
"aria-controls":
|
|
42
|
-
"aria-labelledby":
|
|
43
|
-
"data-testid":
|
|
110
|
+
"aria-controls": "fabric.smartcard.linkpicker.suggested.results",
|
|
111
|
+
"aria-labelledby": testIds.resultListTitle,
|
|
112
|
+
"data-testid": testIds.searchResultList
|
|
44
113
|
}, items.map(function (item, index) {
|
|
45
|
-
return (0,
|
|
46
|
-
id: "".concat(
|
|
114
|
+
return (0, _react2.jsx)(_listItem.default, {
|
|
115
|
+
id: "".concat(testIds.searchResultItem, "-").concat(index),
|
|
47
116
|
role: role && 'option',
|
|
48
117
|
item: item,
|
|
49
118
|
selected: selectedIndex === index,
|
|
@@ -53,22 +122,22 @@ var LinkSearchList = function LinkSearchList(_ref) {
|
|
|
53
122
|
onSelect: onSelect,
|
|
54
123
|
key: item.objectId
|
|
55
124
|
});
|
|
56
|
-
}));
|
|
125
|
+
})));
|
|
57
126
|
}
|
|
58
127
|
|
|
59
128
|
if (isLoading) {
|
|
60
|
-
loadingContent = (0,
|
|
129
|
+
loadingContent = (0, _react2.jsx)("div", {
|
|
61
130
|
css: _styled.spinnerContainerStyles
|
|
62
|
-
}, (0,
|
|
63
|
-
testId:
|
|
131
|
+
}, (0, _react2.jsx)(_spinner.default, {
|
|
132
|
+
testId: testIds.searchResultLoadingIndicator,
|
|
64
133
|
size: "medium"
|
|
65
134
|
}));
|
|
66
135
|
}
|
|
67
136
|
|
|
68
|
-
return (0,
|
|
137
|
+
return (0, _react2.jsx)("div", (0, _extends2.default)({
|
|
138
|
+
ref: ref,
|
|
69
139
|
css: _styled.listContainerStyles
|
|
70
|
-
}, itemsContent, loadingContent);
|
|
71
|
-
};
|
|
72
|
-
|
|
140
|
+
}, restProps), itemsContent, loadingContent);
|
|
141
|
+
});
|
|
73
142
|
var _default = LinkSearchList;
|
|
74
143
|
exports.default = _default;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.testIds = exports.messages = exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = require("@emotion/react");
|
|
11
|
+
|
|
12
|
+
var _emptyState = _interopRequireDefault(require("@atlaskit/empty-state"));
|
|
13
|
+
|
|
14
|
+
var _reactIntlNext = require("react-intl-next");
|
|
15
|
+
|
|
16
|
+
var _noResultsSvg = _interopRequireDefault(require("./no-results-svg"));
|
|
17
|
+
|
|
18
|
+
var _styled = require("./styled");
|
|
19
|
+
|
|
20
|
+
/** @jsx jsx */
|
|
21
|
+
var messages = (0, _reactIntlNext.defineMessages)({
|
|
22
|
+
noResults: {
|
|
23
|
+
id: 'fabric.linkPicker.search.noResults.heading',
|
|
24
|
+
defaultMessage: 'We couldn’t find anything matching your search.',
|
|
25
|
+
description: 'Heading message shown when a search has no results'
|
|
26
|
+
},
|
|
27
|
+
noResultsDescription: {
|
|
28
|
+
id: 'fabric.linkPicker.search.noResults.description',
|
|
29
|
+
defaultMessage: 'Try again with a different term.',
|
|
30
|
+
description: 'Describes possible action when a search returns no results'
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
exports.messages = messages;
|
|
34
|
+
var testIds = {
|
|
35
|
+
emptyResultPage: 'link-search-no-results'
|
|
36
|
+
};
|
|
37
|
+
exports.testIds = testIds;
|
|
38
|
+
|
|
39
|
+
var NoResults = function NoResults() {
|
|
40
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
41
|
+
return (0, _react.jsx)("div", {
|
|
42
|
+
css: _styled.emptyStateWrapperStyles
|
|
43
|
+
}, (0, _react.jsx)(_emptyState.default, {
|
|
44
|
+
testId: testIds.emptyResultPage,
|
|
45
|
+
header: intl.formatMessage(messages.noResults),
|
|
46
|
+
description: intl.formatMessage(messages.noResultsDescription),
|
|
47
|
+
renderImage: function renderImage() {
|
|
48
|
+
return (0, _react.jsx)(_noResultsSvg.default, null);
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var _default = NoResults;
|
|
54
|
+
exports.default = _default;
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.emptyStateWrapperStyles = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _react = require("@emotion/react");
|
|
13
|
+
|
|
14
|
+
var _templateObject;
|
|
15
|
+
|
|
16
|
+
var emptyStateWrapperStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n & p {\n margin: 0;\n }\n"])));
|
|
17
|
+
exports.emptyStateWrapperStyles = emptyStateWrapperStyles;
|
|
@@ -5,17 +5,24 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.spinnerContainerStyles = exports.listStyles = exports.listContainerStyles = void 0;
|
|
8
|
+
exports.spinnerContainerStyles = exports.listTitleStyles = exports.listStyles = exports.listContainerStyles = void 0;
|
|
9
9
|
|
|
10
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
11
|
|
|
12
12
|
var _react = require("@emotion/react");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _theme = require("@atlaskit/theme");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
17
|
+
|
|
18
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
19
|
+
|
|
20
|
+
var gridSize = (0, _constants.gridSize)();
|
|
21
|
+
var listContainerStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n padding-top: 0;\n min-height: 80px;\n margin-top: ", "px;\n margin-bottom: ", "px;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n"])), gridSize * 2, gridSize * 2);
|
|
17
22
|
exports.listContainerStyles = listContainerStyles;
|
|
18
|
-
var spinnerContainerStyles = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n text-align: center;\n min-height: 80px;\n
|
|
23
|
+
var spinnerContainerStyles = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n text-align: center;\n min-height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n"])));
|
|
19
24
|
exports.spinnerContainerStyles = spinnerContainerStyles;
|
|
20
|
-
var listStyles = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n padding: 0;\n list-style: none;\n"])));
|
|
21
|
-
exports.listStyles = listStyles;
|
|
25
|
+
var listStyles = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n padding: 0;\n margin: 0;\n list-style: none;\n"])));
|
|
26
|
+
exports.listStyles = listStyles;
|
|
27
|
+
var listTitleStyles = (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n text-transform: uppercase;\n margin-top: 0;\n margin-bottom: ", "px;\n"])), _theme.typography.h100(), gridSize / 2);
|
|
28
|
+
exports.listTitleStyles = listTitleStyles;
|