@primer/components 0.0.0-2021927202224 → 0.0.0-2021927203020
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 -23
- package/dist/browser.esm.js +53 -54
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +50 -51
- package/dist/browser.umd.js.map +1 -1
- package/lib/ActionList/Item.d.ts +0 -6
- package/lib/ActionList/Item.js +1 -5
- package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +4 -2
- package/lib/Autocomplete/Autocomplete.d.ts +4 -2
- package/lib/Autocomplete/AutocompleteInput.d.ts +4 -2
- package/lib/Breadcrumbs.d.ts +7 -8
- package/lib/Breadcrumbs.js +12 -7
- package/lib/DatePicker/DatePicker.d.ts +48 -0
- package/lib/DatePicker/DatePicker.js +104 -0
- package/lib/DatePicker/DatePickerAnchor.d.ts +5 -0
- package/lib/DatePicker/DatePickerAnchor.js +182 -0
- package/lib/DatePicker/DatePickerOverlay.d.ts +3 -0
- package/lib/DatePicker/DatePickerOverlay.js +48 -0
- package/lib/DatePicker/DatePickerPanel.d.ts +2 -0
- package/lib/DatePicker/DatePickerPanel.js +126 -0
- package/lib/DatePicker/Day.d.ts +14 -0
- package/lib/DatePicker/Day.js +190 -0
- package/lib/DatePicker/Month.d.ts +9 -0
- package/lib/DatePicker/Month.js +120 -0
- package/lib/DatePicker/index.d.ts +2 -0
- package/lib/DatePicker/index.js +13 -0
- package/lib/DatePicker/useDatePicker.d.ts +88 -0
- package/lib/DatePicker/useDatePicker.js +433 -0
- package/lib/SelectMenu/SelectMenu.d.ts +4 -2
- package/lib/TextInputWithTokens.d.ts +4 -6
- package/lib/TextInputWithTokens.js +29 -102
- package/lib/Token/Token.js +2 -13
- package/lib/Token/TokenBase.js +4 -0
- package/lib/Token/_RemoveTokenButton.js +2 -15
- package/lib/_TextInputWrapper.js +1 -1
- package/lib/hooks/useDebounce.d.ts +2 -0
- package/lib/hooks/useDebounce.js +24 -0
- package/lib/theme-preval.js +2 -2
- package/lib/utils/testing.d.ts +1 -1
- package/lib-esm/ActionList/Item.d.ts +0 -6
- package/lib-esm/ActionList/Item.js +1 -5
- package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +4 -2
- package/lib-esm/Autocomplete/Autocomplete.d.ts +4 -2
- package/lib-esm/Autocomplete/AutocompleteInput.d.ts +4 -2
- package/lib-esm/Breadcrumbs.d.ts +7 -8
- package/lib-esm/Breadcrumbs.js +13 -8
- package/lib-esm/DatePicker/DatePicker.d.ts +48 -0
- package/lib-esm/DatePicker/DatePicker.js +87 -0
- package/lib-esm/DatePicker/DatePickerAnchor.d.ts +5 -0
- package/lib-esm/DatePicker/DatePickerAnchor.js +155 -0
- package/lib-esm/DatePicker/DatePickerOverlay.d.ts +3 -0
- package/lib-esm/DatePicker/DatePickerOverlay.js +29 -0
- package/lib-esm/DatePicker/DatePickerPanel.d.ts +2 -0
- package/lib-esm/DatePicker/DatePickerPanel.js +100 -0
- package/lib-esm/DatePicker/Day.d.ts +14 -0
- package/lib-esm/DatePicker/Day.js +167 -0
- package/lib-esm/DatePicker/Month.d.ts +9 -0
- package/lib-esm/DatePicker/Month.js +96 -0
- package/lib-esm/DatePicker/index.d.ts +2 -0
- package/lib-esm/DatePicker/index.js +1 -0
- package/lib-esm/DatePicker/useDatePicker.d.ts +88 -0
- package/lib-esm/DatePicker/useDatePicker.js +403 -0
- package/lib-esm/SelectMenu/SelectMenu.d.ts +4 -2
- package/lib-esm/TextInputWithTokens.d.ts +4 -6
- package/lib-esm/TextInputWithTokens.js +30 -101
- package/lib-esm/Token/Token.js +2 -13
- package/lib-esm/Token/TokenBase.js +4 -0
- package/lib-esm/Token/_RemoveTokenButton.js +2 -11
- package/lib-esm/_TextInputWrapper.js +1 -1
- package/lib-esm/hooks/useDebounce.d.ts +2 -0
- package/lib-esm/hooks/useDebounce.js +16 -0
- package/lib-esm/theme-preval.js +2 -2
- package/lib-esm/utils/testing.d.ts +1 -1
- package/package.json +14 -13
@@ -9,17 +9,9 @@ import Token from './Token/Token';
|
|
9
9
|
import { useProvidedRefOrCreate } from './hooks';
|
10
10
|
import UnstyledTextInput from './_UnstyledTextInput';
|
11
11
|
import TextInputWrapper from './_TextInputWrapper';
|
12
|
-
import Box from './Box';
|
13
|
-
import Text from './Text';
|
14
|
-
import { isFocusable } from './utils/iterateFocusableElements'; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
15
|
-
|
16
|
-
const overflowCountFontSizeMap = {
|
17
|
-
small: 0,
|
18
|
-
medium: 1,
|
19
|
-
large: 1,
|
20
|
-
extralarge: 2
|
21
|
-
}; // using forwardRef is important so that other components (ex. Autocomplete) can use the ref
|
12
|
+
import Box from './Box'; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
22
13
|
|
14
|
+
// using forwardRef is important so that other components (ex. Autocomplete) can use the ref
|
23
15
|
function TextInputWithTokensInnerComponent({
|
24
16
|
icon: IconComponent,
|
25
17
|
contrast,
|
@@ -39,11 +31,9 @@ function TextInputWithTokensInnerComponent({
|
|
39
31
|
minWidth: minWidthProp,
|
40
32
|
maxWidth: maxWidthProp,
|
41
33
|
variant: variantProp,
|
42
|
-
visibleTokenCount,
|
43
34
|
...rest
|
44
35
|
}, externalRef) {
|
45
36
|
const {
|
46
|
-
onBlur,
|
47
37
|
onFocus,
|
48
38
|
onKeyDown,
|
49
39
|
...inputPropsRest
|
@@ -52,7 +42,6 @@ function TextInputWithTokensInnerComponent({
|
|
52
42
|
const localInputRef = useRef(null);
|
53
43
|
const combinedInputRef = useCombinedRefs(localInputRef, ref);
|
54
44
|
const [selectedTokenIndex, setSelectedTokenIndex] = useState();
|
55
|
-
const [tokensAreTruncated, setTokensAreTruncated] = useState(Boolean(visibleTokenCount));
|
56
45
|
const {
|
57
46
|
containerRef
|
58
47
|
} = useFocusZone({
|
@@ -87,25 +76,14 @@ function TextInputWithTokensInnerComponent({
|
|
87
76
|
}, [selectedTokenIndex]);
|
88
77
|
|
89
78
|
const handleTokenRemove = tokenId => {
|
90
|
-
onTokenRemove(tokenId);
|
91
|
-
|
92
|
-
setTimeout(() => {
|
93
|
-
var _containerRef$current2, _containerRef$current3;
|
94
|
-
|
95
|
-
const nextElementToFocus = (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.children[selectedTokenIndex || 0]; // when removing the first token by keying "Backspace" or "Delete",
|
96
|
-
// `nextFocusableElement` is the div that wraps the input
|
79
|
+
onTokenRemove(tokenId);
|
97
80
|
|
98
|
-
|
81
|
+
if (selectedTokenIndex) {
|
82
|
+
var _containerRef$current2;
|
99
83
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
var _ref$current;
|
104
|
-
|
105
|
-
// if there are no tokens left, focus the input
|
106
|
-
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
107
|
-
}
|
108
|
-
}, 0);
|
84
|
+
const nextElementToFocus = (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.children[selectedTokenIndex];
|
85
|
+
nextElementToFocus.focus();
|
86
|
+
}
|
109
87
|
};
|
110
88
|
|
111
89
|
const handleTokenFocus = tokenIndex => () => {
|
@@ -113,55 +91,30 @@ function TextInputWithTokensInnerComponent({
|
|
113
91
|
};
|
114
92
|
|
115
93
|
const handleTokenBlur = () => {
|
116
|
-
setSelectedTokenIndex(undefined);
|
117
|
-
// this prevents the tokens from hiding when the user is moving focus between tokens,
|
118
|
-
// but still hides the tokens when the user blurs the token by tabbing out or clicking somewhere else on the page
|
119
|
-
|
120
|
-
setTimeout(() => {
|
121
|
-
var _containerRef$current4;
|
122
|
-
|
123
|
-
if (!((_containerRef$current4 = containerRef.current) !== null && _containerRef$current4 !== void 0 && _containerRef$current4.contains(document.activeElement)) && visibleTokenCount) {
|
124
|
-
setTokensAreTruncated(true);
|
125
|
-
}
|
126
|
-
}, 0);
|
94
|
+
setSelectedTokenIndex(undefined);
|
127
95
|
};
|
128
96
|
|
129
|
-
const handleTokenKeyUp =
|
130
|
-
if (
|
131
|
-
var _ref$
|
97
|
+
const handleTokenKeyUp = e => {
|
98
|
+
if (e.key === 'Escape') {
|
99
|
+
var _ref$current;
|
132
100
|
|
133
|
-
(_ref$
|
101
|
+
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
134
102
|
}
|
135
103
|
};
|
136
104
|
|
137
|
-
const handleInputFocus =
|
138
|
-
onFocus && onFocus(
|
105
|
+
const handleInputFocus = e => {
|
106
|
+
onFocus && onFocus(e);
|
139
107
|
setSelectedTokenIndex(undefined);
|
140
|
-
visibleTokenCount && setTokensAreTruncated(false);
|
141
|
-
};
|
142
|
-
|
143
|
-
const handleInputBlur = event => {
|
144
|
-
onBlur && onBlur(event); // HACK: wait a tick and check the focused element before hiding truncated tokens
|
145
|
-
// this prevents the tokens from hiding when the user is moving focus from the input to a token,
|
146
|
-
// but still hides the tokens when the user blurs the input by tabbing out or clicking somewhere else on the page
|
147
|
-
|
148
|
-
setTimeout(() => {
|
149
|
-
var _containerRef$current5;
|
150
|
-
|
151
|
-
if (!((_containerRef$current5 = containerRef.current) !== null && _containerRef$current5 !== void 0 && _containerRef$current5.contains(document.activeElement)) && visibleTokenCount) {
|
152
|
-
setTokensAreTruncated(true);
|
153
|
-
}
|
154
|
-
}, 0);
|
155
108
|
};
|
156
109
|
|
157
110
|
const handleInputKeyDown = e => {
|
158
|
-
var _ref$
|
111
|
+
var _ref$current2;
|
159
112
|
|
160
113
|
if (onKeyDown) {
|
161
114
|
onKeyDown(e);
|
162
115
|
}
|
163
116
|
|
164
|
-
if ((_ref$
|
117
|
+
if ((_ref$current2 = ref.current) !== null && _ref$current2 !== void 0 && _ref$current2.value) {
|
165
118
|
return;
|
166
119
|
}
|
167
120
|
|
@@ -182,24 +135,13 @@ function TextInputWithTokensInnerComponent({
|
|
182
135
|
|
183
136
|
|
184
137
|
setTimeout(() => {
|
185
|
-
var _ref$
|
138
|
+
var _ref$current3;
|
186
139
|
|
187
|
-
(_ref$
|
140
|
+
(_ref$current3 = ref.current) === null || _ref$current3 === void 0 ? void 0 : _ref$current3.select();
|
188
141
|
}, 0);
|
189
142
|
}
|
190
143
|
};
|
191
144
|
|
192
|
-
const focusInput = () => {
|
193
|
-
var _combinedInputRef$cur;
|
194
|
-
|
195
|
-
(_combinedInputRef$cur = combinedInputRef.current) === null || _combinedInputRef$cur === void 0 ? void 0 : _combinedInputRef$cur.focus();
|
196
|
-
};
|
197
|
-
|
198
|
-
const preventTokenClickPropagation = event => {
|
199
|
-
event.stopPropagation();
|
200
|
-
};
|
201
|
-
|
202
|
-
const visibleTokens = tokensAreTruncated ? tokens.slice(0, visibleTokenCount) : tokens;
|
203
145
|
return /*#__PURE__*/React.createElement(TextInputWrapper, {
|
204
146
|
block: block,
|
205
147
|
className: className,
|
@@ -211,8 +153,15 @@ function TextInputWithTokensInnerComponent({
|
|
211
153
|
minWidth: minWidthProp,
|
212
154
|
maxWidth: maxWidthProp,
|
213
155
|
variant: variantProp,
|
214
|
-
|
215
|
-
sx: {
|
156
|
+
ref: containerRef,
|
157
|
+
sx: {
|
158
|
+
alignItems: 'center',
|
159
|
+
flexWrap: preventTokenWrapping ? 'nowrap' : 'wrap',
|
160
|
+
gap: '0.25rem',
|
161
|
+
'> *': {
|
162
|
+
flexShrink: 0
|
163
|
+
},
|
164
|
+
...(block ? {
|
216
165
|
display: 'flex',
|
217
166
|
width: '100%'
|
218
167
|
} : {}),
|
@@ -225,21 +174,6 @@ function TextInputWithTokensInnerComponent({
|
|
225
174
|
} : {}),
|
226
175
|
...sxProp
|
227
176
|
}
|
228
|
-
}, /*#__PURE__*/React.createElement(Box, {
|
229
|
-
ref: containerRef,
|
230
|
-
display: "flex",
|
231
|
-
sx: {
|
232
|
-
alignItems: 'center',
|
233
|
-
flexWrap: preventTokenWrapping ? 'nowrap' : 'wrap',
|
234
|
-
marginLeft: '-0.25rem',
|
235
|
-
marginBottom: '-0.25rem',
|
236
|
-
flexGrow: 1,
|
237
|
-
'> *': {
|
238
|
-
flexShrink: 0,
|
239
|
-
marginLeft: '0.25rem',
|
240
|
-
marginBottom: '0.25rem'
|
241
|
-
}
|
242
|
-
}
|
243
177
|
}, /*#__PURE__*/React.createElement(Box, {
|
244
178
|
sx: {
|
245
179
|
order: 1,
|
@@ -251,13 +185,12 @@ function TextInputWithTokensInnerComponent({
|
|
251
185
|
ref: combinedInputRef,
|
252
186
|
disabled: disabled,
|
253
187
|
onFocus: handleInputFocus,
|
254
|
-
onBlur: handleInputBlur,
|
255
188
|
onKeyDown: handleInputKeyDown,
|
256
189
|
type: "text",
|
257
190
|
sx: {
|
258
191
|
height: '100%'
|
259
192
|
}
|
260
|
-
}, inputPropsRest))), TokenComponent ?
|
193
|
+
}, inputPropsRest))), tokens.length && TokenComponent ? tokens.map(({
|
261
194
|
id,
|
262
195
|
...tokenRest
|
263
196
|
}, i) => /*#__PURE__*/React.createElement(TokenComponent, _extends({
|
@@ -265,7 +198,6 @@ function TextInputWithTokensInnerComponent({
|
|
265
198
|
onFocus: handleTokenFocus(i),
|
266
199
|
onBlur: handleTokenBlur,
|
267
200
|
onKeyUp: handleTokenKeyUp,
|
268
|
-
onClick: preventTokenClickPropagation,
|
269
201
|
isSelected: selectedTokenIndex === i,
|
270
202
|
onRemove: () => {
|
271
203
|
handleTokenRemove(id);
|
@@ -273,10 +205,7 @@ function TextInputWithTokensInnerComponent({
|
|
273
205
|
hideRemoveButton: hideTokenRemoveButtons,
|
274
206
|
size: size,
|
275
207
|
tabIndex: 0
|
276
|
-
}, tokenRest))) : null
|
277
|
-
color: "fg.muted",
|
278
|
-
fontSize: size && overflowCountFontSizeMap[size]
|
279
|
-
}, "+", tokens.length - visibleTokens.length) : null));
|
208
|
+
}, tokenRest))) : null);
|
280
209
|
}
|
281
210
|
|
282
211
|
TextInputWithTokensInnerComponent.displayName = "TextInputWithTokensInnerComponent";
|
package/lib-esm/Token/Token.js
CHANGED
@@ -19,16 +19,7 @@ const DefaultTokenStyled = styled(TokenBase).withConfig({
|
|
19
19
|
const LeadingVisualContainer = styled('span').withConfig({
|
20
20
|
displayName: "Token__LeadingVisualContainer",
|
21
21
|
componentId: "sc-1dg52pw-1"
|
22
|
-
})(["flex-shrink:0;line-height:0;"
|
23
|
-
switch (props.size) {
|
24
|
-
case 'large':
|
25
|
-
case 'extralarge':
|
26
|
-
return css(["margin-right:", ";"], get('space.2'));
|
27
|
-
|
28
|
-
default:
|
29
|
-
return css(["margin-right:", ";"], get('space.1'));
|
30
|
-
}
|
31
|
-
});
|
22
|
+
})(["flex-shrink:0;line-height:0;"]);
|
32
23
|
const Token = /*#__PURE__*/forwardRef((props, forwardedRef) => {
|
33
24
|
const {
|
34
25
|
as,
|
@@ -63,9 +54,7 @@ const Token = /*#__PURE__*/forwardRef((props, forwardedRef) => {
|
|
63
54
|
isTokenInteractive: isTokenInteractive(props)
|
64
55
|
}, !hasMultipleActionTargets ? interactiveTokenProps : {}, rest, {
|
65
56
|
ref: forwardedRef
|
66
|
-
}), LeadingVisual ? /*#__PURE__*/React.createElement(LeadingVisualContainer, {
|
67
|
-
size: size
|
68
|
-
}, /*#__PURE__*/React.createElement(LeadingVisual, null)) : null, /*#__PURE__*/React.createElement(TokenTextContainer, hasMultipleActionTargets ? interactiveTokenProps : {}, text), !hideRemoveButton && onRemove ? /*#__PURE__*/React.createElement(RemoveTokenButton, {
|
57
|
+
}), LeadingVisual ? /*#__PURE__*/React.createElement(LeadingVisualContainer, null, /*#__PURE__*/React.createElement(LeadingVisual, null)) : null, /*#__PURE__*/React.createElement(TokenTextContainer, hasMultipleActionTargets ? interactiveTokenProps : {}, text), !hideRemoveButton && onRemove ? /*#__PURE__*/React.createElement(RemoveTokenButton, {
|
69
58
|
borderOffset: tokenBorderWidthPx,
|
70
59
|
onClick: onRemoveClick,
|
71
60
|
size: size,
|
@@ -20,6 +20,7 @@ const variants = variant({
|
|
20
20
|
variants: {
|
21
21
|
small: {
|
22
22
|
fontSize: 0,
|
23
|
+
gap: 1,
|
23
24
|
height: tokenSizes.small,
|
24
25
|
// without setting lineHeight to match height, the "x" appears vertically mis-aligned
|
25
26
|
lineHeight: tokenSizes.small,
|
@@ -32,6 +33,7 @@ const variants = variant({
|
|
32
33
|
},
|
33
34
|
medium: {
|
34
35
|
fontSize: 0,
|
36
|
+
gap: 1,
|
35
37
|
height: tokenSizes.medium,
|
36
38
|
lineHeight: tokenSizes.medium,
|
37
39
|
paddingLeft: 2,
|
@@ -41,6 +43,7 @@ const variants = variant({
|
|
41
43
|
},
|
42
44
|
large: {
|
43
45
|
fontSize: 0,
|
46
|
+
gap: 2,
|
44
47
|
height: tokenSizes.large,
|
45
48
|
lineHeight: tokenSizes.large,
|
46
49
|
paddingLeft: 2,
|
@@ -50,6 +53,7 @@ const variants = variant({
|
|
50
53
|
},
|
51
54
|
extralarge: {
|
52
55
|
fontSize: 1,
|
56
|
+
gap: 2,
|
53
57
|
height: tokenSizes.extralarge,
|
54
58
|
lineHeight: tokenSizes.extralarge,
|
55
59
|
paddingLeft: 3,
|
@@ -2,7 +2,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
2
2
|
|
3
3
|
import React from 'react';
|
4
4
|
import { XIcon } from '@primer/octicons-react';
|
5
|
-
import styled
|
5
|
+
import styled from 'styled-components';
|
6
6
|
import { variant } from 'styled-system';
|
7
7
|
import { get } from '../constants';
|
8
8
|
import sx from '../sx';
|
@@ -34,16 +34,7 @@ const getTokenButtonIconSize = size => parseInt(tokenSizes[size || defaultTokenS
|
|
34
34
|
const StyledTokenButton = styled.span.withConfig({
|
35
35
|
displayName: "_RemoveTokenButton__StyledTokenButton",
|
36
36
|
componentId: "sc-14lvcw1-0"
|
37
|
-
})(["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
|
38
|
-
switch (props.size) {
|
39
|
-
case 'large':
|
40
|
-
case 'extralarge':
|
41
|
-
return css(["margin-left:", ";"], get('space.2'));
|
42
|
-
|
43
|
-
default:
|
44
|
-
return css(["margin-left:", ";"], get('space.1'));
|
45
|
-
}
|
46
|
-
}, get('colors.neutral.muted'), get('colors.neutral.subtle'), variants, sx);
|
37
|
+
})(["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)`, get('colors.neutral.muted'), get('colors.neutral.subtle'), variants, sx);
|
47
38
|
|
48
39
|
const RemoveTokenButton = ({
|
49
40
|
'aria-label': ariaLabel,
|
@@ -21,7 +21,7 @@ const sizeVariants = variant({
|
|
21
21
|
const TextInputWrapper = styled.span.withConfig({
|
22
22
|
displayName: "_TextInputWrapper__TextInputWrapper",
|
23
23
|
componentId: "sc-5vfcis-0"
|
24
|
-
})(["display:inline-flex;align-items:stretch;min-height:34px;font-size:", ";line-height:20px;color:", ";vertical-align:middle;background-repeat:no-repeat;background-position:right 8px center;border:1px solid ", ";border-radius:", ";outline:none;box-shadow:", ";
|
24
|
+
})(["display:inline-flex;align-items:stretch;min-height:34px;font-size:", ";line-height:20px;color:", ";vertical-align:middle;background-repeat:no-repeat;background-position:right 8px center;border:1px solid ", ";border-radius:", ";outline:none;box-shadow:", ";", " .TextInput-icon{align-self:center;color:", ";margin:0 ", ";flex-shrink:0;}&:focus-within{border-color:", ";box-shadow:", ";}", " ", " ", " @media (min-width:", "){font-size:", ";}", " ", " ", " ", " ", ";"], get('fontSizes.1'), get('colors.fg.default'), get('colors.border.default'), get('radii.2'), get('shadows.primer.shadow.inset'), props => {
|
25
25
|
if (props.hasIcon) {
|
26
26
|
return css(["padding:0;"]);
|
27
27
|
} else {
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { useEffect, useState } from 'react';
|
2
|
+
|
3
|
+
function useDebounce(value, delay) {
|
4
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
5
|
+
useEffect(() => {
|
6
|
+
const handler = setTimeout(() => {
|
7
|
+
setDebouncedValue(value);
|
8
|
+
}, delay);
|
9
|
+
return () => {
|
10
|
+
clearTimeout(handler);
|
11
|
+
};
|
12
|
+
}, [value, delay]);
|
13
|
+
return debouncedValue;
|
14
|
+
}
|
15
|
+
|
16
|
+
export default useDebounce;
|
package/lib-esm/theme-preval.js
CHANGED
@@ -515,7 +515,7 @@ module.exports = {
|
|
515
515
|
}
|
516
516
|
}
|
517
517
|
},
|
518
|
-
"
|
518
|
+
"light_colorblind": {
|
519
519
|
"colors": {
|
520
520
|
"canvasDefaultTransparent": "rgba(255,255,255,0)",
|
521
521
|
"marketingIcon": {
|
@@ -2456,7 +2456,7 @@ module.exports = {
|
|
2456
2456
|
}
|
2457
2457
|
}
|
2458
2458
|
},
|
2459
|
-
"
|
2459
|
+
"dark_colorblind": {
|
2460
2460
|
"colors": {
|
2461
2461
|
"canvasDefaultTransparent": "rgba(13,17,23,0)",
|
2462
2462
|
"marketingIcon": {
|
@@ -53,7 +53,7 @@ export declare function render(component: React.ReactElement, theme?: {
|
|
53
53
|
xlarge: string;
|
54
54
|
};
|
55
55
|
space: string[];
|
56
|
-
colorSchemes: Record<"light" | "
|
56
|
+
colorSchemes: Record<"light" | "light_colorblind" | "dark" | "dark_dimmed" | "dark_high_contrast" | "dark_colorblind", Record<"colors" | "shadows", Partial<{
|
57
57
|
canvasDefaultTransparent: string;
|
58
58
|
marketingIcon: {
|
59
59
|
primary: string;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@primer/components",
|
3
|
-
"version": "0.0.0-
|
3
|
+
"version": "0.0.0-2021927203020",
|
4
4
|
"description": "Primer react components",
|
5
5
|
"main": "lib/index.js",
|
6
6
|
"module": "lib-esm/index.js",
|
@@ -43,20 +43,16 @@
|
|
43
43
|
"author": "GitHub, Inc.",
|
44
44
|
"license": "MIT",
|
45
45
|
"dependencies": {
|
46
|
-
"@primer/octicons-react": "^
|
47
|
-
"@primer/primitives": "
|
46
|
+
"@primer/octicons-react": "^16.1.0",
|
47
|
+
"@primer/primitives": "6.0.0",
|
48
48
|
"@radix-ui/react-polymorphic": "0.0.14",
|
49
49
|
"@react-aria/ssr": "3.1.0",
|
50
50
|
"@styled-system/css": "5.1.5",
|
51
51
|
"@styled-system/props": "5.1.5",
|
52
52
|
"@styled-system/theme-get": "5.1.2",
|
53
|
-
"@types/history": "4.7.8",
|
54
|
-
"@types/styled-components": "5.1.11",
|
55
|
-
"@types/styled-system": "5.1.12",
|
56
|
-
"@types/styled-system__css": "5.0.16",
|
57
|
-
"@types/styled-system__theme-get": "5.0.1",
|
58
53
|
"classnames": "2.3.1",
|
59
54
|
"color2k": "1.2.4",
|
55
|
+
"date-fns": "2.25.0",
|
60
56
|
"deepmerge": "4.2.2",
|
61
57
|
"focus-visible": "5.2.0",
|
62
58
|
"styled-system": "5.1.5"
|
@@ -76,15 +72,20 @@
|
|
76
72
|
"@rollup/plugin-commonjs": "19.0.2",
|
77
73
|
"@rollup/plugin-node-resolve": "13.0.5",
|
78
74
|
"@size-limit/preset-big-lib": "5.0.2",
|
79
|
-
"@storybook/addon-a11y": "6.3.
|
80
|
-
"@storybook/addon-actions": "^6.
|
81
|
-
"@storybook/addon-essentials": "6.
|
82
|
-
"@storybook/addon-links": "^6.
|
83
|
-
"@storybook/react": "6.3.
|
75
|
+
"@storybook/addon-a11y": "6.3.4",
|
76
|
+
"@storybook/addon-actions": "^6.2.9",
|
77
|
+
"@storybook/addon-essentials": "6.2.9",
|
78
|
+
"@storybook/addon-links": "^6.2.9",
|
79
|
+
"@storybook/react": "6.3.8",
|
84
80
|
"@testing-library/dom": "7.31.2",
|
85
81
|
"@testing-library/react": "11.2.7",
|
86
82
|
"@testing-library/react-hooks": "7.0.2",
|
87
83
|
"@testing-library/user-event": "13.1.9",
|
84
|
+
"@types/history": "4.7.9",
|
85
|
+
"@types/styled-components": "5.1.15",
|
86
|
+
"@types/styled-system": "5.1.13",
|
87
|
+
"@types/styled-system__css": "5.0.16",
|
88
|
+
"@types/styled-system__theme-get": "5.0.1",
|
88
89
|
"@types/chroma-js": "2.1.3",
|
89
90
|
"@types/enzyme": "3.10.9",
|
90
91
|
"@types/jest": "26.0.23",
|