|
|
@@ -45,7 +45,7 @@ export function renderDynamicAttr(
|
|
|
value: unknown,
|
|
|
tag?: string
|
|
|
): string {
|
|
|
- if (value == null) {
|
|
|
+ if (!isRenderableValue(value)) {
|
|
|
return ``
|
|
|
}
|
|
|
const attrKey =
|
|
|
@@ -64,12 +64,20 @@ export function renderDynamicAttr(
|
|
|
// Render a v-bind attr with static key. The key is pre-processed at compile
|
|
|
// time and we only need to check and escape value.
|
|
|
export function renderAttr(key: string, value: unknown): string {
|
|
|
- if (value == null) {
|
|
|
+ if (!isRenderableValue(value)) {
|
|
|
return ``
|
|
|
}
|
|
|
return ` ${key}="${escapeHtml(value)}"`
|
|
|
}
|
|
|
|
|
|
+function isRenderableValue(value: unknown): boolean {
|
|
|
+ if (value == null) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ const type = typeof value
|
|
|
+ return type === 'string' || type === 'number' || type === 'boolean'
|
|
|
+}
|
|
|
+
|
|
|
export function renderClass(raw: unknown): string {
|
|
|
return escapeHtml(normalizeClass(raw))
|
|
|
}
|