From 637f188ebec71fe4b0b80bbab4592d4c269d7d93 Mon Sep 17 00:00:00 2001
From: tobi <31960611+tsmethurst@users.noreply.github.com>
Date: Tue, 17 Oct 2023 12:46:06 +0200
Subject: [feature] Allow import/export/creation of domain allows via admin
 panel (#2264)

* it's happening!

* aaa

* fix silly whoopsie

* it's working pa! it's working ma!

* model report parameters

* shuffle some more stuff around

* getting there

* oo hoo

* finish tidying up for now

* aaa

* fix use form submit errors

* peepee poo poo

* aaaaa

* ffff

* they see me typin', they hatin'

* boop

* aaa

* oooo

* typing typing tappa tappa

* almost done typing

* weee

* alright

* push it push it real good doo doo doo doo doo doo

* thingy no worky

* almost done

* mutation modifers not quite right

* hmm

* it works

* view blocks + allows nicely

* it works!

* typia install

* the old linterino

* linter plz
---
 web/source/settings/lib/form/combo-box.tsx | 67 ++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 web/source/settings/lib/form/combo-box.tsx

(limited to 'web/source/settings/lib/form/combo-box.tsx')

diff --git a/web/source/settings/lib/form/combo-box.tsx b/web/source/settings/lib/form/combo-box.tsx
new file mode 100644
index 000000000..e558d298a
--- /dev/null
+++ b/web/source/settings/lib/form/combo-box.tsx
@@ -0,0 +1,67 @@
+/*
+	GoToSocial
+	Copyright (C) GoToSocial Authors admin@gotosocial.org
+	SPDX-License-Identifier: AGPL-3.0-or-later
+
+	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/>.
+*/
+
+import { useState } from "react";
+
+import { useComboboxState } from "ariakit/combobox";
+import {
+	ComboboxFormInputHook,
+	CreateHookNames,
+	HookOpts,
+} from "./types";
+
+const _default = "";
+export default function useComboBoxInput(
+	{ name, Name }: CreateHookNames,
+	{ initialValue = _default }: HookOpts<string>
+): ComboboxFormInputHook {
+	const [isNew, setIsNew] = useState(false);
+
+	const state = useComboboxState({
+		defaultValue: initialValue,
+		gutter: 0,
+		sameWidth: true
+	});
+
+	function reset() {
+		state.setValue(initialValue);
+	}
+
+	return Object.assign([
+		state,
+		reset,
+		{
+			[name]: state.value,
+			name,
+			[`${name}IsNew`]: isNew,
+			[`set${Name}IsNew`]: setIsNew
+		}
+	], {
+		reset,
+		name,
+		Name: "", // Will be set by inputHook function.
+		state,
+		value: state.value,
+		setter: (val: string) => state.setValue(val),
+		hasChanged: () => state.value != initialValue,
+		isNew,
+		setIsNew,
+		_default
+	});
+}
-- 
cgit v1.2.3

