Files
directus/app/src/utils/render-string-template.ts
Nitwel c7f2b05c00 Fix drawer item title not showing data (#4940)
* 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>
2021-04-09 18:05:41 -04:00

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 };
}