UNPKG

@vimeo/iris

Version:
107 lines (100 loc) 6.91 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib_es6 = require('../../../tslib.es6-3ec409b7.js'); var React = require('react'); var components_inputs_Input_Input_style = require('./Input.style.js'); var components_inputs_Shared = require('../Shared.js'); var components_inputs_Wrapper_Wrapper = require('../Wrapper/Wrapper.js'); var utils_css = require('../../../utils/css.js'); require('styled-components'); require('polished'); require('../../../color/colors.js'); require('../../../typography/Text/Text.js'); require('../../../typography/Text/Text.style.js'); require('../../../typography/typography.js'); require('../../../tokens/core.js'); require('../../../tokens/color/index.js'); require('../../../tokens/color/background/background.js'); require('../../../tokens/util/readToken.js'); require('../../../tokens/util/clamp.js'); require('../../../tokens/color/format/format.js'); require('../../../tokens/color/format/primary.js'); require('../../../tokens/color/format/secondary.js'); require('../../../tokens/color/format/tertiary.js'); require('../../../tokens/color/rainbow/rainbow.js'); require('../../../tokens/color/rainbow/conic/index.js'); require('../../../tokens/color/rainbow/conic/sm.js'); require('../../../tokens/color/rainbow/conic/xl.js'); require('../../../tokens/color/rainbow/linear/index.js'); require('../../../tokens/color/rainbow/linear/sm.js'); require('../../../tokens/color/rainbow/linear/xl.js'); require('../../../tokens/color/livestream/livestream.js'); require('../../../tokens/color/status/status.js'); require('../../../tokens/color/status/caution.js'); require('../../../tokens/color/status/negative.js'); require('../../../tokens/color/status/positive.js'); require('../../../tokens/color/stroke/stroke.js'); require('../../../tokens/color/surface/surface.js'); require('../../../tokens/color/text/text.js'); require('../../../tokens/util/round.js'); require('../../../tokens/color/upsell/upsell.js'); require('../../../tokens/color/upsell/sm.js'); require('../../../tokens/color/upsell/xl.js'); require('../../../tokens/color/upsell/new.js'); require('../../../tokens/edge/edge.js'); require('../../../tokens/space/space.js'); require('../../../tokens/typography/index.js'); require('../../../tokens/typography/size/size.js'); require('../../../typography/Text/EditableText.js'); require('../../../utils/HOCs/withIris.js'); require('../../../utils/hooks/useLayoutStyles.js'); require('../../../utils/DOM/geometry.js'); require('../../../typography/Paragraph/Paragraph.js'); require('../../../typography/Paragraph/Paragraph.style.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); function Mark(_a) { var _b = _a.autoComplete, autoComplete = _b === void 0 ? true : _b, checked = _a.checked, defaultChecked = _a.defaultChecked, children = _a.children, className = _a.className, defaultValue = _a.defaultValue, disabled = _a.disabled, forwardRef = _a.forwardRef, id = _a.id, messages = _a.messages, name = _a.name, onChange = _a.onChange, required = _a.required, status = _a.status, _c = _a.style, style = _c === void 0 ? components_inputs_Input_Input_style.nullStyle : _c, theme = _a.theme, type = _a.type, value = _a.value, props = tslib_es6.__rest(_a, ["autoComplete", "checked", "defaultChecked", "children", "className", "defaultValue", "disabled", "forwardRef", "id", "messages", "name", "onChange", "required", "status", "style", "theme", "type", "value"]); if (autoComplete === true) autoComplete = 'on'; if (autoComplete === false) autoComplete = 'off'; return (React__default["default"].createElement(components_inputs_Wrapper_Wrapper.Wrapper, { className: className, messages: messages, onKeyUp: a11yKey, status: status, style: style, theme: theme }, React__default["default"].createElement("div", { style: { position: 'relative' } }, React__default["default"].createElement(components_inputs_Input_Input_style.HiddenMark, { autoComplete: autoComplete, defaultValue: defaultValue, checked: checked, defaultChecked: defaultChecked, disabled: disabled, id: id, name: name, onChange: onChange, ref: forwardRef, required: required, type: type, value: value }), children && (React__default["default"].createElement(CustomMark, tslib_es6.__assign({ checked: checked, children: children, disabled: disabled, htmlFor: id }, props))), !children && (React__default["default"].createElement(DefaultMark, tslib_es6.__assign({ disabled: disabled, id: id, status: status, type: type }, props)))))); } function DefaultMark(_a) { var disabled = _a.disabled, icon = _a.icon, id = _a.id, indeterminate = _a.indeterminate, label = _a.label, mirror = _a.mirror, _b = _a.size, size = _b === void 0 ? 'md' : _b, status = _a.status, theme = _a.theme, type = _a.type; return (React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(components_inputs_Shared.Label, { disabled: disabled, fauxMark: components_inputs_Input_Input_style.Faux, format: status, htmlFor: id, mirror: mirror, size: size, theme: theme, type: type }, label), React__default["default"].createElement(components_inputs_Input_Input_style.Faux, { disabled: disabled, indeterminate: indeterminate, mirror: mirror, size: size, theme: theme, type: type }, React__default["default"].createElement(utils_css.Focus, { parent: components_inputs_Input_Input_style.HiddenMark, radius: components_inputs_Input_Input_style.radii[type], theme: theme }), React__default["default"].createElement(components_inputs_Input_Input_style.ToggleIcon, null, icon)))); } function CustomMark(_a) { var children = _a.children, htmlFor = _a.htmlFor, checked = _a.checked, disabled = _a.disabled; // When Iris button is used as radio, make sure the type is not "button" if (children.type.displayName === 'Button') { if (!children.props.element || children.props.element === 'button') { console.warn('@vimeo/iris: Using <Button /> with type "button" is not supported as a <Radio /> child, <Button /> will be rendered as span'); } } var clonedElementProps = { disabled: disabled, checked: checked, }; if (children.type.displayName === 'Button') { clonedElementProps.element = 'span'; } return (children && (React__default["default"].createElement("label", { htmlFor: htmlFor, style: { cursor: disabled ? 'not-allowed' : 'pointer' } }, React.cloneElement(children, clonedElementProps)))); } function a11yKey(_a) { var key = _a.key, target = _a.target; if (key === 'Enter' || key.includes('Arrow')) { target.checked = !target.checked; } } exports.Mark = Mark;