UNPKG

@readr-media/react-feedback

Version:

## Installation `yarn install`

107 lines (87 loc) 4.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = CommentField; var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _comments = _interopRequireDefault(require("../comments/comments")); var _texarea = _interopRequireDefault(require("./texarea")); var _useComments = _interopRequireDefault(require("../../hooks/use-comments")); 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 Wrapper = _styledComponents.default.div.withConfig({ displayName: "comment-field__Wrapper", componentId: "sc-zl5k33-0" })(["display:flex;flex-direction:column;align-items:center;margin:20px 0;"]); const ButtonWrapper = _styledComponents.default.div.withConfig({ displayName: "comment-field__ButtonWrapper", componentId: "sc-zl5k33-1" })(["width:100%;display:flex;flex-direction:row-reverse;justify-content:flex-start;"]); const Button = _styledComponents.default.button.withConfig({ displayName: "comment-field__Button", componentId: "sc-zl5k33-2" })(["margin-top:12px;width:120px;background-color:#04295e;color:#fff;border:none;border-radius:6px;padding:12px;font:inherit;cursor:pointer;outline:inherit;font-size:18px;line-height:27px;&:hover,&:focus{background-color:#000928;}&:disabled{background-color:#e0e0e0;cursor:not-allowed;}@media (max-width:768px){width:100%;}"]); /** * @typedef {import('../../../typedef').TextField} TextField * * @param {Object} props * @param {string} props.id * @param {TextField} props.field * @param {boolean} props.verified * @return {JSX.Element} */ function CommentField({ formId, field, verified }) { const [enableSumbit, setEnableSubmit] = (0, _react.useState)(false); const [textareaValue, setTextareaValue] = (0, _react.useState)(''); const { comments, noMoreComment, loadMoreComments, postComment } = (0, _useComments.default)(formId, field.id, field.identifier); const textareaChangedHandler = e => { const value = e.target.value; setEnableSubmit(!!value); setTextareaValue(value); }; const submitHandler = async e => { e.preventDefault(); if (!textareaValue.trim()) { return; } await postComment(textareaValue); setTextareaValue(''); setEnableSubmit(false); }; return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Wrapper, { className: "field-comment", children: [verified && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_texarea.default, { placeholder: field.name, textAreaValue: textareaValue, onChange: textareaChangedHandler }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ButtonWrapper, { className: "input-control", children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Button, { disabled: !enableSumbit, onClick: submitHandler, children: "\u9001\u51FA" }) })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_comments.default, { comments: comments, onExpand: loadMoreComments, noMoreComment: noMoreComment, listTitle: field.commentListTitle, defaultText: field.defaultText, shouldShowControl: field.shouldShowItemControl })] }); }