1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
6 |
|
7 | var slicedToArray = require('./slicedToArray-ef426d0f.js');
|
8 | require('./unsupportedIterableToArray-8a00e599.js');
|
9 | var React = require('react');
|
10 | var React__default = _interopDefault(React);
|
11 | require('./_commonjsHelpers-72d386ba.js');
|
12 | var index = require('./index-b0606964.js');
|
13 | var defineProperty = require('./defineProperty-0921a47c.js');
|
14 | require('./toConsumableArray-7f36359f.js');
|
15 | var _styled = require('styled-components');
|
16 | var _styled__default = _interopDefault(_styled);
|
17 | require('./getPrototypeOf-e2d1e599.js');
|
18 | require('./color.js');
|
19 | require('./components.js');
|
20 | require('./contains-component.js');
|
21 | var css = require('./css.js');
|
22 | require('./dayjs.min-aa59a48e.js');
|
23 | require('./date.js');
|
24 | require('./miscellaneous.js');
|
25 | var environment = require('./environment.js');
|
26 | require('./font.js');
|
27 | require('./math-ecfd5d91.js');
|
28 | require('./characters.js');
|
29 | require('./format.js');
|
30 | var keycodes = require('./keycodes.js');
|
31 | require('./url.js');
|
32 | require('./web3.js');
|
33 | var constants = require('./constants.js');
|
34 | require('./breakpoints.js');
|
35 | require('./springs.js');
|
36 | var textStyles = require('./text-styles.js');
|
37 | require('./theme-dark.js');
|
38 | require('./theme-light.js');
|
39 | var Theme = require('./Theme.js');
|
40 | var _extends = require('./extends-40571110.js');
|
41 | var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
|
42 | var FocusVisible = require('./FocusVisible.js');
|
43 |
|
44 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
45 |
|
46 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty._defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
47 |
|
48 | function getElementProps(_ref) {
|
49 | var element = _ref.element,
|
50 | href = _ref.href,
|
51 | disabled = _ref.disabled,
|
52 | external = _ref.external;
|
53 |
|
54 |
|
55 | if (element === 'button') {
|
56 | return ['button', {
|
57 | type: 'button',
|
58 | disabled: disabled
|
59 | }];
|
60 | }
|
61 |
|
62 |
|
63 | if (element === 'a' && href) {
|
64 | return ['anchor', disabled ? {} : _objectSpread({
|
65 | href: href,
|
66 | rel: 'noopener noreferrer'
|
67 | }, external ? {
|
68 | target: '_blank'
|
69 | } : {})];
|
70 | }
|
71 |
|
72 |
|
73 | return ['basic', {
|
74 | role: 'button',
|
75 | tabIndex: disabled ? '-1' : '0'
|
76 | }];
|
77 | }
|
78 |
|
79 | var _StyledButton = _styled__default("button").withConfig({
|
80 | displayName: "ButtonBase___StyledButton",
|
81 | componentId: "ur1q76-0"
|
82 | })(["position:relative;display:inline-block;padding:0;white-space:nowrap;", ";text-decoration:none;text-align:center;background:none;border-radius:", "px;border:0;outline:0;cursor:", ";", ";&::-moz-focus-inner{border:0;}&:focus:after{content:'';display:", ";position:absolute;top:", "px;left:", "px;right:", "px;bottom:", "px;border-radius:", "px;border:2px solid ", ";}"], function (p) {
|
83 | return p._css;
|
84 | }, constants.RADIUS, function (p) {
|
85 | return p._css2;
|
86 | }, function (p) {
|
87 | return p._css3;
|
88 | }, function (p) {
|
89 | return p._css4;
|
90 | }, function (p) {
|
91 | return p._css5;
|
92 | }, function (p) {
|
93 | return p._css6;
|
94 | }, function (p) {
|
95 | return p._css7;
|
96 | }, function (p) {
|
97 | return p._css8;
|
98 | }, function (p) {
|
99 | return p._css9;
|
100 | }, function (p) {
|
101 | return p._css10;
|
102 | });
|
103 |
|
104 | function ButtonBase(_ref2) {
|
105 | var disabled = _ref2.disabled,
|
106 | element = _ref2.element,
|
107 | external = _ref2.external,
|
108 | focusRingRadius = _ref2.focusRingRadius,
|
109 | focusRingSpacing = _ref2.focusRingSpacing,
|
110 | focusVisible = _ref2.focusVisible,
|
111 | href = _ref2.href,
|
112 | innerRef = _ref2.innerRef,
|
113 | onClick = _ref2.onClick,
|
114 | onKeyDown = _ref2.onKeyDown,
|
115 | showFocusRing = _ref2.showFocusRing,
|
116 | props = objectWithoutProperties._objectWithoutProperties(_ref2, ["disabled", "element", "external", "focusRingRadius", "focusRingSpacing", "focusVisible", "href", "innerRef", "onClick", "onKeyDown", "showFocusRing"]);
|
117 |
|
118 | var theme = Theme.useTheme();
|
119 |
|
120 | if (external === undefined) {
|
121 | external = Boolean(href);
|
122 | }
|
123 |
|
124 | if (typeof focusRingSpacing === 'number') {
|
125 | focusRingSpacing = [focusRingSpacing, focusRingSpacing];
|
126 | }
|
127 |
|
128 | if (!element) {
|
129 | element = href ? 'a' : 'button';
|
130 | }
|
131 |
|
132 | var _getElementProps = getElementProps({
|
133 | element: element,
|
134 | href: href,
|
135 | disabled: disabled,
|
136 | external: external
|
137 | }),
|
138 | _getElementProps2 = slicedToArray._slicedToArray(_getElementProps, 2),
|
139 | elementType = _getElementProps2[0],
|
140 | elementProps = _getElementProps2[1];
|
141 |
|
142 | var handleKeyDown = React.useCallback(function (event) {
|
143 |
|
144 | if (elementType === 'basic' && event.keyCode === keycodes.KEY_ENTER && onClick) {
|
145 | onClick();
|
146 | }
|
147 |
|
148 |
|
149 | if (onKeyDown) {
|
150 | onKeyDown(event);
|
151 | }
|
152 | }, [elementType, onClick, onKeyDown]);
|
153 | return React__default.createElement(_StyledButton, _extends._extends({
|
154 | as: element,
|
155 | ref: innerRef,
|
156 | onClick: disabled ? undefined : onClick,
|
157 | onKeyDown: disabled ? undefined : handleKeyDown
|
158 | }, elementProps, props, {
|
159 | _css: textStyles.textStyle('body3'),
|
160 | _css2: disabled ? 'default' : 'pointer',
|
161 | _css3: elementType === 'basic' ? css.unselectable : '',
|
162 | _css4: focusVisible && showFocusRing ? 'block' : 'none',
|
163 | _css5: -focusRingSpacing[1],
|
164 | _css6: -focusRingSpacing[0],
|
165 | _css7: -focusRingSpacing[0],
|
166 | _css8: -focusRingSpacing[1],
|
167 | _css9: focusRingRadius,
|
168 | _css10: theme.focus
|
169 | }));
|
170 | }
|
171 |
|
172 | ButtonBase.propTypes = {
|
173 | disabled: index.PropTypes.bool,
|
174 | external: index.PropTypes.bool,
|
175 | focusRingRadius: index.PropTypes.number,
|
176 | focusRingSpacing: index.PropTypes.oneOfType([index.PropTypes.number, index.PropTypes.arrayOf(index.PropTypes.number)]),
|
177 | focusVisible: index.PropTypes.bool,
|
178 | href: index.PropTypes.string,
|
179 | innerRef: index.PropTypes.any,
|
180 | onClick: index.PropTypes.func,
|
181 | onKeyDown: index.PropTypes.func,
|
182 | showFocusRing: index.PropTypes.bool,
|
183 | element: index.PropTypes.oneOf(['button', 'div', 'a'])
|
184 | };
|
185 | ButtonBase.defaultProps = {
|
186 | disabled: false,
|
187 | focusRingRadius: 0,
|
188 | focusRingSpacing: 0,
|
189 | showFocusRing: true
|
190 | };
|
191 | var ButtonBaseWithFocus = React__default.forwardRef(function (_ref3, ref) {
|
192 | var onFocusProp = _ref3.onFocus,
|
193 | props = objectWithoutProperties._objectWithoutProperties(_ref3, ["onFocus"]);
|
194 |
|
195 | return React__default.createElement(FocusVisible.default, null, function (_ref4) {
|
196 | var focusVisible = _ref4.focusVisible,
|
197 | onFocus = _ref4.onFocus;
|
198 |
|
199 |
|
200 | var handleFocus = function handleFocus(event) {
|
201 | if (onFocusProp) {
|
202 | onFocusProp(event);
|
203 | }
|
204 |
|
205 | onFocus(event);
|
206 | };
|
207 |
|
208 | return React__default.createElement(ButtonBase, _extends._extends({
|
209 | innerRef: ref,
|
210 | onFocus: handleFocus,
|
211 | focusVisible: focusVisible
|
212 | }, props));
|
213 | });
|
214 | });
|
215 | ButtonBaseWithFocus.propTypes = _objectSpread(_objectSpread({}, ButtonBase.propTypes), {}, {
|
216 | onFocus: index.PropTypes.func
|
217 | });
|
218 | var LinkBase = React__default.forwardRef(function (props, ref) {
|
219 | environment.warnOnce('LinkBase', 'LinkBase is deprecated: please use ButtonBase with a href prop instead.');
|
220 | return React__default.createElement(ButtonBase, _extends._extends({
|
221 | ref: ref
|
222 | }, props));
|
223 | });
|
224 |
|
225 | exports.LinkBase = LinkBase;
|
226 | exports.default = ButtonBaseWithFocus;
|
227 |
|