@primer/components 0.0.0-20211030175556 → 0.0.0-20211030175634

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 (248) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/dist/browser.esm.js +144 -137
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +128 -121
  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/Button/Button.d.ts +1 -0
  17. package/lib/Button/ButtonClose.d.ts +2 -1
  18. package/lib/Button/ButtonDanger.d.ts +1 -0
  19. package/lib/Button/ButtonInvisible.d.ts +1 -0
  20. package/lib/Button/ButtonOutline.d.ts +1 -0
  21. package/lib/Button/ButtonPrimary.d.ts +1 -0
  22. package/lib/Button/index.js +70 -21
  23. package/lib/Checkbox.d.ts +29 -0
  24. package/lib/Checkbox.js +64 -0
  25. package/lib/CircleOcticon.d.ts +1 -0
  26. package/lib/Dialog.d.ts +3 -2
  27. package/lib/Dropdown.d.ts +4 -0
  28. package/lib/DropdownMenu/DropdownButton.d.ts +2 -1
  29. package/lib/DropdownMenu/index.js +20 -6
  30. package/lib/DropdownStyles.js +26 -18
  31. package/lib/FilterList.d.ts +1 -0
  32. package/lib/FilteredActionList/index.js +12 -4
  33. package/lib/NewButton/index.js +12 -5
  34. package/lib/NewButton/types.js +1 -2
  35. package/lib/Overlay.d.ts +5 -3
  36. package/lib/Pagination/index.js +12 -6
  37. package/lib/Portal/index.js +16 -5
  38. package/lib/Position.d.ts +4 -4
  39. package/lib/SelectMenu/SelectMenu.d.ts +10 -4
  40. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  41. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  42. package/lib/SelectMenu/hooks/useKeyboardNav.js +96 -80
  43. package/lib/SelectMenu/index.js +14 -7
  44. package/lib/SelectPanel/index.js +12 -4
  45. package/lib/TextInputWithTokens.d.ts +1 -0
  46. package/lib/Token/AvatarToken.d.ts +1 -1
  47. package/lib/Token/IssueLabelToken.d.ts +1 -1
  48. package/lib/Token/Token.d.ts +1 -1
  49. package/lib/Token/index.js +30 -11
  50. package/lib/behaviors/anchoredPosition.js +234 -205
  51. package/lib/behaviors/focusTrap.js +157 -121
  52. package/lib/behaviors/focusZone.js +509 -434
  53. package/lib/behaviors/scrollIntoViewingArea.js +35 -18
  54. package/lib/constants.js +43 -39
  55. package/lib/drafts.js +30 -20
  56. package/lib/hooks/index.js +60 -16
  57. package/lib/hooks/useAnchoredPosition.js +40 -32
  58. package/lib/hooks/useCombinedRefs.js +36 -32
  59. package/lib/hooks/useDialog.js +96 -72
  60. package/lib/hooks/useFocusTrap.js +60 -43
  61. package/lib/hooks/useFocusZone.js +50 -54
  62. package/lib/hooks/useOnEscapePress.js +36 -25
  63. package/lib/hooks/useOpenAndCloseFocus.js +34 -22
  64. package/lib/hooks/useProvidedRefOrCreate.js +14 -10
  65. package/lib/hooks/useProvidedStateOrCreate.js +16 -13
  66. package/lib/hooks/useRenderForcingRef.js +17 -13
  67. package/lib/hooks/useResizeObserver.js +18 -15
  68. package/lib/hooks/useSafeTimeout.js +30 -22
  69. package/lib/hooks/useScrollFlash.js +23 -16
  70. package/lib/index.d.ts +2 -0
  71. package/lib/index.js +652 -163
  72. package/lib/polyfills/eventListenerSignal.js +45 -37
  73. package/lib/sx.js +22 -10
  74. package/lib/theme-preval.js +3169 -64
  75. package/lib/theme.js +12 -3
  76. package/lib/utils/iterateFocusableElements.js +85 -63
  77. package/lib/utils/testing.d.ts +2 -1
  78. package/lib/utils/testing.js +29 -0
  79. package/lib/utils/theme.js +47 -33
  80. package/lib/utils/types/AriaRole.js +1 -2
  81. package/lib/utils/types/ComponentProps.js +1 -2
  82. package/lib/utils/types/Flatten.js +1 -2
  83. package/lib/utils/types/KeyPaths.js +1 -2
  84. package/lib/utils/types/MandateProps.js +1 -16
  85. package/lib/utils/types/Merge.js +1 -2
  86. package/lib/utils/types/index.js +69 -16
  87. package/lib/utils/uniqueId.js +8 -5
  88. package/lib/utils/use-force-update.js +14 -8
  89. package/lib/utils/useIsomorphicLayoutEffect.js +11 -8
  90. package/lib/utils/userAgent.js +12 -8
  91. package/lib-esm/ActionList/Item.js +3 -3
  92. package/lib-esm/ActionList2/Item.js +3 -1
  93. package/lib-esm/ActionList2/List.js +1 -2
  94. package/lib-esm/ActionList2/Selection.js +3 -1
  95. package/lib-esm/Autocomplete/Autocomplete.d.ts +1 -0
  96. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +1 -0
  97. package/lib-esm/Button/Button.d.ts +1 -0
  98. package/lib-esm/Button/ButtonClose.d.ts +2 -1
  99. package/lib-esm/Button/ButtonDanger.d.ts +1 -0
  100. package/lib-esm/Button/ButtonInvisible.d.ts +1 -0
  101. package/lib-esm/Button/ButtonOutline.d.ts +1 -0
  102. package/lib-esm/Button/ButtonPrimary.d.ts +1 -0
  103. package/lib-esm/Checkbox.d.ts +29 -0
  104. package/lib-esm/Checkbox.js +44 -0
  105. package/lib-esm/CircleOcticon.d.ts +1 -0
  106. package/lib-esm/Dialog.d.ts +3 -2
  107. package/lib-esm/Dropdown.d.ts +4 -0
  108. package/lib-esm/DropdownMenu/DropdownButton.d.ts +2 -1
  109. package/lib-esm/FilterList.d.ts +1 -0
  110. package/lib-esm/Overlay.d.ts +5 -3
  111. package/lib-esm/Position.d.ts +4 -4
  112. package/lib-esm/SelectMenu/SelectMenu.d.ts +10 -4
  113. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  114. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  115. package/lib-esm/TextInputWithTokens.d.ts +1 -0
  116. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  117. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  118. package/lib-esm/Token/Token.d.ts +1 -1
  119. package/lib-esm/index.d.ts +2 -0
  120. package/lib-esm/index.js +1 -0
  121. package/lib-esm/theme-preval.js +446 -0
  122. package/lib-esm/utils/testing.d.ts +2 -1
  123. package/lib-esm/utils/testing.js +24 -0
  124. package/package.json +4 -5
  125. package/lib/ActionList/Divider.jsx +0 -29
  126. package/lib/ActionList/Group.jsx +0 -23
  127. package/lib/ActionList/Header.jsx +0 -66
  128. package/lib/ActionList/Item.jsx +0 -288
  129. package/lib/ActionList/List.jsx +0 -138
  130. package/lib/ActionList2/Description.jsx +0 -29
  131. package/lib/ActionList2/Divider.jsx +0 -22
  132. package/lib/ActionList2/Group.jsx +0 -54
  133. package/lib/ActionList2/Header.d.ts +0 -26
  134. package/lib/ActionList2/Header.js +0 -55
  135. package/lib/ActionList2/Header.jsx +0 -36
  136. package/lib/ActionList2/Item.jsx +0 -174
  137. package/lib/ActionList2/LinkItem.jsx +0 -28
  138. package/lib/ActionList2/List.jsx +0 -41
  139. package/lib/ActionList2/Selection.jsx +0 -50
  140. package/lib/ActionList2/Visuals.jsx +0 -48
  141. package/lib/ActionMenu.jsx +0 -73
  142. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +0 -100
  143. package/lib/Autocomplete/Autocomplete.jsx +0 -100
  144. package/lib/Autocomplete/AutocompleteContext.jsx +0 -5
  145. package/lib/Autocomplete/AutocompleteInput.jsx +0 -113
  146. package/lib/Autocomplete/AutocompleteMenu.jsx +0 -190
  147. package/lib/Autocomplete/AutocompleteOverlay.jsx +0 -55
  148. package/lib/Avatar.jsx +0 -34
  149. package/lib/AvatarPair.jsx +0 -29
  150. package/lib/AvatarStack.jsx +0 -151
  151. package/lib/BaseStyles.jsx +0 -65
  152. package/lib/BorderBox.jsx +0 -18
  153. package/lib/Box.jsx +0 -10
  154. package/lib/BranchName.jsx +0 -20
  155. package/lib/Breadcrumbs.jsx +0 -71
  156. package/lib/Button/Button.jsx +0 -40
  157. package/lib/Button/ButtonBase.jsx +0 -33
  158. package/lib/Button/ButtonClose.jsx +0 -53
  159. package/lib/Button/ButtonDanger.jsx +0 -43
  160. package/lib/Button/ButtonGroup.jsx +0 -55
  161. package/lib/Button/ButtonInvisible.jsx +0 -32
  162. package/lib/Button/ButtonOutline.jsx +0 -43
  163. package/lib/Button/ButtonPrimary.jsx +0 -42
  164. package/lib/Button/ButtonStyles.jsx +0 -37
  165. package/lib/Button/ButtonTableList.jsx +0 -46
  166. package/lib/Caret.jsx +0 -93
  167. package/lib/CircleBadge.jsx +0 -42
  168. package/lib/CircleOcticon.jsx +0 -21
  169. package/lib/CounterLabel.jsx +0 -43
  170. package/lib/Details.jsx +0 -21
  171. package/lib/Dialog/ConfirmationDialog.jsx +0 -146
  172. package/lib/Dialog/Dialog.jsx +0 -279
  173. package/lib/Dialog.jsx +0 -129
  174. package/lib/Dropdown.jsx +0 -131
  175. package/lib/DropdownMenu/DropdownButton.jsx +0 -14
  176. package/lib/DropdownMenu/DropdownMenu.jsx +0 -70
  177. package/lib/FilterList.jsx +0 -59
  178. package/lib/FilteredActionList/FilteredActionList.jsx +0 -100
  179. package/lib/FilteredSearch.jsx +0 -28
  180. package/lib/Flash.jsx +0 -69
  181. package/lib/Flex.jsx +0 -15
  182. package/lib/FormGroup.jsx +0 -22
  183. package/lib/Grid.jsx +0 -15
  184. package/lib/Header.jsx +0 -83
  185. package/lib/Heading.jsx +0 -21
  186. package/lib/Label.jsx +0 -82
  187. package/lib/LabelGroup.jsx +0 -18
  188. package/lib/Link.jsx +0 -36
  189. package/lib/NewButton/button-counter.jsx +0 -14
  190. package/lib/NewButton/button.jsx +0 -279
  191. package/lib/Overlay.jsx +0 -154
  192. package/lib/Pagehead.jsx +0 -17
  193. package/lib/Pagination/Pagination.jsx +0 -161
  194. package/lib/Pagination/model.jsx +0 -174
  195. package/lib/PointerBox.jsx +0 -25
  196. package/lib/Popover.jsx +0 -202
  197. package/lib/Portal/Portal.jsx +0 -79
  198. package/lib/Position.jsx +0 -46
  199. package/lib/ProgressBar.jsx +0 -39
  200. package/lib/SelectMenu/SelectMenu.jsx +0 -112
  201. package/lib/SelectMenu/SelectMenuContext.jsx +0 -5
  202. package/lib/SelectMenu/SelectMenuDivider.jsx +0 -42
  203. package/lib/SelectMenu/SelectMenuFilter.jsx +0 -58
  204. package/lib/SelectMenu/SelectMenuFooter.jsx +0 -45
  205. package/lib/SelectMenu/SelectMenuHeader.jsx +0 -42
  206. package/lib/SelectMenu/SelectMenuItem.jsx +0 -142
  207. package/lib/SelectMenu/SelectMenuList.jsx +0 -59
  208. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +0 -22
  209. package/lib/SelectMenu/SelectMenuModal.jsx +0 -118
  210. package/lib/SelectMenu/SelectMenuTab.jsx +0 -92
  211. package/lib/SelectMenu/SelectMenuTabPanel.jsx +0 -42
  212. package/lib/SelectMenu/SelectMenuTabs.jsx +0 -57
  213. package/lib/SelectPanel/SelectPanel.jsx +0 -105
  214. package/lib/SideNav.jsx +0 -173
  215. package/lib/Spinner.jsx +0 -35
  216. package/lib/StateLabel.jsx +0 -93
  217. package/lib/StyledOcticon.jsx +0 -18
  218. package/lib/SubNav.jsx +0 -101
  219. package/lib/TabNav.jsx +0 -58
  220. package/lib/Text.jsx +0 -14
  221. package/lib/TextInput.jsx +0 -23
  222. package/lib/TextInputWithTokens.jsx +0 -218
  223. package/lib/ThemeProvider.jsx +0 -130
  224. package/lib/Timeline.jsx +0 -123
  225. package/lib/Token/AvatarToken.jsx +0 -54
  226. package/lib/Token/IssueLabelToken.jsx +0 -125
  227. package/lib/Token/Token.jsx +0 -103
  228. package/lib/Token/TokenBase.jsx +0 -88
  229. package/lib/Token/_RemoveTokenButton.jsx +0 -108
  230. package/lib/Token/_TokenTextContainer.jsx +0 -49
  231. package/lib/Tooltip.jsx +0 -246
  232. package/lib/Truncate.jsx +0 -24
  233. package/lib/UnderlineNav.jsx +0 -88
  234. package/lib/_TextInputWrapper.jsx +0 -120
  235. package/lib/_UnstyledTextInput.jsx +0 -22
  236. package/lib/hooks/useDetails.jsx +0 -39
  237. package/lib/hooks/useOnOutsideClick.jsx +0 -61
  238. package/lib/hooks/useOverlay.jsx +0 -15
  239. package/lib/utils/create-slots.jsx +0 -65
  240. package/lib/utils/deprecate.jsx +0 -59
  241. package/lib/utils/isNumeric.jsx +0 -7
  242. package/lib/utils/ssr.jsx +0 -6
  243. package/lib/utils/test-deprecations.jsx +0 -20
  244. package/lib/utils/test-helpers.jsx +0 -8
  245. package/lib/utils/test-matchers.jsx +0 -100
  246. package/lib/utils/testing.jsx +0 -206
  247. package/lib-esm/ActionList2/Header.d.ts +0 -26
  248. package/lib-esm/ActionList2/Header.js +0 -44
@@ -1,142 +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.listItemStyles = void 0;
26
- const octicons_react_1 = require("@primer/octicons-react");
27
- const react_1 = __importStar(require("react"));
28
- const styled_components_1 = __importStar(require("styled-components"));
29
- const constants_1 = require("../constants");
30
- const StyledOcticon_1 = __importDefault(require("../StyledOcticon"));
31
- const sx_1 = __importDefault(require("../sx"));
32
- const SelectMenuContext_1 = require("./SelectMenuContext");
33
- exports.listItemStyles = styled_components_1.css `
34
- display: flex;
35
- align-items: center;
36
- padding: ${constants_1.get('space.3')};
37
- overflow: hidden;
38
- text-align: left;
39
- cursor: pointer;
40
- background-color: ${constants_1.get('colors.canvas.overlay')};
41
- border: 0;
42
- border-bottom: ${constants_1.get('borderWidths.1')} solid ${constants_1.get('colors.border.muted')};
43
- color: ${constants_1.get('colors.fg.muted')};
44
- text-decoration: none;
45
- font-size: ${constants_1.get('fontSizes.0')};
46
- font-family: inherit; // needed if user uses a "button" tag
47
- width: 100%;
48
-
49
- &:hover {
50
- text-decoration: none;
51
- }
52
- &:focus {
53
- outline: none;
54
- }
55
-
56
- &[hidden] {
57
- display: none !important;
58
- }
59
-
60
- @media (min-width: ${constants_1.get('breakpoints.0')}) {
61
- padding-top: ${constants_1.get('space.2')};
62
- padding-bottom: ${constants_1.get('space.2')};
63
- }
64
-
65
- .SelectMenu-icon {
66
- width: ${constants_1.get('space.3')};
67
- margin-right: ${constants_1.get('space.2')};
68
- flex-shrink: 0;
69
- }
70
-
71
- .SelectMenu-selected-icon {
72
- visibility: hidden;
73
- transition: transform 0.12s cubic-bezier(0.5, 0.1, 1, 0.5), visibility 0s 0.12s linear;
74
- transform: scale(0);
75
- }
76
-
77
- // selected items
78
- &[aria-checked='true'] {
79
- font-weight: 500;
80
- color: ${constants_1.get('colors.fg.default')};
81
-
82
- .SelectMenu-selected-icon {
83
- visibility: visible;
84
- transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), visibility 0s linear;
85
- transform: scale(1);
86
- }
87
- }
88
-
89
- // can hover states
90
- @media (hover: hover) {
91
- &:hover,
92
- &:active,
93
- &:focus {
94
- background-color: ${constants_1.get('colors.neutral.subtle')};
95
- }
96
- }
97
-
98
- // Can not hover states
99
- //
100
- // For touch input
101
-
102
- @media (hover: none) {
103
- // Android
104
- &:focus,
105
- &:active {
106
- background-color: ${constants_1.get('colors.canvas.subtle')};
107
- }
108
-
109
- // iOS Safari
110
- // :active would work if ontouchstart is added to the button
111
- // Instead this tweaks the "native" highlight color
112
- -webkit-tap-highlight-color: ${constants_1.get('colors.selectMenu.tapHighlight')};
113
- }
114
- `;
115
- const StyledItem = styled_components_1.default.a.attrs(() => ({
116
- role: 'menuitemcheckbox'
117
- })) `
118
- ${exports.listItemStyles}
119
- ${sx_1.default};
120
- `;
121
- const SelectMenuItem = react_1.forwardRef(({ children, selected, theme, onClick, ...rest }, forwardedRef) => {
122
- const menuContext = react_1.useContext(SelectMenuContext_1.MenuContext);
123
- const backupRef = react_1.useRef(null);
124
- const itemRef = forwardedRef ?? backupRef;
125
- // close the menu when an item is clicked
126
- // this can be overriden if the user provides a `onClick` prop and prevents default in it
127
- const handleClick = (e) => {
128
- onClick && onClick(e);
129
- if (!e.defaultPrevented) {
130
- menuContext.setOpen?.(false);
131
- }
132
- };
133
- return (<StyledItem ref={itemRef} {...rest} theme={theme} onClick={handleClick} aria-checked={selected}>
134
- <StyledOcticon_1.default theme={theme} className="SelectMenu-icon SelectMenu-selected-icon" icon={octicons_react_1.CheckIcon}/>
135
- {children}
136
- </StyledItem>);
137
- });
138
- SelectMenuItem.defaultProps = {
139
- selected: false
140
- };
141
- SelectMenuItem.displayName = 'SelectMenu.Item';
142
- exports.default = SelectMenuItem;
@@ -1,59 +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 = __importStar(require("styled-components"));
26
- const constants_1 = require("../constants");
27
- const sx_1 = __importDefault(require("../sx"));
28
- const listStyles = styled_components_1.css `
29
- position: relative;
30
- padding: 0;
31
- margin: 0;
32
- flex: auto;
33
- overflow-x: hidden;
34
- overflow-y: auto;
35
- background-color: ${constants_1.get('colors.canvas.overlay')};
36
- -webkit-overflow-scrolling: touch; // Adds momentum + bouncy scrolling
37
-
38
- @media (hover: hover) {
39
- .SelectMenuTab:focus {
40
- background-color: ${constants_1.get('colors.selectMenu.tapFocusBg')};
41
- }
42
-
43
- .SelectMenuTab:not([aria-checked='true']):hover {
44
- color: ${constants_1.get('colors.fg.default')};
45
- background-color: ${constants_1.get('colors.canvas.subtle')};
46
- }
47
-
48
- .SelectMenuTab:not([aria-checked='true']):active {
49
- color: ${constants_1.get('colors.fg.default')};
50
- background-color: ${constants_1.get('colors.canvas.subtle')};
51
- }
52
- }
53
- `;
54
- const SelectMenuList = styled_components_1.default.div `
55
- ${listStyles}
56
- ${sx_1.default};
57
- `;
58
- SelectMenuList.displayName = 'SelectMenu.List';
59
- exports.default = SelectMenuList;
@@ -1,22 +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 Spinner_1 = __importDefault(require("../Spinner"));
10
- const sx_1 = __importDefault(require("../sx"));
11
- const Animation = styled_components_1.default.div `
12
- padding: ${constants_1.get('space.6')} ${constants_1.get('space.4')};
13
- text-align: center;
14
- background-color: ${constants_1.get('colors.canvas.overlay')};
15
- ${sx_1.default}
16
- `;
17
- const SelectMenuLoadingAnimation = (props) => {
18
- return (<Animation {...props}>
19
- <Spinner_1.default />
20
- </Animation>);
21
- };
22
- exports.default = SelectMenuLoadingAnimation;
@@ -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';