Compare commits

...

564 Commits

Author SHA1 Message Date
诸岳
a1c733ad07 Bump 3.26.9 2020-02-08 21:27:25 +08:00
诸岳
9918140695 docs: Add the changelog of 3.26.9 (#21289) 2020-02-08 21:25:53 +08:00
Chiciuc Nicușor
87cbe0168f Explicitly add children prop to Timeline. (#21265) 2020-02-08 19:16:09 +08:00
偏右
eea0b028c9 🐛 Typography editable should focus at the end (#21268)
close #21261
2020-02-07 13:15:53 +08:00
偏右
88bed67368 🐛 Fix Steps style when size="small" and labelPlacement="vertical" (#21258)
close #21257
2020-02-06 17:28:47 +08:00
Han
f7e7ce9d4f fix: Minor fix on ValidationRule to match AsyncValidator (#21250)
* Minor fix on ValidationRule to match AsyncValidator

* update doc
2020-02-06 10:44:49 +08:00
二货机器人
ae7666f8fa fix badge (#21237) 2020-02-05 14:23:21 +08:00
Jirka-Lhotka
3fb7325a21 Fix wrong event type of AntTreeNodeMouseEvent (#21200) 2020-02-03 20:31:27 +08:00
偏右
59c29a400d release 3.26.8 (#21187) 2020-02-03 12:45:28 +08:00
偏右
d3102bb2db 🐛 fix site menu affix bug (#21188)
close #21128
2020-02-03 12:35:04 +08:00
afc163
e036e4c9a3 site: 📣 promote g2plot 2020-02-03 11:38:44 +08:00
Chiciuc Nicușor
da3540bd59 Replace NativeButtonProps with ButtonProps for okButtonProps and cancelButtonProps. (#21165) 2020-01-31 22:09:49 +08:00
Teng YANG
bba87d4125 update display names for layout components (#21124)
(cherry picked from commit 286e0e97f8)
2020-01-28 15:26:55 +08:00
Teng YANG
6de8522894 fix: card actions font-size issue (#21106)
Fix card component action font-size not controlled by theme variable.
2020-01-26 11:40:06 +08:00
信鑫-King
674074ce93 fix: 3.x deploy site (#20682) 2020-01-17 12:31:56 +08:00
Amumu
c68f4463d3 fix error docs (#20926) 2020-01-16 15:58:24 +08:00
偏右
a96a95ccb8 🐛 Fix List item flex layout (#20897)
close #20648
2020-01-15 10:35:45 +08:00
偏右
b112378de3 🐛 Fix Tooltip title 0 is not shown (#20894)
close #20891
2020-01-14 17:55:40 +08:00
Amumu
db4bec92be version 3.23.0 (#20890) 2020-01-14 15:50:16 +08:00
信鑫-King
b6fc0168db chore: check commit (#20880) 2020-01-14 09:41:57 +08:00
信鑫-King
92fe411961 docs: 3.26.7 changelog (#20873)
* upd: version

* 📝 changelog

* 📝 docs
2020-01-14 07:40:32 +08:00
zefeng
ab29ecb377 fix: better approach to solve not show overflow content when in elastic (#20821) 2020-01-13 20:43:03 +08:00
afc163
23d5a856c0 🎬 improve Tag demo 2020-01-08 15:09:24 +08:00
偏右
6e4fa95d0f 🐛 fix Tree switcherIcon shown in leaf node (#20753)
close #20511
2020-01-08 13:17:49 +08:00
afc163
2753ce91c9 🐛 tweak @zindex-badge for table fixed column
close #20750
close #13930
2020-01-08 11:43:10 +08:00
偏右
057f5b8526 🐛 Fix Cascader search bug when fieldNames existed (#20720)
and label/value have same field name

close #20619
2020-01-08 10:38:36 +08:00
Amumu
d3eea22097 fix: correct the collapse-borderless class variable (#20718) (#20721)
Co-authored-by: Kuitos <kuitos.lau@gmail.com>
2020-01-07 15:39:42 +08:00
骗你是小猫咪
da2f54a18a refactor: improve digital input in tooltip demo (#20702) (#20717)
* refactor: improve digital input in tooltip demo

* fix lint
2020-01-07 12:02:21 +08:00
afc163
e5dd231aaa site: 📣 promote yuque activity 2020-01-06 18:03:04 +08:00
偏右
c6eafe8380 🐛 fix Input.Group 1px bug in vertical layout form (#20685)
close #20616
2020-01-06 14:26:11 +08:00
Googleplex
0520b844d5 docs: Update year in change log (#20670)
* Update year in CHANGELOG.zh-CN.md

Update year in change log of 3.26.6 from 2019 to 2020

* Update year in CHANGELOG.en-US.md

Update year in change log of 3.26.6 from 2019 to 2020
2020-01-05 19:09:51 +08:00
zombiej
8dd91ca648 docs: Update home for antd next link 2020-01-03 21:56:38 +08:00
二货机器人
44c9bcafc9 docs: 3.26.6 changelog (#20647)
* 3.26.6 changelog

* add v3 notify
2020-01-03 17:30:45 +08:00
vagusX
4df1cd3db2 docs: update Modal docs (#20612)
* doc: update Modal docs

* doc: update modal en-US doc
2020-01-02 23:22:54 +08:00
二货机器人
2f7c895675 Revert "Update colors.en-US.md (#20606)" (#20607)
This reverts commit c513296849.
2020-01-02 18:18:39 +08:00
myeunhyuk
c513296849 Update colors.en-US.md (#20606) 2020-01-02 18:17:52 +08:00
jiang
2416f733bf fix: url 404 (#20589)
* fix url 404

* update url
2020-01-02 14:16:05 +08:00
偏右
d102c2bf7a 🆙 upgrade stylelint-order (#20585) 2020-01-02 12:11:26 +08:00
偏右
2adf8ced24 fix: 💄 Remove Input.Password value attribute from dom (#20544)
* 💄 Remove Input.Password value attribute in dom

close #20541
close #7761
close #19959
close #20536
close #12672
close #10952

*  fix test coverage

* 🐛 fix defaultValue create `value` attribute in Input.Password
2019-12-31 14:41:09 +08:00
Yaindrop
528f1df5d6 Fix image misplacing (#20552)
Switched the images of "The keyword of the user query is only displayed in three categories, Topics, Questions and Articles." and "The number of categories the keyword of the user query belongs to is uncertain."
2019-12-31 10:56:28 +08:00
DiamondYuan
4297f33e85 fix: use Object.prototype.toString to check object (#20546)
close #20528
2019-12-30 22:14:17 +08:00
偏右
8ea9356399 💄 Improve Step type="navigation" UI in small screen (#20545)
close #19877
2019-12-30 20:13:24 +08:00
二货机器人
bcb71b8b78 chore: dev mode always show debug default (#20535) 2019-12-30 16:31:30 +08:00
liyuanqiu
121437b666 Remove inconsistant style (#20533)
Remove "line-height: unset;" from ".@{radio-group-prefix-cls}".
It causes inconsistance with Checkbox.Group.
See: https://codesandbox.io/s/antd-radio-line-height-8kt7u
2019-12-30 16:01:29 +08:00
诸岳
8e793c431f Bump 3.26.5 2019-12-29 22:10:08 +08:00
诸岳
89472751a7 docs: Add the changelog of 3.26.5 (#20520) 2019-12-29 22:07:36 +08:00
偏右
df8f34309f revert Table page return 1 after sort (#20507)
close #16978
close #17770
close #17648
close #18099
close #17075
close #19369
2019-12-28 21:52:09 +08:00
afc163
670bd4bf5b update snapshots 2019-12-27 12:27:56 +08:00
偏右
75ed2e0745 📝 Add instruction about disabledDate
#19932
#9008
2019-12-27 12:14:15 +08:00
偏右
2f72e472e5 🐛 Fix Table header text align when colspan=1 (#20463)
https://github.com/ant-design/ant-design/issues/20126#issuecomment-563307001
2019-12-26 16:07:01 +08:00
plainnany
77dc5fa4e7 📝 Update draggable.md (#20458)
close #20455
2019-12-26 14:32:14 +08:00
偏右
9ea5fb3050 🐛 Fix Tree wrong indent (#20456)
close #20441
2019-12-26 12:25:00 +08:00
xrkffgg
847f5fcd31 fix: tab bar animated style (#20417)
* fix: tab-bar animated style

* fix css style
2019-12-25 14:11:57 +08:00
afc163
44a63acf13 📝 update feature 2019-12-25 12:48:49 +08:00
陈帅
1ae09841e9 doc: fix warning date (#20413)
close #20411
2019-12-24 16:33:12 +08:00
陈帅
dc3bf75452 docs: add #20325 in 3.26.4 changelog (#20395)
* docs: add 20325 in 3.26.4 changelog

* fix typo
2019-12-24 13:16:46 +08:00
wwwxy
b826157e73 update TreeSelect docs (#20402) 2019-12-24 11:18:43 +08:00
陈帅
088ca07ff0 docs: 3.26.4 changelog (#20379)
* doc: add 3.26.4 changelog

* up to 3.26.4

* fix review typo

* fix review typo
2019-12-23 11:52:42 +08:00
约修亚
f4fd7cf0da Update index.zh-CN.md (#20382)
API中遗漏了code属性?
2019-12-23 11:13:01 +08:00
Hami Abdi
0a00c5e22a Correct Grammar in Form Component's Documentation (#20381)
In a demo corresponding to the form component, a comment contains a grammatical mistake: an infinitive in this context requires the present instead of past tense.
2019-12-23 09:13:04 +08:00
Rustin
92169c4853 upload: fix upload not support ico file type issue(#20360) (#20375) 2019-12-22 17:23:08 +08:00
骗你是小猫咪
74082defe9 fix(Form): feedback icon with input suffix display not correct (#20363)
* fix(From): feedback icon with input suffix display not correct

* update snapshots

* review change

* revert register.md and improve feedback example
2019-12-20 16:24:55 +08:00
偏右
f98debaeee chore: 📝 improve docs and config json (#20364) 2019-12-20 15:07:18 +08:00
偏右
6e27c62eb3 🐛 fix Tag onClick triggered when close (#20355)
close #20344
2019-12-19 22:12:37 +08:00
xrkffgg
38dab1f725 fix: cascader error color (#20347)
* [fix] cascader error color

* fix: cascader error/warning color
2019-12-19 17:14:12 +08:00
wwwxy
f14f934c3d update TreeSelect docs (#20341) 2019-12-19 14:48:06 +08:00
kailunyao
32744e733c fix: Disallow auto focus input after triggering "onSearch" event in mobile and tablet devices (#20332)
close #20297
2019-12-19 12:52:53 +08:00
He Linming
ea9e9fb410 🐛 (Table): fix filters define in onChange (#20337)
close #20270
2019-12-19 10:42:19 +08:00
偏右
7a2d1f2017 💄 optimize Steps labelPlacement vertical UI (#20325) 2019-12-18 17:46:17 +08:00
afc163
aa0b1c5378 chore: 🗑️ remove unused prop 2019-12-18 14:56:23 +08:00
afc163
ced537df48 docs: 📝 fix site overflow style 2019-12-18 14:34:57 +08:00
偏右
930ad2eb40 docs: 📝 Description List => Descriptions (#20316)
* chore: 📝 Description List => Descriptions

* Update index.en-US.md
2019-12-18 12:09:05 +08:00
afc163
cc8ab225cc fix eslint errors 2019-12-17 18:00:38 +08:00
陈帅
b03e93d061 docs: Add contributors list in each documentation (#20135)
* site: add contributors list

* style: change ContributorsList to end

* style: change spin to Skeleton

* 💄 optimize contributors list UI
2019-12-17 17:58:58 +08:00
afc163
7743c2b326 📝 fix target _blank typo 2019-12-17 17:49:16 +08:00
xiaohuoni
b97e9cb6d4 import/extensions:0 2019-12-17 17:37:26 +08:00
dependabot-preview[bot]
edefe8eb66 chore(deps-dev): bump eslint-plugin-import from 2.18.2 to 2.19.1 (#20237)
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.18.2 to 2.19.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.18.2...v2.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-17 17:36:43 +08:00
afc163
15f75e1c55 fix time picker test snapshots 2019-12-17 16:58:41 +08:00
afc163
333f63bd05 📝 improve antd features in README 2019-12-16 22:42:30 +08:00
偏右
f805d2e292 🐛 fix Tabs ink bar missing transition animation (#20283)
close #20239
2019-12-16 22:20:42 +08:00
偏右
9fa72ab74d 🐛 Fix TreeNode without icon white block (#20274) 2019-12-16 21:25:14 +08:00
afc163
6666520243 📝 Add santd to communication implementation 2019-12-16 14:53:23 +08:00
afc163
d7d4beb280 📝 fix update use-with-create-react-app 2019-12-15 22:25:56 +08:00
偏右
9a4a668a05 chore: 🔧 fix gh-pages actions (#20260)
https://github.com/peaceiris/actions-gh-pages#github-actions-for-github-pages
2019-12-15 14:53:32 +08:00
偏右
32cf75cca2 Release 3.26.3 (#20258) 2019-12-14 20:56:40 +08:00
woodsand
7cb4d4b411 Add link of "Install and Initialization" to Getting started (#20251) 2019-12-14 19:09:55 +08:00
骗你是小猫咪
65ea68843e fix: Modal combine Drawer cause overflow invalid (#20242)
* fix: Modal combine Drawer cause overflow invalid

* upgrade rc-drawer

* rc-util use minor version
2019-12-13 22:54:47 +08:00
Guichi Zhao
1958b78ecc docs: copy state to props is a bad practice (#20212)
* Copy state to props is a bad practice 

The original code copy the props the state which is not necessary at all, it will only confuse the reader!
Also, it considered being a bad practice: https://overreacted.io/writing-resilient-components/

* remove console

* fix indentation

* fix lint error

* improve js syntax
2019-12-13 20:00:35 +08:00
Chuck
a90e447758 docs: Update Tree docs (#20208) 2019-12-12 19:24:46 +08:00
afc163
b02d80d60f 🎬 improve Tree showLine demo 2019-12-12 11:18:23 +08:00
afc163
0a5ec6713c 🐛 Fix Tree showLine and showIcon missing icon
close #20192
2019-12-12 11:18:23 +08:00
偏右
f459ae9e63 🔧 Add unpkg field in package.json (#20193)
https://unpkg.com/
2019-12-11 16:56:01 +08:00
TsesamLi
6301c20f6c fix: fix type of OptionProps
rc-select#Option could accept "label" props, but it was lose in type def OptionProps
9ad3b02c82/src/interface/index.ts (L11)
2019-12-11 16:00:29 +08:00
afc163
fdc6070b50 💄 fix home buttons align of Windows Firefox
close https://www.v2ex.com/t/627502
2019-12-10 23:56:05 +08:00
Theo Satloff
721d8cb4a0 improve dropdown/cascader/select customization 2019-12-10 13:21:36 +08:00
Theo Satloff
b0d55c8861 fix icon spacing in forms 2019-12-10 13:14:23 +08:00
afc163
20ef1f199c 🎬 improve Dropdown context menu demo 2019-12-10 11:37:32 +08:00
afc163
62839eb426 bump 3.26.2 2019-12-10 11:23:38 +08:00
Khaled
2f7998cc0c Fix: "disabledTime" property type in date-picker
disabledTime property should not be required in DatePicker component.
2019-12-09 23:38:00 +08:00
afc163
fee211e3c4 📝 Add docs for ConfigProvider getPopupContainer
close #19974
2019-12-09 19:44:33 +08:00
陈杰
8188956193 When using the render property to customize the title, the title property of the datasource is not required 2019-12-09 19:15:41 +08:00
Wei Zhu
57cb4a460b docs: update changelog 2019-12-09 17:42:15 +08:00
chenshuai2144
fd6d1796ed chore: lock eslint-plugin-impor 2019-12-09 17:07:11 +08:00
afc163
e01e545dcd 🆙 upgrade eslint-plugin-import
https://github.com/benmosher/eslint-plugin-import/issues/1557

bc3b034b59
2019-12-09 15:39:59 +08:00
afc163
13fb839032 🆙 fix eslint errors 2019-12-09 15:27:58 +08:00
afc163
85fcf0fe6e 🐛 fix Icon component ts error with cra definition
close #13205
close #19638
2019-12-09 15:27:58 +08:00
Wei Zhu
0b1a5409bd Bump 3.26.1 2019-12-09 15:04:53 +08:00
Wei Zhu
ea1f00d19f Merge pull request #20140 from ant-design/release-3.26.1
add 3.6.1 changelog
2019-12-09 14:55:05 +08:00
Wei Zhu
bef81beba6 add 3.6.1 changelog 2019-12-09 14:09:22 +08:00
depfu[bot]
b875f2ac83 Update react-dnd to version 10.0.2 (#20138) 2019-12-09 10:00:01 +08:00
depfu[bot]
408fbb41e5 Update stylelint-config-prettier to version 8.0.0 (#20129) 2019-12-07 19:58:30 +08:00
Kim, Harim
850a5b4567 Docs: fix table demo typing error (#20115)
* Docs: fix table demo typing error

* test: update snapshots (#20115)

* test: update snapshots (#20115)
2019-12-06 14:22:54 +08:00
afc163
ab36853cb7 📝 improve create-react-app documentation
https://github.com/facebook/create-react-app/releases/tag/v3.3.0
2019-12-06 12:31:47 +08:00
afc163
9b65863512 Add lighthouse-ci action 2019-12-06 12:15:14 +08:00
afc163
adf5288524 💄 Fix Editable Textarea flash in Firefox 2019-12-06 12:03:16 +08:00
afc163
4300c046a0 📝 improve Typography demo description 2019-12-06 12:03:16 +08:00
afc163
fb68fcdc05 💄 use classNames in Editable 2019-12-06 12:03:16 +08:00
偏右
4146efa810 🐛 fix duplicated icons when Tree showLine is true (#20102)
close #20090
2019-12-05 17:48:47 +08:00
骗你是小猫咪
8fda3972fe test: update snapshots (#20104) 2019-12-05 17:26:16 +08:00
偏右
89a6593c44 🐛 Fix Table column align in windows chrome (#19986)
close #19952
2019-12-05 10:55:45 +08:00
afc163
14619bc1d8 📝 fix github url 2019-12-04 21:58:41 +08:00
偏右
5fabb45d9d 📖 fix site scrollbar problem (#20086)
close #20081
may related to #19988
2019-12-04 19:42:49 +08:00
偏右
62d7a2bbb0 restore test coverage (#20071) 2019-12-04 14:09:39 +08:00
偏右
bca69b6e8c 🔧 remove antd/es/form/__tests__ from npm package (#20069) 2019-12-04 12:07:22 +08:00
afc163
fac56ee952 📝 fix home page locale text 2019-12-04 11:42:48 +08:00
Liu Ya
3fed6f02a5 fix: DescriptionItem className error to label (#20067) 2019-12-03 23:59:37 +08:00
偏右
43bf7965de 🐛 Fix Button text not align center in Chrome (#20059)
revert solution of 05181d552e

close #19972
close #20058
2019-12-03 18:06:07 +08:00
偏右
407dfda998 Update package.json (#20057) 2019-12-03 14:25:08 +08:00
afc163
811d562527 update snapshots 2019-12-03 12:19:49 +08:00
afc163
16ac3b31df 🐛 Fix filterIcon Tooltip title is not working
close #20049
2019-12-03 12:19:49 +08:00
afc163
85b6744bf6 🐛 Fix filterIcon render string cause Table broken 2019-12-03 12:19:49 +08:00
偏右
f2cae4361e Merge pull request #20040 from ant-design/fix-small-table-style
fix: 🐛 small table header border issue
2019-12-02 19:20:09 +08:00
afc163
0ab55ce884 🐛 fix footer style in small table 2019-12-02 19:18:53 +08:00
afc163
ecce1e4aba update snapshots 2019-12-02 19:02:33 +08:00
afc163
6096f6e281 🐛 fix small table header border issue
close #20030
close #18762
2019-12-02 18:07:22 +08:00
damon.chen
cba968f9dc chore: fix RangePicker value and onChange definition (#20015) 2019-12-02 17:22:06 +08:00
偏右
be06f53e23 🐛 Fix List pagniation options text align (#20038)
close #20037
2019-12-02 16:12:32 +08:00
叶枫
400ca638b3 feat: add visible debug demo (#20018)
* add debug

* 添加隐藏显示逻辑

* fix demo

* add en

* clean up

* clean up

* you see see

* Update site/theme/zh-CN.js

Co-Authored-By: 偏右 <afc163@gmail.com>

* Update site/theme/zh-CN.js

Co-Authored-By: 偏右 <afc163@gmail.com>

* fix css

* remove css
2019-12-02 15:21:56 +08:00
二货机器人
73db45471f 3.26.0 change log (#20026) 2019-12-01 16:39:25 +08:00
coderge
ca6260c75a Update index.zh-CN.md (#19627) 2019-12-01 15:46:17 +08:00
二货机器人
a713a6ae5d Merge pull request #20024 from ant-design/merge-feature
chore: Master merge feature
2019-12-01 15:41:44 +08:00
zombiej
1d516d7f7f merge feature 2019-12-01 15:29:53 +08:00
zombiej
6e69bcc9ca fix test case 2019-12-01 15:28:49 +08:00
偏右
d7e81027d6 🐛 Fix Descriptions items not working with React.Fragment (#20019)
close #19887
2019-11-30 18:10:56 +08:00
偏右
0ec7fa84d0 🐛 Fix Slider tooltip not aligned center (#20016)
close #20014
2019-11-30 18:10:48 +08:00
偏右
329edc1ed0 🐛 Fix Input clear icon overclap with feedback icon (#20017)
close #19884
2019-11-30 17:34:06 +08:00
depfu[bot]
74e0587d5b Update stylelint-config-prettier to version 7.0.0 (#20013) 2019-11-30 08:12:48 +08:00
afc163
815d52558b 📝 change home page promote url 2019-11-30 00:03:16 +08:00
叶枫
b022eaf9c2 fix: fix upload long picture style (#20008)
* fix:  fix upload long picture style

* feat: add config-provider test

* fix: stylelint
2019-11-29 23:34:12 +08:00
afc163
53eee985f0 🐛 docs: fix scrollama error
https://github.com/russellgoldenberg/scrollama/pull/106
2019-11-29 10:13:38 +08:00
Amumu
c824569ea0 move className and style to ant-upload-drag (#19987) 2019-11-28 18:00:59 +08:00
depfu[bot]
f7d211fcea Update http-server to version 0.12.0 (#19982) 2019-11-28 14:43:21 +08:00
邓波
d6430ad3f2 fix: update message content with a unique key and cancel manually (#19967) 2019-11-28 10:01:43 +08:00
damon.chen
2d82b59abf docs(Form): How to use ref with Form HOC (#19937)
* 为Form新增如何在函数组件中使用的例子

* 在Form FAQ中增加在函数组件中怎么正确拿到Form实例的说明

* 更新英文文档

* 按照comment修改

* 更新英文标题

* 修改英文文档FAQ的标题

* 修改英文文档里的大小写问题

* 按照豆酱的comments进行修改

* 按照comments进行修改
2019-11-27 18:18:19 +08:00
iamkun
965bc58ed1 docs: Update FAQ replace momentjs to Day.js with antd-dayjs-webpack-plugin (#19960)
* docs: Update FAQ replace momentjs to Day.js with antd-dayjs-webpack-plugin

* update use-with-create-react-app doc

* update getting-started doc

* update use-with-create-react-app doc
2019-11-27 17:49:01 +08:00
骗你是小猫咪
6030431121 fix(Button): Button disabled with loading not prevent pointer events (#19958) 2019-11-27 12:41:47 +08:00
信鑫-King
69e3b87a9d Merge pull request #19939 from ant-design/@table-small-header-bg
feat: 💄 Add @table-header-bg-sm and fix footer style
2019-11-27 10:45:03 +08:00
骗你是小猫咪
bed1f7775b fix: should not be render default indicator when indicator value is null (#19943) 2019-11-27 09:40:47 +08:00
dependabot-preview[bot]
c7810823bf chore(deps-dev): 🆙 bump @typescript-eslint/parser from 2.8.0 to 2.9.0 (#19941)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.9.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-26 17:16:33 +08:00
afc163
3fa135023f 💄 Add @table-header-bg-sm and fix footer style
close #19936
2019-11-26 15:33:14 +08:00
偏右
ae44aae0d3 🐛 fix Input.Group compact border issue (#19926)
close #19914
2019-11-25 19:08:33 +08:00
只捱宅
d8eb8ece4b ci: fix cannot create directory with mkdir (#19920)
* ci: fix cannot create directory with mkdir

* chore: retrigger
2019-11-25 17:54:36 +08:00
信鑫-King
a210784294 Merge pull request #19905 from ant-design/release-3.25.3
docs: 3.25.3 changelog
2019-11-25 11:29:33 +08:00
ycjcl868
c8a2acbb78 📝 changelog 2019-11-25 10:38:41 +08:00
ycjcl868
19a8118a81 📝 changelog 2019-11-25 08:18:10 +08:00
ycjcl868
34ff6db099 📝 Upload changelog 2019-11-25 08:18:09 +08:00
afc163
f2ac4f380b docs: 🔗 fix g2plot link 2019-11-24 21:59:54 +08:00
mbotnari
fb4ed9a638 chore(Table): Update custom-filter-panel.md demo (#19899)
* Update custom-filter-panel.md

In order to decrease the confusion during search created by highlighted text in all the columns, the proposal is to highlight searched text in the searched column exclusively.

* chore(Table): Update demo.test.js.snap

Snapshot update according to update in components/table/demo/custom-filter-panel.md

* chore(Table): Update custom-filter-panel.md demo

Missing trailing comma comma-dangle
2019-11-24 19:10:29 +08:00
ycjcl868
46026c3aaf 📝 changelog Menu.Item 2019-11-24 10:53:55 +00:00
ycjcl868
5d26cb0cc8 📝 3.25.3 changelog 2019-11-24 10:53:55 +00:00
afc163
958bc51629 docs: 🔗 fix antv.alipay.com to new antv.vision 2019-11-24 13:09:33 +08:00
afc163
fb66bce007 docs: fix promote link 2019-11-23 23:28:18 +08:00
afc163
041b7fa9e2 fix: cp command do not work in MacOS, #19775 2019-11-23 20:01:40 +08:00
afc163
be30d4bfa4 docs: 🔥 announce brand new antv.vision 2019-11-23 20:01:40 +08:00
depfu[bot]
fecdfd9c77 Update rc-tabs to version 9.7.0 (#19726) 2019-11-23 19:37:45 +08:00
Amumu
040fe5696a fix time-picker disabled item focus style (#19812) 2019-11-22 15:47:02 +08:00
Josiah Rooney
102efd529a docs: Improved grammar in AutoComplete docs (#19875)
Improved grammar in documentation for the AutoComplete component.
2019-11-22 09:22:20 +08:00
chen wen jun
3906f4fc00 Update index.en-US.md (#19868)
correct `maxTagTextLength` description
2019-11-21 17:49:36 +08:00
Alexander Kachkaev
5ff3a77dce Export tooltop helper interfaces (#19846) 2019-11-21 11:56:21 +08:00
Josiah Rooney
c57d7f3a6c Update index.en-US.md (#19848)
Improved the grammar of the documentation.
2019-11-21 07:39:57 +08:00
骗你是小猫咪
3072787839 chore: add @types/jest dependencies (#19816) 2019-11-20 11:46:56 +08:00
偏右
69549a8648 🐛 fix menu link color inside badge (#19810)
close #19809
2019-11-19 20:30:44 +08:00
dependabot-preview[bot]
26648cc0b1 chore(deps-dev): bump @typescript-eslint/parser from 2.7.0 to 2.8.0 (#19806)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.8.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-19 19:32:15 +08:00
orzyyyy
eb8dc9f715 docs: update badge of github action 2019-11-19 11:18:42 +08:00
只捱宅
4d09b26f82 ci: enable cache and multithreading for GA (#19786)
* ci: enable cache for GA

* feat: multithreading

* fix: pipeline

* chore: remove useless step

* chore: retrigger

* chore: debug

* chore: debug

* chore: pull hack out

* fix: add cache for package-lock.json

* chore: remove debug code
2019-11-19 11:06:41 +08:00
Martin Litvaj
bb92b01ae0 Update link to latest ColumnProps (#19789)
* Update link to latest ColumnProps

* update CN docs
2019-11-18 23:02:33 +08:00
Martin Litvaj
e4c72cf6f5 chore: Update sk_SK locales (#19787)
* Update sk_SK locales

### 🤔 This is a ...

- [ ] New feature
- [x] Bug fix
- [ ] Site / document update
- [ ] Component style update
- [ ] TypeScript definition update
- [ ] Refactoring
- [ ] Code style optimization
- [ ] Test Case
- [ ] Branch merge
- [ ] Other (about what?)

### 🔗 Related issue link

sk_SK locales are missing some translations.

* update snapshot
2019-11-18 22:02:25 +08:00
叶枫
d2e98b1bb9 fix: style (#19783) 2019-11-18 18:20:04 +08:00
Wei Zhu
4cae32842f chore: add packtracker back 2019-11-18 13:00:46 +08:00
orzyyyy
ce59719a55 fix: missing config file of circleci 2019-11-18 11:13:01 +08:00
orzyyyy
62b2ba38ee fix: adjust indent 2019-11-18 11:13:01 +08:00
orzyyyy
c34f9ea4b4 perf: use peaceiris/actions-gh-pages for deploy 2019-11-18 11:13:01 +08:00
depfu[bot]
eefa24b6fa Update stylelint to version 12.0.0 2019-11-17 23:09:36 +08:00
二货机器人
5ff193cf60 docs: 3.25.2 changelog (#19768)
* docs: 3.25.2 changelog

* fix link
2019-11-17 11:06:37 +08:00
Olivier Louvignes
103920e4f5 Add defaultFilteredValues to table columns (#18925) 2019-11-16 18:58:23 +08:00
afc163
91faa7e4cb 🎬 improve notification placement demo 2019-11-16 16:29:19 +08:00
afc163
5ecd32a83f site: 📝 Add GA event for opening in stackblitz 2019-11-16 16:15:00 +08:00
Wei Zhu
26b9e1f887 test: introduce codesandbox ci (#19721)
* introduce codesandbox ci

* set skipLibCheck temporarilly

* remove packtracker temporarilly

* debug env
2019-11-16 11:39:13 +08:00
Radomir Skrzepij
d744df5974 Fix Documentation for Menu API (#19757) 2019-11-16 02:00:56 +08:00
jiang
0cb5601527 fix: drawer footer fixed (#19751)
* fix footer fiexd

* fix test
2019-11-15 17:23:14 +08:00
Jelle de Jong
2f30c806a3 fix: Update NL-nl locales (#19734)
* Update NL-nl locales

* Fix for tests
2019-11-15 16:42:17 +08:00
骗你是小猫咪
4079f36340 Revert "fix: update Select type interface (#19730)" (#19733)
This reverts commit 8b705e3224.
2019-11-14 21:34:13 +08:00
cnjs
8b705e3224 fix: update Select type interface (#19730)
* fix: update Select type interface

* format: Select type interface
2019-11-14 16:21:20 +08:00
ShuYu Wang
68603366eb fix: add missing null option type (#19722)
See-also: https://ant.design/components/table/#components-table-demo-reset-filter
2019-11-14 10:18:03 +08:00
叶枫
dfe7fd3231 feat: code add stackblitz (#19714)
* feat: code add stackblitz

* fix: style

* Update site/theme/static/demo.less

Co-Authored-By: 偏右 <afc163@gmail.com>
2019-11-13 17:29:46 +08:00
Jack
326484465f fix: type interface SliderProps (#19713) 2019-11-13 14:34:09 +08:00
偏右
cedc956512 Update index.en-US.md 2019-11-13 10:54:36 +08:00
Abdullah700
807fea0447 fix[Style] Transfer (#19693) 2019-11-13 08:02:19 +08:00
Dean van Niekerk
af2dd379c2 Fixed typing issue in Table > filterDropdown (#19701) 2019-11-13 07:51:53 +08:00
depfu[bot]
41d1661627 Update @typescript-eslint/parser to version 2.7.0 (#19703) 2019-11-13 07:48:40 +08:00
Rustin
f1a582581f 改进 skeleton 首次加载数据使用场景描述 (#19700) 2019-11-12 22:43:50 +08:00
叶枫
f4051d8efc fix: fix upload error style (#19689)
* fix: fix upload error style

* feat: demo

* feat: test

* fix: tooltip
2019-11-12 21:45:32 +08:00
信鑫-King
f6af1c6adf Merge pull request #19669 from ant-design/fix-site-helmet-title
chore: react-helmet-async title ssr
2019-11-11 15:01:34 +08:00
ycjcl868
a1acc7942a upd: bisheng version 2019-11-11 14:31:53 +08:00
ycjcl868
d402582598 fix: react-helmet-async title ssr 2019-11-11 14:30:11 +08:00
二货机器人
b74d1bdd54 fix typo (#19665) 2019-11-11 11:52:30 +08:00
诸岳
8f52b8028b chore: Merge master branch and fix conflicts 2019-11-11 10:10:53 +08:00
诸岳
9dcaad0f88 Bump 3.25.1 2019-11-10 23:30:38 +08:00
诸岳
c2ff79470f docs: Add the changelog of 3.25.1 (#19657) 2019-11-10 23:28:33 +08:00
depfu[bot]
e116eea56f Update chalk to version 3.0.0 2019-11-10 18:06:33 +08:00
afc163
c6a7c44066 Merge branch 'depfu/update/npm/typescript-3.7.2' 2019-11-10 18:06:09 +08:00
afc163
91fcf98741 🐛 fix error for typescript@3.7.2 2019-11-10 18:05:43 +08:00
depfu[bot]
3afc432062 Update typescript to version 3.7.2 2019-11-10 08:59:21 +00:00
liuchao233
e42caa5869 translate Typography for pt_BR (#19651) 2019-11-10 16:30:32 +08:00
Stevche Radevski
52ab454715 feat: add a Macedonian translation (#19647) 2019-11-09 23:17:33 +08:00
二货机器人
451d01b082 fix: refactor collect tree key code logic (#19646)
* fix: collect tree key should support nest chldren

* fix logic

* update snapshot
2019-11-09 22:33:53 +08:00
afc163
0cf62f696d 🆙 upgrade rc-form and rc-animate for lifecyle warning
https://github.com/react-component/form/pull/355
https://github.com/react-component/animate/pull/82
https://github.com/ant-design/ant-design/issues/9792
2019-11-09 18:24:37 +08:00
afc163
499494caa4 chore: react-helmet => react-helmet-async
fix SideEffect(NullComponent) warning

https://github.com/readium/readium-desktop/issues/596
https://github.com/nfl/react-helmet/issues/465
https://github.com/nfl/react-helmet/issues/426
2019-11-09 18:24:37 +08:00
afc163
c9682fcd6e 📝 Add FAQ for ConfigProvider locale not working 2019-11-09 16:24:07 +08:00
liuchao233
4e669d465e feat: notification component support closeIcon props (#19618)
* notification component support closeIcon props

* update notification doc, change closeIcon support version to 3.26.0
2019-11-08 20:03:27 +08:00
偏右
5916582518 🐛 Fix Dropdown icon missing margin right (#19635) 2019-11-08 20:00:53 +08:00
dependabot-preview[bot]
1d4f240276 chore(deps-dev): bump @typescript-eslint/parser from 2.4.0 to 2.6.1 (#19630)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.4.0 to 2.6.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.6.1/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-08 18:11:11 +08:00
afc163
94c3978208 📝 fix English translation missing of site footer 2019-11-08 16:25:08 +08:00
偏右
8c23d8b9a2 🆙 upgrade rc-footer 2019-11-08 14:37:31 +08:00
Emerson Laurentino
be0fd703f7 removing getContainer fixed (#19233) 2019-11-08 10:24:53 +08:00
MinYuan
a35b6241eb Unify type declaration. (#19610) 2019-11-07 15:13:27 +08:00
yoyo837
9e27697e93 doc: Input.TextArea property allowClear add 'since', ref #19310 2019-11-07 11:38:36 +08:00
Jennie
948a69c75e fix: date range picker type interface (#19421) 2019-11-07 10:22:12 +08:00
偏右
dd8f57247f docs: 📝 fix doc of labelAlign in Form.Item (#19606) 2019-11-06 23:32:08 +08:00
Amumu
f38c7bb239 form item passing anyother attrs (#19599) 2019-11-06 23:30:41 +08:00
骗你是小猫咪
4ded5e6777 fix: Drawer content overflow when placement is top or bottom (#19506)
* fix: drawer content overflow

* update snapshots

* review change
2019-11-06 10:47:36 +08:00
afc163
98a3de1eb7 🎬 update descriptions demo 2019-11-06 10:42:10 +08:00
二货机器人
42592bafcf Merge pull request #19586 from ant-design/master
chore: Merge master into feature
2019-11-06 09:16:52 +08:00
afc163
48763bfa7c 🐛 fix Menu styles inside Dropdown 2019-11-05 20:18:48 +08:00
Amumu
e150cfc371 fix: extraCommonProps not work properly (#19572)
* fix extraCommonProps not work properly

* add test case
2019-11-05 18:32:57 +08:00
lxnxbnq
8cff912aec 🐛 fixed #19565 (#19568) 2019-11-05 13:26:39 +08:00
afc163
c083d13fc4 fix test cases 2019-11-05 01:59:14 +08:00
afc163
725f2fb731 🆙 upgrade some devDependencies 2019-11-05 01:59:14 +08:00
afc163
fd573acdec 🐛 Fix Table border missing in fixed columns 2019-11-05 01:58:56 +08:00
afc163
b697ef1213 🐛 Fix Table Column defaultSortOrder not working 2019-11-05 01:34:42 +08:00
afc163
0bdf682a80 🐛 Fix Table inifinite loop issue 2019-11-05 01:34:42 +08:00
yoyo837
715814291b remove labelAlign: PropTypes.string, 2019-11-04 16:48:44 +08:00
Amumu
39d452ca77 use menu icon less variable (#19553) 2019-11-04 16:47:26 +08:00
二货机器人
e88f0214dd docs: 3.25.0 changelog (#19549)
* docs: 3.25.0 changelog

* update snapshot

* update

* quota it
2019-11-04 14:36:02 +08:00
yoyo837
c1d55addf1 Revert "remove labelAlign: PropTypes.string"
This reverts commit 764960875d.
2019-11-04 13:05:02 +08:00
yoyo837
764960875d remove labelAlign: PropTypes.string 2019-11-04 13:01:50 +08:00
Amumu
187b10320b chore: Delete duplicate variables (#19547)
* Delete duplicate variables

* chore

* chore
2019-11-04 12:08:27 +08:00
Amumu
3402f656ad tuple FormLabelAlign (#19543) 2019-11-04 11:24:23 +08:00
二货机器人
15d8494cf2 Merge pull request #19544 from ant-design/feature-merge-master
chore: Feature merge master
2019-11-04 11:24:00 +08:00
信鑫-King
696f5600ec feat: input,select less vars (#19546) 2019-11-04 11:23:29 +08:00
zombiej
5bf96bbb51 merge master 2019-11-04 10:49:45 +08:00
Hossein Ahmadian-Yazdi
214458931d Gets the XMLHttpRequest Object in Onchange function (#19539) 2019-11-04 10:44:43 +08:00
chenshuai2144
0189244ebc fix: fix remove url 2019-11-03 18:14:06 +08:00
chenshuai2144
dc2ba553e7 doc fix layout breakpoints url 2019-11-03 18:14:06 +08:00
afc163
53efaa89a5 support Upload method 2019-11-03 12:37:48 +08:00
He Linming
3d8b9df423 fix: table does not automatically scroll to the top when change page size (#19465)
* 🐛 (Table): fix scrollToFirstRow

fix table does not automatically scroll to the top when change page size
close #19464

*  (Table): add test case for scrollToFirstRow

* 👌 (Table): change Trigger to .ant-select

Co-Authored-By: 骗你是小猫咪 <darryshaw@gmail.com>
2019-11-02 17:18:44 +08:00
Rustin
767d2d0638 feat: Add allowClear to TextArea (#19310)
* add allow clear to textarea

revert textarea md

refactor textarea css

fix textarea props bug

add test and update snapshot

update doc

add margin

refactor textarea to reuse fixControlledValue and setValue method

add clearable input to reuse code

refactor clearable input

finish refactor

refactor clearable input

refactor input and textArea

finish refactor

update test snapshots

fix input props bug

fix dom issue

fix textarea dom issue

fix textarea test bug

fix textarea dom issue

refactor code and fix textarea dom issue

fix input dom issue

fix typo error

update test snapshots

fix ci failed issues

adjust margin

* remove useless code fix ci failed issue

* fix textarea padding issue

* update snapshots

* fix padding issue
2019-11-01 18:19:29 +08:00
afc163
92caa2d02c docs: improve table demo description 2019-11-01 10:41:07 +08:00
Jack
82aa3cdc13 fix: remove the selected padding right when use allow clear (#19510) 2019-10-31 21:27:27 +08:00
Ender Lee
593cfe8950 fix(Upload): add interface field (#19485) (#19496) 2019-10-30 20:40:57 +08:00
wangweijun0418
d99d90b1fa Fix Menu menu collapsed in Chrome (#19476)
* Update index.less

修复margin重合样式问题,(次问题造成menu组件下拉不顺畅)

* Update index.less

解决margin重合问题,overflow方式会有副作用,采用padding解决margin重合现象。
2019-10-30 13:15:50 +08:00
afc163
2ee2cc3303 🐛 Fix DatePicker throw onEsc error
close #19461
2019-10-29 11:43:14 +08:00
Aymen Bouchekoua
13995bff02 Fix defaultPickerValue in WeekPicker (#19141) 2019-10-29 11:26:20 +08:00
David Broder-Rodgers
654a675532 docs: Responsive fixes for examples pages (#19448)
* Remove fixed width from cascader examples

* Replace fixed vertical slider example height with clearfix div

* Replace fixed width on TreeSelect examples with percentage width

* Update test snapshots

* Use inline-block rather than float left for vertical slider example
2019-10-29 11:24:06 +08:00
Rustin
fdf38f41d7 fix: modify textarea resize demo defaultValue to english (#19348)
* modify textarea defaultValue to english

* update test snapshots
2019-10-29 10:08:27 +08:00
只捱宅
c0edbd3362 Merge pull request #19456 from ant-design/master
chore: Merge master into feature
2019-10-28 17:29:58 +08:00
afc163
ff382abc51 💄 refactor alert code for better semantic
close #19426
2019-10-28 15:48:38 +08:00
afc163
f8a3da5f4a 🐛 Fix Checkbox not aligned center in some cases
close #16695
close #19450
2019-10-28 15:26:49 +08:00
afc163
1d1e197527 🐛 Fix Icon Button align issue
close #19392
2019-10-28 15:26:06 +08:00
Aaron Cawte
2b46a232db Navigation components doc tweaks (#19447)
* Documentation - Affix Component

* Documentation - Dropdown component

* Documentation - Menu component

* Documentation - Pagination component

* Documentation - PageHeader component

* Documentation - Steps component
2019-10-28 09:09:22 +08:00
陈帅
d5c3d578af Merge branch 'master' into feature 2019-10-27 22:28:59 +08:00
陈帅
c675354744 fix eslint error 2019-10-27 22:05:47 +08:00
陈帅
b4280cb361 bump 3.24.3 2019-10-27 21:47:04 +08:00
陈帅
f4d114f0c3 Merge branch 'master' into feature 2019-10-27 21:39:17 +08:00
陈帅
2590c615ed docs: changelog for 3.24.3 (#19436)
* changelog for 3.24.3

* fix review warning

* fix review warning
2019-10-27 21:34:04 +08:00
Rustin
17ad782dfc refactoring: refactor search code (#19441)
* refactor search code

* refactor bool expression no implicit cast
2019-10-27 11:43:48 +08:00
afc163
99d8f07607 🐛 Fix sort order of columns in render
array value of columns

close #19398
2019-10-27 00:20:24 +08:00
Amumu
a31748d0f8 feat: Add some code owner (#19414)
* feature trial: add owner

* add default code owner

* no default file owner
2019-10-27 00:19:53 +08:00
只捱宅
802a4a117f fix: lint (#19434) 2019-10-26 11:00:15 +08:00
He Linming
7691047882 fix: Modal icon position while no title (#19419)
* 🐛 fix Modal icon position

close #19389
not render title when Modal title is undefined.

*  (Modal): add test for modal without title
2019-10-26 10:31:58 +08:00
zhangzh
670fbe3843 docs: add "maxLength" property to Input Doc 2019-10-25 16:20:18 +08:00
+v
bf13a34a71 fix: disabled cursor (#19403)
* fix: disabled cursor

* style: fix
2019-10-25 11:37:30 +08:00
lewis liu
f1bf9eb3bc docs:Use tensorflow.js to predict icon (#19411)
* docs:use tfjs to predict icon

* style:Expected blank line between class members

* bugfix: remove useless isMounted

* style:Get patch fixes within a minor version
2019-10-25 11:30:55 +08:00
Aaron Cawte
693d5a1434 General components doc tweaks (#19416)
* Documentation - Button Component

* Documentation - Icon Component

* Documentation  - Typography component
2019-10-25 09:56:30 +08:00
Amumu
d2a8a10667 chore: 📝 add CODEOWNERS file (#19410) 2019-10-24 20:56:56 +08:00
Aidin
d5ad7d7c2f update Types 2019-10-24 14:55:48 +08:00
He Linming
2761460c86 style: add @modal-header-color variable (#19385)
* 💄 add @modal-header-color variable

close #19358

* 👌 change variable name
2019-10-24 10:36:59 +08:00
Anawin W
06ec0391f8 feat: Add missing translations in Thai (th_TH) locale (#19378)
* Add missing translations in th_TH locale

* Snapshot updated
2019-10-23 22:29:15 +08:00
信鑫-King
d06b1fa15e docs: practical projects using Umi UI (#19240)
* 📝 practical projects using Umi UI

* 📝 docs

* 📝 docs

* 📝 projects doc
2019-10-23 18:00:15 +08:00
DiamondYuan
c9c2d5a256 Feature avatar icon (#19368)
* feat: icon of avatar support ReactNode

* docs: update document of Avatar
2019-10-23 15:52:08 +08:00
偏右
4fd5dda8d5 Merge pull request #19366 from ant-design/master
chore: Merge master into feature
2019-10-23 14:44:58 +08:00
afc163
0e4b90c52f increase code cov 2019-10-23 11:55:42 +08:00
afc163
f1cd910b4e update snapshots 2019-10-23 11:55:42 +08:00
afc163
0604a09590 update demo and test case 2019-10-23 11:55:42 +08:00
afc163
b882b8dd2f 🐛 Fix non-boolean attribute and unique key warning
close #19303
close #19354
2019-10-23 11:55:42 +08:00
Demétrius
cef820f7a6 feat: Add tag downloadFile in all languages (#19361) 2019-10-23 11:05:21 +08:00
二货机器人
6236537d1d chore: Temporary lock eslint parser version (#19347) 2019-10-22 14:15:26 +08:00
二货机器人
25788e69a8 omit withstore (#19343) 2019-10-22 11:54:03 +08:00
afc163
884031afcc fix eslint console warning 2019-10-22 11:47:09 +08:00
afc163
b919c23d08 🐛 Fix small table bottom border radius issue
https://github.com/ant-design/ant-design/issues/19287#issuecomment-544368967
2019-10-22 11:16:39 +08:00
lxnxbnq
bde17425a0 fix(#11119): fix Transfer listStyle support function callback (#19330)
* fix(#11119): fix Transfer listStyle support function callback

* fix(#11119): fix Transfer listStyle support function callback
2019-10-22 11:05:39 +08:00
偏右
b770db4330 Update CHANGELOG.zh-CN.md 2019-10-21 20:27:41 +08:00
偏右
bb7eab6544 Update CHANGELOG.zh-CN.md 2019-10-21 20:23:59 +08:00
Sagar Jain
25927c6a41 Improve typing of UploadFile interface
UploadFile interface made generic type so that a user can define a strongly typed response object if needed
2019-10-21 20:11:46 +08:00
偏右
10bbf1fe0f Merge pull request #19321 from ant-design/master
chore: sync master to feature
2019-10-21 15:15:32 +08:00
afc163
6b74a1e944 update table snapshot 2019-10-21 14:28:16 +08:00
zombiej
559e56c7f8 fix: Tree shaking should works on withContext 2019-10-21 13:38:38 +08:00
afc163
9af3888395 🐛 fix Menu in Dropdown submenu selected style
close #19264
2019-10-20 19:26:03 +08:00
afc163
185d2c41e8 🐛 fix small table border radius issue
close #19287
2019-10-20 19:12:59 +08:00
Rustin-Liu
a5d2b8542c add commit lint action description 2019-10-20 16:45:34 +08:00
afc163
c6efe8c229 add test cases 2019-10-20 15:01:27 +08:00
afc163
0d7d837c3f 🐛 fix wrong responsive gutter
close #19307
2019-10-20 15:01:27 +08:00
afc163
0cadae921a 💄 format getGutter code style 2019-10-20 15:01:27 +08:00
afc163
78a1427ec0 📝 fix home page animation 2019-10-20 15:00:50 +08:00
偏右
cbdbb6dd30 Merge pull request #19304 from ant-design/master
chore: Merge master into feature
2019-10-20 12:27:12 +08:00
afc163
c13b475947 📝 update changelog 2019-10-19 23:39:10 +08:00
afc163
a92c1476e3 📝 fix wrong changelog 2019-10-19 23:38:26 +08:00
afc163
ee6f2d34dd release 3.24.2 2019-10-19 23:04:09 +08:00
二货机器人
b9b239ec08 test: add test case for ref test (#19302)
* add test case for ref test

* update test case
2019-10-19 22:48:13 +08:00
Pornpavee Seri-umnuoy
e7ebf857bd fix(#18280): add type [Moment.moment, undefined] to RangePickerValue (#19300) 2019-10-19 14:48:41 +08:00
信鑫-King
cd6ff75ab2 test: official site checker before publish (#19247)
* tweak: official site checker before publish

* feat: check site files

* fix: diff logic

* fix: replace

* feat: add site jest test

* fix: test case

* fix: test

* feat: static server test

* Update check-site.js

* feat: en-US index

* fix: lint
2019-10-18 21:27:36 +08:00
afc163
8a715d0991 📝 🎬 improve grid demo and documentaion 2019-10-18 18:50:33 +08:00
afc163
13d219c439 🐛 Fix Table scroll.x max-content not working 2019-10-18 18:34:26 +08:00
wleven
63feb6860a Fix Select Mode Type 2019-10-18 16:28:48 +08:00
wleven
9cfc151813 Fix Select Mode Type 2019-10-18 16:28:48 +08:00
wleven
53c55ceaad Fix Select Mode Type 2019-10-18 16:28:48 +08:00
Olaniyi Philip Ojeyinka
59ec7f3b8f corrected the typographical error of word 'case' to 'care' (#19290)
fix typo
2019-10-18 16:26:07 +08:00
shao
b280b633aa chore: fix compile fail when use cnpm installed 2019-10-18 13:38:56 +08:00
二货机器人
40aca57453 chore: Remove React function polyfill (#19279)
* chore: Remove polyfill

* add more skip
2019-10-18 11:29:34 +08:00
David Broder-Rodgers
3f037b6d71 Improve types for customRequest prop on Upload component 2019-10-18 11:04:15 +08:00
David Broder-Rodgers
3eead25bea Fix typos in en-US contributing guide (#19277) 2019-10-18 07:09:21 +08:00
叶枫
a31deb7f5d fix: 修复点击下载按钮会执行预览方法 (#19268)
* fix: 修复点击下载按钮会执行预览方法

* chore: test

* chore: test
2019-10-18 00:02:04 +08:00
Rayron Victor
07ca5e458b Fix: long author name breaks on small screen (#19272)
* Fix: long author name breaks on small screen

* Update index.less
2019-10-18 00:00:09 +08:00
二货机器人
5bd3d4a33b docs: Update 3.24.1 changelog (#19270) 2019-10-17 20:11:59 +08:00
二货机器人
0f83e0a4ee fix: should work in old version react (#19262)
* fix: should work in old version react

* update ci config

* add version log
2019-10-17 16:01:46 +08:00
Hsuan Lee
d6c5e5358e docs: fix page header API (#19257) 2019-10-17 11:34:16 +08:00
骗你是小猫咪
f2e541ade5 refactor: improve typescript module declare (#19254)
* refactor: improve typescript declare

* remove rc-progress  declare

* remove rc-drawer  declare

* improve site antd module resolve path
2019-10-17 10:24:34 +08:00
二货机器人
7d32f99283 fix: Add missing typescript define (#19251)
* fix: Add missing typescript define

* remove withStore

* fix lint
2019-10-16 22:12:52 +08:00
Wei Zhu
5676ea22d2 docs: update changlog 2019-10-16 15:02:21 +08:00
Wei Zhu
71e0f9b103 docs: update changelog 2019-10-16 14:59:13 +08:00
Wei Zhu
de9635efd3 docs: add 3.24.0 changelog 2019-10-16 14:19:57 +08:00
Wei Zhu
04f333b4b6 Revert "docs: add 3.24.0 changelog"
This reverts commit dee4b25e8c.
2019-10-16 14:13:31 +08:00
Wei Zhu
99addfb985 bump 3.24.0 2019-10-16 14:00:27 +08:00
Wei Zhu
3f38861fb8 Merge pull request #19236 from ant-design/release-3.24.0
Add 3.24.0 changelog
2019-10-16 13:59:46 +08:00
Wei Zhu
dee4b25e8c docs: add 3.24.0 changelog 2019-10-16 11:20:13 +08:00
Jingsong Gao
ab349700ad fix: fix cascader placeholder internationalization (#19227)
* fix: fix cascader placeholder

* Update index.tsx
2019-10-15 19:23:26 +08:00
yoyo837
fb2bafbfdc upgrade snapshot 2019-10-15 19:13:38 +08:00
yoyo837
a9d7178c2b upgrade snapshot 2019-10-15 18:10:04 +08:00
yoyo837
cd3d9efd9f Merge branches 'add-args-unsorting' and 'master' of github.com:ant-design/ant-design 2019-10-15 17:52:59 +08:00
afc163
8e2b2470b2 update snapshots 2019-10-15 17:47:10 +08:00
afc163
59f231ff92 💄 fix menu style broken in dropdown
close #19145
2019-10-15 17:47:10 +08:00
yoyo837
5a07b85d9e upgrade fires change event test case 2019-10-15 16:33:37 +08:00
yoyo837
0522d55f26 snapshot 2019-10-15 16:33:17 +08:00
骗你是小猫咪
8ffaeb8cba Docs: upload with aliyun oss (#19054)
* docs: upload with aliyun oss

* add before upload relate data

* test: lint fail

* test: update Snapshot

* docs: review change

* test: lint fail

* handle oss policy expired

* fix: lint fail

* optimize docs

* test: lint fail

* test: upload snapshot
2019-10-15 16:14:05 +08:00
Dmitriy
a2f28f0ca7 💄 add @typography-title-margin-top and @typography-title-margin-bottom (#18746)
* add: Typography mixins. add: Created typography variables (margin, font-weight). moved: Typography internal variables

* fix: heding margin moved: prefix variable out of default.less

* fixed: circleci

* 🗑 Remove @typography-title-margin-left and @typography-title-margin-right

* 🗑 Remove unused vars
2019-10-15 16:13:39 +08:00
yoyo837
59685afeeb Provide additional args for onChange sorter when unsorting 2019-10-15 16:04:38 +08:00
Wei Zhu
a72f43b2c1 Merge pull request #19206 from ant-design/feature
Merge features
2019-10-15 14:36:41 +08:00
afc163
0b1894e83a 📝 deprecated info of autosize 2019-10-15 13:50:14 +08:00
只捱宅
bae2752be3 ci: fix node version of github action (#19216) 2019-10-15 12:27:05 +08:00
陈帅
338018eba3 feat: Pageheader new style and props (#19100)
* pure page header style

* add type props

* add prue demo

* add config provider doc

* fix lint

* fix lint error

* change pure to ghost

* fix test

* default ghost is true

* fix review style

* fix review warning

* use online style

* remove defualt and remove comment

* add test
2019-10-15 11:46:12 +08:00
yoyo837
6db3711876 upgrade table demo : onChange add args extra 2019-10-15 10:00:16 +08:00
afc163
c93f54c7f1 📝 fix typo link 2019-10-14 20:34:02 +08:00
afc163
51f9b95c1b 📝 Add remax to Footer 2019-10-14 17:51:15 +08:00
afc163
37e5ce4f6a 💄 fix promote link style in small screen 2019-10-14 17:35:36 +08:00
afc163
7366afa151 🆙 upgrade pretty-quick 2019-10-14 16:58:14 +08:00
afc163
cfcdf2fd5f 📝 Add promote link in home page 2019-10-14 16:10:32 +08:00
yoyo837
453c01aaae tuple for column fixed prop types 2019-10-14 16:10:22 +08:00
二货机器人
e75fa039ef refactor: Use CSSMotion (#19205)
* refactor: Use CSSMotion

* fix lint

* update rc-menu deps

* fix test case

* clean up

* more test case

* fix lint
2019-10-14 15:01:16 +08:00
willc001
4e1bbccd54 refactor: add @form-item-label-colon-margin-{right,left} (#15478) 2019-10-14 14:52:23 +08:00
二货机器人
8bb4613bff Merge pull request #19202 from ant-design/master
chore: master merge feature
2019-10-14 11:19:20 +08:00
zombiej
04a27deb2b merge master 2019-10-14 10:53:35 +08:00
偏右
f7c37e5509 💄 menu inlineIndent should be number 2019-10-12 12:01:38 +08:00
kavin
fc697007c5 fix(test case): fix test case for directory tree component 2019-10-12 10:51:20 +08:00
kavin
e161a2ae76 fix(#19132): add test file 2019-10-12 10:51:20 +08:00
kavin
a0851cdd34 fix(#19132): remove console log 2019-10-12 10:51:20 +08:00
kavin
1884c12a81 fix(#19132): fix component DirectoryTree 2019-10-12 10:51:20 +08:00
kavin
7c6731021d fix(#19132): fix component tree defaultExpandAll does not work when using treeData 2019-10-12 10:51:20 +08:00
kavin
5fff041e8a fix(#19132): fix component tree defaultExpandAll does not work when using treeData 2019-10-12 10:51:20 +08:00
Liming Jin
311a6c0917 fix: replace autosize with autoSize 2019-10-11 23:39:30 +08:00
ycjcl868
e43b808cc4 chore: docs cases Umi UI image compress 2019-10-11 18:25:51 +08:00
ycjcl868
9cbc090a9a 📝 en docs 2019-10-11 18:07:48 +08:00
ycjcl868
6ab74d9d7e 📝 Umi UI cases 2019-10-11 18:07:48 +08:00
afc163
fb5d709ccd 📝 fix scaffold.ant.design link typo 2019-10-11 12:22:59 +08:00
Gabriele Petrioli
3ac716d808 fix: keep className given to expandIcon in Collapse component (#19160) 2019-10-11 10:23:41 +08:00
shaodahong
78b1f90e51 docs: link related issue of form initialValue option 2019-10-10 22:51:25 +08:00
afc163
d582ba351b update snapshot 2019-10-10 11:10:05 +08:00
vaytsel
d8526f43f6 Update theme.md 2019-10-10 10:58:45 +08:00
afc163
16572711a3 📝 update apple-touch-icon-precomposed 2019-10-10 10:47:05 +08:00
Jason Kurian
0674bb974f docs: document drawer default height (#19144) 2019-10-10 10:20:40 +08:00
kermolaev
ba971b295b There was icon wrapper on 100% width in ie11. https://caniuse.com/#feat=css-initial-value 2019-10-09 22:29:48 +08:00
Rodrigo Ehlers
36a7621bb3 add clear-icon click 2019-10-09 22:29:13 +08:00
afc163
75d97c8bf1 📝 update apple touch icon 2019-10-09 21:20:20 +08:00
afc163
535d4afc2d 📝 improve site details 2019-10-09 20:57:00 +08:00
shao
41bbcfe180 docs: probably better phrased as Table component 2019-10-09 14:21:14 +08:00
shaodahong
b41bdb0433 fix: update rc-slider handle move exception 2019-10-09 11:40:37 +08:00
Leon Koole
4aa81e576c Clear up confusing language about dataSource keys 2019-10-08 22:53:16 +08:00
二货机器人
7922090eaa fix: TreeShaking (#19115) 2019-10-08 14:45:17 +08:00
二货机器人
b0c90f4b06 fix: description demo update (#19113) 2019-10-08 10:17:08 +08:00
afc163
a877db72ef Add drawerStyle and headerStyle
close #18975
2019-10-07 19:56:57 +08:00
orzyyyy
718a86d56b chore: rename prop specialTriggerStyle to zeroWidthTriggerStyle 2019-10-07 18:03:34 +08:00
orzyyyy
4a29aaaf6b docs: update 2019-10-07 18:03:34 +08:00
orzyyyy
5e4697e38b test: update cases 2019-10-07 18:03:34 +08:00
orzyyyy
95710af9ef feat(Layout): add prop specialTriggerStyle to controll the style of zeroWidthTrigger 2019-10-07 18:03:34 +08:00
afc163
f04c8a61eb 💄 improve buttons style in home page 2019-10-06 15:08:54 +08:00
afc163
140adc6015 🆙 upgrade bisheng-plugin-antd 2019-10-06 15:08:54 +08:00
偏右
391aab44e8 Merge pull request #19103 from ant-design/merge-to-feature
chore: merge master to feature
2019-10-06 12:09:59 +08:00
orzyyyy
c4283e4fff test: update snapshots for rc-upload bump to 2.8.0 2019-10-06 07:18:21 +08:00
orzyyyy
54cf1a924d fix: lint 2019-10-06 07:17:52 +08:00
orzyyyy
3ab6c48640 chore: merge master to feature 2019-10-06 06:50:04 +08:00
afc163
95c41774ee docs: 📝 changelog for 3.23.6 2019-10-05 21:55:53 +08:00
afc163
2a399bfc32 🆙 upgrade preact 2019-10-05 21:44:02 +08:00
afc163
634c202077 update snapshots 2019-10-05 18:02:16 +08:00
afc163
47dee4c7d7 fix eslint problems 2019-10-05 18:02:16 +08:00
dependabot-preview[bot]
8ab77d21df chore(deps-dev): bump logrocket-react from 3.0.1 to 4.0.0
Bumps [logrocket-react](https://github.com/LogRocket/logrocket-react) from 3.0.1 to 4.0.0.
- [Release notes](https://github.com/LogRocket/logrocket-react/releases)
- [Changelog](https://github.com/LogRocket/logrocket-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/LogRocket/logrocket-react/compare/beta-3.0.1...v4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-03 17:32:14 +08:00
信鑫-King
0a09b3b008 tweak: site title unescape 2019-10-01 23:18:15 +08:00
二货机器人
4680ddc009 fix: Typography warning for ref error (#19074)
* Revert "fix: Typography funtion compoent use Ref console log warning (#19066)"

This reverts commit 3d378f2fd8.

* fix: Typography warning for ref

* not crash on react 15

* still use class if react15

* fix ts define

* clean up

* react 15 lock ref obj

* Use rc-util findDOMNode instead
2019-10-01 01:06:09 -05:00
骗你是小猫咪
3d378f2fd8 fix: Typography funtion compoent use Ref console log warning (#19066) 2019-09-30 19:37:41 +08:00
啸生
71b53b7175 master to feature (#19062)
*  increase upload test cov

* chore: replace resizeObserver with `rc-resize-observer` (#19057)

* replace resizeObserver with rc-resize-observer

* fix affix lint

* fix es lint

* changelog (#19056)

* Release 3.23.5
2019-09-30 10:31:36 +08:00
ikobe
e3273bb54e Release 3.23.5 2019-09-29 20:10:56 +08:00
啸生
ba7ddfa046 changelog (#19056) 2019-09-29 20:02:02 +08:00
二货机器人
e07bba91fa chore: replace resizeObserver with rc-resize-observer (#19057)
* replace resizeObserver with rc-resize-observer

* fix affix lint

* fix es lint
2019-09-29 04:56:56 -05:00
afc163
e5aea71b99 increase upload test cov 2019-09-29 14:35:21 +08:00
只捱宅
dc0dfea201 Merge pull request #19049 from ant-design/master
chore: Merge master into feature
2019-09-28 19:27:19 +08:00
afc163
916c0659bd increase Table test coverage 2019-09-28 19:11:10 +08:00
afc163
fb913f4f47 💄 fix lint 2019-09-28 19:11:10 +08:00
afc163
e1a4f2891e 🐛 Fix Table filter submenu checkbox margin
https://user-images.githubusercontent.com/507615/65814464-a5c6c000-e214-11e9-8085-2c6fb1f5c6f2.png
2019-09-28 19:11:10 +08:00
afc163
d41b5be377 increase Table test coverage 2019-09-28 19:11:10 +08:00
afc163
66ca4a8b25 more test cases 2019-09-28 19:11:10 +08:00
afc163
650d44e8a7 🐛 fix React.createElement undefined 2019-09-28 19:11:10 +08:00
afc163
bbc8800cb8 optimize Table components compare logic 2019-09-28 19:11:10 +08:00
afc163
3acbc941a6 🔨 react-lifecycles-compat for Table 2019-09-28 19:11:10 +08:00
afc163
3f7b7dedd6 💄 improve code style 2019-09-28 19:11:10 +08:00
kristof0425
18017d6ea5 fix(Table): correct lint errors 2019-09-28 19:11:10 +08:00
kristof0425
3274c55bdf refactor(Table): make row work like a class property 2019-09-28 19:11:10 +08:00
kristof0425
2875933c99 fix(Table): prevent reusing row from previous render 2019-09-28 19:11:10 +08:00
kristof0425
2228e91b01 refactor(Table): move filter updating to getDerivedStateFromProps 2019-09-28 19:11:10 +08:00
kristof0425
4cc5fcdb24 refactor(Table): move columns to state to set in getDerivedState 2019-09-28 19:11:10 +08:00
kristof0425
948d0bd7bb fix(Table): move rowSelection logic to getDerivedStateFromProps 2019-09-28 19:11:10 +08:00
kristof0425
8a60e19b8e fix(Table): rm commented line 2019-09-28 19:11:10 +08:00
kristof0425
8bae8bf27d refactor(Table): move createComponents outside of class, eliminate cWRP 2019-09-28 19:11:10 +08:00
kristof0425
1d5bd4a7aa fix(Table, SelectionCheckboxAll): add eslint comment 2019-09-28 19:11:10 +08:00
kristof0425
0be5e334e4 refactor(Table): rename cWRP to UNSAFE_cWRP 2019-09-28 19:11:10 +08:00
绯一
8219438ecd Fix/detect antd button by static (#19045)
* fix: detect antd button by children.type.[staticProperty] instead of same class for HOC case

* fix: chore
2019-09-28 13:52:59 +08:00
shaodahong
5728763dcc fix: IE11 syntax error 2019-09-28 12:58:22 +08:00
绯一
049799ed0f fix: detect antd button by children.type.[staticProperty] instead of same class for HOC case (#19042) 2019-09-28 10:20:47 +08:00
afc163
b536643f76 add test case for Collapse 2019-09-28 00:10:11 +08:00
afc163
49ecf9b738 add more test cases for DatePicker 2019-09-27 14:56:55 +08:00
二货机器人
7ae663da6d fix: ssr should not render string at first (#19029)
* fix: ssr should not render string at first

* update snapshot
2019-09-27 01:17:42 -05:00
ahauzq
49c9ee40b4 Input.tsx的otherProps为什么不去掉size
我觉得你们的otherProps推导竟然是any,所以不写size没报错
2019-09-27 02:16:45 +08:00
afc163
46d0ff3e00 update snapshot 2019-09-26 14:03:17 +08:00
fkysly
e9b0c29f55 Rename algin.md to align.md 2019-09-26 14:02:14 +08:00
swillis12
2c864b9bc6 Add sortColumn to title render (#19012)
Update docs

Update TS interface

Add null

Fix lint error
2019-09-26 14:02:08 +08:00
MrHeer
90a77c0f02 👌 update README 2019-09-26 12:14:28 +08:00
MrHeer
4a5b0e1669 Flipping table to automatically scroll to the top
👌 apply it in handleFilter and toggleSortOrder
👌 ref instead of findDOMNode
 update test for scroll to first row

close #18623
2019-09-26 12:14:28 +08:00
afc163
5c10cf880b add more test cases for Tranfer 2019-09-26 12:14:00 +08:00
Lyndon001
c387fdc0c6 Update values.en-US.md 2019-09-26 10:27:03 +08:00
Lyndon001
7ce8235194 Update values.en-US.md 2019-09-26 10:26:00 +08:00
偏右
7961bb335c 🗑 Remove useless prop searchValue (#19003)
from typescript and documentation

close #18847
2019-09-25 05:03:41 -05:00
afc163
913c5bbc47 🐛 Fix Button.Group large="size" icon only style
close #18993
2019-09-25 14:36:59 +08:00
Wendell
53b3c5af96 support updating message content with a unique key
close #18621

fix: fix demo

docs: change key api version number

docs: fix docs
2019-09-25 12:30:50 +08:00
二货机器人
5aa32a3f17 chore: Put origin img size to fill the box (#18990) 2019-09-24 22:33:35 -05:00
afc163
a40b54aaa1 update select test snapshot 2019-09-25 11:31:40 +08:00
afc163
efa82940ba react-router@5.1 cannot work in React 15
https://github.com/ReactTraining/react-router/releases/tag/v5.1.0
2019-09-25 11:31:40 +08:00
afc163
5004a925c0 📝 Add instruction for dropdownRender 2019-09-25 11:31:40 +08:00
afc163
0edbec10db 📝 Add recommendation for Visualization 2019-09-25 11:31:40 +08:00
Hsuan Lee
81793758df docs: fix API link 2019-09-25 11:31:40 +08:00
afc163
61fc38901f 🔧 update typescript definites of third libs 2019-09-25 11:31:40 +08:00
afc163
0bc0a9de48 🆙 upgrade stylelint-config-prettier 2019-09-25 11:31:40 +08:00
orzyyyy
d85f6c8aa1 feat(actions): Automatic Rebase 2019-09-25 11:31:40 +08:00
只捱宅
b83f432180 Delete publish-to-github-package.yml 2019-09-25 11:31:40 +08:00
afc163
05bf1adbe8 💄 improve home page button style 2019-09-25 11:31:40 +08:00
MrHeer
fd31d91a9b 👌 add use case 2019-09-25 11:31:40 +08:00
MrHeer
4cca77eab7 🐛 fix Tree switcherIcon prop not working when showLine
close #18810
2019-09-25 11:31:40 +08:00
sosohime
e511e50655 fix: TreeSelect removeIcon and clearIcon not working (#18949)
* add tree-select async demo

* TreeSelect支持clearIcon和removeIcon

* remove docs and demo

* run test

* clear code

* add ui test
2019-09-25 11:31:40 +08:00
afc163
df7e366563 📝 Add recommendation for vedio components 2019-09-25 11:31:40 +08:00
afc163
6d7a87e7e0 update select test snapshot 2019-09-25 11:16:10 +08:00
afc163
d3b8bfa511 react-router@5.1 cannot work in React 15
https://github.com/ReactTraining/react-router/releases/tag/v5.1.0
2019-09-25 11:03:58 +08:00
afc163
2de1a15da9 📝 Add instruction for dropdownRender 2019-09-24 22:37:55 +08:00
sosohime
a2edbc326f feat: Grid support row vertical gutter (#18979)
* row vertical gutter

* run test
2019-09-24 21:44:20 +08:00
afc163
c9a30ef766 📝 Add recommendation for Visualization 2019-09-24 19:08:51 +08:00
Hsuan Lee
136387fdb7 docs: fix API link 2019-09-24 18:16:04 +08:00
afc163
acbd1a9d28 🔧 update typescript definites of third libs 2019-09-24 14:42:58 +08:00
afc163
d3e01385b5 🆙 upgrade stylelint-config-prettier 2019-09-24 12:31:50 +08:00
orzyyyy
b87fc9526a feat(actions): Automatic Rebase 2019-09-24 10:34:59 +08:00
只捱宅
bd8d6d3e98 Delete publish-to-github-package.yml 2019-09-23 20:55:23 +08:00
afc163
d0d181b6b8 💄 improve home page button style 2019-09-23 19:40:46 +08:00
MrHeer
75d5dff1f9 👌 add use case 2019-09-23 18:50:10 +08:00
MrHeer
0e52f9a891 🐛 fix Tree switcherIcon prop not working when showLine
close #18810
2019-09-23 18:50:10 +08:00
sosohime
02ed4bd6b1 fix: TreeSelect removeIcon and clearIcon not working (#18949)
* add tree-select async demo

* TreeSelect支持clearIcon和removeIcon

* remove docs and demo

* run test

* clear code

* add ui test
2019-09-23 18:49:13 +08:00
afc163
98e715fe3f 📝 Add recommendation for vedio components 2019-09-23 17:05:56 +08:00
偏右
a5efb30b83 Merge pull request #18952 from ant-design/master-for-merge
chore: merge master into feature
2019-09-23 16:06:48 +08:00
偏右
9e9abfdc79 Merge branch 'feature' into master-for-merge 2019-09-23 15:33:43 +08:00
handy
133577f45e RowAligns add 'stretch' value 2019-09-23 12:21:42 +08:00
sosohime
9f78fd093a feat: Breadcrumb support data-* and aria-* attributes (#18941)
* add tree-select async demo

* breadcrumb support data against

* lint fix

* add ui test

* update ui test

* update ui test
2019-09-23 11:52:29 +08:00
偏右
c9cecde2e8 🆙 upgrade rc-footer 2019-09-23 11:39:08 +08:00
Zhuo Chen
17816b963e feat: upload should not be aborted until handleRemove is resolved as true (#18937) 2019-09-23 10:16:09 +08:00
只捱宅
acce303817 fix: skip postinstall of antd-tools (#18933) 2019-09-21 16:11:11 +08:00
二货机器人
34c220acf1 docs: add 3.23.4 changelog (#18932)
* add 3.23.4 changelog

* update desc

* adjust related desc
2019-09-21 15:04:02 +08:00
Amumu
25bdb78410 fix: Alert add css word break (#18929)
* add word-wrap: break-word;

* fix lint
2019-09-21 09:48:46 +08:00
信鑫-King
8b4bd0c23d Merge pull request #18922 from ant-design/fix-site-title-char
tweak: site specialChar encoding
2019-09-20 17:32:29 +08:00
ycjcl868
1e90eb1264 fix: site specialChar encoding 2019-09-20 17:05:13 +08:00
plainnany
068556c029 docs: update props data description for Upload (#18915) 2019-09-20 15:45:32 +08:00
Thomas Ladd
3e4fd43a07 table: Correct onRow event handlers to receive a MouseEvent instead of SyntheticEvent 2019-09-20 13:06:55 +08:00
Wensheng Xu
1d8c6f8d82 fix: Disabled input should not trigger the action of suffix part #18889 2019-09-20 13:06:25 +08:00
sosohime
3e2cd50c87 docs: Add TreeSelect async demo (#18906)
* add tree-select async demo

* update description

* pass jest
2019-09-20 12:58:43 +08:00
afc163
974fb1b96c add test case for #18825 2019-09-20 00:07:59 +08:00
afc163
54ffa2cea6 🐛 Fix Menu lost state when collapsed to 0px
close #18825
2019-09-20 00:07:59 +08:00
Lyndon001
ca6e2f36c8 Update overview.zh-CN.md 2019-09-19 16:00:51 +08:00
afc163
020711ddd6 🆙 upgrade rc-footer 2019-09-19 15:55:22 +08:00
afc163
fa880907dd 💄 footer style details 2019-09-19 15:55:22 +08:00
afc163
d9b058248d 🎨 color picker in footer 2019-09-19 15:55:22 +08:00
afc163
16dff49e46 💄 transfer footer to rc-footer 2019-09-19 15:55:22 +08:00
He Linming
a5bb161bb0 💄 add @page-header-back-color less variable (#18887)
close #18869
2019-09-19 09:47:16 +08:00
orzyyyy
88cf4d5b7f docs: update badge for zh_cn 2019-09-18 22:02:25 +08:00
orzyyyy
0a284ca74d docs: update badge for next version of npm 2019-09-18 22:02:25 +08:00
信鑫-King
6803b89506 Merge pull request #18884 from ant-design/restore-site-intl
restore: react-intl intl polyfill
2019-09-18 08:56:53 -04:00
ycjcl868
bcbc1e2ac2 restore: react-intl intl polyfill 2019-09-18 20:55:00 +08:00
只捱宅
a5b4252488 fix: correct registry-url (#18851)
* fix: correct registry-url

* chore: test for publish

* chore: test for publish

* chore: test for publish

* fix: publish by antd-tools

* chore: remove useless command

* fix: remove version check

* Revert "fix: remove version check"

This reverts commit 18877f5e5f.

* chore: remove debug action

* chore: remove filter
2019-09-18 20:46:08 +08:00
信鑫-King
69d079e0ed Merge pull request #18882 from ant-design/fix-intl-ssr-site
fix: site ssr react-intl
2019-09-18 07:58:24 -04:00
ycjcl868
6d9d04db29 upd: devDeps 2019-09-18 19:21:16 +08:00
dependabot-preview[bot]
da760b461f chore(deps-dev): update cross-env requirement from ^5.2.0 to ^6.0.0
Updates the requirements on [cross-env](https://github.com/kentcdodds/cross-env) to permit the latest version.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v5.2.0...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-18 19:09:31 +08:00
ycjcl868
33afa7462c 📝 comment 2019-09-18 19:09:21 +08:00
ycjcl868
9515cef21d fix: site ssr react-intl 2019-09-18 19:07:17 +08:00
偏右
1f7d5066c2 📍 fix GitHub actions badge 2019-09-18 12:19:31 +08:00
偏右
1ae54f5432 📍 Add GitHub actions badge 2019-09-18 12:17:34 +08:00
TTC
f956b55c92 docs: 添加tooltip destroyTooltipOnHide Api说明 (#18859)
* 添加tooltip destroyTooltipOnHide Api说明

* 添加tooltip destroyTooltipOnHide Api说明

* 修复destroyTooltipOnHide说明
2019-09-17 18:18:56 +08:00
afc163
b188a5e4d2 🐛 Fix Input.Group icon height in Chrome
close #18856
2019-09-17 15:27:41 +08:00
偏右
721baa80f7 :refactor: remove unneccessary changes of #17614 (#18854) 2019-09-17 15:13:43 +08:00
afc163
882225f65b fix eslint 2019-09-17 14:49:34 +08:00
afc163
d72f825f43 🐛 revert to class component to avoid ref warning
close #18707
2019-09-17 14:47:01 +08:00
信鑫-King
0f3f3dc521 Merge pull request #18852 from ant-design/master
chore: merge master into feature
2019-09-17 02:40:54 -04:00
Ilya Bondarenko
8846122060 feat: Add visible to filterDropdown function (#17614)
* Add visible to filterDropdown function

* Update tests
2019-09-17 14:22:16 +08:00
Jingsong Gao
7404a7ea32 fix: Transfer disabled should work correctly
* fix: fix #18848

* chore: add test case
2019-09-17 13:31:32 +08:00
偏右
db24346d56 🆙 upgrade rc-upload to fix #17397 (#18850) 2019-09-17 13:28:44 +08:00
偏右
2128ee28ae Merge pull request #18802 from ant-design/master-to-merge
chore: merge master into feature
2019-09-14 16:41:39 +08:00
偏右
1200f7fe00 Merge branch 'feature' into master-to-merge 2019-09-14 15:40:33 +08:00
偏右
632ba44917 🐛 Fix Table cell word break style (#18789)
https://github.com/ant-design/ant-design/issues/13825#issuecomment-449889241
2019-09-12 22:54:44 +08:00
骗你是小猫咪
5cd01d0470 feat(Input.Search): add loading prop (#18771)
* feat(Input.Search): add loading prop

* fix: review change

* optimize input search loading prop doc

* fix: ci fail and onSearch disabled when loading
2019-09-12 22:32:29 +08:00
叶枫
f659d23d22 feat: upload add download icon (#18664)
* feat: upload add download icon

* feat: clear up

* feat: log

* empty

* feat: 理解错误

* feat: test

* test

* feat: clean up

* Update components.test.js.snap

* Update demo.test.js.snap

* Update demo.test.js.snap

* Update demo.test.js.snap

* Update demo.test.js.snap

* Update work-with-us.zh-CN.md

* feat: clean up

* fix: showDownloadIcon=false 24px

* fix: More rigorous

* fix: test

* fix: test

* fix: [] key

* fix: hover css

* fix: test
2019-09-11 21:46:56 +08:00
诸岳
f8af6972ba Merge branch 'master' of github.com:ant-design/ant-design into feature 2019-09-07 00:23:09 +08:00
骗你是小猫咪
b93d10d40b feat(Anchor): add onChange prop (#18715)
* feat(Anchor): add onChange prop

* test(Anchor): add onChange prop

* update snapshots
2019-09-06 19:54:13 +08:00
afc163
c9a8f698b1 fix slider snapshot 2019-09-06 17:40:20 +08:00
afc163
96a9583bf8 🆙 support Slider[reverse]
close #4763
close #18639
2019-09-06 17:40:20 +08:00
afc163
2e5928450d 📝 Improve Table doc about tableLayout 2019-09-05 13:39:06 +08:00
afc163
251ae17376 🎬 Add tableLyout and ellipsis in Table demo 2019-09-05 13:39:06 +08:00
afc163
033f812311 🆙 upgrade rc-table 2019-09-05 13:39:06 +08:00
afc163
49a37d10c7 🔨 remove useless default value of tableLayout 2019-09-05 13:39:06 +08:00
afc163
580312bd1f 📝 Add descriptions for ellipsis demo 2019-09-05 13:39:06 +08:00
afc163
499c46b220 fix table snapshot and ci 2019-09-05 13:39:06 +08:00
afc163
d9f2c906ca support column.ellipsis
close #5753
2019-09-05 13:39:06 +08:00
afc163
02da860de1 fix table snapshot 2019-09-05 13:39:06 +08:00
afc163
7c180a7f31 🆙 upgrade rc-table 2019-09-05 13:39:06 +08:00
afc163
d2aeaab486 default overflow-wrap break-word for all cell 2019-09-05 13:39:06 +08:00
afc163
577bc87bba Add Table tableLayout prop 2019-09-05 13:39:06 +08:00
487 changed files with 25551 additions and 8145 deletions

View File

@@ -184,6 +184,7 @@ jobs:
command: npm test -- -w 1 -u
environment:
LIB_DIR: dist
REACT: 15
test_lib_15:
<<: *container_config
@@ -196,6 +197,7 @@ jobs:
command: npm test -- -w 1 -u
environment:
LIB_DIR: lib
REACT: 15
test_es_15:
<<: *container_config
@@ -208,6 +210,7 @@ jobs:
command: npm test -- -w 1 -u
environment:
LIB_DIR: es
REACT: 15
test_dom_15:
<<: *container_config
@@ -216,7 +219,10 @@ jobs:
- checkout
- *attach_workspace
- *install_react
- run: npm test -- -w 1 -u
- run:
command: npm test -- -w 1 -u
environment:
REACT: 15
test_node_15:
<<: *container_config
@@ -225,7 +231,10 @@ jobs:
- checkout
- *attach_workspace
- *install_react
- run: npm run test-node -- -w 1 -u
- run:
command: npm run test-node -- -w 1 -u
environment:
REACT: 15
check_metadata:
<<: *container_config

3
.codesandbox/ci.json Normal file
View File

@@ -0,0 +1,3 @@
{
"sandboxes": ["antd-reproduction-template-6e93z"]
}

View File

@@ -1,6 +1,5 @@
components/**/*.js
components/**/*.jsx
components/*/__tests__/type.tsx
!components/*/__tests__/**/*.js
!components/*/demo/*
!.*.js

View File

@@ -55,6 +55,7 @@ const eslintrc = {
'jsx-a11y/anchor-has-content': 0,
'jsx-a11y/click-events-have-key-events': 0,
'jsx-a11y/anchor-is-valid': 0,
'jsx-a11y/no-noninteractive-element-interactions': 0,
'comma-dangle': ['error', 'always-multiline'],
'react/jsx-filename-extension': 0,
'react/state-in-constructor': 0,
@@ -70,6 +71,7 @@ const eslintrc = {
'import/no-cycle': 0,
'react/no-find-dom-node': 0,
'no-underscore-dangle': 0,
'react/sort-comp': 0,
// label-has-for has been deprecated
// https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/label-has-for.md
'jsx-a11y/label-has-for': 0,
@@ -83,6 +85,9 @@ const eslintrc = {
'no-restricted-globals': 0,
'max-classes-per-file': 0,
'react/static-property-placement': 0,
'jest/no-test-callback': 0,
'jest/expect-expect': 0,
'import/extensions': 0,
},
globals: {
gtag: true,

View File

@@ -3,19 +3,28 @@ on:
release:
types: [published]
branches:
- master
- 3.x-stable
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
- name: checkout
uses: actions/checkout@master
- name: Deploy website
uses: JamesIves/github-pages-deploy-action@master
- name: install
run: npm install
- name: build
run: npm run predeploy
- name: deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
BRANCH: gh-pages
FOLDER: _site
BUILD_SCRIPT: npm install && npm run predeploy
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
# PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./_site
with:
emptyCommits: false

19
.github/workflows/lighthouse-ci.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Lighthouse
on: push
jobs:
lighthouse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Audit URLs using Lighthouse
uses: treosh/lighthouse-ci-action@v2
with:
urls: |
https://ant.design
https://ant.design/docs/react/introduce-cn
https://ant.design/components/button-cn
- name: Save results
uses: actions/upload-artifact@v1
with:
name: lighthouse-results
path: '.lighthouseci' # This will save the Lighthouse results as .json files

View File

@@ -1,19 +0,0 @@
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Use Node.js 10.x
uses: actions/setup-node@v1
with:
version: 10.x
- name: npm install, build, and test
run: |
npm install
npm run test-all

View File

@@ -1,28 +0,0 @@
name: Publish to github-package
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- uses: actions/setup-node@v1
with:
node-version: '12.x'
registry-url: 'https://npm.pkg.github.com'
- name: install
run: npm install
- name: compile
run: npm run compile
- name: publish
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

14
.github/workflows/rebase.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
on:
issue_comment:
types: [created]
name: Automatic Rebase
jobs:
rebase:
name: Rebase
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Automatic Rebase
uses: cirrus-actions/rebase@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

208
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,208 @@
name: test
on: [push]
jobs:
setup:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: cache package-lock.json
uses: actions/cache@v1
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: create package-lock.json
run: npm i --package-lock-only
- name: hack for singe file
run: |
if [ ! -d "package-temp-dir" ]; then
mkdir package-temp-dir
fi
cp package-lock.json package-temp-dir
- name: cache node_modules
id: node_modules_cache_id
uses: actions/cache@v1
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: install
if: steps.node_modules_cache_id.outputs.cache-hit != 'true'
run: npm ci
compile:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: restore cache from package-lock.json
uses: actions/cache@v1
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v1
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: cache lib
uses: actions/cache@v1
with:
path: lib
key: lib-${{ github.sha }}
- name: cache es
uses: actions/cache@v1
with:
path: es
key: es-${{ github.sha }}
- name: compile
run: npm run compile
- name: check
run: node ./tests/dekko/lib.test.js
needs: setup
dist:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: restore cache from package-lock.json
uses: actions/cache@v1
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v1
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: dist
run: npm run dist
- name: check
run: node ./tests/dekko/dist.test.js
- name: test
run: npm test
env:
LIB_DIR: dist
needs: setup
lint:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: restore cache from package-lock.json
uses: actions/cache@v1
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v1
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: lint
run: npm run lint
needs: setup
node:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: restore cache from package-lock.json
uses: actions/cache@v1
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v1
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: test
run: npm test
needs: setup
lib:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: restore cache from package-lock.json
uses: actions/cache@v1
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v1
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: restore cache from lib
uses: actions/cache@v1
with:
path: lib
key: lib-${{ github.sha }}
- name: test
run: npm test
env:
LIB_DIR: lib
needs: compile
es:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: restore cache from package-lock.json
uses: actions/cache@v1
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v1
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: restore cache from es
uses: actions/cache@v1
with:
path: es
key: es-${{ github.sha }}
- name: test
run: npm test
env:
LIB_DIR: es
needs: compile

View File

@@ -31,7 +31,7 @@ module.exports = {
'!components/*/style/index.tsx',
'!components/style/index.tsx',
'!components/*/locale/index.tsx',
'!components/*/__tests__/**/type.tsx',
'!components/*/__tests__/type.test.tsx',
'!components/**/*/interface.{ts,tsx}',
],
transformIgnorePatterns,

22
.jest.site.js Normal file
View File

@@ -0,0 +1,22 @@
const { moduleNameMapper, transformIgnorePatterns } = require('./.jest');
// jest config for server render environment
module.exports = {
moduleFileExtensions: ['ts', 'tsx', 'js', 'md'],
moduleNameMapper,
transform: {
'\\.tsx?$': './node_modules/@ant-design/tools/lib/jest/codePreprocessor',
'\\.js$': './node_modules/@ant-design/tools/lib/jest/codePreprocessor',
'\\.md$': './node_modules/@ant-design/tools/lib/jest/demoPreprocessor',
'\\.(jpg|png|gif|svg)$': './node_modules/@ant-design/tools/lib/jest/imagePreprocessor',
},
testRegex: 'check-site\\.js$',
testEnvironment: 'node',
transformIgnorePatterns,
snapshotSerializers: ['enzyme-to-json/serializer'],
globals: {
'ts-jest': {
tsConfigFile: './tsconfig.test.json',
},
},
};

View File

@@ -2,17 +2,26 @@
17073025 <17073025@cnsuning.com>
282159468 <282159468@qq.com>
778758944 <778758944@qq.com>
Aaron Cawte <aaron@bbncreative.co>
Aaron Planell López <aaronplanell@gmail.com>
Aditya Padhi <aditya.padhi@outlook.com>
Adrian Dimitrov <dimitrov.adrian@gmail.com>
Ahmad Abdelaziz <ahmad.abdelaziz@robustastudio.com>
Ahmed AlSammany <ahmed.alsammany@incorta.com>
Aidin <aidin.dadashzadeh@gmail.com>
Aiello <770540123@qq.com>
Alan Braithwaite <asbraithwaite@gmail.com>
Albert Zheng <lisong.zheng@gmail.com>
Albert 理斯特 <shuaizhexu@gmail.com>
Alberto Marchetti <cmaster11@gmail.com>
Aleck Landgraf <aleck.landgraf@gmail.com>
Aleksandr Chernokondratenko <etherreals777@gmail.com>
Alex Simons <alexsimons9999@gmail.com>
Alexander <labriko@yandex.ru>
Alexander Anpleenko <vaeum@yandex.com>
Alexander Kachkaev <alexander@kachkaev.ru>
Alexander Suevalov <suevalov.work@gmail.com>
Alexander.Kosov <Alexander.Kosov@nexign-systems.com>
Alexandre Kirszenberg <a.kirszenberg@gmail.com>
Alexey Yakovlev <yallie@yandex.ru>
Alfred Qiu <sc941203@gmail.com>
@@ -28,21 +37,32 @@ Andrew Shearer <andrew@ashearer.com>
Andrey G <plandem@gmail.com>
Andrzej Dybionka <andrzej@arabel.la>
André <mazoni.andre@gmail.com>
Andrés <andresin87@gmail.com>
Ankit Babbar <ankit.babbar@valuebound.com>
Aobo Yang <yangaobo@gmail.com>
Ardo Kusuma <ardo@uber.com>
Arnab Sen <arnabsen@gmail.com>
Arthur Denner Oliveira Santos <arthurdenner7@gmail.com>
Artin <lengthmin@gmail.com>
Arvin Xu <arvinx@foxmail.com>
Ash Kumar <kumar.ashwin@outlook.com>
Ashot Mnatsakanyan <mnatsakanyan.ashot@gmail.com>
Aymen Bouchekoua <bouchekoua.aymen@gmail.com>
BK Heleth <bon.hoo@hotmail.com>
Babajide Fowotade <jide.b.tade@gmail.com>
Barry <barry.yansh@gmail.com>
Bartek <bartek.kozera@gmail.com>
Ben Callaway <me@bencallaway.com>
Benedikt Franke <benedikt@franke.tech>
Benjamin Amelot <bam@activeviam.com>
Benjamin Kniffler <bkniffler@me.com>
Benjy Cui <benjytrys@gmail.com>
Benoît Latinier <benoit@latinier.fr>
Bernie <bernie.wangbj@gmail.com>
Bestie <lucientown@outlook.com>
Bhavesh Chowdhury <bhaveshch20@gmail.com>
Bilal Sirazitdinov <bilalsir@yandex.ru>
Bill Searle <billsearle@gmail.com>
Bill Sheikh <bilawals22@gmail.com>
Bo Chen <bochen2014@yahoo.com>
Bolun Zhang <rzhangbolun@gmail.com>
@@ -61,9 +81,11 @@ Cam Song <neosoyn@gmail.com>
Camol <kwwnjujlc@sina.com>
Cang Ta <hoksilato176@gmail.com>
Canwen Xu <canwenxu@126.com>
Carlos Coves Prieto <carlos.coves@interacso.com>
Carter Feldman <carter@carter.at>
Catalin Miron <mironcatalin@gmail.com>
Cee Cirno <i@cee.moe>
Cemre Mengu <cemremengu@gmail.com>
Chandler Moisen <chandlermoisen@gmail.com>
Chang Wang <cheapsteak@gmail.com>
Charles Covey-Brandt <chazcb@gmail.com>
@@ -75,8 +97,10 @@ Chris Kelly <cjke.7777@gmail.com>
ChrisFan <chris.fan.dev@gmail.com>
Christian <chr.vadala@gmail.com>
Christian Vadalà <chr.vadala@gmail.com>
Christophe Hurpeau <christophe@hurpeau.com>
Christopher Deutsch <cd@cdeutsch.com>
Chuang Yu <cyu9960@gmail.com>
Chuck <wfhtzcf@gmail.com>
Claudio Restifo <claudio.restifo@gmail.com>
Cody Chan <int64ago@gmail.com>
Colton Pierson <colton@coltonpierson.com>
@@ -89,21 +113,32 @@ Daewoong Moon <wiziple@gmail.com>
Damian Green <damian.green@microlease.com>
Damian Green <damian@gcoders.com>
Dan Minshew <ofenixculpa@gmail.com>
Dana Janoskova <dana.janoskova@accenture.com>
Dane David <dndavid102@gmail.com>
Daniel Chang <danielchang2022@u.northwestern.edu>
Daniel Gomez <dgomez@orangeloops.com>
Daniel Harrison <daniel.equiknox@gmail.com>
Danny Hoower Antonio Viasus Avila <danjavia@gmail.com>
Daphne Won <daphne.won@shopee.com>
Daqi Song <dqaria@gmail.com>
Darren Poon <dyhpoon@gmail.com>
David Broder-Rodgers <david.broder-rodgers@softwire.com>
David Hatten <dhatten@covermymeds.com>
David Schneider <davschne@gmail.com>
Dean van Niekerk <deanvniekerk@gmail.com>
DengYun <tdzl2003@gmail.com>
Denis <shumkovdenis@gmail.com>
DiamondYuan <541832074@qq.com>
DiamondYuan <admin@diamondyuan.com>
Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
Dmitriy <dimusig@gmail.com>
Dmitriy Mironov <dima.dev01@gmail.com>
Dmitry Bolotin <bolotin.dmitriy@gmail.com>
Dmitry Gladkikh <abdurahmanus@gmail.com>
Dmitry Guryev <dmitry.gurjev@gmail.com>
Dmitry Manannikov <email@slonoed.net>
Dmitry Snegirev <rikkitp@gmail.com>
Dmitry Tikhomirov <tikhomirov@element-soft.com>
Dorian <dorian@doma.io>
DosLin <doslino@gmail.com>
Douglas Mason <Demasonjr@gmail.com>
@@ -118,34 +153,44 @@ Eden Wang <yociduo@vip.qq.com>
Eduardo Ludi <eduludi@gmail.com>
Edward <7047924@qq.com>
Egor Yurtaev <yurtaev.egor@gmail.com>
Eldar Mustafaiev <eldar.mustafaiev@gmail.com>
Eli White <github@eli-white.com>
Emerson Laurentino <emersonlaurentino@hotmail.com>
Emma <sima.zhang1990@gmail.com>
Ender Lee <chnliquan@163.com>
Eric <84263800@qq.com>
Eric Celeste <efc@clst.org>
Eric Turriff <eric.turriff@gmail.com>
Erwann Mest <m+github@kud.io>
Eusen <179530591@qq.com>
Evgeny Kuznetsov <jackk@ya.ru>
Eward Song <eward.song@gmail.com>
Federico Marcos <marcosfede@gmail.com>
Ferdi Koomen <info@madebyferdi.com>
Fergus Leung <fergusleung96@gmail.com>
Fernando Giarritiello <fgiarritiello@gmail.com>
Florian Orpelière <florian.orpeliere@gmail.com>
Flynn <li.fulin@foxmail.com>
For177 <mengqiang.q@gmail.com>
Frezc <Frezcw@gmail.com>
Gabe Medrash <gabeme@alleninstitute.org>
Gabriel Nunes <gabriel@multiverso.me>
GalenWong <wonggalen1999@gmail.com>
Gao Jiangmiao <tolbkni@gmail.com>
Gautier <rollingautier2@gmail.com>
Geoff Holden <geoff@brightloudnoise.com>
George Gray <george@ummodesign.com>
Gin-X <xcbwyys@hotmail.com>
Go7hic <gtfx0209@qq.com>
Goh Zhao Yang <austinzy@airasia.com>
Graeme Yeates <gyeates@clearpath.ai>
Graeme Yeates <yeatesgraeme@gmail.com>
Grant Klinsing <gklinsing@gmail.com>
Gray Choi <gray.choi.1988@gmail.com>
Guan Hao <raptium@gmail.com>
Guan Yu Pan (Jacky) <jackypan1989@gmail.com>
Guichi Zhao <zgc910619@gmail.com>
Hami Abdi <abdih@users.noreply.github.com>
HJin.me <hjin.me@gmail.com>
Hai Phan Nguyen <pnghai@gmail.com>
Haibin Yu <haibin.yu@oceanwing.com>
@@ -155,12 +200,18 @@ Hanz Luo <lhz0516@gmail.com>
Harlan <luoxwen@gmail.com>
HarlanLuo <luoxwen@gmail.com>
Haroen Viaene <fingebimus@me.com>
Harry.Hou <harry.hou@ringcentral.com>
Harshit Mehrotra <harshitmehrotra@hotmail.com>
He Linming <hlm52pk@163.com>
Heaven <ne_smalltown@163.com>
Henri Normak <henri.normak@gmail.com>
HeskeyBaozi <hezhiyu233@foxmail.com>
HiddenMan <1196089730@qq.com>
Hieu Ho <hieu.ho.le@lazada.com>
Hieu Pham <phthhieu@gmail.com>
Higor Araújo dos Anjos <higor.araujo.anjos@gmail.com>
Hsuan Lee <HsuanGM@gmail.com>
Hsuan Lee <hsuangm@gmail.com>
Hubert Argasinski <argasinski.hubert@gmail.com>
Hughen <446370503@163.com>
Hugo LEHMANN <shogi31@gmail.com>
@@ -168,12 +219,16 @@ Igor <nemytyshew@yandex.ru>
Igor G <i.gaidai4uk@gmail.com>
Ilan <hasanovtk@gmail.com>
Ilan Hasanov <hasanovtk@gmail.com>
Ilya Bondarenko <bondarenko.ik@gmail.com>
ImJoeHs <865439601@qq.com>
Inclined.Z <zjq0717@163.com>
Infinity <305870677@qq.com>
Inian <inian1234@gmail.com>
Ivan <ivan.pecharitsa@gmail.com>
Ivan Kravets <me@ikravets.com>
Ivan Trofimov <ivan@trofimov.link>
Ivo Stratev <ivo.stratev.tues@gmail.com>
Jack <jacklee82814@gmail.com>
Jack Hsieh <jack@egenware.com>
Jack Lo <jack-lo@foxmail.com>
Jack Works <zjwpeter@gmail.com>
@@ -182,19 +237,30 @@ Jacques Kvam <jwkvam@gmail.com>
JaePil Jung <jjp5023@gmail.com>
Jake Richards <jake.richards@genesys.com>
James <james@schoolshape.com>
James Tsang <wentao_zeng1@163.com>
JamesYin <elantion@gmail.com>
Jaroslav Bereza <github.com@bereza.cz>
Jarvis1010 <travis.mair@gmail.com>
Jason <ceocjy@vip.qq.com>
Jason Chen <ceocjy@vip.qq.com>
Jason Chung <shiningjason1989@gmail.com>
Jason Yin <yinjiangsheng@gmail.com>
Jean-Luc Sorak <jlsorak@icloud.com>
Jeffrey Carl Faden <jeffreyatw@gmail.com>
Jelle de Jong <jelle@hoest.nl>
Jennie <jennie.ji@hotmail.com>
JeromeLin <jerome.lin@zhongan.com>
Jerry Bendy <jerry@icewingcc.com>
Jesper We <jesper@journeyman.se>
Jiabin Peng <png.inside@gmail.com>
Jialei <jialeicui@126.com>
Jiawei Huang <hjiawei@gmail.com>
Jieraaa <842533841@qq.com>
Jin ZHANG <jz.zhangjin@gmail.com>
JinXin <m18508218948@163.com>
Jing Ma <mjingm87@qq.com>
Jingsong Gao <kingsongao1221@gmail.com>
Jinke Li <1359518268@qq.com>
Jinxuan Zhu <zhujinxuan@gmail.com>
Joao Rabelo <jrabelo@tech6.com.br>
Joe <qiaolibo@126.com>
@@ -202,90 +268,124 @@ Joe Hsu <jhsu.x1@gmail.com>
Johannes Loewe <johannes@loewe.pm>
John Johnson III <john@johnjohnson.cc>
John Nguyen <jtnguyen236@gmail.com>
Johnsen <jiajunzhou1994@163.com>
Jonatas Walker <jonataswalker@gmail.com>
Jonathan Lee <1150974628@qq.com>
Jonny Buchanan <jonathan.buchanan@gmail.com>
Jordan Hornblow <jordan@jch254.com>
Josue Peralta <jperal77@gmail.com>
Josué <ujosuegt@outlook.com>
JribiBelhassen <belha9inzaghi@gmail.com>
JuFeng Zhang <zjffun@gmail.com>
Juan Carlos Lloret H <juan.carlos.lloret@lansweeper.com>
Juan Rodrigo Venegas Boesch <jrvboesch@gmail.com>
Julia Passynkova <ipassynk@hotmail.com>
Julien Confetti <julien.confetti@ulg.ac.be>
Junyu Zhan <irrigator@yeah.net>
Juraj Carnogursky <durisvk2@gmail.com>
Justin Reich <reich.justin@gmail.com>
Kaien Liao <liaokaien@gmail.com>
Kamal Mahmudi <kamalmahmudi@yahoo.co.id>
Kasra Bigdeli <kasra85@gmail.com>
Kelvin Chu <chubillkelvin@gmail.com>
Kenaniah Cerny <kenaniah@gmail.com>
Kenneth Luján Rosas <elgenio.03@gmail.com>
Kenneth Truong <kenneth.e.truong@gmail.com>
KentonYu <975853613@qq.com>
Kevin Ivan <info@kevinivan.com>
Kevin Wang <gumtree200@gmail.com>
Kevinaskin <kevinaskin@minus.live>
KgTong <kgtong1992@gmail.com>
Khaled <k.khalil.94@gmail.com>
Khalifa Lame <khalibloo@gmail.com>
Kian <kian@vsu.cc>
Kieren <kierenveerapen94@gmail.com>
Kiho · Cham <monkindey@163.com>
Kim, Harim <harimkims@gmail.com>
Kimmo Saari <kimmo.saari@compile.fi>
Kimmo Saari <kimmo.saari@revolt.fi>
Kirill Alexander Khalitov <voronar@gmail.com>
Kirill Stiopin <kirill.stiopin@hotmail.com>
Knacktus <knacktus@gmail.com>
Kodai Nakamura <kodai.nakamura.215@gmail.com>
Konrad Machlowski <konrad.machlowski@gmail.com>
Kyle Kelley <rgbkrk@gmail.com>
Kyle Rosenberg <kyle.rosenberg@gmail.com>
LLinFan- <catfoursi@qq.com>
LT246-VINHNPH\vinhnph <vinhnph@blockpass.org>
Laith <laith24@gmail.com>
Larry Laski <larry.laski@gmail.com>
LaySent <laysent@gmail.com>
LeeHarlan <709886167@qq.com>
LeezQ <lizhenq2009@gmail.com>
Leo <clinyong@gmail.com>
Leon Koole <leon@koole.io>
Leon Shi <superRaytin@163.com>
Leon Shi <superRaytin@gmail.com>
Li Chao <rftstars@qq.com>
LilyWakana <873435892@qq.com>
Liming Jin <jinlm@knownsec.com>
Liu Ya <liuya54892@gmail.com>
Liu Yang <zation1@gmail.com>
LongYinan <lynweklm@gmail.com>
Lucien Lee <lkiral7903@gmail.com>
Ludwig Bäcklund <ludli839@student.liu.se>
Lyndon001 <lld207@126.com>
M Mitchell <mail@megmitchell.ca>
MG12 <wuzhao.mail@gmail.com>
Ma Tianxiao <matx2215@outlook.com>
Maciej Czekaj <natanielcz@gmail.com>
Madis Väin <madisvain@gmail.com>
Maksym Mosyura <wmornotwm@gmail.com>
Malven <marcusalven@gmail.com>
Manjit Kumar <manjit1727@gmail.com>
Manweill <mic.liangwenwei@foxmail.com>
MaoYiWei <137308365@qq.com>
Marcel Jackwerth <marceljackwerth@gmail.com>
Marcela Bomfim <mbomfim@live.com>
Marcio Pamplona <marciopamplona79@gmail.com>
Marco Afonso <mafonso333@gmail.com>
Marcus Bransbury <marcus.bransbury@gmail.com>
Marius Ileana <visvadw@gmail.com>
Mars Wong <marswong618@gmail.com>
Marshall Chen <Juniors.fei@gmail.com>
Martin Cermak <crudo@crudo.cz>
Martin Litvaj <kamahl19@gmail.com>
Martin Novák <martinnovak@outlook.com>
Mathew <khayaanimations@gmail.com>
Mathieu Anderson <anderson@talon.one>
Matias Orellana <morellan@gmail.com>
Matt Lein <matt.lein@code42.com>
Max <maksym.mosyura@kruschecompany.com>
Maximilian Meyer <Maximilian.Meyer@br.de>
Meck <yesmeck@gmail.com>
Meck Zhu <yesmeck@gmail.com>
MeiLin <postget.me@gmail.com>
Meow-z <372086270@qq.com>
Miaow <i@zfeng.net>
Michael Adams <mtadams007@gmail.com>
Michael Krog <mic@apaq.dk>
Michael Salaverry <barakplasma@gmail.com>
Michael Salaverry <michaels@axonize.com>
Michael Wang <ylzcylx@gmail.com>
Michal Pekar <pekac45@gmail.com>
Michalis Macheras <diodosier@gmail.com>
Michelle Zhang <michelle.chsy@gmail.com>
Mikasa33 <mikasa33@qq.com>
Min <dicklwm@163.com>
MinJeong Kim <min7859@gmail.com>
MinYuan <s1124yy@gmail.com>
Ming Hann <eldy8888@gmail.com>
Minqi Pan <pmq2001@gmail.com>
Minsung Ryu <ryums0227@gmail.com>
Minwei Xu <faceswilliam@gmail.com>
Mitchell Demler <mitchell.demler@harcourts.net>
Mohamed Seada <mohamed.seada.1994@gmail.com>
Mohammad Faisal <faisalhmohd@gmail.com>
Mohan Ban <banmohan@outlook.com>
Mounish Sai <pvsmounish@gmail.com>
Mr.Tone <vector@malubei.com>
MrHeer <hlm52pk@163.com>
MuYu <mr.muzea@gmail.com>
Mário Gonçalves <mario.mc.goncalves@gmail.com>
Nathan Broadbent <git@ndbroadbent.com>
@@ -298,6 +398,8 @@ Nekron <nekron.hyt@gmail.com>
Neverland <chenjiahan@buaa.edu.cn>
Nico <nicolas@freddelacompta.com>
Nidhi Agarwal <nidhi.agarwal@zomato.com>
Nihal Saxena <saxenanihal95@gmail.com>
Nikitenkova <katrin_7nes7@mail.ru>
Niko Autio <niko.autio@fenten.fi>
Nikolay <veseliy07@gmail.com>
Nikolay Solovyov <i@mr-ozio.ru>
@@ -306,8 +408,10 @@ Nimo <nimo.jser@gmail.com>
Nishant Arora <na.nishantarora@gmail.com>
Nokecy <Nokecy@163.com>
OAwan <georgio.wan@gmail.com>
Olaniyi Philip Ojeyinka <olaniyiojeyinka@gmail.com>
Oleg Kuzava <olegkuzava@gmail.com>
Oleksandr Kovalchuk <me.olexandr.kovalchuk@gmail.com>
Olivier Louvignes <olivier@mg-crea.com>
Ooi Yee Wei <ywooi@yahoo.com>
Open Next <opennext@126.com>
Oren Kosto <oren@panda-os.com>
@@ -320,16 +424,20 @@ Peter <usstpeter@gmail.com>
Peter Berg <atticusberg@gmail.com>
Phanupong Janthapoon <panupong.jtp@gmail.com>
Philip Oliver <philipodev@gmail.com>
Phyllis <escapiststupor@gmail.com>
Pierre <pierre@bazoge.com>
Pierre Neter <pierreneter@gmail.com>
Piotr Monwid-Olechnowicz <hasparus@gmail.com>
Piper Chester <piperchester@gmail.com>
Pixy Yuan <pixy.bupt@gmail.com>
Pooya Parsa <pyapar@gmail.com>
Pyiner <lijiuyang1992@gmail.com>
Pyroboomka <qwaarty@mail.ru>
QC-L <github@liqichang.com>
Qhan W <whenhan@foxmail.com>
Qiaosen Huang <joesonw@gmail.com>
Qingrong Ke <keqingrong1992@gmail.com>
Radomir Skrzepij <zyziu10@gmail.com>
Rafael Cosman <rafaelcosman@alumni.stanford.edu>
Rahul Gurung <gurungrahul2@gmail.com>
Rallets <rallet@rallets.com>
@@ -338,47 +446,70 @@ Ran Byron <ranbena@gmail.com>
Randy <randypriv@gmail.com>
RaoHai <surgesoft@gmail.com>
Raphael Chauveau <raph.chauveau@gmail.com>
Ray Booysen <ray.booysen@baikalmkt.com>
Ray Booysen <raybooysen@gmail.com>
Rayron Victor <rayronvictor@gmail.com>
Reed Sun <superreedsun@gmail.com>
Regan Langford <regan.reihana@gmail.com>
Renovate Bot <bot@renovateapp.com>
Rex <zhangzilong.zzl@163.com>
Ricardo Raphael Joson <rrjoson08@gmail.com>
Richard D. Worth <rdworth@gmail.com>
Rick Zhou <rinick@gmail.com>
Robert Wilkinson <wilkinson.robert.a@gmail.com>
Rodrigo Ehlers <rodrigoehlers@outlook.com>
Rohan Malhotra <rohan.root@gmail.com>
Rongjian Zhang <pd4d10@gmail.com>
Rrrandom <emanonhere@gmail.com>
RunningCoderLee <sprint_l@aliyun.com>
Rustin <rustin.liu@gmail.com>
Rustin-Liu <rustin.liu@gmail.com>
RyanHui <ryanhui1996@gmail.com>
SHEN Lin <shenlin192@gmail.com>
Sagar Jain <sagar7993@gmail.com>
Sakol Assawasagool <koobitor@gmail.com>
Salavat Gizatov <100ishundred@gmail.com>
Sam Chen <chenxsan@gmail.com>
Sam Lanning <sam@samlanning.com>
Sam Maxwell <sam@paybase.io>
Samuel Gaus <sam@gaus.co.uk>
Sanghyeon Lee <yongdamsh@gmail.com>
Sangle <whb97@163.com>
Sanjay Kumar <kris.gooner@gmail.com>
Sanjay Kumar <sk@tectusdreamlab.com>
Scott Sturgeon <scott@tugboatlogic.com>
Sean Lin <sean@ejoy.com>
Sean Sun <pinggodstudio@gmail.com>
Sean Willis <sean.willis@incorta.com>
Sebastian Blade <blade254353074@hotmail.com>
Sebastian Busch <mail@sebastian-bus.ch>
Sebastian Busch <s.busch@obg-gruppe.de>
Sebastian Busch <s.busch@qbus-enet.de>
Sergey Levkovich <gosu.87@mail.ru>
Sergey Volynkin <sergey.volynkin@akvelon.com>
Sergio Crisostomo <sergiosbox@gmail.com>
Sevak <shaderzak@gmail.com>
Shawn Sit <xueqingxiao@gmail.com>
ShiCheng <nnecec@outlook.com>
ShiTengFei <shitengfei@goyoo.com>
ShuYu Wang <andelf@gmail.com>
Shuai Chen <wasd2144@hotmail.com>
Shubham Kanodia <shubhamsizzles@gmail.com>
Shun <polytechnics.shun@gmail.com>
Shuvalov Anton <anton@shuvalov.info>
SimaQ <sima.zhang1990@gmail.com>
Simo Aleksandrov <simo3003@me.com>
Sivaraj S <sivaraj@sdev.in>
Sivaraj <contact@sdev.in>
SoraYama <sorayamahou@gmail.com>
Spencer <spjy@hawaii.edu>
Stanley Thijssen <stanley.thijssen@energybox.com>
Stanley Thijssen <stanley.thijssen@gmail.com>
Stephen Esser <Stephen.Esser@gmail.com>
Stevche Radevski <sradevski@live.com>
Subroto <shub1493biswas@gmail.com>
Sven Efftinge <sven.efftinge@typefox.io>
SylvanasGone <397009765@qq.com>
TTC <345866517@qq.com>
Tao <magicdawn@qq.com>
Tao Zhang <windse7en@gmail.com>
Taylor Sabell <taylorsabell@gmail.com>
@@ -387,18 +518,22 @@ Teng YANG <yangteng@me.com>
Tengjiao Cai <caitengjiao1987@gmail.com>
Terence <trence320@163.com>
The Rock <zhoguoxin@126.com>
Theo Satloff <1golfball@gmail.com>
Thibault Derousseaux <tde@activeviam.com>
Thiebaud Thomas <thiebaud.tom@gmail.com>
Thomas <tom@axisj.com>
Thomas Ladd <thomas.ladd@stackpath.com>
Tino D <ginodeis@gmail.com>
Tom Gao <tom@zoomsoft.cc>
Tom Xu <tom.xu@antcosa.com>
Tom Xu <ycxzhkx@gmail.com>
TomIsion <isiontom@gmail.com>
Tomás Francisco <mail@tomasfrancisco.com>
Tomáš Hylský <thylsky@gmail.com>
Tomáš Szabo <tomas.szabo@deftomat.com>
Trotyl Yu <trotyl@qq.com>
Troy Thompson <troynt@gmail.com>
TsesamLi <tsesamli17@gmail.com>
Tyler <chaotyler@gmail.com>
Ubaldo Quintana <blkdr@hotmail.com>
Vadim Macagon <vadim.macagon@gmail.com>
@@ -406,6 +541,8 @@ Valentin Vichnal <valentin@vichnal.com>
Van Nguyen <vnguyen94@gmail.com>
Vemund Santi <vemund@santi.no>
Vic <709147950@qq.com>
Victor Repkow <repkowvictor@gmail.com>
Vijay Thirugnanam <vijayst@gmail.com>
Vincent Zhang <vxzhong@qq.com>
Vitaliy Mazurenko <vitaliymazurenko@gmail.com>
ViviaRui <zr1450995198@163.com>
@@ -420,17 +557,23 @@ Warren Seymour <warren@fountainhead.tech>
Wei Zhu <yesmeck@gmail.com>
Wenchao Hu <zjuhwc@gmail.com>
Wendell <wendzhue@gmail.com>
Wensheng Xu <xws@superid.cn>
Will <will_workhard@163.com>
Will Chen <willchen90@gmail.com>
William Cai <williamcai@easyops.cn>
WingGao <wing.gao@live.com>
Wu Haotian <whtsky@gmail.com>
XBTop1! <xbtop1@gmail.com>
XTY <^@xty.dev>
Xiaoming <yokiming1994@gmail.com>
Xie Guanglei <xieguanglei@hotmail.com>
Xinxing Li <lixinxing.2019@bytedance.com>
Xiping.wang <527409987@qq.com>
XuMM_12 <owiatsq@sina.cn>
Yang <504021398@qq.com>
Yang Bin <yangkghjh@gmail.com>
Yangzhedi <uiryzd@163.com>
Yann Normand <yann.normand@gmail.com>
Yasin Uslu <nepjua@gmail.com>
Yevhen Hryhorevskyi <evgeniygrigorevskiy@gmail.com>
Yiming <ymjrcc@qq.com>
@@ -445,27 +588,36 @@ Yusuke Ito <novi.mad@gmail.com>
Yuwei Ba <i@xiaoba.me>
Yuxuan Huo <yuxuan.huo2011@gmail.com>
YuyingWu <wuyuying1128@gmail.com>
ZYSzys <zyszys98@gmail.com>
Zack Craig <zack@zack6849.com>
Zap <a124116186@qq.com>
Zhang Zhi <fytriht@gmail.com>
Zheeeng <hi@zheeeng.me>
Zhiqiang Gong <elory0513@hotmail.com>
Zhuo Chen <chenzhuo@caicloud.io>
Ziluo <gyfzzu@gmail.com>
Zohaib Ijaz <mzohaib.qc@gmail.com>
Zzzen <843968788@qq.com>
aashutoshrathi <aashutoshrathi@gmail.com>
adam <adamwu1992@163.com>
afc163 <afc163@gmail.com>
agent-z <1607291079@qq.com>
ahalimkara <ahalimkara@gmail.com>
alekslario <aleksandlario@gmail.com>
alex <379118572@qq.com>
alex89lj <379118572@qq.com>
alexchen <alexchen@easyops.cn>
amedora <americandragsterracing@gmail.com>
arifemrecelik <ce.arifemre@gmail.com>
ascoders <576625322@qq.com>
ashishg-qburst <ashishg@qburst.com>
atomoo <yangpein@gmail.com>
bLue <tbdblue@gmail.com>
babycannotsay <335658202@qq.com>
bang <sqibang@gmail.com>
bang88 <sqibang@gmail.com>
baozefeng <727751065@qq.com>
binyellow <571704908@qq.com>
blankzust <450811238@qq.com>
bukas <yhz1219@gmail.com>
byuanama <byuan@ama.com.au>
@@ -477,14 +629,22 @@ cathayandy <wzm_andy@126.com>
cc189 <cc189dev@gmail.com>
chaofeis <408067385@qq.com>
chchen <cc272309126@gmail.com>
chen shuai <qixian.cs@outlook.com>
chen wen jun <731028571@qq.com>
chencheng (云谦) <sorrycc@gmail.com>
chencheng <sorrycc@gmail.com>
chenlong <long.chen@abssqr.com>
chenshuai2144 <qixian.cs@outlook.com>
chisus <chisus@smartstudy.co.kr>
chunlea <ichunlea@me.com>
cjahv <cjahv@qq.com>
clinyong <clinyong@gmail.com>
cnjs <1269075501@qq.com>
codesign <zuishiguang@126.com>
corneyl <cornieljoosse@gmail.com>
damon.chen <chj_0507_dz@sina.com>
david.lv <code4funlnyx@gmail.com>
david.lv <lvdawei1970@gmail.com>
davidhatten <david.r.hatten@gmail.com>
ddcat1115 <ddcat1115@gmail.com>
decade <decadef20@gmail.com>
@@ -493,6 +653,7 @@ denzw <denzw@21cn.com>
dependabot[bot] <support@dependabot.com>
detailyang <detailyang@gmail.com>
devqin <devqin@gmail.com>
dian.li <dian.li@yunzhanghu.com>
digz6666 <digz6666@gmail.com>
djorkaeff <djorkae55@gmail.com>
duzliang <duzliang@gmail.com>
@@ -501,15 +662,21 @@ edgji <j.edgji@gmail.com>
eidonjoe <806488716@qq.com>
elios <elios264@hotmail.com>
elrrrrrrr <elrrrrrrr@gmail.com>
eruca <nickwill1984@126.com>
ezpub <ez.foro@gmail.com>
feng zhi hao <fzhihao@outlook.com>
fengmk2 <m@fengmk2.com>
fkysly <fkysly@gmail.com>
flashback313 <windmark2012@gmail.com>
frezc <504021398@qq.com>
genie <genie88@163.com>
gregahren <grega.hren@gmail.com>
guifu <picodoth@gmail.com>
gxvv <gaoxin18000@gmail.com>
gyh9457 <gyh9457@163.com>
haianweifeng <1531297152@qq.com>
haimrait <haimrait@gmail.com>
handy <lihandi@gmail.com>
handycode <lihandi@gmail.com>
hank <stonehank310@gmail.com>
hanpei <75189218@qq.com>
@@ -522,10 +689,13 @@ hengkx <ycxzhkx@gmail.com>
henryv0 <henryvo94@gmail.com>
hi-caicai <hi@cai-cai.me>
hongxuWei <hongxu.wei@outlook.com>
howard <geograous@126.com>
huangyan.py <huangyan.py@bytedance.com>
huishiyi <zhou1maple@gmail.com>
huzzbuzz <huzzbuzz@outlook.com>
iamcastelli <sowed@cyberdude.com>
iamkun <kunhello@outlook.com>
ikobe <ikobe621@gmail.com>
ilanus <hasanovtk@gmail.com>
imhele <work@imhele.com>
imosapatryk <imosa.patryk@gmail.com>
@@ -539,6 +709,7 @@ jasonslyvia <jasonslyvia@gmail.com>
jasonxia23 <xia.jason23@gmail.com>
jiajiangxu <minesaner@163.com>
jiang <155259966@qq.com>
jiang.an <jarancn@gmail.com>
jim <wasd2144@hotmail.com>
jinouwuque <ee2win@gmail.com>
jinyaqiao1102 <405782493@QQ.com>
@@ -547,13 +718,20 @@ junjing.zhang <zhangjunjing@gmail.com>
kacjay <45483388@qq.com>
kagawagao <kingsongao1221@gmail.com>
kaifei <150641329@qq.com>
kailunyao <kailunyao@163.com>
kanweiwei <475801900@qq.com>
kanweiwei <kwwnjujlc@sina.com>
kapiroska <etherreals777@gmail.com>
kasinooya <kasinooya@gmail.com>
kavin <kavin.huang@alphaliongroup.com>
kayw <kayw@outlook.com>
kdenz <ksnz93@gmail.com>
kdepp <kdepp.cd@gmail.com>
keng <keng@renderinghouse.com>
kenve <zwei.xie@gmail.com>
keqingrong <keqingrong1992@gmail.com>
kermolaev <kermolaev@cloudally.com>
klouskingsley <harry_tse@163.com>
ko <git@yaksok.net>
konakona <lovekonakona@gmail.com>
kossel <lis.yichao@gmail.com>
@@ -565,13 +743,18 @@ leadream <857098475@qq.com>
lehug <zcszuo5811@126.com>
leijingdao <leijingdao@163.com>
leon.shi <superRaytin@163.com>
lewis liu <897473127@qq.com>
lgmcolin <gengmin.lgm@gmail.com>
lgmcolin <lgmcolin@gmail.com>
lhx <liuhongxi0000@163.com>
lhyt <515593899@qq.com>
liangfei <njliangfei@gmail.com>
liekkas <zjq0717@163.com>
lihqi <455711093@qq.com>
lilun <lilun_cd@keruyun.com>
littleLane <857183384@qq.com>
liuchuzhang <liuweiminer@126.com>
liuchuzhang <liuweiminer@hotmail.com>
lixiaochou077 <qi.liqi07@gmail.com>
lixiaoyang <lixiaoyang2345@gmail.com>
lixiaoyang1992 <lixiaoyang2345@gmail.com>
@@ -580,16 +763,21 @@ lizhen <lizhen@youzan.com>
loganpowell <loganp@tepper.cmu.edu>
luyiming <luyimingchn@gmail.com>
lvren <luren6049@qq.com>
lxnxbnq <yuanddmail@163.com>
lyhper <lyhper@gmail.com>
mArker <252133226@qq.com>
maks <pine3ree@gmail.com>
maximest-pierre <me@maximest-pierre.me>
melchior voidwolf <kmno4k2mno4@gmail.com>
memoryza <jincai.wang@foxmail.com>
mgrdevport <mgrdevport@gmail.com>
mingyan.yu <mingyan.yu@wormpex.com>
mitchell.demler <mitchell.demler@harcourts.net>
mkermani144 <mkermani144@gmail.com>
mmmveggies <jakeselig@gmail.com>
mofelee <mofe@me.com>
monkindey <monkindey@163.com>
moonrailgun <moonrailgun@gmail.com>
mraiguo <810158465@qq.com>
mraiguo <mraiguo@gmail.com>
mushan0x0 <mushan0x0@gmail.com>
@@ -597,21 +785,27 @@ muzea <mr.muzea@gmail.com>
muzuiget <muzuiget@gmail.com>
natergj <nater_nater@me.com>
neekey <ni184775761@gmail.com>
ngolin <poodll@163.com>
nick-ChenZe <chenze2168@gmail.com>
niko <644506165@qq.com>
nikogu <644506165@qq.com>
nnecec <nnecec@outlook.com>
nuintun <nuintun@qq.com>
ohhoney1 <1269075501@qq.com>
oldchicken <www.chao3208525@qq.com>
orzorzorzorz <zy410419243@gmail.com>
orzyyyy <zy410419243@gmail.com>
paranoidjk <hust2012jiangkai@gmail.com>
parlop <parlop@gmail.com>
pbrink231 <pbrink231@gmail.com>
pd4d10 <pd4d10@gmail.com>
peiming <hyrijk@gmail.com>
pengtikui <949828390@qq.com>
picodoth <picodoth@gmail.com>
picodoth <pikaleize@gmail.com>
pinggod <pinggodstudio@gmail.com>
pizn <pizner@gmail.com>
plainnany <plainnany@gmail.com>
plandem <plandem@gmail.com>
popomore <sakura9515@gmail.com>
qiaojie <1454763497@qq.com>
@@ -620,14 +814,18 @@ qliu <1403927509@qq.com>
qubaoming <qubaoming@didichuxing.com>
ravirambles <ravirambles@gmail.com>
richardison <richard.ison@carleton.ca>
riho <873435892@qq.com>
ryangun <ryangun@foxmail.com>
ryanhoho <hswacoal@gmail.com>
ryannz <c5e1856@gmail.com>
sadmark <zhoubin@laidian360.com>
sallen450 <jqh101@sina.com>
saxenanihal95 <saxenanihal95@gmail.com>
sdli <1669375803@qq.com>
sfturing <sfturing@gmail.com>
shangyuan.ning <shangyuan.ning@manaowan.com>
shao <darryshaw@gmail.com>
shaodahong <darryshaw@gmail.com>
shawtung <shawtung@qq.com>
shelwin <wxfans@gmail.com>
shenlin192@gmail.com <shenlin192@gmail.com>
@@ -645,9 +843,11 @@ sosohime <theziming@126.com>
spideeee <spideeee@github.com>
stevenyuysy <stevenyuysy@gmail.com>
stickmy <stickmyc@gmail.com>
susiwen <susiwen8@gmail.com>
swindme <swindme@163.com>
sylvanasGone <397009765@qq.com>
syssam <s.y.s.sam.sys@gmail.com>
tangjinzhou <21251118@zju.edu.cn>
tangjinzhou <415800467@qq.com>
tangjinzhou <tangjinzhou@yidian-inc.com>
taoweicn <twchn@live.com>
@@ -655,52 +855,76 @@ thegatheringstorm <tgs@tgs.blue>
thilo-behnke <jan-thilo.behnke@gmx.de>
tianli.zhao <275287902@qq.com>
tom <caolvchong@gmail.com>
tom <gaoqiang19514@163.com>
toshi1127 <toshi.matsumoto.2n@stu.hosei.ac.jp>
twobin <twobin@live.com>
u3u <qwq@qwq.cat>
undefined <undefined>
unknown <chenyizhongx@gmail.com>
ustccjw <317713370@qq.com>
vagusX <vagusxl@gmail.com>
valleykid <valleykiddy@gmail.com>
vaytsel <vaytsel@gmail.com>
veveue <veveue@dingtalk.com>
vgeyi <vgeyiz@126.com>
wadezhan <wadezhan@tencent.com>
wangshantao <605682551@qq.com>
wangshuai <wangshuai@momenta.ai>
wangtao0101 <yuecjn@gmail.com>
wangxiaolei <fatelei@gmail.com>
wangxing <wangxing@nroad.com.cn>
wangxingkang <156148958@qq.com>
wangxingkang <wangxingkang@sensoro.com>
wangxueliang <wangxueliang@yidian-inc.com>
wanli <wanli@qunhemail.com>
warmhug <hualei5280@gmail.com>
wenhong <wenhong.zw@antfin.com>
whinc <whincwu@163.com>
whtang906 <whtang906@gmail.com>
willc001 <will.c001@163.com>
wizawu <wizawu@gmail.com>
wleven <408493323@qq.com>
wonyun <wy393767068@163.com>
woodsand <ballerpk70@gmail.com>
wtzeng1 <wentao_zeng1@163.com>
wwwxy <xiaowangziwxy@gmail.com>
wwwxy80s <xiaowangziwxy@gmail.com>
wx1322 <289758716@qq.com>
xiaofan2406 <xiaofan2406@gmail.com>
xiaohuoni <448627663@qq.com>
xrkffgg <xrkffgg@vip.qq.com>
xuqiang <xuqiang@xiaoshouyi.com>
y-take <y.takey@gmail.com>
yangwukang <yangwukang@boco.com.cn>
yangxiaolin <yangxiao2810279802@gmail.com>
ycjcl868 <45808948@qq.com>
ye4241 <ye4241@gmail.com>
yeliex <yeliex@yeliex.com>
yibu.wang <yibu.wang@orion.co.com>
yiminanci <yiminanci@gmail.com>
yiminghe <yiminghe@gmail.com>
yinjs <yinjiangsheng@gmail.com>
yociduo <yociduo@vip.qq.com>
yoyo837 <yoyo837@hotmail.com>
yubozhao <yubz86@gmail.com>
yuche <i@yuche.me>
yuezk <yuezk001@gmail.com>
z <haig8@msn.com>
zack <zxyah@126.com>
zefeng <zefengbao@outlook.com>
zelongc <nickcong123@gmail.com>
zerob4wl <zerob4wl@gmail.com>
zhangguanyu02 <zhangguanyu02@meituan.com>
zhangpc <zhangpc@tenxcloud.com>
zhangyangxue <383632607@qq.com>
zhangzh <zhangzh@cnlemon.net>
zhaocai <lzc09008@gmail.com>
zhaopeidong <lwindscar@gmail.com>
zhujun24 <zhujun87654321@gmail.com>
zhuyue <fuping.dfp@antfin.com>
zilong <jzlxiaohei@163.com>
zinkey <yaya@uloveit.com.cn>
zjf <zjffun@gmail.com>
zlljqn <zlljqn@gmail.com>
zollero <corona7@163.com>
zombieJ <smith3816@gmail.com>
@@ -708,22 +932,31 @@ zombiej <smith3816@gmail.com>
zongzi531 <zongzi.xy@gmail.com>
ztplz <mysticzt@gmail.com>
zuiidea <zuiiidea@gmail.com>
zx6658 <zx6658@naver.com>
zy410419243 <zy410419243@gmail.com>
zytjs <yitongzhao@163.com>
°))))彡 <fisherspy@live.com>
邦 <sqibang@gmail.com>
爱but的苍蝇 <354788473@qq.com>
Ștefan Filip <stefy.filip@gmail.com>
高力 <3071730@qq.com>
郑旭 <332171564@qq.com>
拷钉 <41830859@qq.com>
蒋璇 <645762213@qq.com>
苏秦 <646382806@qq.com>
陈杰 <810158465@qq.com>
竹尔 <Juelchiang@gmail.com>
偏右 <afc163@gmail.com>
黄斌 <bin.huang02@hand-china.com>
英布 <chaoren1641@gmail.com>
朮厃 <cn.ah.liu@gmail.com>
张聪 <dancerphil1994@gmail.com>
诸岳 <dengfuping_develop@163.com>
诸岳 <dengfuping_private@163.com>
逸达 <dqaria@gmail.com>
诸岳 <fuping.dfp@antfin.com>
啸生 <ikobe621@gmail.com>
迷渡 <justjavac@gmail.com>
二哲 <kodo@forchange.cn>
廖星 <liaoxing.lx@bytedance.com>
刘红 <liuhong1.happy@163.com>
@@ -736,6 +969,7 @@ zy410419243 <zy410419243@gmail.com>
松子 <window.pibarr@gmail.com>
何乐 <work@imhele.com>
付引 <xxxquotes@gmail.com>
萧琚 <yizhi.lyz@antfin.com>
可乐 <zaxlct@foxmail.com>
山客 <zeakhold@gmail.com>
曾凯 <zengkai2009@foxmail.com>
@@ -743,6 +977,8 @@ zy410419243 <zy410419243@gmail.com>
信鑫-King <45808948@qq.com>
广彬-梁 <326741518@qq.com>
小哈husky <951565664@qq.com>
诸葛龙 <158362530@qq.com>
李环冀 <158757774@qq.com>
何志勇 <15988134176@163.com>
徐坤龙 <272992168@qq.com>
黄子毅 <576625322@qq.com>
@@ -750,22 +986,27 @@ zy410419243 <zy410419243@gmail.com>
崔宏森 <948346354@qq.com>
黄文鉴 <concefly@foxmail.com>
董天成 <dongtiangche@outlook.com>
龚方闻 <fangwen.gong@baishancloud.com>
方剑成 <fjc0kb@gmail.com>
陈广亮 <geraldchen890806@gmail.com>
包子熊 <hezhiyu233@foxmail.com>
闲耘™ <hotoo.cn@gmail.com>
一喵呜 <hyb628@gmail.com>
王林涛 <hzwanglintao@corp.netease.com>
黄俊亮 <jayhuang@easyops.cn>
吕立青 <jimmy.jinglv@gmail.com>
隋鑫磊 <joshuasui@gmail.com>
米老朱 <laozhu.me@gmail.com>
刘宏玺 <liuhongxi0000@163.com>
乔奕轩 <qiao_yixuan@163.com>
马斯特 <sd4399340@126.com>
廖应龙 <vigossliao@gmail.com>
王集鹄 <wjhu111@21cn.com>
徐新航 <xuxinhang@bytedance.com>
杨哲迪 <yangzhedi@yidian-inc.com>
柚子男 <yozman@sina.com>
愚指导 <yutingzhao1991@sina.com>
只捱宅 <zy410419243@gmail.com>
郭延豪(708674) <gyh9457@163.com>
愚指导-TZ <yutingzhao1991@sina.com>
杨小事er <Uiryzd@163.com>
@@ -773,5 +1014,8 @@ zy410419243 <zy410419243@gmail.com>
超能刚哥 <margox@foxmail.com>
马金花儿 <o.o@mug.dog>
रोहन मल्होत्रा <rohan.malhotra@adwyze.com>
芝华塔尼欧 <1150974628@qq.com>
白羊座小葛 <abeyuhang@gmail.com>
薛定谔的猫 <hh_2013@foxmail.com>
二货机器人 <smith3816@gmail.com>
骗你是小猫咪 <darryshaw@gmail.com>

View File

@@ -15,6 +15,301 @@ timeline: true
---
## 3.26.9
`2020-02-08`
- 🐞 Fix Badge that count is not align when wrapped by Typography. [#21237](https://github.com/ant-design/ant-design/pull/21237)
- 🐞 Fix Steps that icon is not align when `size="small"` and `labelPlacement="vertical"`. [#21258](https://github.com/ant-design/ant-design/pull/21258)
- 🐞 Fix Typography not focus at the end of textarea when `editable` is true. [#21268](https://github.com/ant-design/ant-design/pull/21268)
- TypeScript
- 💄 Improve type definition of validation rule's type for Form. [#21250](https://github.com/ant-design/ant-design/pull/21250) [@hansololai](https://github.com/hansololai)
- 🐞 Fix type definition of `event` for Tree. [#21200](https://github.com/ant-design/ant-design/pull/21200) [@Jirka-Lhotka](https://github.com/Jirka-Lhotka)
## 3.26.8
`2020-02-03`
- 🐞 Fix Tooltip hidden when `title` is `0`. [#20894](https://github.com/ant-design/ant-design/pull/20894)
- 🐞 Fix List `actions` inconsistent position. [#20897](https://github.com/ant-design/ant-design/pull/20897)
- 🐞 Fix Card `font-size` of `actions` not in less theme variables. [#21106](https://github.com/ant-design/ant-design/pull/21106)
- 🐞 Fix Layout components `displayName`. [#21124](https://github.com/ant-design/ant-design/pull/21124)
- 🐞 Fix Modal.confirm `okButtonProps` and `cancelButtonProps` interface. [#21165](https://github.com/ant-design/ant-design/pull/21165)
## 3.26.7
`2020-01-13`
- 💄 Optimize Table fixed columns blank problem in some case. [#20821](https://github.com/ant-design/ant-design/pull/20821) [@AshoneA](https://github.com/AshoneA)
- 🐞 Fix Tree `switcherIcon` shown in leaf node problem. [#20753](https://github.com/ant-design/ant-design/pull/20753)
- 🐞 Fix Badge `z-index` higher than Table fixed columns. [#20751](https://github.com/ant-design/ant-design/pull/20751)
- 🐞 Fix Cascader search bug when `fieldNames` is existed and label/value share same name. [#20720](https://github.com/ant-design/ant-design/pull/20720)
- 🐞 Fix Collapse background color with wrong less variable. [#20718](https://github.com/ant-design/ant-design/pull/20718) [@kuitos](https://github.com/kuitos)
- 🐞 Fix Input.Group inside `<Form layout="vertical" >` 1px bug. [#20685](https://github.com/ant-design/ant-design/pull/20685)
## 3.26.6
`2020-01-03`
- 📢 v3 branch changes from `master` to `3.x-stable` and v4 merge into `master`.
- 💄 Improve Steps `type="navigation"` UI in small screen. [#20545](https://github.com/ant-design/ant-design/pull/20545)
- 🐞 Fix `message.xxx` pass `null` will failed. [#20546](https://github.com/ant-design/ant-design/pull/20546)
- 🐞 Remove Input.Password `value` attribute from dom. [#20544](https://github.com/ant-design/ant-design/pull/20544)
## 3.26.5
`2019-12-29`
- Table
- 🐞 Revert the logic of return fisrt page by default after sort. [#20507](https://github.com/ant-design/ant-design/pull/20507)
- 🐞 Fix header wrong text align when `colspan=1`. [#20463](https://github.com/ant-design/ant-design/pull/20463)
- 🐞 Fix Tabs ink bar disappearing when `animated` prop is false. [#20417](https://github.com/ant-design/ant-design/pull/20417) [@xrkffgg](https://github.com/xrkffgg)
- 🐞 Fix Tree wrong indent. [#20456](https://github.com/ant-design/ant-design/pull/20456)
## 3.26.4
`2019-12-22`
- 💄 Optimize Steps `subTitle` UI when `labelPlacement="vertical"`. [#20325](https://github.com/ant-design/ant-design/pull/20325)
- 🐞 Fix upload preview not support ico file type issue. [#20375](https://github.com/ant-design/ant-design/pull/20375) [@Rustin-Liu](https://github.com/Rustin-Liu)
- 🐞 Fix Form feedback icon combine Input `suffix` display not correct. [#20363](https://github.com/ant-design/ant-design/pull/20363)
- 🐞 Fix Tag `onClick` been triggered when close it. [#20355](https://github.com/ant-design/ant-design/pull/20355)
- 🐞 Fix Cascader component form check color trigger issue. [#20347](https://github.com/ant-design/ant-design/pull/20347) [@xrkffgg](https://github.com/xrkffgg)
- 🐞 Disallow auto focus input after triggering `onSearch` event in mobile and tablet devices. [#20332](https://github.com/ant-design/ant-design/pull/20332) [@YaoKaiLun](https://github.com/YaoKaiLun)
- 🐞 Fix Tabs ink bar missing transition animation. [#20283](https://github.com/ant-design/ant-design/pull/20283)
- 🐞 Fix TreeNode without `icon` show white block in `showIcon` mode. [#20274](https://github.com/ant-design/ant-design/pull/20274)
- TypeScript
- ⚡️ Update filters define in Table `onChange`. [#20337](https://github.com/ant-design/ant-design/pull/20337) [@MrHeer](https://github.com/MrHeer)
## 3.26.3
`2019-12-14`
- 🛠 support `unpkg` field in `package.json`. [#20193](https://github.com/ant-design/ant-design/pull/20193)
- 🐞 Fix Tree `showLine` and `showIcon` missing icon. [#20196](https://github.com/ant-design/ant-design/pull/20196)
- 🐞 Fix Modal combine Drawer cause invalid scroll problem. [#20242](https://github.com/ant-design/ant-design/pull/20242)
- 🐞 Fix Drawer `switchScrollingEffect prop on a DOM element` warning. [#20175](https://github.com/ant-design/ant-design/pull/20175)
- 🐞 Fix Select Option `label` definition. [#20190](https://github.com/ant-design/ant-design/pull/20190) [@ZhechenLi](https://github.com/ZhechenLi)
- 💄 Optimize Form feedback icon padding. [#20164](https://github.com/ant-design/ant-design/pull/20164) [@Satloff](https://github.com/Satloff)
- 💄 Add less variables for Select/Cascader to optimize dropdown padding and border radius. [#20156](https://github.com/ant-design/ant-design/pull/20156) [@Satloff](https://github.com/Satloff)
## 3.26.2
`2019-12-10`
- 🐞 Fix DatePicker `disabledTime` TypeScript definition to be optional. [#20153](https://github.com/ant-design/ant-design/pull/20153) [@khaledkhalil94](https://github.com/khaledkhalil94)
- 🐞 Fix Transfer's `title` of `dataSource` TypeScript definition to be optional. [#20144](https://github.com/ant-design/ant-design/pull/20144) [@mraiguo](https://github.com/mraiguo)
## 3.26.1
`2019-12-09`
- 🐞 Fix List pagination options text align. [#20037](https://github.com/ant-design/ant-design/issues/20037)
- 🐞 Fix Button text not align well in Chrome. [#20059](https://github.com/ant-design/ant-design/pull/20059)
- 🐞 Fix DescriptionItem `className` error applied to label. [#20067](https://github.com/ant-design/ant-design/pull/20067) [@Liu-Ya](https://github.com/Liu-Ya)
- 🐞 Fix Tree duplicated icons when `showLine` is true. [#20090](https://github.com/ant-design/ant-design/issues/20090)
- 🐞 Fix Editable Typography flush in Firefox. [#20118](https://github.com/ant-design/ant-design/pull/20118)
- 🐞 Improve Icon `component` definition to be compatible with create-react-app svg component. [#20142](https://github.com/ant-design/ant-design/pull/20142)
- Table
- 🐞 Fix small table header border missing. [#20030](https://github.com/ant-design/ant-design/issues/20030)
- 🐞 Fix `filterIcon` throws error when render string or number.
- 🐞 Fix `filterIcon` shows wrong title when returns Tooltip. [#20049](https://github.com/ant-design/ant-design/issues/20049)
- 🐞 Fix columns have 9px align issue in Windows Chrome. [#19952](https://github.com/ant-design/ant-design/issues/19952)
## 3.26.0
`2019-12-01`
- 🏆 `3.26.0` will be the last minor version of antd v3. And v4 beta is coming!
- 🌟 Notification support `closeIcon` props. [#19618](https://github.com/ant-design/ant-design/pull/19618) [@liuchao233](https://github.com/liuchao233)
- 🌟 Typography support `pt_BR` locale. [#19651](https://github.com/ant-design/ant-design/pull/19651) [@liuchao233](https://github.com/liuchao233)
- 🌟 Table support `defaultFilteredValues` props. [#18925](https://github.com/ant-design/ant-design/pull/18925) [@mgcrea](https://github.com/mgcrea)
- 🇲🇰 Locale add Macedonian support. [#19647](https://github.com/ant-design/ant-design/pull/19647) [@sradevski](https://github.com/sradevski)
- 🐞 Fix Input.Group compat mode has wrong border radius for Input Addon. [#19926](https://github.com/ant-design/ant-design/pull/19926)
- 🐞 Fix Spin render default indicator when `indicator` is `null`. [#19943](https://github.com/ant-design/ant-design/pull/19943)
- 🐞 Fix Button component `disabled` with `loading` not prevent pointer-events. [#19958](https://github.com/ant-design/ant-design/pull/19958)
- 🐞 Fix message can not cancel when `key` is provided. [#19967](https://github.com/ant-design/ant-design/pull/19967)
- 🐞 Fix image in Upload with `picture-card` mode exceeds the border. [#20008](https://github.com/ant-design/ant-design/pull/20008) [@qq645381995](https://github.com/qq645381995)
- 🐞 Fix Input clear icon overlap with feedback icon. [#20017](https://github.com/ant-design/ant-design/pull/20017)
- 🐞 Fix Slider tooltip text not align center. [#20016](https://github.com/ant-design/ant-design/pull/20016)
- 🐞 Fix Descriptions items not working with React.Fragment. [#20019](https://github.com/ant-design/ant-design/pull/20019)
- 🛠 Upload under drag mode moves `className` and `style` to the real effect dom.[#19987](https://github.com/ant-design/ant-design/pull/19987)
- 💄Add less variable `@table-header-bg-sm` and fix small Table footer style. [#19939](https://github.com/ant-design/ant-design/pull/19939)
## 3.25.3
`2019-11-24`
- 🐞 Fix TimePicker disabled item style when focussed. [#19812](https://github.com/ant-design/ant-design/pull/19812) [@yoyo837](https://github.com/yoyo837)
- 🐞 Fix Menu.Item link style inside Badge. [#19810](https://github.com/ant-design/ant-design/pull/19810)
- 🐞 Fix Upload `picture-card` type, for crashed style when list item is removing. [#19783](https://github.com/ant-design/ant-design/pull/19783) [@qq645381995](https://github.com/qq645381995)
- 🇳🇱 Update `sk-SK` locales. [#19787](https://github.com/ant-design/ant-design/pull/19787) [@Kamahl19](https://github.com/Kamahl19)
- TypeScript
- ⚡️ Export interface types in Tooltip. [19846](https://github.com/ant-design/ant-design/pull/19846) [@kachkaev](https://github.com/kachkaev)
## 3.25.2
`2019-11-17`
- 🐞 Fix Upload List do not have tooltip when upload failed. [#19689](https://github.com/ant-design/ant-design/pull/19689) [@qq645381995](https://github.com/qq645381995)
- 💄 Fix Transfer search style to avoid text overlap with clear icon. [#19693](https://github.com/ant-design/ant-design/pull/19693) [@Abdullah700](https://github.com/Abdullah700)
- 🇳🇱 Update `NL-nl` locales. [#19734](https://github.com/ant-design/ant-design/pull/19734) [@hoest](https://github.com/hoest)
- TypeScript
- 🐞 Fix Table FilterDropdownProps definition. [#19701](https://github.com/ant-design/ant-design/pull/19701) [@DeanVanNiekerk](https://github.com/DeanVanNiekerk)
- 🛠 Slider add `reverse` definition. [#19713](https://github.com/ant-design/ant-design/pull/19713) [@jacklee814](https://github.com/jacklee814)
- 🐞 Update Table `filteredValue` definition. [#19722](https://github.com/ant-design/ant-design/pull/19722) [@andelf](https://github.com/andelf)
## 3.25.1
`2019-11-10`
- 🐞 Fix less variables of `@menu-icon-size` and `@menu-icon-size-lg` not working. [#19553](https://github.com/ant-design/ant-design/pull/19553) [@yoyo837](https://github.com/yoyo837)
- 🐞 Fix DirectoryTree `defaultExpandedAll` not working with `treeData`. [#19646](https://github.com/ant-design/ant-design/pull/19646)
- 🐞 Fix Drawer content overflow when `placement` prop is top or bottom. [#19506](https://github.com/ant-design/ant-design/pull/19506) [@shaodahong](https://github.com/shaodahong)
- 🐞 Fix broken Menu.ItemGroup style inside Dropdown again. [#19578](https://github.com/ant-design/ant-design/pull/19578)
- 🐞 Fix Dropdown that menu icon `margin-right` style is missing. [#19635](https://github.com/ant-design/ant-design/pull/19635)
- 🐞 Fix Form.Item custom props not working. [#19599](https://github.com/ant-design/ant-design/pull/19599) [@yoyo837](https://github.com/yoyo837)
- 🐞 Fix Icon `extraCommonProps` not working properly. [#19572](https://github.com/ant-design/ant-design/pull/19572) [@yoyo837](https://github.com/yoyo837)
- 🐞 Fix Modal.method() scrollbar not disabled. [#19233](https://github.com/ant-design/ant-design/pull/19233) [@emersonlaurentino](https://github.com/emersonlaurentino)
- Table
- 🐞 Fix border missing in fixed columns. [#19559](https://github.com/ant-design/ant-design/pull/19559)
- 🐞 Fix Column with `sortOrder` throw error of inifinite loop. [#19558](https://github.com/ant-design/ant-design/pull/19558)
- 🐞 Fix Column `defaultSortOrder` not working. [#19558](https://github.com/ant-design/ant-design/pull/19558)
- TypeScript
- 🐞 Fix type definition of `ListStyle` for Transfer. [#19568](https://github.com/ant-design/ant-design/pull/19568) [@lxnxbnq](https://github.com/lxnxbnq)
- 🐞 Fix type definition of multiple props for RangePicker. [#19421](https://github.com/ant-design/ant-design/pull/19421) [@JennieJi](https://github.com/JennieJi)
## 3.25.0
`2019-11-04`
- 🌟 Transfer `listStyle` support function callback. [#19330](https://github.com/ant-design/ant-design/pull/19330) [@lxnxbnq](https://github.com/lxnxbnq)
- 🌟 `icon` of Avatar support ReactNode. [#19368](https://github.com/ant-design/ant-design/pull/19368)
- 🌟 TextArea support `allowClear`. [#19310](https://github.com/ant-design/ant-design/pull/19310) [@Rustin-Liu](https://github.com/Rustin-Liu)
- 🌟 Upload support to custom `method` for request. [#19533](https://github.com/ant-design/ant-design/pull/19533)
- 🌟 Upload `onChange` add `XMLHttpRequest` as additional param. [#19539](https://github.com/ant-design/ant-design/pull/19539) [@hahmadia](https://github.com/hahmadia)
- 🐞 Fix WeekPicker `defaultPickerValue` not works. [#19141](https://github.com/ant-design/ant-design/pull/19141) [@NightFox7](https://github.com/NightFox7)
- 🐞 Fix DatePicker `onEsc is not a function` TypeError. [#19474](https://github.com/ant-design/ant-design/pull/19474)
- 🐞 Fix table does not automatically scroll to the top when change page size. [#19474](https://github.com/ant-design/ant-design/pull/19474) [@MrHeer](https://github.com/MrHeer)
- 💄 Fix Icon Button not aligned well in Button.Group. [#19453](https://github.com/ant-design/ant-design/pull/19453)
- 💄 Fix Checkbox not aligned center of some cases in Chrome. [#19452](https://github.com/ant-design/ant-design/pull/19452)
- 💄 Fix Menu `margin` collapsed issue. [#19476](https://github.com/ant-design/ant-design/pull/19476) [@wangweijun0418](https://github.com/wangweijun0418)
- 💄 Remove useless style in Select. [#19510](https://github.com/ant-design/ant-design/pull/19510) [@jacklee814](https://github.com/jacklee814)
- 💄 Added less variables `@input-number-hover-border-color`, `@select-background`. [#19546](https://github.com/ant-design/ant-design/pull/19546)
- 🌍 Add `downloadFile` in all locale files. [#19361](https://github.com/ant-design/ant-design/pull/19361) [@DemetriusHR](https://github.com/DemetriusHR)
- 🇹🇭 Add missing translations in Thai (th_TH) locale. [#19378](https://github.com/ant-design/ant-design/pull/19378) [@anawinwz](https://github.com/anawinwz)
- Typescript
- 🐞 Add Upload missing `preview` type. [#19496](https://github.com/ant-design/ant-design/pull/19496) [@chnliquan](https://github.com/chnliquan)
## 3.24.3
`2019-10-26`
- 🐞 Fix Table sort not working when `columns` inside render. [#19404](https://github.com/ant-design/ant-design/pull/19404)
- 🐞 Fix Grid responsive `gutter` not working. [#19308](https://github.com/ant-design/ant-design/pull/19308)
- 🐞 Fix small Table border style. [#19312](https://github.com/ant-design/ant-design/pull/19312) [#19342](https://github.com/ant-design/ant-design/pull/19342)
- 🐞 Fix the problem that Menu in Dropdown is not highlighted when SubMenu is selected. [#19313](https://github.com/ant-design/ant-design/pull/19313)
- 🐞 Fix the problem that moment.js in Typography & Drawer & Statistic can't be tree-shaking. [#19317](https://github.com/ant-design/ant-design/pull/19317)
- 🐞 Fix Input.Search react warnings of `non-boolean attribute` and `unique key`. [#19357](https://github.com/ant-design/ant-design/pull/19357)
- 🐞 Fix Modal icon position when not use title. [#19419](https://github.com/ant-design/ant-design/pull/19419)
- 💄 Fix a problem with the mouse pointer error when Checkbox is disabled. [#19403](https://github.com/ant-design/ant-design/pull/19403)
- 💄 Add `@modal-header-color` variable. [#19385](https://github.com/ant-design/ant-design/pull/19385)
- 🛠 Improved some TypeScript definitions. [#19377](https://github.com/ant-design/ant-design/pull/19377) [#19343](https://github.com/ant-design/ant-design/pull/19343) [#19333](https://github.com/ant-design/ant-design/pull/19333)
## 3.24.2
`2019-10-19`
- 🐞 Fix Table `scroll={{ x: 'max-content' }}` rendered without scrollbar problem in Chrome. [#19284](https://github.com/ant-design/ant-design/pull/19284)
- 🐞 Fix Table crash when passing `column.filterDropdown` as new prop. [#19302](https://github.com/ant-design/ant-design/pull/19302)
- 🐞 Fix Upload `download` button trigger preview unexpectedly. [#19268](https://github.com/ant-design/ant-design/pull/19268) [@qq645381995](https://github.com/qq645381995)
- 🐞 Fix Comment long author name breaks on small screen. [#19272](https://github.com/ant-design/ant-design/pull/19272) [@rayronvictor](https://github.com/rayronvictor)
- Typescript
- 🐞 Improve RangePicker `value` types. [#19300](https://github.com/ant-design/ant-design/pull/19300) [@neung123](https://github.com/neung123)
- 🐞 Improve Select `mode` types. [#19286](https://github.com/ant-design/ant-design/pull/19286) [@wleven](https://github.com/wleven)
- 🐞 Improve Upload `customRequest` types. [#19278](https://github.com/ant-design/ant-design/pull/19278) [@broder](https://github.com/broder)
## 3.24.1
`2019-10-17`
- 🐞 Fix Table throw `React.createRef is not a function error` in old version of React . [#19262](https://github.com/ant-design/ant-design/pull/19262)
- 🐞 Fix Table TypeScript definition missing Column and ColumnGroup. [#19251](https://github.com/ant-design/ant-design/pull/19251)
## 3.24.0
`2019-10-16`
- 🔥 Promote [Yuque](https://www.yuque.com/?chInfo=ch_antd) on home page.
- Table
- 🌟 Added `tableLayout` property for `table-layout` attribute. And using `tableLayout="fixed"` by default in scroll table to resolve align issue caused by cell content. [#17284](https://github.com/ant-design/ant-design/pull/17284)
- 🌟 Added `column.ellipsis` to ellipsize cell content.
- 🌟 Added the `scroll.scrollToFirstRowOnChange` property to set whether to scroll to the top of the table after page changing. [#18726](https://github.com/ant-design/ant-design/pull/18726)
- 🌟 `filterDropdown` added a `visible` parameter to get the display state of the dropdown box. [#17614](https://github.com/ant-design/ant-design/pull/17614) [@sedx](https://github.com/ant-design/ant-design/pull/17614)
- 🌟 `title` added a `sortColumn` parameter to get the currently sorted column. [#19012](https://github.com/ant-design/ant-design/pull/19012) [@swillis12](https://github.com/swillis12)
- 🌟 The `sorter` parameter of `onChange` will always contain `column` information when sorting. [#19226](https://github.com/ant-design/ant-design/pull/19226)
- 🐞 Fix Table filter submenu checkbox margin. [#e1a4f28](https://github.com/ant-design/ant-design/commit/e1a4f2891e3c35ae26495432bd2d288d4d81064a)
- 🌟 Anchor added a `onChange` attribute to listen for changes to anchor links. [#18715](https://github.com/ant-design/ant-design/pull/18715)
- Upload
- 🌟 Added `showDownloadIcon` attribute to display download icon. [#18664](https://github.com/ant-design/ant-design/pull/18664) [@qq645381995](https://github.com/qq645381995)
- 🌟 Support for `onRemove` control of upload interrupts. [#18937](https://github.com/ant-design/ant-design/pull/18937) [@ladjzero](https://github.com/ladjzero)
- 🌟 Input.Search added a `loading` property to show the state in the load. [#18771](https://github.com/ant-design/ant-design/pull/18771)
- 🌟 Grid's `gutter` property added support for vertical spacing. Now you can set an array for `gutter` and the second value of the array for vertical spacing. [#18979](https://github.com/ant-design/ant-design/pull/18979)
- 🌟 message added support for updating content with a unique key. [#18678](https://github.com/ant-design/ant-design/pull/18678)
- 🌟 Layout added a `zeroWidthTriggerStyle` property to control the style of the special `trigger` that appears when `collapsedWidth` is `0`. [#19079](https://github.com/ant-design/ant-design/pull/19079)
- 🌟 Drawer added the `drawerStyle` and `headerStyle` properties. [#19109](https://github.com/ant-design/ant-design/pull/19109)
- PageHeader
- 💄 Redesigned. [#19100](https://github.com/ant-design/ant-design/pull/19100)
- 🌟 Added `ghost` property to set whether white background is needed. [#19100](https://github.com/ant-design/ant-design/pull/19100)
- ConfigProvider
- 🌟 Added `pageHeader` to globally control the style of PageHeader. [#19100](https://github.com/ant-design/ant-design/pull/19100)
- 🐞 Fixed the issue that `moment` can't be tree-shark. [#19115](https://github.com/ant-design/ant-design/pull/19115)
- 🐞 Fixed the issue that the `removeIcon` and `clearIcon` properties of TreeSelect didn't work. [#18949](https://github.com/ant-design/ant-design/pull/18949)
- 🐞 Fixed the issue that the `switcherIcon` does not take effect after the Tree setting `showLine`. [#18829](https://github.com/ant-design/ant-design/pull/18829) [@MrHeer](https://github.com/MrHeer)
- 🐞 Fixed the issue that the Slider component set the handle size and positioned incorrectly. [#19120](https://github.com/ant-design/ant-design/pull/19120)
- Collapse
- 🐞 Fix icon styles under IE 11. [#19135](https://github.com/ant-design/ant-design/pull/19135) [@GBcrimson](https://github.com/GBcrimson)
- 🐞 Keep `className` given to `expandIcon`. [#19160](https://github.com/ant-design/ant-design/pull/19160) [@gpetrioli](https://github.com/gpetrioli)
- 🐞 Fixed the issue that `defaultExpandAll` does not take effect when Tree.DirectoryTree component passed `treeData`. [#19148](https://github.com/ant-design/ant-design/pull/19148)
- 🐞 Fixed the issue with some of the Menu styles under Dropdown. [#19150](https://github.com/ant-design/ant-design/pull/19150)
- 🐞 Fixed Cascader's `placeholder` internationalization error. [#19227](https://github.com/ant-design/ant-design/pull/19227) [@kagawagao](https://github.com/kagawagao)
- 🌟 Added less variables `@typography-title-margin-top`, `@typography-title-margin-bottom`. [#18746](https://github.com/ant-design/ant-design/pull/18746)
- 🗑 Discard the `autosize` property of Input.TextArea, use `autoSize` instead. [#19177](https://github.com/ant-design/ant-design/pull/19177)
## 3.23.6
`2019-10-05`
- 🐞 Fix Typography `ref` warning of React. [#19074](https://github.com/ant-design/ant-design/pull/19074)
## 3.23.5
`2019-09-29`
- 🐞 Fix Upload preview image cannot fill the picture card box. [#18990](https://github.com/ant-design/ant-design/pull/18990)
- 🐞 Fix Breadcrumb not support `data-*` and `aria-*` attributes. [#18941](https://github.com/ant-design/ant-design/pull/18941) [@sosohime](https://github.com/sosohime)
- 🐞 Fix TreeSelect `removeIcon` and `clearIcon` not working. [#18949](https://github.com/ant-design/ant-design/issues/18949) [@sosohime](https://github.com/sosohime)
- 🐞 Fix Tree `switcherIcon` prop not working when `showLine` is true. [#18829](https://github.com/ant-design/ant-design/pull/18829) [@MrHeer](https://github.com/MrHeer)
- 🐞 Fix style bug of Button with icon only when in Button.Group. [#18994](https://github.com/ant-design/ant-design/pull/18994)
- 🐞 Remove Select useless prop `searchValue` which is a total misunderstanding. [#19003](https://github.com/ant-design/ant-design/pull/19003)
- 🐞 Fix Avatar string blink when ssr render at first time. [#19029](https://github.com/ant-design/ant-design/pull/19029)
- TypeScript
- 🐞 Fix Grid type definition. [#18946](https://github.com/ant-design/ant-design/pull/18946) [@handycode](https://github.com/handycode)
## 3.23.4
`2019-09-21`
- 🐞 Fix item not disabled when Transfer is `disabled`. [#18849](https://github.com/ant-design/ant-design/pull/18849)
- 🐞 Revert Dragger to class component to fix ref warning. [#18707](https://github.com/ant-design/ant-design/issues/18707)
- 🐞 Fix Input `addonAfter` icon height bug in Chrome. [#18858](https://github.com/ant-design/ant-design/pull/18858)
- 🐞 Fix Menu lost state when being collapsed to `0px`. [#18907](https://github.com/ant-design/ant-design/pull/18907)
- 🐞 Disabled input should not trigger the action of suffix part. [#18900](https://github.com/ant-design/ant-design/pull/18900)
- 🐞 Fix title and content of Alert not break line when long text exist. [#18929](https://github.com/ant-design/ant-design/pull/18929)
- 💄 Add `@page-header-back-color` less variable. [#18887](https://github.com/ant-design/ant-design/pull/18887)
- TypeScript
- 🐞 Fix Table event type definition. [#18910](https://github.com/ant-design/ant-design/pull/18910)
## 3.23.3
`2019-09-16`

View File

@@ -15,6 +15,299 @@ timeline: true
---
`2020-02-08`
- 🐞 修复 Badge 在 Typography 下数字错位的问题。[#21237](https://github.com/ant-design/ant-design/pull/21237)
- 🐞 修复 Steps 在 `size="small"``labelPlacement="vertical"` 时图标没有对齐的问题。[#21258](https://github.com/ant-design/ant-design/pull/21258)
- 🐞 修复 Typography 在可编辑状态时光标没有在输入框末位的问题。[#21268](https://github.com/ant-design/ant-design/pull/21268)
- TypeScript
- 💄 完善 Form 中校验规则类型的类型定义。[#21250](https://github.com/ant-design/ant-design/pull/21250) [@hansololai](https://github.com/hansololai)
- 🐞 修复 Tree 中事件类型定义不正确的问题。[#21200](https://github.com/ant-design/ant-design/pull/21200) [@Jirka-Lhotka](https://github.com/Jirka-Lhotka)
## 3.26.8
`2020-02-03`
- 🐞 修复 Tooltip `title``0` 时没有显示的问题。[#20894](https://github.com/ant-design/ant-design/pull/20894)
- 🐞 修复 List `actions` 位置不在右边的问题。[#20897](https://github.com/ant-design/ant-design/pull/20897)
- 🐞 修复 Card `actions` 字体大小不受 less 变量影响的问题。[#21106](https://github.com/ant-design/ant-design/pull/21106)
- 🐞 修正 Layout 各组件的 `displayName`。[#21124](https://github.com/ant-design/ant-design/pull/21124)
- 🐞 优化 Modal.confirm 的 `okButtonProps``cancelButtonProps` 的 TypeScript 类型。[#21165](https://github.com/ant-design/ant-design/pull/21165)
## 3.26.7
`2020-01-13`
- 💄 优化 Table 固定列在某些情况下出现空白间隔的问题。[#20821](https://github.com/ant-design/ant-design/pull/20821) [@AshoneA](https://github.com/AshoneA)
- 🐞 修复 Tree `switcherIcon` 在叶子节点上展示的问题。[#20753](https://github.com/ant-design/ant-design/pull/20753)
- 🐞 修复 Badge 在 Table 固定列中穿透的问题。[#20751](https://github.com/ant-design/ant-design/pull/20751)
- 🐞 修复 Cascader `fieldNames` 中 label 和 value 共用一个值时搜索功能失效的问题。[#20720](https://github.com/ant-design/ant-design/pull/20720)
- 🐞 修复 Collapse 背景使用错误的 less 变量。[#20718](https://github.com/ant-design/ant-design/pull/20718) [@kuitos](https://github.com/kuitos)
- 🐞 修复 `<Form layout="vertical" >` 内 Input.Group 偏上一像素的问题。[#20685](https://github.com/ant-design/ant-design/pull/20685)
## 3.26.6
`2020-01-03`
- 📢 v3 分支由 `master` 进入 `3.x-stable`v4 合入 `master`
- 💄 优化 Steps `type="navigation"` 在小屏幕下的样式。[#20545](https://github.com/ant-design/ant-design/pull/20545)
- 🐞 修复 `message.xxx` 传入 `null` 会报错的问题。[#20546](https://github.com/ant-design/ant-design/pull/20546)
- 🐞 优化 Input.Password 在 dom 中明文显示 `value` 属性的问题。[#20544](https://github.com/ant-design/ant-design/pull/20544)
## 3.26.5
`2019-12-29`
- Table
- 🐞 回滚排序后默认回到第一页的逻辑。[#20507](https://github.com/ant-design/ant-design/pull/20507)
- 🐞 修复分组列头在 `colspan=1` 时文本没有对齐的问题。[#20463](https://github.com/ant-design/ant-design/pull/20463)
- 🐞 修复 Tabs 的 `animated` 属性为 false 时,高亮条消失的问题。[#20417](https://github.com/ant-design/ant-design/pull/20417) [@xrkffgg](https://github.com/xrkffgg)
- 🐞 修复 Tree 节点缩进不正确的问题。[#20456](https://github.com/ant-design/ant-design/pull/20456)
## 3.26.4
`2019-12-22`
- 💄 优化 Steps `subTitle``labelPlacement="vertical"` 下的展现方式。[#20325](https://github.com/ant-design/ant-design/pull/20325)
- 🐞 修复 Upload 组件预览不支持 `.ico` 文件问题。[#20375](https://github.com/ant-design/ant-design/pull/20375) [@Rustin-Liu](https://github.com/Rustin-Liu)
- 🐞 修复 Form feedback 图标结合 Input `suffix` 显示不正确。[#20363](https://github.com/ant-design/ant-design/pull/20363)
- 🐞 修复 Tag 关闭时 `onClick` 被触发的问题。[#20355](https://github.com/ant-design/ant-design/pull/20355)
- 🐞 修复 Cascader 组件 Form 校验触发时,鼠标悬浮显示颜色问题。[#20347](https://github.com/ant-design/ant-design/pull/20347) [@xrkffgg](https://github.com/xrkffgg)
- 🐞 修复移动端点击搜索后,自动聚焦输入框,导致弹出键盘的问题。[#20332](https://github.com/ant-design/ant-design/pull/20332) [@YaoKaiLun](https://github.com/YaoKaiLun)
- 🐞 修复 Tabs 高亮条宽度的 `transition` 过度动画失效的问题。[#20283](https://github.com/ant-design/ant-design/pull/20283)
- 🐞 修复 TreeNode 不设置 `icon` 时会展示一个空白占位的问题。[#20274](https://github.com/ant-design/ant-design/pull/20274)
- TypeScript
- ⚡️ 更新 Table `onChange``filters` 的定义。[#20337](https://github.com/ant-design/ant-design/pull/20337) [@MrHeer](https://github.com/MrHeer)
## 3.26.3
`2019-12-14`
- 🛠 antd `package.json` 中补充 `unpkg` 字段。[#20193](https://github.com/ant-design/ant-design/pull/20193)
- 🐞 修复 Tree `showLine``showIcon` 同时开启时 `[+]` `[-]` 图标丢失的问题。[#20196](https://github.com/ant-design/ant-design/pull/20196)
- 🐞 修复 Modal 和 Drawer 结合使用时导致滚动失效的问题。[#20242](https://github.com/ant-design/ant-design/pull/20242)
- 🐞 修复 Drawer `switchScrollingEffect prop on a DOM element` 警告。[#20175](https://github.com/ant-design/ant-design/pull/20175)
- 🐞 修复 Select Option 的 `label` 属性定义。[#20190](https://github.com/ant-design/ant-design/pull/20190) [@ZhechenLi](https://github.com/ZhechenLi)
- 💄 优化 Form 反馈图标的间距样式。[#20164](https://github.com/ant-design/ant-design/pull/20164) [@Satloff](https://github.com/Satloff)
- 💄 Select/Cascader 新增和优化边距 padding 和圆角的相关 less 变量。[#20156](https://github.com/ant-design/ant-design/pull/20156) [@Satloff](https://github.com/Satloff)
## 3.26.2
`2019-12-10`
- 🐞 修正 DatePicker `disabledTime` 属性 TypeScript 定义为可选。[#20153](https://github.com/ant-design/ant-design/pull/20153) [@khaledkhalil94](https://github.com/khaledkhalil94)
- 🐞 修正 Transfer `dataSource``title` 属性 TypeScript 定义为可选。[#20144](https://github.com/ant-design/ant-design/pull/20144) [@mraiguo](https://github.com/mraiguo)
## 3.26.1
`2019-12-09`
- 🐞 修复 List 下分页选项文本对齐问题。[#20037](https://github.com/ant-design/ant-design/issues/20037)
- 🐞 修复 Chrome 下 Button 文字没有垂直居中的问题。[#20059](https://github.com/ant-design/ant-design/pull/20059)
- 🐞 修复 DescriptionItem 的 `className` 错误应用于 label。[#20067](https://github.com/ant-design/ant-design/pull/20067) [@Liu-Ya](https://github.com/Liu-Ya)
- 🐞 修复 Tree `showLine` 为 true 时展示多余图标的问题。[#20090](https://github.com/ant-design/ant-design/issues/20090)
- 🐞 修复 Typography 可编辑组件在 Firefox 下闪动的问题。[#20118](https://github.com/ant-design/ant-design/pull/20118)
- 🐞 修复 Icon `component` 的定义,使其兼容于 create-react-app 的 svg 组件定义。[#20142](https://github.com/ant-design/ant-design/pull/20142)
- Table
- 🐞 修复小号 Table 表头边框丢失的问题。[#20030](https://github.com/ant-design/ant-design/issues/20030)
- 🐞 修复 `filterIcon` 返回字符串或数字时报错的问题。
- 🐞 修复 `filterIcon` 返回 Tooltip 时显示了错误的 `title`。[#20049](https://github.com/ant-design/ant-design/issues/20049)
- 🐞 修复在 Windows Chrome 下固定列有 9px 的对齐问题。[#19952](https://github.com/ant-design/ant-design/issues/19952)
## 3.26.0
`2019-12-01`
- 🏆 `3.26.0` 将为 antd v3 最后一个 minor 版本v4 beta 版即将发布!
- 🌟 Notification 支持 `closeIcon` 属性。[#19618](https://github.com/ant-design/ant-design/pull/19618) [@liuchao233](https://github.com/liuchao233)
- 🌟 Typography 添加 `pt_BR` 国际化支持。[#19651](https://github.com/ant-design/ant-design/pull/19651) [@liuchao233](https://github.com/liuchao233)
- 🌟 Table 支持 `defaultFilteredValues` 属性。[#18925](https://github.com/ant-design/ant-design/pull/18925) [@mgcrea](https://github.com/mgcrea)
- 🇲🇰 国际化添加北马其顿支持。[#19647](https://github.com/ant-design/ant-design/pull/19647) [@sradevski](https://github.com/sradevski)
- 🐞 修复 Input.Group 紧凑模式下使用 Input Addon 圆角不对的问题。[#19926](https://github.com/ant-design/ant-design/pull/19926)
- 🐞 修复 Spin 在 `indicator` 属性为 `null` 时,渲染默认的旋转图标。[#19943](https://github.com/ant-design/ant-design/pull/19943)
- 🐞 修复 Button 组件 `disabled``loading` 状态下没有阻止鼠标事件。[#19958](https://github.com/ant-design/ant-design/pull/19958)
- 🐞 修复 message 组件使用 `key` 时无法手动取消的问题。[#19967](https://github.com/ant-design/ant-design/pull/19967)
- 🐞 修复 Upload 在 `picture-card` 模式下,图片过长会超出边界的问题。[#20008](https://github.com/ant-design/ant-design/pull/20008) [@qq645381995](https://github.com/qq645381995)
- 🐞 修复 Input 清除图标和反馈图标重合的问题。[#20017](https://github.com/ant-design/ant-design/pull/20017)
- 🐞 修复 Slider 的 tooltip 内容没有居中的问题。[#20016](https://github.com/ant-design/ant-design/pull/20016)
- 🐞 修复 Descriptions 内使用 React.Fragment 的渲染问题。[#20019](https://github.com/ant-design/ant-design/pull/20019)
- 🛠 Upload 拖拽模式下的 `className``style` 将会作用到真正的 dom 上。[#19987](https://github.com/ant-design/ant-design/pull/19987)
- 💄 新增 less 变量 `@table-header-bg-sm` 并修复小号 Table 的 footer 样式。[#19939](https://github.com/ant-design/ant-design/pull/19939)
## 3.25.3
`2019-11-24`
- 🐞 修复 TimePicker 禁用项 focus 时的样式问题。[#19812](https://github.com/ant-design/ant-design/pull/19812) [@yoyo837](https://github.com/yoyo837)
- 🐞 修复 Menu.Item 链接在 Badge 内时,始终处于 active 状态的问题。[#19810](https://github.com/ant-design/ant-design/pull/19810)
- 🐞 修复 Upload 类型为 `picture-card` 时,列表删除时的样式问题。[#19783](https://github.com/ant-design/ant-design/pull/19783) [@qq645381995](https://github.com/qq645381995)
- 🇳🇱 更新 `sk-SK` 国际化。[#19787](https://github.com/ant-design/ant-design/pull/19787) [@Kamahl19](https://github.com/Kamahl19)
- TypeScript
- ⚡️ 导出 Tooltip 类型定义。[19846](https://github.com/ant-design/ant-design/pull/19846) [@kachkaev](https://github.com/kachkaev)
## 3.25.2
`2019-11-17`
- 🐞 修复 Upload List 上传错误时没有鼠标悬浮提示的问题。[#19689](https://github.com/ant-design/ant-design/pull/19689) [@qq645381995](https://github.com/qq645381995)
- 💄 修复 Transfer 输入框内容会与清除按钮重叠的问题。[#19693](https://github.com/ant-design/ant-design/pull/19693) [@Abdullah700](https://github.com/Abdullah700)
- 🇳🇱 更新 `NL-nl` 国际化。[#19734](https://github.com/ant-design/ant-design/pull/19734) [@hoest](https://github.com/hoest)
- TypeScript
- 🐞 修复 Table FilterDropdownProps 定义。[#19701](https://github.com/ant-design/ant-design/pull/19701) [@DeanVanNiekerk](https://github.com/DeanVanNiekerk)
- 🛠 Slider 添加 `reverse` 定义。[#19713](https://github.com/ant-design/ant-design/pull/19713) [@jacklee814](https://github.com/jacklee814)
- 🐞 更新 Table `filteredValue` 定义。[#19722](https://github.com/ant-design/ant-design/pull/19722) [@andelf](https://github.com/andelf)
## 3.25.1
`2019-11-10`
- 🐞 修复定制 `@menu-icon-size``@menu-icon-size-lg` less 变量不生效的问题。[#19553](https://github.com/ant-design/ant-design/pull/19553) [@yoyo837](https://github.com/yoyo837)
- 🐞 修复 DirectoryTree 中 `defaultExpandedAll` 在使用 `treeData` 时不生效的问题。[#19646](https://github.com/ant-design/ant-design/pull/19646)
- 🐞 修复 Drawer 中 `placement` 属性为 top 或 bottom 时内容溢出的问题。[#19506](https://github.com/ant-design/ant-design/pull/19506) [@shaodahong](https://github.com/shaodahong)
- 🐞 修复 Dropdown 下 Menu.ItemGroup 样式错乱的问题。 [#19578](https://github.com/ant-design/ant-design/pull/19578)
- 🐞 修复 Dropdown 中菜单图标丢失右边距的问题。[#19635](https://github.com/ant-design/ant-design/pull/19635)
- 🐞 修复 Form.Item 中自定义属性无法生效的问题。[#19599](https://github.com/ant-design/ant-design/pull/19599) [@yoyo837](https://github.com/yoyo837)
- 🐞 修复 Icon 中 `extraCommonProps` 属性不生效的问题。 [#19572](https://github.com/ant-design/ant-design/pull/19572) [@yoyo837](https://github.com/yoyo837)
- 🐞 修复 Modal.method() 中浏览器滚动条没有禁用的问题。[#19233](https://github.com/ant-design/ant-design/pull/19233) [@emersonlaurentino](https://github.com/emersonlaurentino)
- Table
- 🐞 修复合并单元格和固定列同时使用时边框丢失的问题。[#19559](https://github.com/ant-design/ant-design/pull/19559)
- 🐞 修复 Column 设置了 `sortOrder` 属性导致死循环的问题。[#19558](https://github.com/ant-design/ant-design/pull/19558)
- 🐞 修复 Column 的 `defaultSortOrder` 属性不生效的问题。[#19558](https://github.com/ant-design/ant-design/pull/19558)
- TypeScript
- 🐞 修复 Transfer 中 `ListStyle` 的类型定义。[#19568](https://github.com/ant-design/ant-design/pull/19568) [@lxnxbnq](https://github.com/lxnxbnq)
- 🐞 修复 RangePicker 中多个属性的类型定义缺失的问题。[#19421](https://github.com/ant-design/ant-design/pull/19421) [@JennieJi](https://github.com/JennieJi)
## 3.25.0
`2019-11-04`
- 🌟 Transfer `listStyle` 支持回调函数。[#19330](https://github.com/ant-design/ant-design/pull/19330) [@lxnxbnq](https://github.com/lxnxbnq)
- 🌟 Avatar 的 `icon` 属性支持传递 ReactNode。[#19368](https://github.com/ant-design/ant-design/pull/19368)
- 🌟 TextArea 支持 `allowClear`。[#19310](https://github.com/ant-design/ant-design/pull/19310) [@Rustin-Liu](https://github.com/Rustin-Liu)
- 🌟 Upload 新增 `method` 属性用于修改请求方式。[#19533](https://github.com/ant-design/ant-design/pull/19533)
- 🌟 Upload `onChange` 新增 `XMLHttpRequest` 作为额外参数。[#19539](https://github.com/ant-design/ant-design/pull/19539) [@hahmadia](https://github.com/hahmadia)
- 🐞 修复 WeekPicker 中 `defaultPickerValue` 不生效的问题。[#19141](https://github.com/ant-design/ant-design/pull/19141) [@NightFox7](https://github.com/NightFox7)
- 🐞 修复 DatePicker 抛出 `onEsc is not a function` 错误。[#19474](https://github.com/ant-design/ant-design/pull/19474)
- 🐞 修复 Table 改变每页大小时不滚动到第一行的问题。[#19474](https://github.com/ant-design/ant-design/pull/19474) [@MrHeer](https://github.com/MrHeer)
- 💄 修复 Button.Group 下图标按钮没有对齐的问题。[#19453](https://github.com/ant-design/ant-design/pull/19453)
- 💄 修复 Checkbox 对勾在 Chrome 下有时没有居中的问题。[#19452](https://github.com/ant-design/ant-design/pull/19452)
- 💄 修复 Menu `margin` 样式重合的问题。[#19476](https://github.com/ant-design/ant-design/pull/19476) [@wangweijun0418](https://github.com/wangweijun0418)
- 💄 移除 Select 中没有必要的样式。[#19510](https://github.com/ant-design/ant-design/pull/19510) [@jacklee814](https://github.com/jacklee814)
- 💄 新增 less 变量 `@input-number-hover-border-color`, `@select-background`。[#19546](https://github.com/ant-design/ant-design/pull/19546)
- 🌍 国际化添加缺失的 `downloadFile` 支持。[#19361](https://github.com/ant-design/ant-design/pull/19361) [@DemetriusHR](https://github.com/DemetriusHR)
- 🇹🇭 添加丢失的泰文国际化 (th_TH)。[#19378](https://github.com/ant-design/ant-design/pull/19378) [@anawinwz](https://github.com/anawinwz)
- Typescript
- 🐞 修复 Upload 丢失的 `preview` 定义。[#19496](https://github.com/ant-design/ant-design/pull/19496) [@chnliquan](https://github.com/chnliquan)
## 3.24.3
`2019-10-26`
- 🐞 修复 Table `columns` 在 render 中会导致排序失效的问题。[#19404](https://github.com/ant-design/ant-design/pull/19404)
- 🐞 修复 Grid 响应式 `gutter` 失效的问题。[#19308](https://github.com/ant-design/ant-design/pull/19308)
- 🐞 修复小号 Table 边框样式问题。[#19312](https://github.com/ant-design/ant-design/pull/19312) [#19342](https://github.com/ant-design/ant-design/pull/19342)
- 🐞 修复 Dropdown 中的 Menu 在 SubMenu 选中后父级菜单未高亮的问题。[#19313](https://github.com/ant-design/ant-design/pull/19313)
- 🐞 修复 Typography & Drawer & Statistic 中的 moment.js 无法被 tree-shaking 的问题。[#19317](https://github.com/ant-design/ant-design/pull/19317)
- 🐞 修复 Input.Search 出现 `non-boolean attribute``unique key` 警告信息。[#19357](https://github.com/ant-design/ant-design/pull/19357)
- 🐞 修复 Modal 没有标题时,图标没能对齐的问题。[#19419](https://github.com/ant-design/ant-design/pull/19419)
- 💄 修复 Checkbox 在被禁用时,光标仍为可选状态的问题。[#19403](https://github.com/ant-design/ant-design/pull/19403)
- 💄 新增 `@modal-header-color` 变量。[#19385](https://github.com/ant-design/ant-design/pull/19385)
- 🛠 多处 TypeScript 的定义更新。[#19377](https://github.com/ant-design/ant-design/pull/19377) [#19343](https://github.com/ant-design/ant-design/pull/19343) [#19333](https://github.com/ant-design/ant-design/pull/19333)
## 3.24.2
`2019-10-19`
- 🐞 修复 Table `scroll.x` 设置 `max-content` 无效导致横向滚动消失的问题。[#19284](https://github.com/ant-design/ant-design/pull/19284)
- 🐞 修复 Table 将 `column.filterDropdown` 作为新属性设置时报错的问题。[#19302](https://github.com/ant-design/ant-design/pull/19302)
- 🐞 Fix Upload 点击下载按钮会触发预览的问题。[#19268](https://github.com/ant-design/ant-design/pull/19268) [@qq645381995](https://github.com/qq645381995)
- 🐞 修复 Comment 长作者名在小屏幕上破坏布局的问题。[#19272](https://github.com/ant-design/ant-design/pull/19272) [@rayronvictor](https://github.com/rayronvictor)
- Typescript
- 🐞 优化 RangePicker `value` 属性定义。[#19300](https://github.com/ant-design/ant-design/pull/19300) [@neung123](https://github.com/neung123)
- 🐞 优化 Select `mode` 属性定义。[#19286](https://github.com/ant-design/ant-design/pull/19286) [@wleven](https://github.com/wleven)
- 🐞 优化 Upload `customRequest` 属性定义。[#19278](https://github.com/ant-design/ant-design/pull/19278) [@broder](https://github.com/broder)
## 3.24.1
`2019-10-17`
- 🐞 修复 Table 在旧版 React 会报 `React.createRef is not a function` 的错误信息。[#19262](https://github.com/ant-design/ant-design/pull/19262)
- 🐞 修复 Table TypeScript 定义丢失 Column 和 ColumnGroup 的问题。[#19251](https://github.com/ant-design/ant-design/pull/19251)
## 3.24.0
`2019-10-16`
- 🔥 首页新增[语雀](https://www.yuque.com/?chInfo=ch_antd)的推广链接。
- Table
- 🌟 新增 `tableLayout` 属性,支持设置表格的 `table-layout` 布局,并在固定表头/列下默认开启 `tableLayout="fixed"`,解决因为表格自动根据内容排版造成的列对齐问题。[#17284](https://github.com/ant-design/ant-design/pull/17284)
- 🌟 新增 `column.ellipsis` 支持单元格内容自动省略。
- 🌟 新增 `scroll.scrollToFirstRowOnChange` 属性,用于设置在翻页后是否滚动到表格顶部。[#18726](https://github.com/ant-design/ant-design/pull/18726)
- 🌟 `filterDropdown` 新增 `visible` 参数,用于获取下拉框的显示状态。[#17614](https://github.com/ant-design/ant-design/pull/17614) [@sedx](https://github.com/ant-design/ant-design/pull/17614)
- 🌟 `title` 方法新增 `sortColumn` 参数,用于获取当前排序的列。[#19012](https://github.com/ant-design/ant-design/pull/19012) [@swillis12](https://github.com/swillis12)
- 🌟 排序时 `onChange``sorter` 参数将始终包含 `column` 信息。[#19226](https://github.com/ant-design/ant-design/pull/19226)
- 🐞 修复过滤下拉菜单的间距问题。[#e1a4f28](https://github.com/ant-design/ant-design/commit/e1a4f2891e3c35ae26495432bd2d288d4d81064a)
- 🌟 Anchor 新增 `onChange` 属性,用于监听锚点链接的改变。[#18715](https://github.com/ant-design/ant-design/pull/18715)
- Upload
- 🌟 新增 `showDownloadIcon` 属性,用于展示下载图标。[#18664](https://github.com/ant-design/ant-design/pull/18664) [@qq645381995](https://github.com/qq645381995)
- 🌟 支持 `onRemove` 对上传中断的控制。[#18937](https://github.com/ant-design/ant-design/pull/18937) [@ladjzero](https://github.com/ladjzero)
- 🌟 Input.Search 新增 `loading` 属性,用于展示加载中的状态。[#18771](https://github.com/ant-design/ant-design/pull/18771)
- 🌟 Grid 的 `gutter` 属性新增垂直间距的支持,现在你可以给 `gutter` 设置一个数组,数组的第二个值就表示垂直间距。[#18979](https://github.com/ant-design/ant-design/pull/18979)
- 🌟 message 新增支持通过唯一的 `key` 来更新内容。[#18678](https://github.com/ant-design/ant-design/pull/18678)
- 🌟 Layout 新增 `zeroWidthTriggerStyle` 属性以控制当 `collapsedWidth``0` 时,出现的特殊 `trigger` 的样式。[#19079](https://github.com/ant-design/ant-design/pull/19079)
- 🌟 Drawer 新增 `drawerStyle``headerStyle` 属性。[#19109](https://github.com/ant-design/ant-design/pull/19109)
- PageHeader
- 💄 重新设计了样式 [#19100](https://github.com/ant-design/ant-design/pull/19100)
- 🌟 新增 `ghost` 属性,用于设置是否需要白底背景。[#19100](https://github.com/ant-design/ant-design/pull/19100)
- ConfigProvider
- 🌟 新增 `pageHeader` 用于全局控制 PageHeader 的样式。[#19100](https://github.com/ant-design/ant-design/pull/19100)
- 🐞 修复 moment 不能被 tree shaking 的问题。[#19115](https://github.com/ant-design/ant-design/pull/19115)
- 🐞 修复 TreeSelect 的 `removeIcon``clearIcon` 属性不生效的问题。[#18949](https://github.com/ant-design/ant-design/pull/18949)
- 🐞 修复 Tree 设置 `showLine``switcherIcon` 不生效的问题。[#18829](https://github.com/ant-design/ant-design/pull/18829) [@MrHeer](https://github.com/MrHeer)
- 🐞 修复 Slider 组件设置 `handle` 大小后定位错误的问题。[#19120](https://github.com/ant-design/ant-design/pull/19120)
- Collapse
- 🐞 修复在 IE 11 下的图标样式。[#19135](https://github.com/ant-design/ant-design/pull/19135) [@GBcrimson](https://github.com/GBcrimson)
- 🐞 修复 `expandIcon``className` 会被覆盖的问题。[#19160](https://github.com/ant-design/ant-design/pull/19160) [@gpetrioli](https://github.com/gpetrioli)
- 🐞 修复 Tree.DirectoryTree 组件传入 `treeData``defaultExpandAll` 不生效的问题。[#19148](https://github.com/ant-design/ant-design/pull/19148)
- 🐞 修复 Dropdown 下部分 Menu 样式错乱的问题。[#19150](https://github.com/ant-design/ant-design/pull/19150)
- 🐞 修复 Cascader 的 `placeholder` 国际化错误。[#19227](https://github.com/ant-design/ant-design/pull/19227) [@kagawagao](https://github.com/kagawagao)
- 🌟 新增 less 变量 `@typography-title-margin-top``@typography-title-margin-bottom`。[#18746](https://github.com/ant-design/ant-design/pull/18746)
- 🗑 废弃 Input.TextArea 的 `autosize` 属性,请使用 `autoSize` 代替。[#19177](https://github.com/ant-design/ant-design/pull/19177)
## 3.23.6
`2019-10-05`
- 🐞 修复 Typography 提示获取不到 `ref` 的错误信息。[#19074](https://github.com/ant-design/ant-design/pull/19074)
## 3.23.5
`2019-09-29`
- 🐞 修复 Upload 预览图片无法填充满图片框的问题。[#18990](https://github.com/ant-design/ant-design/pull/18990)
- 🐞 修复 Breadcrumb 不支持 `data-*``aria-*` 的问题。[#18941](https://github.com/ant-design/ant-design/pull/18941) [@sosohime](https://github.com/sosohime)
- 🐞 修复 TreeSelect `removeIcon``clearIcon` 不工作的问题。[#18949](https://github.com/ant-design/ant-design/issues/18949) [@sosohime](https://github.com/sosohime)
- 🐞 修复 Tree 组件当 `showLine` 设置后 `switcherIcon` 没有正常工作的问题。[#18829](https://github.com/ant-design/ant-design/pull/18829) [@MrHeer](https://github.com/MrHeer)
- 🐞 修复按钮图标在 Button.Group 中的错位问题。[#18994](https://github.com/ant-design/ant-design/pull/18994)
- 🐞 移除 Select 中无效属性 `searchValue` 的定义及文档。[#19003](https://github.com/ant-design/ant-design/pull/19003)
- 🐞 修复 Avatar 文本头像在 ssr 时会闪烁的问题。[#19029](https://github.com/ant-design/ant-design/pull/19029)
- TypeScript
- 🐞 修复 Grid 组件的类型定义。[#18946](https://github.com/ant-design/ant-design/pull/18946) [@handycode](https://github.com/handycode)
## 3.23.4
`2019-09-21`
- 🐞 修复 Transfer `disabled` 下勾选框不被禁用的问题。[#18849](https://github.com/ant-design/ant-design/pull/18849)
- 🐞 回滚 Dragger 到 class component 以修复 ref 警告信息。[#18707](https://github.com/ant-design/ant-design/issues/18707)
- 🐞 修复 Input `addonAfter` 里图标高度在 Chrome 下偏大的问题。[#18858](https://github.com/ant-design/ant-design/pull/18858)
- 🐞 修复 Menu 在 `collapsedWidth={0}` 时,折叠后丢失 `selectedKeys` 状态的问题。[#18907](https://github.com/ant-design/ant-design/pull/18907)
- 🐞 修复 Input 在禁用状态时,后缀图标可点击的问题。[#18900](https://github.com/ant-design/ant-design/pull/18900)
- 🐞 修复 Alert 标题和内容过长不换行的问题。[#18929](https://github.com/ant-design/ant-design/pull/18929)
- 💄 增加 `@page-header-back-color` less 变量。[#18887](https://github.com/ant-design/ant-design/pull/18887)
- TypeScript
- 🐞 修复 Table 事件的类型定义。[#18910](https://github.com/ant-design/ant-design/pull/18910)
## 3.23.3
`2019-09-16`
@@ -1626,7 +1919,7 @@ timeline: true
- Upload 组件升级 `rc-upload``2.5.0`
- 🌟 新增 `directory` 属性,支持上传一个文件夹。[#7315](https://github.com/ant-design/ant-design/issues/7315)
- 🌟 `action` 属性支持作为一个返回 `Promise` 对象的函数,使用更加灵活。[fd96967](https://github.com/ant-design/ant-design/commit/fd96967c872600b79bb608e9ddf9f8c38814a704)
- Dropdown 增加新特性, 可以做为右键菜单来使用。
- Dropdown 增加新特性,可以做为右键菜单来使用。
- 🌟 给菜单项的 icon 提供默认的外间距样式。[8e60a59](https://github.com/ant-design/ant-design/commit/8e60a591fd24f644de4f67d69c2210e9270be9cc)
- 🌟 触发方式为 `contextMenu` 时自动调整菜单的位置。[16e4260](https://github.com/ant-design/ant-design/commit/16e42601d6772fc0830ee237a1e751a38a118676)
- Table 组件升级 `rc-table``6.2.2`。[f2fddff](https://github.com/ant-design/ant-design/commit/f2fddff3fd0d6b36e8e6d8ee06bfcbcc85ead4f0)
@@ -1757,7 +2050,7 @@ timeline: true
- 💄 统一 less 的变量命名 [12d3046](https://github.com/ant-design/ant-design/commit/12d3046687a0dcdb51fece08dd2bea64f185cc40)
- 💄 微调了 `Dropdown` 的样式 [8e2f72f](https://github.com/ant-design/ant-design/commit/8e2f72ffe0eb300f5997296726b02246bf990c8f)
- 💄 现在中文文档的组件会用中文语言包进行演示。[9b17a94](https://github.com/ant-design/ant-design/commit/9b17a943f5d57d40d65041b7b0c247add09d2851)
- 💄 主站主题切换 修改为 `antd-theme-generato` ,感谢 [@mzohaibqc](https://github.com/mzohaibqc) 的工作.
- 💄 主站主题切换 修改为 `antd-theme-generator` ,感谢 [@mzohaibqc](https://github.com/mzohaibqc) 的工作.
- TypeScript
- 🐞 修复了 `Row` 中 gutter 属性的类型问题 [b7d508e](https://github.com/ant-design/ant-design/commit/b7d508e1662bf20a0cacbe6440a2ce31a65a8a59)
- 💄 改进了 `Form` 组件类型 [#10564](https://github.com/ant-design/ant-design/pull/10564)
@@ -1768,7 +2061,7 @@ timeline: true
`2018-05-13`
- 🐞 修复 `Table` 过滤器和 `Transfer` 复选框无法点击的问题。[#10452](https://github.com/ant-design/ant-design/issues/10452)
- 🐞 修复 `Cascader`  `displayRender` 里的链接无法点击的问题。[#10433](https://github.com/ant-design/ant-design/issues/10433)
- 🐞 修复 `Cascader``displayRender` 里的链接无法点击的问题。[#10433](https://github.com/ant-design/ant-design/issues/10433)
- 🐞 修复 `Button` ref 不兼容问题。[#10405](https://github.com/ant-design/ant-design/issues/10405)
- 🐞 修复 `Form` 表单项校验位置高度时出现抖动问题。[#10445](https://github.com/ant-design/ant-design/issues/10445)
- 🌟 设置 `Layout` 宽度时,允许使用任何的 CSS 单位。[#10479](https://github.com/ant-design/ant-design/pull/10479)
@@ -1890,7 +2183,7 @@ timeline: true
- 🌟 新增 `defaultExpandParent` 用于在第一次渲染时自动展开父节点。
- 🌟 新增 `disabled` 用于禁用整棵树。
- 🌟 TreeNode 新增 `icon` 用于设置自定义图标。
- 🌟 优化了 TreeNode 设置 `disabled` 时的  勾选逻辑。
- 🌟 优化了 TreeNode 设置 `disabled` 时的勾选逻辑。
- 🌟 Anchor 新增 `getContainer` 用于指定内容滚动的容器。
- 🌟 Table 新增 less 变量 `@table-expanded-row-bg`。[#9789](https://github.com/ant-design/ant-design/pull/9789)
- 🐞 修复一处 less 语法错误。[#9832](https://github.com/ant-design/ant-design/pull/9832) [@jojoLockLock](https://github.com/jojoLockLock)

12
CODEOWNERS Normal file
View File

@@ -0,0 +1,12 @@
# CODEOWNERS syntax
# A CODEOWNERS file uses a pattern that follows the same rules used in gitignore files.
# The pattern is followed by one or more GitHub usernames or team names using the standard @username or @org/team-name format.
# You can also refer to a user by an email address that has been added to their GitHub account, for example user@example.com.
# no default file owner
#/* @afc163
/components/tree/* @zombieJ
/components/tree-select/* @zombieJ
# ...
# other components

View File

@@ -10,7 +10,7 @@
一套企业级 UI 设计语言和 React 组件库。
[![CircleCI branch](https://img.shields.io/circleci/project/github/ant-design/ant-design/master.svg?style=flat-square)](https://circleci.com/gh/ant-design/ant-design) [![Codecov](https://img.shields.io/codecov/c/github/ant-design/ant-design/master.svg?style=flat-square)](https://codecov.io/gh/ant-design/ant-design/branch/master) [![npm package](https://img.shields.io/npm/v/antd.svg?style=flat-square)](https://www.npmjs.org/package/antd) [![NPM downloads](http://img.shields.io/npm/dm/antd.svg?style=flat-square)](http://npmjs.com/antd)
[![CircleCI branch](https://img.shields.io/circleci/project/github/ant-design/ant-design/master.svg?style=flat-square)](https://circleci.com/gh/ant-design/ant-design) ![CI Status](https://github.com/ant-design/ant-design/workflows/Node%20CI/badge.svg) [![Codecov](https://img.shields.io/codecov/c/github/ant-design/ant-design/master.svg?style=flat-square)](https://codecov.io/gh/ant-design/ant-design/branch/master) [![](https://flat.badgen.net/npm/v/antd?icon=npm)](https://www.npmjs.com/package/antd) [![](https://badgen.net/npm/v/antd/next)](https://www.npmjs.com/package/antd) [![NPM downloads](http://img.shields.io/npm/dm/antd.svg?style=flat-square)](http://npmjs.com/antd)
[![Dependencies](https://img.shields.io/david/ant-design/ant-design.svg?style=flat-square)](https://david-dm.org/ant-design/ant-design) [![DevDependencies](https://img.shields.io/david/dev/ant-design/ant-design.svg?style=flat-square)](https://david-dm.org/ant-design/ant-design?type=dev) [![Total alerts](https://flat.badgen.net/lgtm/alerts/g/ant-design/ant-design)](https://lgtm.com/projects/g/ant-design/ant-design/alerts/) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fant-design%2Fant-design.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fant-design%2Fant-design?ref=badge_shield) [![Issues need help](https://flat.badgen.net/github/label-issues/ant-design/ant-design/help%20wanted/open)](https://github.com/ant-design/ant-design/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
@@ -24,10 +24,12 @@
## ✨ 特性
- 提炼自企业级中后台产品的交互语言和视觉风格。
- 开箱即用的高质量 React 组件。
- 使用 TypeScript 构建,提供完整的类型定义文件。
- 全链路开发和设计工具体系。
- 🌈 提炼自企业级中后台产品的交互语言和视觉风格。
- 📦 开箱即用的高质量 React 组件。
- 🛡 使用 TypeScript 开发,提供完整的类型定义文件。
- ⚙️ 全链路开发和设计工具体系。
- 🌍 数十个国际化语言支持。
- 🎨 深入每个细节的主题定制能力。
## 🖥 支持环境
@@ -51,20 +53,25 @@ yarn add antd
## 🔨 示例
```jsx
import { DatePicker } from 'antd';
ReactDOM.render(<DatePicker />, mountNode);
```
````jsx
import { Button, DatePicker } from 'antd';
const App = () => (
<>
<Button type="primary">PRESS ME</Button>
<DatePicker />
</>
);
引入样式:
```jsx
import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
```
````
你也可以 [按需加载组件](https://ant.design/docs/react/getting-started-cn#按需加载)。
你也可以使用 [babel-plugin-import](https://ant.design/docs/react/getting-started-cn#按需加载)。
### TypeScript
### 🛡 TypeScript
参考 [在 TypeScript 中使用](https://ant.design/docs/react/use-in-typescript-cn)
@@ -121,7 +128,7 @@ $ npm start
[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/34526884)
## 社区互助
## 👥 社区互助
如果您在使用的过程中碰到问题,可以通过下面几个途径寻求帮助,同时我们也鼓励资深用户通过下面的途径给新人提供帮助。

View File

@@ -10,7 +10,7 @@
An enterprise-class UI design language and React UI library.
[![CircleCI branch](https://img.shields.io/circleci/project/github/ant-design/ant-design/master.svg?style=flat-square)](https://circleci.com/gh/ant-design/ant-design) [![Codecov](https://img.shields.io/codecov/c/github/ant-design/ant-design/master.svg?style=flat-square)](https://codecov.io/gh/ant-design/ant-design/branch/master) [![](https://flat.badgen.net/npm/v/antd?icon=npm)](https://www.npmjs.com/package/antd) [![NPM downloads](http://img.shields.io/npm/dm/antd.svg?style=flat-square)](http://npmjs.com/antd)
[![CircleCI branch](https://img.shields.io/circleci/project/github/ant-design/ant-design/master.svg?style=flat-square)](https://circleci.com/gh/ant-design/ant-design) ![CI Status](https://github.com/ant-design/ant-design/workflows/test/badge.svg) [![Codecov](https://img.shields.io/codecov/c/github/ant-design/ant-design/master.svg?style=flat-square)](https://codecov.io/gh/ant-design/ant-design/branch/master) [![](https://flat.badgen.net/npm/v/antd?icon=npm)](https://www.npmjs.com/package/antd) [![](https://badgen.net/npm/v/antd/next)](https://www.npmjs.com/package/antd) [![NPM downloads](http://img.shields.io/npm/dm/antd.svg?style=flat-square)](http://npmjs.com/antd)
[![Dependencies](https://img.shields.io/david/ant-design/ant-design.svg?style=flat-square)](https://david-dm.org/ant-design/ant-design) [![DevDependencies](https://img.shields.io/david/dev/ant-design/ant-design.svg?style=flat-square)](https://david-dm.org/ant-design/ant-design?type=dev) [![Total alerts](https://flat.badgen.net/lgtm/alerts/g/ant-design/ant-design)](https://lgtm.com/projects/g/ant-design/ant-design/alerts/) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fant-design%2Fant-design.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fant-design%2Fant-design?ref=badge_shield) [![Issues need help](https://flat.badgen.net/github/label-issues/ant-design/ant-design/help%20wanted/open)](https://github.com/ant-design/ant-design/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
@@ -24,10 +24,12 @@ English | [简体中文](./README-zh_CN.md)
## ✨ Features
- An enterprise-class UI design system for web applications.
- A set of high-quality React components out of the box.
- Written in TypeScript with predictable static types.
- The whole package of development and design resources and tools.
- 🌈 Enterprise-class UI designed for web applications.
- 📦 A set of high-quality React components out of the box.
- 🛡 Written in TypeScript with predictable static types.
- ⚙️ Whole package of design resources and development tools.
- 🌍 Internationalization support for dozens of languages.
- 🎨 Powerful theme customization in every detail.
## 🖥 Environment Support
@@ -52,8 +54,14 @@ yarn add antd
## 🔨 Usage
```jsx
import { DatePicker } from 'antd';
ReactDOM.render(<DatePicker />, mountNode);
import { Button, DatePicker } from 'antd';
const App = () => (
<>
<Button type="primary">PRESS ME</Button>
<DatePicker />
</>
);
```
And import style manually:
@@ -62,7 +70,7 @@ And import style manually:
import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
```
Or [import components on demand](https://ant.design/docs/react/getting-started#Import-on-Demand).
Or use [babel-plugin-import](https://ant.design/docs/react/getting-started#Import-on-Demand).
### TypeScript

View File

@@ -9,8 +9,6 @@ import triggerEvent from '../triggerEvent';
import Wave from '../wave';
import TransButton from '../transButton';
import openAnimation from '../openAnimation';
import ResizeObserver from '../resizeObserver';
import { spyElementPrototype } from '../../__tests__/util/domHook';
describe('Test utils function', () => {
beforeAll(() => {
@@ -226,47 +224,4 @@ describe('Test utils function', () => {
expect(done).toHaveBeenCalled();
});
});
describe('ResizeObserver', () => {
let domMock;
beforeAll(() => {
domMock = spyElementPrototype(HTMLDivElement, 'getBoundingClientRect', () => {
return {
width: 1128 + Math.random(),
height: 903 + Math.random(),
};
});
});
afterAll(() => {
domMock.mockRestore();
});
it('should not trigger `onResize` if size shaking', () => {
const onResize = jest.fn();
let divNode;
const wrapper = mount(
<ResizeObserver onResize={onResize}>
<div
ref={node => {
divNode = node;
}}
/>
</ResizeObserver>,
);
// First trigger
wrapper.instance().onResize([{ target: divNode }]);
onResize.mockReset();
// Repeat trigger should not trigger outer `onResize` with shaking
for (let i = 0; i < 10; i += 1) {
wrapper.instance().onResize([{ target: divNode }]);
}
expect(onResize).not.toHaveBeenCalled();
});
});
});

17
components/_util/ref.ts Normal file
View File

@@ -0,0 +1,17 @@
import React from 'react';
export function fillRef<T>(ref: React.Ref<T>, node: T) {
if (typeof ref === 'function') {
ref(node);
} else if (typeof ref === 'object' && ref && 'current' in ref) {
(ref as any).current = node;
}
}
export function composeRef<T>(...refs: React.Ref<T>[]): React.Ref<T> {
return (node: T) => {
refs.forEach(ref => {
fillRef(ref, node);
});
};
}

View File

@@ -1,91 +0,0 @@
import * as React from 'react';
import { findDOMNode } from 'react-dom';
import ResizeObserver from 'resize-observer-polyfill';
type DomElement = Element | null;
interface ResizeObserverProps {
children?: React.ReactNode;
disabled?: boolean;
onResize?: () => void;
}
interface ResizeObserverState {
height: number;
width: number;
}
class ReactResizeObserver extends React.Component<ResizeObserverProps, ResizeObserverState> {
resizeObserver: ResizeObserver | null = null;
state = {
width: 0,
height: 0,
};
componentDidMount() {
this.onComponentUpdated();
}
componentDidUpdate() {
this.onComponentUpdated();
}
componentWillUnmount() {
this.destroyObserver();
}
onComponentUpdated() {
const { disabled } = this.props;
const element = findDOMNode(this) as DomElement;
if (!this.resizeObserver && !disabled && element) {
// Add resize observer
this.resizeObserver = new ResizeObserver(this.onResize);
this.resizeObserver.observe(element);
} else if (disabled) {
// Remove resize observer
this.destroyObserver();
}
}
onResize: ResizeObserverCallback = (entries: ResizeObserverEntry[]) => {
const { onResize } = this.props;
const { target } = entries[0];
const { width, height } = target.getBoundingClientRect();
/**
* Resize observer trigger when content size changed.
* In most case we just care about element size,
* let's use `boundary` instead of `contentRect` here to avoid shaking.
*/
const fixedWidth = Math.floor(width);
const fixedHeight = Math.floor(height);
if (this.state.width !== fixedWidth || this.state.height !== fixedHeight) {
this.setState({
width: fixedWidth,
height: fixedHeight,
});
if (onResize) {
onResize();
}
}
};
destroyObserver() {
if (this.resizeObserver) {
this.resizeObserver.disconnect();
this.resizeObserver = null;
}
}
render() {
const { children = null } = this.props;
return children;
}
}
export default ReactResizeObserver;

View File

@@ -182,7 +182,7 @@ describe('Affix Render', () => {
// Mock trigger resize
updateCalled.mockReset();
wrapper
.find('ReactResizeObserver')
.find('ResizeObserver')
.at(index)
.instance()
.onResize([{ target: { getBoundingClientRect: () => ({ width: 99, height: 99 }) } }]);

View File

@@ -4,11 +4,11 @@ type: Navigation
title: Affix
---
Make an element stick to viewport.
Wrap Affix around another component to make it stick the viewport.
## When To Use
When user browses a long web page, some content need to stick to the viewport. This is common for menus and actions.
On longer web pages, its helpful for some content to stick to the viewport. This is common for menus and actions.
Please note that Affix should not cover other content on the page, especially when the size of the viewport is small.
@@ -16,12 +16,12 @@ Please note that Affix should not cover other content on the page, especially wh
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
| offsetBottom | Pixels to offset from bottom when calculating position of scroll | number | - | |
| offsetTop | Pixels to offset from top when calculating position of scroll | number | 0 | |
| target | specifies the scrollable area dom node | () => HTMLElement | () => window | |
| onChange | Callback for when affix state is changed | Function(affixed) | - | |
| offsetBottom | Offset from the bottom of the viewport (in pixels) | number | - | |
| offsetTop | Offset from the top of the viewport (in pixels) | number | 0 | |
| target | Specifies the scrollable area DOM node | () => HTMLElement | () => window | |
| onChange | Callback for when Affix state is changed | Function(affixed) | - | |
**Note:** Children of `Affix` can not be `position: absolute`, but you can set `Affix` as `position: absolute`:
**Note:** Children of `Affix` must not have the property `position: absolute`, but you can set `position: absolute` on `Affix` itself:
```jsx
<Affix style={{ position: 'absolute', top: y, left: x }}>...</Affix>
@@ -33,4 +33,4 @@ Please note that Affix should not cover other content on the page, especially wh
We don't listen window scroll for performance consideration. You can add listener if you still want: <https://codesandbox.io/s/2xyj5zr85p>
Related issue[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120)
Related issues[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120)

View File

@@ -2,9 +2,9 @@ import * as React from 'react';
import { polyfill } from 'react-lifecycles-compat';
import classNames from 'classnames';
import omit from 'omit.js';
import ResizeObserver from 'rc-resize-observer';
import { ConfigConsumer, ConfigConsumerProps } from '../config-provider';
import { throttleByAnimationFrameDecorator } from '../_util/throttleByAnimationFrame';
import ResizeObserver from '../_util/resizeObserver';
import warning from '../_util/warning';
import {
@@ -35,6 +35,7 @@ export interface AffixProps {
target?: () => Window | HTMLElement | null;
prefixCls?: string;
className?: string;
children: React.ReactElement;
}
enum AffixStatus {

View File

@@ -52,7 +52,7 @@ export default class Alert extends React.Component<AlertProps, AlertState> {
);
this.state = {
closing: true,
closing: false,
closed: false,
};
}
@@ -66,15 +66,15 @@ export default class Alert extends React.Component<AlertProps, AlertState> {
dom.style.height = `${dom.offsetHeight}px`;
this.setState({
closing: false,
closing: true,
});
(this.props.onClose || noop)(e);
};
animationEnd = () => {
this.setState({
closing: false,
closed: true,
closing: true,
});
(this.props.afterClose || noop)();
};
@@ -91,6 +91,7 @@ export default class Alert extends React.Component<AlertProps, AlertState> {
icon,
} = this.props;
let { closable, type, showIcon, iconType } = this.props;
const { closing, closed } = this.state;
const prefixCls = getPrefixCls('alert', customizePrefixCls);
@@ -133,7 +134,7 @@ export default class Alert extends React.Component<AlertProps, AlertState> {
prefixCls,
`${prefixCls}-${type}`,
{
[`${prefixCls}-close`]: !this.state.closing,
[`${prefixCls}-closing`]: closing,
[`${prefixCls}-with-description`]: !!description,
[`${prefixCls}-no-icon`]: !showIcon,
[`${prefixCls}-banner`]: !!banner,
@@ -162,23 +163,22 @@ export default class Alert extends React.Component<AlertProps, AlertState> {
const iconNode = (icon &&
(React.isValidElement<{ className?: string }>(icon) ? (
React.cloneElement(icon, {
className: classNames({
className: classNames(`${prefixCls}-icon`, {
[icon.props.className as string]: icon.props.className,
[`${prefixCls}-icon`]: true,
}),
})
) : (
<span className={`${prefixCls}-icon`}>{icon}</span>
))) || <Icon className={`${prefixCls}-icon`} type={iconType} theme={iconTheme} />;
return this.state.closed ? null : (
return closed ? null : (
<Animate
component=""
showProp="data-show"
transitionName={`${prefixCls}-slide-up`}
onEnd={this.animationEnd}
>
<div data-show={this.state.closing} className={alertCls} style={style} {...dataOrAriaProps}>
<div data-show={!closing} className={alertCls} style={style} {...dataOrAriaProps}>
{showIcon ? iconNode : null}
<span className={`${prefixCls}-message`}>{message}</span>
<span className={`${prefixCls}-description`}>{description}</span>

View File

@@ -13,6 +13,7 @@
position: relative;
padding: 8px 15px 8px 37px;
word-wrap: break-word;
border-radius: @border-radius-base;
&&-no-icon {
@@ -76,6 +77,7 @@
line-height: 22px;
background-color: transparent;
border: none;
outline: none;
cursor: pointer;
.@{iconfont-css-prefix}-close {
@@ -137,7 +139,7 @@
display: block;
}
&&-close {
&&-closing {
height: 0 !important;
margin: 0;
padding-top: 0;

View File

@@ -62,6 +62,8 @@ export interface AnchorProps {
) => void;
/** Scroll to target offset value, if none, it's offsetTop prop value or 0. */
targetOffset?: number;
/** Listening event when scrolling change active link */
onChange?: (currentActiveLink: string) => void;
}
export interface AnchorState {
@@ -205,7 +207,7 @@ export default class Anchor extends React.Component<AnchorProps, AnchorState> {
handleScrollTo = (link: string) => {
const { offsetTop, getContainer, targetOffset } = this.props as AnchorDefaultProps;
this.setState({ activeLink: link });
this.setCurrentActiveLink(link);
const container = getContainer();
const scrollTop = getScroll(container, true);
const sharpLinkMatch = sharpMatcherRegx.exec(link);
@@ -234,21 +236,30 @@ export default class Anchor extends React.Component<AnchorProps, AnchorState> {
this.inkNode = node;
};
setCurrentActiveLink = (link: string) => {
const { activeLink } = this.state;
const { onChange } = this.props;
if (activeLink !== link) {
this.setState({
activeLink: link,
});
if (onChange) {
onChange(link);
}
}
};
handleScroll = () => {
if (this.animating) {
return;
}
const { activeLink } = this.state;
const { offsetTop, bounds, targetOffset } = this.props;
const currentActiveLink = this.getCurrentAnchor(
targetOffset !== undefined ? targetOffset : offsetTop || 0,
bounds,
);
if (activeLink !== currentActiveLink) {
this.setState({
activeLink: currentActiveLink,
});
}
this.setCurrentActiveLink(currentActiveLink);
};
updateInk = () => {

View File

@@ -322,4 +322,18 @@ describe('Anchor Render', () => {
dateNowMock.mockRestore();
jest.useRealTimers();
});
it('Anchor onChange prop', async () => {
const onChange = jest.fn();
const wrapper = mount(
<Anchor onChange={onChange}>
<Link href="#API1" title="API1" />
<Link href="#API2" title="API2" />
</Anchor>,
);
expect(onChange).toHaveBeenCalledTimes(1);
wrapper.instance().handleScrollTo('#API2');
expect(onChange).toHaveBeenCalledTimes(2);
expect(onChange).toHaveBeenCalledWith('#API2');
});
});

View File

@@ -166,6 +166,80 @@ exports[`renders ./components/anchor/demo/customizeHighlight.md correctly 1`] =
</div>
`;
exports[`renders ./components/anchor/demo/onChange.md correctly 1`] = `
<div
class="ant-anchor-wrapper"
style="max-height:100vh"
>
<div
class="ant-anchor fixed"
>
<div
class="ant-anchor-ink"
>
<span
class="ant-anchor-ink-ball"
/>
</div>
<div
class="ant-anchor-link"
>
<a
class="ant-anchor-link-title"
href="#components-anchor-demo-basic"
title="Basic demo"
>
Basic demo
</a>
</div>
<div
class="ant-anchor-link"
>
<a
class="ant-anchor-link-title"
href="#components-anchor-demo-static"
title="Static demo"
>
Static demo
</a>
</div>
<div
class="ant-anchor-link"
>
<a
class="ant-anchor-link-title"
href="#API"
title="API"
>
API
</a>
<div
class="ant-anchor-link"
>
<a
class="ant-anchor-link-title"
href="#Anchor-Props"
title="Anchor Props"
>
Anchor Props
</a>
</div>
<div
class="ant-anchor-link"
>
<a
class="ant-anchor-link-title"
href="#Link-Props"
title="Link Props"
>
Link Props
</a>
</div>
</div>
</div>
</div>
`;
exports[`renders ./components/anchor/demo/onClick.md correctly 1`] = `
<div
class="ant-anchor-wrapper"

View File

@@ -0,0 +1,36 @@
---
order: 6
title:
zh-CN: 监听锚点链接改变
en-US: Listening for anchor link change
---
## zh-CN
监听锚点链接改变
## en-US
Listening for anchor link change.
```jsx
import { Anchor } from 'antd';
const { Link } = Anchor;
const onChange = link => {
console.log('Anchor:OnChange', link);
};
ReactDOM.render(
<Anchor affix={false} onChange={onChange}>
<Link href="#components-anchor-demo-basic" title="Basic demo" />
<Link href="#components-anchor-demo-static" title="Static demo" />
<Link href="#API" title="API">
<Link href="#Anchor-Props" title="Anchor Props" />
<Link href="#Link-Props" title="Link Props" />
</Link>
</Anchor>,
mountNode,
);
```

View File

@@ -1,5 +1,5 @@
---
order: 4
order: 5
title:
zh-CN: 设置锚点滚动偏移量
en-US: Set Anchor scroll offset

View File

@@ -26,6 +26,7 @@ For displaying anchor hyperlinks on page and jumping between them.
| onClick | set the handler to handle `click` event | Function(e: Event, link: Object) | - | 3.9.0 |
| getCurrentAnchor | Customize the anchor highlight | () => string | - | 3.22.0 |
| targetOffset | Anchor scroll offset, default as `offsetTop`, [example](#components-anchor-demo-targetOffset) | number | `offsetTop` | 3.22.0 |
| onChange | Listening for anchor link change | (currentActiveLink: string) => void | | 3.24.0 |
### Link Props

View File

@@ -27,6 +27,7 @@ title: Anchor
| onClick | `click` 事件的 handler | Function(e: Event, link: Object) | - | 3.9.0 |
| getCurrentAnchor | 自定义高亮的锚点 | () => string | - | 3.22.0 |
| targetOffset | 锚点滚动偏移量,默认与 offsetTop 相同,[例子](#components-anchor-demo-targetOffset) | number | `offsetTop` | 3.22.0 |
| onChange | 监听锚点链接改变 | (currentActiveLink: string) => void | | 3.24.0 |
### Link Props

View File

@@ -52,8 +52,8 @@ const dataSource = ['12345', '23456', '34567'];
## FAQ
### Why text composition system not works well with onSearch in controlled mode?
### Why doesn't the text composition system work well with onSearch in controlled mode?
Please use `onChange` to manage control state. `onSearch` is used for searching input which is not same as `onChange`. Besides, click on the option also not trigger the `onSearch` event.
Please use `onChange` to manage control state. `onSearch` is used for searching input which is not same as `onChange`. Besides, clicking on the option will not trigger the `onSearch` event.
Related issue: [#18230](https://github.com/ant-design/ant-design/issues/18230) [#17916](https://github.com/ant-design/ant-design/issues/17916)

View File

@@ -41,152 +41,152 @@ exports[`renders ./components/avatar/demo/badge.md correctly 1`] = `
style="transition:none;-ms-transform:translateY(-1100%);-webkit-transform:translateY(-1100%);transform:translateY(-1100%)"
>
<p
class=""
class="ant-scroll-number-only-unit"
>
0
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
1
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
2
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
3
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
4
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
5
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
6
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
7
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
8
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
9
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
0
</p>
<p
class="current"
class="ant-scroll-number-only-unit current"
>
1
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
2
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
3
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
4
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
5
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
6
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
7
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
8
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
9
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
0
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
1
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
2
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
3
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
4
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
5
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
6
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
7
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
8
</p>
<p
class=""
class="ant-scroll-number-only-unit"
>
9
</p>
@@ -433,6 +433,7 @@ exports[`renders ./components/avatar/demo/dynamic.md correctly 1`] = `
>
<span
class="ant-avatar-string"
style="opacity:0"
>
U
</span>
@@ -486,6 +487,7 @@ exports[`renders ./components/avatar/demo/toggle-debug.md correctly 1`] = `
>
<span
class="ant-avatar-string"
style="opacity:0"
>
Avatar
</span>
@@ -507,6 +509,7 @@ exports[`renders ./components/avatar/demo/toggle-debug.md correctly 1`] = `
>
<span
class="ant-avatar-string"
style="opacity:0"
>
Avatar
</span>
@@ -526,6 +529,29 @@ exports[`renders ./components/avatar/demo/toggle-debug.md correctly 1`] = `
exports[`renders ./components/avatar/demo/type.md correctly 1`] = `
<div>
<span
class="ant-avatar ant-avatar-circle ant-avatar-icon"
>
<i
aria-label="icon: user"
class="anticon anticon-user"
>
<svg
aria-hidden="true"
class=""
data-icon="user"
fill="currentColor"
focusable="false"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"
/>
</svg>
</i>
</span>
<span
class="ant-avatar ant-avatar-circle ant-avatar-icon"
>
@@ -554,6 +580,7 @@ exports[`renders ./components/avatar/demo/type.md correctly 1`] = `
>
<span
class="ant-avatar-string"
style="opacity:0"
>
U
</span>
@@ -563,6 +590,7 @@ exports[`renders ./components/avatar/demo/type.md correctly 1`] = `
>
<span
class="ant-avatar-string"
style="opacity:0"
>
USER
</span>
@@ -580,6 +608,7 @@ exports[`renders ./components/avatar/demo/type.md correctly 1`] = `
>
<span
class="ant-avatar-string"
style="opacity:0"
>
U
</span>

View File

@@ -14,11 +14,12 @@ title:
Image, Icon and letter are supported, and the latter two kinds of avatar can have custom colors and background colors.
```jsx
import { Avatar } from 'antd';
import { Avatar, Icon } from 'antd';
ReactDOM.render(
<div>
<Avatar icon="user" />
<Avatar icon={<Icon type="user" />} />
<Avatar>U</Avatar>
<Avatar>USER</Avatar>
<Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />

View File

@@ -10,7 +10,7 @@ Avatars can be used to represent people or objects. It supports images, `Icon`s,
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
| icon | the `Icon` type for an icon avatar, see `Icon` Component | string | - | |
| icon | the `Icon` type for an icon avatar, see `Icon` Component or use ReactNode | string \| ReactNode | - | |
| shape | the shape of avatar | `circle` \| `square` | `circle` | |
| size | the size of the avatar | number \| string: `large` `small` `default` | `default` | |
| src | the address of the image for an image avatar | string | - | |

View File

@@ -16,7 +16,7 @@ export interface AvatarProps {
/** Srcset of image avatar */
srcSet?: string;
/** Type of the Icon to be used in avatar */
icon?: string;
icon?: string | React.ReactNode;
style?: React.CSSProperties;
prefixCls?: string;
className?: string;
@@ -29,6 +29,7 @@ export interface AvatarProps {
export interface AvatarState {
scale: number;
mounted: boolean;
isImgExist: boolean;
}
@@ -40,6 +41,7 @@ export default class Avatar extends React.Component<AvatarProps, AvatarState> {
state = {
scale: 1,
mounted: false,
isImgExist: true,
};
@@ -53,6 +55,7 @@ export default class Avatar extends React.Component<AvatarProps, AvatarState> {
componentDidMount() {
this.setScale();
this.setState({ mounted: true });
}
componentDidUpdate(prevProps: AvatarProps) {
@@ -105,7 +108,7 @@ export default class Avatar extends React.Component<AvatarProps, AvatarState> {
...others
} = this.props;
const { isImgExist, scale } = this.state;
const { isImgExist, scale, mounted } = this.state;
const prefixCls = getPrefixCls('avatar', customizePrefixCls);
@@ -134,7 +137,11 @@ export default class Avatar extends React.Component<AvatarProps, AvatarState> {
if (src && isImgExist) {
children = <img src={src} srcSet={srcSet} onError={this.handleImgLoadError} alt={alt} />;
} else if (icon) {
children = <Icon type={icon} />;
if (typeof icon === 'string') {
children = <Icon type={icon} />;
} else {
children = icon;
}
} else {
const childrenNode = this.avatarChildren;
if (childrenNode || scale !== 1) {
@@ -144,6 +151,7 @@ export default class Avatar extends React.Component<AvatarProps, AvatarState> {
WebkitTransform: transformString,
transform: transformString,
};
const sizeChildrenStyle: React.CSSProperties =
typeof size === 'number'
? {
@@ -160,9 +168,15 @@ export default class Avatar extends React.Component<AvatarProps, AvatarState> {
</span>
);
} else {
const childrenStyle: React.CSSProperties = {};
if (!mounted) {
childrenStyle.opacity = 0;
}
children = (
<span
className={`${prefixCls}-string`}
style={{ opacity: 0 }}
ref={(node: HTMLElement) => (this.avatarChildren = node)}
>
{children}

View File

@@ -15,7 +15,7 @@ title: Avatar
| 参数 | 说明 | 类型 | 默认值 | 版本 |
| --- | --- | --- | --- | --- |
| icon | 设置头像的图标类型,参考 `Icon` 组件 | string | - | |
| icon | 设置头像的图标类型,可设为 Icon 的 `type` 或 ReactNode | string \| ReactNode | - | |
| shape | 指定头像的形状 | Enum{ 'circle', 'square' } | `circle` | |
| size | 设置头像的大小 | number \| Enum{ 'large', 'small', 'default' } | `default` | |
| src | 图片类头像的资源地址 | string | - | |

View File

@@ -17,12 +17,16 @@ function getNumberArray(num: string | number | undefined | null) {
: [];
}
function renderNumberList(position: number) {
function renderNumberList(position: number, className: string) {
const childrenToReturn: React.ReactElement<any>[] = [];
for (let i = 0; i < 30; i++) {
const currentClassName = position === i ? 'current' : '';
childrenToReturn.push(
<p key={i.toString()} className={currentClassName}>
<p
key={i.toString()}
className={classNames(className, {
current: position === i,
})}
>
{i % 10}
</p>,
);
@@ -138,7 +142,7 @@ class ScrollNumber extends React.Component<ScrollNumberProps, ScrollNumberState>
},
key: i,
},
renderNumberList(position),
renderNumberList(position, `${prefixCls}-only-unit`),
);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -159,7 +159,7 @@
display: inline-block;
height: @badge-height;
transition: all 0.3s @ease-in-out;
> p {
> p.@{number-prefix-cls}-only-unit {
height: @badge-height;
margin: 0;
}

View File

@@ -2,6 +2,7 @@ import * as React from 'react';
import * as PropTypes from 'prop-types';
import classNames from 'classnames';
import toArray from 'rc-util/lib/Children/toArray';
import omit from 'omit.js';
import BreadcrumbItem from './BreadcrumbItem';
import BreadcrumbSeparator from './BreadcrumbSeparator';
import Menu from '../menu';
@@ -144,6 +145,7 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
className,
routes,
children,
...restProps
} = this.props;
const prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);
if (routes && routes.length > 0) {
@@ -157,7 +159,8 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
warning(
element.type &&
(element.type.__ANT_BREADCRUMB_ITEM || element.type.__ANT_BREADCRUMB_SEPARATOR),
(element.type.__ANT_BREADCRUMB_ITEM === true ||
element.type.__ANT_BREADCRUMB_SEPARATOR === true),
'Breadcrumb',
"Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children",
);
@@ -169,7 +172,11 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
});
}
return (
<div className={classNames(className, prefixCls)} style={style}>
<div
className={classNames(className, prefixCls)}
style={style}
{...omit(restProps, ['itemRender', 'params'])}
>
{crumbs}
</div>
);

View File

@@ -102,4 +102,14 @@ describe('Breadcrumb', () => {
const wrapper = render(<Breadcrumb routes={routes} />);
expect(wrapper).toMatchSnapshot();
});
it('should support custom attribute', () => {
const wrapper = render(
<Breadcrumb data-custom="custom">
<Breadcrumb.Item data-custom="custom-item">xxx</Breadcrumb.Item>
<Breadcrumb.Item>yyy</Breadcrumb.Item>
</Breadcrumb>,
);
expect(wrapper).toMatchSnapshot();
});
});

View File

@@ -157,3 +157,36 @@ exports[`Breadcrumb should render a menu 1`] = `
</span>
</div>
`;
exports[`Breadcrumb should support custom attribute 1`] = `
<div
class="ant-breadcrumb"
data-custom="custom"
>
<span>
<span
class="ant-breadcrumb-link"
data-custom="custom-item"
>
xxx
</span>
<span
class="ant-breadcrumb-separator"
>
/
</span>
</span>
<span>
<span
class="ant-breadcrumb-link"
>
yyy
</span>
<span
class="ant-breadcrumb-separator"
>
/
</span>
</span>
</div>
`;

View File

@@ -22,37 +22,6 @@ const breadcrumbNameMap = {
'/apps/2/detail': 'Detail',
};
const Home = withRouter(props => {
const { location, history } = props;
const pathSnippets = location.pathname.split('/').filter(i => i);
const extraBreadcrumbItems = pathSnippets.map((_, index) => {
const url = `/${pathSnippets.slice(0, index + 1).join('/')}`;
return (
<Breadcrumb.Item key={url}>
<Link to={url}>{breadcrumbNameMap[url]}</Link>
</Breadcrumb.Item>
);
});
const breadcrumbItems = [
<Breadcrumb.Item key="home">
<Link to="/">Home</Link>
</Breadcrumb.Item>,
].concat(extraBreadcrumbItems);
return (
<div className="demo">
<div className="demo-nav">
<a onClick={() => history.push('/')}>Home</a>
<a onClick={() => history.push('/apps')}>Application List</a>
</div>
<Switch>
<Route path="/apps" component={Apps} />
<Route render={() => <span>Home Page</span>} />
</Switch>
<Breadcrumb>{breadcrumbItems}</Breadcrumb>
</div>
);
});
describe('react router', () => {
beforeAll(() => {
jest.useFakeTimers();
@@ -61,8 +30,42 @@ describe('react router', () => {
afterAll(() => {
jest.useRealTimers();
});
// https://github.com/airbnb/enzyme/issues/875
it('react router 4', () => {
if (process.env.REACT === '15') {
return;
}
const Home = withRouter(props => {
const { location, history } = props;
const pathSnippets = location.pathname.split('/').filter(i => i);
const extraBreadcrumbItems = pathSnippets.map((_, index) => {
const url = `/${pathSnippets.slice(0, index + 1).join('/')}`;
return (
<Breadcrumb.Item key={url}>
<Link to={url}>{breadcrumbNameMap[url]}</Link>
</Breadcrumb.Item>
);
});
const breadcrumbItems = [
<Breadcrumb.Item key="home">
<Link to="/">Home</Link>
</Breadcrumb.Item>,
].concat(extraBreadcrumbItems);
return (
<div className="demo">
<div className="demo-nav">
<a onClick={() => history.push('/')}>Home</a>
<a onClick={() => history.push('/apps')}>Application List</a>
</div>
<Switch>
<Route path="/apps" component={Apps} />
<Route render={() => <span>Home Page</span>} />
</Switch>
<Breadcrumb>{breadcrumbItems}</Breadcrumb>
</div>
);
});
const wrapper = mount(
<MemoryRouter initialEntries={['/']} initialIndex={0}>
<Home />

View File

@@ -206,6 +206,7 @@ describe('Button', () => {
it('should merge text if children using variable', () => {
const wrapper = mount(
<Button>
{/* eslint-disable-next-line react/jsx-curly-brace-presence */}
This {'is'} a test {1}
</Button>,
);

View File

@@ -29,15 +29,15 @@ To get a customized button, just set `type`/`shape`/`size`/`loading`/`disabled`.
| onClick | set the handler to handle `click` event | (event) => void | - | |
| block | option to fit button width to its parent width | boolean | `false` | 3.8.0 |
It accepts all props which native button support.
It accepts all props which native buttons support.
## FAQ
### How to remove space between 2 chinese characters?
### How to remove space between 2 chinese characters
Following Ant Design specification, we will add one space between if Button contains two chinese characters only. If you don't need that, you can use [ConfigProvider](/components/config-provider/#API) to set `autoInsertSpaceInButton` as `false`.
Following the Ant Design specification, we will add one space between if Button contains two Chinese characters only. If you don't need that, you can use [ConfigProvider](/components/config-provider/#API) to set `autoInsertSpaceInButton` as `false`.
![](https://gw.alipayobjects.com/zos/antfincdn/Hz5HL9gsT4/f29f170d-b78d-4d2b-aa71-0da6a9ead4d9.png)
![Button with two Chinese characters](https://gw.alipayobjects.com/zos/antfincdn/Hz5HL9gsT4/f29f170d-b78d-4d2b-aa71-0da6a9ead4d9.png)
<style>
[id^=components-button-demo-] .ant-btn {

View File

@@ -12,7 +12,15 @@
// Button styles
// -----------------------------
.@{btn-prefix-cls} {
line-height: @line-height-base;
// Fixing https://github.com/ant-design/ant-design/issues/12978
// Fixing https://github.com/ant-design/ant-design/issues/20058
// Fixing https://github.com/ant-design/ant-design/issues/19972
// Fixing https://github.com/ant-design/ant-design/issues/12978
// Fixing https://github.com/ant-design/ant-design/issues/18107
// Fixing https://github.com/ant-design/ant-design/issues/13214
// It is a render problem of chrome, which is only happened in the codesandbox demo
// 0.001px solution works and I don't why
line-height: @line-height-base - 0.001;
.btn;
.btn-default;
@@ -73,6 +81,10 @@
&-icon-only {
.btn-square(@btn-prefix-cls);
> i {
vertical-align: middle;
}
}
&-round {
@@ -118,7 +130,9 @@
&&-loading {
position: relative;
pointer-events: none;
&:not([disabled]) {
pointer-events: none;
}
}
&&-loading::before {

View File

@@ -124,12 +124,20 @@
z-index: 0;
}
}
> .@{btnClassName}-icon-only {
font-size: @font-size-base;
}
// size
&-lg > .@{btnClassName},
&-lg > span > .@{btnClassName} {
.button-size(@btn-height-lg; @btn-padding-lg; @btn-font-size-lg; 0);
line-height: @btn-height-lg - 2px;
}
&-lg > .@{btnClassName}.@{btnClassName}-icon-only {
.square(@btn-height-lg);
padding-right: 0;
padding-left: 0;
}
&-sm > .@{btnClassName},
&-sm > span > .@{btnClassName} {
.button-size(@btn-height-sm; @btn-padding-sm; @font-size-base; 0);
@@ -138,6 +146,11 @@
font-size: @font-size-base;
}
}
&-sm > .@{btnClassName}.@{btnClassName}-icon-only {
.square(@btn-height-sm);
padding-right: 0;
padding-left: 0;
}
}
// Base styles of buttons
// --------------------------------------------------

View File

@@ -316,7 +316,7 @@ describe('Calendar', () => {
for (let index = start; index < end; index += 1) {
monthOptions.push(
<Select.Option className="month-item" key={`${index}`}>
<Select.Option className="month-item" key={`${index}`} value={index}>
{months[index]}
</Select.Option>,
);

View File

@@ -0,0 +1,3 @@
import mk_MK from '../../date-picker/locale/mk_MK';
export default mk_MK;

View File

@@ -32,7 +32,7 @@ A card can be used to display content related to a single subject. The content c
| hoverable | Lift up when hovering card | boolean | false | |
| loading | Shows a loading indicator while the contents of the card are being fetched | boolean | false | |
| tabList | List of TabPane's head. | Array&lt;{key: string, tab: ReactNode}> | - | |
| tabBarExtraContent | Extra content in tab bar | React.ReactNode | - | |
| tabBarExtraContent | Extra content in tab bar | React.ReactNode | - | 3.23.0 |
| size | Size of card | `default` \| `small` | `default` | 3.12.0 |
| title | Card title | string\|ReactNode | - | |
| type | Card style type, can be set to `inner` or not set | string | - | |

View File

@@ -33,7 +33,7 @@ cols: 1
| hoverable | 鼠标移过时可浮起 | boolean | false | |
| loading | 当卡片内容还在加载中时,可以用 loading 展示一个占位 | boolean | false | |
| tabList | 页签标题列表 | Array&lt;{key: string, tab: ReactNode}> | - | |
| tabBarExtraContent | tab bar 上额外的元素 | React.ReactNode | 无 | |
| tabBarExtraContent | tab bar 上额外的元素 | React.ReactNode | 无 | 3.23.0 |
| size | card 的尺寸 | `default` \| `small` | `default` | 3.12.0 |
| title | 卡片标题 | string\|ReactNode | - | |
| type | 卡片类型,可设置为 `inner` 或 不设置 | string | - | |

View File

@@ -144,7 +144,7 @@
position: relative;
display: block;
min-width: 32px;
font-size: 14px;
font-size: @font-size-base;
line-height: 22px;
cursor: pointer;

View File

@@ -839,6 +839,7 @@ exports[`Cascader should highlight keyword and filter when search in Cascader 1`
Object {
"__IS_FILTERED_OPTION": true,
"disabled": false,
"isEmptyNode": true,
"label": Array [
"Jiangsu",
Array [
@@ -891,6 +892,7 @@ exports[`Cascader should highlight keyword and filter when search in Cascader 1`
Object {
"__IS_FILTERED_OPTION": true,
"disabled": false,
"isEmptyNode": true,
"label": Array [
"Zhejiang",
Array [
@@ -952,7 +954,6 @@ exports[`Cascader should highlight keyword and filter when search in Cascader 1`
},
]
}
placeholder="Please select"
popupClassName=""
popupPlacement="bottomLeft"
popupVisible={true}
@@ -1026,6 +1027,49 @@ exports[`Cascader should highlight keyword and filter when search in Cascader 1`
</Popup>
`;
exports[`Cascader should highlight keyword and filter when search in Cascader with same field name of label and value 1`] = `
<div>
<div
class="ant-cascader-menus ant-cascader-menus-placement-bottomLeft slide-up-appear"
style="left: -999px; top: -995px;"
>
<div>
<ul
class="ant-cascader-menu"
style="width: 0px;"
>
<li
class="ant-cascader-menu-item"
role="menuitem"
title=""
>
Zhejiang / Hang
<span
class="ant-cascader-menu-item-keyword"
>
z
</span>
hou / West Lake
</li>
<li
class="ant-cascader-menu-item ant-cascader-menu-item-disabled"
role="menuitem"
title=""
>
Zhejiang / Hang
<span
class="ant-cascader-menu-item-keyword"
>
z
</span>
hou / Xia Sha
</li>
</ul>
</div>
</div>
</div>
`;
exports[`Cascader should render not found content 1`] = `
<Popup
action={
@@ -1243,6 +1287,7 @@ exports[`Cascader should render not found content 1`] = `
Array [
Object {
"disabled": true,
"isEmptyNode": true,
"label": <Context.Consumer>
[Function]
</Context.Consumer>,
@@ -1250,7 +1295,6 @@ exports[`Cascader should render not found content 1`] = `
},
]
}
placeholder="Please select"
popupClassName=""
popupPlacement="bottomLeft"
popupVisible={true}
@@ -1571,6 +1615,7 @@ exports[`Cascader should show not found content when options.length is 0 1`] = `
Array [
Object {
"disabled": true,
"isEmptyNode": true,
"label": <Context.Consumer>
[Function]
</Context.Consumer>,
@@ -1578,7 +1623,6 @@ exports[`Cascader should show not found content when options.length is 0 1`] = `
},
]
}
placeholder="Please select"
popupClassName=""
popupPlacement="bottomLeft"
popupVisible={true}

View File

@@ -205,6 +205,52 @@ describe('Cascader', () => {
expect(popupWrapper).toMatchSnapshot();
});
it('should highlight keyword and filter when search in Cascader with same field name of label and value', () => {
const customOptions = [
{
name: 'Zhejiang',
value: 'Zhejiang',
children: [
{
name: 'Hangzhou',
value: 'Hangzhou',
children: [
{
name: 'West Lake',
value: 'West Lake',
},
{
name: 'Xia Sha',
value: 'Xia Sha',
disabled: true,
},
],
},
],
},
];
function customFilter(inputValue, path) {
return path.some(option => option.name.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);
}
const wrapper = mount(
<Cascader
options={customOptions}
fieldNames={{ label: 'name', value: 'name' }}
showSearch={{ filter: customFilter }}
/>,
);
wrapper.find('input').simulate('click');
wrapper.find('input').simulate('change', { target: { value: 'z' } });
expect(wrapper.state('inputValue')).toBe('z');
const popupWrapper = mount(
wrapper
.find('Trigger')
.instance()
.getComponent(),
);
expect(popupWrapper.render()).toMatchSnapshot();
});
it('should render not found content', () => {
const wrapper = mount(<Cascader options={options} showSearch={{ filter }} />);
wrapper.find('input').simulate('click');
@@ -491,4 +537,15 @@ describe('Cascader', () => {
);
expect(popupWrapper.render()).toMatchSnapshot();
});
it('placeholder works correctly', () => {
const wrapper = mount(<Cascader options={[]} />);
expect(wrapper.find('input').prop('placeholder')).toBe('Please select');
const customPlaceholder = 'Custom placeholder';
wrapper.setProps({
placeholder: customPlaceholder,
});
expect(wrapper.find('input').prop('placeholder')).toBe(customPlaceholder);
});
});

View File

@@ -72,9 +72,3 @@ interface Option {
| ------- | ------------ | ------- |
| blur() | remove focus | |
| focus() | get focus | |
<style>
.ant-cascader-picker {
width: 300px;
}
</style>

View File

@@ -216,7 +216,6 @@ function warningValueNotExist(list: CascaderOptionType[], fieldNames: FieldNames
class Cascader extends React.Component<CascaderProps, CascaderState> {
static defaultProps = {
placeholder: 'Please select',
transitionName: 'slide-up',
popupPlacement: 'bottomLeft',
options: [],
@@ -398,17 +397,19 @@ class Cascader extends React.Component<CascaderProps, CascaderState> {
return {
__IS_FILTERED_OPTION: true,
path,
[names.label]: render(inputValue, path, prefixCls, names),
[names.value]: path.map((o: CascaderOptionType) => o[names.value]),
[names.label]: render(inputValue, path, prefixCls, names),
disabled: path.some((o: CascaderOptionType) => !!o.disabled),
isEmptyNode: true,
} as CascaderOptionType;
});
}
return [
{
[names.label]: notFoundContent || renderEmpty('Cascader'),
[names.value]: 'ANT_CASCADER_NOT_FOUND',
[names.label]: notFoundContent || renderEmpty('Cascader'),
disabled: true,
isEmptyNode: true,
},
];
}
@@ -430,7 +431,7 @@ class Cascader extends React.Component<CascaderProps, CascaderState> {
prefixCls: customizePrefixCls,
inputPrefixCls: customizeInputPrefixCls,
children,
placeholder = locale.placeholder,
placeholder = locale.placeholder || 'Please select',
size,
disabled,
className,
@@ -504,9 +505,10 @@ class Cascader extends React.Component<CascaderProps, CascaderState> {
} else {
options = [
{
[names.label]: notFoundContent || renderEmpty('Cascader'),
[names.value]: 'ANT_CASCADER_NOT_FOUND',
[names.label]: notFoundContent || renderEmpty('Cascader'),
disabled: true,
isEmptyNode: true,
},
];
}
@@ -518,8 +520,7 @@ class Cascader extends React.Component<CascaderProps, CascaderState> {
}
const dropdownMenuColumnStyle: { width?: number; height?: string } = {};
const isNotFound =
(options || []).length === 1 && options[0][names.value] === 'ANT_CASCADER_NOT_FOUND';
const isNotFound = (options || []).length === 1 && options[0].isEmptyNode;
if (isNotFound) {
dropdownMenuColumnStyle.height = 'auto'; // Height of one row.
}

View File

@@ -74,10 +74,4 @@ interface Option {
| blur() | 移除焦点 | |
| focus() | 获取焦点 | |
<style>
.ant-cascader-picker {
width: 300px;
}
</style>
> 注意,如果需要获得中国省市区数据,可以参考 [china-division](https://gist.github.com/afc163/7582f35654fd03d5be7009444345ea17)。

View File

@@ -125,7 +125,7 @@
&-menus {
position: absolute;
z-index: @zindex-dropdown;
font-size: @font-size-base;
font-size: @cascader-dropdown-font-size;
white-space: nowrap;
background: @component-background;
border-radius: @border-radius-base;
@@ -134,7 +134,6 @@
ul,
ol {
margin: 0;
padding: 0;
list-style: none;
}
@@ -165,7 +164,7 @@
min-width: 111px;
height: 180px;
margin: 0;
padding: 0;
padding: @cascader-dropdown-edge-child-vertical-padding 0;
overflow: auto;
vertical-align: top;
list-style: none;
@@ -185,8 +184,8 @@
}
}
&-menu-item {
padding: 5px @control-padding-horizontal;
line-height: 22px;
padding: @cascader-dropdown-vertical-padding @control-padding-horizontal;
line-height: @cascader-dropdown-line-height;
white-space: nowrap;
cursor: pointer;
transition: all 0.3s;

View File

@@ -34,10 +34,20 @@ title: Checkbox
| defaultValue | 默认选中的选项 | string\[] | \[] | 3.6.2 |
| disabled | 整组失效 | boolean | false | 3.6.2 |
| name | CheckboxGroup 下所有 `input[type="checkbox"]``name` 属性 | string | - | 3.16.0 |
| options | 指定可选项 | string\[] | \[] | 3.6.2 |
| options | 指定可选项 | string\[] \| Option\[] | \[] | 3.6.2 |
| value | 指定选中的选项 | string\[] | \[] | 3.6.2 |
| onChange | 变化时回调函数 | Function(checkedValue) | - | 3.6.2 |
##### Option
```typescript
interface Option {
label: string;
value: string;
disabled?: boolean;
}
```
### 方法
#### Checkbox

View File

@@ -61,7 +61,7 @@
position: absolute;
top: 50%;
left: 21%;
left: 22%;
display: table;
width: @check-width;
height: @check-height;
@@ -151,6 +151,9 @@
display: inline-block;
line-height: unset;
cursor: pointer;
&.@{checkbox-prefix-cls}-wrapper-disabled {
cursor: not-allowed;
}
& + & {
margin-left: 8px;
}

View File

@@ -45,14 +45,15 @@ export default class Collapse extends React.Component<CollapseProps, any> {
renderExpandIcon = (panelProps: PanelProps = {}, prefixCls: string) => {
const { expandIcon } = this.props;
const icon = expandIcon ? (
const icon = (expandIcon ? (
expandIcon(panelProps)
) : (
<Icon type="right" rotate={panelProps.isActive ? 90 : undefined} />
);
)) as React.ReactNode;
return React.isValidElement(icon)
? React.cloneElement(icon as any, {
className: `${prefixCls}-arrow`,
className: classNames(icon.props.className, `${prefixCls}-arrow`),
})
: icon;
};

View File

@@ -638,7 +638,9 @@ exports[`renders ./components/collapse/demo/extra.md correctly 1`] = `
</div>
</div>
<br />
Expand Icon Position:
<span>
Expand Icon Position:
</span>
<div
class="ant-select ant-select-enabled"
>

View File

@@ -1,9 +1,21 @@
import React from 'react';
import { mount } from 'enzyme';
import Collapse from '..';
import mountTest from '../../../tests/shared/mountTest';
describe('Collapse', () => {
// Fix css-animation deps on these
// https://github.com/yiminghe/css-animation/blob/a5986d73fd7dfce75665337f39b91483d63a4c8c/src/Event.js#L44
window.AnimationEvent = window.AnimationEvent || (() => {});
window.TransitionEvent = window.TransitionEvent || (() => {});
afterAll(() => {
// restore it
delete window.AnimationEvent;
delete window.TransitionEvent;
});
// eslint-disable-next-line global-require
const Collapse = require('..').default;
mountTest(Collapse);
it('should support remove expandIcon', () => {
@@ -15,6 +27,22 @@ describe('Collapse', () => {
expect(wrapper.render()).toMatchSnapshot();
});
it('should keep the className of the expandIcon', () => {
const wrapper = mount(
<Collapse
expandIcon={() => (
<button type="button" className="custom-expandicon-classname">
action
</button>
)}
>
<Collapse.Panel header="header" />
</Collapse>,
);
expect(wrapper.find('.custom-expandicon-classname').exists()).toBe(true);
});
it('should render extra node of panel', () => {
const wrapper = mount(
<Collapse>
@@ -24,4 +52,24 @@ describe('Collapse', () => {
);
expect(wrapper.render()).toMatchSnapshot();
});
it('could be expand and collapse', () => {
jest.useFakeTimers();
const wrapper = mount(
<Collapse>
<Collapse.Panel header="This is panel header 1" key="1">
content
</Collapse.Panel>
</Collapse>,
);
expect(wrapper.find('.ant-collapse-item').hasClass('ant-collapse-item-active')).toBe(false);
wrapper
.find('.ant-collapse-header')
.at(0)
.simulate('click');
expect(wrapper.find('.ant-collapse-item').hasClass('ant-collapse-item-active')).toBe(true);
jest.runAllTimers();
expect(wrapper.find('.ant-collapse-item').hasClass('ant-collapse-item-active')).toBe(true);
jest.useRealTimers();
});
});

View File

@@ -68,7 +68,7 @@ class Demo extends React.Component {
</Panel>
</Collapse>
<br />
Expand Icon Position:{' '}
<span>Expand Icon Position: </span>
<Select value={expandIconPosition} onChange={this.onPositionChange}>
<Option value="left">left</Option>
<Option value="right">right</Option>

View File

@@ -70,7 +70,7 @@
.@{collapse-prefix-cls}-arrow {
right: @padding-md;
left: initial;
left: auto;
}
}
}
@@ -102,7 +102,7 @@
}
&-borderless {
background-color: @component-background;
background-color: @collapse-header-bg;
border: 0;
}

View File

@@ -32,12 +32,12 @@
&-author {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
margin-bottom: 4px;
font-size: @comment-font-size-base;
& > a,
& > span {
height: 18px;
padding-right: 8px;
font-size: @comment-font-size-sm;
line-height: 18px;

View File

@@ -31,6 +31,7 @@ import Mention from '../../mention';
import Menu from '../../menu';
import Modal from '../../modal';
import Pagination from '../../pagination';
import PageHeader from '../../page-header';
import Popconfirm from '../../popconfirm';
import Popover from '../../popover';
import Progress from '../../progress';
@@ -60,6 +61,7 @@ jest.mock('rc-util/lib/Portal');
describe('ConfigProvider', () => {
describe('components', () => {
function testPair(name, renderComponent) {
// eslint-disable-next-line jest/valid-describe
describe(`${name}`, () => {
// normal
it('normal', () => {
@@ -74,7 +76,11 @@ describe('ConfigProvider', () => {
// configProvider
it('configProvider', () => {
expect(
render(<ConfigProvider prefixCls="config">{renderComponent({})}</ConfigProvider>),
render(
<ConfigProvider pageHeader={{ ghost: false }} prefixCls="config">
{renderComponent({})}
</ConfigProvider>,
),
).toMatchSnapshot();
});
});
@@ -368,6 +374,13 @@ describe('ConfigProvider', () => {
</div>
));
// PageHeader
testPair('PageHeader', props => (
<div>
<PageHeader title="pageHeader" {...props} />
</div>
));
// Popconfirm
testPair('Popconfirm', props => (
<div>

View File

@@ -0,0 +1,78 @@
import * as React from 'react';
import createReactContext from '@ant-design/create-react-context';
import defaultRenderEmpty, { RenderEmptyHandler } from './renderEmpty';
import { Locale } from '../locale-provider';
export interface CSPConfig {
nonce?: string;
}
export interface ConfigConsumerProps {
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
rootPrefixCls?: string;
getPrefixCls: (suffixCls: string, customizePrefixCls?: string) => string;
renderEmpty: RenderEmptyHandler;
csp?: CSPConfig;
autoInsertSpaceInButton?: boolean;
locale?: Locale;
pageHeader?: {
ghost: boolean;
};
}
export const ConfigContext = createReactContext<ConfigConsumerProps>({
// We provide a default function for Context without provider
getPrefixCls: (suffixCls: string, customizePrefixCls?: string) => {
if (customizePrefixCls) return customizePrefixCls;
return `ant-${suffixCls}`;
},
renderEmpty: defaultRenderEmpty,
});
export const ConfigConsumer = ConfigContext.Consumer;
// =========================== withConfigConsumer ===========================
// We need define many types here. So let's put in the block region
type IReactComponent<P = any> =
| React.StatelessComponent<P>
| React.ComponentClass<P>
| React.ClassicComponentClass<P>;
interface BasicExportProps {
prefixCls?: string;
}
interface ConsumerConfig {
prefixCls: string;
}
interface ConstructorProps {
displayName?: string;
}
export function withConfigConsumer<ExportProps extends BasicExportProps>(config: ConsumerConfig) {
return function withConfigConsumerFunc<ComponentDef>(
Component: IReactComponent,
): React.SFC<ExportProps> & ComponentDef {
// Wrap with ConfigConsumer. Since we need compatible with react 15, be care when using ref methods
const SFC = ((props: ExportProps) => (
<ConfigConsumer>
{(configProps: ConfigConsumerProps) => {
const { prefixCls: basicPrefixCls } = config;
const { getPrefixCls } = configProps;
const { prefixCls: customizePrefixCls } = props;
const prefixCls = getPrefixCls(basicPrefixCls, customizePrefixCls);
return <Component {...configProps} {...props} prefixCls={prefixCls} />;
}}
</ConfigConsumer>
)) as React.SFC<ExportProps> & ComponentDef;
const cons: ConstructorProps = Component.constructor as ConstructorProps;
const name = (cons && cons.displayName) || Component.name || 'Component';
SFC.displayName = `withConfigConsumer(${name})`;
return SFC;
};
}

View File

@@ -9,7 +9,7 @@ title: ConfigProvider
## Usage
This component provides a configuration to all React components underneath itself via the [context API](https://facebook.github.io/react/docs/context.html), In the render tree all components will have access to the provided config.
This component provides a configuration to all React components underneath itself via the [context API](https://facebook.github.io/react/docs/context.html). In the render tree all components will have access to the provided config.
```jsx
import { ConfigProvider } from 'antd';
@@ -25,7 +25,7 @@ return (
### Content Security Policy
Some component use dynamic style to support wave effect. You can config `csp` prop if Content Security Policy (CSP) is enabled:
Some components use dynamic style to support wave effect. You can config `csp` prop if Content Security Policy (CSP) is enabled:
```jsx
<ConfigProvider csp={{ nonce: 'YourNonceCode' }}>
@@ -43,3 +43,30 @@ Some component use dynamic style to support wave effect. You can config `csp` pr
| getPopupContainer | to set the container of the popup element. The default is to create a `div` element in `body`. | Function(triggerNode) | `() => document.body` | 3.11.0 |
| locale | language package setting, you can find the packages in [antd/es/locale](http://unpkg.com/antd/es/locale/) | object | 3.21.0 |
| prefixCls | set prefix class | string | ant | 3.12.0 |
| pageHeader | Unify the ghost of pageHeader ,Ref [pageHeader](<(/components/page-header)> | { ghost:boolean } | 'true' | 3.24.0 |
## FAQ
#### Does the locale problem still exist in DatePicker even if ConfigProvider `locale` is used?
Please make sure you set moment locale by `moment.locale('zh-cn')` or that you don't have two different versions of moment.
#### Modal throw error when setting `getPopupContainer`?
Related issue: https://github.com/ant-design/ant-design/issues/19974
When you config `getPopupContainer` to parentNode globally, Modal will throw error of `triggerNode is undefined` because it did not have a triggerNode. You can try the [fix](https://github.com/afc163/feedback-antd/commit/3e4d1ad1bc1a38460dc3bf3c56517f737fe7d44a) below.
```diff
<ConfigProvider
- getPopupContainer={triggerNode => triggerNode.parentNode}
+ getPopupContainer={node => {
+ if (node) {
+ return node.parentNode;
+ }
+ return document.body;
+ }}
>
<App />
</ConfigProvider>
```

View File

@@ -2,27 +2,13 @@
// SFC has specified a displayName, but not worked.
/* eslint-disable react/display-name */
import * as React from 'react';
import createReactContext from '@ant-design/create-react-context';
import defaultRenderEmpty, { RenderEmptyHandler } from './renderEmpty';
import { RenderEmptyHandler } from './renderEmpty';
import LocaleProvider, { Locale, ANT_MARK } from '../locale-provider';
import LocaleReceiver from '../locale-provider/LocaleReceiver';
import { ConfigConsumer, ConfigContext, CSPConfig, ConfigConsumerProps } from './context';
export { RenderEmptyHandler };
export interface CSPConfig {
nonce?: string;
}
export interface ConfigConsumerProps {
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
rootPrefixCls?: string;
getPrefixCls: (suffixCls: string, customizePrefixCls?: string) => string;
renderEmpty: RenderEmptyHandler;
csp?: CSPConfig;
autoInsertSpaceInButton?: boolean;
locale?: Locale;
}
export { RenderEmptyHandler, ConfigConsumer, CSPConfig, ConfigConsumerProps };
export const configConsumerProps = [
'getPopupContainer',
@@ -32,6 +18,7 @@ export const configConsumerProps = [
'csp',
'autoInsertSpaceInButton',
'locale',
'pageHeader',
];
export interface ConfigProviderProps {
@@ -42,21 +29,11 @@ export interface ConfigProviderProps {
csp?: CSPConfig;
autoInsertSpaceInButton?: boolean;
locale?: Locale;
pageHeader?: {
ghost: boolean;
};
}
const ConfigContext = createReactContext<ConfigConsumerProps>({
// We provide a default function for Context without provider
getPrefixCls: (suffixCls: string, customizePrefixCls?: string) => {
if (customizePrefixCls) return customizePrefixCls;
return `ant-${suffixCls}`;
},
renderEmpty: defaultRenderEmpty,
});
export const ConfigConsumer = ConfigContext.Consumer;
class ConfigProvider extends React.Component<ConfigProviderProps> {
getPrefixCls = (suffixCls: string, customizePrefixCls?: string) => {
const { prefixCls = 'ant' } = this.props;
@@ -74,6 +51,7 @@ class ConfigProvider extends React.Component<ConfigProviderProps> {
csp,
autoInsertSpaceInButton,
locale,
pageHeader,
} = this.props;
const config: ConfigConsumerProps = {
@@ -86,10 +64,15 @@ class ConfigProvider extends React.Component<ConfigProviderProps> {
if (getPopupContainer) {
config.getPopupContainer = getPopupContainer;
}
if (renderEmpty) {
config.renderEmpty = renderEmpty;
}
if (pageHeader) {
config.pageHeader = pageHeader;
}
return (
<ConfigContext.Provider value={config}>
<LocaleProvider locale={locale || legacyLocale} _ANT_MARK__={ANT_MARK}>
@@ -112,49 +95,4 @@ class ConfigProvider extends React.Component<ConfigProviderProps> {
}
}
// =========================== withConfigConsumer ===========================
// We need define many types here. So let's put in the block region
type IReactComponent<P = any> =
| React.StatelessComponent<P>
| React.ComponentClass<P>
| React.ClassicComponentClass<P>;
interface BasicExportProps {
prefixCls?: string;
}
interface ConsumerConfig {
prefixCls: string;
}
interface ConstructorProps {
displayName?: string;
}
export function withConfigConsumer<ExportProps extends BasicExportProps>(config: ConsumerConfig) {
return function withConfigConsumerFunc<ComponentDef>(
Component: IReactComponent,
): React.SFC<ExportProps> & ComponentDef {
// Wrap with ConfigConsumer. Since we need compatible with react 15, be care when using ref methods
const SFC = ((props: ExportProps) => (
<ConfigConsumer>
{(configProps: ConfigConsumerProps) => {
const { prefixCls: basicPrefixCls } = config;
const { getPrefixCls } = configProps;
const { prefixCls: customizePrefixCls } = props;
const prefixCls = getPrefixCls(basicPrefixCls, customizePrefixCls);
return <Component {...configProps} {...props} prefixCls={prefixCls} />;
}}
</ConfigConsumer>
)) as React.SFC<ExportProps> & ComponentDef;
const cons: ConstructorProps = Component.constructor as ConstructorProps;
const name = (cons && cons.displayName) || Component.name || 'Component';
SFC.displayName = `withConfigConsumer(${name})`;
return SFC;
};
}
export default ConfigProvider;

View File

@@ -44,3 +44,30 @@ return (
| getPopupContainer | 弹出框Select, Tooltip, Menu 等等)渲染父节点,默认渲染到 body 上。 | Function(triggerNode) | () => document.body | 3.11.0 |
| locale | 语言包配置,语言包可到 [antd/es/locale](http://unpkg.com/antd/es/locale/) 目录下寻找 | object | - | 3.21.0 |
| prefixCls | 设置统一样式前缀 | string | ant | 3.12.0 |
| pageHeader | 统一设置 pageHeader 的 ghost参考 [pageHeader](<(/components/page-header)>) | { ghost: boolean } | 'true' | 3.24.0 |
## FAQ
#### 为什么我使用了 ConfigProvider `locale`,时间类组件的国际化还有问题?
请检查是否设置了 `moment.locale('zh-cn')`,或者是否有两个版本的 moment 共存。
#### 配置 `getPopupContainer` 导致 Modal 报错?
相关 issuehttps://github.com/ant-design/ant-design/issues/19974
当如下全局设置 `getPopupContainer` 为触发节点的 parentNode 时,由于 Modal 的用法不存在 `triggerNode`,这样会导致 `triggerNode is undefined` 的报错,需要增加一个[判断条件](https://github.com/afc163/feedback-antd/commit/3e4d1ad1bc1a38460dc3bf3c56517f737fe7d44a)。
```diff
<ConfigProvider
- getPopupContainer={triggerNode => triggerNode.parentNode}
+ getPopupContainer={node => {
+ if (node) {
+ return node.parentNode;
+ }
+ return document.body;
+ }}
>
<App />
</ConfigProvider>
```

View File

@@ -11,7 +11,7 @@ import Tag from '../tag';
import { ConfigConsumer, ConfigConsumerProps } from '../config-provider';
import warning from '../_util/warning';
import interopDefault from '../_util/interopDefault';
import { RangePickerValue, RangePickerPresetRange } from './interface';
import { RangePickerValue, RangePickerPresetRange, RangePickerProps } from './interface';
import { formatDate } from './utils';
import InputIcon from './InputIcon';
@@ -31,7 +31,7 @@ function getShowDateFromValue(value: RangePickerValue, mode?: string | string[])
if (mode && mode[0] === 'month') {
return [start, end] as RangePickerValue;
}
const newEnd = end && end.isSame(start, 'month') ? end.clone().add(1, 'month') : end;
const newEnd = end && end.isSame(start!, 'month') ? end.clone().add(1, 'month') : end;
return [start, newEnd] as RangePickerValue;
}
@@ -54,7 +54,7 @@ function isEmptyArray(arr: any) {
return false;
}
function fixLocale(value: RangePickerValue | undefined, localeCode: string) {
function fixLocale(value: RangePickerValue | undefined, localeCode: string | undefined) {
if (!localeCode) {
return;
}
@@ -70,14 +70,14 @@ function fixLocale(value: RangePickerValue | undefined, localeCode: string) {
}
}
class RangePicker extends React.Component<any, RangePickerState> {
class RangePicker extends React.Component<RangePickerProps, RangePickerState> {
static defaultProps = {
allowClear: true,
showToday: false,
separator: '~',
};
static getDerivedStateFromProps(nextProps: any, prevState: any) {
static getDerivedStateFromProps(nextProps: RangePickerProps, prevState: RangePickerState) {
let state = null;
if ('value' in nextProps) {
const value = nextProps.value || [];
@@ -162,11 +162,13 @@ class RangePicker extends React.Component<any, RangePickerState> {
showDate: getShowDateFromValue(value) || showDate,
}));
}
if (value[0] && value[0].diff(value[1]) > 0) {
if (value[0] && value[1] && value[0].diff(value[1]) > 0) {
value[1] = undefined;
}
const [start, end] = value;
props.onChange(value, [formatDate(start, props.format), formatDate(end, props.format)]);
if (typeof props.onChange === 'function') {
props.onChange(value, [formatDate(start, props.format), formatDate(end, props.format)]);
}
};
handleOpenChange = (open: boolean) => {
@@ -241,21 +243,24 @@ class RangePicker extends React.Component<any, RangePickerState> {
{renderExtraFooter()}
</div>
) : null;
const operations = Object.keys(ranges || {}).map(range => {
const value = ranges[range];
return (
<Tag
key={range}
prefixCls={tagPrefixCls}
color="blue"
onClick={() => this.handleRangeClick(value)}
onMouseEnter={() => this.setState({ hoverValue: value })}
onMouseLeave={this.handleRangeMouseLeave}
>
{range}
</Tag>
);
});
const operations =
ranges &&
Object.keys(ranges).map(range => {
const value = ranges[range];
const hoverValue = typeof value === 'function' ? value.call(this) : value;
return (
<Tag
key={range}
prefixCls={tagPrefixCls}
color="blue"
onClick={() => this.handleRangeClick(value)}
onMouseEnter={() => this.setState({ hoverValue })}
onMouseLeave={this.handleRangeMouseLeave}
>
{range}
</Tag>
);
});
const rangeNode =
operations && operations.length > 0 ? (
<div className={`${prefixCls}-footer-extra ${prefixCls}-range-quick-selector`} key="range">
@@ -280,6 +285,7 @@ class RangePicker extends React.Component<any, RangePickerState> {
ranges,
onOk,
locale,
// @ts-ignore
localeCode,
format,
dateRender,
@@ -326,10 +332,12 @@ class RangePicker extends React.Component<any, RangePickerState> {
calendarProps.mode = props.mode;
}
const startPlaceholder =
'placeholder' in props ? props.placeholder[0] : locale.lang.rangePlaceholder[0];
const endPlaceholder =
'placeholder' in props ? props.placeholder[1] : locale.lang.rangePlaceholder[1];
const startPlaceholder = Array.isArray(props.placeholder)
? props.placeholder[0]
: locale.lang.rangePlaceholder[0];
const endPlaceholder = Array.isArray(props.placeholder)
? props.placeholder[1]
: locale.lang.rangePlaceholder[1];
const calendar = (
<RangeCalendar
@@ -405,7 +413,7 @@ class RangePicker extends React.Component<any, RangePickerState> {
return (
<span
ref={this.savePicker}
id={props.id}
id={typeof props.id === 'number' ? props.id.toString() : props.id}
className={classNames(props.className, props.pickerClass)}
style={{ ...style, ...pickerStyle }}
tabIndex={props.disabled ? -1 : 0}

View File

@@ -47,7 +47,7 @@ class WeekPicker extends React.Component<any, WeekPickerState> {
const value = props.value || props.defaultValue;
if (value && !interopDefault(moment).isMoment(value)) {
throw new Error(
'The value/defaultValue of DatePicker or MonthPicker must be ' +
'The value/defaultValue of WeekPicker must be ' +
'a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value',
);
}
@@ -143,6 +143,7 @@ class WeekPicker extends React.Component<any, WeekPickerState> {
onBlur,
id,
suffixIcon,
defaultPickerValue,
} = this.props;
const prefixCls = getPrefixCls('calendar', customizePrefixCls);
@@ -170,6 +171,7 @@ class WeekPicker extends React.Component<any, WeekPickerState> {
showToday={false}
disabledDate={disabledDate}
renderFooter={this.renderFooter}
defaultValue={defaultPickerValue}
/>
);
const clearIcon =

View File

@@ -390,14 +390,22 @@ describe('RangePicker', () => {
// https://github.com/ant-design/ant-design/issues/17135
it('the end time should be less than the start time', () => {
const wrapper = mount(
<RangePicker defaultValue={[moment(), moment()]} />,
);
const wrapper = mount(<RangePicker defaultValue={[moment(), moment()]} />);
wrapper.find('.ant-calendar-picker-input').simulate('click');
const firstInput = wrapper.find('.ant-calendar-input').first();
const secondInput = wrapper.find('.ant-calendar-input').last();
firstInput.simulate('change', { target: { value: moment().add(1, 'day').format('YYYY-MM-DD')}});
expect(firstInput.getDOMNode().value).toBe(moment().add(1, 'day').format('YYYY-MM-DD'));
firstInput.simulate('change', {
target: {
value: moment()
.add(1, 'day')
.format('YYYY-MM-DD'),
},
});
expect(firstInput.getDOMNode().value).toBe(
moment()
.add(1, 'day')
.format('YYYY-MM-DD'),
);
expect(secondInput.getDOMNode().value).toBe('');
});
});

View File

@@ -1,5 +1,6 @@
import React from 'react';
import { mount, render } from 'enzyme';
import moment from 'moment';
import { setMockDate, resetMockDate } from '../../../tests/utils';
import DatePicker from '..';
import focusTest from '../../../tests/shared/focusTest';
@@ -71,4 +72,16 @@ describe('WeekPicker', () => {
),
).toMatchSnapshot();
});
it('should support allowClear', () => {
const onChange = jest.fn();
const wrapper = mount(
<WeekPicker defaultValue={moment()} onChange={onChange} />,
);
wrapper
.find('.ant-calendar-picker-clear')
.hostNodes()
.simulate('click');
expect(onChange).toHaveBeenCalledWith(null, '');
});
});

View File

@@ -0,0 +1,52 @@
import React from 'react';
import { mount } from 'enzyme';
import DatePicker from '..';
const { MonthPicker, WeekPicker, RangePicker } = DatePicker;
describe('invalid value or defaultValue', () => {
beforeAll(() => {
jest.spyOn(console, 'error').mockImplementation(() => undefined);
});
afterAll(() => {
// eslint-disable-next-line no-console
console.error.mockRestore();
});
it('DatePicker should throw error when value or defaultValue is not moment object', () => {
expect(() => {
mount(<DatePicker value={{}} />);
}).toThrow('The value/defaultValue of DatePicker or MonthPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value');
expect(() => {
mount(<DatePicker defaultValue={{}} />);
}).toThrow('The value/defaultValue of DatePicker or MonthPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value')
});
it('WeekPicker should throw error when value or defaultValue is not moment object', () => {
expect(() => {
mount(<WeekPicker value={{}} />);
}).toThrow('The value/defaultValue of WeekPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value');
expect(() => {
mount(<WeekPicker defaultValue={{}} />);
}).toThrow('The value/defaultValue of WeekPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value');
});
it('RangePicker should throw error when value or defaultValue is not moment object', () => {
expect(() => {
mount(<RangePicker value={[{}, {}]} />);
}).toThrow('The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, see: https://u.ant.design/date-picker-value');
expect(() => {
mount(<RangePicker defaultValue={[{}, {}]} />);
}).toThrow('The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, see: https://u.ant.design/date-picker-value')
});
it('MonthPicker should throw error when value or defaultValue is not moment object', () => {
expect(() => {
mount(<MonthPicker value={{}} />);
}).toThrow('The value/defaultValue of DatePicker or MonthPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value');
expect(() => {
mount(<MonthPicker defaultValue={{}} />);
}).toThrow('The value/defaultValue of DatePicker or MonthPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value')
});
});

View File

@@ -127,7 +127,7 @@ The following APIs are shared by DatePicker, MonthPicker, RangePicker, WeekPicke
| showTime | to provide an additional time selection | object\|boolean | [TimePicker Options](/components/time-picker/#API) | |
| showTime.defaultValue | to set default time of selected date, [demo](#components-date-picker-demo-disabled-date) | [moment](http://momentjs.com/)\[] | \[moment(), moment()] | |
| value | to set date | \[[moment](http://momentjs.com/), [moment](http://momentjs.com/)] | - | |
| onCalendarChange | a callback function, can be executed when the start time or the end time of the range is changing | function(dates: \[moment, moment], dateStrings: \[string, string]) | - | 3.10.9 |
| onCalendarChange | a callback function, can be executed when the start time or the end time of the range is changing | function(dates: \[moment, moment]) | - | 3.0.0 |
| onChange | a callback function, can be executed when the selected time is changing | function(dates: \[moment, moment], dateStrings: \[string, string]) | - | |
| onOk | callback when click ok button | function(dates: [moment](http://momentjs.com/)\[]) | - | |

View File

@@ -129,7 +129,7 @@ moment.locale('zh-cn');
| showTime | 增加时间选择功能 | Object\|boolean | [TimePicker Options](/components/time-picker/#API) | |
| showTime.defaultValue | 设置用户选择日期时默认的时分秒,[例子](#components-date-picker-demo-disabled-date) | [moment](http://momentjs.com/)\[] | \[moment(), moment()] | |
| value | 日期 | [moment](http://momentjs.com/)\[] | 无 | |
| onCalendarChange | 待选日期发生变化的回调 | function(dates: \[moment, moment\], dateStrings: \[string, string\]) | 无 | |
| onCalendarChange | 待选日期发生变化的回调 | function(dates: \[moment, moment\]) | 无 | 3.0.0 |
| onChange | 日期范围发生变化的回调 | function(dates: \[moment, moment\], dateStrings: \[string, string\]) | 无 | |
| onOk | 点击确定按钮的回调 | function(dates: [moment](http://momentjs.com/)\[]) | - | |

View File

@@ -12,6 +12,8 @@ export interface PickerProps {
disabled?: boolean;
allowClear?: boolean;
className?: string;
pickerClass?: string;
pickerInputClass?: string;
suffixIcon?: React.ReactNode;
style?: React.CSSProperties;
popupStyle?: React.CSSProperties;
@@ -21,56 +23,64 @@ export interface PickerProps {
getCalendarContainer?: (triggerNode: Element) => HTMLElement;
open?: boolean;
onOpenChange?: (status: boolean) => void;
disabledDate?: (current: moment.Moment | undefined) => boolean;
disabledDate?: (current: moment.Moment | null) => boolean;
dateRender?: (current: moment.Moment, today: moment.Moment) => React.ReactNode;
autoFocus?: boolean;
onFocus?: React.FocusEventHandler;
onBlur?: (e: React.SyntheticEvent) => void;
}
export interface SinglePickerProps {
value?: moment.Moment;
defaultValue?: moment.Moment;
defaultPickerValue?: moment.Moment;
value?: moment.Moment | null;
defaultValue?: moment.Moment | null;
defaultPickerValue?: moment.Moment | null;
placeholder?: string;
renderExtraFooter?: (mode: DatePickerMode) => React.ReactNode;
onChange?: (date: moment.Moment | null, dateString: string) => void;
}
const DatePickerModes = tuple('time', 'date', 'month', 'year', 'decade');
export type DatePickerMode = (typeof DatePickerModes)[number];
export type DatePickerMode = typeof DatePickerModes[number];
export interface DatePickerProps extends PickerProps, SinglePickerProps {
showTime?: TimePickerProps | boolean;
showToday?: boolean;
open?: boolean;
disabledTime?: (
current: moment.Moment | undefined,
current?: moment.Moment | null,
) => {
disabledHours?: () => number[];
disabledMinutes?: () => number[];
disabledSeconds?: () => number[];
};
onOpenChange?: (status: boolean) => void;
onPanelChange?: (value: moment.Moment | undefined, mode: DatePickerMode) => void;
onOk?: (selectedTime: moment.Moment) => void;
onPanelChange?: (value: moment.Moment | null, mode: DatePickerMode) => void;
onOk?: (selectedTime: moment.Moment | null) => void;
mode?: DatePickerMode;
}
export interface MonthPickerProps extends PickerProps, SinglePickerProps {
monthCellContentRender?: (date: moment.Moment, locale: any) => React.ReactNode
monthCellContentRender?: (date: moment.Moment, locale: any) => React.ReactNode;
}
export type RangePickerValue =
| undefined[]
| null[]
| [moment.Moment]
| [undefined, moment.Moment]
| [moment.Moment, undefined]
| [null, moment.Moment]
| [moment.Moment, null]
| [moment.Moment, moment.Moment];
export type RangePickerPresetRange = RangePickerValue | (() => RangePickerValue);
export interface RangePickerProps extends PickerProps {
className?: string;
tagPrefixCls?: string;
value?: RangePickerValue;
defaultValue?: RangePickerValue;
defaultPickerValue?: RangePickerValue;
timePicker?: React.ReactNode;
onChange?: (dates: RangePickerValue, dateStrings: [string, string]) => void;
onCalendarChange?: (dates: RangePickerValue, dateStrings: [string, string]) => void;
onOk?: (selectedTime: RangePickerPresetRange) => void;
@@ -83,7 +93,7 @@ export interface RangePickerProps extends PickerProps {
mode?: string | string[];
separator?: React.ReactNode;
disabledTime?: (
current: moment.Moment | undefined,
current: RangePickerValue,
type: string,
) => {
disabledHours?: () => number[];
@@ -92,6 +102,8 @@ export interface RangePickerProps extends PickerProps {
};
onPanelChange?: (value?: RangePickerValue, mode?: string | string[]) => void;
renderExtraFooter?: () => React.ReactNode;
onMouseEnter?: (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void;
onMouseLeave?: (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void;
}
export interface WeekPickerProps extends PickerProps, SinglePickerProps {

View File

@@ -0,0 +1,19 @@
import CalendarLocale from 'rc-calendar/lib/locale/mk_MK';
import TimePickerLocale from '../../time-picker/locale/mk_MK';
// Merge into a locale object
const locale = {
lang: {
placeholder: 'Избери датум',
rangePlaceholder: ['Од датум', 'До датум'],
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json
export default locale;

View File

@@ -3,7 +3,7 @@ import * as moment from 'moment';
// eslint-disable-next-line import/prefer-default-export
export function formatDate(
value: moment.Moment | undefined | null,
format: string | string[],
format: string | string[] | undefined,
): string {
if (!value) {
return '';

View File

@@ -192,6 +192,7 @@ export default function wrapPicker(Picker: React.ComponentClass<any>, pickerType
className={timePickerCls}
placeholder={locale.timePickerLocale.placeholder}
transitionName="slide-up"
onEsc={() => {}}
/>
) : null;

View File

@@ -14,7 +14,7 @@ const Col: React.SFC<ColProps> = props => {
const { child, bordered, colon, type, layout } = props;
const { prefixCls, label, className, children, span = 1 } = child.props;
const labelProps: any = {
className: classNames(`${prefixCls}-item-label`, className, {
className: classNames(`${prefixCls}-item-label`, {
[`${prefixCls}-item-colon`]: colon,
[`${prefixCls}-item-no-label`]: !label,
}),

View File

@@ -263,7 +263,7 @@ exports[`renders ./components/descriptions/demo/border.md correctly 1`] = `
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1
<br />
@@ -384,7 +384,7 @@ exports[`renders ./components/descriptions/demo/responsive.md correctly 1`] = `
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1
</td>
@@ -569,7 +569,7 @@ exports[`renders ./components/descriptions/demo/size.md correctly 1`] = `
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1
<br />
@@ -904,7 +904,7 @@ exports[`renders ./components/descriptions/demo/vertical-border.md correctly 1`]
</th>
<th
class="ant-descriptions-item-label ant-descriptions-item-colon"
colspan="5"
colspan="3"
>
Usage Time
</th>
@@ -920,7 +920,7 @@ exports[`renders ./components/descriptions/demo/vertical-border.md correctly 1`]
</td>
<td
class="ant-descriptions-item-content"
colspan="5"
colspan="3"
>
2019-04-24 18:00:00
</td>
@@ -1025,7 +1025,7 @@ exports[`renders ./components/descriptions/demo/vertical-border.md correctly 1`]
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1
<br />

View File

@@ -192,7 +192,7 @@ exports[`Descriptions Descriptions.Item support className 1`] = `
colSpan={1}
>
<span
className="ant-descriptions-item-label my-class ant-descriptions-item-colon"
className="ant-descriptions-item-label ant-descriptions-item-colon"
key="label"
>
Product
@@ -376,6 +376,78 @@ exports[`Descriptions column is number 1`] = `
</Descriptions>
`;
exports[`Descriptions should work with React Fragment 1`] = `
<div
class="ant-descriptions"
>
<div
class="ant-descriptions-view"
>
<table>
<tbody>
<tr
class="ant-descriptions-row"
>
<td
class="ant-descriptions-item"
colspan="1"
>
<span
class="ant-descriptions-item-label ant-descriptions-item-colon"
>
bamboo
</span>
<span
class="ant-descriptions-item-content"
>
bamboo
</span>
</td>
</tr>
<tr
class="ant-descriptions-row"
>
<td
class="ant-descriptions-item"
colspan="1"
>
<span
class="ant-descriptions-item-label ant-descriptions-item-colon"
>
bamboo
</span>
<span
class="ant-descriptions-item-content"
>
bamboo
</span>
</td>
</tr>
<tr
class="ant-descriptions-row"
>
<td
class="ant-descriptions-item"
colspan="1"
>
<span
class="ant-descriptions-item-label ant-descriptions-item-colon"
>
bamboo
</span>
<span
class="ant-descriptions-item-content"
>
bamboo
</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
`;
exports[`Descriptions vertical layout 1`] = `
<Descriptions
column={

View File

@@ -185,4 +185,22 @@ describe('Descriptions', () => {
expect(wrapper.find('Col').key()).toBe('label-bamboo');
});
// https://github.com/ant-design/ant-design/issues/19887
it('should work with React Fragment', () => {
if (!React.Fragment) {
return;
}
const wrapper = mount(
<Descriptions>
<Descriptions.Item label="bamboo">bamboo</Descriptions.Item>
<>
<Descriptions.Item label="bamboo">bamboo</Descriptions.Item>
<Descriptions.Item label="bamboo">bamboo</Descriptions.Item>
</>
</Descriptions>,
);
expect(wrapper.render()).toMatchSnapshot();
});
});

View File

@@ -40,7 +40,7 @@ ReactDOM.render(
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1<br />
</Descriptions.Item>

View File

@@ -39,7 +39,7 @@ const Demo = () => {
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1
</Descriptions.Item>

View File

@@ -54,7 +54,7 @@ class Demo extends React.Component {
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1<br />
</Descriptions.Item>

View File

@@ -22,7 +22,7 @@ ReactDOM.render(
<Descriptions.Item label="Billing Mode">Prepaid</Descriptions.Item>
<Descriptions.Item label="Automatic Renewal">YES</Descriptions.Item>
<Descriptions.Item label="Order time">2018-04-24 18:00:00</Descriptions.Item>
<Descriptions.Item label="Usage Time" span={3}>
<Descriptions.Item label="Usage Time" span={2}>
2019-04-24 18:00:00
</Descriptions.Item>
<Descriptions.Item label="Status" span={3}>
@@ -40,7 +40,7 @@ ReactDOM.render(
<br />
Storage space: 10 GB
<br />
Replication_factor:3
Replication factor: 3
<br />
Region: East China 1<br />
</Descriptions.Item>

View File

@@ -1,7 +1,7 @@
---
category: Components
type: Data Display
title: Description List
title: Descriptions
cols: 1
---

View File

@@ -10,6 +10,20 @@ import ResponsiveObserve, {
import { ConfigConsumer, ConfigConsumerProps } from '../config-provider';
import Col from './Col';
// https://github.com/smooth-code/react-flatten-children/
function flattenChildren(children: React.ReactNode): JSX.Element[] {
if (!children) {
return [];
}
return toArray(children).reduce((flatChildren: JSX.Element[], child: JSX.Element) => {
if (child && child.type === React.Fragment) {
return flatChildren.concat(flattenChildren(child.props.children));
}
flatChildren.push(child);
return flatChildren;
}, []);
}
export interface DescriptionsItemProps {
prefixCls?: string;
className?: string;
@@ -47,7 +61,7 @@ const generateChildrenRows = (
let columns: React.ReactElement<DescriptionsItemProps>[] | null = null;
let leftSpans: number;
const itemNodes = toArray(children);
const itemNodes = flattenChildren(children);
itemNodes.forEach((node: React.ReactElement<DescriptionsItemProps>, index: number) => {
let itemNode = node;
@@ -113,7 +127,7 @@ const renderRow = (
const cloneChildren: JSX.Element[] = [];
const cloneContentChildren: JSX.Element[] = [];
toArray(children).forEach(
flattenChildren(children).forEach(
(childrenItem: React.ReactElement<DescriptionsItemProps>, idx: number) => {
cloneChildren.push(renderCol(childrenItem, 'label', idx));
if (layout === 'vertical') {
@@ -225,7 +239,7 @@ class Descriptions extends React.Component<
const prefixCls = getPrefixCls('descriptions', customizePrefixCls);
const column = this.getColumn();
const cloneChildren = toArray(children)
const cloneChildren = flattenChildren(children)
.map((child: React.ReactElement<DescriptionsItemProps>) => {
if (React.isValidElement(child)) {
return React.cloneElement(child, {
@@ -236,9 +250,9 @@ class Descriptions extends React.Component<
})
.filter((node: React.ReactElement) => node);
const childrenArray: Array<
React.ReactElement<DescriptionsItemProps>[]
> = generateChildrenRows(cloneChildren, column);
const childrenArray: Array<React.ReactElement<
DescriptionsItemProps
>[]> = generateChildrenRows(cloneChildren, column);
return (
<div
className={classNames(prefixCls, className, {

View File

@@ -59,4 +59,23 @@ describe('Drawer', () => {
);
expect(wrapper).toMatchSnapshot();
});
it('style/drawerStyle/headerStyle/bodyStyle should work', () => {
const style = {
backgroundColor: '#08c',
};
const wrapper = render(
<Drawer
visible
style={style}
drawerStyle={style}
headerStyle={style}
bodyStyle={style}
getContainer={false}
>
Here is content of Drawer
</Drawer>,
);
expect(wrapper).toMatchSnapshot();
});
});

View File

@@ -20,7 +20,7 @@ exports[`Drawer className is test_drawer 1`] = `
>
<div
class="ant-drawer-wrapper-body"
style="overflow:auto;height:100%;opacity:0;transition:opacity .3s"
style="opacity:0;transition:opacity .3s"
>
<div
class="ant-drawer-header-no-title"
@@ -82,7 +82,6 @@ exports[`Drawer closable is false 1`] = `
>
<div
class="ant-drawer-wrapper-body"
style="overflow:auto;height:100%"
>
<div
class="ant-drawer-body"
@@ -116,7 +115,7 @@ exports[`Drawer destroyOnClose is true 1`] = `
>
<div
class="ant-drawer-wrapper-body"
style="overflow:auto;height:100%;opacity:0;transition:opacity .3s"
style="opacity:0;transition:opacity .3s"
>
<div
class="ant-drawer-header-no-title"
@@ -178,7 +177,6 @@ exports[`Drawer have a title 1`] = `
>
<div
class="ant-drawer-wrapper-body"
style="overflow:auto;height:100%"
>
<div
class="ant-drawer-header"
@@ -245,7 +243,6 @@ exports[`Drawer render correctly 1`] = `
>
<div
class="ant-drawer-wrapper-body"
style="overflow:auto;height:100%"
>
<div
class="ant-drawer-header-no-title"
@@ -347,3 +344,68 @@ exports[`Drawer render top drawer 1`] = `
</div>
</div>
`;
exports[`Drawer style/drawerStyle/headerStyle/bodyStyle should work 1`] = `
<div
class=""
>
<div
class="ant-drawer ant-drawer-right"
style="background-color:#08c"
tabindex="-1"
>
<div
class="ant-drawer-mask"
/>
<div
class="ant-drawer-content-wrapper"
style="transform:translateX(100%);-ms-transform:translateX(100%);width:256px"
>
<div
class="ant-drawer-content"
>
<div
class="ant-drawer-wrapper-body"
style="background-color:#08c"
>
<div
class="ant-drawer-header-no-title"
style="background-color:#08c"
>
<button
aria-label="Close"
class="ant-drawer-close"
>
<i
aria-label="icon: close"
class="anticon anticon-close"
>
<svg
aria-hidden="true"
class=""
data-icon="close"
fill="currentColor"
focusable="false"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z"
/>
</svg>
</i>
</button>
</div>
<div
class="ant-drawer-body"
style="background-color:#08c"
>
Here is content of Drawer
</div>
</div>
</div>
</div>
</div>
</div>
`;

View File

@@ -29,7 +29,6 @@ exports[`Drawer render correctly 1`] = `
>
<div
class="ant-drawer-wrapper-body"
style="overflow: auto; height: 100%;"
>
<div
class="ant-drawer-header-no-title"

Some files were not shown because too many files have changed in this diff Show More