描述bug
清单中包含的成员会覆盖其他定义的属性。由于FAST中的所有属性也是类的成员,因此在分析清单时,所有属性总是被成员覆盖。请参阅storybook/web-components中定义的extractArgTypesFromElements方法。用于定义类的顺序会覆盖属性。
解决方案建议
我希望将map方法的顺序更改为:
export const extractArgTypesFromElements = (tagName: string, customElements: CustomElements) => {
const metaData = getMetaData(tagName, customElements);
return (
metaData && {
...mapData(metaData.members, 'properties'),
...mapData(metaData.properties, 'properties'),
...mapData(metaData.attributes, 'attributes'),
...mapData(metaData.events, 'events'),
...mapData(metaData.slots, 'slots'),
...mapData(metaData.cssProperties, 'css custom properties'),
...mapData(metaData.cssParts, 'css shadow parts'),
}
);
};
这确保了在第一次测试中,属性和成员被属性覆盖,从而在Storybook中正确显示。
拉取请求
我愿意为此更改创建一个PR。我只是想在提交PR之前验证这样的更改是否会被接受。
环境信息
System:
OS: Windows 10 10.0.22000
CPU: (16) x64 AMD Ryzen 7 5700U with Radeon Graphics
Binaries:
Node: 16.16.0 - ~\AppData\Roaming\nodejs\node.EXE
npm: 8.11.0 - ~\AppData\Roaming\nodejs\npm.CMD
Browsers:
Edge: Spartan (44.22000.120.0), Chromium (100.0.1185.39)
npmPackages:
@storybook/addon-actions: ^6.5.9 => 6.5.9
@storybook/addon-essentials: ^6.5.9 => 6.5.9
@storybook/addon-links: ^6.5.9 => 6.5.9
@storybook/addons: ^6.5.9 => 6.5.9
@storybook/builder-webpack4: ^6.5.9 => 6.5.9
@storybook/core-common: ^6.5.0 => 6.5.9
@storybook/csf-tools: ^6.5.0 => 6.5.9
@storybook/manager-webpack4: ^6.5.9 => 6.5.9
@storybook/store: ^6.5.0 => 6.5.9
@storybook/test-runner: ^0.5.0 => 0.5.0
@storybook/theming: ^6.5.9 => 6.5.9
@storybook/web-components: ^6.5.9 => 6.5.9
1条答案
按热度按时间ccrfmcuu1#
你好,
我明白为什么覆盖对于成员和属性是有帮助的,因为它们都位于类的同一个"命名空间"中。但我认为我们应该阻止其他内容被覆盖。
我有一个例子,我想让我的Web组件的用户通过一个名为
icon
的属性或一个名为icon
的自定义SVG插槽传递一个icon
。在这里,我希望两种选项,icon
属性和icon
插槽,都能在<ArgTypes/>
上可见。你觉得这里可行吗?
**编辑:**我刚刚意识到我的点与这个问题中暴露的内容相同: #19799