gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

combo-box.jsx (1514B)


      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 { useComboboxState } = require("ariakit/combobox");
     25 
     26 const _default = "";
     27 module.exports = function useComboBoxInput({ name, Name }, { initialValue = _default }) {
     28 	const [isNew, setIsNew] = React.useState(false);
     29 
     30 	const state = useComboboxState({
     31 		defaultValue: initialValue,
     32 		gutter: 0,
     33 		sameWidth: true
     34 	});
     35 
     36 	function reset() {
     37 		state.setValue(initialValue);
     38 	}
     39 
     40 	return Object.assign([
     41 		state,
     42 		reset,
     43 		{
     44 			[name]: state.value,
     45 			name,
     46 			[`${name}IsNew`]: isNew,
     47 			[`set${Name}IsNew`]: setIsNew
     48 		}
     49 	], {
     50 		name,
     51 		state,
     52 		value: state.value,
     53 		setter: (val) => state.setValue(val),
     54 		hasChanged: () => state.value != initialValue,
     55 		isNew,
     56 		setIsNew,
     57 		reset,
     58 		_default
     59 	});
     60 };