@primer/components 0.0.0-2021109221452 → 0.0.0-2021109223232
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 +5 -3
- package/dist/browser.esm.js +178 -178
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +179 -179
- package/dist/browser.umd.js.map +1 -1
- package/lib/ActionList/index.js +23 -12
- package/lib/AnchoredOverlay/index.js +12 -4
- package/lib/Autocomplete/index.js +14 -7
- package/lib/Button/index.js +70 -21
- package/lib/DropdownMenu/index.js +20 -6
- package/lib/DropdownStyles.js +26 -18
- package/lib/FilteredActionList/index.js +12 -4
- package/lib/Overlay.js +3 -1
- package/lib/Pagination/index.js +12 -6
- package/lib/Portal/Portal.js +3 -2
- package/lib/Portal/index.js +16 -5
- package/lib/SelectMenu/hooks/useKeyboardNav.js +96 -80
- package/lib/SelectMenu/index.js +14 -7
- package/lib/SelectPanel/index.js +12 -4
- package/lib/Token/index.js +30 -11
- package/lib/behaviors/anchoredPosition.js +234 -205
- package/lib/behaviors/focusTrap.js +157 -121
- package/lib/behaviors/focusZone.js +509 -434
- package/lib/behaviors/scrollIntoViewingArea.js +35 -18
- package/lib/constants.js +43 -39
- package/lib/hooks/index.js +60 -16
- package/lib/hooks/useAnchoredPosition.js +40 -31
- package/lib/hooks/useCombinedRefs.d.ts +2 -2
- package/lib/hooks/useCombinedRefs.js +35 -46
- package/lib/hooks/useDialog.js +96 -72
- package/lib/hooks/useFocusTrap.js +60 -43
- package/lib/hooks/useFocusZone.js +50 -54
- package/lib/hooks/useOnEscapePress.js +36 -25
- package/lib/hooks/useOpenAndCloseFocus.js +34 -22
- package/lib/hooks/useProvidedRefOrCreate.js +14 -10
- package/lib/hooks/useProvidedStateOrCreate.js +16 -13
- package/lib/hooks/useRenderForcingRef.js +17 -13
- package/lib/hooks/useResizeObserver.js +18 -15
- package/lib/hooks/useSafeTimeout.js +30 -22
- package/lib/hooks/useScrollFlash.js +23 -16
- package/lib/index.js +636 -161
- package/lib/polyfills/eventListenerSignal.js +45 -37
- package/lib/sx.js +14 -7
- package/lib/theme-preval.js +2945 -64
- package/lib/theme.js +12 -3
- package/lib/utils/iterateFocusableElements.js +85 -63
- package/lib/utils/theme.js +47 -33
- package/lib/utils/types/AriaRole.js +1 -2
- package/lib/utils/types/ComponentProps.js +1 -2
- package/lib/utils/types/Flatten.js +1 -2
- package/lib/utils/types/KeyPaths.js +1 -2
- package/lib/utils/types/MandateProps.js +1 -16
- package/lib/utils/types/Merge.js +1 -2
- package/lib/utils/types/index.js +69 -16
- package/lib/utils/uniqueId.js +8 -5
- package/lib/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/lib/utils/useIsomorphicLayoutEffect.js +12 -0
- package/lib/utils/userAgent.js +12 -8
- package/lib-esm/Overlay.js +2 -1
- package/lib-esm/Portal/Portal.js +2 -1
- package/lib-esm/hooks/useAnchoredPosition.js +2 -1
- package/lib-esm/hooks/useCombinedRefs.d.ts +2 -2
- package/lib-esm/hooks/useCombinedRefs.js +3 -2
- package/lib-esm/hooks/useResizeObserver.js +2 -2
- package/lib-esm/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/lib-esm/utils/useIsomorphicLayoutEffect.js +3 -0
- package/package.json +2 -3
- package/lib/ActionList/Divider.jsx +0 -29
- package/lib/ActionList/Group.jsx +0 -23
- package/lib/ActionList/Header.jsx +0 -66
- package/lib/ActionList/Item.jsx +0 -301
- package/lib/ActionList/List.jsx +0 -138
- package/lib/ActionMenu.jsx +0 -73
- package/lib/AnchoredOverlay/AnchoredOverlay.jsx +0 -100
- package/lib/Autocomplete/Autocomplete.jsx +0 -100
- package/lib/Autocomplete/AutocompleteContext.jsx +0 -5
- package/lib/Autocomplete/AutocompleteInput.jsx +0 -113
- package/lib/Autocomplete/AutocompleteMenu.jsx +0 -190
- package/lib/Autocomplete/AutocompleteOverlay.jsx +0 -55
- package/lib/Avatar.jsx +0 -34
- package/lib/AvatarPair.jsx +0 -29
- package/lib/AvatarStack.jsx +0 -151
- package/lib/BaseStyles.jsx +0 -65
- package/lib/BorderBox.jsx +0 -18
- package/lib/Box.jsx +0 -10
- package/lib/BranchName.jsx +0 -20
- package/lib/Breadcrumbs.jsx +0 -74
- package/lib/Button/Button.jsx +0 -60
- package/lib/Button/ButtonBase.jsx +0 -36
- package/lib/Button/ButtonClose.jsx +0 -55
- package/lib/Button/ButtonDanger.jsx +0 -63
- package/lib/Button/ButtonGroup.jsx +0 -55
- package/lib/Button/ButtonInvisible.jsx +0 -52
- package/lib/Button/ButtonOutline.jsx +0 -63
- package/lib/Button/ButtonPrimary.jsx +0 -62
- package/lib/Button/ButtonStyles.jsx +0 -37
- package/lib/Button/ButtonTableList.jsx +0 -49
- package/lib/Caret.jsx +0 -93
- package/lib/CircleBadge.jsx +0 -43
- package/lib/CircleOcticon.jsx +0 -21
- package/lib/CounterLabel.jsx +0 -44
- package/lib/Details.jsx +0 -21
- package/lib/Dialog/ConfirmationDialog.jsx +0 -146
- package/lib/Dialog/Dialog.jsx +0 -273
- package/lib/Dialog.jsx +0 -131
- package/lib/Dropdown.jsx +0 -134
- package/lib/DropdownMenu/DropdownButton.jsx +0 -14
- package/lib/DropdownMenu/DropdownMenu.jsx +0 -70
- package/lib/FilterList.jsx +0 -63
- package/lib/FilteredActionList/FilteredActionList.jsx +0 -100
- package/lib/FilteredSearch.jsx +0 -29
- package/lib/Flash.jsx +0 -70
- package/lib/Flex.jsx +0 -15
- package/lib/FormGroup.jsx +0 -25
- package/lib/Grid.jsx +0 -15
- package/lib/Header.jsx +0 -90
- package/lib/Heading.jsx +0 -21
- package/lib/Label.jsx +0 -84
- package/lib/LabelGroup.jsx +0 -19
- package/lib/Link.jsx +0 -38
- package/lib/Overlay.jsx +0 -155
- package/lib/Pagehead.jsx +0 -18
- package/lib/Pagination/Pagination.jsx +0 -163
- package/lib/Pagination/model.jsx +0 -174
- package/lib/PointerBox.jsx +0 -25
- package/lib/Popover.jsx +0 -210
- package/lib/Portal/Portal.jsx +0 -78
- package/lib/Position.jsx +0 -46
- package/lib/ProgressBar.jsx +0 -39
- package/lib/SelectMenu/SelectMenu.jsx +0 -114
- package/lib/SelectMenu/SelectMenuContext.jsx +0 -5
- package/lib/SelectMenu/SelectMenuDivider.jsx +0 -43
- package/lib/SelectMenu/SelectMenuFilter.jsx +0 -59
- package/lib/SelectMenu/SelectMenuFooter.jsx +0 -46
- package/lib/SelectMenu/SelectMenuHeader.jsx +0 -44
- package/lib/SelectMenu/SelectMenuItem.jsx +0 -143
- package/lib/SelectMenu/SelectMenuList.jsx +0 -60
- package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +0 -21
- package/lib/SelectMenu/SelectMenuModal.jsx +0 -119
- package/lib/SelectMenu/SelectMenuTab.jsx +0 -93
- package/lib/SelectMenu/SelectMenuTabPanel.jsx +0 -43
- package/lib/SelectMenu/SelectMenuTabs.jsx +0 -58
- package/lib/SelectPanel/SelectPanel.jsx +0 -105
- package/lib/SideNav.jsx +0 -177
- package/lib/Spinner.jsx +0 -35
- package/lib/StateLabel.jsx +0 -89
- package/lib/StyledOcticon.jsx +0 -20
- package/lib/SubNav.jsx +0 -104
- package/lib/TabNav.jsx +0 -60
- package/lib/Text.jsx +0 -14
- package/lib/TextInput.jsx +0 -23
- package/lib/TextInputWithTokens.jsx +0 -218
- package/lib/ThemeProvider.jsx +0 -130
- package/lib/Timeline.jsx +0 -124
- package/lib/Token/AvatarToken.jsx +0 -54
- package/lib/Token/IssueLabelToken.jsx +0 -125
- package/lib/Token/Token.jsx +0 -103
- package/lib/Token/TokenBase.jsx +0 -88
- package/lib/Token/_RemoveTokenButton.jsx +0 -108
- package/lib/Token/_TokenTextContainer.jsx +0 -49
- package/lib/Tooltip.jsx +0 -246
- package/lib/Truncate.jsx +0 -27
- package/lib/UnderlineNav.jsx +0 -90
- package/lib/_TextInputWrapper.jsx +0 -114
- package/lib/_UnstyledTextInput.jsx +0 -22
- package/lib/hooks/useDetails.jsx +0 -39
- package/lib/hooks/useOnOutsideClick.jsx +0 -61
- package/lib/hooks/useOverlay.jsx +0 -15
- package/lib/utils/deprecate.jsx +0 -59
- package/lib/utils/isNumeric.jsx +0 -7
- package/lib/utils/ssr.jsx +0 -6
- package/lib/utils/test-deprecations.jsx +0 -20
- package/lib/utils/test-helpers.jsx +0 -8
- package/lib/utils/test-matchers.jsx +0 -100
- package/lib/utils/testing.jsx +0 -206
@@ -1,63 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
-
}) : (function(o, m, k, k2) {
|
6
|
-
if (k2 === undefined) k2 = k;
|
7
|
-
o[k2] = m[k];
|
8
|
-
}));
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
11
|
-
}) : function(o, v) {
|
12
|
-
o["default"] = v;
|
13
|
-
});
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
15
|
-
if (mod && mod.__esModule) return mod;
|
16
|
-
var result = {};
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
18
|
-
__setModuleDefault(result, mod);
|
19
|
-
return result;
|
20
|
-
};
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
23
|
-
};
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
25
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
26
|
-
const constants_1 = require("../constants");
|
27
|
-
const sx_1 = __importDefault(require("../sx"));
|
28
|
-
const ButtonBase_1 = __importStar(require("./ButtonBase"));
|
29
|
-
const ButtonOutline = styled_components_1.default(ButtonBase_1.default) `
|
30
|
-
color: ${constants_1.get('colors.btn.outline.text')};
|
31
|
-
border: 1px solid ${constants_1.get('colors.btn.border')};
|
32
|
-
background-color: ${constants_1.get('colors.btn.bg')};
|
33
|
-
box-shadow: ${constants_1.get('shadows.btn.shadow')};
|
34
|
-
|
35
|
-
&:hover {
|
36
|
-
color: ${constants_1.get('colors.btn.outline.hoverText')};
|
37
|
-
background-color: ${constants_1.get('colors.btn.outline.hoverBg')};
|
38
|
-
border-color: ${constants_1.get('colors.btn.outline.hoverBorder')};
|
39
|
-
box-shadow: ${constants_1.get('shadows.btn.outline.hoverShadow')};
|
40
|
-
}
|
41
|
-
// focus must come before :active so that the active box shadow overrides
|
42
|
-
&:focus {
|
43
|
-
border-color: ${constants_1.get('colors.btn.outline.focusBorder')};
|
44
|
-
box-shadow: ${constants_1.get('shadows.btn.outline.focusShadow')};
|
45
|
-
}
|
46
|
-
|
47
|
-
&:active {
|
48
|
-
color: ${constants_1.get('colors.btn.outline.selectedText')};
|
49
|
-
background-color: ${constants_1.get('colors.btn.outline.selectedBg')};
|
50
|
-
box-shadow: ${constants_1.get('shadows.btn.outline.selectedShadow')};
|
51
|
-
border-color: ${constants_1.get('colors.btn.outline.selectedBorder')};
|
52
|
-
}
|
53
|
-
|
54
|
-
&:disabled {
|
55
|
-
color: ${constants_1.get('colors.btn.outline.disabledText')};
|
56
|
-
background-color: ${constants_1.get('colors.btn.outline.disabledBg')};
|
57
|
-
border-color: ${constants_1.get('colors.btn.border')};
|
58
|
-
}
|
59
|
-
|
60
|
-
${ButtonBase_1.buttonSystemProps};
|
61
|
-
${sx_1.default};
|
62
|
-
`;
|
63
|
-
exports.default = ButtonOutline;
|
@@ -1,62 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
-
}) : (function(o, m, k, k2) {
|
6
|
-
if (k2 === undefined) k2 = k;
|
7
|
-
o[k2] = m[k];
|
8
|
-
}));
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
11
|
-
}) : function(o, v) {
|
12
|
-
o["default"] = v;
|
13
|
-
});
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
15
|
-
if (mod && mod.__esModule) return mod;
|
16
|
-
var result = {};
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
18
|
-
__setModuleDefault(result, mod);
|
19
|
-
return result;
|
20
|
-
};
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
23
|
-
};
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
25
|
-
exports.ButtonPrimary = void 0;
|
26
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
27
|
-
const constants_1 = require("../constants");
|
28
|
-
const sx_1 = __importDefault(require("../sx"));
|
29
|
-
const ButtonBase_1 = __importStar(require("./ButtonBase"));
|
30
|
-
exports.ButtonPrimary = styled_components_1.default(ButtonBase_1.default) `
|
31
|
-
color: ${constants_1.get('colors.btn.primary.text')};
|
32
|
-
border: 1px solid ${constants_1.get('colors.btn.primary.border')};
|
33
|
-
background-color: ${constants_1.get('colors.btn.primary.bg')};
|
34
|
-
box-shadow: ${constants_1.get('shadows.btn.primary.shadow')};
|
35
|
-
|
36
|
-
&:hover {
|
37
|
-
color: ${constants_1.get('colors.btn.primary.hoverText')};
|
38
|
-
background-color: ${constants_1.get('colors.btn.primary.hoverBg')};
|
39
|
-
border-color: ${constants_1.get('colors.btn.primary.hoverBorder')};
|
40
|
-
box-shadow: ${constants_1.get('shadows.btn.primary.hoverShadow')};
|
41
|
-
}
|
42
|
-
// focus must come before :active so that the active box shadow overrides
|
43
|
-
&:focus {
|
44
|
-
border-color: ${constants_1.get('colors.btn.primary.focusBorder')};
|
45
|
-
box-shadow: ${constants_1.get('shadows.btn.primary.focusShadow')};
|
46
|
-
}
|
47
|
-
|
48
|
-
&:active {
|
49
|
-
background-color: ${constants_1.get('colors.btn.primary.selectedBg')};
|
50
|
-
box-shadow: ${constants_1.get('shadows.btn.primary.selectedShadow')};
|
51
|
-
}
|
52
|
-
|
53
|
-
&:disabled {
|
54
|
-
color: ${constants_1.get('colors.btn.primary.disabledText')};
|
55
|
-
background-color: ${constants_1.get('colors.btn.primary.disabledBg')};
|
56
|
-
border-color: ${constants_1.get('colors.btn.primary.disabledBorder')};
|
57
|
-
}
|
58
|
-
|
59
|
-
${ButtonBase_1.buttonSystemProps};
|
60
|
-
${sx_1.default};
|
61
|
-
`;
|
62
|
-
exports.default = exports.ButtonPrimary;
|
@@ -1,37 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
const styled_components_1 = require("styled-components");
|
4
|
-
const constants_1 = require("../constants");
|
5
|
-
exports.default = styled_components_1.css `
|
6
|
-
position: relative;
|
7
|
-
display: inline-block;
|
8
|
-
padding: 6px 16px;
|
9
|
-
font-family: inherit;
|
10
|
-
font-weight: ${constants_1.get('fontWeights.bold')};
|
11
|
-
line-height: 20px;
|
12
|
-
white-space: nowrap;
|
13
|
-
vertical-align: middle;
|
14
|
-
cursor: pointer;
|
15
|
-
user-select: none;
|
16
|
-
border-radius: ${constants_1.get('radii.2')};
|
17
|
-
appearance: none;
|
18
|
-
text-decoration: none;
|
19
|
-
text-align: center;
|
20
|
-
|
21
|
-
&:hover {
|
22
|
-
// needed to override link styles
|
23
|
-
text-decoration: none;
|
24
|
-
}
|
25
|
-
|
26
|
-
&:focus {
|
27
|
-
outline: none;
|
28
|
-
}
|
29
|
-
|
30
|
-
&:disabled {
|
31
|
-
cursor: default;
|
32
|
-
}
|
33
|
-
|
34
|
-
&:disabled svg {
|
35
|
-
opacity: 0.6;
|
36
|
-
}
|
37
|
-
`;
|
@@ -1,49 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
7
|
-
const constants_1 = require("../constants");
|
8
|
-
const sx_1 = __importDefault(require("../sx"));
|
9
|
-
const ButtonTableList = styled_components_1.default.summary `
|
10
|
-
display: inline-block;
|
11
|
-
padding: 0;
|
12
|
-
font-size: ${constants_1.get('fontSizes.1')};
|
13
|
-
color: ${constants_1.get('colors.fg.muted')};
|
14
|
-
text-decoration: none;
|
15
|
-
white-space: nowrap;
|
16
|
-
cursor: pointer;
|
17
|
-
user-select: none;
|
18
|
-
background-color: transparent;
|
19
|
-
border: 0;
|
20
|
-
appearance: none; // Corrects inability to style clickable input types in iOS.
|
21
|
-
|
22
|
-
&:hover {
|
23
|
-
text-decoration: underline;
|
24
|
-
}
|
25
|
-
|
26
|
-
&:disabled {
|
27
|
-
&,
|
28
|
-
&:hover {
|
29
|
-
color: ${constants_1.get('colors.primer.fg.disabled')};
|
30
|
-
cursor: default;
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
&:after {
|
35
|
-
display: inline-block;
|
36
|
-
margin-left: ${constants_1.get('space.1')};
|
37
|
-
width: 0;
|
38
|
-
height: 0;
|
39
|
-
vertical-align: -2px;
|
40
|
-
content: '';
|
41
|
-
border: 4px solid transparent;
|
42
|
-
border-top-color: currentcolor;
|
43
|
-
}
|
44
|
-
${constants_1.COMMON}
|
45
|
-
${constants_1.TYPOGRAPHY}
|
46
|
-
${constants_1.LAYOUT}
|
47
|
-
${sx_1.default};
|
48
|
-
`;
|
49
|
-
exports.default = ButtonTableList;
|
package/lib/Caret.jsx
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const react_1 = __importDefault(require("react"));
|
7
|
-
const styled_components_1 = require("styled-components");
|
8
|
-
const styled_system_1 = require("styled-system");
|
9
|
-
const oppositeEdge = {
|
10
|
-
top: 'Bottom',
|
11
|
-
right: 'Left',
|
12
|
-
bottom: 'Top',
|
13
|
-
left: 'Right'
|
14
|
-
};
|
15
|
-
const perpendicularEdge = {
|
16
|
-
top: 'Left',
|
17
|
-
right: 'Top',
|
18
|
-
bottom: 'Left',
|
19
|
-
left: 'Top'
|
20
|
-
};
|
21
|
-
function getEdgeAlign(location) {
|
22
|
-
const [edge, align] = location.split('-');
|
23
|
-
return [edge, align];
|
24
|
-
}
|
25
|
-
function getPosition(edge, align, spacing) {
|
26
|
-
const opposite = oppositeEdge[edge].toLowerCase();
|
27
|
-
const perp = perpendicularEdge[edge].toLowerCase();
|
28
|
-
return {
|
29
|
-
[opposite]: '100%',
|
30
|
-
[align || perp]: align ? spacing : '50%'
|
31
|
-
};
|
32
|
-
}
|
33
|
-
const getBg = styled_system_1.style({ prop: 'bg', key: 'colors' });
|
34
|
-
const getBorderColor = styled_system_1.style({ prop: 'borderColor', key: 'colors' });
|
35
|
-
const getBorderWidth = styled_system_1.style({ prop: 'borderWidth', key: 'borderWidths', scale: [0, 1] });
|
36
|
-
function Caret(props) {
|
37
|
-
const theme = react_1.default.useContext(styled_components_1.ThemeContext);
|
38
|
-
const propsWithTheme = { ...props, theme: props.theme ?? theme };
|
39
|
-
const { bg } = getBg(propsWithTheme);
|
40
|
-
const { borderColor } = getBorderColor(propsWithTheme);
|
41
|
-
const { borderWidth } = getBorderWidth(propsWithTheme);
|
42
|
-
const { size = 8, location = 'bottom' } = props;
|
43
|
-
const [edge, align] = getEdgeAlign(location);
|
44
|
-
const perp = perpendicularEdge[edge];
|
45
|
-
// note: these arrays represent points in the form [x, y]
|
46
|
-
const a = [-size, 0];
|
47
|
-
const b = [0, size];
|
48
|
-
const c = [size, 0];
|
49
|
-
// spaces are optional in path `d` attribute, and points are
|
50
|
-
// represented in the form `x,y` -- which is what the arrays above
|
51
|
-
// become when stringified!
|
52
|
-
const triangle = `M${a}L${b}L${c}L${a}Z`;
|
53
|
-
const line = `M${a}L${b}L${c}`;
|
54
|
-
const transform = {
|
55
|
-
top: `translate(${[size, size * 2]}) rotate(180)`,
|
56
|
-
right: `translate(${[0, size]}) rotate(-90)`,
|
57
|
-
bottom: `translate(${[size, 0]})`,
|
58
|
-
left: `translate(${[size * 2, size]}) rotate(90)`
|
59
|
-
}[edge];
|
60
|
-
return (<svg width={size * 2} height={size * 2} style={{
|
61
|
-
pointerEvents: 'none',
|
62
|
-
position: 'absolute',
|
63
|
-
...getPosition(edge, align, size),
|
64
|
-
// if align is set (top|right|bottom|left),
|
65
|
-
// then we don't need an offset margin
|
66
|
-
[`margin${perp}`]: align ? null : -size
|
67
|
-
}}>
|
68
|
-
<g transform={transform}>
|
69
|
-
<path d={triangle} fill={bg}/>
|
70
|
-
<path d={line} fill="none" stroke={borderColor} strokeWidth={borderWidth}/>
|
71
|
-
</g>
|
72
|
-
</svg>);
|
73
|
-
}
|
74
|
-
Caret.locations = [
|
75
|
-
'top',
|
76
|
-
'top-left',
|
77
|
-
'top-right',
|
78
|
-
'right',
|
79
|
-
'right-top',
|
80
|
-
'right-bottom',
|
81
|
-
'bottom',
|
82
|
-
'bottom-left',
|
83
|
-
'bottom-right',
|
84
|
-
'left',
|
85
|
-
'left-top',
|
86
|
-
'left-bottom'
|
87
|
-
];
|
88
|
-
Caret.defaultProps = {
|
89
|
-
bg: 'canvas.default',
|
90
|
-
borderColor: 'border.default',
|
91
|
-
borderWidth: 1
|
92
|
-
};
|
93
|
-
exports.default = Caret;
|
package/lib/CircleBadge.jsx
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
7
|
-
const constants_1 = require("./constants");
|
8
|
-
const StyledOcticon_1 = __importDefault(require("./StyledOcticon"));
|
9
|
-
const sx_1 = __importDefault(require("./sx"));
|
10
|
-
const isNumeric_1 = __importDefault(require("./utils/isNumeric"));
|
11
|
-
const variantSizes = {
|
12
|
-
small: 56,
|
13
|
-
medium: 96,
|
14
|
-
large: 128
|
15
|
-
};
|
16
|
-
const sizeStyles = ({ size, variant = 'medium' }) => {
|
17
|
-
const calc = isNumeric_1.default(size) ? size : variantSizes[variant];
|
18
|
-
return {
|
19
|
-
width: calc,
|
20
|
-
height: calc
|
21
|
-
};
|
22
|
-
};
|
23
|
-
const CircleBadge = styled_components_1.default.div `
|
24
|
-
display: ${props => (props.inline ? 'inline-flex' : 'flex')};
|
25
|
-
align-items: center;
|
26
|
-
justify-content: center;
|
27
|
-
background-color: ${constants_1.get('colors.canvas.default')};
|
28
|
-
border-radius: 50%;
|
29
|
-
box-shadow: ${constants_1.get('shadows.shadow.medium')};
|
30
|
-
${constants_1.COMMON};
|
31
|
-
${sizeStyles};
|
32
|
-
${sx_1.default};
|
33
|
-
`;
|
34
|
-
const CircleBadgeIcon = styled_components_1.default(StyledOcticon_1.default) `
|
35
|
-
height: auto;
|
36
|
-
max-width: 60%;
|
37
|
-
max-height: 55%;
|
38
|
-
`;
|
39
|
-
CircleBadge.defaultProps = {
|
40
|
-
inline: false
|
41
|
-
};
|
42
|
-
CircleBadgeIcon.displayName = 'CircleBadge.Icon';
|
43
|
-
exports.default = Object.assign(CircleBadge, { Icon: CircleBadgeIcon });
|
package/lib/CircleOcticon.jsx
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const react_1 = __importDefault(require("react"));
|
7
|
-
const Box_1 = __importDefault(require("./Box"));
|
8
|
-
function CircleOcticon(props) {
|
9
|
-
const { size, as } = props;
|
10
|
-
const { icon: IconComponent, bg, ...rest } = props;
|
11
|
-
return (<Box_1.default as={as} bg={bg} overflow="hidden" borderWidth={0} size={size} borderRadius="50%" borderStyle="solid" borderColor="border.default">
|
12
|
-
<Box_1.default display="flex" {...rest} alignItems="center" justifyContent="center">
|
13
|
-
<IconComponent size={size}/>
|
14
|
-
</Box_1.default>
|
15
|
-
</Box_1.default>);
|
16
|
-
}
|
17
|
-
CircleOcticon.defaultProps = {
|
18
|
-
...Box_1.default.defaultProps,
|
19
|
-
size: 32
|
20
|
-
};
|
21
|
-
exports.default = CircleOcticon;
|
package/lib/CounterLabel.jsx
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
7
|
-
const constants_1 = require("./constants");
|
8
|
-
const sx_1 = __importDefault(require("./sx"));
|
9
|
-
const colorStyles = ({ scheme, ...props }) => {
|
10
|
-
return {
|
11
|
-
color: scheme === 'secondary'
|
12
|
-
? constants_1.get('colors.fg.default')(props)
|
13
|
-
: scheme === 'primary'
|
14
|
-
? constants_1.get('colors.fg.onEmphasis')(props)
|
15
|
-
: constants_1.get('colors.fg.default')(props)
|
16
|
-
};
|
17
|
-
};
|
18
|
-
const bgStyles = ({ scheme, ...props }) => {
|
19
|
-
return {
|
20
|
-
backgroundColor: scheme === 'secondary'
|
21
|
-
? constants_1.get('colors.neutral.muted')(props)
|
22
|
-
: scheme === 'primary'
|
23
|
-
? constants_1.get('colors.neutral.emphasis')(props)
|
24
|
-
: constants_1.get('colors.neutral.muted')(props)
|
25
|
-
};
|
26
|
-
};
|
27
|
-
const CounterLabel = styled_components_1.default.span `
|
28
|
-
display: inline-block;
|
29
|
-
padding: 2px 5px;
|
30
|
-
font-size: ${constants_1.get('fontSizes.0')};
|
31
|
-
font-weight: ${constants_1.get('fontWeights.bold')};
|
32
|
-
line-height: ${constants_1.get('lineHeights.condensedUltra')};
|
33
|
-
border-radius: 20px;
|
34
|
-
${colorStyles};
|
35
|
-
${bgStyles};
|
36
|
-
${constants_1.COMMON};
|
37
|
-
|
38
|
-
&:empty {
|
39
|
-
display: none;
|
40
|
-
}
|
41
|
-
|
42
|
-
${sx_1.default};
|
43
|
-
`;
|
44
|
-
exports.default = CounterLabel;
|
package/lib/Details.jsx
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
7
|
-
const constants_1 = require("./constants");
|
8
|
-
const sx_1 = __importDefault(require("./sx"));
|
9
|
-
const Details = styled_components_1.default.details `
|
10
|
-
& > summary {
|
11
|
-
list-style: none;
|
12
|
-
}
|
13
|
-
& > summary::-webkit-details-marker {
|
14
|
-
display: none;
|
15
|
-
}
|
16
|
-
|
17
|
-
${constants_1.COMMON}
|
18
|
-
${sx_1.default};
|
19
|
-
`;
|
20
|
-
Details.displayName = 'Details';
|
21
|
-
exports.default = Details;
|
@@ -1,146 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
-
}) : (function(o, m, k, k2) {
|
6
|
-
if (k2 === undefined) k2 = k;
|
7
|
-
o[k2] = m[k];
|
8
|
-
}));
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
11
|
-
}) : function(o, v) {
|
12
|
-
o["default"] = v;
|
13
|
-
});
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
15
|
-
if (mod && mod.__esModule) return mod;
|
16
|
-
var result = {};
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
18
|
-
__setModuleDefault(result, mod);
|
19
|
-
return result;
|
20
|
-
};
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
23
|
-
};
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
25
|
-
exports.useConfirm = exports.ConfirmationDialog = void 0;
|
26
|
-
const react_1 = __importStar(require("react"));
|
27
|
-
const react_dom_1 = __importDefault(require("react-dom"));
|
28
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
29
|
-
const Box_1 = __importDefault(require("../Box"));
|
30
|
-
const ThemeProvider_1 = require("../ThemeProvider");
|
31
|
-
const focusZone_1 = require("../behaviors/focusZone");
|
32
|
-
const constants_1 = require("../constants");
|
33
|
-
const Dialog_1 = require("../Dialog/Dialog");
|
34
|
-
const useFocusZone_1 = require("../hooks/useFocusZone");
|
35
|
-
const StyledConfirmationHeader = styled_components_1.default.header `
|
36
|
-
padding: ${constants_1.get('space.2')};
|
37
|
-
display: flex;
|
38
|
-
flex-direction: row;
|
39
|
-
`;
|
40
|
-
const StyledTitle = styled_components_1.default(Box_1.default) `
|
41
|
-
font-size: ${constants_1.get('fontSizes.3')};
|
42
|
-
font-weight: ${constants_1.get('fontWeights.bold')};
|
43
|
-
padding: 6px ${constants_1.get('space.2')};
|
44
|
-
flex-grow: 1;
|
45
|
-
`;
|
46
|
-
const ConfirmationHeader = ({ title, onClose, dialogLabelId }) => {
|
47
|
-
const onCloseClick = react_1.useCallback(() => {
|
48
|
-
onClose('close-button');
|
49
|
-
}, [onClose]);
|
50
|
-
return (<StyledConfirmationHeader>
|
51
|
-
<StyledTitle id={dialogLabelId}>{title}</StyledTitle>
|
52
|
-
<Dialog_1.Dialog.CloseButton onClose={onCloseClick}/>
|
53
|
-
</StyledConfirmationHeader>);
|
54
|
-
};
|
55
|
-
const StyledConfirmationBody = styled_components_1.default(Box_1.default) `
|
56
|
-
font-size: ${constants_1.get('fontSizes.1')};
|
57
|
-
padding: 0 ${constants_1.get('space.3')} ${constants_1.get('space.3')} ${constants_1.get('space.3')};
|
58
|
-
color: ${constants_1.get('colors.fg.muted')};
|
59
|
-
flex-grow: 1;
|
60
|
-
`;
|
61
|
-
const ConfirmationBody = ({ children }) => {
|
62
|
-
return <StyledConfirmationBody>{children}</StyledConfirmationBody>;
|
63
|
-
};
|
64
|
-
const StyledConfirmationFooter = styled_components_1.default(Box_1.default) `
|
65
|
-
display: grid;
|
66
|
-
grid-auto-flow: column;
|
67
|
-
grid-auto-columns: max-content;
|
68
|
-
grid-gap: ${constants_1.get('space.2')};
|
69
|
-
align-items: end;
|
70
|
-
justify-content: end;
|
71
|
-
padding: ${constants_1.get('space.1')} ${constants_1.get('space.3')} ${constants_1.get('space.3')};
|
72
|
-
`;
|
73
|
-
const ConfirmationFooter = ({ footerButtons }) => {
|
74
|
-
const { containerRef: footerRef } = useFocusZone_1.useFocusZone({
|
75
|
-
bindKeys: focusZone_1.FocusKeys.ArrowHorizontal | focusZone_1.FocusKeys.Tab,
|
76
|
-
focusInStrategy: 'closest'
|
77
|
-
});
|
78
|
-
// Must have exactly 2 buttons!
|
79
|
-
return (<StyledConfirmationFooter ref={footerRef}>
|
80
|
-
<Dialog_1.Dialog.Buttons buttons={footerButtons ?? []}/>
|
81
|
-
</StyledConfirmationFooter>);
|
82
|
-
};
|
83
|
-
/**
|
84
|
-
* A ConfirmationDialog is a special kind of dialog with more rigid behavior. It
|
85
|
-
* is used to confirm a user action. ConfirmationDialogs always have exactly
|
86
|
-
* two buttons: one to cancel the action and one to confirm it. No custom
|
87
|
-
* rendering capabilities are provided for ConfirmationDialog.
|
88
|
-
*/
|
89
|
-
const ConfirmationDialog = props => {
|
90
|
-
const { onClose, title, cancelButtonContent = 'Cancel', confirmButtonContent = 'OK', confirmButtonType = 'normal', children } = props;
|
91
|
-
const onCancelButtonClick = react_1.useCallback(() => {
|
92
|
-
onClose('cancel');
|
93
|
-
}, [onClose]);
|
94
|
-
const onConfirmButtonClick = react_1.useCallback(() => {
|
95
|
-
onClose('confirm');
|
96
|
-
}, [onClose]);
|
97
|
-
const cancelButton = {
|
98
|
-
content: cancelButtonContent,
|
99
|
-
onClick: onCancelButtonClick
|
100
|
-
};
|
101
|
-
const confirmButton = {
|
102
|
-
content: confirmButtonContent,
|
103
|
-
buttonType: confirmButtonType,
|
104
|
-
onClick: onConfirmButtonClick,
|
105
|
-
autoFocus: true
|
106
|
-
};
|
107
|
-
const footerButtons = [cancelButton, confirmButton];
|
108
|
-
return (<Dialog_1.Dialog onClose={onClose} title={title} footerButtons={footerButtons} role="alertdialog" width="medium" renderHeader={ConfirmationHeader} renderBody={ConfirmationBody} renderFooter={ConfirmationFooter}>
|
109
|
-
{children}
|
110
|
-
</Dialog_1.Dialog>);
|
111
|
-
};
|
112
|
-
exports.ConfirmationDialog = ConfirmationDialog;
|
113
|
-
async function confirm(themeProps, options) {
|
114
|
-
const { content, ...confirmationDialogProps } = options;
|
115
|
-
return new Promise(resolve => {
|
116
|
-
const hostElement = document.createElement('div');
|
117
|
-
const onClose = gesture => {
|
118
|
-
react_dom_1.default.unmountComponentAtNode(hostElement);
|
119
|
-
if (gesture === 'confirm') {
|
120
|
-
resolve(true);
|
121
|
-
}
|
122
|
-
else {
|
123
|
-
resolve(false);
|
124
|
-
}
|
125
|
-
};
|
126
|
-
react_dom_1.default.render(<ThemeProvider_1.ThemeProvider {...themeProps}>
|
127
|
-
<exports.ConfirmationDialog {...confirmationDialogProps} onClose={onClose}>
|
128
|
-
{content}
|
129
|
-
</exports.ConfirmationDialog>
|
130
|
-
</ThemeProvider_1.ThemeProvider>, hostElement);
|
131
|
-
});
|
132
|
-
}
|
133
|
-
/**
|
134
|
-
* This hook takes no parameters and returns an `async` function, `confirm`. When `confirm`
|
135
|
-
* is called, it shows the confirmation dialog. When the dialog is dismissed, a promise is
|
136
|
-
* resolved with `true` or `false` depending on whether or not the confirm button was used.
|
137
|
-
*/
|
138
|
-
function useConfirm() {
|
139
|
-
const { theme, colorMode, dayScheme, nightScheme } = ThemeProvider_1.useTheme();
|
140
|
-
const result = react_1.useCallback((options) => {
|
141
|
-
const themeProps = { theme, colorMode, dayScheme, nightScheme };
|
142
|
-
return confirm(themeProps, options);
|
143
|
-
}, [theme, colorMode, dayScheme, nightScheme]);
|
144
|
-
return result;
|
145
|
-
}
|
146
|
-
exports.useConfirm = useConfirm;
|