UNPKG

12.5 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7var slicedToArray = require('./slicedToArray-0711941d.js');
8require('./unsupportedIterableToArray-68db1d3b.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12require('./index-b0606964.js');
13require('./defineProperty-0921a47c.js');
14require('./toConsumableArray-d8a4a2c3.js');
15var _styled = require('styled-components');
16var _styled__default = _interopDefault(_styled);
17require('./getPrototypeOf-2a661a20.js');
18require('./color.js');
19require('./components.js');
20require('./contains-component.js');
21require('./css.js');
22require('./dayjs.min-e07657bf.js');
23require('./date.js');
24require('./miscellaneous.js');
25require('./environment.js');
26require('./font.js');
27require('./math-f4029164.js');
28require('./characters.js');
29require('./format.js');
30var keycodes = require('./keycodes.js');
31require('./url.js');
32require('./web3.js');
33var constants = require('./constants.js');
34require('./breakpoints.js');
35var springs = require('./springs.js');
36var textStyles = require('./text-styles.js');
37require('./theme-dark.js');
38require('./theme-light.js');
39var Theme = require('./Theme.js');
40var _extends$1 = require('./extends-40571110.js');
41var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
42var index$1 = require('./index-ecc57c9f.js');
43require('./FocusVisible.js');
44var ButtonBase = require('./ButtonBase.js');
45require('./IconPropTypes-56de5759.js');
46require('./IconAddUser.js');
47require('./IconAlert.js');
48require('./IconAlignCenter.js');
49require('./IconAlignJustify.js');
50require('./IconAlignLeft.js');
51require('./IconAlignRight.js');
52require('./IconAragon.js');
53require('./IconArrowDown.js');
54require('./IconArrowLeft.js');
55require('./IconArrowRight.js');
56require('./IconArrowUp.js');
57require('./IconAtSign.js');
58require('./IconBlock.js');
59require('./IconBookmark.js');
60require('./IconCalendar.js');
61require('./IconCanvas.js');
62require('./IconCaution.js');
63require('./IconCenter.js');
64require('./IconChart.js');
65require('./IconChat.js');
66require('./IconCheck.js');
67require('./IconChip.js');
68require('./IconCircleCheck.js');
69require('./IconCircleMinus.js');
70require('./IconCirclePlus.js');
71require('./IconClock.js');
72require('./IconCloudDownload.js');
73require('./IconCloudUpload.js');
74require('./IconCoin.js');
75require('./IconConfiguration.js');
76require('./IconConnect.js');
77require('./IconConnection.js');
78require('./IconConsole.js');
79require('./IconCopy.js');
80require('./IconCross.js');
81require('./IconDashedSquare.js');
82var IconDown = require('./IconDown.js');
83require('./IconDownload.js');
84require('./IconEdit.js');
85require('./IconEllipsis.js');
86require('./IconEnter.js');
87require('./IconEthereum.js');
88require('./IconExternal.js');
89require('./IconFile.js');
90require('./IconFilter.js');
91require('./IconFlag.js');
92require('./IconFolder.js');
93require('./IconGraph2.js');
94require('./IconGraph.js');
95require('./IconGrid.js');
96require('./IconGroup.js');
97require('./IconHash.js');
98require('./IconHeart.js');
99require('./IconHide.js');
100require('./IconHome.js');
101require('./IconImage.js');
102require('./IconInfo.js');
103require('./IconLabel.js');
104require('./IconLayers.js');
105require('./IconLeft.js');
106require('./IconLink.js');
107require('./IconLocation.js');
108require('./IconLock.js');
109require('./IconMail.js');
110require('./IconMaximize.js');
111require('./IconMenu.js');
112require('./IconMinimize.js');
113require('./IconMinus.js');
114require('./IconMove.js');
115require('./IconNoPicture.js');
116require('./IconPicture.js');
117require('./IconPlus.js');
118require('./IconPower.js');
119require('./IconPrint.js');
120require('./IconProhibited.js');
121require('./IconQuestion.js');
122require('./IconRefresh.js');
123require('./IconRemoveUser.js');
124require('./IconRight.js');
125require('./IconRotateLeft.js');
126require('./IconRotateRight.js');
127require('./IconSearch.js');
128require('./IconSettings.js');
129require('./IconShare.js');
130require('./IconSquareMinus.js');
131require('./IconSquarePlus.js');
132require('./IconSquare.js');
133require('./IconStarFilled.js');
134require('./IconStar.js');
135require('./IconSwap.js');
136require('./IconTarget.js');
137require('./IconToken.js');
138require('./IconTrash.js');
139require('./IconUnlock.js');
140require('./IconUp.js');
141require('./IconUpload.js');
142require('./IconUser.js');
143require('./IconView.js');
144require('./IconVote.js');
145require('./IconWallet.js');
146require('./IconWarning.js');
147require('./IconWorld.js');
148require('./IconWrite.js');
149require('./IconZoomIn.js');
150require('./IconZoomOut.js');
151require('./objectWithoutPropertiesLoose-1af20ad0.js');
152require('react-dom');
153var web = require('./web-d0294535.js');
154require('./useArrowKeysFocus.js');
155require('./useClickOutside.js');
156require('./useFocusEnter.js');
157var useFocusLeave = require('./useFocusLeave.js');
158require('./useImageExists.js');
159require('./useKeyDown.js');
160require('./useOnBlur.js');
161
162/* eslint-disable react/prop-types */
163
164var _StyledDiv = _styled__default("div").withConfig({
165 displayName: "TabsFullWidth___StyledDiv",
166 componentId: "sc-1sqpfuf-0"
167})(["padding-bottom:", "px;"], function (p) {
168 return p._css;
169});
170
171var _StyledDiv2 = _styled__default("div").withConfig({
172 displayName: "TabsFullWidth___StyledDiv2",
173 componentId: "sc-1sqpfuf-1"
174})(["position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;height:", "px;"], function (p) {
175 return p._css2;
176});
177
178var _StyledButtonBase = _styled__default(ButtonBase.default).withConfig({
179 displayName: "TabsFullWidth___StyledButtonBase",
180 componentId: "sc-1sqpfuf-2"
181})(["display:flex;align-items:center;justify-content:space-between;width:100%;height:100%;background:", ";border-style:solid;border-color:", ";border-top-width:", ";border-bottom-width:1px;border-radius:0;", ";&:active{", "}"], function (p) {
182 return p._css3;
183}, function (p) {
184 return p._css4;
185}, function (p) {
186 return p._css5;
187}, function (p) {
188 return p._css6;
189}, function (p) {
190 return p._css7;
191});
192
193var _StyledDiv3 = _styled__default("div").withConfig({
194 displayName: "TabsFullWidth___StyledDiv3",
195 componentId: "sc-1sqpfuf-3"
196})(["padding-left:", "px;"], function (p) {
197 return p._css8;
198});
199
200var _StyledDiv4 = _styled__default("div").withConfig({
201 displayName: "TabsFullWidth___StyledDiv4",
202 componentId: "sc-1sqpfuf-4"
203})(["display:flex;align-items:center;justify-content:center;width:", "px;height:100%;color:", ";"], function (p) {
204 return p._css9;
205}, function (p) {
206 return p._css10;
207});
208
209var _StyledIconDown = _styled__default(IconDown.default).withConfig({
210 displayName: "TabsFullWidth___StyledIconDown",
211 componentId: "sc-1sqpfuf-5"
212})(["transition:transform 150ms ease-in-out;transform:rotate3d(0,0,1,", "deg);color:", ";"], function (p) {
213 return p._css11;
214}, function (p) {
215 return p._css12;
216});
217
218var _StyledAnimatedDiv = _styled__default(web.extendedAnimated.div).withConfig({
219 displayName: "TabsFullWidth___StyledAnimatedDiv",
220 componentId: "sc-1sqpfuf-6"
221})(["position:absolute;z-index:9;top:", "px;left:0;right:0;border-bottom:1px solid ", ";box-shadow:0px 2px 3px rgba(0,0,0,0.05);background:", ";"], function (p) {
222 return p._css13;
223}, function (p) {
224 return p._css14;
225}, function (p) {
226 return p._css15;
227});
228
229function TabsFullWidth(_ref) {
230 var items = _ref.items,
231 selected = _ref.selected,
232 onChange = _ref.onChange;
233 var theme = Theme.useTheme();
234 var buttonRef = React.useRef(null);
235
236 var _useInside = index$1.o('SidePanel'),
237 _useInside2 = slicedToArray._slicedToArray(_useInside, 1),
238 insideSidePanel = _useInside2[0];
239
240 var _useState = React.useState(false),
241 _useState2 = slicedToArray._slicedToArray(_useState, 2),
242 opened = _useState2[0],
243 setOpened = _useState2[1];
244
245 var selectedItem = items[selected];
246 var dropdownDisabled = items.length === 1;
247 var close = React.useCallback(function () {
248 return setOpened(false);
249 }, []);
250 var focusButton = React.useCallback(function () {
251 if (buttonRef.current) {
252 buttonRef.current.focus();
253 }
254 }, []);
255 var toggle = React.useCallback(function () {
256 setOpened(function (opened) {
257 return !opened;
258 });
259 }, []);
260 var change = React.useCallback(function (index) {
261 close();
262 focusButton();
263
264 if (index !== selected) {
265 onChange(index);
266 }
267 }, [selected, onChange, close, focusButton]);
268
269 var _useFocusLeave = useFocusLeave.useFocusLeave(close),
270 handleFocusLeave = _useFocusLeave.handleFocusLeave,
271 ref = _useFocusLeave.ref; // close on escape
272
273
274 var handleMenuKeyDown = React.useCallback(function (event) {
275 if (event.keyCode === keycodes.KEY_ESC) {
276 close();
277 focusButton();
278 }
279 }, [close, focusButton]);
280 return /*#__PURE__*/React__default.createElement(_StyledDiv, {
281 ref: ref,
282 onBlur: handleFocusLeave,
283 _css: 2 * constants.GU
284 }, /*#__PURE__*/React__default.createElement(_StyledDiv2, {
285 _css2: 8 * constants.GU
286 }, /*#__PURE__*/React__default.createElement(_StyledButtonBase, {
287 ref: buttonRef,
288 disabled: dropdownDisabled,
289 onClick: toggle,
290 _css3: theme.surface,
291 _css4: theme.border,
292 _css5: insideSidePanel ? '0' : '1px',
293 _css6: textStyles.textStyle('body2'),
294 _css7: dropdownDisabled ? '' : "background: ".concat(theme.surfacePressed, ";")
295 }, /*#__PURE__*/React__default.createElement(_StyledDiv3, {
296 _css8: 2 * constants.GU
297 }, selectedItem), /*#__PURE__*/React__default.createElement(_StyledDiv4, {
298 _css9: 7 * constants.GU,
299 _css10: theme.surfaceIcon
300 }, /*#__PURE__*/React__default.createElement(_StyledIconDown, {
301 _css11: opened ? 180 : 0,
302 _css12: dropdownDisabled ? theme.disabled : theme.surfaceIcon
303 }))), /*#__PURE__*/React__default.createElement(web.Transition, {
304 items: opened,
305 config: springs.springs.swift,
306 from: {
307 y: -1,
308 opacity: 0
309 },
310 enter: {
311 y: 0,
312 opacity: 1
313 },
314 leave: {
315 y: -1,
316 opacity: 0
317 },
318 native: true
319 }, function (opened) {
320 return opened && function (_ref2) {
321 var opacity = _ref2.opacity,
322 y = _ref2.y;
323 return /*#__PURE__*/React__default.createElement(_StyledAnimatedDiv, {
324 style: {
325 opacity: opacity,
326 transform: y.interpolate(function (v) {
327 return "translate3d(0, ".concat(v * 4, "px, 0)");
328 })
329 },
330 _css13: 8 * constants.GU,
331 _css14: theme.border,
332 _css15: theme.surface
333 }, /*#__PURE__*/React__default.createElement(Menu, {
334 items: items,
335 onChange: change,
336 onKeyDown: handleMenuKeyDown
337 }));
338 };
339 })));
340}
341
342var _StyledDiv5 = _styled__default("div").withConfig({
343 displayName: "TabsFullWidth___StyledDiv5",
344 componentId: "sc-1sqpfuf-7"
345})(["display:flex;flex-direction:column;outline:0;"]);
346
347function Menu(_ref3) {
348 var items = _ref3.items,
349 onChange = _ref3.onChange,
350 props = objectWithoutProperties._objectWithoutProperties(_ref3, ["items", "onChange"]);
351
352 var handleRef = React.useCallback(function (element) {
353 if (element) {
354 element.focus();
355 }
356 }, []);
357 return /*#__PURE__*/React__default.createElement(_StyledDiv5, _extends$1._extends({
358 ref: handleRef,
359 tabIndex: "0"
360 }, props), items.map(function (item, index) {
361 return /*#__PURE__*/React__default.createElement(MenuItem, {
362 key: index,
363 item: item,
364 index: index,
365 onChange: onChange
366 });
367 }));
368}
369
370var _StyledButtonBase2 = _styled__default(ButtonBase.default).withConfig({
371 displayName: "TabsFullWidth___StyledButtonBase2",
372 componentId: "sc-1sqpfuf-8"
373})(["height:", "px;padding-left:", "px;text-align:left;", ";&:active{background:", ";}"], function (p) {
374 return p._css16;
375}, function (p) {
376 return p._css17;
377}, function (p) {
378 return p._css18;
379}, function (p) {
380 return p._css19;
381});
382
383function MenuItem(_ref4) {
384 var item = _ref4.item,
385 index = _ref4.index,
386 onChange = _ref4.onChange;
387 var theme = Theme.useTheme();
388 var change = React.useCallback(function () {
389 onChange(index);
390 }, [onChange, index]);
391 return /*#__PURE__*/React__default.createElement(_StyledButtonBase2, {
392 onClick: change,
393 _css16: 8 * constants.GU,
394 _css17: 2 * constants.GU,
395 _css18: textStyles.textStyle('body2'),
396 _css19: theme.surfacePressed
397 }, item);
398}
399
400exports.TabsFullWidth = TabsFullWidth;
401//# sourceMappingURL=TabsFullWidth.js.map