diff --git a/ts/lib/components/DeckChooser.svelte b/ts/lib/components/DeckChooser.svelte new file mode 100644 index 000000000..28ef49625 --- /dev/null +++ b/ts/lib/components/DeckChooser.svelte @@ -0,0 +1,29 @@ + + + + diff --git a/ts/lib/components/ItemChooser.svelte b/ts/lib/components/ItemChooser.svelte new file mode 100644 index 000000000..19aea4ba7 --- /dev/null +++ b/ts/lib/components/ItemChooser.svelte @@ -0,0 +1,240 @@ + + + + + {selectedItem?.name ?? "…"} + + + + + + + + {title} + + + + + + + + + + + + + {#if searchQuery} + (searchQuery = "")} + aria-label="Clear search" + > + + + + + {/if} + + + + {#each filteredItems as item (item.id)} + onSelect(item)} + aria-label="Select {item.name}" + > + {item.name} + + {/each} + + + + + diff --git a/ts/lib/components/Modal.svelte b/ts/lib/components/Modal.svelte index 443595fc5..42ff38a93 100644 --- a/ts/lib/components/Modal.svelte +++ b/ts/lib/components/Modal.svelte @@ -11,7 +11,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import { modalsKey } from "./context-keys"; export let modalKey: string = Math.random().toString(36).substring(2); - export const dialogClass: string = ""; + export let dialogClass: string = ""; export let onOkClicked: (() => void) | undefined = undefined; export let onCancelClicked: (() => void) | undefined = undefined; export let onShown: (() => void) | undefined = undefined; diff --git a/ts/lib/components/NotetypeChooser.svelte b/ts/lib/components/NotetypeChooser.svelte new file mode 100644 index 000000000..b1ac76d06 --- /dev/null +++ b/ts/lib/components/NotetypeChooser.svelte @@ -0,0 +1,28 @@ + + + + diff --git a/ts/lib/components/icons.ts b/ts/lib/components/icons.ts index 7bd28070f..3dc8f5837 100644 --- a/ts/lib/components/icons.ts +++ b/ts/lib/components/icons.ts @@ -15,6 +15,8 @@ import AlignVerticalCenter_ from "@mdi/svg/svg/align-vertical-center.svg?compone import alignVerticalCenter_ from "@mdi/svg/svg/align-vertical-center.svg?url"; import AlignVerticalTop_ from "@mdi/svg/svg/align-vertical-top.svg?component"; import alignVerticalTop_ from "@mdi/svg/svg/align-vertical-top.svg?url"; +import BookOutline_ from "@mdi/svg/svg/book-outline.svg?component"; +import bookOutline_ from "@mdi/svg/svg/book-outline.svg?url"; import CheckCircle_ from "@mdi/svg/svg/check-circle.svg?component"; import checkCircle_ from "@mdi/svg/svg/check-circle.svg?url"; import ChevronDown_ from "@mdi/svg/svg/chevron-down.svg?component"; @@ -111,6 +113,8 @@ import Math_ from "@mdi/svg/svg/math-integral-box.svg?component"; import math_ from "@mdi/svg/svg/math-integral-box.svg?url"; import NewBox_ from "@mdi/svg/svg/new-box.svg?component"; import newBox_ from "@mdi/svg/svg/new-box.svg?url"; +import Newspaper_ from "@mdi/svg/svg/newspaper.svg?component"; +import newspaper_ from "@mdi/svg/svg/newspaper.svg?url"; import Paperclip_ from "@mdi/svg/svg/paperclip.svg?component"; import paperclip_ from "@mdi/svg/svg/paperclip.svg?url"; import RectangleOutline_ from "@mdi/svg/svg/rectangle-outline.svg?component"; @@ -288,3 +292,5 @@ export const mdiVectorPolygonVariant = { url: vectorPolygonVariant_, component: export const incrementClozeIcon = { url: incrementCloze_, component: IncrementCloze_ }; export const mdiEarth = { url: earth_, component: Earth_ }; export const caretDownFill = { url: caretDownFill_, component: CaretDownFill_ }; +export const mdiNewspaper = { url: newspaper_, component: Newspaper_ }; +export const mdiBookOutline = { url: bookOutline_, component: BookOutline_ }; diff --git a/ts/routes/deck-options/TextInputModal.svelte b/ts/routes/deck-options/TextInputModal.svelte index c0dd00a41..318977e55 100644 --- a/ts/routes/deck-options/TextInputModal.svelte +++ b/ts/routes/deck-options/TextInputModal.svelte @@ -61,7 +61,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html Cancel - OK + + OK + diff --git a/ts/routes/editor/NoteEditor.svelte b/ts/routes/editor/NoteEditor.svelte index 8c9b93d65..29816ef20 100644 --- a/ts/routes/editor/NoteEditor.svelte +++ b/ts/routes/editor/NoteEditor.svelte @@ -720,6 +720,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import { HelpPageLinkRequest_HelpPage } from "@generated/anki/links_pb"; import { MessageBoxType } from "@generated/anki/frontend_pb"; import type Modal from "$lib/components/Modal.svelte"; + import EditorChoosers from "./editor-toolbar/EditorChoosers.svelte"; $: isIOImageLoaded = false; $: ioImageLoadedStore.set(isIOImageLoaded); @@ -1195,6 +1196,8 @@ components and functionality for general note editing. on:dragover={preventDefaultIfNonLegacy} on:drop={checkNonLegacy(handlePickerDrop)} > + + {#if mode === "browser"} diff --git a/ts/routes/editor/editor-toolbar/EditorChoosers.svelte b/ts/routes/editor/editor-toolbar/EditorChoosers.svelte new file mode 100644 index 000000000..a27a37988 --- /dev/null +++ b/ts/routes/editor/editor-toolbar/EditorChoosers.svelte @@ -0,0 +1,33 @@ + + + + + + Type + + + + Deck + + + + + +
Type
Deck