mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-02-17 06:32:40 +00:00
feat: new blocking progress bar, fixes #18
feat: change cloud icon to history, fixes #15 fix: action search items overlap, fixes #16 feat: show tooltips immediately
This commit is contained in:
39
src/lib/components/Action.svelte
Normal file
39
src/lib/components/Action.svelte
Normal file
@@ -0,0 +1,39 @@
|
||||
<script lang="ts">
|
||||
import {KEYMAP_CODES} from "$lib/serial/keymap-codes"
|
||||
import type {KeyInfo} from "$lib/serial/keymap-codes"
|
||||
|
||||
export let action: number | KeyInfo
|
||||
export let display: "inline-keys" | "keys" = "inline-keys"
|
||||
|
||||
$: info = typeof action === "number" ? KEYMAP_CODES[action] ?? {code: action} : action
|
||||
</script>
|
||||
|
||||
{#if display === "keys"}
|
||||
<kbd class:icon={!!info.icon}>
|
||||
{info.icon ?? info.id ?? `0x${info.code.toString(16)}`}
|
||||
</kbd>
|
||||
{:else if display === "inline-keys"}
|
||||
{#if !info.icon && info.id?.length === 1}
|
||||
<span>{info.id}</span>
|
||||
{:else}
|
||||
<kbd class="inline-kbd" class:icon={!!info.icon}
|
||||
>{info.icon ?? info.id ?? `0x${info.code.toString(16)}`}</kbd
|
||||
>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
<style lang="scss">
|
||||
kbd:not(.inline-kbd) {
|
||||
height: 24px;
|
||||
padding-block: auto;
|
||||
transition: color 250ms ease;
|
||||
}
|
||||
|
||||
.inline-kbd {
|
||||
margin-inline-end: 2px;
|
||||
}
|
||||
|
||||
:global(span) + .inline-kbd {
|
||||
margin-inline-start: 2px;
|
||||
}
|
||||
</style>
|
||||
@@ -35,6 +35,7 @@
|
||||
align-items: center;
|
||||
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
padding: 8px;
|
||||
|
||||
@@ -61,4 +62,8 @@
|
||||
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
kbd {
|
||||
height: 24px;
|
||||
}
|
||||
</style>
|
||||
|
||||
11
src/lib/components/ActionString.svelte
Normal file
11
src/lib/components/ActionString.svelte
Normal file
@@ -0,0 +1,11 @@
|
||||
<script lang="ts">
|
||||
import Action from "$lib/components/Action.svelte"
|
||||
import type {KeyInfo} from "$lib/serial/keymap-codes"
|
||||
|
||||
export let actions: Array<number | KeyInfo>
|
||||
export let display: "keys" | "inline-keys" = "inline-keys"
|
||||
</script>
|
||||
|
||||
{#each actions as action, i (`${typeof action === "number" ? action : action.code}:${i}`)}
|
||||
<Action {action} {display} />
|
||||
{/each}
|
||||
@@ -1,8 +0,0 @@
|
||||
import {Extension, Node} from "@tiptap/core"
|
||||
|
||||
const CharaAction = Node.create({
|
||||
name: "Action",
|
||||
renderHTML({HTMLAttributes}) {
|
||||
return ["kbd", HTMLAttributes, 0]
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user