UNPKG

10.4 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
7require('./slicedToArray-0711941d.js');
8require('./unsupportedIterableToArray-68db1d3b.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12var index = require('./index-b0606964.js');
13var defineProperty = require('./defineProperty-0921a47c.js');
14require('./toConsumableArray-d8a4a2c3.js');
15var _styled = require('styled-components');
16var _styled__default = _interopDefault(_styled);
17var getPrototypeOf = require('./getPrototypeOf-2a661a20.js');
18require('./color.js');
19require('./components.js');
20require('./contains-component.js');
21require('./css.js');
22require('./dayjs.min-e07657bf.js');
23require('./date.js');
24var miscellaneous = require('./miscellaneous.js');
25require('./environment.js');
26require('./font.js');
27require('./math-f4029164.js');
28require('./characters.js');
29require('./format.js');
30require('./keycodes.js');
31require('./url.js');
32require('./web3.js');
33var constants = require('./constants.js');
34require('./breakpoints.js');
35var springs = require('./springs.js');
36require('./text-styles.js');
37require('./theme-dark.js');
38require('./theme-light.js');
39var Theme = require('./Theme.js');
40var _extends = require('./extends-40571110.js');
41var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
42var FocusVisible = require('./FocusVisible.js');
43require('./objectWithoutPropertiesLoose-1af20ad0.js');
44require('react-dom');
45var web = require('./web-d0294535.js');
46
47function _createSuper(Derived) { return function () { var Super = getPrototypeOf._getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = getPrototypeOf._getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return getPrototypeOf._possibleConstructorReturn(this, result); }; }
48
49function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
50var SIZE = 18;
51var CHECKBOX_RADIUS = 2;
52var RADIO_BULLET_SIZE = 10;
53
54var _StyledAnimatedSpan = _styled__default(web.extendedAnimated.span).withConfig({
55 displayName: "Checkbox___StyledAnimatedSpan",
56 componentId: "sc-1avgrx5-0"
57})(["position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;transform-origin:50% 50%;"]);
58
59var _StyledButton = _styled__default("button").withConfig({
60 displayName: "Checkbox___StyledButton",
61 componentId: "sc-1avgrx5-1"
62})(["display:inline-flex;position:relative;width:", "px;height:", "px;margin:", "px;padding:0;background:", ";border:1px solid ", ";border-radius:", ";outline:0;&::-moz-focus-inner{border:0;}", ";"], SIZE, SIZE, function (p) {
63 return p._css;
64}, function (p) {
65 return p._css2;
66}, function (p) {
67 return p._css3;
68}, function (p) {
69 return p._css4;
70}, function (p) {
71 return p._css5;
72});
73
74var _StyledSpan = _styled__default("span").withConfig({
75 displayName: "Checkbox___StyledSpan",
76 componentId: "sc-1avgrx5-2"
77})(["position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border:2px solid ", ";border-radius:", ";display:none;"], function (p) {
78 return p._css6;
79}, function (p) {
80 return p._css7;
81});
82
83var Checkbox = /*#__PURE__*/function (_React$PureComponent) {
84 getPrototypeOf._inherits(Checkbox, _React$PureComponent);
85
86 var _super = _createSuper(Checkbox);
87
88 function Checkbox() {
89 var _this;
90
91 getPrototypeOf._classCallCheck(this, Checkbox);
92
93 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
94 args[_key] = arguments[_key];
95 }
96
97 _this = _super.call.apply(_super, [this].concat(args));
98
99 defineProperty._defineProperty(getPrototypeOf._assertThisInitialized(_this), "_element", React__default.createRef());
100
101 defineProperty._defineProperty(getPrototypeOf._assertThisInitialized(_this), "handleClick", function () {
102 var _this$props = _this.props,
103 onChange = _this$props.onChange,
104 checked = _this$props.checked,
105 indeterminate = _this$props.indeterminate;
106 onChange(indeterminate ? false : !checked);
107 });
108
109 defineProperty._defineProperty(getPrototypeOf._assertThisInitialized(_this), "focus", function () {
110 _this._element.current.focus();
111 });
112
113 return _this;
114 }
115
116 getPrototypeOf._createClass(Checkbox, [{
117 key: "getAriaChecked",
118 value: function getAriaChecked() {
119 var _this$props2 = this.props,
120 checked = _this$props2.checked,
121 indeterminate = _this$props2.indeterminate;
122 if (indeterminate) return 'mixed';
123 if (checked) return 'true';
124 return 'false';
125 }
126 }, {
127 key: "renderCheck",
128 value: function renderCheck(visible, Icon) {
129 var _this$props3 = this.props,
130 disabled = _this$props3.disabled,
131 theme = _this$props3.theme;
132 return /*#__PURE__*/React__default.createElement(web.Spring, {
133 from: {
134 progress: 0
135 },
136 to: {
137 progress: Number(visible)
138 },
139 config: springs.springs.instant,
140 native: true
141 }, function (_ref) {
142 var progress = _ref.progress;
143 return /*#__PURE__*/React__default.createElement(_StyledAnimatedSpan, {
144 style: {
145 opacity: progress,
146 transform: progress.interpolate(function (v) {
147 return "scale(".concat(v, ")");
148 })
149 }
150 }, /*#__PURE__*/React__default.createElement(Icon, {
151 color: disabled ? theme.selectedDisabled : theme.selected
152 }));
153 });
154 }
155 }, {
156 key: "render",
157 value: function render() {
158 var _this2 = this;
159
160 var _this$props4 = this.props,
161 checked = _this$props4.checked,
162 disabled = _this$props4.disabled,
163 indeterminate = _this$props4.indeterminate,
164 tabIndex = _this$props4.tabIndex,
165 theme = _this$props4.theme,
166 variant = _this$props4.variant,
167 props = objectWithoutProperties._objectWithoutProperties(_this$props4, ["checked", "disabled", "indeterminate", "tabIndex", "theme", "variant"]);
168
169 return /*#__PURE__*/React__default.createElement(FocusVisible.default, null, function (_ref2) {
170 var focusVisible = _ref2.focusVisible,
171 onFocus = _ref2.onFocus;
172 return /*#__PURE__*/React__default.createElement(_StyledButton, _extends._extends({
173 type: "button",
174 ref: _this2._element,
175 role: variant,
176 tabIndex: tabIndex,
177 "aria-checked": _this2.getAriaChecked(),
178 onClick: _this2.handleClick,
179 onFocus: onFocus,
180 disabled: disabled
181 }, props, {
182 _css: 0.5 * constants.GU,
183 _css2: disabled ? theme.controlDisabled : theme.control,
184 _css3: theme.controlBorder,
185 _css4: variant === 'radio' ? '50%' : "".concat(CHECKBOX_RADIUS, "px"),
186 _css5: !disabled ? "\n cursor: pointer;\n &:active {\n border-color: ".concat(theme.controlBorderPressed, ";\n }\n &:focus .focus-ring {\n display: ").concat(focusVisible ? 'block' : 'none', ";\n }\n ") : ''
187 }), variant === 'checkbox' && _this2.renderCheck(checked && !indeterminate, Check), variant === 'checkbox' && _this2.renderCheck(indeterminate, Dash), variant === 'radio' && _this2.renderCheck(checked, Bullet), /*#__PURE__*/React__default.createElement(_StyledSpan, {
188 className: "focus-ring",
189 _css6: theme.focus,
190 _css7: variant === 'radio' ? '50%' : "".concat(constants.RADIUS, "px")
191 }));
192 });
193 }
194 }]);
195
196 return Checkbox;
197}(React__default.PureComponent);
198/* eslint-disable react/prop-types */
199
200
201defineProperty._defineProperty(Checkbox, "propTypes", {
202 checked: index.PropTypes.bool,
203 disabled: index.PropTypes.bool,
204 indeterminate: index.PropTypes.bool,
205 onChange: index.PropTypes.func,
206 tabIndex: index.PropTypes.string,
207 theme: index.PropTypes.object,
208 variant: index.PropTypes.oneOf(['checkbox', 'radio'])
209});
210
211defineProperty._defineProperty(Checkbox, "defaultProps", {
212 checked: false,
213 disabled: false,
214 indeterminate: false,
215 onChange: miscellaneous.noop,
216 tabIndex: '0',
217 variant: 'checkbox'
218});
219
220var Dash = function Dash(_ref3) {
221 var color = _ref3.color;
222 return (
223 /*#__PURE__*/
224
225 /* Use SVG to have subpixels (strokeWidth="1.5") on Chrome */
226 React__default.createElement("svg", {
227 width: "14",
228 height: "14",
229 viewBox: "0 0 14 14"
230 }, /*#__PURE__*/React__default.createElement("line", {
231 x1: "3",
232 y1: "7",
233 x2: "11",
234 y2: "7",
235 stroke: color,
236 strokeWidth: "1.5"
237 }))
238 );
239};
240
241var Check = function Check(_ref4) {
242 var color = _ref4.color;
243 return /*#__PURE__*/React__default.createElement("svg", {
244 width: "12",
245 height: "8",
246 viewBox: "0 0 12 8"
247 }, /*#__PURE__*/React__default.createElement("path", {
248 d: "\n M11.059 1.393\n L4.335 7.395\n L0.944 3.260\n L2.104 2.309\n L4.503 5.234\n L10.060 0.274\n L11.059 1.393\n Z\n ",
249 fill: color
250 }));
251};
252
253var _StyledSpan2 = _styled__default("span").withConfig({
254 displayName: "Checkbox___StyledSpan2",
255 componentId: "sc-1avgrx5-3"
256})(["display:block;width:", "px;height:", "px;border-radius:50%;background:", ";"], RADIO_BULLET_SIZE, RADIO_BULLET_SIZE, function (p) {
257 return p._css8;
258});
259
260var Bullet = function Bullet(_ref5) {
261 var color = _ref5.color;
262 return /*#__PURE__*/React__default.createElement(_StyledSpan2, {
263 _css8: color
264 });
265};
266
267var CheckBoxWithTheme = React__default.forwardRef(function (props, ref) {
268 var theme = Theme.useTheme();
269 return /*#__PURE__*/React__default.createElement(Checkbox, _extends._extends({
270 theme: theme,
271 ref: ref
272 }, props));
273});
274
275exports.default = CheckBoxWithTheme;
276//# sourceMappingURL=Checkbox.js.map