@primer/components 0.0.0-20211030175556 → 0.0.0-20211030182910

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 (272) hide show
  1. package/CHANGELOG.md +34 -2
  2. package/dist/browser.esm.js +186 -183
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +190 -187
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/ActionList/Item.js +3 -3
  7. package/lib/ActionList/index.js +23 -12
  8. package/lib/ActionList2/Item.js +3 -1
  9. package/lib/ActionList2/List.js +1 -2
  10. package/lib/ActionList2/Selection.js +3 -1
  11. package/lib/ActionList2/index.js +41 -23
  12. package/lib/AnchoredOverlay/index.js +12 -4
  13. package/lib/Autocomplete/Autocomplete.d.ts +1 -0
  14. package/lib/Autocomplete/AutocompleteInput.d.ts +1 -0
  15. package/lib/Autocomplete/index.js +14 -7
  16. package/lib/Avatar.d.ts +1 -2
  17. package/lib/Avatar.js +1 -1
  18. package/lib/BranchName.d.ts +1 -2
  19. package/lib/BranchName.js +1 -1
  20. package/lib/Button/Button.d.ts +1 -0
  21. package/lib/Button/ButtonClose.d.ts +2 -1
  22. package/lib/Button/ButtonDanger.d.ts +1 -0
  23. package/lib/Button/ButtonInvisible.d.ts +1 -0
  24. package/lib/Button/ButtonOutline.d.ts +1 -0
  25. package/lib/Button/ButtonPrimary.d.ts +1 -0
  26. package/lib/Button/index.js +70 -21
  27. package/lib/Checkbox.d.ts +29 -0
  28. package/lib/Checkbox.js +64 -0
  29. package/lib/CircleOcticon.d.ts +1 -0
  30. package/lib/Details.d.ts +1 -2
  31. package/lib/Details.js +1 -3
  32. package/lib/Dialog.d.ts +3 -2
  33. package/lib/Dropdown.d.ts +6 -66
  34. package/lib/DropdownMenu/DropdownButton.d.ts +2 -1
  35. package/lib/DropdownMenu/index.js +20 -6
  36. package/lib/DropdownStyles.js +26 -18
  37. package/lib/FilterList.d.ts +1 -0
  38. package/lib/FilteredActionList/index.js +12 -4
  39. package/lib/Heading.d.ts +1 -2
  40. package/lib/Heading.js +1 -6
  41. package/lib/NewButton/index.js +12 -5
  42. package/lib/NewButton/types.js +1 -2
  43. package/lib/Overlay.d.ts +5 -3
  44. package/lib/Pagination/index.js +12 -6
  45. package/lib/Portal/index.js +16 -5
  46. package/lib/Position.d.ts +4 -4
  47. package/lib/ProgressBar.d.ts +16 -11
  48. package/lib/ProgressBar.js +6 -10
  49. package/lib/SelectMenu/SelectMenu.d.ts +10 -4
  50. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  51. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  52. package/lib/SelectMenu/hooks/useKeyboardNav.js +96 -80
  53. package/lib/SelectMenu/index.js +14 -7
  54. package/lib/SelectPanel/index.js +12 -4
  55. package/lib/Spinner.d.ts +1 -2
  56. package/lib/Spinner.js +1 -3
  57. package/lib/TextInputWithTokens.d.ts +1 -0
  58. package/lib/Token/AvatarToken.d.ts +1 -1
  59. package/lib/Token/IssueLabelToken.d.ts +1 -1
  60. package/lib/Token/Token.d.ts +1 -1
  61. package/lib/Token/index.js +30 -11
  62. package/lib/behaviors/anchoredPosition.js +234 -205
  63. package/lib/behaviors/focusTrap.js +157 -121
  64. package/lib/behaviors/focusZone.js +509 -434
  65. package/lib/behaviors/scrollIntoViewingArea.js +35 -18
  66. package/lib/constants.js +43 -39
  67. package/lib/drafts.js +30 -20
  68. package/lib/hooks/index.js +60 -16
  69. package/lib/hooks/useAnchoredPosition.js +40 -32
  70. package/lib/hooks/useCombinedRefs.js +36 -32
  71. package/lib/hooks/useDialog.js +96 -72
  72. package/lib/hooks/useFocusTrap.js +60 -43
  73. package/lib/hooks/useFocusZone.js +50 -54
  74. package/lib/hooks/useOnEscapePress.js +36 -25
  75. package/lib/hooks/useOpenAndCloseFocus.js +34 -22
  76. package/lib/hooks/useProvidedRefOrCreate.js +14 -10
  77. package/lib/hooks/useProvidedStateOrCreate.js +16 -13
  78. package/lib/hooks/useRenderForcingRef.js +17 -13
  79. package/lib/hooks/useResizeObserver.js +18 -15
  80. package/lib/hooks/useSafeTimeout.js +30 -22
  81. package/lib/hooks/useScrollFlash.js +23 -16
  82. package/lib/index.d.ts +2 -0
  83. package/lib/index.js +652 -163
  84. package/lib/polyfills/eventListenerSignal.js +45 -37
  85. package/lib/sx.js +22 -10
  86. package/lib/theme-preval.js +3169 -64
  87. package/lib/theme.js +12 -3
  88. package/lib/utils/iterateFocusableElements.js +85 -63
  89. package/lib/utils/testing.d.ts +2 -1
  90. package/lib/utils/testing.js +29 -0
  91. package/lib/utils/theme.js +47 -33
  92. package/lib/utils/types/AriaRole.js +1 -2
  93. package/lib/utils/types/ComponentProps.js +1 -2
  94. package/lib/utils/types/Flatten.js +1 -2
  95. package/lib/utils/types/KeyPaths.js +1 -2
  96. package/lib/utils/types/MandateProps.js +1 -16
  97. package/lib/utils/types/Merge.js +1 -2
  98. package/lib/utils/types/index.js +69 -16
  99. package/lib/utils/uniqueId.js +8 -5
  100. package/lib/utils/use-force-update.js +14 -8
  101. package/lib/utils/useIsomorphicLayoutEffect.js +11 -8
  102. package/lib/utils/userAgent.js +12 -8
  103. package/lib-esm/ActionList/Item.js +3 -3
  104. package/lib-esm/ActionList2/Item.js +3 -1
  105. package/lib-esm/ActionList2/List.js +1 -2
  106. package/lib-esm/ActionList2/Selection.js +3 -1
  107. package/lib-esm/Autocomplete/Autocomplete.d.ts +1 -0
  108. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +1 -0
  109. package/lib-esm/Avatar.d.ts +1 -2
  110. package/lib-esm/Avatar.js +2 -2
  111. package/lib-esm/BranchName.d.ts +1 -2
  112. package/lib-esm/BranchName.js +2 -2
  113. package/lib-esm/Button/Button.d.ts +1 -0
  114. package/lib-esm/Button/ButtonClose.d.ts +2 -1
  115. package/lib-esm/Button/ButtonDanger.d.ts +1 -0
  116. package/lib-esm/Button/ButtonInvisible.d.ts +1 -0
  117. package/lib-esm/Button/ButtonOutline.d.ts +1 -0
  118. package/lib-esm/Button/ButtonPrimary.d.ts +1 -0
  119. package/lib-esm/Checkbox.d.ts +29 -0
  120. package/lib-esm/Checkbox.js +44 -0
  121. package/lib-esm/CircleOcticon.d.ts +1 -0
  122. package/lib-esm/Details.d.ts +1 -2
  123. package/lib-esm/Details.js +1 -2
  124. package/lib-esm/Dialog.d.ts +3 -2
  125. package/lib-esm/Dropdown.d.ts +6 -66
  126. package/lib-esm/DropdownMenu/DropdownButton.d.ts +2 -1
  127. package/lib-esm/FilterList.d.ts +1 -0
  128. package/lib-esm/Heading.d.ts +1 -2
  129. package/lib-esm/Heading.js +2 -6
  130. package/lib-esm/Overlay.d.ts +5 -3
  131. package/lib-esm/Position.d.ts +4 -4
  132. package/lib-esm/ProgressBar.d.ts +16 -11
  133. package/lib-esm/ProgressBar.js +7 -11
  134. package/lib-esm/SelectMenu/SelectMenu.d.ts +10 -4
  135. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  136. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  137. package/lib-esm/Spinner.d.ts +1 -2
  138. package/lib-esm/Spinner.js +1 -2
  139. package/lib-esm/TextInputWithTokens.d.ts +1 -0
  140. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  141. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  142. package/lib-esm/Token/Token.d.ts +1 -1
  143. package/lib-esm/index.d.ts +2 -0
  144. package/lib-esm/index.js +1 -0
  145. package/lib-esm/theme-preval.js +446 -0
  146. package/lib-esm/utils/testing.d.ts +2 -1
  147. package/lib-esm/utils/testing.js +24 -0
  148. package/package.json +4 -5
  149. package/lib/ActionList/Divider.jsx +0 -29
  150. package/lib/ActionList/Group.jsx +0 -23
  151. package/lib/ActionList/Header.jsx +0 -66
  152. package/lib/ActionList/Item.jsx +0 -288
  153. package/lib/ActionList/List.jsx +0 -138
  154. package/lib/ActionList2/Description.jsx +0 -29
  155. package/lib/ActionList2/Divider.jsx +0 -22
  156. package/lib/ActionList2/Group.jsx +0 -54
  157. package/lib/ActionList2/Header.d.ts +0 -26
  158. package/lib/ActionList2/Header.js +0 -55
  159. package/lib/ActionList2/Header.jsx +0 -36
  160. package/lib/ActionList2/Item.jsx +0 -174
  161. package/lib/ActionList2/LinkItem.jsx +0 -28
  162. package/lib/ActionList2/List.jsx +0 -41
  163. package/lib/ActionList2/Selection.jsx +0 -50
  164. package/lib/ActionList2/Visuals.jsx +0 -48
  165. package/lib/ActionMenu.jsx +0 -73
  166. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +0 -100
  167. package/lib/Autocomplete/Autocomplete.jsx +0 -100
  168. package/lib/Autocomplete/AutocompleteContext.jsx +0 -5
  169. package/lib/Autocomplete/AutocompleteInput.jsx +0 -113
  170. package/lib/Autocomplete/AutocompleteMenu.jsx +0 -190
  171. package/lib/Autocomplete/AutocompleteOverlay.jsx +0 -55
  172. package/lib/Avatar.jsx +0 -34
  173. package/lib/AvatarPair.jsx +0 -29
  174. package/lib/AvatarStack.jsx +0 -151
  175. package/lib/BaseStyles.jsx +0 -65
  176. package/lib/BorderBox.jsx +0 -18
  177. package/lib/Box.jsx +0 -10
  178. package/lib/BranchName.jsx +0 -20
  179. package/lib/Breadcrumbs.jsx +0 -71
  180. package/lib/Button/Button.jsx +0 -40
  181. package/lib/Button/ButtonBase.jsx +0 -33
  182. package/lib/Button/ButtonClose.jsx +0 -53
  183. package/lib/Button/ButtonDanger.jsx +0 -43
  184. package/lib/Button/ButtonGroup.jsx +0 -55
  185. package/lib/Button/ButtonInvisible.jsx +0 -32
  186. package/lib/Button/ButtonOutline.jsx +0 -43
  187. package/lib/Button/ButtonPrimary.jsx +0 -42
  188. package/lib/Button/ButtonStyles.jsx +0 -37
  189. package/lib/Button/ButtonTableList.jsx +0 -46
  190. package/lib/Caret.jsx +0 -93
  191. package/lib/CircleBadge.jsx +0 -42
  192. package/lib/CircleOcticon.jsx +0 -21
  193. package/lib/CounterLabel.jsx +0 -43
  194. package/lib/Details.jsx +0 -21
  195. package/lib/Dialog/ConfirmationDialog.jsx +0 -146
  196. package/lib/Dialog/Dialog.jsx +0 -279
  197. package/lib/Dialog.jsx +0 -129
  198. package/lib/Dropdown.jsx +0 -131
  199. package/lib/DropdownMenu/DropdownButton.jsx +0 -14
  200. package/lib/DropdownMenu/DropdownMenu.jsx +0 -70
  201. package/lib/FilterList.jsx +0 -59
  202. package/lib/FilteredActionList/FilteredActionList.jsx +0 -100
  203. package/lib/FilteredSearch.jsx +0 -28
  204. package/lib/Flash.jsx +0 -69
  205. package/lib/Flex.jsx +0 -15
  206. package/lib/FormGroup.jsx +0 -22
  207. package/lib/Grid.jsx +0 -15
  208. package/lib/Header.jsx +0 -83
  209. package/lib/Heading.jsx +0 -21
  210. package/lib/Label.jsx +0 -82
  211. package/lib/LabelGroup.jsx +0 -18
  212. package/lib/Link.jsx +0 -36
  213. package/lib/NewButton/button-counter.jsx +0 -14
  214. package/lib/NewButton/button.jsx +0 -279
  215. package/lib/Overlay.jsx +0 -154
  216. package/lib/Pagehead.jsx +0 -17
  217. package/lib/Pagination/Pagination.jsx +0 -161
  218. package/lib/Pagination/model.jsx +0 -174
  219. package/lib/PointerBox.jsx +0 -25
  220. package/lib/Popover.jsx +0 -202
  221. package/lib/Portal/Portal.jsx +0 -79
  222. package/lib/Position.jsx +0 -46
  223. package/lib/ProgressBar.jsx +0 -39
  224. package/lib/SelectMenu/SelectMenu.jsx +0 -112
  225. package/lib/SelectMenu/SelectMenuContext.jsx +0 -5
  226. package/lib/SelectMenu/SelectMenuDivider.jsx +0 -42
  227. package/lib/SelectMenu/SelectMenuFilter.jsx +0 -58
  228. package/lib/SelectMenu/SelectMenuFooter.jsx +0 -45
  229. package/lib/SelectMenu/SelectMenuHeader.jsx +0 -42
  230. package/lib/SelectMenu/SelectMenuItem.jsx +0 -142
  231. package/lib/SelectMenu/SelectMenuList.jsx +0 -59
  232. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +0 -22
  233. package/lib/SelectMenu/SelectMenuModal.jsx +0 -118
  234. package/lib/SelectMenu/SelectMenuTab.jsx +0 -92
  235. package/lib/SelectMenu/SelectMenuTabPanel.jsx +0 -42
  236. package/lib/SelectMenu/SelectMenuTabs.jsx +0 -57
  237. package/lib/SelectPanel/SelectPanel.jsx +0 -105
  238. package/lib/SideNav.jsx +0 -173
  239. package/lib/Spinner.jsx +0 -35
  240. package/lib/StateLabel.jsx +0 -93
  241. package/lib/StyledOcticon.jsx +0 -18
  242. package/lib/SubNav.jsx +0 -101
  243. package/lib/TabNav.jsx +0 -58
  244. package/lib/Text.jsx +0 -14
  245. package/lib/TextInput.jsx +0 -23
  246. package/lib/TextInputWithTokens.jsx +0 -218
  247. package/lib/ThemeProvider.jsx +0 -130
  248. package/lib/Timeline.jsx +0 -123
  249. package/lib/Token/AvatarToken.jsx +0 -54
  250. package/lib/Token/IssueLabelToken.jsx +0 -125
  251. package/lib/Token/Token.jsx +0 -103
  252. package/lib/Token/TokenBase.jsx +0 -88
  253. package/lib/Token/_RemoveTokenButton.jsx +0 -108
  254. package/lib/Token/_TokenTextContainer.jsx +0 -49
  255. package/lib/Tooltip.jsx +0 -246
  256. package/lib/Truncate.jsx +0 -24
  257. package/lib/UnderlineNav.jsx +0 -88
  258. package/lib/_TextInputWrapper.jsx +0 -120
  259. package/lib/_UnstyledTextInput.jsx +0 -22
  260. package/lib/hooks/useDetails.jsx +0 -39
  261. package/lib/hooks/useOnOutsideClick.jsx +0 -61
  262. package/lib/hooks/useOverlay.jsx +0 -15
  263. package/lib/utils/create-slots.jsx +0 -65
  264. package/lib/utils/deprecate.jsx +0 -59
  265. package/lib/utils/isNumeric.jsx +0 -7
  266. package/lib/utils/ssr.jsx +0 -6
  267. package/lib/utils/test-deprecations.jsx +0 -20
  268. package/lib/utils/test-helpers.jsx +0 -8
  269. package/lib/utils/test-matchers.jsx +0 -100
  270. package/lib/utils/testing.jsx +0 -206
  271. package/lib-esm/ActionList2/Header.d.ts +0 -26
  272. package/lib-esm/ActionList2/Header.js +0 -44
@@ -1,118 +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 react_1 = __importDefault(require("react"));
26
- const styled_components_1 = __importStar(require("styled-components"));
27
- const styled_system_1 = require("styled-system");
28
- const constants_1 = require("../constants");
29
- const sx_1 = __importDefault(require("../sx"));
30
- const animateModal = styled_components_1.keyframes `
31
- 0% {
32
- opacity: 0;
33
- transform: scale(0.9);
34
- }
35
- `;
36
- const modalStyles = styled_components_1.css `
37
- position: relative;
38
- z-index: 99; // Needs to be higher than .details-overlay's z-index: 80.
39
- display: flex;
40
- ${props => (props.filter ? 'height: 80%' : '')};
41
- max-height: ${props => (props.filter ? 'none' : '66%')};
42
- margin: auto 0;
43
- ${props => (props.filter ? 'margin-top: 0' : '')};
44
- overflow: hidden; // Enables border radius on scrollable child elements
45
- pointer-events: auto;
46
- flex-direction: column;
47
- background-color: ${constants_1.get('colors.canvas.overlay')};
48
- border-radius: ${constants_1.get('radii.2')};
49
- box-shadow: ${constants_1.get('shadows.shadow.small')};
50
- animation: ${animateModal} 0.12s cubic-bezier(0, 0.1, 0.1, 1) backwards;
51
-
52
- @media (min-width: ${constants_1.get('breakpoints.0')}) {
53
- height: auto;
54
- max-height: 350px;
55
- margin: ${constants_1.get('space.1')} 0 ${constants_1.get('space.3')} 0;
56
- font-size: ${constants_1.get('fontSizes.0')};
57
- border: ${constants_1.get('borderWidths.1')} solid ${constants_1.get('colors.border.default')};
58
- border-radius: ${constants_1.get('radii.2')};
59
- box-shadow: ${constants_1.get('shadows.shadow.small')};
60
- }
61
- `;
62
- const modalWrapperStyles = styled_components_1.css `
63
- position: fixed;
64
- top: 0;
65
- right: 0;
66
- bottom: 0;
67
- left: 0;
68
- z-index: 99;
69
- display: flex;
70
- padding: ${constants_1.get('space.3')};
71
- pointer-events: none;
72
- flex-direction: column;
73
-
74
- &::before {
75
- position: absolute;
76
- top: 0;
77
- right: 0;
78
- bottom: 0;
79
- left: 0;
80
- pointer-events: none;
81
- content: '';
82
- background-color: ${constants_1.get('colors.primer.canvas.backdrop')};
83
-
84
- @media (min-width: ${constants_1.get('breakpoints.0')}) {
85
- display: none;
86
- }
87
- }
88
-
89
- @media (min-width: ${constants_1.get('breakpoints.0')}) {
90
- position: absolute;
91
- top: auto;
92
- right: ${props => (props.align === 'right' ? '0' : 'auto')};
93
- bottom: auto;
94
- left: auto;
95
- padding: 0;
96
- }
97
- `;
98
- const Modal = styled_components_1.default.div `
99
- ${modalStyles}
100
- ${styled_system_1.width}
101
- `;
102
- const ModalWrapper = styled_components_1.default.div `
103
- ${modalWrapperStyles}
104
- ${sx_1.default};
105
- `;
106
- const SelectMenuModal = react_1.default.forwardRef(({ children, theme, width: widthProp, ...rest }, forwardedRef) => {
107
- return (<ModalWrapper theme={theme} {...rest} role="menu" ref={forwardedRef}>
108
- <Modal theme={theme} width={widthProp}>
109
- {children}
110
- </Modal>
111
- </ModalWrapper>);
112
- });
113
- SelectMenuModal.defaultProps = {
114
- align: 'left',
115
- width: '300px'
116
- };
117
- SelectMenuModal.displayName = 'SelectMenu.Modal';
118
- exports.default = SelectMenuModal;
@@ -1,92 +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 classnames_1 = __importDefault(require("classnames"));
26
- const react_1 = __importStar(require("react"));
27
- const styled_components_1 = __importStar(require("styled-components"));
28
- const constants_1 = require("../constants");
29
- const sx_1 = __importDefault(require("../sx"));
30
- const SelectMenuContext_1 = require("./SelectMenuContext");
31
- const tabStyles = styled_components_1.css `
32
- flex: 1;
33
- padding: ${constants_1.get('space.2')} ${constants_1.get('space.3')};
34
- font-size: ${constants_1.get('fontSizes.0')};
35
- font-weight: 500;
36
- color: ${constants_1.get('colors.fg.muted')};
37
- text-align: center;
38
- background-color: transparent;
39
- border: 0;
40
- box-shadow: inset 0 -1px 0 ${constants_1.get('colors.border.muted')};
41
-
42
- @media (min-width: ${constants_1.get('breakpoints.0')}) {
43
- flex: none;
44
- padding: ${constants_1.get('space.1')} ${constants_1.get('space.3')};
45
- border: ${constants_1.get('borderWidths.1')} solid transparent;
46
- border-bottom-width: 0;
47
- border-top-left-radius: ${constants_1.get('radii.2')};
48
- border-top-right-radius: ${constants_1.get('radii.2')};
49
- }
50
-
51
- &[aria-selected='true'] {
52
- z-index: 1; // Keeps box-shadow visible when hovering
53
- color: ${constants_1.get('colors.text-primary')};
54
- background-color: ${constants_1.get('colors.canvas.overlay')};
55
- box-shadow: 0 0 0 1px ${constants_1.get('colors.border.muted')};
56
-
57
- @media (min-width: ${constants_1.get('breakpoints.0')}) {
58
- border-color: ${constants_1.get('colors.border.muted')};
59
- box-shadow: none;
60
- }
61
- }
62
-
63
- &:focus {
64
- background-color: ${constants_1.get('colors.neutral.subtle')};
65
- }
66
- `;
67
- const StyledTab = styled_components_1.default.button `
68
- ${tabStyles}
69
- ${sx_1.default};
70
- `;
71
- const SelectMenuTab = ({ tabName = '', index, className, onClick, ...rest }) => {
72
- const menuContext = react_1.useContext(SelectMenuContext_1.MenuContext);
73
- const handleClick = (e) => {
74
- // if consumer has attached an onClick event, call it
75
- onClick && onClick(e);
76
- if (!e.defaultPrevented) {
77
- menuContext.setSelectedTab?.(tabName);
78
- }
79
- };
80
- // if no tab is selected when the component renders, show the first tab
81
- react_1.useEffect(() => {
82
- if (!menuContext.selectedTab && index === 0) {
83
- menuContext.setSelectedTab?.(tabName);
84
- }
85
- }, [index, menuContext, tabName]);
86
- const isSelected = menuContext.selectedTab === tabName;
87
- return (<StyledTab role="tab" className={classnames_1.default('SelectMenuTab', className)} aria-selected={isSelected} onClick={handleClick} {...rest}>
88
- {tabName}
89
- </StyledTab>);
90
- };
91
- SelectMenuTab.displayName = 'SelectMenu.Tab';
92
- exports.default = SelectMenuTab;
@@ -1,42 +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 react_1 = __importStar(require("react"));
26
- const styled_components_1 = __importDefault(require("styled-components"));
27
- const constants_1 = require("../constants");
28
- const sx_1 = __importDefault(require("../sx"));
29
- const SelectMenuContext_1 = require("./SelectMenuContext");
30
- const SelectMenuList_1 = __importDefault(require("./SelectMenuList"));
31
- const TabPanelBase = styled_components_1.default.div `
32
- border-top: ${constants_1.get('borderWidths.1')} solid ${constants_1.get('colors.border.muted')};
33
- ${sx_1.default};
34
- `;
35
- const TabPanel = ({ tabName, className, children, ...rest }) => {
36
- const menuContext = react_1.useContext(SelectMenuContext_1.MenuContext);
37
- return (<TabPanelBase role="tabpanel" className={className} hidden={menuContext.selectedTab !== tabName} {...rest}>
38
- <SelectMenuList_1.default>{children}</SelectMenuList_1.default>
39
- </TabPanelBase>);
40
- };
41
- TabPanel.displayName = 'SelectMenu.TabPanel';
42
- exports.default = TabPanel;
@@ -1,57 +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 react_1 = __importDefault(require("react"));
26
- const styled_components_1 = __importStar(require("styled-components"));
27
- const constants_1 = require("../constants");
28
- const sx_1 = __importDefault(require("../sx"));
29
- const tabWrapperStyles = styled_components_1.css `
30
- display: flex;
31
- flex-shrink: 0;
32
- margin-bottom: -1px; // hide border of element below
33
- -webkit-overflow-scrolling: touch;
34
- overflow-x: auto;
35
- overflow-y: hidden;
36
-
37
- // Hide scrollbar so it doesn't cover the text
38
- &::-webkit-scrollbar {
39
- display: none;
40
- }
41
-
42
- @media (min-width: ${constants_1.get('breakpoints.0')}) {
43
- padding: 0 ${constants_1.get('space.2')};
44
- margin-top: ${constants_1.get('space.3')};
45
- }
46
- `;
47
- const SelectMenuTabsBase = styled_components_1.default.div `
48
- ${tabWrapperStyles}
49
- ${sx_1.default};
50
- `;
51
- const SelectMenuTabs = ({ children, ...rest }) => {
52
- return (<SelectMenuTabsBase role="tablist" {...rest}>
53
- {children}
54
- </SelectMenuTabsBase>);
55
- };
56
- SelectMenuTabs.displayName = 'SelectMenu.Tabs';
57
- exports.default = SelectMenuTabs;
@@ -1,105 +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
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.SelectPanel = void 0;
23
- const react_1 = __importStar(require("react"));
24
- const FilteredActionList_1 = require("../FilteredActionList");
25
- const DropdownMenu_1 = require("../DropdownMenu");
26
- const AnchoredOverlay_1 = require("../AnchoredOverlay");
27
- const useProvidedStateOrCreate_1 = require("../hooks/useProvidedStateOrCreate");
28
- const hooks_1 = require("../hooks");
29
- function isMultiSelectVariant(selected) {
30
- return Array.isArray(selected);
31
- }
32
- const focusZoneSettings = {
33
- // Let FilteredActionList handle focus zone
34
- disabled: true
35
- };
36
- function SelectPanel({ open, onOpenChange, renderAnchor = props => <DropdownMenu_1.DropdownButton {...props}/>, anchorRef: externalAnchorRef, placeholder, selected, onSelectedChange, filterValue: externalFilterValue, onFilterChange: externalOnFilterChange, items, textInputProps, overlayProps, sx, ...listProps }) {
37
- const [filterValue, setInternalFilterValue] = useProvidedStateOrCreate_1.useProvidedStateOrCreate(externalFilterValue, undefined, '');
38
- const onFilterChange = react_1.useCallback((value, e) => {
39
- externalOnFilterChange(value, e);
40
- setInternalFilterValue(value);
41
- }, [externalOnFilterChange, setInternalFilterValue]);
42
- const anchorRef = hooks_1.useProvidedRefOrCreate(externalAnchorRef);
43
- const onOpen = react_1.useCallback(gesture => onOpenChange(true, gesture), [onOpenChange]);
44
- const onClose = react_1.useCallback((gesture) => {
45
- onOpenChange(false, gesture);
46
- }, [onOpenChange]);
47
- const renderMenuAnchor = react_1.useMemo(() => {
48
- if (renderAnchor === null) {
49
- return null;
50
- }
51
- const selectedItems = Array.isArray(selected) ? selected : [...(selected ? [selected] : [])];
52
- return (props) => {
53
- return renderAnchor({
54
- ...props,
55
- children: selectedItems.length ? selectedItems.map(item => item.text).join(', ') : placeholder
56
- });
57
- };
58
- }, [placeholder, renderAnchor, selected]);
59
- const itemsToRender = react_1.useMemo(() => {
60
- return items.map(item => {
61
- const isItemSelected = isMultiSelectVariant(selected) ? selected.includes(item) : selected === item;
62
- return {
63
- ...item,
64
- role: 'option',
65
- selected: 'selected' in item && item.selected === undefined ? undefined : isItemSelected,
66
- onAction: (itemFromAction, event) => {
67
- item.onAction?.(itemFromAction, event);
68
- if (event.defaultPrevented) {
69
- return;
70
- }
71
- if (isMultiSelectVariant(selected)) {
72
- const otherSelectedItems = selected.filter(selectedItem => selectedItem !== item);
73
- const newSelectedItems = selected.includes(item) ? otherSelectedItems : [...otherSelectedItems, item];
74
- const multiSelectOnChange = onSelectedChange;
75
- multiSelectOnChange(newSelectedItems);
76
- return;
77
- }
78
- // single select
79
- const singleSelectOnChange = onSelectedChange;
80
- singleSelectOnChange(item === selected ? undefined : item);
81
- onClose('selection');
82
- }
83
- };
84
- });
85
- }, [onClose, onSelectedChange, items, selected]);
86
- const inputRef = react_1.default.useRef(null);
87
- const focusTrapSettings = {
88
- initialFocusRef: inputRef
89
- };
90
- const extendedTextInputProps = react_1.useMemo(() => {
91
- return {
92
- sx: { m: 2 },
93
- contrast: true,
94
- ...textInputProps
95
- };
96
- }, [textInputProps]);
97
- return (<AnchoredOverlay_1.AnchoredOverlay renderAnchor={renderMenuAnchor} anchorRef={anchorRef} open={open} onOpen={onOpen} onClose={onClose} overlayProps={overlayProps} focusTrapSettings={focusTrapSettings} focusZoneSettings={focusZoneSettings}>
98
- <FilteredActionList_1.FilteredActionList filterValue={filterValue} onFilterChange={onFilterChange} {...listProps} role="listbox" items={itemsToRender} selectionVariant={isMultiSelectVariant(selected) ? 'multiple' : 'single'} textInputProps={extendedTextInputProps} inputRef={inputRef}
99
- // inheriting height and maxHeight ensures that the FilteredActionList is never taller
100
- // than the Overlay (which would break scrolling the items)
101
- sx={{ ...sx, height: 'inherit', maxHeight: 'inherit' }}/>
102
- </AnchoredOverlay_1.AnchoredOverlay>);
103
- }
104
- exports.SelectPanel = SelectPanel;
105
- SelectPanel.displayName = 'SelectPanel';
package/lib/SideNav.jsx DELETED
@@ -1,173 +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 constants_1 = require("./constants");
26
- const styled_components_1 = __importStar(require("styled-components"));
27
- const Box_1 = __importDefault(require("./Box"));
28
- const Link_1 = __importDefault(require("./Link"));
29
- const react_1 = __importDefault(require("react"));
30
- const classnames_1 = __importDefault(require("classnames"));
31
- const sx_1 = __importDefault(require("./sx"));
32
- function SideNavBase({ variant, className, bordered, children, 'aria-label': ariaLabel }) {
33
- const variantClassName = variant === 'lightweight' ? 'lightweight' : 'normal';
34
- const newClassName = classnames_1.default(className, `variant-${variantClassName}`);
35
- return (<Box_1.default borderWidth={bordered ? '1px' : 0} borderStyle="solid" borderColor="border.default" borderRadius={2} as="nav" className={newClassName} aria-label={ariaLabel}>
36
- {children}
37
- </Box_1.default>);
38
- }
39
- const SideNav = styled_components_1.default(SideNavBase) `
40
- background-color: ${constants_1.get('colors.canvas.subtle')};
41
-
42
- ${props => props.bordered &&
43
- styled_components_1.css `
44
- // Remove duplicate borders from nested SideNavs
45
- & > & {
46
- border-left: 0;
47
- border-right: 0;
48
- border-bottom: 0;
49
- }
50
- `}
51
-
52
- ${sx_1.default};
53
- `;
54
- // used for variant normal hover, focus pseudo selectors
55
- const CommonAccessibilityVariantNormalStyles = styled_components_1.css `
56
- background-color: ${constants_1.get('colors.neutral.subtle')};
57
- outline: none;
58
- text-decoration: none;
59
- `;
60
- // used for light weight hover, focus pseudo selectors
61
- const CommonAccessibilityVariantLightWeightStyles = styled_components_1.css `
62
- color: ${constants_1.get('colors.fg.default')};
63
- text-decoration: none;
64
- outline: none;
65
- `;
66
- const SideNavLink = styled_components_1.default(Link_1.default).attrs(props => {
67
- const isReactRouter = typeof props.to === 'string';
68
- if (isReactRouter || props.selected) {
69
- // according to their docs, NavLink supports aria-current:
70
- // https://reacttraining.com/react-router/web/api/NavLink/aria-current-string
71
- return { 'aria-current': 'page' };
72
- }
73
- else {
74
- return {};
75
- }
76
- }) `
77
- position: relative;
78
- display: block;
79
- ${props => props.variant === 'full' &&
80
- styled_components_1.css `
81
- display: flex;
82
- align-items: center;
83
- justify-content: space-between;
84
- `}
85
- width: 100%;
86
- text-align: left;
87
- font-size: ${constants_1.get('fontSizes.1')};
88
-
89
- & > ${SideNav} {
90
- border-bottom: none;
91
- }
92
-
93
- ${SideNav}.variant-normal > & {
94
- color: ${constants_1.get('colors.fg.default')};
95
- padding: ${constants_1.get('space.3')};
96
- border: 0;
97
- border-top: ${constants_1.get('borderWidths.1')} solid ${constants_1.get('colors.border.muted')};
98
-
99
- &:first-child {
100
- border-top: 0;
101
- border-top-right-radius: ${constants_1.get('radii.2')};
102
- border-top-left-radius: ${constants_1.get('radii.2')};
103
- }
104
-
105
- &:last-child {
106
- border-bottom-right-radius: ${constants_1.get('radii.2')};
107
- border-bottom-left-radius: ${constants_1.get('radii.2')};
108
- }
109
-
110
- // Bar on the left
111
- &::before {
112
- position: absolute;
113
- top: 0;
114
- bottom: 0;
115
- left: 0;
116
- z-index: 1;
117
- width: 3px;
118
- pointer-events: none;
119
- content: '';
120
- }
121
-
122
- &:hover {
123
- ${CommonAccessibilityVariantNormalStyles}
124
- }
125
-
126
- &:focus {
127
- ${CommonAccessibilityVariantNormalStyles}
128
- box-shadow: ${constants_1.get('shadows.primer.shadow.focus')};
129
- z-index: 1;
130
- }
131
-
132
- &[aria-current='page'],
133
- &[aria-selected='true'] {
134
- background-color: ${constants_1.get('colors.sidenav.selectedBg')};
135
-
136
- // Bar on the left
137
- &::before {
138
- background-color: ${constants_1.get('colors.primer.border.active')};
139
- }
140
- }
141
- }
142
-
143
- ${SideNav}.variant-lightweight > & {
144
- padding: ${constants_1.get('space.1')} 0;
145
- color: ${constants_1.get('colors.accent.fg')};
146
-
147
- &:hover {
148
- ${CommonAccessibilityVariantLightWeightStyles}
149
- }
150
-
151
- &:focus {
152
- ${CommonAccessibilityVariantLightWeightStyles}
153
- box-shadow: ${constants_1.get('shadows.primer.shadow.focus')};
154
- z-index: 1;
155
- }
156
-
157
- &[aria-current='page'],
158
- &[aria-selected='true'] {
159
- color: ${constants_1.get('colors.fg.default')};
160
- font-weight: ${constants_1.get('fontWeights.semibold')};
161
- }
162
- }
163
-
164
- ${sx_1.default};
165
- `;
166
- SideNav.defaultProps = {
167
- variant: 'normal'
168
- };
169
- SideNavLink.defaultProps = {
170
- variant: 'normal'
171
- };
172
- SideNavLink.displayName = 'SideNav.Link';
173
- exports.default = Object.assign(SideNav, { Link: SideNavLink });
package/lib/Spinner.jsx DELETED
@@ -1,35 +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 = __importDefault(require("styled-components"));
8
- const constants_1 = require("./constants");
9
- const sx_1 = __importDefault(require("./sx"));
10
- const sizeMap = {
11
- small: '16px',
12
- medium: '32px',
13
- large: '64px'
14
- };
15
- function Spinner({ size: sizeKey = 'medium', ...props }) {
16
- const size = sizeMap[sizeKey];
17
- return (<svg height={size} width={size} viewBox="0 0 16 16" fill="none" {...props}>
18
- <circle cx="8" cy="8" r="7" stroke="currentColor" strokeOpacity="0.25" strokeWidth="2" vectorEffect="non-scaling-stroke"/>
19
- <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" strokeWidth="2" strokeLinecap="round" vectorEffect="non-scaling-stroke"/>
20
- </svg>);
21
- }
22
- const StyledSpinner = styled_components_1.default(Spinner) `
23
- @keyframes rotate-keyframes {
24
- 100% {
25
- transform: rotate(360deg);
26
- }
27
- }
28
-
29
- animation: rotate-keyframes 1s linear infinite;
30
-
31
- ${constants_1.COMMON}
32
- ${sx_1.default}
33
- `;
34
- StyledSpinner.displayName = 'Spinner';
35
- exports.default = StyledSpinner;