From 7da4cb9c03689f7c52834ccf83308c7426c5d52a Mon Sep 17 00:00:00 2001 From: Oreille <33065839+Oreilles@users.noreply.github.com> Date: Wed, 1 Sep 2021 02:37:25 +0200 Subject: [PATCH] Don't stringify nested item props (#7733) --- app/src/utils/render-string-template.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/utils/render-string-template.ts b/app/src/utils/render-string-template.ts index 7a6fa81b40..03351b7581 100644 --- a/app/src/utils/render-string-template.ts +++ b/app/src/utils/render-string-template.ts @@ -1,5 +1,4 @@ -import { cloneDeep } from 'lodash'; -import { render } from 'micromustache'; +import { render, renderFn, get } from 'micromustache'; import { computed, ComputedRef, Ref, unref } from 'vue'; import { getFieldsFromTemplate } from './get-fields-from-template'; @@ -8,15 +7,16 @@ type StringTemplate = { displayValue: ComputedRef; }; +function resolve(path: string, scope: any) { + const value = get(scope, path); + return typeof value === 'object' ? JSON.stringify(value) : value; +} + export function renderStringTemplate( template: Ref | string, item: Record | undefined | null | Ref | undefined | null> ): StringTemplate { - const values = cloneDeep(unref(item)); - - for (const key in values) { - if (typeof values[key] === 'object') values[key] = JSON.stringify(values[key]); - } + const values = unref(item); const templateString = unref(template); @@ -26,7 +26,7 @@ export function renderStringTemplate( if (!values || !templateString || !fieldsInTemplate.value) return false; try { - return render(templateString, values, { propsExist: true }); + return renderFn(templateString, resolve, values, { propsExist: true }); } catch { return false; }