storybook 自定义元素清单 -> 属性被成员覆盖

9gm1akwq  于 3个月前  发布在  其他
关注(0)|答案(1)|浏览(38)

描述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
ccrfmcuu

ccrfmcuu1#

你好,
我明白为什么覆盖对于成员属性是有帮助的,因为它们都位于类的同一个"命名空间"中。但我认为我们应该阻止其他内容被覆盖。
我有一个例子,我想让我的Web组件的用户通过一个名为icon的属性或一个名为icon的自定义SVG插槽传递一个icon。在这里,我希望两种选项,icon属性和icon插槽,都能在<ArgTypes/>上可见。
你觉得这里可行吗?

**编辑:**我刚刚意识到我的点与这个问题中暴露的内容相同: #19799

相关问题