tabs icon indicating copy to clipboard operation
tabs copied to clipboard

feat: 为tab增加data-tab来储存string类型标题

Open sosohime opened this issue 5 years ago • 19 comments

解决tab active以后加粗字体宽度变化,导致tab跳动的问题 对应在css增加

      &&::after {
        display: block;
        content: attr(data-tab);
        font-weight: 500;
        height: 0;
        color: transparent;
        overflow: hidden;
        visibility: hidden;
      }

issue: https://github.com/ant-design/ant-design/issues/18652 pr: https://github.com/ant-design/ant-design/pull/18940

sosohime avatar Sep 23 '19 11:09 sosohime

Coverage Status

Coverage remained the same at 72.521% when pulling 2c1f7fa55880e2f4fa3a5be72ef0b455dc58e23b on sosohime:save_tab_data into 354a2287d90ae44c7aa227b0efc201456fd02c23 on react-component:master.

coveralls avatar Sep 23 '19 12:09 coveralls

@zombieJ 帮忙看下这个 PR,如果没问题 merge 后发个版本吧,我好像没有 rc 组件库的发版权限。

dengfuping avatar Sep 27 '19 03:09 dengfuping

这个 fix 耦合度太高了,而且也解决不了 tab 是 ReactNode 的情况。

zombieJ avatar Sep 29 '19 11:09 zombieJ

这个 fix 耦合度太高了,而且也解决不了 tab 是 ReactNode 的情况。

这种伪元素的方式兼容性会高一些,之前有考虑过text-shadowletter-spacing负值的方案,但都不尽人意 传入ReactNode应该多为用户高度定制化的需求,可能涉及到处理一些图标的工作,与其考虑遍历子节点进行修改,不如交由用户自己处理

具体讨论

sosohime avatar Sep 29 '19 12:09 sosohime

不要遍历子节点,得找找其他方式来支持 ReactNode。

zombieJ avatar Sep 29 '19 12:09 zombieJ

不要遍历子节点,得找找其他方式来支持 ReactNode。

有思路嘛

sosohime avatar Sep 30 '19 14:09 sosohime

目前想法是切换高亮时记录一下宽度,将 padding left 暂时去掉保持宽度。不知道还有没有更好的。

zombieJ avatar Oct 01 '19 04:10 zombieJ

记录宽度感觉不可行,假设一种 ReactNode 的场景: tab title 可编辑 还是感觉只对 String 进行兼容即可

sosohime avatar Oct 08 '19 06:10 sosohime

可编辑不影响,宽度没有变化。

zombieJ avatar Oct 08 '19 07:10 zombieJ

可编辑不影响,宽度没有变化。

zombieJ avatar Oct 08 '19 07:10 zombieJ

改了字数宽度咋不会变-。-

sosohime avatar Oct 08 '19 12:10 sosohime

点击记录宽度 取消选中项 padding-left,并设置 min-width 为记录宽度

用户如果多写字,就顶出来。不写字它就还是一样的宽度。不锁死就行了。

zombieJ avatar Oct 11 '19 02:10 zombieJ

demo 这种情况下-。-,还要分成两种来看,考虑当前编辑的是否是active的tab

sosohime avatar Oct 11 '19 11:10 sosohime

嗯,在 active 前记录,active 时固定。

zombieJ avatar Oct 11 '19 11:10 zombieJ

感觉还是没有必要,如果是直接的编辑标题输入超出长度应该也会不好看。按照你的这个思路搞一个 Demo 插入 ReactNode 到 tab 里,作为 FAQ 给用户好了。关心偏移的用户让他们自己抄一下 Demo。

zombieJ avatar Oct 11 '19 11:10 zombieJ

ok,那我们 string 类型的还做兼容么

sosohime avatar Oct 11 '19 13:10 sosohime

Tabs 上不做了,有需求的用户抄你的 Demo 就行了。这样如果他们想搞 ReactNode 作为 title 的,也可以自己依样画葫芦。

zombieJ avatar Oct 12 '19 06:10 zombieJ

Any progress?

afc163 avatar Apr 11 '20 16:04 afc163

看起来这个解决方案最终没有得到统一。 @zombieJ 的意见应该是这里不做改动,因为这个方案无法解决Title为ReactNode的情况,建议给出一个 Demo 让用户参考。 我的想法是采用这个方案,使用String Title的问题可以得到解决,然后在这个基础上再给出ReactNode的解决方案-。-

sosohime avatar Apr 15 '20 07:04 sosohime