From 37a72ec7685e9aa7572141f7c1bd94277194bb20 Mon Sep 17 00:00:00 2001 From: Julian Hundeloh Date: Thu, 29 Apr 2021 16:01:50 +0200 Subject: [PATCH] fix: allow functions as classes --- src/base/Component.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/base/Component.ts b/src/base/Component.ts index d67ec71d..da0e029b 100644 --- a/src/base/Component.ts +++ b/src/base/Component.ts @@ -74,6 +74,18 @@ const Component = Vue.extend({ }, methods: { + resolveCssClass(classes) { + if (Array.isArray(classes)) { + return classes.map(this.resolveCssClass); + } + + if (typeof classes === 'function') { + return classes(this); + } + + return classes; + }, + getElementCssClass( elementName?: string, defaultClasses: CssClass = '', @@ -97,10 +109,10 @@ const Component = Vue.extend({ const fixedClasses = get(this.fixedClasses, elementName); if (fixedClasses) { - return mergeClasses(fixedClasses, classes); + return mergeClasses(this.resolveCssClass(fixedClasses), this.resolveCssClass(classes)); } - return classes; + return this.resolveCssClass(classes); } if (this.activeVariant) { @@ -110,10 +122,10 @@ const Component = Vue.extend({ } if (this.fixedClasses) { - return mergeClasses(this.fixedClasses, classes); + return mergeClasses(this.resolveCssClass(this.fixedClasses), this.resolveCssClass(classes)); } - return classes; + return this.resolveCssClass(classes); }, }, });