diff --git a/dist/index.js b/dist/index.js index e06448c3..33400ed9 100644 --- a/dist/index.js +++ b/dist/index.js @@ -387,7 +387,7 @@ return new Uint8Array(array); } - // src/utility.ts + // src/utility.tsx var storageKeys = { hasUnread(id) { return id + "has-unread-messages"; @@ -417,6 +417,9 @@ return id + "composing-message"; } }; + var stringToOptionTag = (value) => { + return /* @__PURE__ */ createElement("option", null, value); + }; // src/translations.ts var englishTranslations = { @@ -919,6 +922,9 @@ } else { this.objects.set(messageObject.id, messageObject); } + const latest = this.getMostRecentContent(messageObject); + if (!latest || !latest.categoryName) return; + usedObjectCategories.add(latest.categoryName); }; addObjectAndSend = (messageObject) => { this.addObject(messageObject); @@ -1216,6 +1222,7 @@ function zoomIn() { pageZoom.value += zoomStep; } + var usedObjectCategories = restoreListState("object-categories"); var chats = new ListState(); var chatIds = restoreListState("chat-ids"); var selectedChat = new State(void 0); @@ -1661,6 +1668,7 @@ "textarea", { rows: "5", + class: "height-auto", "bind:value": editingNoteContent, placeholder: translation.noteContentPlaceholder } @@ -1668,9 +1676,17 @@ "input", { "bind:value": editingCategory, - placeholder: translation.categoryPlaceholder + placeholder: translation.categoryPlaceholder, + list: "object-categories" } - ))), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.priority), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.priority), /* @__PURE__ */ createElement( + ))), /* @__PURE__ */ createElement( + "datalist", + { + hidden: true, + id: "object-categories", + "children:append": [usedObjectCategories, stringToOptionTag] + } + ), /* @__PURE__ */ createElement("label", { class: "tile" }, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.priority), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, translation.priority), /* @__PURE__ */ createElement( "input", { type: "number", @@ -1921,9 +1937,6 @@ } // src/Views/Overview/connectionSection.tsx - var addressConverter = (address) => { - return /* @__PURE__ */ createElement("option", null, address); - }; 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( "input", @@ -1938,7 +1951,7 @@ { hidden: true, id: "previous-addresses", - "children:append": [previousAddresses, addressConverter] + "children:append": [previousAddresses, stringToOptionTag] } ))), /* @__PURE__ */ createElement("div", { class: "flex-row width-input justify-end" }, /* @__PURE__ */ createElement( "button", diff --git a/dist/styles.css b/dist/styles.css index ad75790a..4369dc09 100644 --- a/dist/styles.css +++ b/dist/styles.css @@ -745,6 +745,10 @@ select + .icon, height: 100% !important; } +.height-auto { + height: auto !important; +} + button:not(.tile):not(header *), footer, input:not([type="checkbox"]):not([type="radio"]), diff --git a/src/Model/chatModel.ts b/src/Model/chatModel.ts index b52007a2..9f4c0d75 100644 --- a/src/Model/chatModel.ts +++ b/src/Model/chatModel.ts @@ -9,6 +9,7 @@ import { selectedChat, senderName, updateMailbox, + usedObjectCategories, } from "../Model/model"; import { decryptString, encryptString } from "../cryptUtility"; @@ -348,6 +349,10 @@ export class Chat { } else { this.objects.set(messageObject.id, messageObject); } + + const latest = this.getMostRecentContent(messageObject); + if (!latest || !latest.categoryName) return; + usedObjectCategories.add(latest.categoryName); }; addObjectAndSend = (messageObject: MessageObject): void => { diff --git a/src/Model/model.ts b/src/Model/model.ts index c0f48240..f51a3380 100644 --- a/src/Model/model.ts +++ b/src/Model/model.ts @@ -157,6 +157,9 @@ export function zoomIn() { pageZoom.value += zoomStep; } +export const usedObjectCategories = + React.restoreListState("object-categories"); + // CHAT export const chats = new React.ListState(); export const chatIds = React.restoreListState("chat-ids"); diff --git a/src/Views/Objects/objectDetailModal.tsx b/src/Views/Objects/objectDetailModal.tsx index d22b6c26..38a9eda9 100644 --- a/src/Views/Objects/objectDetailModal.tsx +++ b/src/Views/Objects/objectDetailModal.tsx @@ -3,7 +3,9 @@ import * as React from "bloatless-react"; import { Chat, MessageObject } from "../../Model/chatModel"; import { icons } from "../../icons"; +import { stringToOptionTag } from "../../utility"; import { translation } from "../../translations"; +import { usedObjectCategories } from "../../Model/model"; export function ObjectDetailModal( chat: Chat, @@ -151,6 +153,7 @@ export function ObjectDetailModal( {translation.note} @@ -164,9 +167,15 @@ export function ObjectDetailModal( + diff --git a/src/utility.ts b/src/utility.tsx similarity index 81% rename from src/utility.ts rename to src/utility.tsx index a769fd66..9979b4a5 100644 --- a/src/utility.ts +++ b/src/utility.tsx @@ -1,8 +1,10 @@ +import * as React from "bloatless-react"; + export const storageKeys = { hasUnread(id: string): string { return id + "has-unread-messages"; }, - + primaryChannel(id: string): string { return id + "primary-channel"; }, @@ -35,3 +37,7 @@ export const storageKeys = { return id + "composing-message"; }, }; + +export const stringToOptionTag: React.StateItemConverter = (value) => { + return ; +};