add datalist for previous connections

This commit is contained in:
marlon-erler
2024-07-09 20:09:09 +02:00
parent eca5e75583
commit 41efa5cbf6
3 changed files with 27 additions and 1 deletions
+14 -1
View File
@@ -616,6 +616,7 @@
false false
); );
var currentAddress = restoreState("current-address", ""); var currentAddress = restoreState("current-address", "");
var previousAddresses = restoreListState("previous-addresses");
var cannotDisonnect = createProxyState( var cannotDisonnect = createProxyState(
[isConnected], [isConnected],
() => isConnected.value == false () => isConnected.value == false
@@ -631,6 +632,7 @@
function connect() { function connect() {
if (cannotConnect.value == true) return; if (cannotConnect.value == true) return;
currentAddress.value = serverAddressInput.value; currentAddress.value = serverAddressInput.value;
previousAddresses.add(currentAddress.value);
isConnected.value = false; isConnected.value = false;
didRequestConnection.value = true; didRequestConnection.value = true;
UDN.connect(serverAddressInput.value); UDN.connect(serverAddressInput.value);
@@ -1082,13 +1084,24 @@
} }
// src/Views/connectionSection.tsx // src/Views/connectionSection.tsx
var addressConverter = (address) => {
return /* @__PURE__ */ createElement("option", null, address);
};
function ConnectionSection() { function ConnectionSection() {
return /* @__PURE__ */ createElement("div", { class: "flex-column" }, /* @__PURE__ */ createElement("h2", null, translation.connection), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "cell_tower"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.serverAddress), /* @__PURE__ */ createElement( return /* @__PURE__ */ createElement("div", { class: "flex-column" }, /* @__PURE__ */ createElement("h2", null, translation.connection), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "cell_tower"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.serverAddress), /* @__PURE__ */ createElement(
"input", "input",
{ {
"bind:value": serverAddressInput, "bind:value": serverAddressInput,
"on:enter": connect, "on:enter": connect,
placeholder: translation.serverAddressPlaceholder placeholder: translation.serverAddressPlaceholder,
list: "previous-addresses"
}
), /* @__PURE__ */ createElement(
"datalist",
{
hidden: true,
id: "previous-addresses",
"children:append": [previousAddresses, addressConverter]
} }
))), /* @__PURE__ */ createElement("div", { class: "flex-row width-input justify-end" }, /* @__PURE__ */ createElement( ))), /* @__PURE__ */ createElement("div", { class: "flex-row width-input justify-end" }, /* @__PURE__ */ createElement(
"button", "button",
+2
View File
@@ -15,6 +15,7 @@ export const didRequestConnection = React.restoreState(
false false
); );
export const currentAddress = React.restoreState("current-address", ""); export const currentAddress = React.restoreState("current-address", "");
export const previousAddresses = React.restoreListState<string>("previous-addresses")
export const cannotDisonnect = React.createProxyState( export const cannotDisonnect = React.createProxyState(
[isConnected], [isConnected],
@@ -39,6 +40,7 @@ export function connect(): void {
if (cannotConnect.value == true) return; if (cannotConnect.value == true) return;
currentAddress.value = serverAddressInput.value; currentAddress.value = serverAddressInput.value;
previousAddresses.add(currentAddress.value);
isConnected.value = false; isConnected.value = false;
didRequestConnection.value = true; didRequestConnection.value = true;
+11
View File
@@ -9,6 +9,7 @@ import {
connect, connect,
deleteMailbox, deleteMailbox,
disconnect, disconnect,
previousAddresses,
requestMailbox, requestMailbox,
resetAddressInput, resetAddressInput,
serverAddressInput, serverAddressInput,
@@ -16,6 +17,10 @@ import {
import { translation } from "../translations"; import { translation } from "../translations";
const addressConverter: React.ListItemConverter<string> = (address) => {
return <option>{address}</option>;
};
export function ConnectionSection() { export function ConnectionSection() {
return ( return (
<div class="flex-column"> <div class="flex-column">
@@ -29,7 +34,13 @@ export function ConnectionSection() {
bind:value={serverAddressInput} bind:value={serverAddressInput}
on:enter={connect} on:enter={connect}
placeholder={translation.serverAddressPlaceholder} placeholder={translation.serverAddressPlaceholder}
list="previous-addresses"
></input> ></input>
<datalist
hidden
id="previous-addresses"
children:append={[previousAddresses, addressConverter]}
></datalist>
</div> </div>
</label> </label>
<div class="flex-row width-input justify-end"> <div class="flex-row width-input justify-end">