@primer/components 0.0.0-202195193757 → 0.0.0-202195195659
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 +1 -1
- package/dist/browser.esm.js +93 -74
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +85 -66
- package/dist/browser.umd.js.map +1 -1
- package/lib/Autocomplete/AutocompleteInput.d.ts +1 -1
- package/lib/Autocomplete/AutocompleteInput.js +12 -12
- package/lib/Autocomplete/AutocompleteMenu.js +4 -6
- package/lib/Autocomplete/AutocompleteOverlay.js +1 -1
- package/lib/Autocomplete/index.d.ts +1 -1
- package/lib/TextInput.d.ts +1 -1
- package/lib/TextInputWithTokens.d.ts +298 -16
- package/lib/TextInputWithTokens.js +34 -26
- package/lib/Token/IssueLabelToken.d.ts +14 -0
- package/lib/Token/{TokenLabel.js → IssueLabelToken.js} +35 -28
- package/lib/Token/{TokenProfile.d.ts → ProfileToken.d.ts} +3 -3
- package/lib/Token/{TokenProfile.js → ProfileToken.js} +7 -7
- package/lib/Token/Token.d.ts +2 -2
- package/lib/Token/Token.js +34 -22
- package/lib/Token/TokenBase.d.ts +5 -5
- package/lib/Token/TokenBase.js +41 -25
- package/lib/Token/_RemoveTokenButton.d.ts +11 -2
- package/lib/Token/_RemoveTokenButton.js +53 -22
- package/lib/Token/_TokenTextContainer.d.ts +3 -0
- package/lib/Token/_TokenTextContainer.js +34 -0
- package/lib/Token/index.d.ts +2 -2
- package/lib/Token/index.js +6 -6
- package/lib/index.d.ts +1 -1
- package/lib/index.js +4 -4
- package/lib-esm/Autocomplete/AutocompleteInput.d.ts +1 -1
- package/lib-esm/Autocomplete/AutocompleteInput.js +12 -12
- package/lib-esm/Autocomplete/AutocompleteMenu.js +4 -6
- package/lib-esm/Autocomplete/AutocompleteOverlay.js +1 -1
- package/lib-esm/Autocomplete/index.d.ts +1 -1
- package/lib-esm/TextInput.d.ts +1 -1
- package/lib-esm/TextInputWithTokens.d.ts +298 -16
- package/lib-esm/TextInputWithTokens.js +34 -26
- package/lib-esm/Token/IssueLabelToken.d.ts +14 -0
- package/lib-esm/Token/{TokenLabel.js → IssueLabelToken.js} +34 -28
- package/lib-esm/Token/{TokenProfile.d.ts → ProfileToken.d.ts} +3 -3
- package/lib-esm/Token/{TokenProfile.js → ProfileToken.js} +7 -7
- package/lib-esm/Token/Token.d.ts +2 -2
- package/lib-esm/Token/Token.js +33 -22
- package/lib-esm/Token/TokenBase.d.ts +5 -5
- package/lib-esm/Token/TokenBase.js +41 -25
- package/lib-esm/Token/_RemoveTokenButton.d.ts +11 -2
- package/lib-esm/Token/_RemoveTokenButton.js +52 -22
- package/lib-esm/Token/_TokenTextContainer.d.ts +3 -0
- package/lib-esm/Token/_TokenTextContainer.js +21 -0
- package/lib-esm/Token/index.d.ts +2 -2
- package/lib-esm/Token/index.js +2 -2
- package/lib-esm/_UnstyledTextInput.js +1 -1
- package/lib-esm/index.d.ts +1 -1
- package/lib-esm/index.js +1 -1
- package/package.json +1 -1
- package/lib/Token/TokenLabel.d.ts +0 -14
- package/lib/Token/_tokenButtonUtils.d.ts +0 -10
- package/lib/Token/_tokenButtonUtils.js +0 -42
- package/lib-esm/Token/TokenLabel.d.ts +0 -14
- package/lib-esm/Token/_tokenButtonUtils.d.ts +0 -10
- package/lib-esm/Token/_tokenButtonUtils.js +0 -26
@@ -9,36 +9,67 @@ var _octiconsReact = require("@primer/octicons-react");
|
|
9
9
|
|
10
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
11
11
|
|
12
|
-
var
|
12
|
+
var _styledSystem = require("styled-system");
|
13
|
+
|
14
|
+
var _constants = require("../constants");
|
15
|
+
|
16
|
+
var _sx = _interopRequireDefault(require("../sx"));
|
13
17
|
|
14
|
-
var
|
18
|
+
var _TokenBase = require("./TokenBase");
|
15
19
|
|
16
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
21
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
23
|
+
|
24
|
+
const variants = (0, _styledSystem.variant)({
|
25
|
+
prop: 'size',
|
26
|
+
variants: {
|
27
|
+
small: {
|
28
|
+
height: _TokenBase.tokenSizes.small,
|
29
|
+
width: _TokenBase.tokenSizes.small
|
30
|
+
},
|
31
|
+
medium: {
|
32
|
+
height: _TokenBase.tokenSizes.medium,
|
33
|
+
width: _TokenBase.tokenSizes.medium
|
34
|
+
},
|
35
|
+
large: {
|
36
|
+
height: _TokenBase.tokenSizes.large,
|
37
|
+
width: _TokenBase.tokenSizes.large
|
38
|
+
},
|
39
|
+
xlarge: {
|
40
|
+
height: _TokenBase.tokenSizes.xlarge,
|
41
|
+
width: _TokenBase.tokenSizes.xlarge
|
42
|
+
}
|
43
|
+
}
|
44
|
+
});
|
45
|
+
|
46
|
+
const getTokenButtonIconSize = variant => parseInt(_TokenBase.tokenSizes[variant || _TokenBase.defaultTokenSize], 10) * 0.75;
|
47
|
+
|
48
|
+
const StyledTokenButton = _styledComponents.default.span.withConfig({
|
49
|
+
displayName: "_RemoveTokenButton__StyledTokenButton",
|
50
|
+
componentId: "sc-14lvcw1-0"
|
51
|
+
})(["background-color:transparent;font-family:inherit;color:currentColor;cursor:pointer;display:inline-flex;justify-content:center;align-items:center;user-select:none;appearance:none;text-decoration:none;padding:0;transform:", ";align-self:baseline;border:0;border-radius:999px;&:hover,&:focus{background-color:", ";}&:active{background-color:", ";}", " ", ""], props => `translate(${props.borderOffset}px, -${props.borderOffset}px)`, (0, _constants.get)('colors.fade.fg10'), (0, _constants.get)('colors.fade.fg15'), variants, _sx.default);
|
52
|
+
|
53
|
+
const RemoveTokenButton = ({
|
54
|
+
'aria-label': ariaLabel,
|
55
|
+
isParentInteractive,
|
56
|
+
size,
|
57
|
+
children,
|
23
58
|
...rest
|
24
59
|
}) => {
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
};
|
35
|
-
}).withConfig({
|
36
|
-
displayName: "_RemoveTokenButton__RemoveTokenButton",
|
37
|
-
componentId: "sc-14lvcw1-0"
|
38
|
-
})(["", " ", " transform:", ";"], _tokenButtonUtils.tokenButtonStyles, _tokenButtonUtils.variants, props => `translate(${props.borderOffset}px, -${props.borderOffset}px)`);
|
60
|
+
return /*#__PURE__*/React.createElement(StyledTokenButton, _extends({
|
61
|
+
as: isParentInteractive ? 'span' : 'button',
|
62
|
+
tabIndex: isParentInteractive ? -1 : undefined,
|
63
|
+
"aria-label": !isParentInteractive ? 'Remove token' : undefined,
|
64
|
+
size: size
|
65
|
+
}, rest), /*#__PURE__*/React.createElement(_octiconsReact.XIcon, {
|
66
|
+
size: getTokenButtonIconSize(size)
|
67
|
+
}));
|
68
|
+
};
|
39
69
|
|
70
|
+
RemoveTokenButton.displayName = "RemoveTokenButton";
|
40
71
|
RemoveTokenButton.defaultProps = {
|
41
|
-
|
72
|
+
size: _TokenBase.defaultTokenSize
|
42
73
|
};
|
43
74
|
var _default = RemoveTokenButton;
|
44
75
|
exports.default = _default;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
9
|
+
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
11
|
+
|
12
|
+
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; }
|
13
|
+
|
14
|
+
const TokenTextContainer = (0, _styledComponents.default)('span').withConfig({
|
15
|
+
displayName: "_TokenTextContainer__TokenTextContainer",
|
16
|
+
componentId: "sc-4t2bev-0"
|
17
|
+
})(["flex-grow:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1;", ""], props => {
|
18
|
+
if (props.as === 'a') {
|
19
|
+
return (0, _styledComponents.css)(["color:currentColor;text-decoration:none;"]);
|
20
|
+
}
|
21
|
+
|
22
|
+
if (props.as === 'button') {
|
23
|
+
// reset button styles, make the cursor a pointer, and add line-height
|
24
|
+
return (0, _styledComponents.css)(["background:transparent;border:none;color:inherit;font:inherit;margin:0;overflow:visible;padding:0;width:auto;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none;cursor:pointer;line-height:1;"]);
|
25
|
+
} // position psuedo-element above text content
|
26
|
+
// so it gets the click
|
27
|
+
|
28
|
+
|
29
|
+
if (props.as !== 'span') {
|
30
|
+
return (0, _styledComponents.css)(["&:after{content:'';position:absolute;left:0;top:0;right:0;bottom:0;}"]);
|
31
|
+
}
|
32
|
+
});
|
33
|
+
var _default = TokenTextContainer;
|
34
|
+
exports.default = _default;
|
package/lib/Token/index.d.ts
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
export { default } from './Token';
|
2
|
-
export { default as
|
3
|
-
export { default as
|
2
|
+
export { default as IssueLabelToken } from './IssueLabelToken';
|
3
|
+
export { default as ProfileToken } from './ProfileToken';
|
package/lib/Token/index.js
CHANGED
@@ -9,23 +9,23 @@ Object.defineProperty(exports, "default", {
|
|
9
9
|
return _Token.default;
|
10
10
|
}
|
11
11
|
});
|
12
|
-
Object.defineProperty(exports, "
|
12
|
+
Object.defineProperty(exports, "IssueLabelToken", {
|
13
13
|
enumerable: true,
|
14
14
|
get: function () {
|
15
|
-
return
|
15
|
+
return _IssueLabelToken.default;
|
16
16
|
}
|
17
17
|
});
|
18
|
-
Object.defineProperty(exports, "
|
18
|
+
Object.defineProperty(exports, "ProfileToken", {
|
19
19
|
enumerable: true,
|
20
20
|
get: function () {
|
21
|
-
return
|
21
|
+
return _ProfileToken.default;
|
22
22
|
}
|
23
23
|
});
|
24
24
|
|
25
25
|
var _Token = _interopRequireDefault(require("./Token"));
|
26
26
|
|
27
|
-
var
|
27
|
+
var _IssueLabelToken = _interopRequireDefault(require("./IssueLabelToken"));
|
28
28
|
|
29
|
-
var
|
29
|
+
var _ProfileToken = _interopRequireDefault(require("./ProfileToken"));
|
30
30
|
|
31
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
package/lib/index.d.ts
CHANGED
@@ -104,7 +104,7 @@ export { default as Text } from './Text';
|
|
104
104
|
export type { TextProps } from './Text';
|
105
105
|
export { default as Timeline } from './Timeline';
|
106
106
|
export type { TimelineProps, TimelineBadgeProps, TimelineBodyProps, TimelineBreakProps, TimelineItemsProps } from './Timeline';
|
107
|
-
export { default as Token,
|
107
|
+
export { default as Token, IssueLabelToken, ProfileToken } from './Token';
|
108
108
|
export { default as Tooltip } from './Tooltip';
|
109
109
|
export type { TooltipProps } from './Tooltip';
|
110
110
|
export { default as Truncate } from './Truncate';
|
package/lib/index.js
CHANGED
@@ -459,16 +459,16 @@ Object.defineProperty(exports, "Token", {
|
|
459
459
|
return _Token.default;
|
460
460
|
}
|
461
461
|
});
|
462
|
-
Object.defineProperty(exports, "
|
462
|
+
Object.defineProperty(exports, "IssueLabelToken", {
|
463
463
|
enumerable: true,
|
464
464
|
get: function () {
|
465
|
-
return _Token.
|
465
|
+
return _Token.IssueLabelToken;
|
466
466
|
}
|
467
467
|
});
|
468
|
-
Object.defineProperty(exports, "
|
468
|
+
Object.defineProperty(exports, "ProfileToken", {
|
469
469
|
enumerable: true,
|
470
470
|
get: function () {
|
471
|
-
return _Token.
|
471
|
+
return _Token.ProfileToken;
|
472
472
|
}
|
473
473
|
});
|
474
474
|
Object.defineProperty(exports, "Tooltip", {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import type * as Polymorphic from
|
2
|
+
import type * as Polymorphic from '@radix-ui/react-polymorphic';
|
3
3
|
import { ComponentProps } from '../utils/types';
|
4
4
|
declare type InternalAutocompleteInputProps = {
|
5
5
|
as?: React.ComponentType<any>;
|
@@ -27,12 +27,12 @@ const AutocompleteInput = /*#__PURE__*/React.forwardRef(({
|
|
27
27
|
} = useContext(AutocompleteContext);
|
28
28
|
const combinedInputRef = useCombinedRefs(inputRef, forwardedRef);
|
29
29
|
const [highlightRemainingText, setHighlightRemainingText] = useState(true);
|
30
|
-
const handleInputFocus = useCallback(
|
31
|
-
onFocus && onFocus(
|
30
|
+
const handleInputFocus = useCallback(event => {
|
31
|
+
onFocus && onFocus(event);
|
32
32
|
setShowMenu && setShowMenu(true);
|
33
33
|
}, [onFocus, setShowMenu]);
|
34
|
-
const handleInputBlur = useCallback(
|
35
|
-
onBlur && onBlur(
|
34
|
+
const handleInputBlur = useCallback(event => {
|
35
|
+
onBlur && onBlur(event); // HACK: wait a tick and check the focused element before hiding the autocomplete menu
|
36
36
|
// this prevents the menu from hiding when the user is clicking an option in the Autoselect.Menu,
|
37
37
|
// but still hides the menu when the user blurs the input by tabbing out or clicking somewhere else on the page
|
38
38
|
|
@@ -42,28 +42,28 @@ const AutocompleteInput = /*#__PURE__*/React.forwardRef(({
|
|
42
42
|
}
|
43
43
|
}, 0);
|
44
44
|
}, [onBlur, setShowMenu]);
|
45
|
-
const handleInputChange = useCallback(
|
46
|
-
onChange && onChange(
|
47
|
-
setInputValue && setInputValue(
|
45
|
+
const handleInputChange = useCallback(event => {
|
46
|
+
onChange && onChange(event);
|
47
|
+
setInputValue && setInputValue(event.currentTarget.value);
|
48
48
|
|
49
49
|
if (!showMenu) {
|
50
50
|
setShowMenu && setShowMenu(true);
|
51
51
|
}
|
52
52
|
}, [onChange, setInputValue, setShowMenu, showMenu]);
|
53
|
-
const handleInputKeyDown = useCallback(
|
53
|
+
const handleInputKeyDown = useCallback(event => {
|
54
54
|
var _inputRef$current;
|
55
55
|
|
56
|
-
if (
|
56
|
+
if (event.key === 'Backspace') {
|
57
57
|
setHighlightRemainingText(false);
|
58
58
|
}
|
59
59
|
|
60
|
-
if (
|
60
|
+
if (event.key === 'Escape' && inputRef !== null && inputRef !== void 0 && (_inputRef$current = inputRef.current) !== null && _inputRef$current !== void 0 && _inputRef$current.value) {
|
61
61
|
setInputValue && setInputValue('');
|
62
62
|
inputRef.current.value = '';
|
63
63
|
}
|
64
64
|
}, [inputRef, setInputValue, setHighlightRemainingText]);
|
65
|
-
const handleInputKeyUp = useCallback(
|
66
|
-
if (
|
65
|
+
const handleInputKeyUp = useCallback(event => {
|
66
|
+
if (event.key === 'Backspace') {
|
67
67
|
setHighlightRemainingText(true);
|
68
68
|
}
|
69
69
|
}, [setHighlightRemainingText]);
|
@@ -32,8 +32,6 @@ function getItemById(itemId, items) {
|
|
32
32
|
return items.find(item => item.id === itemId);
|
33
33
|
}
|
34
34
|
|
35
|
-
;
|
36
|
-
|
37
35
|
// TODO: consider making 'aria-labelledby' required
|
38
36
|
function AutocompleteMenu(props) {
|
39
37
|
const {
|
@@ -58,7 +56,7 @@ function AutocompleteMenu(props) {
|
|
58
56
|
loading,
|
59
57
|
selectionVariant,
|
60
58
|
filterFn = getDefaultItemFilter(inputValue),
|
61
|
-
|
59
|
+
'aria-labelledby': ariaLabelledBy,
|
62
60
|
onOpenChange,
|
63
61
|
onSelectedChange = getDefaultOnSelectionChange(setInputValue),
|
64
62
|
customScrollContainerRef
|
@@ -70,7 +68,7 @@ function AutocompleteMenu(props) {
|
|
70
68
|
}) => id));
|
71
69
|
const selectableItems = useMemo(() => items.map(selectableItem => {
|
72
70
|
return { ...selectableItem,
|
73
|
-
role:
|
71
|
+
role: 'option',
|
74
72
|
id: selectableItem.id,
|
75
73
|
selected: selectionVariant === 'multiple' ? selectedItemIds.includes(selectableItem.id) : undefined,
|
76
74
|
onAction: item => {
|
@@ -125,7 +123,7 @@ function AutocompleteMenu(props) {
|
|
125
123
|
}
|
126
124
|
|
127
125
|
if (current) {
|
128
|
-
const selectedItem = selectableItems.find(item => item.id.toString() ===
|
126
|
+
const selectedItem = selectableItems.find(item => item.id.toString() === current.dataset.id);
|
129
127
|
setHighlightedItem(selectedItem);
|
130
128
|
setIsMenuDirectlyActivated && setIsMenuDirectlyActivated(directlyActivated);
|
131
129
|
}
|
@@ -182,7 +180,7 @@ function AutocompleteMenu(props) {
|
|
182
180
|
}, /*#__PURE__*/React.createElement(Spinner, null)) : /*#__PURE__*/React.createElement("div", {
|
183
181
|
ref: listContainerRef
|
184
182
|
}, allItemsToRender.length ? /*#__PURE__*/React.createElement(ActionList, {
|
185
|
-
selectionVariant: "multiple" // have to typecast to `ItemProps` because we have an extra property
|
183
|
+
selectionVariant: "multiple" // have to typecast to `ItemProps` because we have an extra property
|
186
184
|
// on `items` for Autocomplete: `metadata`
|
187
185
|
,
|
188
186
|
items: allItemsToRender,
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export { default } from './Autocomplete';
|
2
|
-
export type { AutocompleteMenuProps, AutocompleteInputProps, AutocompleteOverlayProps
|
2
|
+
export type { AutocompleteMenuProps, AutocompleteInputProps, AutocompleteOverlayProps } from './Autocomplete';
|
package/lib-esm/TextInput.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { MaxWidthProps, MinWidthProps, WidthProps } from 'styled-system';
|
3
|
-
import type * as Polymorphic from
|
3
|
+
import type * as Polymorphic from '@radix-ui/react-polymorphic';
|
4
4
|
import { SxProp } from './sx';
|
5
5
|
import { ComponentProps } from './utils/types';
|
6
6
|
import UnstyledTextInput from './_UnstyledTextInput';
|