UNPKG

@readr-media/react-feedback

Version:

## Installation `yarn install`

118 lines (99 loc) 4.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = SingleOptionField; var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _option = _interopRequireDefault(require("./option")); var _useOptions = _interopRequireDefault(require("../../hooks/use-options")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const Container = _styledComponents.default.div.withConfig({ displayName: "single-option-field__Container", componentId: "sc-12lieyi-0" })(["display:flex;justify-content:center;"]); const FieldWrapper = _styledComponents.default.div.withConfig({ displayName: "single-option-field__FieldWrapper", componentId: "sc-12lieyi-1" })(["display:flex;flex-direction:column;align-items:center;margin-left:-5px;margin-right:-5px;"]); const Title = _styledComponents.default.p.withConfig({ displayName: "single-option-field__Title", componentId: "sc-12lieyi-2" })(["color:rgba(0,0,0,0.87);font-size:14px;font-style:normal;font-weight:400;line-height:120%;align-self:flex-start;margin-left:5px;margin-bottom:15px;@media ", "{display:none;}"], ({ theme }) => theme.breakpoint.tablet); const OptionGroupWrapper = _styledComponents.default.div.withConfig({ displayName: "single-option-field__OptionGroupWrapper", componentId: "sc-12lieyi-3" })(["display:flex;flex-wrap:wrap;column-gap:10px;"]); /** * @typedef {import('../../../typedef').SingleField} SingleField * * @param {Object} props * @param {string} props.formId * @param {SingleField} props.field * @return {JSX.Element} */ function SingleOptionField({ formId, field }) { const [selectedOption, setSelectedOption] = (0, _react.useState)(field.selectedItem); const { optionSummary, giveOptions } = (0, _useOptions.default)(formId, field.id, field.identifier); const onOptionSelected = value => { if (optionSummary && value in optionSummary) { const defaultOptions = field.selectedItem ? [field.selectedItem] : []; if (value === selectedOption) { // cancel selection setSelectedOption(undefined); giveOptions(defaultOptions, []); } else { // select option setSelectedOption(value); giveOptions(defaultOptions, [value]); } } }; if (typeof field.notifyUpstream === 'function') { (0, _react.useEffect)(() => { if (optionSummary) { field.notifyUpstream({ selectedOption, optionSummary }); } }, [selectedOption, optionSummary]); } (0, _react.useEffect)(() => { setSelectedOption(field.selectedItem); }, [field]); return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, { className: "field-container", children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(FieldWrapper, { className: "field-single-option", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Title, { children: field.name }), /*#__PURE__*/(0, _jsxRuntime.jsx)(OptionGroupWrapper, { className: "option-group-wrapper", children: field.options.map(({ name, value, iconUrl }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_option.default, { label: name, value: value, iconSrc: iconUrl, statistic: optionSummary ? value in optionSummary ? optionSummary[value] : null : null, selected: selectedOption === value, onMouseUp: onOptionSelected }, value)) })] }) }); }