@atlaskit/link-picker 0.0.2 → 0.7.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 (66) hide show
  1. package/CHANGELOG.md +140 -0
  2. package/README.md +27 -5
  3. package/dist/cjs/browser.js +39 -0
  4. package/dist/cjs/index.js +2 -2
  5. package/dist/cjs/messages.js +102 -0
  6. package/dist/cjs/styles.js +90 -0
  7. package/dist/cjs/transformTimeStamp.js +55 -0
  8. package/dist/cjs/types.js +5 -0
  9. package/dist/cjs/ui/LinkSearchList.js +112 -0
  10. package/dist/cjs/ui/LinkSearchListItem.js +101 -0
  11. package/dist/cjs/ui/PanelTextInput.js +119 -0
  12. package/dist/cjs/ui/announcer.js +64 -0
  13. package/dist/cjs/ui/link-picker.js +584 -0
  14. package/dist/cjs/url.js +104 -0
  15. package/dist/cjs/utils.js +40 -0
  16. package/dist/cjs/version.json +1 -1
  17. package/dist/es2019/browser.js +34 -0
  18. package/dist/es2019/index.js +1 -1
  19. package/dist/es2019/messages.js +93 -0
  20. package/dist/es2019/styles.js +94 -0
  21. package/dist/es2019/transformTimeStamp.js +41 -0
  22. package/dist/es2019/types.js +1 -0
  23. package/dist/es2019/ui/LinkSearchList.js +65 -0
  24. package/dist/es2019/ui/LinkSearchListItem.js +88 -0
  25. package/dist/es2019/ui/PanelTextInput.js +93 -0
  26. package/dist/es2019/ui/announcer.js +38 -0
  27. package/dist/es2019/ui/link-picker.js +480 -0
  28. package/dist/es2019/url.js +88 -0
  29. package/dist/es2019/utils.js +24 -0
  30. package/dist/es2019/version.json +1 -1
  31. package/dist/esm/browser.js +34 -0
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/messages.js +93 -0
  34. package/dist/esm/styles.js +46 -0
  35. package/dist/esm/transformTimeStamp.js +41 -0
  36. package/dist/esm/types.js +1 -0
  37. package/dist/esm/ui/LinkSearchList.js +87 -0
  38. package/dist/esm/ui/LinkSearchListItem.js +88 -0
  39. package/dist/esm/ui/PanelTextInput.js +93 -0
  40. package/dist/esm/ui/announcer.js +51 -0
  41. package/dist/esm/ui/link-picker.js +559 -0
  42. package/dist/esm/url.js +90 -0
  43. package/dist/esm/utils.js +24 -0
  44. package/dist/esm/version.json +1 -1
  45. package/dist/types/browser.d.ts +15 -0
  46. package/dist/types/index.d.ts +3 -1
  47. package/dist/types/messages.d.ts +92 -0
  48. package/dist/types/styles.d.ts +18 -0
  49. package/dist/types/transformTimeStamp.d.ts +3 -0
  50. package/dist/types/types.d.ts +37 -0
  51. package/dist/types/ui/LinkSearchList.d.ts +20 -0
  52. package/dist/types/ui/LinkSearchListItem.d.ts +17 -0
  53. package/dist/types/ui/PanelTextInput.d.ts +17 -0
  54. package/dist/types/ui/announcer.d.ts +22 -0
  55. package/dist/types/ui/link-picker.d.ts +79 -0
  56. package/dist/types/url.d.ts +5 -0
  57. package/dist/types/utils.d.ts +4 -0
  58. package/example-helpers/flight-deck/_manifest.json +9 -0
  59. package/example-helpers/flight-deck/mockFDResponse.json +133 -0
  60. package/example-helpers/mock-data.ts +316 -0
  61. package/example-helpers/providers.ts +39 -0
  62. package/package.json +35 -6
  63. package/dist/cjs/link-picker.js +0 -12
  64. package/dist/es2019/link-picker.js +0 -3
  65. package/dist/esm/link-picker.js +0 -3
  66. package/dist/types/link-picker.d.ts +0 -1
@@ -0,0 +1,101 @@
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 _core = require("@emotion/core");
11
+
12
+ var _reactIntlNext = require("react-intl-next");
13
+
14
+ var _transformTimeStamp = require("../transformTimeStamp");
15
+
16
+ var _styles = require("../styles");
17
+
18
+ /** @jsx jsx */
19
+ var LinkSearchListItem = function LinkSearchListItem(_ref) {
20
+ var item = _ref.item,
21
+ selected = _ref.selected,
22
+ active = _ref.active,
23
+ id = _ref.id,
24
+ role = _ref.role,
25
+ intl = _ref.intl,
26
+ onSelect = _ref.onSelect,
27
+ onMouseEnter = _ref.onMouseEnter,
28
+ onMouseLeave = _ref.onMouseLeave;
29
+
30
+ var handleSelect = function handleSelect() {
31
+ return onSelect(item.objectId);
32
+ };
33
+
34
+ var handleMouseEnter = function handleMouseEnter() {
35
+ return onMouseEnter(item.objectId);
36
+ };
37
+
38
+ var handleMouseLeave = function handleMouseLeave() {
39
+ return onMouseLeave(item.objectId);
40
+ };
41
+
42
+ return (0, _core.jsx)(_styles.ListItemWrapper, {
43
+ role: role,
44
+ id: id,
45
+ "aria-selected": selected,
46
+ "data-testid": "link-search-list-item",
47
+ selected: selected,
48
+ active: active,
49
+ onMouseEnter: handleMouseEnter,
50
+ onMouseLeave: handleMouseLeave,
51
+ onClick: handleSelect
52
+ }, (0, _core.jsx)(ListItemIcon, {
53
+ item: item,
54
+ intl: intl
55
+ }), (0, _core.jsx)(_styles.ItemNameWrapper, null, (0, _core.jsx)(_styles.ListItemName, null, item.name), (0, _core.jsx)(_styles.ListItemContext, null, item.container, (0, _core.jsx)(ItemTimeStamp, {
56
+ date: (0, _transformTimeStamp.transformTimeStamp)(intl, item.lastViewedDate, item.lastUpdatedDate)
57
+ }))));
58
+ };
59
+
60
+ var _default = (0, _reactIntlNext.injectIntl)(LinkSearchListItem);
61
+
62
+ exports.default = _default;
63
+
64
+ var ItemTimeStamp = function ItemTimeStamp(props) {
65
+ var date = props.date;
66
+
67
+ if (!date) {
68
+ return null;
69
+ }
70
+
71
+ return (0, _core.jsx)(_react.Fragment, null, "\xA0 \u2022", (0, _core.jsx)("span", {
72
+ className: "link-search-timestamp",
73
+ "data-test-id": "link-search-timestamp"
74
+ }, "\xA0 ", date.pageAction, " ", date.dateString, " ", date.timeSince || ''));
75
+ };
76
+
77
+ var ListItemIcon = function ListItemIcon(props) {
78
+ var item = props.item,
79
+ intl = props.intl;
80
+ var icon = item.icon,
81
+ iconAlt = item.iconAlt;
82
+
83
+ if (!icon) {
84
+ return null;
85
+ }
86
+
87
+ var alt = typeof iconAlt === 'string' ? iconAlt : intl.formatMessage(iconAlt);
88
+
89
+ if (typeof icon !== 'string') {
90
+ var Glyph = icon;
91
+ return (0, _core.jsx)(_styles.ItemIconWrapper, null, (0, _core.jsx)(Glyph, {
92
+ alt: alt
93
+ }));
94
+ }
95
+
96
+ return (0, _core.jsx)(_styles.ItemIconWrapper, null, (0, _core.jsx)("img", {
97
+ src: icon,
98
+ alt: alt,
99
+ css: _styles.ImgStyles
100
+ }));
101
+ };
@@ -0,0 +1,119 @@
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.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 = _interopRequireWildcard(require("react"));
17
+
18
+ var _form = require("@atlaskit/form");
19
+
20
+ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
21
+
22
+ var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
23
+
24
+ var _selectClear = _interopRequireDefault(require("@atlaskit/icon/glyph/select-clear"));
25
+
26
+ var _styles = require("../styles");
27
+
28
+ var _utils = require("../utils");
29
+
30
+ var _excluded = ["name", "label", "autoFocus", "onSubmit", "onRedo", "onUndo", "onChange", "onKeyDown", "onClear", "clearLabel", "error"];
31
+
32
+ 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); }
33
+
34
+ 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; }
35
+
36
+ var PanelTextInput = function PanelTextInput(props) {
37
+ var name = props.name,
38
+ label = props.label,
39
+ autoFocus = props.autoFocus,
40
+ onSubmit = props.onSubmit,
41
+ onRedo = props.onRedo,
42
+ onUndo = props.onUndo,
43
+ onChange = props.onChange,
44
+ onKeyDown = props.onKeyDown,
45
+ onClear = props.onClear,
46
+ clearLabel = props.clearLabel,
47
+ error = props.error,
48
+ restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
49
+ var inputRef = (0, _react.useRef)(null);
50
+ var handleRef = (0, _react.useCallback)(function (input) {
51
+ if (input) {
52
+ inputRef.current = input;
53
+
54
+ if (autoFocus) {
55
+ // Need this to prevent jumping when we render TextInput inside Portal @see ED-2992
56
+ input.focus({
57
+ preventScroll: true
58
+ });
59
+ }
60
+ }
61
+ }, [autoFocus]);
62
+ var handleChange = (0, _react.useCallback)(function (e) {
63
+ onChange(e.currentTarget.value);
64
+ }, [onChange]);
65
+ var handleKeydown = (0, _react.useCallback)(function (e) {
66
+ var value = e.currentTarget.value;
67
+
68
+ if (e.keyCode === 13 && onSubmit) {
69
+ e.preventDefault(); // Prevent from submitting if an editor is inside a form.
70
+
71
+ onSubmit(value);
72
+ } else if (typeof onUndo === 'function' && (0, _utils.isUndoEvent)(e)) {
73
+ e.preventDefault();
74
+ onUndo();
75
+ } else if (typeof onRedo === 'function' && (0, _utils.isRedoEvent)(e)) {
76
+ e.preventDefault();
77
+ onRedo();
78
+ }
79
+
80
+ if (onKeyDown) {
81
+ onKeyDown(e);
82
+ }
83
+ }, [onSubmit, onUndo, onRedo, onKeyDown]);
84
+ var handleClear = (0, _react.useCallback)(function () {
85
+ if (inputRef.current && onClear) {
86
+ inputRef.current.focus();
87
+ onClear();
88
+ }
89
+ }, [onClear]);
90
+
91
+ var clearText = restProps.value !== '' && /*#__PURE__*/_react.default.createElement(_tooltip.default, {
92
+ content: clearLabel
93
+ }, /*#__PURE__*/_react.default.createElement(_styles.ClearText, {
94
+ onClick: handleClear,
95
+ "data-testid": "clear-text"
96
+ }, /*#__PURE__*/_react.default.createElement(_selectClear.default, {
97
+ size: "medium",
98
+ label: clearLabel || ''
99
+ })));
100
+
101
+ return /*#__PURE__*/_react.default.createElement(_styles.FieldWrapper, null, /*#__PURE__*/_react.default.createElement(_form.Field, {
102
+ label: label,
103
+ name: name
104
+ }, function (_ref) {
105
+ var fieldProps = _ref.fieldProps;
106
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_textfield.default, (0, _extends2.default)({}, fieldProps, restProps, {
107
+ onKeyDown: handleKeydown,
108
+ onChange: handleChange,
109
+ ref: handleRef,
110
+ elemAfterInput: clearText,
111
+ isInvalid: !!error
112
+ })), error && /*#__PURE__*/_react.default.createElement(_form.ErrorMessage, {
113
+ testId: "link-error"
114
+ }, error));
115
+ }));
116
+ };
117
+
118
+ var _default = PanelTextInput;
119
+ exports.default = _default;
@@ -0,0 +1,64 @@
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.default = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ // Note: Flag 'contentRendered' resolves bug with duplicates messages (NVDA + Firefox)
21
+ // https://github.com/nvaccess/nvda/labels/bug%2Fdouble-speaking
22
+ var timer;
23
+ var Announcer = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
24
+ var _ref$ariaAtomic = _ref.ariaAtomic,
25
+ ariaAtomic = _ref$ariaAtomic === void 0 ? 'true' : _ref$ariaAtomic,
26
+ _ref$ariaLive = _ref.ariaLive,
27
+ ariaLive = _ref$ariaLive === void 0 ? 'polite' : _ref$ariaLive,
28
+ _ref$ariaRelevant = _ref.ariaRelevant,
29
+ ariaRelevant = _ref$ariaRelevant === void 0 ? 'all' : _ref$ariaRelevant,
30
+ _ref$role = _ref.role,
31
+ role = _ref$role === void 0 ? 'status' : _ref$role,
32
+ _ref$text = _ref.text,
33
+ text = _ref$text === void 0 ? '' : _ref$text,
34
+ _ref$delay = _ref.delay,
35
+ delay = _ref$delay === void 0 ? 0 : _ref$delay;
36
+
37
+ var _useState = (0, _react.useState)(false),
38
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
39
+ contentRendered = _useState2[0],
40
+ setContentRendered = _useState2[1];
41
+
42
+ (0, _react.useEffect)(function () {
43
+ clearTimeout(timer);
44
+ setContentRendered(false);
45
+ timer = setTimeout(function () {
46
+ setContentRendered(true);
47
+ }, delay);
48
+ return function () {
49
+ return clearTimeout(timer);
50
+ };
51
+ }, [text, delay]);
52
+ return /*#__PURE__*/_react.default.createElement("div", {
53
+ className: "assistive",
54
+ ref: ref,
55
+ role: role,
56
+ "aria-atomic": ariaAtomic,
57
+ "aria-relevant": ariaRelevant,
58
+ "aria-live": ariaLive
59
+ }, contentRendered && /*#__PURE__*/_react.default.createElement("span", null, text));
60
+ });
61
+
62
+ var _default = /*#__PURE__*/(0, _react.memo)(Announcer);
63
+
64
+ exports.default = _default;