1 line
17 KiB
JSON
1 line
17 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"D:\\\\aiproject\\\\goAgent\\\\todo\\\\client\\\\src\\\\components\\\\TodoForm.js\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst FormContainer = styled.div`\n background: rgba(102, 126, 234, 0.05);\n border-radius: 16px;\n padding: 25px;\n border: 2px solid rgba(102, 126, 234, 0.1);\n`;\n_c = FormContainer;\nconst Form = styled.form`\n display: flex;\n flex-direction: column;\n gap: 15px;\n`;\n_c2 = Form;\nconst InputRow = styled.div`\n display: flex;\n gap: 15px;\n align-items: flex-end;\n \n @media (max-width: 768px) {\n flex-direction: column;\n align-items: stretch;\n }\n`;\n_c3 = InputRow;\nconst InputGroup = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n`;\n_c4 = InputGroup;\nconst Label = styled.label`\n font-size: 14px;\n font-weight: 500;\n color: #555;\n`;\n_c5 = Label;\nconst Input = styled.input`\n padding: 12px 16px;\n border: 2px solid #e1e5e9;\n border-radius: 10px;\n font-size: 16px;\n transition: all 0.3s ease;\n outline: none;\n\n &:focus {\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n }\n\n &::placeholder {\n color: #a0a0a0;\n }\n`;\n_c6 = Input;\nconst Select = styled.select`\n padding: 12px 16px;\n border: 2px solid #e1e5e9;\n border-radius: 10px;\n font-size: 16px;\n background: white;\n cursor: pointer;\n transition: all 0.3s ease;\n outline: none;\n\n &:focus {\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n }\n`;\n_c7 = Select;\nconst Button = styled.button`\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border: none;\n padding: 12px 24px;\n border-radius: 10px;\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.3s ease;\n white-space: nowrap;\n\n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 16px rgba(102, 126, 234, 0.3);\n }\n\n &:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n }\n`;\n_c8 = Button;\nconst priorityOptions = [{\n value: 'low',\n label: '低优先级',\n color: '#95a5a6'\n}, {\n value: 'medium',\n label: '中优先级',\n color: '#3498db'\n}, {\n value: 'high',\n label: '高优先级',\n color: '#e67e22'\n}, {\n value: 'urgent',\n label: '紧急',\n color: '#e74c3c'\n}];\nfunction TodoForm({\n onAddTodo\n}) {\n _s();\n const [title, setTitle] = useState('');\n const [priority, setPriority] = useState('medium');\n const [date, setDate] = useState(new Date().toISOString().split('T')[0]);\n const [loading, setLoading] = useState(false);\n const handleSubmit = async e => {\n e.preventDefault();\n if (!title.trim()) return;\n setLoading(true);\n try {\n await onAddTodo({\n title: title.trim(),\n priority,\n date\n });\n setTitle('');\n setPriority('medium');\n } catch (error) {\n console.error('Add todo error:', error);\n } finally {\n setLoading(false);\n }\n };\n return /*#__PURE__*/_jsxDEV(FormContainer, {\n children: /*#__PURE__*/_jsxDEV(Form, {\n onSubmit: handleSubmit,\n children: /*#__PURE__*/_jsxDEV(InputRow, {\n children: [/*#__PURE__*/_jsxDEV(InputGroup, {\n style: {\n flex: 2\n },\n children: [/*#__PURE__*/_jsxDEV(Label, {\n children: \"\\u5F85\\u529E\\u4E8B\\u9879\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 137,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Input, {\n type: \"text\",\n placeholder: \"\\u8F93\\u5165\\u5F85\\u529E\\u4E8B\\u9879\\u5185\\u5BB9...\",\n value: title,\n onChange: e => setTitle(e.target.value),\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 138,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 136,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(InputGroup, {\n children: [/*#__PURE__*/_jsxDEV(Label, {\n children: \"\\u4F18\\u5148\\u7EA7\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 148,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Select, {\n value: priority,\n onChange: e => setPriority(e.target.value),\n children: priorityOptions.map(option => /*#__PURE__*/_jsxDEV(\"option\", {\n value: option.value,\n children: option.label\n }, option.value, false, {\n fileName: _jsxFileName,\n lineNumber: 154,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 149,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 147,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(InputGroup, {\n children: [/*#__PURE__*/_jsxDEV(Label, {\n children: \"\\u65E5\\u671F\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 162,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Input, {\n type: \"date\",\n value: date,\n onChange: e => setDate(e.target.value),\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 163,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 161,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n type: \"submit\",\n disabled: loading,\n children: loading ? '添加中...' : '添加'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 171,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 135,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 134,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 133,\n columnNumber: 5\n }, this);\n}\n_s(TodoForm, \"sLGKtfqQrdm9k7OSamunKQf4oGc=\");\n_c9 = TodoForm;\nexport default TodoForm;\nvar _c, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9;\n$RefreshReg$(_c, \"FormContainer\");\n$RefreshReg$(_c2, \"Form\");\n$RefreshReg$(_c3, \"InputRow\");\n$RefreshReg$(_c4, \"InputGroup\");\n$RefreshReg$(_c5, \"Label\");\n$RefreshReg$(_c6, \"Input\");\n$RefreshReg$(_c7, \"Select\");\n$RefreshReg$(_c8, \"Button\");\n$RefreshReg$(_c9, \"TodoForm\");","map":{"version":3,"names":["React","useState","styled","jsxDEV","_jsxDEV","FormContainer","div","_c","Form","form","_c2","InputRow","_c3","InputGroup","_c4","Label","label","_c5","Input","input","_c6","Select","select","_c7","Button","button","_c8","priorityOptions","value","color","TodoForm","onAddTodo","_s","title","setTitle","priority","setPriority","date","setDate","Date","toISOString","split","loading","setLoading","handleSubmit","e","preventDefault","trim","error","console","children","onSubmit","style","flex","fileName","_jsxFileName","lineNumber","columnNumber","type","placeholder","onChange","target","required","map","option","disabled","_c9","$RefreshReg$"],"sources":["D:/aiproject/goAgent/todo/client/src/components/TodoForm.js"],"sourcesContent":["import React, { useState } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst FormContainer = styled.div`\r\n background: rgba(102, 126, 234, 0.05);\r\n border-radius: 16px;\r\n padding: 25px;\r\n border: 2px solid rgba(102, 126, 234, 0.1);\r\n`;\r\n\r\nconst Form = styled.form`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n`;\r\n\r\nconst InputRow = styled.div`\r\n display: flex;\r\n gap: 15px;\r\n align-items: flex-end;\r\n \r\n @media (max-width: 768px) {\r\n flex-direction: column;\r\n align-items: stretch;\r\n }\r\n`;\r\n\r\nconst InputGroup = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n flex: 1;\r\n`;\r\n\r\nconst Label = styled.label`\r\n font-size: 14px;\r\n font-weight: 500;\r\n color: #555;\r\n`;\r\n\r\nconst Input = styled.input`\r\n padding: 12px 16px;\r\n border: 2px solid #e1e5e9;\r\n border-radius: 10px;\r\n font-size: 16px;\r\n transition: all 0.3s ease;\r\n outline: none;\r\n\r\n &:focus {\r\n border-color: #667eea;\r\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\r\n }\r\n\r\n &::placeholder {\r\n color: #a0a0a0;\r\n }\r\n`;\r\n\r\nconst Select = styled.select`\r\n padding: 12px 16px;\r\n border: 2px solid #e1e5e9;\r\n border-radius: 10px;\r\n font-size: 16px;\r\n background: white;\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n outline: none;\r\n\r\n &:focus {\r\n border-color: #667eea;\r\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\r\n }\r\n`;\r\n\r\nconst Button = styled.button`\r\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\r\n color: white;\r\n border: none;\r\n padding: 12px 24px;\r\n border-radius: 10px;\r\n font-size: 16px;\r\n font-weight: 500;\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n transform: translateY(-2px);\r\n box-shadow: 0 8px 16px rgba(102, 126, 234, 0.3);\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n transform: none;\r\n }\r\n`;\r\n\r\nconst priorityOptions = [\r\n { value: 'low', label: '低优先级', color: '#95a5a6' },\r\n { value: 'medium', label: '中优先级', color: '#3498db' },\r\n { value: 'high', label: '高优先级', color: '#e67e22' },\r\n { value: 'urgent', label: '紧急', color: '#e74c3c' }\r\n];\r\n\r\nfunction TodoForm({ onAddTodo }) {\r\n const [title, setTitle] = useState('');\r\n const [priority, setPriority] = useState('medium');\r\n const [date, setDate] = useState(new Date().toISOString().split('T')[0]);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n if (!title.trim()) return;\r\n\r\n setLoading(true);\r\n try {\r\n await onAddTodo({\r\n title: title.trim(),\r\n priority,\r\n date\r\n });\r\n setTitle('');\r\n setPriority('medium');\r\n } catch (error) {\r\n console.error('Add todo error:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <FormContainer>\r\n <Form onSubmit={handleSubmit}>\r\n <InputRow>\r\n <InputGroup style={{ flex: 2 }}>\r\n <Label>待办事项</Label>\r\n <Input\r\n type=\"text\"\r\n placeholder=\"输入待办事项内容...\"\r\n value={title}\r\n onChange={(e) => setTitle(e.target.value)}\r\n required\r\n />\r\n </InputGroup>\r\n \r\n <InputGroup>\r\n <Label>优先级</Label>\r\n <Select\r\n value={priority}\r\n onChange={(e) => setPriority(e.target.value)}\r\n >\r\n {priorityOptions.map(option => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </Select>\r\n </InputGroup>\r\n \r\n <InputGroup>\r\n <Label>日期</Label>\r\n <Input\r\n type=\"date\"\r\n value={date}\r\n onChange={(e) => setDate(e.target.value)}\r\n required\r\n />\r\n </InputGroup>\r\n \r\n <Button type=\"submit\" disabled={loading}>\r\n {loading ? '添加中...' : '添加'}\r\n </Button>\r\n </InputRow>\r\n </Form>\r\n </FormContainer>\r\n );\r\n}\r\n\r\nexport default TodoForm; "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |