naive-ui/think.md

382 lines
14 KiB
Markdown
Raw Normal View History

## git problem...
2019-11-12 19:40:46 +08:00
2019-07-10 11:42:46 +08:00
我的锅...远程分支没设定好,推得哪个自己都不知道。
2019-11-12 19:40:46 +08:00
## test 时候 vue v-model 产生的效果必须在 \$nextTick() 之后才会产生,虽然它声称自己是同步的...
我的锅,忘了为啥了。确实是同步的,是我没有考虑到 v-model 这东西应该用什么方法测试。
## Vue loader 编译深度选择器出了问题
2019-11-12 19:40:46 +08:00
a >>> b 被编译成了 a > > > b
2019-11-12 19:40:46 +08:00
## input 的 change 不随外界 props value 的改变改变
2019-11-12 19:40:46 +08:00
其他的我还没想好
2019-11-12 19:40:46 +08:00
## 2019.7.17 There may be a bug of chrome
2019-11-12 19:40:46 +08:00
2019-07-17 18:42:05 +08:00
在一个 single filterable select 中,会出现一个 bug...,这个 bug 会让溢出屏幕的 item 不再显示。感觉可能是 Chrome 为了性能优化没有渲染一些在屏幕外面的东西,暂时通过 translateZ(0) 解决了。
2019-11-12 19:40:46 +08:00
## 2019.7.17 Popover
2019-11-12 19:40:46 +08:00
2019-07-17 18:42:05 +08:00
popover 的 hover 有问题,哎...一大堆东西闪来闪去就可能 mouseleave 没触发就一直留在那了
2019-11-12 19:40:46 +08:00
## 2019.7.31 Margin 没有撑开元素
2019-11-12 19:40:46 +08:00
overflow: hidden 可以解决,这是 BFC 的问题
2019-11-12 19:40:46 +08:00
2019-08-01 18:19:03 +08:00
## 2019.8.1
2019-11-12 19:40:46 +08:00
2019-08-01 18:19:03 +08:00
width: fit-content, min-content, max-content, intrinsic, extrinsic
flex, flex-grow
2019-11-12 19:40:46 +08:00
2019-08-01 18:19:03 +08:00
```
render (h) {
console.log(this.$props)
return h('div', {
staticClass: 'n-steps'
}, mapSteps({ ...this.$props }, this.$slots.default))
}
```
2019-11-12 19:40:46 +08:00
为什么 \$props 不一样?解构赋值做了什么
document.querySelector('\*[n-id=888d3] .simulate-transparent-text') 不合法?
## 2019.8.8
2019-11-12 19:40:46 +08:00
函数节流别忘了加上@scroll
2019-11-12 19:40:46 +08:00
2019-08-27 11:19:53 +08:00
## 2019.8.27
2019-11-12 19:40:46 +08:00
2019-08-27 11:19:53 +08:00
activator 外面不应该包元素
检查内存泄露可能性
2019-11-12 19:40:46 +08:00
考虑级联异步 api
placement \$refs 变化更改
2019-09-03 14:13:01 +08:00
## 2019.8.28
2019-11-12 19:40:46 +08:00
picker 在 input 聚焦的时候esc 按钮不符合预期
2019-11-12 19:40:46 +08:00
2019-09-03 14:13:01 +08:00
## 2019.8.29
2019-11-12 19:40:46 +08:00
2019-08-29 19:01:12 +08:00
block transition for date picker in range not via :key
2019-11-12 19:40:46 +08:00
2019-09-03 14:13:01 +08:00
## 2019.9.2
2019-11-12 19:40:46 +08:00
2019-09-02 15:55:23 +08:00
select menu 更加自治一点 比如 isSelected可能最后要加到 vmodel 为止
2019-09-02 18:30:53 +08:00
tooltip css max-content 兼容性
popover z-index 问题
2019-11-12 19:40:46 +08:00
2019-09-03 14:13:01 +08:00
## 2019.9.3
2019-11-12 19:40:46 +08:00
2019-09-03 14:13:01 +08:00
popover 停止追踪的时机
2019-11-12 19:40:46 +08:00
2019-09-24 16:59:07 +08:00
## 2019.9.24
2019-11-12 19:40:46 +08:00
2019-09-24 16:59:07 +08:00
popover 可能 activator 和 content 不同步,在 beforeRouteEnter locale change 的时候!!!
2019-11-12 19:40:46 +08:00
## 2019.9.28
2019-11-12 19:40:46 +08:00
confirm 有 bug = =...和 button 颜色相关,之后检查吧
2019-11-12 19:40:46 +08:00
2019-10-21 14:49:08 +08:00
## 2019.10.21
2019-11-12 19:40:46 +08:00
2019-10-21 14:49:08 +08:00
Radio Button 默认主题下是否 hollow out这是个问题
2019-11-12 19:40:46 +08:00
2019-11-14 11:04:19 +08:00
## 2019.11.14
2019-11-12 19:40:46 +08:00
2019-11-14 11:04:19 +08:00
base picker focus 问题
2019-12-03 21:35:39 +08:00
## 2019.12.3
Dropdown Submenu 定位问题
2019-12-03 21:35:39 +08:00
还有那个... Modal + border 的问题,怎么解决
2019-11-12 19:40:46 +08:00
2019-12-20 18:49:54 +08:00
## 2019.12.20
Anchor Bug 复现 at typography
2019-12-23 22:18:04 +08:00
## 2019.12.23
Damn eslint
```
What fixed it for me was using double quotes and an escaping slash like so:
"lint": "eslint \"**/*.{js,jsx}\" --quiet",
Previously, it would not work with single quotes:
"lint": "eslint '**/*.{js,jsx}' --quiet",
```
## 2019.12.30
为了按需引入打包大小依旧可控,需要用某种方式让互相的依赖变为外部依赖。或者就维持原本的文件结构,这样的话需要的是 babel。看起来还是有点麻烦之后再解决吧。
2020-02-26 23:26:11 +08:00
## 2019.2.26
虽然没啥用了,还是留着吧
```
/**
* In Chrome, Firefox, Safari, this only happens when devtool opened
* However only Chrome and Firefox will refocus at input element
*/
const devtoolIsOpened = e.target === document.activeElement
```
2020-03-07 15:48:49 +08:00
## 2020.3.7
主体差不多做完了,好累
## 2020.3.8
zindex 有点问题
2020-03-12 11:13:29 +08:00
## 2020.3.11
zindex 的问题解决了,虽然很简单,在 static 元素上设定 zindex 没用,😅
## 2020.3.15
在搞响应式页面的时候,我意识到存粹依赖 css 是一种不可靠的方式。虽然从布局层面 grid layout 已经给出了一种近乎完美的解决方案,但是涉及到一切内联样式的... 都需要从 js 的层面来解决。目前想来最 trival 的方式就是让每个 config consumer 都能拿到这个值。
## 2020.3.20
一想到到了 1.0 就要写 changelog就感觉🥚在隐隐作痛
2019-12-30 20:40:03 +08:00
2020-03-25 22:33:55 +08:00
## 2020.3.25
一个有趣的事情是blur 到 document.body 之后document.activeElement 是 body但是 blurEvent.relatedTarget 会被设为 null
2020-05-18 20:19:52 +08:00
## 2020.5.18
rerender 报警了
```
h('NLayout', {
ref: 'body',
style: { ...this.contentStyle },
props: {
'use-native-scrollbar': false,
'scroll-content-style': {
width: '100%',
boxSizing: 'border-box',
padding: this.paddingBody ? '21px 48px' : null
}
}
}, null)
```
一个是computed导致重复渲染还有一个是 getScrollParent 缓存的问题
2020-05-19 15:18:29 +08:00
## 2020.5.19
我在想要不要帮用户检查值,比如说一些不存在的值...现在这个问题就出现在 checkbox 里面,这是个哲学问题
## 2020.5.19
得看懂 vue 究竟是怎么更新组件的...
2020-05-29 11:22:07 +08:00
## 2020.5.28
目前看来,对于动态样式,有两种情况,一种是像直接通过 prop 生效,另一种是通过组合才生效,比如 error 的 formitem 与 input判断是否要生成样式是个比较麻烦的事目前看来比较凑巧的是这个样式的体积不是很大其实放在哪边都差不多= =
## 2020.5.29
主题变量有两种组织方式:
```
light {
error: {
backgroundColor: {
hover
}
}
}
或者
light {
backgroundColor: {
error: {
default
}
}
}
```
我目前觉得第一种好点,因为扩展一般是按照种类扩展,每次插入一个同样结构的块。而第二种是每次扩展的时候在每个块里同样的位置插入一行,这样扩展的时候写起来很别扭。
2020-05-29 11:22:07 +08:00
2020-07-01 21:57:42 +08:00
## 2020.7.1
shouldMount 可以加到 usecssr
2020-07-08 20:35:29 +08:00
## 2020.7.8
style overrides RFC
```js
// no import on demand
import naive from 'naive-ui'
naive.Button.overrideStyles({
light: {
borderRadius: 8
},
dark: {
borderRadius: 8
}
})
naive.InputNumber.overrideStyles({
light: {
borderRadius: 8
},
dark: {
borderRadius: 8
}
})
naive.themes.light.overrideStyles({
primaryColor: '1234'
})
Vue.use(naive)
```
```js
// import on demand
// essential
import create from 'naive-ui/create'
import lightStyle from 'naive-ui/styles/light'
import darkStyle from 'naive-ui/styles/dark'
// components
import Button from 'naive-ui/button'
// styles
import buttonLightStyle from 'naive-ui/button/styles/light'
import buttonDarkStyle from 'naive-ui/button/styles/dark'
const naive = create({
components: [
Button
],
styles: [
// base styles, required for each theme
lightStyle,
darkStyle,
// component styles
buttonLightStyle,
buttonDarkStyle
],
fallbackTheme: 'light',
})
```
2020-02-12 17:59:40 +08:00
## TODO 排序不分先后
2020-02-28 20:31:06 +08:00
1. <del>Focus Detector on Time Selector</del>
2020-02-24 15:31:39 +08:00
2. <del>Menu Root Indent = 0 可能造成问题</del>
2020-03-07 15:48:49 +08:00
3. <del>用 RAF 优化 scrollbar 性能(不一定需要)</del>为了有时候滚动同步的一致性,决定不做了
2020-02-22 14:11:34 +08:00
4. <del>Anchor 切换有 bug忽然闪现第一个</del>
5. <del>Safari select lightbar container overflow 边角(或许是 webkit 的问题)</del>默认选中第一个可以装作这个问题不存在
2020-02-29 19:28:23 +08:00
6. <del>Chrome lightbar offset @table fitler</del> select menu 始终存在这个问题,不知道原因是什么
2020-02-25 18:49:13 +08:00
7. <del>cascader 数据结构重构,维持原选项!</del> 这个不做了,对 Children 的处理过于边角Patch 那块也会从声明式变成命令式
8. <del>排查 render 函数是否每个地方都支持数组</del> 我现在明白了只要套上数组vue 就能完美的渲染
2020-02-25 18:49:13 +08:00
9. <del>form async validation</del>
10. <del>table filter 重构支持异步</del>
2020-02-22 14:11:34 +08:00
11. <del>tabs resize bug</del>
2020-02-25 18:49:13 +08:00
12. <del>CSS 整理</del> 暂且算做完了
2020-02-28 20:31:06 +08:00
13. <del>落地页</del>
2020-02-13 22:06:22 +08:00
14. <del>按需引入 babel plugin</del> 这个不做了,收益不大,工作量不小
15. <del>form table 需要 size</del>
16. <del>input number 需要一个小型的</del> 目前看来也不是很必要input number 其实可以很小
17. <del>layout scroll api</del>
2020-02-25 18:49:13 +08:00
18. <del>cascader select menu disabled 选项</del>
2020-02-22 14:11:34 +08:00
19. <del>icon 的默认 stroke</del>
2020-02-26 17:21:03 +08:00
20. <del>tree 组件</del>
2020-02-20 20:11:31 +08:00
21. <del>文件上传组件</del>
22. <del>custom-input 废弃或者重构</del>
23. <del>Date 键盘操作 Time 键盘操作</del> 先把能做的做了
2020-02-26 23:26:11 +08:00
24. <del>Time 格式化</del>
25. <del>Date 格式化</del>
26. <del>base cancel mark rename suffix</del>s
27. <del>base picker => base selection</del>
28. <del>base lightbar => base tracking rect</del>
2020-02-25 18:49:13 +08:00
29. <del>loader 区分 debug 和 非 debug</del>
2020-02-29 17:40:09 +08:00
30. <del>逐步放宽对宽度必需传 number 的现实,尤其是对于 table</del>
31. <del>BaseLoading 代替 Log 里的 Spin</del>
2020-03-05 23:31:51 +08:00
32. <del>Modal 内部组件的卸载方式</del>
2020-02-20 20:11:31 +08:00
33. <del>Anchor 的另一种模式,追踪内容按照的是中间范围而不是自身大小</del>
34. <del>bug md-loader alert 内的 code 不显示</del> 不是 bugmd 就这么渲染
2020-02-20 20:11:31 +08:00
35. <del>backtop mounted blink</del>
36. <del>Tab keep alive</del>
2020-02-25 18:49:13 +08:00
37. <del>Cascader submenu 的 lightbar 用 base tracking rect 代替</del>
2020-02-29 17:40:09 +08:00
38. <del>Dropdown 样式微调</del>
2020-02-26 17:21:03 +08:00
39. <del>Card 用 padding 代替 margin 来避免 margin 折叠的问题</del> 不做了,要是想避免折叠让用户自己写 bfc 吧
2020-02-25 18:49:13 +08:00
40. <del>检查 Icon 在 button 中切换有没有问题,直觉来说应该没问题</del>
41. <del>Radio Group 和 Steps 的镂空效果在 mounted 的时候 transition 没有关闭</del>
2020-02-22 14:11:34 +08:00
42. <del>Typography 文档待更新</del>
2020-02-26 17:21:03 +08:00
43. <del>Tab 文档待更新</del>
2020-02-22 14:11:34 +08:00
44. <del>Icon 文档待更新</del>
45. <del>把 Upload 的回调 API 从 promise 改成 callback 格式的,文档也要对应修改</del> 我决定全面提供 Promise API 而不是 callback 风格的
2020-02-26 23:26:11 +08:00
46. <del>Date Picker 的 format 文档内容</del>s
2020-02-29 17:40:09 +08:00
47. <del>Button Group 样式</del>
2020-02-29 19:28:23 +08:00
48. <del>text button icon</del>
2020-02-26 17:21:03 +08:00
49. <del>tab scroll 计算有潜在 bug</del>
2020-02-29 17:40:09 +08:00
50. <del>data-table 的 header height 为啥要固定因为固定列的问题sticky 解决了就没事</del>
2020-02-26 17:21:03 +08:00
51. <del>scrollbar 在平时不显示用不到的 rail</del>
2020-02-28 20:31:06 +08:00
52. <del>placeholder transition 对 firefox 做兼容</del>
53. <del>调整 date picker 的尺寸</del>s
2020-02-29 19:28:23 +08:00
54. <del>Select option 右侧 padding 调整</del>
55. <del>Popover arrow shadow 调整</del>
56. <del>Input number 按钮样式调整</del>
2020-03-05 23:31:51 +08:00
57. <del>一部分组件在 Modal 内部的样式</del> 还差 data table 的选项们
58. <del>更新 Progress 文档</del>
59. <del>为所有的数据录入组件的尺寸</del>
60. <del>审核文档</del> 就这样吧,凑活
61. <del>调整 transfer 的样式</del>
62. <del>Table cascader 差一点国际化</del>
2020-03-05 23:31:51 +08:00
63. <del>Anchor 初次滚动的逻辑是不是要手动调整一下,现在位置实际上不一致</del>
2020-03-01 20:27:22 +08:00
64. <del>将所有的 Typography 组件改为非 Functional 的,因为获取不到 context 本身的主题</del>
2020-03-05 23:31:51 +08:00
65. <del>搞明白 table layout 这个 css 属性是在干什么</del>
2020-03-20 22:25:39 +08:00
66. <del>Icon 颜色</del> 原来我早就解决了,都忘了...
2020-03-05 23:31:51 +08:00
67. <del>Modal 滚动之后的 transform origin</del>
68. <del>Slider 对于 modal 适配</del>
69. <del>table fixed scroll checkbox, not sync</del>
2020-03-07 15:48:49 +08:00
70. <del>Transfer no data</del>
71. <del>Metropolis 从自带字体去掉<del>
72. <del>Input Group</del>
73. <del>Dropdown API 修改为 label + value目前为止 UI 并没有出现过 key不能只为了它搞特殊value 可以key 甚至会另有作用,现在占用实际是个危险的事情</del>
74. <del>card slot</del>
75. <del>table fixed computed left right</del>
76. <del>gradient text 的切换能解决?</del>目前我想不出解决办法,希望未来 CSS 能增加 gradient 的渐变
77. <del>Auto Complete Group</del>
78. <del>select add tag</del>
79. <del>dynamic input</del> 还差英文文档
80. <del>input 严格受控</del>
81. 搞明白 vue 的 scoped 和 普通的关系
82. Form Item 不返回 true 的时候... 错误信息不会消失,这似乎不太合理?
83. Form Item 应该和 Input Group 也契合良好
2020-03-20 15:42:36 +08:00
84. <del>Notification 主题切换需要工作良好</del>
85. <del>Notification 这个东西很特殊...</del>感觉也没那么特殊
2020-03-20 19:17:26 +08:00
86. <del>文件上传的回调方式改成传对象</del>
2020-03-20 22:25:39 +08:00
87. 抵御外界 CSS 变化,比如 line-height 之类的
88. <del>CSS Font 选择</del> 对英文应该没有那么麻烦走系统字体就好了然而对中文又没什么好的解决方案so 先这个样子,之后再琢磨琢磨
2020-05-16 20:48:52 +08:00
89. <del>把所有用 $slots 判断的地方都改成 $scopedSlots[原因](https://vuejs.org/v2/api/#vm-scopedSlots)<del> done
2020-05-30 17:20:27 +08:00
90. <del>调整默认状态下 button, input 的 icon 的颜色</del>
2020-05-19 15:18:29 +08:00
91. <del>优化 button 的样式,现在太冗余了,关键是怎么同步按钮的主题变量呢...</del>
92. <del>placeable 按需注册</del>
93. steps 列表优化
94. tabs 列表优化
95. tree 列表优化
96. cascader 列表优化
2020-05-30 17:20:27 +08:00
97. 更多的 tabs 选择
98. 下拉菜单应该给 icon 留空间
2020-05-30 21:41:10 +08:00
99. <del>Form item feedback 好像有点问题,消失的时候,自定义时候</del>
2020-05-30 22:42:50 +08:00
100. <del>Confim 重命名 Dialog</del> 算了不换了牵扯的地方太多不好改了confirm 也就凑活吧
101. Dark Debug 3Safari 你可太秀了......
2020-02-12 17:59:40 +08:00
2020-02-12 18:00:27 +08:00
```
Done
2020-02-12 17:59:40 +08:00
// modal transform scale
// Notification content close
2020-02-05 22:20:12 +08:00
// form required css
// Md Loader 对于 strong 的处理
2020-01-10 14:42:11 +08:00
// pref hollowout, cache next bg color
2019-12-30 20:40:03 +08:00
// issue fix, add delay prop
// add trigger to tooltip
// outside click delegate select
// DatePicker range Bug
2019-09-20 18:20:21 +08:00
// Scrollbar Firefox...
// scrollbar 在 resize 之后滚动会有问题
2019-12-30 20:40:03 +08:00
// ResizeObserver Polyfill
2020-02-05 22:20:12 +08:00
// Select 需要进一步重构,现在这种状况 collector 在 corner case 中不会调 updated 钩子,要把 key 换成 value
2020-05-15 01:53:01 +08:00
```
```
release template
历史变更见https://***REMOVED***/blob/develop/CHANGELOG.zh-CN.md
2020-06-01 13:09:24 +08:00
```
```cache
需要注意的是,以 Base 开头的 CSS 文件并不会确保随着版本的更新保持稳定(我会尽力的保持)。因为它是内部实现的一部分。如果你维持按需引入时升级后样式出现了错误,可以来这里检查一下。虽然把这些公共样式各自打包进每个用到他们的组件是可行的,但是相比于升级的繁琐,我更不喜欢重复的代码。(这不意味着这种解决方案是“更好的”,它只是种选择而已)
What should be noted is the CSS files start with 'Base' are not guaranteed to be stable (I'll try not to change them). Because they are parts of internal implementation of the library. If you find import mistakes after upgrade the package, you may have a look at here. It is possible to pack these common styles inside every component using it. However, compared to add routines when upgrading package, I perfer not to import duplicate codes. (It doesn't mean this is a better solution. It is only a choice.)
2020-02-12 18:00:27 +08:00
```