Skip to content

Commit 9a0c4b3

Browse files
committed
Handle Stimulus boolean and number values
1 parent eed458f commit 9a0c4b3

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

src/components/Stimulus/ValueEditor.svelte

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<script>
22
import IconButton from "$uikit/IconButton.svelte"
3+
const VALUE_TYPES = ["string", "number", "boolean", "null", "undefined"]
34
4-
let { value, isEditing, onEdit, onSave, onCancel } = $props()
5+
let { value, valueType, isEditing, onEdit, onSave, onCancel } = $props()
56
67
let editValue = $state(value)
8+
const type = VALUE_TYPES.includes(valueType) ? valueType : "string"
79
810
const handleSubmit = (e) => {
911
e.preventDefault()
@@ -23,12 +25,14 @@
2325

2426
{#if isEditing}
2527
<form class="d-flex" onsubmit={handleSubmit}>
26-
<wa-input size="extra-small" value={editValue} oninput={(e) => (editValue = e.target.value)}></wa-input>
28+
<wa-input size="extra-small" value={editValue} {type} oninput={(e) => (editValue = e.target.value)}></wa-input>
2729
<wa-button class="small-icon-button" variant="neutral" appearance="plain" type="submit">
2830
<wa-icon name="check"></wa-icon>
2931
</wa-button>
3032
</form>
3133
<IconButton name="xmark" onclick={handleCancel}></IconButton>
34+
{:else if type === "boolean"}
35+
<wa-switch checked={value} onchange={(e) => onSave(e.target.checked)}></wa-switch>
3236
{:else}
3337
{value}
3438
<IconButton name="pencil" onclick={handleEdit}></IconButton>

src/components/Stimulus/ValueTreeItem.svelte

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,21 @@
3737
<wa-tree-item>
3838
<div class="d-flex code-value">
3939
<span class="code-key">{key}:</span>
40-
<ValueEditor {value} isEditing={editingStates[key] || false} onEdit={() => handleEdit(key)} onSave={(newVal) => handleSave(key, newVal)} onCancel={() => handleCancel(key)} />
40+
<ValueEditor {value} valueType={"string"} isEditing={editingStates[key] || false} onEdit={() => handleEdit(key)} onSave={(newVal) => handleSave(key, newVal)} onCancel={() => handleCancel(key)} />
4141
</div>
4242
</wa-tree-item>
4343
{/each}
4444
{:else}
4545
<span class="code-key">{valueObject.name}:</span>
4646
<div class="d-flex code-value">
47-
<ValueEditor value={valueObject.value} isEditing={editingStates["main"] || false} onEdit={() => handleEdit(null)} onSave={(newVal) => handleSave(null, newVal)} onCancel={() => handleCancel(null)} />
47+
<ValueEditor
48+
value={valueObject.value}
49+
valueType={valueObject.type}
50+
isEditing={editingStates["main"] || false}
51+
onEdit={() => handleEdit(null)}
52+
onSave={(newVal) => handleSave(null, newVal)}
53+
onCancel={() => handleCancel(null)}
54+
/>
4855
</div>
4956
{/if}
5057
</wa-tree-item>

src/uikit/webawesome.svelte.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import "@awesome.me/webawesome/dist/components/spinner/spinner.js"
1212
import "@awesome.me/webawesome/dist/components/badge/badge.js"
1313
import "@awesome.me/webawesome/dist/components/tree/tree.js"
1414
import "@awesome.me/webawesome/dist/components/input/input.js"
15+
import "@awesome.me/webawesome/dist/components/switch/switch.js"
1516

1617
// Set WebAwesome base path to point to the correct location of the WebAwesome icons
1718
import { setBasePath, registerIconLibrary } from "@awesome.me/webawesome/dist/webawesome.js"

0 commit comments

Comments
 (0)