mirror of
https://github.com/directus/directus.git
synced 2026-02-12 11:24:58 -05:00
* fix drawer item title not showing data * load template items relational * Only render preview on first load * Fix type issue Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
23 lines
751 B
TypeScript
23 lines
751 B
TypeScript
import { computed, Ref } from '@vue/composition-api';
|
|
import { render } from 'micromustache';
|
|
import { getFieldsFromTemplate } from './get-fields-from-template';
|
|
|
|
export function renderStringTemplate(
|
|
template: Ref<string | null> | string,
|
|
item: Ref<Record<string, any> | undefined | null>
|
|
) {
|
|
const templateString = computed(() => (typeof template === 'string' ? template : template.value));
|
|
|
|
const fieldsInTemplate = computed(() => getFieldsFromTemplate(templateString.value));
|
|
|
|
const displayValue = computed(() => {
|
|
if (!item.value || !templateString.value || !fieldsInTemplate.value) return;
|
|
|
|
try {
|
|
return render(templateString.value, item.value, { propsExist: true });
|
|
} catch {}
|
|
});
|
|
|
|
return { fieldsInTemplate, displayValue };
|
|
}
|