radio.jsx (1393B)
1 /* 2 GoToSocial 3 Copyright (C) GoToSocial Authors admin@gotosocial.org 4 SPDX-License-Identifier: AGPL-3.0-or-later 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 "use strict"; 21 22 const React = require("react"); 23 24 const _default = ""; 25 module.exports = function useRadioInput({ name, Name }, { initialValue = _default, options }) { 26 const [value, setValue] = React.useState(initialValue); 27 28 function onChange(e) { 29 setValue(e.target.value); 30 } 31 32 function reset() { 33 setValue(initialValue); 34 } 35 36 // Array / Object hybrid, for easier access in different contexts 37 return Object.assign([ 38 onChange, 39 reset, 40 { 41 [name]: value, 42 [`set${Name}`]: setValue 43 } 44 ], { 45 name, 46 onChange, 47 reset, 48 value, 49 setter: setValue, 50 options, 51 hasChanged: () => value != initialValue, 52 _default 53 }); 54 };