diff --git a/lua/wikis/commons/Widget/Component.lua b/lua/wikis/commons/Widget/Component.lua index d69a28df5e7..d9a06642ac7 100644 --- a/lua/wikis/commons/Widget/Component.lua +++ b/lua/wikis/commons/Widget/Component.lua @@ -48,7 +48,24 @@ ComponentCore.ComponentMT = { -- Apply DefaultProps via lightweight metatable -- Only shallow default props allowed if self.defaultProps then - setmetatable(props, { __index = self.defaultProps }) + local origMT = getmetatable(props) + if not origMT then + setmetatable(props, { __index = self.defaultProps }) + else + ---Calling from Widget/Factory requires extra handling + ---as frame arguments are hidden behind a separate metatable + local origProps = props + props = setmetatable({}, { + __index = function (newProps, key) + local origVal = origProps[key] + if origVal ~= nil then + return origVal + end + return self.defaultProps[key] + end, + __newindex = origProps + }) + end end return setmetatable({