Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions packages/devtools/app/components/ComponentPropInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ function inferDefaultInput(value?: any, types?: PropSchema[]): PropSchema | unde
})
}

function clearValue() {
modelValue.value = undefined
}

const description = computed(() => {
return props.description?.replace(/`([^`]+)`/g, '<code class="text-xs font-medium bg-elevated px-1 py-0.5 rounded">$1</code>')
})
Expand All @@ -81,7 +85,7 @@ const [DefineDescription, ReuseDescription] = createReusableTemplate()
size="sm"
:trailing-icon="undefined"
class="font-medium text-ellipsis truncate max-w-50 py-0.5 px-1.5 font-mono bg-elevated/50 border border-default"
@update:model-value="modelValue = undefined"
@update:model-value="clearValue()"
/>
</DefineSelect>

Expand All @@ -95,6 +99,18 @@ const [DefineDescription, ReuseDescription] = createReusableTemplate()
:name="name"
:disabled="disabled"
/>
<slot name="actions">
<UButton
v-if="currentInput?.component && modelValue !== undefined && currentInput?.inputType !== 'boolean'"
variant="outline"
color="neutral"
icon="i-lucide-x"
size="sm"
class="p-2"
square
@click="clearValue()"
/>
</slot>
</DefineInput>

<DefineLabel>
Expand Down Expand Up @@ -132,7 +148,6 @@ const [DefineDescription, ReuseDescription] = createReusableTemplate()

<div class="flex gap-2 justify-center">
<ReuseInput />
<slot name="actions" />
</div>
</UFormField>
</template>
Expand All @@ -156,7 +171,6 @@ const [DefineDescription, ReuseDescription] = createReusableTemplate()
</template>
<div class="flex w-full gap-2">
<ReuseInput />
<slot name="actions" />
</div>
</UFormField>
<div class="mt-2">
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools/app/components/ComponentProps.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ function onResetState() {
if (isRotated.value) return
setTimeout(() => isRotated.value = false, 500)
isRotated.value = true
modelValue.value = { ...props.defaultValue }
modelValue.value = structuredClone(props.defaultValue ?? {})
}
</script>

Expand Down
2 changes: 2 additions & 0 deletions packages/devtools/app/components/inputs/ArrayInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ const modelValue = defineModel<Array<any>>()
function removeArrayItem(index: number) {
if (!modelValue.value) return
modelValue.value.splice(index, 1)
modelValue.value = [...modelValue.value]
}

function addArrayItem() {
if (!modelValue.value) {
modelValue.value = [null]
} else {
modelValue.value.push(null)
modelValue.value = [...modelValue.value]
}
openedItem.value = modelValue.value?.length - 1
}
Expand Down
2 changes: 1 addition & 1 deletion packages/devtools/app/pages/components.vue
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ watch([componentMeta, exampleMeta], async ([newComponentMeta, newExampleMeta]) =
}

if (!touched.value) {
props.value = { ...defaultProps.value, ...compodiumDefaultProps.value }
props.value = structuredClone({ ...defaultProps.value, ...compodiumDefaultProps.value })

combo.value = [...(
newExampleMeta?.compodium?.combo
Expand Down