diff options
Diffstat (limited to 'web/source/settings/components')
-rw-r--r-- | web/source/settings/components/form/text.jsx | 16 | ||||
-rw-r--r-- | web/source/settings/components/loading.jsx | 27 |
2 files changed, 35 insertions, 8 deletions
diff --git a/web/source/settings/components/form/text.jsx b/web/source/settings/components/form/text.jsx index a392239dc..c24628dd7 100644 --- a/web/source/settings/components/form/text.jsx +++ b/web/source/settings/components/form/text.jsx @@ -20,17 +20,14 @@ const React = require("react"); -module.exports = function useTextInput({name, Name}, {validator} = {}) { - const [text, setText] = React.useState(""); +module.exports = function useTextInput({name, Name}, {validator, defaultValue=""} = {}) { + const [text, setText] = React.useState(defaultValue); + const [valid, setValid] = React.useState(true); const textRef = React.useRef(null); function onChange(e) { let input = e.target.value; setText(input); - - if (validator) { - validator(input); - } } function reset() { @@ -39,7 +36,9 @@ module.exports = function useTextInput({name, Name}, {validator} = {}) { React.useEffect(() => { if (validator) { - textRef.current.setCustomValidity(validator(text)); + let res = validator(text); + setValid(res == ""); + textRef.current.setCustomValidity(res); textRef.current.reportValidity(); } }, [text, textRef, validator]); @@ -50,7 +49,8 @@ module.exports = function useTextInput({name, Name}, {validator} = {}) { { [name]: text, [`${name}Ref`]: textRef, - [`set${Name}`]: setText + [`set${Name}`]: setText, + [`${name}Valid`]: valid } ]; };
\ No newline at end of file diff --git a/web/source/settings/components/loading.jsx b/web/source/settings/components/loading.jsx new file mode 100644 index 000000000..51ce3a18b --- /dev/null +++ b/web/source/settings/components/loading.jsx @@ -0,0 +1,27 @@ +/* + GoToSocial + Copyright (C) 2021-2022 GoToSocial Authors admin@gotosocial.org + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +"use strict"; + +const React = require("react"); + +module.exports = function Loading() { + return ( + <i className="fa fa-spin fa-refresh" aria-label="Loading" title="Loading"/> + ); +};
\ No newline at end of file |