Compare commits

..

403 Commits

Author SHA1 Message Date
picodoth
fc891c356f 3.10.4 2018-11-03 23:02:57 +08:00
Junbin Huang
53136e42b9 docs: update changlog (#12944) 2018-11-03 22:58:22 +08:00
yoyo837
41360cc4c8 update dataIndex description 2018-11-03 12:32:56 +08:00
afc163
2aefdda0ff Build in and improve UI of nested Table in expand-children Table
close #12877
2018-11-02 18:23:26 +08:00
zombiej
301c97d61c fix onPopupScroll def. ref #12913 2018-11-02 15:38:04 +08:00
高力
87738c425e docs(recommendation): Update the charts recommend list 2018-11-02 12:18:00 +08:00
afc163
62bf204442 update README.md 2018-11-02 12:11:24 +08:00
高力
f9301ce4d6 docs(recommendation): Add the visual graph editor category 2018-11-02 11:55:56 +08:00
高力
9a3d0ca5d4 docs(recommendation): Add GGEditor to recommend list 2018-11-02 11:55:56 +08:00
Lyndon001
4c085284a6 Update work-with-us.zh-CN.md 2018-11-01 18:57:55 +08:00
afc163
b56ef2b7bf docs: update List grid column optional values, close #12901 2018-11-01 14:57:10 +08:00
afc163
b1d8d173cd update typescript array definites 2018-11-01 14:57:10 +08:00
afc163
a264c6f345 Add less variable @modal-header-bg, close #12914 2018-11-01 14:57:10 +08:00
ztplz
8dc98dd690 Improve Affix 2018-11-01 14:55:41 +08:00
afc163
a7f17b4cde Fix sort order broken issue when columns were put in render
will handle these situation

- with 'key'
- with function has same stringify value

close #12870
close #12737
2018-11-01 13:44:48 +08:00
Pouya Sanooei
a70d64451b fix Modal docs typo 2018-11-01 12:05:24 +08:00
ztplz
7ab93543ef Improve Alert 2018-11-01 10:31:09 +08:00
LLinFan-
bbd9556801 update select props :onPopupScroll
update select props type:onPopupScroll
2018-11-01 10:30:22 +08:00
zombiej
b30ba9561f add transform-origin on dropdown as menu 2018-10-31 22:25:21 +08:00
Edward
cdc39d085b Update validate-other.md 2018-10-31 20:35:39 +08:00
afc163
cc37b8ef35 should not hide avatar in vertical item layout of List 2018-10-31 18:55:54 +08:00
afc163
83cc148a7a fix stylelint again by locking version :sad: 2018-10-31 17:51:22 +08:00
afc163
08600adade Fix fixed-columns Table border issue, close #9687 2018-10-31 17:03:40 +08:00
afc163
934b92b943 site: still need the fallback scrollIntoView, #12683 2018-10-31 16:54:58 +08:00
afc163
557683c764 use latest stylelint 2018-10-31 13:39:51 +08:00
afc163
1f0263ccf7 site: fix npm run site error 2018-10-31 13:15:40 +08:00
dependabot[bot]
9e236fc825 Update jsdom requirement from ^12.1.0 to ^13.0.0
Updates the requirements on [jsdom](https://github.com/jsdom/jsdom) to permit the latest version.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/commits/13.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-30 20:29:28 +08:00
ilanus
42ed19164e 🐛 dynamic form doc fix 2018-10-30 20:13:56 +08:00
afc163
546c59a4c1 Fix button icon margin style bug
```jsx
<Button loading>
  <TwoChineseWords />
</Button>
```
2018-10-30 19:13:29 +08:00
zombiej
0172c0101c remove babel-plugin deps 2018-10-30 17:12:41 +08:00
zombiej
6b62b907de clean up useless deps 2018-10-30 16:42:38 +08:00
Alireza
d785b16a39 Use recomended babel-preset-env 2018-10-30 16:42:38 +08:00
afc163
087f7efd10 findDOMNode to refs, close #12843 2018-10-30 16:17:24 +08:00
afc163
de492b90a4 componentWillReceiveProps => getDerivedStateFromProps 2018-10-30 16:17:24 +08:00
afc163
f51feebe36 use React.StrictMode to show deprecated message 2018-10-30 16:17:24 +08:00
dependabot[bot]
d1e12f3045 Update lint-staged requirement from ^7.3.0 to ^8.0.2
Updates the requirements on [lint-staged](https://github.com/okonet/lint-staged) to permit the latest version.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/commits/v8.0.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-30 15:15:58 +08:00
afc163
5e12b0a5ca Fix Menu Submenu animation when switch inlineCollapsed, close #12864 2018-10-30 15:09:40 +08:00
afc163
af653a8b69 revert f7fa8e0 2018-10-30 14:23:45 +08:00
afc163
f7fa8e0eb6 Fix menu submenu animation, close #12864 2018-10-30 12:00:27 +08:00
MuYu
72a6febcc4 fix: select type definition (#12865)
* fix: select type definition

* fix: wrapPicker type definition

* fix: select type definition
2018-10-30 10:52:27 +08:00
Chelsea Huang
ca11e2de00 Update stay.en-US.md
change cur- rent to current. (it actually appear as cur- rent within one line).
2018-10-30 10:36:15 +08:00
Charlie Guan
f4f0c34bc3 Update index.en-US.md
Fix typos, and provide minor grammar improvements.
2018-10-29 14:52:11 +08:00
Charlie Guan
bfd40c2b39 Update faq.en-US.md
Update minor typos, and provide some minor grammar improvements.
2018-10-29 10:35:32 +08:00
afc163
2fc8304050 fix style lint by locking version for now 2018-10-28 23:59:46 +08:00
afc163
bc3d8c5826 Fix Avatar children wrong align in Popover
close #10917
2018-10-28 23:45:36 +08:00
afc163
3786169624 Fix divider expand popover card width
close #10914
2018-10-28 23:25:40 +08:00
afc163
71b8cf7a0c site: tweak style detail 2018-10-28 21:04:11 +08:00
afc163
fe3f110085 does: update button api documentation 2018-10-28 20:57:23 +08:00
afc163
a0e693ebb8 update changelog 2018-10-28 20:37:30 +08:00
afc163
01a59880e8 site: primary color for hotjar and nprogress 2018-10-28 17:59:34 +08:00
afc163
8d6c5af790 site: fix documentation order 2018-10-28 17:35:21 +08:00
afc163
98489f4717 site: now hash jump would be ok
no need to scrollIntoView
2018-10-28 17:35:21 +08:00
zombiej
c6eef86f83 add miss itemRender arg
fix #12810
2018-10-28 13:40:39 +08:00
zombiej
c2e62c1910 fix doc
close #12806
2018-10-28 13:32:29 +08:00
stickmy
51e895b67f fix: patch to components/_util/isNumeric type check (#12799) 2018-10-28 11:09:57 +08:00
zombiej
9aa62d42c2 Modal.xxx support maskStyle
fix #12688
2018-10-27 18:54:52 +08:00
afc163
b1f9d36881 Fix different height of FormItem with help info
windows 7

close #12803
2018-10-27 17:40:05 +08:00
afc163
c9e2d8acf6 Fix checkbox of checked style under Table missing in IE
close #12597
2018-10-27 17:35:04 +08:00
afc163
9afe7bcbff test: preserve test console log
https://github.com/facebook/jest/issues/3853#issuecomment-426895387
2018-10-27 17:32:10 +08:00
Yu
50d57cc79b release: 3.10.3 (#12847) 2018-10-27 11:14:28 +08:00
afc163
073ffd6503 fix typo selector, #12723 2018-10-26 23:59:57 +08:00
afc163
df5bf38bdc Fix Form[inline] help and extra overlapped
close #12725
2018-10-26 23:53:57 +08:00
afc163
a835536dde Fix checkbox align of small/middle size table, close #12723 2018-10-26 23:49:13 +08:00
afc163
6f955681b8 Fix small size table header border missing in Firefox
close #12840

ref #12628
2018-10-26 23:22:41 +08:00
afc163
389ecaa8ff Fix Card title overflow bug
close #12680

close #10576 in another way
2018-10-26 23:03:28 +08:00
afc163
96e0cb5313 site: fix hash 2018-10-26 20:31:06 +08:00
偏右
54e24421d1 Update index.zh-CN.md 2018-10-26 00:13:54 +08:00
dependabot[bot]
8590bad0a8 Update antd-theme-generator requirement from 1.1.3 to 1.1.4
Updates the requirements on [antd-theme-generator](https://github.com/mzohaibqc/antd-theme-generator) to permit the latest version.
- [Release notes](https://github.com/mzohaibqc/antd-theme-generator/releases)
- [Commits](https://github.com/mzohaibqc/antd-theme-generator/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-25 15:22:36 +08:00
zombiej
bc35582643 update tree draggable demo 2018-10-25 11:19:17 +08:00
afc163
bd0ba8ce92 update menu snapshot 2018-10-25 10:42:11 +08:00
hengkx
e1db20c25b fix #12758 2018-10-25 00:40:55 +08:00
hengkx
78f6bb769d Revert "fix #12758 multiple Select drop-down bug when set dropdownMatchSelectWidth"
This reverts commit 6fcdce97f2.
2018-10-25 00:40:55 +08:00
hengkx
795370d0ea fix #12758 multiple Select drop-down bug when set dropdownMatchSelectWidth 2018-10-25 00:40:55 +08:00
zombiej
0235ba585f adjust small table placeholder style
fix #12682
2018-10-24 23:30:03 +08:00
zombiej
2553edbb6b Fix Calendar month picker not correct when set with validRange
fix #12675
2018-10-24 21:40:41 +08:00
afc163
a93cd4140b site: fix banner responsive bug 2018-10-24 10:43:40 +08:00
zombiej
4b9027f53a Checkbox under group also should trigger onChange
ref: #12642
2018-10-23 23:43:11 +08:00
afc163
a27c8a2740 demo: update modal demo 2018-10-23 23:16:22 +08:00
afc163
2c6ee4caa1 site: update button transition style 2018-10-23 19:56:32 +08:00
afc163
d4b51af29c docs: remove useless vertical-right mode 2018-10-23 19:55:18 +08:00
dependabot[bot]
77f78ffc2a Update react-virtualized requirement from ~9.20.1 to ~9.21.0
Updates the requirements on [react-virtualized](https://github.com/bvaughn/react-virtualized) to permit the latest version.
- [Release notes](https://github.com/bvaughn/react-virtualized/releases)
- [Changelog](https://github.com/bvaughn/react-virtualized/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bvaughn/react-virtualized/commits/9.21.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-23 15:17:40 +08:00
dependabot[bot]
17ba8fb24f Update remark-stringify requirement from ^5.0.0 to ^6.0.0
Updates the requirements on [remark-stringify](https://github.com/remarkjs/remark) to permit the latest version.
- [Release notes](https://github.com/remarkjs/remark/releases)
- [Changelog](https://github.com/remarkjs/remark/blob/master/changelog.md)
- [Commits](https://github.com/remarkjs/remark/commits/remark-stringify@6.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-23 13:34:26 +08:00
ztplz
1fedef37b8 Improve getScroll 2018-10-23 13:34:13 +08:00
Ivan Kravets
65f85257b0 Avoid static table backgrounds and use dynamically calculated
Tested with light/dark themes.
2018-10-23 12:30:59 +08:00
dependabot[bot]
b6681707be Update remark-parse requirement from ^5.0.0 to ^6.0.0
Updates the requirements on [remark-parse](https://github.com/remarkjs/remark) to permit the latest version.
- [Release notes](https://github.com/remarkjs/remark/releases)
- [Changelog](https://github.com/remarkjs/remark/blob/master/changelog.md)
- [Commits](https://github.com/remarkjs/remark/commits/remark-parse@6.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-23 12:30:28 +08:00
afc163
8ccd6b8277 site: add promote link 2018-10-23 12:21:26 +08:00
愚道
ea3e923349 update change log date 2018-10-23 12:00:23 +08:00
Yu
11d5825b5b Bump 3.10.2 (#12731) 2018-10-23 11:58:28 +08:00
codesign
4976b055fe 更正yarn命令 (#12783) 2018-10-23 11:28:35 +08:00
Wei Zhu
3dbc357ff2 Update Icon typeings 2018-10-22 13:36:03 +08:00
Wei Zhu
e56a3310df docs: Add missing codesandbox icon 2018-10-22 13:36:03 +08:00
ztplz
232f179f24 update 2018-10-22 10:15:57 +08:00
ztplz
682af0d44b add missed property 'key' in TabPaneProps 2018-10-22 10:15:57 +08:00
zombiej
d814145b7e fix form demo 2018-10-21 13:29:43 +08:00
Jacques Kvam
4f8200bf53 more natural sounding english for radio component
This sounded a little awkward to me, so I tried to improve it.
2018-10-21 12:48:45 +08:00
jinyaqiao1102
c2ce43457e 修改时间选择框样式错误问题 2018-10-21 12:06:36 +08:00
afc163
93a9b2fc5e Fix test case 2018-10-21 12:04:03 +08:00
Amumu
12f9c2f575 Update react-slick
close #11570
2018-10-21 10:56:07 +08:00
afc163
faa5eaef12 Fix Popconfirm defaultVisible
close #12733
2018-10-19 23:57:16 +08:00
afc163
cb24060955 test: add test case for calendar locale prop 2018-10-19 23:54:10 +08:00
afc163
e03a4e166b site: fix hash link
close #12683
2018-10-19 11:19:41 +08:00
dazbo
f24917bb5f Add display rule to fix Edge ignoring pointer-events (#12712) 2018-10-19 11:17:23 +08:00
黄文鉴
057c8a3e52 fix: prefixCls dosen't pass to Popconfirm's Button (#12677) 2018-10-19 11:13:29 +08:00
afc163
68763b182f Fix Checkbox[checked] indeterminate style
close #12724
2018-10-19 11:12:33 +08:00
afc163
f79b0993a4 Progress[type="circle"] should wrap text
close #12718
2018-10-19 11:04:43 +08:00
Kevin Wang
a9e92b8451 Removed line break in dataSource description
Removed line break in dataSource description
2018-10-19 10:45:40 +08:00
afc163
fb2e355f14 Calendar locale prop should have priority
close #12706
2018-10-18 23:35:14 +08:00
afc163
2c5366603c chore: fix code indent 2018-10-18 23:35:14 +08:00
Li Chao
b92d4ed627 Update head.md
The parameters of the sorter method are rows
2018-10-18 11:09:59 +08:00
zombiej
bf83845986 remove useless line 2018-10-17 15:30:26 +08:00
afc163
86c11e5eb5 Fix vertical align issue of empty button
close #12681
2018-10-17 11:07:25 +08:00
zombiej
ca49ecb4be fix tabs ink-bar vertical css
ref #12276
2018-10-16 22:59:55 +08:00
Ilan
4667818816 🌐 docs patterns overview en-US 2018-10-16 20:10:58 +08:00
Carter Feldman
973cfba35b Update practical-projects.en-US.md
Fixed 'addd' npx to 'add'
2018-10-16 18:29:31 +08:00
偏右
fb7ca35c57 Update zh-CN.js 2018-10-16 16:03:22 +08:00
Hieu Ho
ea25889f1a Add VN locale for date picker component 2018-10-16 12:09:17 +08:00
afc163
f7102b4b20 demo: fix avatar align 2018-10-16 12:08:44 +08:00
zombiej
4557d1daa5 add touch-action css on slider to fix chrome warning
fix #12595
2018-10-15 23:58:42 +08:00
decade
4d42f75a59 add TreeSelect type 2018-10-15 17:43:05 +08:00
Wei Zhu
014b23fec8 docs: fix typo 2018-10-15 17:11:54 +08:00
Lyndon001
39fa2930a5 Update work-with-us.zh-CN.md 2018-10-15 15:17:33 +08:00
dependabot[bot]
e2cc81443d Update rc-input-number requirement from ~4.1.0 to ~4.3.0
Updates the requirements on [rc-input-number](https://github.com/react-component/input-number) to permit the latest version.
- [Release notes](https://github.com/react-component/input-number/releases)
- [Changelog](https://github.com/react-component/input-number/blob/master/HISTORY.md)
- [Commits](https://github.com/react-component/input-number/commits/4.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-15 15:16:29 +08:00
afc163
4f651cb1df remove travis badges 2018-10-15 11:42:39 +08:00
afc163
42e5b8b77e Fix Table th border missing in Firefox
close #12628

solution found at https://stackoverflow.com/a/16337203
2018-10-15 11:12:16 +08:00
Ilan
0df4678562 👌 updating customized form controls demo 2018-10-15 10:49:50 +08:00
282159468
509737a5e3 Update getting-started.zh-CN.md (#12640) 2018-10-15 10:43:37 +08:00
afc163
b04fefe047 docs: more recommended react libraries, #12636 2018-10-14 01:53:16 +08:00
afc163
10296eddf5 docs: update scripts diff 2018-10-13 17:15:00 +08:00
afc163
be6a566af1 docs: update other scaffolds 2018-10-13 15:06:00 +08:00
Yuhang Liu
aa520f7f5c fix: round progress support strokeColor (#12587) 2018-10-13 01:19:41 +08:00
jljsj33
6767bcf0b0 fix Home Page1 icon hover animation 2018-10-12 20:29:25 +08:00
afc163
ac599a90f2 Merge branch 'master' of github.com:ant-design/ant-design 2018-10-12 19:18:24 +08:00
afc163
bc1ad14590 update snapshot 2018-10-12 19:18:09 +08:00
偏右
139a348994 Add changelog of 3.10.1 (#12615)
* Add changelog of 3.10.1

* update CHANGELOG.zh-CN.md

* Add link of ng.mobile.ant.design release

* translate to english

* Add English version

* bump 3.10.1

* tweak changelog

* tweak changelog

* fix missing version title
2018-10-12 19:17:42 +08:00
afc163
76b64b5da0 Fix overflow issue of long text in Progress[type="circle"] 2018-10-12 18:05:30 +08:00
°))))彡
9aa4172c27 feat(website): add link to ng-zorro-mobile website; (#12619) 2018-10-12 17:09:43 +08:00
afc163
436cbeed7b fix DatePicker clear behavior bring by 3640754 2018-10-12 16:25:23 +08:00
afc163
1a442c45f7 revert rc-input-number cause 4.2 brings break change 2018-10-12 16:21:43 +08:00
黄文鉴
df9b20209c fix: change modal's default prefixCls to ant-modal and ant-modal-confirm (#12548) 2018-10-12 14:04:26 +08:00
Dimitri Mitropoulos
8eaf66be0e adds missing Select.Option type for style (#12609) 2018-10-11 23:47:53 +08:00
comerc
3898c45c5d Typo (#12608) 2018-10-11 23:47:39 +08:00
afc163
0f1d191123 update snapshot 2018-10-11 15:50:08 +08:00
afc163
4e09b3f4fc Fix disabled style in AutoComplete, close #12594 2018-10-11 15:44:20 +08:00
偏右
a4c1bccd2a Fix upload and mention test cases (#12586) 2018-10-11 15:11:44 +08:00
zombiej
7da2f48c78 adjust pagination select style
fix #12554
2018-10-11 13:29:59 +08:00
Yuri Pirola
150921b339 Fix Italian translation (fix #12413)
* Fix Italian translation.
* Update relevant snapshots.
2018-10-11 00:03:56 +08:00
sorrycc
f9c0b07db2 doc: update getting-started and practical-projects with umi 2018-10-11 00:03:36 +08:00
陈帅
236f48e8ce fix#12401,mask=false, Will not be masked 2018-10-11 00:02:03 +08:00
zombiej
c199e6850d update rc-input-number version 2018-10-10 23:49:24 +08:00
RyanHui
c095cb4665 modal add mask colse (#12556) 2018-10-10 22:28:38 +08:00
zombiej
5b6957d570 adjust anchor style
fix #12520
2018-10-10 19:15:55 +08:00
Fergus Leung
ec9f8ab7ce add limitation on checking labelPlacement 2018-10-10 17:03:58 +08:00
Fergus Leung
b2b8ae4953 Update index.tsx 2018-10-10 16:17:53 +08:00
afc163
b55d402828 Add test case for Mention 2018-10-10 16:15:44 +08:00
afc163
68c177cdc1 update snapshot 2018-10-10 15:12:06 +08:00
afc163
f1d1d87de0 Fix unexpected column title in unsorted columns 2018-10-10 14:50:59 +08:00
afc163
46f4a3e9da Fix Table sort style of right-aligned column
when size is small
2018-10-10 14:45:56 +08:00
siyu77
9e72ca1b24 Update utils.ts (#12524)
Fix IE 11 or low version edge svg icon can be focusable
2018-10-10 14:12:33 +08:00
afc163
246e131072 update snapshot 2018-10-10 13:58:02 +08:00
afc163
55a13a11fc Fix Table sort style of right-aligned column
close #12552
2018-10-10 13:52:33 +08:00
zombiej
38fd268199 fix #12567
Use same expand logic in DirTree with switcher & selector
2018-10-10 11:51:34 +08:00
afc163
688f4ec8d6 Fix sort state not change when columns in render
close #12571
2018-10-10 11:23:44 +08:00
afc163
eba9eaa1ff fix typo 2018-10-09 18:54:28 +08:00
afc163
9e58e56e76 tweak sorter icon position 2018-10-09 18:53:32 +08:00
afc163
86b342545d Fix sorted column background in small size Table 2018-10-09 18:53:32 +08:00
afc163
d70f52add3 Fix Badge align when it is not a wrapper
close #12419
2018-10-09 18:53:32 +08:00
Wang Zhengchen
4d2422cb32 Update CHANGELOG.zh-CN.md 2018-10-09 18:36:59 +08:00
zombiej
e5cfef565b fix #12475. Picker should get focus after selection. 2018-10-09 17:44:22 +08:00
zombiej
50b55f488e fix #12493. Adjust auto complete of input-group css 2018-10-09 11:52:58 +08:00
zombiej
f9c2310424 fix #12539. delay also double confirm spin status. 2018-10-09 00:02:03 +08:00
zombiej
00d1a26d4e update rc-select deps 2018-10-08 23:03:09 +08:00
zombiej
364075421b fix #12536. Adjust date-picker icon 2018-10-08 20:53:28 +08:00
TomIsion
4d486416bf change Form typescript define about async callback order 2018-10-08 18:05:02 +08:00
afc163
5bef1aa6c2 Fix Checkbox border color collapse inside Table under chrome
https://gw.alipayobjects.com/zos/rmsportal/IfMpUxFpHMcPkgDFsCuH.png
2018-10-08 12:17:03 +08:00
偏右
4f0d949a1b Update introduce.zh-CN.md 2018-10-07 16:29:39 +08:00
Amumu
bc54db2185 fix typo 2018-10-07 00:30:13 +08:00
afc163
338217410e upgrade deps 2018-10-06 20:30:27 +08:00
afc163
54581779a8 fix typo 2018-10-06 20:21:46 +08:00
afc163
c4b3e7e58e deme: improve demo code style 2018-10-06 18:58:25 +08:00
afc163
996ee9c0a2 demo: make select demo width adapted 2018-10-06 18:47:18 +08:00
afc163
419287de2b Fix sort event on every columns when sorter is true
close #12515
2018-10-06 18:21:30 +08:00
afc163
14b3f4e24f doc: update getting-started 2018-10-06 18:21:30 +08:00
Ilan
3d76e49592 ✏️ update switch types and docs 2018-10-06 15:35:45 +08:00
Ilan
b447ab0a26 🌐 update select zh-CN.md 2018-10-06 15:35:29 +08:00
Ilan
bd2a58f745 ✏️ updating select option types 2018-10-06 15:35:29 +08:00
ycjcl868
09b11b6cde fix #12498. improve autoComplete type definition 2018-10-06 15:33:46 +08:00
afc163
4e3cbec038 site: change link to xtech 2018-10-06 15:31:53 +08:00
偏右
1d0ead4bfd Update motion.md 2018-10-06 15:18:17 +08:00
偏右
4ecf9b796a Update motion.md 2018-10-06 15:18:00 +08:00
Wei Zhu
6d76d20081 Fix version 2018-10-02 12:17:45 +08:00
Wei Zhu
44d2b64247 Bump 3.10.0 2018-10-02 00:53:44 +08:00
Wei Zhu
dd5cc9ab70 Add 3.10.0 changelog (#12488)
* Add 3.10.0 changelog

* Update

* Update

* fix typo

* fix typo
2018-10-02 00:52:57 +08:00
Wei Zhu
a9f7a2d38d tweak table sort icon size 2018-10-02 00:48:45 +08:00
Wei Zhu
a3ce6678cb Update snapshot 2018-10-01 23:57:45 +08:00
Wei Zhu
9cfaf1750d fix: type error 2018-09-30 21:39:12 +08:00
Wei Zhu
40001d8220 Revert "fix: more types"
This reverts commit e063e1916d.
2018-09-30 21:29:14 +08:00
Wei Zhu
ff0595733f refactor: use instanceof instead typeof 2018-09-30 17:04:05 +08:00
Wei Zhu
2bf2bb5af4 fix: type error 2018-09-30 16:58:25 +08:00
Wei Zhu
1c1a67fe1d Merge branch 'feature' 2018-09-30 16:53:28 +08:00
Wei Zhu
e063e1916d fix: more types 2018-09-30 16:39:51 +08:00
Wei Zhu
fe677e2966 fix: type error of filterDropdown 2018-09-30 16:11:25 +08:00
Wei Zhu
ee84f4ce0a fix: some type definitions 2018-09-30 16:07:01 +08:00
Tom Xu
ff4d803181 fix #12395. input group hover style error (#12407)
First of all, thank you for your contribution! :-)

Please makes sure that these checkboxes are checked before submitting your PR, thank you!

* [x] Make sure that you propose PR to right branch: bugfix for `master`, feature for branch `feature`.
* [x] Make sure that you follow antd's [code convention](https://github.com/ant-design/ant-design/wiki/Code-convention-for-antd).
* [x] Run `npm run lint` and fix those errors before submitting in order to keep consistent code style.
* [x] Rebase before creating a PR to keep commit history clear.
* [x] Add some descriptions and refer relative issues for you PR.

Extra checklist:

**if** *isBugFix* **:**

  * [x] Make sure that you add at least one unit test for the bug which you had fixed.

**elif** *isNewFeature* **:**

  * [ ] Update API docs for the component.
  * [ ] Update/Add demo to demonstrate new feature.
  * [ ] Update TypeScript definition for the component.
  * [ ] Add unit tests for the feature.
2018-09-30 15:23:47 +08:00
Johannes Loewe
0126c63b2d fix #11312: add autoClearSearchValue to AbstractSelectProps (#12473)
- extends the interface with an optional prop that can be provided to the RcSelect

First of all, thank you for your contribution! :-)

Please makes sure that these checkboxes are checked before submitting your PR, thank you!

* [ x ] Make sure that you propose PR to right branch: bugfix for `master`, feature for branch `feature`.
* [ x ] Make sure that you follow antd's [code convention](https://github.com/ant-design/ant-design/wiki/Code-convention-for-antd).
* [ x ] Run `npm run lint` and fix those errors before submitting in order to keep consistent code style.
* [ x ] Rebase before creating a PR to keep commit history clear.
* [ x ] Add some descriptions and refer relative issues for you PR.

Extra checklist:

**if** *isBugFix* **:**

  * [ ] Make sure that you add at least one unit test for the bug which you had fixed.

**elif** *isNewFeature* **:**

  * [ ] Update API docs for the component.
  * [ ] Update/Add demo to demonstrate new feature.
  * [ ] Update TypeScript definition for the component.
  * [ ] Add unit tests for the feature.

This fix is related to Issue #11312 and adds the optional `autoClearSearchValue` prop which can be supplied to `RcSelect` to the Select´s props. This is not really a new feature and a relatively unsubstantial one a that, so I didn´t add a demo for it, but I could do so if that´s desirable.

I updated the English API docs, but I´m not a Chinese speaker so there is no addition to the Chinese documentation. Maybe someone speaking Chinese would be willing to help out.
2018-09-30 15:04:03 +08:00
dependabot[bot]
54a8957e9d Update babel-eslint requirement from ^9.0.0 to ^10.0.1 (#12454)
Updates the requirements on [babel-eslint](https://github.com/babel/babel-eslint) to permit the latest version.
- [Release notes](https://github.com/babel/babel-eslint/releases)
- [Commits](https://github.com/babel/babel-eslint/commits/v10.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-09-30 14:59:31 +08:00
dependabot[bot]
c0545b6cc3 Update typescript requirement from ~3.0.1 to ~3.1.1 (#12455)
Updates the requirements on [typescript](https://github.com/Microsoft/TypeScript) to permit the latest version.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits/v3.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-09-30 14:59:06 +08:00
C.J. Winslow
b9a86b2ea1 Pass the ok and cancel button props in the confirm API (#12425)
This PR adds the `okButtonProps` and `cancelButtonProps` API to the `Modal.confirm` and associated methods.


* [x] Make sure that you propose PR to right branch: bugfix for `master`, feature for branch `feature`.
* [x] Make sure that you follow antd's [code convention](https://github.com/ant-design/ant-design/wiki/Code-convention-for-antd).
* [x] Run `npm run lint` and fix those errors before submitting in order to keep consistent code style.
* [x] Rebase before creating a PR to keep commit history clear.
* [x] Add some descriptions and refer relative issues for you PR.

Extra checklist:

*isNewFeature* **:**

  * [x] Update API docs for the component.
  * [x] Update/Add demo to demonstrate new feature.
  * [x] Update TypeScript definition for the component.
  * [x] Add unit tests for the feature.
2018-09-30 14:50:03 +08:00
jiang
aee625b2ea update motion language (#12478) 2018-09-30 11:43:53 +08:00
zombieJ
2cd0ca3225 Get the filtered data after executing the filter function on the dataSource (#12369)
* update testcase

* rename as currentDataSource
2018-09-30 11:17:39 +08:00
竹尔
1288b1cc6d Update icon.zh-CN.md 2018-09-29 18:48:39 +08:00
Wei Zhu
eb4255a39c Update snapshot 2018-09-29 18:13:53 +08:00
Federico Marcos
ab92c934d5 fix incorrect prop passed to checkbox in docs examples (#12448)
prop should be `checked` instead of `value`
2018-09-29 18:09:03 +08:00
竹尔
66f72ff408 Update icon.zh-CN.md 2018-09-29 17:54:05 +08:00
竹尔
12535accda Update icon.zh-CN.md 2018-09-29 17:43:19 +08:00
竹尔
baf25b5da8 Update icon.zh-CN.md 2018-09-29 17:38:50 +08:00
Cong Zhang
6867ef9aea Spin: lifecycle method migrate 2018-09-29 17:35:22 +08:00
竹尔
609c5c756f Update icon.zh-CN.md 2018-09-29 17:15:29 +08:00
zombiej
b9e85b2870 fix #12469. Adjust doc of Skeleton type 2018-09-29 17:08:44 +08:00
Erwin Kort
2d8f9ccf63 Add button autofocus prop to confirm modal (#11756)
@picodoth
2018-09-29 17:00:01 +08:00
Wei Zhu
3d58ea4d4c Don't need prepend https to script url 2018-09-29 16:45:57 +08:00
Wei Zhu
c3b2d59bc8 Revert "Feature Icon.createFromIconfontCN adaptive http or https (#12344)"
This reverts commit 7c67dacc12.
2018-09-29 16:44:57 +08:00
Wei Zhu
fcb546ea57 Update snapshot 2018-09-29 16:41:56 +08:00
Wei Zhu
4ce3800de7 Merge branch 'master' into feature 2018-09-29 16:27:07 +08:00
Hari Shankar D
9798fa0b61 visual.md (#11710)
* visual.md

This is the translation for the website's contents. 
Review this and merge if it satisfies the content delivery team.

* docs: separate two version of visual.md
2018-09-29 16:00:57 +08:00
Wei Zhu
4aa2bf804a Merge branch 'list-item-style-config' 2018-09-29 15:44:35 +08:00
Wei Zhu
ec43288518 docs: fix icon page style 2018-09-29 15:25:26 +08:00
竹尔
87a69fc81a Update icon.zh-CN.md 2018-09-29 15:23:06 +08:00
竹尔
282722ed7f Update icon.zh-CN.md 2018-09-29 15:22:16 +08:00
竹尔
de8659c8dc Update icon.zh-CN.md 2018-09-29 15:20:43 +08:00
竹尔
878f1f833f Update icon.zh-CN.md 2018-09-29 14:54:33 +08:00
竹尔
a9e5e1e746 Update icon.zh-CN.md 2018-09-29 14:52:50 +08:00
snail
6b22ae3b6c [fixed]button can also trigger the click event when loading is true in ie9 (#12466) 2018-09-29 14:41:55 +08:00
竹尔
33c9623862 Update icon.zh-CN.md 2018-09-29 13:53:56 +08:00
Wei Zhu
a6453abbc7 docs: fix icon page style 2018-09-29 11:15:39 +08:00
Amumu
ef4e699f1d Update avatar.md (#12458) 2018-09-28 22:14:04 +08:00
KentonYu
5545342bd4 docs: 修改 Table 文档 (#12460)
RowSelection 中 onSelectAll、onSelect 说明中的 列 改为 行
2018-09-28 22:05:43 +08:00
Wei Zhu
335f821aec fix: warning on conflicting theme of Icon
fix #12441
2018-09-28 19:31:50 +08:00
Wei Zhu
cfdf06213b fix style lint errors 2018-09-28 19:20:31 +08:00
竹尔
34c1dadacb Update icon.zh-CN.md 2018-09-28 17:28:58 +08:00
竹尔
8652f8e26c Update icon.zh-CN.md 2018-09-28 17:08:13 +08:00
Wei Zhu
79d3a926ef Update snapshot 2018-09-28 16:19:08 +08:00
竹尔
9b5931a914 Update icon.zh-CN.md 2018-09-28 15:52:03 +08:00
竹尔
01f739dfbe Update icon.zh-CN.md 2018-09-28 15:51:10 +08:00
Wei Zhu
03bf891259 docs: uppercase SVG 2018-09-28 14:48:56 +08:00
Wei Zhu
17e2002c3c docs: Update icon docs 2018-09-28 14:45:35 +08:00
zombiej
58102df60a update rc-select deps 2018-09-28 13:00:52 +08:00
Wei Zhu
1bb1418eb7 site: Remove unused files 2018-09-28 11:02:18 +08:00
zombiej
5a0448aa4d fix #12427. CheckGroup support pass dom prop 2018-09-27 17:41:30 +08:00
Lyndon001
fc7fc326d1 Update work-with-us.zh-CN.md 2018-09-27 14:43:03 +08:00
zombiej
af836c8ed5 fix #12145. Update rc-tree-select to support tree expanded keys 2018-09-26 11:51:40 +08:00
zombiej
bdaf422d2d update avatar size desc in zh_CN.md 2018-09-26 11:19:46 +08:00
Wei Zhu
1815bba876 Unregister service worker 2018-09-26 11:13:19 +08:00
Wei Zhu
70ef4f28aa Remove offline plugin, continue work of aeeabb1 2018-09-26 10:56:02 +08:00
Wei Zhu
aeeabb1263 Disable offline temporarily 2018-09-26 10:44:12 +08:00
Wei Zhu
306bce385b Improve type definition and doc of TableComponents 2018-09-25 19:48:50 +08:00
zombiej
176a8dfcda update test snapshot 2018-09-25 19:45:41 +08:00
zombiej
463d3c72f9 fix #12399. Hide title if is not string 2018-09-25 19:32:08 +08:00
zombiej
1c85bb3b62 fix #12396. Support expandedKeys when init 2018-09-25 15:29:07 +08:00
Amumu
05e4c56ca3 Delete unreadable characters (#12387) 2018-09-25 10:02:28 +08:00
Magn Mah
292a18bef0 add/fix tooltip align interface (#12354)
* expose align interface

* typescript fix: tooltip 的 align 部分值支持传百分数参数;更新文档
2018-09-23 14:01:06 +08:00
Adam Burgess
9b01ec1ed2 Modal: Add the update function type definition 2018-09-23 13:20:38 +08:00
信鑫-King
2a84b40f6c Merge pull request #12374 from xiaoyu-tamu/patch-1
fix filterIcon type
2018-09-23 11:19:58 +08:00
Xiaoyu Li
1f8ac3f697 fix filterIcon type
based on api [ReactNode|(filtered: boolean) => ReactNode]

https://ant.design/components/table-cn/#components-table-demo-dynamic-settings
2018-09-22 20:11:09 -05:00
ycjcl868
4d1e46e03d Merge master into feature 2018-09-23 01:43:35 +08:00
信鑫-King
38cb9d01bc Merge pull request #12371 from ant-design/changelog-docs
fix 3.9.3 changelog format
2018-09-23 01:33:01 +08:00
ycjcl868
164fce25d8 update changelog format 2018-09-23 01:26:30 +08:00
信鑫-King
46f1d3e979 Merge pull request #12364 from ant-design/release-3.9.3
Release 3.9.3
2018-09-22 21:53:50 +08:00
ycjcl868
c04cca00a4 update changelog text 2018-09-22 15:17:43 +08:00
ycjcl868
ae025a25db update changelog Carousel and Menu 2018-09-22 14:59:31 +08:00
zombiej
2906b456ce update test case 2018-09-22 14:53:45 +08:00
zombiej
048a9020f3 adjust style 2018-09-22 14:53:45 +08:00
zombiej
50dc59e1ce adjust table style 2018-09-22 14:53:45 +08:00
ycjcl868
2477d1beb2 update changelog add Menu openKeys pr 2018-09-22 14:40:41 +08:00
ycjcl868
a1decb11ec update changelog with md format and add icon related 2018-09-22 14:34:01 +08:00
tangjinzhou
9630dc48a0 fix: openKeys should have higher priority (#12361)
* fix: openKeys should have higher priority

* Update index.tsx
2018-09-22 13:32:21 +08:00
ycjcl868
7f83d8415c update changelog with type 2018-09-22 11:59:49 +08:00
ycjcl868
28ac612dd1 rm: duplicated newlines 2018-09-22 09:47:01 +08:00
ycjcl868
3347eed2a5 release 3.9.3 2018-09-22 09:26:58 +08:00
Mohammad Faisal
1f55ee4b27 Fix typos (#12360) 2018-09-21 20:37:52 +08:00
Wei Zhu
ca7d265b2b Refactor Grid with new context API (#12320)
* Refactor Grid with new context API

* Update snapshots of List
2018-09-21 19:30:39 +08:00
qiaojie
7c67dacc12 Feature Icon.createFromIconfontCN adaptive http or https (#12344)
close #12316
2018-09-21 19:07:13 +08:00
afc163
8d3cb85142 fix sort state when toggle between multiple columns 2018-09-21 19:06:38 +08:00
afc163
a0b8637783 destructuring assignment 2018-09-21 19:06:38 +08:00
Wei Zhu
d5a77eff0b Update snapshot 2018-09-21 17:32:35 +08:00
Tom Xu
0b9d00a0ad Upload add props openFileDialogOnClick 2018-09-21 15:56:18 +08:00
偏右
85749c94fb test: remove it.only 2018-09-21 15:55:00 +08:00
afc163
7c6299e12e Merge branch 'master' into feature 2018-09-21 14:03:04 +08:00
afc163
74f36c6e69 Merge branch 'feature' of github.com:ant-design/ant-design into feature 2018-09-21 14:02:58 +08:00
afc163
f0974e0da7 support column.title as render props
```jsx
columns={[{
  title: (filters, sortOrder) => <div>Title</div>,
}]}
```

close #11246
2018-09-21 13:41:08 +08:00
afc163
71316d6baa update table snapshot 2018-09-21 13:41:08 +08:00
afc163
8feb15ea72 fix test case 2018-09-21 13:41:08 +08:00
afc163
bcb06ec174 Add active style of filtered state 2018-09-21 13:41:08 +08:00
afc163
6530de2961 revert getPopupContainer 2018-09-21 13:41:08 +08:00
afc163
209e40508d fix sort 2018-09-21 13:41:08 +08:00
afc163
da33358e75 tweak icon active style 2018-09-21 13:41:08 +08:00
afc163
27e2654f0f sort by click column area 2018-09-21 13:41:08 +08:00
afc163
6f67c435c2 separate filter and sort into two click area 2018-09-21 13:41:08 +08:00
afc163
4c84dad106 move filter icon to end of column head 2018-09-21 13:41:08 +08:00
HeskeyBaozi
fb8ec65ca0 fix test case snapshot 2018-09-21 13:40:27 +08:00
HeskeyBaozi
457f781e6f treeselect: suffix -> suffixIcon 2018-09-21 13:40:27 +08:00
HeskeyBaozi
006b274d9e timepicker: suffix -> suffixIcon 2018-09-21 13:40:27 +08:00
HeskeyBaozi
a2520b02c9 select: suffix -> suffixIcon 2018-09-21 13:40:27 +08:00
HeskeyBaozi
2b7bd92cf6 datepicker: suffix -> suffixIcon 2018-09-21 13:40:27 +08:00
HeskeyBaozi
2d4a6db22d cascader: suffix -> suffixIcon 2018-09-21 13:40:27 +08:00
HeskeyBaozi
784984d1bf remove progress icon interface 2018-09-21 13:40:27 +08:00
HeskeyBaozi
a1074a6ace add suffix icon interface to time-picker 2018-09-21 13:40:27 +08:00
HeskeyBaozi
844a5a92d7 add suffix icon to tree-select 2018-09-21 13:40:27 +08:00
HeskeyBaozi
a01450debb add suffix interface to select 2018-09-21 13:40:27 +08:00
HeskeyBaozi
93fce1c7a4 fix lint 2018-09-21 13:40:27 +08:00
HeskeyBaozi
1d2aa0fc78 add icon interface to alert 2018-09-21 13:40:27 +08:00
HeskeyBaozi
06b5115fe3 add icon interface to progress 2018-09-21 13:40:27 +08:00
HeskeyBaozi
160d34aeba add suffix icon to date-picker 2018-09-21 13:40:27 +08:00
HeskeyBaozi
96282b1fe8 add suffix icon to cascader 2018-09-21 13:40:27 +08:00
afc163
c4b17f23ef doc: move font icon doc before svg icon 2018-09-21 00:00:19 +08:00
afc163
022d2dd0b5 doc: upgrade 3.0 Breaking Changes about new daparated info 2018-09-20 23:12:22 +08:00
afc163
2c4a78f16b doc: update umi config file of custom them 2018-09-20 23:12:22 +08:00
Sepehr Mohammadi
e8c2e7ce72 fix firefox can't set height smaller than content on flex item (#12295)
https://stackoverflow.com/questions/28636832/firefox-overflow-y-not-working-with-nested-flexbox/28639686#28639686
2018-09-20 22:48:13 +08:00
amedora
eb4e6b7fd6 WIP: Add decimal separator prop (#12329)
* Add decimal separator prop

* Update API reference
2018-09-20 16:37:54 +08:00
zombiej
f04c020c3e update rc-input-number version 2018-09-20 16:35:16 +08:00
包子熊
db9e30047c fix upload close icon style error (#12330) 2018-09-20 15:31:23 +08:00
zombiej
1883996943 no need to use let 2018-09-20 10:11:04 +08:00
Yang
a3c1444a20 doc: add dropdown control props (#12323) 2018-09-19 22:50:53 +08:00
zombiej
273fd2ea1b fix #10953. Dedup of file onStart upload 2018-09-19 22:37:35 +08:00
zombiej
954c7ecd8e fix #12284. confirmFilter is after set state 2018-09-19 18:33:09 +08:00
afc163
37ffbf4c3d doc: fix format 2018-09-19 16:14:11 +08:00
Lyndon001
8b9a2b4efb Update values.zh-CN.md 2018-09-19 15:52:04 +08:00
afc163
d03f4bc8db test: fix warning message in jest log 2018-09-19 15:05:55 +08:00
afc163
4c0c24428c site: fix duplicated menu icon 2018-09-19 14:47:24 +08:00
afc163
553a63f01f Merge branch 'master' into feature 2018-09-19 14:34:20 +08:00
afc163
4cac7917c4 update snapshot 2018-09-19 14:33:36 +08:00
Wendell
ceb3435af2 doc: add Chinese faq and fix typo (#12292)
* doc: add Chinese faq and fix typo

* fix typo

* make some adjustments to sentencing

* adjustments
2018-09-19 14:00:31 +08:00
Lyndon001
b0078a2d17 Update colors.zh-CN.md 2018-09-19 13:39:15 +08:00
afc163
c21ff5251d Fix React.Children.only error when Icon contain children
<Icon>xxx</Icon>
2018-09-19 11:38:07 +08:00
afc163
05646e9459 doc: update input documentation
https://stackoverflow.com/questions/52378848/why-is-there-no-onchange-for-input-in-ant-design/52378880
2018-09-19 11:28:04 +08:00
zombiej
9e9b18c760 update test case 2018-09-19 11:19:33 +08:00
Nikolay Solovyov
60e8a38390 Update ru_RU.tsx 2018-09-19 11:19:33 +08:00
Douglas Nassif Roma Junior
03b89a12cf Fixed Item key unspected change on List component. (#12299) 2018-09-19 11:05:01 +08:00
XuMM_12
0219aa259a fix demo in date-picker doc (#12290)
ref to https://ant.design/components/calendar-cn/ and moment doc, import locale file from moment/locale just defines the locale without use.
2018-09-18 16:57:04 +08:00
Phanupong Janthapoon
0e29194668 update misspelling on index.en-US.md (#12280)
On the line 158, the words "can not" are likely in a wrong construction for this sentence. It would be better to use "cannot" in this context.
2018-09-18 12:38:26 +08:00
zombiej
e58273dccf fix #12269. Fix Tree onDrop ts type 2018-09-17 17:37:20 +08:00
afc163
c65d6f6f36 Merge branch 'master' into feature 2018-09-17 15:01:53 +08:00
afc163
c935d53b71 Fix sorter icon align of Table 2018-09-17 14:53:21 +08:00
Alan Braithwaite
58de6edc5f readme: consistent badge style (#12259) 2018-09-17 09:47:03 +08:00
afc163
8c57704241 tweak alert code 2018-09-16 18:36:17 +08:00
afc163
ead460afe4 site: tweak header transition style 2018-09-16 17:49:07 +08:00
诸岳
8f06375589 Fix the vertical alignment for the title of Card (#11036)
* fix: The title of Card should be vertically aligned, close #10576

* Update index.less
2018-09-16 17:44:41 +08:00
afc163
811f497d81 update snapshot 2018-09-16 17:31:29 +08:00
afc163
cd9b8b20b5 Merge branch 'master' into feature 2018-09-16 17:29:04 +08:00
afc163
72c085b520 Add scripts deploy:china-mirror 2018-09-16 15:50:01 +08:00
afc163
5a9725eeae update snapshot for role="tooltip" 2018-09-16 15:47:25 +08:00
afc163
a669f24afe site: improve hr style 2018-09-16 15:40:05 +08:00
afc163
e550ba4c8a clarify words 2018-09-16 15:40:05 +08:00
afc163
d030121ce2 change faq links 2018-09-16 15:40:05 +08:00
afc163
f67e7be445 site: add faq documentation
close #10857
2018-09-16 15:40:05 +08:00
afc163
adb2637fdb site: improve icon documentation about svg icons 2018-09-16 15:09:58 +08:00
picodoth
589bafd5db fix: drop className for tabBar, fix #12051 2018-09-15 15:19:18 +08:00
zombieJ
f9dd709e2f Transfer support disabled (#12084) 2018-09-15 15:18:59 +08:00
afc163
f0f44c6608 fix tslint 2018-09-15 00:24:30 +08:00
Jaroslav Bereza
2d415d0be2 Adds missing argument in onChange event (#12243) 2018-09-14 17:13:48 +08:00
afc163
bc3322daf6 Fix notification demo, close #12238 2018-09-14 12:17:55 +08:00
afc163
efb23c1525 Fix linkProps in upload fileList
1. should support json string format
2. should be able to override props like rel, target, title and etc
2018-09-14 11:43:02 +08:00
afc163
9d5920b39d doc: remove old usage instruction 2018-09-14 11:31:53 +08:00
afc163
0698c82173 adjust icon svg align 2018-09-14 10:58:03 +08:00
zombiej
26c3ea4f4a fix #12233. Height should not in transition. 2018-09-13 20:42:45 +08:00
zombiej
2b22d6b19c bump rc-switch & update test case 2018-09-13 19:47:28 +08:00
zombiej
bab33cca83 rc-switch back to 1.7.0 (1.8.0 should in feature brancch) 2018-09-13 19:43:17 +08:00
Mikasa33
6833e767c6 Add defaultSortOrder (#12229)
添加默认排序参数说明
2018-09-13 19:40:43 +08:00
George Gray
c94eda04c6 add vars for Alert types (#12057) 2018-09-13 17:56:54 +08:00
zombiej
03b198775a close #12221. Adjust form validateFields type 2018-09-13 16:33:02 +08:00
zombiej
01a8dcc1c5 update deps of rc-switch 2018-09-13 16:33:02 +08:00
偏右
66601454d6 Update README.md 2018-09-13 11:20:40 +08:00
afc163
b70360e95a doc: improve form API documentation 2018-09-12 22:16:53 +08:00
afc163
2952a8625b site: remove old version hint of API 2018-09-12 21:43:01 +08:00
afc163
197d1392f5 site: improve changelog 2018-09-12 19:09:45 +08:00
zombiej
526f10d5ff fix #12179. Remove transition of border in small table 2018-09-12 16:51:45 +08:00
afc163
0c0bcce873 tweak skeleton paragraph width 2018-09-12 15:45:49 +08:00
wenzhao.fw
91868eec70 fix issue #12204: add parameter dontAnimate to goTo of Carousel 2018-09-12 14:31:03 +08:00
愚道
edee08006d fix review code style issue 2018-09-12 12:01:39 +08:00
愚道
76cf0816dc doc: add course link to site nav 2018-09-12 12:01:39 +08:00
zombiej
8b5e08be67 fix #12157. Adjust sample of slider with input number 2018-09-11 23:32:17 +08:00
包子熊
4eb7d8f693 Hotfix(Select) add select clear icon (#12196)
close #12181
2018-09-11 20:45:40 +08:00
afc163
fd409df14d tweak badge vertical align 2018-09-11 19:04:35 +08:00
afc163
5d59ee9afb Fix badge offset[0] not working 2018-09-11 19:04:06 +08:00
zombiej
515a206be5 add value number type in TreeSelect 2018-09-11 16:59:56 +08:00
afc163
7a4107eab8 site: update footer links 2018-09-11 14:34:36 +08:00
愚道
5dd292f8b7 doc: add yuque antd course link 2018-09-11 14:22:38 +08:00
afc163
eedea07aba update AUTHORS 2018-09-11 14:16:53 +08:00
afc163
5364675ab7 update cdn link 2018-09-11 14:15:48 +08:00
newraina
f8408510a6 fix form onFieldsChange param type (#12185) 2018-09-11 11:54:39 +08:00
afc163
ece2b65c3a update README.md links 2018-09-10 18:54:02 +08:00
afc163
010757831c update README.md links 2018-09-10 18:53:01 +08:00
偏右
282296bbbf Update README-zh_CN.md 2018-09-10 18:51:38 +08:00
偏右
2029e3ef65 Update README.md 2018-09-10 18:50:43 +08:00
afc163
e657985cc3 fix notification icon align when no description 2018-09-10 18:21:16 +08:00
afc163
8fee0fd567 site: update heading font 2018-09-10 15:59:18 +08:00
afc163
5ab199b867 site: fix some icon align styles 2018-09-10 14:51:18 +08:00
afc163
298fc0f426 Fix extra scrollbar when popup menu, close #12152 2018-09-10 11:39:03 +08:00
afc163
00aebeb975 add christmas easter egg 2018-09-10 11:23:49 +08:00
leijingdao
e157e313fa fix:onOpenChange handler not being called in RangePicker for preset r… (#12142)
* fix:onOpenChange handler not being called in RangePicker for preset ranges(#11631)
2018-09-10 00:26:26 +08:00
zombiej
e82d7a9c09 fix #12137. Add miss return type of MessageApi 2018-09-09 22:50:12 +08:00
zombiej
372047e326 update doc 2018-09-09 21:18:34 +08:00
afc163
1a30e5de78 Fix select render lag of long text in chrome
close #11843
close #11456
2018-09-09 00:11:29 +08:00
David Hatten
f237effc2a list padding and margin defaults added 2018-08-07 13:54:03 -04:00
314 changed files with 8518 additions and 4072 deletions

View File

@@ -3,7 +3,7 @@ sudo: false
language: node_js
node_js:
- 8
- 10
cache:
directories:

View File

@@ -1,29 +1,41 @@
17073025 <17073025@cnsuning.com>
778758944 <778758944@qq.com>
Aaron Planell López <aaronplanell@gmail.com>
Aditya Padhi <aditya.padhi@outlook.com>
Adrian Dimitrov <dimitrov.adrian@gmail.com>
Albert Zheng <lisong.zheng@gmail.com>
Albert 理斯特 <shuaizhexu@gmail.com>
Aleck Landgraf <aleck.landgraf@gmail.com>
Alexander <labriko@yandex.ru>
Alexander Anpleenko <vaeum@yandex.com>
Alexander Suevalov <suevalov.work@gmail.com>
Alexandre Kirszenberg <a.kirszenberg@gmail.com>
Alexey Yakovlev <yallie@yandex.ru>
Amorites <751809522@qq.com>
Amumu <yoyo837@hotmail.com>
Anas Tawfeek <anas.tawfeek@outlook.com>
Andre Perunicic <andre@intoli.com>
Andrew Murray <radarhere@gmail.com>
Andrey G <plandem@gmail.com>
Andrzej Dybionka <andrzej@arabel.la>
André <mazoni.andre@gmail.com>
Arnab Sen <arnabsen@gmail.com>
Arthur Denner Oliveira Santos <arthurdenner7@gmail.com>
Arvin Xu <arvinx@foxmail.com>
Ash Kumar <kumar.ashwin@outlook.com>
BK Heleth <bon.hoo@hotmail.com>
Babajide Fowotade <jide.b.tade@gmail.com>
Bartek <bartek.kozera@gmail.com>
Benedikt Franke <benedikt@franke.tech>
Benjamin Kniffler <bkniffler@me.com>
Benjy Cui <benjytrys@gmail.com>
Benoît Latinier <benoit@latinier.fr>
Bernie <bernie.wangbj@gmail.com>
Bilal Sirazitdinov <bilalsir@yandex.ru>
Bill Sheikh <bilawals22@gmail.com>
Bo Chen <bochen2014@yahoo.com>
Bozhao <yubz86@gmail.com>
Bradley Xu <xgheaven@gmail.com>
Brett Lamy <bel423@me.com>
Brook Shi <iwxiaot@gmail.com>
Bruce Mitchener <bruce.mitchener@gmail.com>
@@ -32,53 +44,77 @@ Bryan Berger <bb@ga.co>
C <4019980@qq.com>
Cam Song <neosoyn@gmail.com>
Camol <kwwnjujlc@sina.com>
Cang Ta <hoksilato176@gmail.com>
Canwen Xu <canwenxu@126.com>
Catalin Miron <mironcatalin@gmail.com>
Cee Cirno <i@cee.moe>
Chandler Moisen <chandlermoisen@gmail.com>
Chang Wang <cheapsteak@gmail.com>
Charles Covey-Brandt <chazcb@gmail.com>
Chenjia <ariesjia00@hotmail.com>
Chikara Chan <chenhongtu@51xianqu.net>
Chris Kelly <cjke.7777@gmail.com>
ChrisFan <chris.fan.dev@gmail.com>
Christian <chr.vadala@gmail.com>
Christian Vadalà <chr.vadala@gmail.com>
Christopher Deutsch <cd@cdeutsch.com>
Chuang Yu <cyu9960@gmail.com>
Claudio Restifo <claudio.restifo@gmail.com>
Cody Chan <int64ago@gmail.com>
Colton Pierson <colton@coltonpierson.com>
Confiks <confiks@scriptbase.org>
Cong Zhang <dancerphil1994@gmail.com>
Conway Anderson <hello@conwayanderson.com>
Cordaro <elvis07@163.com>
D & R <jdz321@qq.com>
Daewoong Moon <wiziple@gmail.com>
Damian Green <damian.green@microlease.com>
Dan Minshew <ofenixculpa@gmail.com>
Dane David <dndavid102@gmail.com>
Daniel Gomez <dgomez@orangeloops.com>
Danny Hoower Antonio Viasus Avila <danjavia@gmail.com>
Daqi Song <dqaria@gmail.com>
Darren Poon <dyhpoon@gmail.com>
David Schneider <davschne@gmail.com>
DengYun <tdzl2003@gmail.com>
Dimitri Mitropoulos <dimitrimitropoulos@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>
Dorian <dorian@doma.io>
DosLin <doslino@gmail.com>
Douglas Mason <Demasonjr@gmail.com>
Eager <1226393396@qq.com>
Eager Wei <1226393396@qq.com>
EcmaProSrc.P/ka <asoiso@foxmail.com>
Ed Moore <ed@90seconds.tv>
Edd Hannay <accounts@edd.fm>
Eddie Xie <oeddyo@gmail.com>
Eden Wang <Eden.Wang@Akmii.com>
Eden Wang <yociduo@vip.qq.com>
Eduardo Ludi <eduludi@gmail.com>
Egor Yurtaev <yurtaev.egor@gmail.com>
Eli White <github@eli-white.com>
Emerson Laurentino <emersonlaurentino@hotmail.com>
Emma <sima.zhang1990@gmail.com>
Eric <84263800@qq.com>
Eric Celeste <efc@clst.org>
Eric Turriff <eric.turriff@gmail.com>
Erwann Mest <m+github@kud.io>
Evgeny Kuznetsov <jackk@ya.ru>
Eward Song <eward.song@gmail.com>
Fernando Giarritiello <fgiarritiello@gmail.com>
Flynn <li.fulin@foxmail.com>
For177 <mengqiang.q@gmail.com>
Gao Jiangmiao <tolbkni@gmail.com>
Geoff Holden <geoff@brightloudnoise.com>
George Gray <george@ummodesign.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>
@@ -86,27 +122,41 @@ HJin.me <hjin.me@gmail.com>
Hai Phan Nguyen <pnghai@gmail.com>
Haibin Yu <haibin.yu@oceanwing.com>
Hanai <ihanai1991@gmail.com>
Hanz Luo <lhz0516@gmail.com>
Haroen Viaene <fingebimus@me.com>
Harshit Mehrotra <harshitmehrotra@hotmail.com>
Heaven <ne_smalltown@163.com>
Henri Normak <henri.normak@gmail.com>
HeskeyBaozi <hezhiyu233@foxmail.com>
Hubert Argasinski <argasinski.hubert@gmail.com>
Hughen <446370503@163.com>
Hugo LEHMANN <shogi31@gmail.com>
Igor G <i.gaidai4uk@gmail.com>
Ilan <hasanovtk@gmail.com>
Ilan Hasanov <hasanovtk@gmail.com>
ImJoeHs <865439601@qq.com>
Inclined.Z <zjq0717@163.com>
Infinity <305870677@qq.com>
Ivan Kravets <me@ikravets.com>
Ivan Trofimov <ivan@trofimov.link>
Ivo Stratev <ivo.stratev.tues@gmail.com>
Jack Hsieh <jack@egenware.com>
Jack Works <zjwpeter@gmail.com>
Jackie.Ls <418292038@qq.com>
JaePil Jung <jjp5023@gmail.com>
Jake Richards <jake.richards@genesys.com>
James <james@schoolshape.com>
JamesYin <elantion@gmail.com>
Jean-Luc Sorak <jlsorak@icloud.com>
Jeffrey Carl Faden <jeffreyatw@gmail.com>
Jerry Bendy <jerry@icewingcc.com>
Jesper We <jesper@journeyman.se>
Jiabin Peng <png.inside@gmail.com>
Jialei <jialeicui@126.com>
Jieraaa <842533841@qq.com>
Jin ZHANG <jz.zhangjin@gmail.com>
Jing Ma <mjingm87@qq.com>
Jinxuan Zhu <zhujinxuan@gmail.com>
Joe <qiaolibo@126.com>
Joe Hsu <jhsu.x1@gmail.com>
John Johnson III <john@johnjohnson.cc>
@@ -115,16 +165,20 @@ Jonatas Walker <jonataswalker@gmail.com>
Jonny Buchanan <jonathan.buchanan@gmail.com>
Jordan Hornblow <jordan@jch254.com>
Josué <ujosuegt@outlook.com>
JribiBelhassen <belha9inzaghi@gmail.com>
Juan Rodrigo Venegas Boesch <jrvboesch@gmail.com>
Junyu Zhan <irrigator@yeah.net>
Kaien Liao <liaokaien@gmail.com>
Kenaniah Cerny <kenaniah@gmail.com>
Kenneth Luján Rosas <elgenio.03@gmail.com>
Kenneth Truong <kenneth.e.truong@gmail.com>
Kevin Ivan <info@kevinivan.com>
KgTong <kgtong1992@gmail.com>
Khalifa Lame <khalibloo@gmail.com>
Kian <kian@vsu.cc>
Kiho · Cham <monkindey@163.com>
Kimmo Saari <kimmo.saari@revolt.fi>
Kirill Alexander Khalitov <voronar@gmail.com>
Kirill Stiopin <kirill.stiopin@hotmail.com>
Knacktus <knacktus@gmail.com>
Kyle Kelley <rgbkrk@gmail.com>
@@ -137,12 +191,15 @@ Leon Shi <superRaytin@163.com>
Leon Shi <superRaytin@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>
MG12 <wuzhao.mail@gmail.com>
Ma Tianxiao <matx2215@outlook.com>
Madis Väin <madisvain@gmail.com>
Manjit Kumar <manjit1727@gmail.com>
Manweill <mic.liangwenwei@foxmail.com>
Marcela Bomfim <mbomfim@live.com>
Marco Afonso <mafonso333@gmail.com>
Marcus Bransbury <marcus.bransbury@gmail.com>
Marius Ileana <visvadw@gmail.com>
@@ -151,11 +208,13 @@ Marshall Chen <Juniors.fei@gmail.com>
Martin Litvaj <kamahl19@gmail.com>
Martin Novák <martinnovak@outlook.com>
Mathew <khayaanimations@gmail.com>
Matt Lein <matt.lein@code42.com>
Maximilian Meyer <Maximilian.Meyer@br.de>
Meck <yesmeck@gmail.com>
MeiLin <postget.me@gmail.com>
Meow-z <372086270@qq.com>
Miaow <i@zfeng.net>
Michael Wang <ylzcylx@gmail.com>
Michalis Macheras <diodosier@gmail.com>
Min <dicklwm@163.com>
MinJeong Kim <min7859@gmail.com>
@@ -174,11 +233,15 @@ Nekron <nekron.hyt@gmail.com>
Neverland <chenjiahan@buaa.edu.cn>
Nico <nicolas@freddelacompta.com>
Nidhi Agarwal <nidhi.agarwal@zomato.com>
Nikolay <veseliy07@gmail.com>
Nimo <nimo.jser@gmail.com>
Nishant Arora <na.nishantarora@gmail.com>
Nokecy <Nokecy@163.com>
OAwan <georgio.wan@gmail.com>
Oleg Kuzava <olegkuzava@gmail.com>
Oleksandr Kovalchuk <me.olexandr.kovalchuk@gmail.com>
Ooi Yee Wei <ywooi@yahoo.com>
Open Next <opennext@126.com>
OuYancey <ou.yancey@gmail.com>
Panjie Setiawan Wicaksono <panjie@panjiesw.com>
Patrick Gidich <patrick.gidich@simnova.com>
@@ -194,30 +257,40 @@ Pyroboomka <qwaarty@mail.ru>
Qiaosen Huang <joesonw@gmail.com>
Qingrong Ke <keqingrong1992@gmail.com>
Rafael Cosman <rafaelcosman@alumni.stanford.edu>
Rallets <rallet@rallets.com>
Ramsés Moreno <ramses@cuatromedios.com>
Randy <randypriv@gmail.com>
RaoHai <surgesoft@gmail.com>
Raphael Chauveau <raph.chauveau@gmail.com>
Reed Sun <superreedsun@gmail.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>
Rohan Malhotra <rohan.root@gmail.com>
Rongjian Zhang <pd4d10@gmail.com>
Rrrandom <emanonhere@gmail.com>
SHEN Lin <shenlin192@gmail.com>
Sakol Assawasagool <koobitor@gmail.com>
Sam Chen <chenxsan@gmail.com>
Sam Maxwell <sam@paybase.io>
Samuel Gaus <sam@gaus.co.uk>
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>
Sebastian Blade <blade254353074@hotmail.com>
Sebastian Busch <mail@sebastian-bus.ch>
Sebastian Busch <s.busch@qbus-enet.de>
Sergio Crisostomo <sergiosbox@gmail.com>
Shawn Sit <xueqingxiao@gmail.com>
ShiTengFei <shitengfei@goyoo.com>
Shubham Kanodia <shubhamsizzles@gmail.com>
Shun <polytechnics.shun@gmail.com>
Shuvalov Anton <anton@shuvalov.info>
SimaQ <sima.zhang1990@gmail.com>
Spencer <spjy@hawaii.edu>
Stephen Esser <Stephen.Esser@gmail.com>
@@ -227,8 +300,13 @@ Taylor Sabell <taylorsabell@gmail.com>
Tengjiao Cai <caitengjiao1987@gmail.com>
Terence <trence320@163.com>
The Rock <zhoguoxin@126.com>
Thibault Derousseaux <tde@activeviam.com>
Thiebaud Thomas <thiebaud.tom@gmail.com>
Tino D <ginodeis@gmail.com>
Tom Gao <tom@zoomsoft.cc>
Tom Xu <tom.xu@antcosa.com>
Tomás Francisco <mail@tomasfrancisco.com>
Tomáš Szabo <tomas.szabo@deftomat.com>
Trotyl Yu <trotyl@qq.com>
Troy Thompson <troynt@gmail.com>
Tyler <chaotyler@gmail.com>
@@ -238,9 +316,12 @@ Valentin Vichnal <valentin@vichnal.com>
Vemund Santi <vemund@santi.no>
Vic <709147950@qq.com>
Vincent Zhang <vxzhong@qq.com>
Vitaliy Mazurenko <vitaliymazurenko@gmail.com>
ViviaRui <zr1450995198@163.com>
Walter Barbagallo <brb.walter@gmail.com>
Walter Barbagallo <turbometalskater@gmail.com>
Wang Jun <amos.callmexyz@gmail.com>
Wang Riwu <riwu0730@gmail.com>
Warren Seymour <warren@fountainhead.tech>
Wei Zhu <yesmeck@gmail.com>
Wenchao Hu <zjuhwc@gmail.com>
@@ -248,10 +329,13 @@ Will Chen <willchen90@gmail.com>
WingGao <wing.gao@live.com>
Wu Haotian <whtsky@gmail.com>
XBTop1! <xbtop1@gmail.com>
Xiaoming <yokiming1994@gmail.com>
Xie Guanglei <xieguanglei@hotmail.com>
Xiping.wang <527409987@qq.com>
XuMM_12 <owiatsq@sina.cn>
Yang Bin <yangkghjh@gmail.com>
Yasin Uslu <nepjua@gmail.com>
Yevhen Hryhorevskyi <evgeniygrigorevskiy@gmail.com>
Yiming <ymjrcc@qq.com>
Yogesh <yogeshkumar180592@gmail.com>
YuChao Liang <l.yuch@foxmail.com>
@@ -259,22 +343,30 @@ Yunus EŞ <yunus@yunuses.com>
Yury Kozyrev <urakozz@me.com>
Yusuke Ito <novi.mad@gmail.com>
Yuwei Ba <i@xiaoba.me>
Yuxuan Huo <yuxuan.huo2011@gmail.com>
YuyingWu <wuyuying1128@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>
Ziluo <gyfzzu@gmail.com>
Zohaib Ijaz <mzohaib.qc@gmail.com>
afc163 <afc163@gmail.com>
agent-z <1607291079@qq.com>
ahalimkara <ahalimkara@gmail.com>
ascoders <576625322@qq.com>
ashishg-qburst <ashishg@qburst.com>
bLue <tbdblue@gmail.com>
bang <sqibang@gmail.com>
bang88 <sqibang@gmail.com>
baozefeng <727751065@qq.com>
blankzust <450811238@qq.com>
byuanama <byuan@ama.com.au>
byzyk <bohdan.kh@gmail.com>
bzone <yarnbcoder@gmail.com>
caoyi <caoyi0905@mail.hfut.edu.cn>
carrie-tanminyi <12mytan@gmail.com>
cathayandy <wzm_andy@126.com>
chaofeis <408067385@qq.com>
chchen <cc272309126@gmail.com>
@@ -283,11 +375,15 @@ chencheng <sorrycc@gmail.com>
cjahv <cjahv@qq.com>
clinyong <clinyong@gmail.com>
corneyl <cornieljoosse@gmail.com>
david.lv <code4funlnyx@gmail.com>
davidhatten <david.r.hatten@gmail.com>
ddcat1115 <ddcat1115@gmail.com>
delesseps <andrewlessels@gmail.com>
denzw <denzw@21cn.com>
dependabot[bot] <support@dependabot.com>
detailyang <detailyang@gmail.com>
devqin <devqin@gmail.com>
digz6666 <digz6666@gmail.com>
djorkaeff <djorkae55@gmail.com>
duzliang <duzliang@gmail.com>
ecofe <150641329@qq.com>
@@ -300,13 +396,19 @@ fengmk2 <m@fengmk2.com>
flashback313 <windmark2012@gmail.com>
genie <genie88@163.com>
gregahren <grega.hren@gmail.com>
guifu <picodoth@gmail.com>
handycode <lihandi@gmail.com>
hank <stonehank310@gmail.com>
hanpei <75189218@qq.com>
hansnow <hansnow2012@gmail.com>
haoxin <coderhaoxin@outlook.com>
hardfist <yangjianzju@gmail.com>
hauwa123 <hauwa.aminu@outlook.com>
hehe <xpc_kacl@163.com>
henryv0 <henryvo94@gmail.com>
hi-caicai <hi@cai-cai.me>
hongxuWei <hongxu.wei@outlook.com>
huangyan.py <huangyan.py@bytedance.com>
huzzbuzz <huzzbuzz@outlook.com>
iamcastelli <sowed@cyberdude.com>
imosapatryk <imosa.patryk@gmail.com>
@@ -318,6 +420,7 @@ jasonxia23 <xia.jason23@gmail.com>
jiang <155259966@qq.com>
jim <wasd2144@hotmail.com>
jinouwuque <ee2win@gmail.com>
jojoLockLock <miffyschou@sina.com>
junjing.zhang <zhangjunjing@gmail.com>
kacjay <45483388@qq.com>
kagawagao <kingsongao1221@gmail.com>
@@ -335,12 +438,14 @@ kuang <p2227@hotmail.com>
kun sam <kunsam624@icloud.com>
leadream <857098475@qq.com>
lehug <zcszuo5811@126.com>
leijingdao <leijingdao@163.com>
leon.shi <superRaytin@163.com>
lgmcolin <gengmin.lgm@gmail.com>
lgmcolin <lgmcolin@gmail.com>
liangfei <njliangfei@gmail.com>
liekkas <zjq0717@163.com>
lihqi <455711093@qq.com>
littleLane <857183384@qq.com>
lixiaochou077 <qi.liqi07@gmail.com>
lixiaoyang <lixiaoyang2345@gmail.com>
lixiaoyang1992 <lixiaoyang2345@gmail.com>
@@ -354,24 +459,36 @@ memoryza <jincai.wang@foxmail.com>
mgrdevport <mgrdevport@gmail.com>
mitchell.demler <mitchell.demler@harcourts.net>
mkermani144 <mkermani144@gmail.com>
mmmveggies <jakeselig@gmail.com>
mofelee <mofe@me.com>
monkindey <monkindey@163.com>
mushan0x0 <mushan0x0@gmail.com>
muzea <mr.muzea@gmail.com>
muzuiget <muzuiget@gmail.com>
natergj <nater_nater@me.com>
neekey <ni184775761@gmail.com>
niko <644506165@qq.com>
nikogu <644506165@qq.com>
nuintun <nuintun@qq.com>
ohhoney1 <1269075501@qq.com>
paranoidjk <hust2012jiangkai@gmail.com>
parlop <parlop@gmail.com>
pbrink231 <pbrink231@gmail.com>
pd4d10 <pd4d10@gmail.com>
peiming <hyrijk@gmail.com>
picodoth <picodoth@gmail.com>
picodoth <pikaleize@gmail.com>
pinggod <pinggodstudio@gmail.com>
pizn <pizner@gmail.com>
plandem <plandem@gmail.com>
popomore <sakura9515@gmail.com>
qixian.cs@outlook.com <wasd2144@hotmail.com>
qliu <1403927509@qq.com>
qubaoming <qubaoming@didichuxing.com>
ravirambles <ravirambles@gmail.com>
ryangun <ryangun@foxmail.com>
ryanhoho <hswacoal@gmail.com>
ryannz <c5e1856@gmail.com>
sadmark <zhoubin@laidian360.com>
sallen450 <jqh101@sina.com>
shelwin <wxfans@gmail.com>
@@ -380,11 +497,15 @@ shlice <licesh@gmail.com>
shouyong <enlangs@163.com>
simaQ <sima.zhang1990@gmail.com>
slientcloud <rjmuqiang@gmail.com>
sliwey <qlw1009@gmail.com>
snadn <snadn@snadn.cn>
sojournerc <cmeyer@zvelo.com>
sorrycc <sorrycc@gmail.com>
sosohime <theziming@126.com>
swindme <swindme@163.com>
syssam <s.y.s.sam.sys@gmail.com>
tangjinzhou <415800467@qq.com>
tangjinzhou <tangjinzhou@yidian-inc.com>
thegatheringstorm <tgs@tgs.blue>
tianli.zhao <275287902@qq.com>
tom <caolvchong@gmail.com>
@@ -393,21 +514,27 @@ u3u <qwq@qwq.cat>
ustccjw <317713370@qq.com>
valleykid <valleykiddy@gmail.com>
vgeyi <vgeyiz@126.com>
wangshantao <605682551@qq.com>
wangtao0101 <yuecjn@gmail.com>
wangxiaolei <fatelei@gmail.com>
wangxueliang <wangxueliang@yidian-inc.com>
warmhug <hualei5280@gmail.com>
whtang906 <whtang906@gmail.com>
wizawu <wizawu@gmail.com>
wonyun <wy393767068@163.com>
xiaofan2406 <xiaofan2406@gmail.com>
y-take <y.takey@gmail.com>
yangwukang <yangwukang@boco.com.cn>
yeliex <yeliex@yeliex.com>
yiminanci <yiminanci@gmail.com>
yiminghe <yiminghe@gmail.com>
yociduo <yociduo@vip.qq.com>
yoyo837 <yoyo837@hotmail.com>
yubozhao <yubz86@gmail.com>
yuche <i@yuche.me>
z <haig8@msn.com>
zack <zxyah@126.com>
zelongc <nickcong123@gmail.com>
zerob4wl <zerob4wl@gmail.com>
zhangpc <zhangpc@tenxcloud.com>
zhaocai <lzc09008@gmail.com>
@@ -416,31 +543,44 @@ zhuyue <fuping.dfp@antfin.com>
zilong <jzlxiaohei@163.com>
zinkey <yaya@uloveit.com.cn>
zollero <corona7@163.com>
zombieJ <smith3816@gmail.com>
zombiej <smith3816@gmail.com>
zongzi531 <zongzi.xy@gmail.com>
zuiidea <zuiiidea@gmail.com>
邦 <sqibang@gmail.com>
爱but的苍蝇 <354788473@qq.com>
拷钉 <41830859@qq.com>
苏秦 <646382806@qq.com>
竹尔 <Juelchiang@gmail.com>
偏右 <afc163@gmail.com>
英布 <chaoren1641@gmail.com>
朮厃 <cn.ah.liu@gmail.com>
张聪 <dancerphil1994@gmail.com>
诸岳 <dengfuping_develop@163.com>
逸达 <dqaria@gmail.com>
诸岳 <fuping.dfp@antfin.com>
刘红 <liuhong1.happy@163.com>
宝码 <noyobo@gmail.com>
陈帅 <qixian.cs@outlook.com>
蔡伦 <sliuqin@gmail.com>
陆离 <surgesoft@gmail.com>
愚道 <tingzhao.ytz@antfin.com>
陈帅 <wasd2144@hotmail.com>
松子 <window.pibarr@gmail.com>
付引 <xxxquotes@gmail.com>
可乐 <zaxlct@foxmail.com>
山客 <zeakhold@gmail.com>
曾凯 <zengkai2009@foxmail.com>
低位 <zhujun87654321@gmail.com>
广彬-梁 <326741518@qq.com>
何志勇 <15988134176@163.com>
徐坤龙 <272992168@qq.com>
黄子毅 <576625322@qq.com>
翁润雨 <593110501@qq.com>
崔宏森 <948346354@qq.com>
董天成 <dongtiangche@outlook.com>
方剑成 <fjc0kb@gmail.com>
包子熊 <hezhiyu233@foxmail.com>
闲耘™ <hotoo.cn@gmail.com>
一喵呜 <hyb628@gmail.com>
吕立青 <jimmy.jinglv@gmail.com>
@@ -451,7 +591,9 @@ zuiidea <zuiiidea@gmail.com>
柚子男 <yozman@sina.com>
愚指导 <yutingzhao1991@sina.com>
愚指导-TZ <yutingzhao1991@sina.com>
杨小事er <Uiryzd@163.com>
超能刚哥 <margox@foxmail.com>
马金花儿 <o.o@mug.dog>
रोहन मल्होत्रा <rohan.malhotra@adwyze.com>
白羊座小葛 <abeyuhang@gmail.com>
白羊座小葛 <abeyuhang@gmail.com>
薛定谔的猫 <hh_2013@foxmail.com>

View File

@@ -15,21 +15,178 @@ timeline: true
---
## 3.10.4
`2018-11-03`
- 🌟 Support custom modal header style through less variable `@modal-header-bg`. [#12914](https://github.com/ant-design/ant-design/issues/12914)
- 🐞 Fixed mask style not working for Modal.mehtod. [#12688](https://github.com/ant-design/ant-design/issues/12688)
- 🐞 Fixed Checkbox missing check mark inside table in IE 11. [#12597](https://github.com/ant-design/ant-design/issues/12597)
- 🐞 Fixed FormItem having different height with help info. [#12803](https://github.com/ant-design/ant-design/issues/12803)
- 🐞 Fixed Divider expands Popover card width under Chrome. [#10914](https://github.com/ant-design/ant-design/issues/10914)
- 🐞 Fixed Avatar content not aligned in Popover. [#10917](https://github.com/ant-design/ant-design/issues/#10917)
- Button
- 🐞 Fixed unable to find node on unmounted components error. [#12843](https://github.com/ant-design/ant-design/issues/12843)
- 🐞 Fixed icon margin style. [546c59a](https://github.com/ant-design/ant-design/commit/546c59a4c1a6b482afecbcb4a3cb1e385c0bbdb6)
- Table
- 🐞 Fixed sorter issue when render function is present in column. [#12870](https://github.com/ant-design/ant-design/issues/12870) [#12737](https://github.com/ant-design/ant-design/issues/12737)
- 🐞 Fixed fixed-columns border issue. [#9687](https://github.com/ant-design/ant-design/issues/9687)
- TypeScript
- 🐞 Fixed Select `onPopupScroll` props definition. [#12913](https://github.com/ant-design/ant-design/pull/12913)
- 🐞 Fixed `onFocus` and `onBlur` missing in AutoComplete props. [@muzea](https://github.com/muzea) [#12793](https://github.com/ant-design/ant-design/issues/12793);
## 3.10.3
`2018-10-27`
- 🌟 Improve util function `getScroll` TypeScript definition. [#12784](https://github.com/ant-design/ant-design/pull/12784) [@ztplz](https://github.com/ztplz)
- 🐞 Fixed that Checkbox inside CheckboxGroup do not trigger `onChange`. [#12642](https://github.com/ant-design/ant-design/issues/12642)
- 🐞 Fixed Calendar month picker not correct when set with `validRange`. [#12675](https://github.com/ant-design/ant-design/issues/12675)
- 🐞 Fixed multiple Select drop-down bug when set `dropdownMatchSelectWidth`. [#12816](https://github.com/ant-design/ant-design/pull/12816) [@hengkx](https://github.com/hengkx)
- 🐞 Fixed Card title overflow bug. [#12680](https://github.com/ant-design/ant-design/issues/12680)
- 🐞 Fixed Form[inline] help and extra overlapped. [#12725](https://github.com/ant-design/ant-design/issues/12725)
- Table
- 🌟 Support custom Table filter backgrounds. [#12775](https://github.com/ant-design/ant-design/pull/12775) [@ivankravets](https://github.com/ivankravets)
- 🐞 Adjust small table placeholder style. [#12682](https://github.com/ant-design/ant-design/issues/12682)
- 🐞 Fixed small size table header border missing in Firefox. [#12840](https://github.com/ant-design/ant-design/issues/12840)
- 🐞 Fixed checkbox align of small/middle size table. [#12723](https://github.com/ant-design/ant-design/issues/12723)
## 3.10.2
`2018-10-23`
- 📝 Translated documentation [patterns overview](https://ant.design/docs/spec/overview) to English. [#12637](https://github.com/ant-design/ant-design/pull/12637) [@ilanus](https://github.com/ilanus)
- 🛠 Improve support vi_VN locale for DatePicker component. [#12656](https://github.com/ant-design/ant-design/pull/12656) [@hieuhlc](https://github.com/hieuhlc)
- 🐞 Fixed TimePicker style issue in IE11. [#12707](https://github.com/ant-design/ant-design/pull/12707) [jinyaqiao1102](https://github.com/jinyaqiao1102)
- 🐞 Fixed Popconfirm defaultVisible. [#12733](https://github.com/ant-design/ant-design/issues/12733)
- 🐞 Fixed Table th border missing in Firefox. [#12628](https://github.com/ant-design/ant-design/issues/12628)
- 🐞 Add `touch-action: none` css on Slider to fix chrome warning. [#12595](https://github.com/ant-design/ant-design/issues/12595)
- 🐞 Fixed Tabs ink-bar vertical css. [#12276](https://github.com/ant-design/ant-design/issues/12276)
- 🐞 Fixed vertical align issue of empty Button. [#12681](https://github.com/ant-design/ant-design/issues/12681)
- 🐞 Fixed Calendar `locale` prop should have priority. [#12706](https://github.com/ant-design/ant-design/issues/12706)
- 🐞 Fixed Checkbox[checked] indeterminate style. [#12724](https://github.com/ant-design/ant-design/issues/12724)
- 🐞 Fixed `prefixCls` not passed to Popconfirm's button. [#12677](https://github.com/ant-design/ant-design/pull/12677) [@concefly](https://github.com/concefly)
- 🐞 Fixed Edge ignoring `pointer-events:none` on Button's span. [#12712](https://github.com/ant-design/ant-design/pull/12712) [@dazbo](https://github.com/dazbo)
- Progress
- 🐞 Fixed Progress `strokeColor` props not work. [#12587](https://github.com/ant-design/ant-design/pull/12587) [@lyhper](https://github.com/lyhper)
- 🐞 Fixed Progress[type="circle"] should wrap text. [#12718](https://github.com/ant-design/ant-design/issues/12718)
- TypeScript
- 🐞 Fixed `trexpandedKeys` and `onTreeExpand` definition missing in TreeSelect. [#12648](https://github.com/ant-design/ant-design/pull/12648) [@decadef20](https://github.com/decadef20)
- 🐞 Fixed missed property `key` in TabPaneProps. [682af0d](https://github.com/ant-design/ant-design/commit/682af0d44bf38a7d3e487aa909c46409db163030) [@ztplz](https://github.com/ztplz)
- 🐞 Fixed some definition of Icon. [3dbc357](https://github.com/ant-design/ant-design/commit/3dbc357ff2837debbb9b36a25b14be4757297cad)
## 3.10.1
`2018-10-12`
- 🎉 [Ant Design Mobile of Angular](http://ng.mobile.ant.design/)(NG-ZORRO-Mobile) released!
- 📝 Upgrade document `Real project with dva` to [Real project with umi](https://ant.design/docs/react/practical-projects).
- Table
- 🐞 Fixed clicking all columns will trigger sort behavior even without `sorter` props. [#12515](https://github.com/ant-design/ant-design/issues/12515)
- 🐞 Fixed extra "Sort" title hint of column. [#12613](https://github.com/ant-design/ant-design/issues/12613)
- 🐞 Fixed broken style of sort and right-aligned column. [#12552](https://github.com/ant-design/ant-design/issues/12552)
- 🐞 Fixed sort not working as expected when `columns` defined in `render`. [#12571](https://github.com/ant-design/ant-design/issues/12571)
- 🐞 Fixed sorted column background color of small size Table.
- 🐞 Fixed overlap style of Table row selection Checkbox in chrome. [5bef1aa](https://github.com/ant-design/ant-design/commit/5bef1aa6c2e792180ef8d53a1f1489376b8e35db)
- 🐞 Fixed broken style of Table inside Form.Item. [#12554](https://github.com/ant-design/ant-design/issues/12554)
- DatePicker
- 🐞 Tweak Italian locale. [#12413](https://github.com/ant-design/ant-design/issues/12413) [@yp](https://github.com/yp)
- 🐞 Fixed that picker does not get focused state after select date. [#12475](https://github.com/ant-design/ant-design/issues/12475)
- 🐞 Fixed calendar icon missing when use it in Input.Group. [#12536](https://github.com/ant-design/ant-design/issues/12536)
- 🐞 Fixed Anchor text edge cut problem. [#12520](https://github.com/ant-design/ant-design/issues/12520)
- 🐞 Fixed that Drawer still cover page even set `mask={false}`. [#12401](https://github.com/ant-design/ant-design/issues/12401)
- 🐞 Fixed disabled style missing of Input.TextArea when used as custom input in AutoComplete. [#12594](https://github.com/ant-design/ant-design/issues/12594)
- 🐞 Fixed Modal.confirm `prefixCls` prop not passing to mask element, and changed it's default value to `ant-model-confirm`. [#12546](https://github.com/ant-design/ant-design/issues/12546)
- 🐞 Fixed an align issue of Input.Group in safari. [#12493](https://github.com/ant-design/ant-design/issues/12493)
- 🐞 Fixed an align issue of standalone `<Badge />`. [#12419](https://github.com/ant-design/ant-design/issues/12419)
- 🐞 Fixed inconsistent arugments of `onExpand` when click Tree.DirectoryTree switch icon and tree node. [#12567](https://github.com/ant-design/ant-design/issues/12567)
- 🐞 Fixed hasFeedback icon unexpected focused state in IE11. [#12524](https://github.com/ant-design/ant-design/pull/12524) [@siyu77](https://github.com/siyu77)
- 🐞 Fixed multiple Select will trigger `onFocus` and `onBlur` repeatly when click it multiple times. [#12281](https://github.com/ant-design/ant-design/issues/12281) [@Frezc ](https://github.com/Frezc)
- 🐞 Fixed long text overflow issue of circle type Progress.
- TypeScript
- 🐞 Fixed Steps `labelPlacement` definition. [#12575](https://github.com/ant-design/ant-design/pull/12575) [@yueyes](https://github.com/yueyes)
- 🐞 Fixed Select.Option `style` definition. [#12609](https://github.com/ant-design/ant-design/pull/12609) [@dimitropoulos](https://github.com/dimitropoulos)
- 🐞 Fixed `form.validateFields` overload order problem. [#12538](https://github.com/ant-design/ant-design/pull/12538) [@TomIsion](https://github.com/TomIsion)
- 🐞 Fixed AutoComponent `onFocus` `onBlur` definitions. [#12498](https://github.com/ant-design/ant-design/issues/12498)
## 3.10.0
`2018-09-30`
- 🌟 Upload adds `openFileDialogOnClick` prop to allow setting whether to open the upload dialog when the component is clicked. [#12347](https://github.com/ant-design/ant-design/pull/12347) [@hengkx](https://github.com/hengkx)
- 🌟 InputNumber adds `decimalSeparator` prop to allow setting a custom decimal. [#12329](https://github.com/ant-design/ant-design/pull/12329) [@amedora](https://github.com/amedora)
- 🌟 TreeSelect adds the `treeExpandedKeys` and `onTreeExpand` props to control the expansion of the tree. [#12145](https://github.com/ant-design/ant-design/issues/12145)
- Transfer
- 🌟 Adds `disabled` prop. [#12066](https://github.com/ant-design/ant-design/issues/12066)
- Modal
- 🌟 Adds `autoFocusButton` prop to allow specifying a button that automatically gets focus when Modal opens. [#11756](https://github.com/ant-design/ant-design/pull/11756) [@erwin-k](https://github.com/erwin-k)
- 🌟 `confirm` added `okButtonProps` and `cancelButtonProps` prop to allow setting custom props on buttons. [#12425](https://github.com/ant-design/ant-design/pull/12425) [@Whoaa512](https://github.com/Whoaa512)
- Table
- 🌟 `column.title` accepts function now. [#11246](https://github.com/ant-design/ant-design/issues/11246)
- 🌟 `onChange` adds a new parameter `extra` to allow you getting filtered data. [#12369](https://github.com/ant-design/ant-design/pull/12369)
- 🌟 Improve the sort and filter UX, You can now sort by clicking on the entire header. [#12264](https://github.com/ant-design/ant-design/pull/12264)
- 🌟 Alert adds `icon` prop to allow setting a custom icon. [Demo](https://ant.design/components/alert/#components-alert-demo-custom-icon)
- 🌟 The following components add a `suffixIcon` prop, which is used to set the icon behind the input box. For details, please refer to the documentation.
- Cascader
- DatePicker
- Select
- TreeSelect
- TimePicker
- 🌟 Add some new less variables. [f237eff](https://github.com/ant-design/ant-design/commit/f237effc2a35eb249273f6f2826092a2f9b9db45)
- 🐞 Fix Icon.createFromIconfontCN prepending `https` to the `scriptUrl`. [#12316](https://github.com/ant-design/ant-design/issues/12316)
- 🐞 Fix the issue with the `gutter` props of Row that doesn't work when using nested Col. [#12320](https://github.com/ant-design/ant-design/pull/12320)
- 🐞 Fix the issue where the Tree.DirectoryTree component could not properly expand the node when the 'expandedKeys` prop had initial values. [#12396](https://github.com/ant-design/ant-design/issues/12396)
- 🐞 Fix the issue when the `render` prop of the Transfer component returns a ReactNode, the `title` property of the list item shows an unexpected value. [#12399](https://github.com/ant-design/ant-design/issues/12399)
- 🐞 Fix Tooltip not working with CheckboxGroup. [#12427](https://github.com/ant-design/ant-design/issues/12427)
- 🐞 Fix the issue that Button can still be clicked in IE9 under loading state. [#12466](https://github.com/ant-design/ant-design/pull/12466) [@snail](https://github.com/120216220)
- 🐞 Fix the issue with mouse hover when using non-Input components in Input.Group. [#12407](https://github.com/ant-design/ant-design/pull/12407) [@hengkx](https://github.com/hengkx)
- 🐞 Fix some TypeScript type definitions. [#12374](https://github.com/ant-design/ant-design/pull/12374) [#12370](https://github.com/ant-design/ant-design/pull/12370) [#12354](https://github.com/ant-design/ant-design/pull/12354/files) [#12473](https://github.com/ant-design/ant-design/pull/12473)
## 3.9.3
`2018-09-22`
- 🐞 Fix `Select` render lag of long text in Chrome. [#11456](https://github.com/ant-design/ant-design/issues/11456) [#11843](https://github.com/ant-design/ant-design/issues/11843)
- 🐞 Fix `onOpenChange` handler not being called in `RangePicker` for preset ranges. [#12142](https://github.com/ant-design/ant-design/pull/12142)[@leijingdao](https://github.com/leijingdao)
- 🐞 Fix parameter `dontAnimate` to `goTo` of `Carousel`, the parameter be used to closing animation transitions. [#12205](https://github.com/ant-design/ant-design/pull/12205)
- 🐞 Fix duplicated className for tabBar in `Tabs`. [589ba](https://github.com/ant-design/ant-design/commit/589bafd5db92a817c078ead6decdb81e64b2b5a8) [#12051](https://github.com/ant-design/ant-design/issues/12051)
- 🐞 Fix the vertical alignment for the title of `Card`. [#11036](https://github.com/ant-design/ant-design/pull/11036) [#10576](https://github.com/ant-design/ant-design/issues/10576)
- 🐞 Fix Item key unspected change on `List` component. [#12299](https://github.com/ant-design/ant-design/pull/12299)[@douglasjunior](https://github.com/douglasjunior)
- 🐞 Fix `confirmFilter` in `Table` does not refresh immediately. [954c7](https://github.com/ant-design/ant-design/commit/954c7ecd8ed384a3c67ec8dfb0e0deaa14bbf83b) [#12284](https://github.com/ant-design/ant-design/issues/12284)
- Menu
- 🐞 Fix extra scrollbar when popup `Menu` in `horizontal` mode. [#12152](https://github.com/ant-design/ant-design/issues/12152)
- 🐞 Fix `openKeys` have higher priority in `Menu`. [#12361](https://github.com/ant-design/ant-design/pull/12361) [@tangjinzhou](https://github.com/tangjinzhou)
- Upload
- 🐞 Fix `linkProps` in `Upload` fileList to support json string format and can override rel, target, title and etc. [efb23c](https://github.com/ant-design/ant-design/commit/efb23c1525858114460bfe3bd5fcb18c9f236bdc)
- 🐞 Fix deduplication of the same key when uploading multiple files in `Upload`. [273fd](https://github.com/ant-design/ant-design/commit/273fd2ea1bca395d61509cc98c3ebbf1c620bf43)、[#10953](https://github.com/ant-design/ant-design/issues/10953)
- Icon related
- 🐞 Fix `Upload` close icon style error. [#12330](https://github.com/ant-design/ant-design/pull/12330) [#12304](https://github.com/ant-design/ant-design/issues/12304)
- 🐞 Fix `Select` add select clear icon. [#12196](https://github.com/ant-design/ant-design/pull/12196) [#12181](https://github.com/ant-design/ant-design/issues/12181)
- 🐞 Fix `Icon` svg align. [0698c](https://github.com/ant-design/ant-design/commit/0698c8217327224611d4be5fcfd149a355f1c08d)
- 🐞 Fix `React.Children.only` error when `Icon` contain children. [c21ff](https://github.com/ant-design/ant-design/commit/c21ff5251d1ff0f00d7f283dd377a7b13eec21ee)
- 🐞 Fix `Notification` icon align when no description. [e6579](https://github.com/ant-design/ant-design/commit/e657985cc35359fb813a2bd68be8c3afbe75c95a)
- 🐞 Fix sorter icon align of `Table`. [c935d](https://github.com/ant-design/ant-design/commit/c935d53b713afb3ec314133d749ca4e29e0c1ee5)
- TypeScript
- 🐞 Fix `Message` miss return type of MessageApi. [e82d7](https://github.com/ant-design/ant-design/commit/e82d7a9c095317d62b054fcf7c2d6666ba54660d) [#12137](https://github.com/ant-design/ant-design/issues/12137)
- 🐞 Fix `Tree` onDrop type. [e5827](https://github.com/ant-design/ant-design/commit/e58273dccf59d58862e8bab0da36c7065e1c1044) [#12269](https://github.com/ant-design/ant-design/issues/12269)
- 🐞 Add `TreeSelect` missing argument `extra` in onChange event. [#12243](https://github.com/ant-design/ant-design/pull/12243)[@jardicc](https://github.com/jardicc)
## 3.9.2
`2018-09-08`
- 🐞 Title of children `Card` under `Card` using `tab-card` has wrong padding.[#12083](https://github.com/ant-design/ant-design/issues/12083)
- 🐞 Fix `AutoComplete` using `TextArea` as input, height adjust by manual has time delay.[#12117](https://github.com/ant-design/ant-design/issues/12117)
- 🐞 Fix `maskStyle` under `Drawer` not working.[#12125](https://github.com/ant-design/ant-design/pull/12125)[@ryerh](https://github.com/ryerh)
- 🌟 `popconfirm` add `onVisibleChange` support.[#8614](https://github.com/ant-design/ant-design/issues/8614)
- 🐞 Fix something table header in `Table` using fixed header and colums display unecessary scorllbar.[#6515](https://github.com/ant-design/ant-design/issues/6515)
- 🐞 Fix `Spin` using `delay` still render at first time.[#12131](https://github.com/ant-design/ant-design/issues/12131)
- 🐞 Title of children `Card` under `Card` using `tab-card` has wrong padding. [#12083](https://github.com/ant-design/ant-design/issues/12083)
- 🐞 Fix `AutoComplete` using `TextArea` as input, height adjust by manual has time delay. [#12117](https://github.com/ant-design/ant-design/issues/12117)
- 🐞 Fix `maskStyle` under `Drawer` not working. [#12125](https://github.com/ant-design/ant-design/pull/12125)[@ryerh](https://github.com/ryerh)
- 🌟 `Popconfirm` can detect whether `onVisibleChange` is triggered by Ok or Cancel buttons. [#8614](https://github.com/ant-design/ant-design/issues/8614)
- 🐞 Fix something table header in `Table` using fixed header and colums display unecessary scorllbar. [#6515](https://github.com/ant-design/ant-design/issues/6515)
- 🐞 Fix `Spin` using `delay` still render at first time. [#12131](https://github.com/ant-design/ant-design/issues/12131)
- Icon related:
- 🐞 Fix `Icon` in `popconfirm` has wrong position.[#12080](https://github.com/ant-design/ant-design/issues/12080)
- 🐞 Add `Icon` missing icons.[#121218](https://github.com/ant-design/ant-design/issues/121218)
- 🐞 Fix `Select` don't have checked icon.[#12054](https://github.com/ant-design/ant-design/issues/12054)
- 🐞 Fix `TreeSelect` clear icon not same as previous verions.[#12124](https://github.com/ant-design/ant-design/issues/12124)
- 🐞 Fix `Icon` in `popconfirm` has wrong position. [#12080](https://github.com/ant-design/ant-design/issues/12080)
- 🐞 Add `Icon` missing icons. [#121218](https://github.com/ant-design/ant-design/issues/121218)
- 🐞 Fix `Select` don't have checked icon. [#12054](https://github.com/ant-design/ant-design/issues/12054)
- 🐞 Fix `TreeSelect` clear icon not same as previous verions. [#12124](https://github.com/ant-design/ant-design/issues/12124)
## 3.9.1
@@ -70,7 +227,7 @@ In addition, our **Ant Design Pro 2.0.0** version has also been released simulta
### Bugfix/Feature
- 🌟 Added Model.open for optional icon dialog. [#11982](https://github.com/ant-design/ant-design/pull/11982) [@hsiehjack](https://github.com/hsiehjack)
- 🌟 Added Modal.open for optional icon dialog. [#11982](https://github.com/ant-design/ant-design/pull/11982) [@hsiehjack](https://github.com/hsiehjack)
- 🌟 Modal.info adds the configuration of `getContainer`. [#11377](https://github.com/ant-design/ant-design/issues/11377)
- 🌟 Improve RangePicker footer UI by merging them.
- 🌟 The Anchor component adds `onClick` property. [#11898](https://github.com/ant-design/ant-design/pull/11898)
@@ -181,7 +338,7 @@ Thanks to 24 contributors who send pull request to 3.8.0!
- Modal
- 🌟 Added `centered` prop to set vertical center position of modal. [#11537](https://github.com/ant-design/ant-design/pull/11537) [@yoyo837](https://github.com/yoyo837)
- 🐞 Fixed that closing all modals when pressing `ESC` once, now they will be closed one by one. [#11394](https://github.com/ant-design/ant-design/issues/11394) [@yoyo837](https://github.com/yoyo837)
- 🐞 Fixed issue resulting title of Model.confirm shows scrollbar again. [#11568](https://github.com/ant-design/ant-design/pull/11568) [@cheshireoctopus](https://github.com/cheshireoctopus)
- 🐞 Fixed issue resulting title of Modal.confirm shows scrollbar again. [#11568](https://github.com/ant-design/ant-design/pull/11568) [@cheshireoctopus](https://github.com/cheshireoctopus)
- 🌟 Progress added `strokeLinecap` to customize shape of edge. [#11547](https://github.com/ant-design/ant-design/pull/11547) [@blatinier](https://github.com/blatinier)
- 🌟 Drawer added `className` and deprecated `wrapClassName`. [#11609](https://github.com/ant-design/ant-design/pull/11609) [@fergiar](https://github.com/fergiar)
@@ -211,7 +368,7 @@ Thanks to 24 contributors who send pull request to 3.8.0!
- 🐞 Fix the arrow buttons of InputNumber showing wrong positon in a fixed table. [#11408](https://github.com/ant-design/ant-design/issues/11408)
- 🐞 Fix issue resulting in Select.Option shows wrong border radius in Select.OptGroup. [6cb6f5c](https://github.com/ant-design/ant-design/commit/6cb6f5c83ed634e67d5b5d0816d11aa0788a74d8)
- 🐞 Fix issue resulting in `onChange` was trigged twice when click the filter icon of Table. [#11164](https://github.com/ant-design/ant-design/issues/11164) [@adybionka](https://github.com/adybionka)
- 🐞 Fix issue resulting title of Model.confirm shows scrollbar on Firefox. [#11432](https://github.com/ant-design/ant-design/issues/11432)
- 🐞 Fix issue resulting title of Modal.confirm shows scrollbar on Firefox. [#11432](https://github.com/ant-design/ant-design/issues/11432)
- TypeScript
- 🐞 Fix type definition of Radio.Group. [#11409](https://github.com/ant-design/ant-design/pull/11409) [@eddiemoore](https://github.com/eddiemoore)
- 🐞 Fix type definition of TreeSelect. [#11442](https://github.com/ant-design/ant-design/pull/11442) [@JribiBelhassen](https://github.com/JribiBelhassen)
@@ -827,6 +984,10 @@ Learn more in the [Ant Design 3.0 announcement post](https://medium.com/ant-desi
### Breaking Changes
> We suggest you upgrade to latest 3.x verison directly.
> Some APIs may be daparated in other 3.x versions which don't described below, please pay attention to warning in browser console and upgrade them.
We provide a [migration tool](https://github.com/ant-design/antd-migration-helper) to help you find deprecated usages in your codebase.
- Card's `noHovering` has been renamed to `hoverable`, and its default value now is `true`.

View File

@@ -15,6 +15,166 @@ timeline: true
---
## 3.10.4
`2018-11-03`
- Modal
- 🌟 增加 less 变量 `@modal-header-bg` 定制 Modal 头部颜色。[#12914](https://github.com/ant-design/ant-design/issues/12914)
- 🐞 修复 maskStyle 在 Modal.method 中无效的问题。[#12688](https://github.com/ant-design/ant-design/issues/12688)
- 🐞 修复 Checkbox 在 IE 11 中丢失勾号的问题。[#12597](https://github.com/ant-design/ant-design/issues/12597)
- 🐞 修复 FormItem 在有帮助信息时高度不一致的问题。[#12803](https://github.com/ant-design/ant-design/issues/12803)
- 🐞 修复 Chrome 下 Divider 在 Popover 中会撑宽 Popover card 的问题。[#10914](https://github.com/ant-design/ant-design/issues/10914)
- 🐞 修复 Avatar 内容在 Popover 中没有对齐的问题。[#10917](https://github.com/ant-design/ant-design/issues/#10917)
- Button
- 🐞 修复 unable to find node on unmounted components 报错问题。[#12843](https://github.com/ant-design/ant-design/issues/12843)
- 🐞 修复 icon margin 样式。[546c59a](https://github.com/ant-design/ant-design/commit/546c59a4c1a6b482afecbcb4a3cb1e385c0bbdb6)
- Table
- 🐞 修复在 Column 中使用 render function 时的排序问题。[#12870](https://github.com/ant-design/ant-design/issues/12870) [#12737](https://github.com/ant-design/ant-design/issues/12737)
- 🐞 修复固定列 border 样式问题。[#9687](https://github.com/ant-design/ant-design/issues/9687)
- TypeScript
- 🐞 修复 Select `onPopupScroll` 属性定义 [#12913](https://github.com/ant-design/ant-design/pull/12913)。
- 🐞 修复 AutoComplete 缺失 `onFocus` 以及 `onBlur` 属性定义。[@muzea](https://github.com/muzea) [#12793](https://github.com/ant-design/ant-design/issues/12793);
## 3.10.3
`2018-10-27`
- 🌟 完善工具方法 `getScroll` 的 TypeScript 定义。[#12784](https://github.com/ant-design/ant-design/pull/12784) [@ztplz](https://github.com/ztplz)
- 🐞 修复 CheckboxGroup 内 Checkbox 没有触发 `onChange` 的问题。[#12642](https://github.com/ant-design/ant-design/issues/12642)
- 🐞 修复 Calendar 组件设置 `validRange` 后选择月份时的问题。[#12675](https://github.com/ant-design/ant-design/issues/12675)
- 🐞 修复 Select 组件设置了 `dropdownMatchSelectWidth` 后多选下拉框的问题。[#12816](https://github.com/ant-design/ant-design/pull/12816) [@hengkx](https://github.com/hengkx)
- 🐞 修复 Card 标题可能会被覆盖的问题。[#12680](https://github.com/ant-design/ant-design/issues/12680)
- 🐞 修复 Form[inline] 提示信息和错误文案被覆盖的问题。[#12725](https://github.com/ant-design/ant-design/issues/12725)
- Table
- 🌟 支持自定义 Table 组件的筛选按钮的背景色。[#12775](https://github.com/ant-design/ant-design/pull/12775) [@ivankravets](https://github.com/ivankravets)
- 🐞 调整 Table 组件的样式细节。[#12682](https://github.com/ant-design/ant-design/issues/12682)
- 🐞 修复在火狐下,当 size="small" 未排序时下边框不显示。[#12840](https://github.com/ant-design/ant-design/issues/12840)
- 🐞 修复大小为 small/middle 时复选框不能对齐的问题。[#12723](https://github.com/ant-design/ant-design/issues/12723)
## 3.10.2
`2018-10-23`
- 📝 翻译[模式-概览](https://ant.design/docs/spec/overview)文档到英文。[#12637](https://github.com/ant-design/ant-design/pull/12637) [@ilanus](https://github.com/ilanus)
- 🛠 DatePicker 组件完善对越南语vi_VN的支持。[#12656](https://github.com/ant-design/ant-design/pull/12656) [@hieuhlc](https://github.com/hieuhlc)
- 🐞 修复 TimePicker 组件在 IE11 下的样式问题。[#12707](https://github.com/ant-design/ant-design/pull/12707) [jinyaqiao1102](https://github.com/jinyaqiao1102)
- 🐞 修复 Popconfirm 组件的 `defaultVisible` 属性的问题。[#12733](https://github.com/ant-design/ant-design/issues/12733)
- 🐞 修复在 Firefox 下 Table 组件头部边框不显示的问题。[#12628](https://github.com/ant-design/ant-design/issues/12628)
- 🐞 组件 Slider 添加 `touch-action: none` 样式修复 Chrome 上可能出现的报错。[#12595](https://github.com/ant-design/ant-design/issues/12595)
- 🐞 修复 Tabs 组件垂直模式下边框条的问题。[#12276](https://github.com/ant-design/ant-design/issues/12276)
- 🐞 修复 Button 组件无内容时垂直不对齐的问题。[#12681](https://github.com/ant-design/ant-design/issues/12681)
- 🐞 修复 Calendar 组件 `locale` 属性不生效的问题。[#12706](https://github.com/ant-design/ant-design/issues/12706)
- 🐞 修复 Checkbox 组件在设置 `indeterminate` 的情况下的样式问题。[#12724](https://github.com/ant-design/ant-design/issues/12724)
- 🐞 修复 `prefixCls` 没有应用到 Popconfirm 组件按钮上的问题。[#12677](https://github.com/ant-design/ant-design/pull/12677) [@concefly](https://github.com/concefly)
- 🐞 修复 Edge 下 Button 组件 `pointer-events:none` 对于 span 不生效的问题。[#12712](https://github.com/ant-design/ant-design/pull/12712) [@dazbo](https://github.com/dazbo)
- Progress
- 🐞 修复 Progress 组件的 `strokeColor` 属性无效的问题。[#12587](https://github.com/ant-design/ant-design/pull/12587) [@lyhper](https://github.com/lyhper)
- 🐞 修复 Progress[type="circle"] 中文本溢出的问题。[#12718](https://github.com/ant-design/ant-design/issues/12718)
- TypeScript
- 🐞 修复 TreeSelect 组件缺少 `treeExpandedKeys``onTreeExpand` 的定义的问题。[#12648](https://github.com/ant-design/ant-design/pull/12648) [@decadef20](https://github.com/decadef20)
- 🐞 修复 TabPaneProps 组件缺少 `key` 属性定义的问题。[682af0d](https://github.com/ant-design/ant-design/commit/682af0d44bf38a7d3e487aa909c46409db163030) [@ztplz](https://github.com/ztplz)
- 🐞 修复 Icon 组件的部分定义问题。[3dbc357](https://github.com/ant-design/ant-design/commit/3dbc357ff2837debbb9b36a25b14be4757297cad)
## 3.10.1
`2018-10-12`
- 🎉 [Ant Design Mobile of Angular](http://ng.mobile.ant.design/)NG-ZORRO-Mobile发布
- 📝 更新 [项目实战](https://ant.design/docs/react/practical-projects-cn) 文档为最新的 umi 技术栈。
- Table
- 🐞 修复未指定排序的列头点击时也会触发排序的问题。[#12515](https://github.com/ant-design/ant-design/issues/12515)
- 🐞 修复列头多余的排序 title 提示。[#12613](https://github.com/ant-design/ant-design/issues/12613)
- 🐞 修复排序和右对齐的列样式错位的问题。[#12552](https://github.com/ant-design/ant-design/issues/12552)
- 🐞 修复一个 columns 定义在 render 内时排序失效的问题。[#12571](https://github.com/ant-design/ant-design/issues/12571)
- 🐞 修复小号表格下排序列的列头背景色。
- 🐞 修复 Table 的选择器在 chrome 下选中样式的重影问题。[5bef1aa](https://github.com/ant-design/ant-design/commit/5bef1aa6c2e792180ef8d53a1f1489376b8e35db)
- 🐞 修复 Form.Item 内的 Table 分页样式。[#12554](https://github.com/ant-design/ant-design/issues/12554)
- DatePicker
- 🐞 调整意大利国际化文案。[#12413](https://github.com/ant-design/ant-design/issues/12413) [@yp](https://github.com/yp)
- 🐞 修复选择完成后选择框没有获取焦点的问题。[#12475](https://github.com/ant-design/ant-design/issues/12475)
- 🐞 修复在 Input.Group 内使用时日期图标消失的问题。[#12536](https://github.com/ant-design/ant-design/issues/12536)
- 🐞 修复 Anchor 中文字边缘被切割的问题。[#12520](https://github.com/ant-design/ant-design/issues/12520)
- 🐞 修复 Drawer 设置无遮罩时依然挡住了页面元素的问题。[#12401](https://github.com/ant-design/ant-design/issues/12401)
- 🐞 修复 AutoComplete 下使用自定义 Input.TextArea 下失效样式丢失的问题。[#12594](https://github.com/ant-design/ant-design/issues/12594)
- 🐞 修复 Modal.confirm 的 `prefixCls` 属性没有透传给 mask 的问题,并调整了默认的 prefixCls 的值为 `ant-model-confirm`。[#12546](https://github.com/ant-design/ant-design/issues/12546)
- 🐞 修复 Input.Group 在 safari 下的一个对齐问题。[#12493](https://github.com/ant-design/ant-design/issues/12493)
- 🐞 修复独自使用 `<Badge />` 时的垂直对齐。[#12419](https://github.com/ant-design/ant-design/issues/12419)
- 🐞 修复 Tree.DirectoryTree 点击切换图标和点击文本时 `onExpand` 参数不一致的问题。[#12567](https://github.com/ant-design/ant-design/issues/12567)
- 🐞 修复在 IE11 下错误聚焦到表单状态图标的问题。[#12524](https://github.com/ant-design/ant-design/pull/12524) [@siyu77](https://github.com/siyu77)
- 🐞 修复多选 Select 多次点击输入框时会反复触发 `onFocus``onBlur` 的问题。[#12281](https://github.com/ant-design/ant-design/issues/12281) [@Frezc ](https://github.com/Frezc)
- 🐞 修复环形 Progress 内文本超长溢出的问题。
- TypeScript
- 🐞 补充 Steps 的 `labelPlacement` 属性定义。[#12575](https://github.com/ant-design/ant-design/pull/12575) [@yueyes](https://github.com/yueyes)
- 🐞 补充 Select.Option 的 `style` 属性定义。[#12609](https://github.com/ant-design/ant-design/pull/12609) [@dimitropoulos](https://github.com/dimitropoulos)
- 🐞 修复 `form.validateFields` 的定义重载问题。[#12538](https://github.com/ant-design/ant-design/pull/12538) [@TomIsion](https://github.com/TomIsion)
- 🐞 补充 AutoComponent 的 `onFocus` `onBlur` 定义。[#12498](https://github.com/ant-design/ant-design/issues/12498)
## 3.10.0
`2018-09-30`
🎉 国庆节快乐
- 📝 更新了[图标](https://ant.design/docs/spec/icon-cn)和[动效](https://ant.design/docs/spec/motion-cn)两篇设计指引。
- 🌟 Upload 组件新增 `openFileDialogOnClick` 属性,用于设置点击组件时是否打开上传对话框。[#12347](https://github.com/ant-design/ant-design/pull/12347) [@hengkx](https://github.com/hengkx)
- 🌟 InputNumber 组件新增 `decimalSeparator` 属性,用于设置自定义的小数点。[#12329](https://github.com/ant-design/ant-design/pull/12329) [@amedora](https://github.com/amedora)
- 🌟 TreeSelect 组件新增 `treeExpandedKeys``onTreeExpand` 属性,用于控制树的展开收起。[#12145](https://github.com/ant-design/ant-design/issues/12145)
- Transfer
- 🌟 新增 `disabled` 属性。[#12066](https://github.com/ant-design/ant-design/issues/12066)
- Modal
- 🌟 新增 `autoFocusButton` 属性,用于指定 Modal 打开时自动获取焦点的按钮。[#11756](https://github.com/ant-design/ant-design/pull/11756) [@erwin-k](https://github.com/erwin-k)
- 🌟 `confirm` 方法的参数新增 `okButtonProps``cancelButtonProps`,用户设置对应按钮的属性。[#12425](https://github.com/ant-design/ant-design/pull/12425) [@Whoaa512](https://github.com/Whoaa512)
- Table
- 🌟 现在可以把 `column.title` 设置为一个方法了。[#11246](https://github.com/ant-design/ant-design/issues/11246)
- 🌟 `onChange` 属性新增第四个参数 `extra`,用于获取当前显示的筛选后的数据。[#12369](https://github.com/ant-design/ant-design/pull/12369)
- 🌟 优化了排序和筛选交互,现在整个列表头都可以点击排序了。[#12264](https://github.com/ant-design/ant-design/pull/12264)
- 🌟 Alert 新增 `icon` 属性,用户设置自定义图标。例子:[自定义图标](https://ant.design/components/alert-cn/#components-alert-demo-custom-icon)
- 🌟 以下组件均新增了 `suffixIcon` 属性,用于设置输入框后面的图标,具体用法可以参考文档。
- Cascader
- DatePicker
- Select
- TreeSelect
- TimePicker
- 🌟 新增 less 变量 [f237eff](https://github.com/ant-design/ant-design/commit/f237effc2a35eb249273f6f2826092a2f9b9db45)
- 🐞 修复 Icon.createFromIconfontCN 方法会自动给 `scriptUrl``https` 的问题。[#12316](https://github.com/ant-design/ant-design/issues/12316)
- 🐞 修复 Row 的 `gutter` 属性,在使用嵌套的 Col 时不生效的问题。[#12320](https://github.com/ant-design/ant-design/pull/12320)
- 🐞 修复 Tree.DirectoryTree 组件在设置的 `expandedKeys` 有初始值时不能正确展开节点的问题。[#12396](https://github.com/ant-design/ant-design/issues/12396)
- 🐞 修复 Transfer 组件使用 `render` 属性返回 ReactNode 时,列表项的 `title` 属性显示错误的问题。[#12399](https://github.com/ant-design/ant-design/issues/12399)
- 🐞 修复 Tooltip 在 CheckboxGroup 上不工作的问题。[#12427](https://github.com/ant-design/ant-design/issues/12427)
- 🐞 修复 Button 组件 loading 状态下在 IE9 里依然可以被点击的问题。[#12466](https://github.com/ant-design/ant-design/pull/12466) [@snail](https://github.com/120216220)
- 🐞 修复 Input.Group 中使用非 Input 组件时,鼠标 hover 时会产生抖动的问题。[#12407](https://github.com/ant-design/ant-design/pull/12407) [@hengkx](https://github.com/hengkx)
- 🐞 修复 TypeScript 类型定义 [#12374](https://github.com/ant-design/ant-design/pull/12374) [#12370](https://github.com/ant-design/ant-design/pull/12370) [#12354](https://github.com/ant-design/ant-design/pull/12354/files) [#12473](https://github.com/ant-design/ant-design/pull/12473)
## 3.9.3
`2018-09-22`
- 🐞 修复 `Select` 组件在 Chrome 下超长文本的渲染延迟。[#11456](https://github.com/ant-design/ant-design/issues/11456) [#11843](https://github.com/ant-design/ant-design/issues/11843)
- 🐞 修复 `RangePicker` 组件中的 `onOpenChange` 非正常数值报错问题。[#12142](https://github.com/ant-design/ant-design/pull/12142)[@leijingdao](https://github.com/leijingdao)
- 🐞 修复 `Carousel` 组件的 `goTo` 方法缺少 `dontAnimate` 参数问题,参数用于关闭转场过渡动画。[#12205](https://github.com/ant-design/ant-design/pull/12205)
- 🐞 修复 `Tabs``tabBar` 的重复类名。[589ba](https://github.com/ant-design/ant-design/commit/589bafd5db92a817c078ead6decdb81e64b2b5a8)[#12051](https://github.com/ant-design/ant-design/issues/12051)
- 🐞 修复 `Card` 组件标题的垂直对齐方式。[#11036](https://github.com/ant-design/ant-design/pull/11036)[#10576](https://github.com/ant-design/ant-design/issues/10576)
- 🐞 修复 `List` 组件刷新后 key 值非预期变化。[#12299](https://github.com/ant-design/ant-design/pull/12299)[@douglasjunior](https://github.com/douglasjunior)
- 🐞 修复 `Table` 组件 `confirmFilter` 方法不能及时更新数据。[954c7](https://github.com/ant-design/ant-design/commit/954c7ecd8ed384a3c67ec8dfb0e0deaa14bbf83b)[#12284](https://github.com/ant-design/ant-design/issues/12284)
- `Menu` 组件相关
- 🐞 修复 `Menu``horizontal` 模式下时出现额外的滚动条。[#12152](https://github.com/ant-design/ant-design/issues/12152)
- 🐞 修复 `Menu` 组件 `openKeys` 有更高的优先级。[#12361](https://github.com/ant-design/ant-design/pull/12361) [@tangjinzhou](https://github.com/tangjinzhou)
- `Upload` 组件相关
- 🐞 修复 `Upload` 上传文件列表中的 `linkProps` ,支持 JSON 格式链接且可传入 `rel``target` `title` 等属性。[efb23](https://github.com/ant-design/ant-design/commit/efb23c1525858114460bfe3bd5fcb18c9f236bdc)
- 🐞 修复 `Upload` 组件多文件类型同时上传时key 重复引用冲突的报错问题。[273fd](https://github.com/ant-design/ant-design/commit/273fd2ea1bca395d61509cc98c3ebbf1c620bf43)[#10953](https://github.com/ant-design/ant-design/issues/10953)
- 图标相关内容
- 🐞 修复 `Upload` 组件关闭图标样式。[#12330](https://github.com/ant-design/ant-design/pull/12330) [#12304](https://github.com/ant-design/ant-design/issues/12304)
- 🐞 修复 `Select` 组件清除图标。[#12196](https://github.com/ant-design/ant-design/pull/12196) [#12181](https://github.com/ant-design/ant-design/issues/12181)
- 🐞 修复 `Icon` svg 对齐问题。[0698c](https://github.com/ant-design/ant-design/commit/0698c8217327224611d4be5fcfd149a355f1c08d)
- 🐞 修复当 `Icon` 组件包含子组件时,`React.Children.only` 报错。[c21ff](https://github.com/ant-design/ant-design/commit/c21ff5251d1ff0f00d7f283dd377a7b13eec21ee)
- 🐞 修复 `Notification` 组件没有描述时图标对齐问题。[e6579](https://github.com/ant-design/ant-design/commit/e657985cc35359fb813a2bd68be8c3afbe75c95a)
- 🐞 修复 `Table` 组件的排序图标对齐问题。[c935d](https://github.com/ant-design/ant-design/commit/c935d53b713afb3ec314133d749ca4e29e0c1ee5)
- TypeScript
- 🐞 修复 `Message` 组件中 `MessageApi` 类型定义。[e82d7](https://github.com/ant-design/ant-design/commit/e82d7a9c095317d62b054fcf7c2d6666ba54660d)[#12137](https://github.com/ant-design/ant-design/issues/12137)
- 🐞 修复 `Tree` onDrop 类型定义。[e5827](https://github.com/ant-design/ant-design/commit/e58273dccf59d58862e8bab0da36c7065e1c1044)[#12269](https://github.com/ant-design/ant-design/issues/12269)
- 🐞 `TreeSelect` 组件中 `onChange` 方法中添加 `extra` 类型定义。[#12243](https://github.com/ant-design/ant-design/pull/12243)[@jardicc](https://github.com/jardicc)
## 3.9.2
`2018-09-08`
@@ -22,7 +182,7 @@ timeline: true
- 🐞 修复 `Card` 组件 `tab-card` 下嵌套 `Card` 导致标题边距偏窄的样式问题。[#12083](https://github.com/ant-design/ant-design/issues/12083)
- 🐞 修复 `AutoComplete` 组件设置自定输入组件为 `TextArea` 时,手工调整高度的延迟问题。[#12117](https://github.com/ant-design/ant-design/issues/12117)
- 🐞 修复 `Drawer` 组件 `maskStyle` 属性无效的问题。[#12125](https://github.com/ant-design/ant-design/pull/12125)[@ryerh](https://github.com/ryerh)
- 🌟 `popconfirm` 添加 `onVisibleChange` 支持。[#8614](https://github.com/ant-design/ant-design/issues/8614)
- 🌟 `Popconfirm` 可以在 `onVisibleChange` 里判断是否触发自确定取消按钮。[#8614](https://github.com/ant-design/ant-design/issues/8614)
- 🐞 修复 `Table` 组件固定头和列时,表头会出现滚动条的问题。[#6515](https://github.com/ant-design/ant-design/issues/6515)
- 🐞 修复 `Spin` 组件设置 `delay` 时初始化仍会渲染的问题。[#12131](https://github.com/ant-design/ant-design/issues/12131)
- 图标相关内容:
@@ -36,7 +196,7 @@ timeline: true
`2018-09-03`
- 🐞 修复 `Icon` 组件在被 `Tooltip` 组件包裹时,无法显示 `Tooltip` 内容的问题。[#12005](https://github.com/ant-design/ant-design/issues/12005)
- 🐞 修复 `InputNumber` 组件的向上图标显示不正常的问题。[#12035](https://github.com/ant-design/ant-design/issues/12035)
- 🐞 修复 `InputNumber` 组件的向上图标显示不正常的问题。[#12035](https://github.com/ant-design/ant-design/issues/12035)
- 🐞 修复 `Modal` 组件的错误确认框不显示图标的问题。[#12026](https://github.com/ant-design/ant-design/issues/12026)
- 🐞 修复 `Popconfirm` 组件中的图标显示位置不正确的问题。[#12026](https://github.com/ant-design/ant-design/issues/12026)
- 🐞 修复 `Card` 组件中的 `Actions` 图标显示位置不正确的问题。[#12016](https://github.com/ant-design/ant-design/pull/12016)
@@ -69,7 +229,7 @@ timeline: true
### 组件修复/功能增强:
- 🌟 新增 Model.open 方法,用于可自定义图标的快捷对话框。[#11982](https://github.com/ant-design/ant-design/pull/11982) [@hsiehjack](https://github.com/hsiehjack)
- 🌟 新增 Modal.open 方法,用于可自定义图标的快捷对话框。[#11982](https://github.com/ant-design/ant-design/pull/11982) [@hsiehjack](https://github.com/hsiehjack)
- 🌟 Modal.info 增加 `getContainer` 的配置。[#11377](https://github.com/ant-design/ant-design/issues/11377)
- 🌟 合并优化了 RangePicker 的日历页脚 UI。
- 🌟 Anchor 组件增加 `onClick` 属性。[#11898](https://github.com/ant-design/ant-design/pull/11898)
@@ -178,7 +338,7 @@ timeline: true
- Modal
- 🌟 新增 `centered` 属性用于设置对话框垂直居中。[#11537](https://github.com/ant-design/ant-design/pull/11537) [@yoyo837](https://github.com/yoyo837)
- 🐞 修复了多个对话框会被 ESC 一次性全部关掉的问题。[#11394](https://github.com/ant-design/ant-design/issues/11394) [@yoyo837](https://github.com/yoyo837)
- 🐞 再次修复 Model.confirm 的标题区域某些情况下会显示滚动条的问题。[#11568](https://github.com/ant-design/ant-design/pull/11568) [@cheshireoctopus](https://github.com/cheshireoctopus)
- 🐞 再次修复 Modal.confirm 的标题区域某些情况下会显示滚动条的问题。[#11568](https://github.com/ant-design/ant-design/pull/11568) [@cheshireoctopus](https://github.com/cheshireoctopus)
- 🌟 Progress 新增 `strokeLinecap` 属性用于调整边缘形状。[#11547](https://github.com/ant-design/ant-design/pull/11547) [@blatinier](https://github.com/blatinier)
- 🌟 Drawer 新增 `className` 并废弃 `wrapClassName`。[#11609](https://github.com/ant-design/ant-design/pull/11609) [@fergiar](https://github.com/fergiar)
@@ -208,7 +368,7 @@ timeline: true
- 🐞 修复 InputNumber 的箭头按钮在使用了固定列的 Table 里显示错位的问题。[#11408](https://github.com/ant-design/ant-design/issues/11408)
- 🐞 修复 Select 使用分组时 Option 的圆角显示错误。[6cb6f5c](https://github.com/ant-design/ant-design/commit/6cb6f5c83ed634e67d5b5d0816d11aa0788a74d8)
- 🐞 修复 Table 第一次点击过滤按钮的时候 `onChange` 会被触发两次的问题。[#11164](https://github.com/ant-design/ant-design/issues/11164) [@adybionka](https://github.com/adybionka)
- 🐞 修复 Model.confirm 的标题在 Firefox 下会显示滚动条的问题。[#11432](https://github.com/ant-design/ant-design/issues/11432)
- 🐞 修复 Modal.confirm 的标题在 Firefox 下会显示滚动条的问题。[#11432](https://github.com/ant-design/ant-design/issues/11432)
- TypeScript
- 🐞 修复 Radio.Group 类型定义。[#11409](https://github.com/ant-design/ant-design/pull/11409) [@eddiemoore](https://github.com/eddiemoore)
- 🐞 修复 TreeSelect 类型定义。[#11442](https://github.com/ant-design/ant-design/pull/11442) [@JribiBelhassen](https://github.com/JribiBelhassen)
@@ -249,7 +409,7 @@ timeline: true
- 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)
- Table 组件升级 `rc-table``6.2.2`。[f2fddff](https://github.com/ant-design/ant-design/commit/f2fddff3fd0d6b36e8e6d8ee06bfcbcc85ead4f0)
- 🌟 新增 `expanded` 作为 `expandedRowRender` 属性函数的第四个参数,用于获取当前行是否展开。[#10379](https://github.com/ant-design/ant-design/issues/10379)
- 🌟 新增无须使用完全受控组件也能覆盖筛选菜单的能力。[59cc3a8](https://github.com/ant-design/ant-design/commit/59cc3a8b6c643f7206feedf2dc2c7154296ba3e3) [@chrvadala](https://github.com/chrvadala)
- 🌟 `filterIcon` 属性支持作为一个返回 `ReactNode` 的函数。[1af4392](https://github.com/ant-design/ant-design/commit/1af4392ae9fbdaa6fcfbf2f0de5413100ef4a84a)
@@ -366,7 +526,7 @@ timeline: true
- 🐞 使 `Badge[status]` 支持 `Tooltip`。[#10626](https://github.com/ant-design/ant-design/issues/10626)
- 🐞 修复父元素使用 `text-align` 会影响 `Spin` 的问题。[#10643](https://github.com/ant-design/ant-design/pull/10643) [@wmzhong](https://github.com/wmzhong)
- 💄 `Table` 换行从 `break-all` 改为 `break-word`。[#10655](https://github.com/ant-design/ant-design/pull/10655) [@clinyong](https://github.com/clinyong)
- 🌟 `Search` 在未定义 `enterButton` 时,点击搜索图标将触发 `onSearch` [36ffe7e1](https://github.com/ant-design/ant-design/commit/36ffe7e1dc9d9473c8c68168ab79b7a03a604702)
- 🌟 `Search` 在未定义 `enterButton` 时,点击搜索图标将触发 `onSearch`。[36ffe7e1](https://github.com/ant-design/ant-design/commit/36ffe7e1dc9d9473c8c68168ab79b7a03a604702)
## 3.5.3
@@ -597,7 +757,7 @@ timeline: true
- 🌟 添加 `Pagination` 字体变量。 [#9351](https://github.com/ant-design/ant-design/issues/9351)
- 🌟 添加 `Badge` 字重变量。 [#9352](https://github.com/ant-design/ant-design/issues/9352)
- 🐞 修复 `Table` 当自定义 `loading.indicator`不显示emptyText。 [#9355](https://github.com/ant-design/ant-design/issues/9355)
- 🐞 修复 `Form.create` [#9331](https://github.com/ant-design/ant-design/issues/9331)
- 🐞 修复 `Form.create` 。[#9331](https://github.com/ant-design/ant-design/issues/9331)
- 🐞 回滚 `Table``column.dataIndex` 的 TypeScript 定义。 [#9393](https://github.com/ant-design/ant-design/issues/9393)
- 🐞 修复 `Layout` 中 sider 高度不足时,最后一个菜单无法显示。 [#9398](https://github.com/ant-design/ant-design/issues/9398) [@MJ111](https://github.com/MJ111)
- 🐞 修复 `Badge` dot 模式问题。 [#9359](https://github.com/ant-design/ant-design/issues/9359) [@khayalan-mathew](https://github.com/khayalan-mathew)
@@ -830,6 +990,8 @@ timeline: true
> 如果你从 2.x 升级到 3.x建议直接升级到 3.x 的最新版本。
> 3.x 后续的版本可能已经废弃了一些下面没有提到的改动,请参考控制台的警告提示相应升级。
此版本有部分不兼容的改动,升级时确保修改相应的使用代码。另外由于人肉查找代码中的废弃用法过于低效,所以我们提供了 [antd-migration-helper](https://github.com/ant-design/antd-migration-helper) 用于扫描代码中的废弃用法。
- Card 的 `noHovering` 属性重命名为 `hoverable`,且默认值改为 `true`

View File

@@ -10,20 +10,21 @@
一套企业级的 UI 设计语言和 React 实现。
[![](https://img.shields.io/travis/ant-design/ant-design/master.svg?style=flat-square)](https://travis-ci.org/ant-design/ant-design)
[![CircleCI](https://circleci.com/gh/ant-design/ant-design/tree/master.svg?style=svg)](https://circleci.com/gh/ant-design/ant-design/tree/master)
[![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)
[![Dependencies](https://img.shields.io/david/ant-design/ant-design.svg)](https://david-dm.org/ant-design/ant-design)
[![DevDependencies](https://img.shields.io/david/dev/ant-design/ant-design.svg)](https://david-dm.org/ant-design/ant-design?type=dev)
[![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://www.npmtrends.com/antd)
[![NPM downloads](http://img.shields.io/npm/dm/antd.svg?style=flat-square)](http://npmjs.com/antd)
[![Percentage of issues still open](http://isitmaintained.com/badge/open/ant-design/ant-design.svg)](http://isitmaintained.com/project/ant-design/ant-design "Percentage of issues still open")
[![Gitter](https://badges.gitter.im/ant-design/ant-design-english.svg)](https://gitter.im/ant-design/ant-design-english?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) (English)
[![Join the chat at https://gitter.im/ant-design/ant-design](https://img.shields.io/gitter/room/ant-design/ant-design.svg?style=flat-square)](https://gitter.im/ant-design/ant-design?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)(中文)
[![Gitter](https://badges.gitter.im/ant-design/ant-design-english.svg)](https://gitter.im/ant-design/ant-design-english?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)(🇺🇸)
[![Join the chat at https://gitter.im/ant-design/ant-design](https://img.shields.io/gitter/room/ant-design/ant-design.svg?style=flat-square)](https://gitter.im/ant-design/ant-design?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)(🇨🇳)
</div>
[![](https://cdn-images-1.medium.com/max/2000/1*NIlj0-TdLMbo_hzSBP8tmg.png)](http://ant.design/index-cn)
[English](./README.md) | 简体中文
## ✨ 特性
@@ -85,7 +86,7 @@ import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
- [设计规范速查手册](https://github.com/ant-design/ant-design/wiki/Ant-Design-%E8%AE%BE%E8%AE%A1%E5%9F%BA%E7%A1%80%E7%AE%80%E7%89%88)
- [开发者说明](https://github.com/ant-design/ant-design/wiki/Development)
- [版本发布规则](https://github.com/ant-design/ant-design/wiki/%E8%BD%AE%E5%80%BC%E8%A7%84%E5%88%99%E5%92%8C%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B)
- [常见问题](https://github.com/ant-design/ant-design/wiki/FAQ)
- [常见问题](https://ant.design/docs/react/faq-cn)
- [CodeSandbox 模板](https://u.ant.design/codesandbox-repro) for bug reports
- [Awesome Ant Design](https://github.com/websemantics/awesome-ant-design)
- [定制主题](http://ant.design/docs/react/customize-theme-cn)

View File

@@ -10,25 +10,26 @@
An enterprise-class UI design language and React-based implementation.
[![](https://img.shields.io/travis/ant-design/ant-design/master.svg?style=flat-square)](https://travis-ci.org/ant-design/ant-design)
[![CircleCI](https://circleci.com/gh/ant-design/ant-design/tree/master.svg?style=svg)](https://circleci.com/gh/ant-design/ant-design/tree/master)
[![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)
[![Dependencies](https://img.shields.io/david/ant-design/ant-design.svg)](https://david-dm.org/ant-design/ant-design)
[![DevDependencies](https://img.shields.io/david/dev/ant-design/ant-design.svg)](https://david-dm.org/ant-design/ant-design?type=dev)
[![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://www.npmtrends.com/antd)
[![NPM downloads](http://img.shields.io/npm/dm/antd.svg?style=flat-square)](http://npmjs.com/antd)
[![Percentage of issues still open](http://isitmaintained.com/badge/open/ant-design/ant-design.svg)](http://isitmaintained.com/project/ant-design/ant-design "Percentage of issues still open")
[![Gitter](https://badges.gitter.im/ant-design/ant-design-english.svg)](https://gitter.im/ant-design/ant-design-english?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) (English)
[![Join the chat at https://gitter.im/ant-design/ant-design](https://img.shields.io/gitter/room/ant-design/ant-design.svg?style=flat-square)](https://gitter.im/ant-design/ant-design?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)(中文)
[![Gitter](https://badges.gitter.im/ant-design/ant-design-english.svg)](https://gitter.im/ant-design/ant-design-english?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)(🇺🇸)
[![Join the chat at https://gitter.im/ant-design/ant-design](https://img.shields.io/gitter/room/ant-design/ant-design.svg?style=flat-square)](https://gitter.im/ant-design/ant-design?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)(🇨🇳)
</div>
[![](https://cdn-images-1.medium.com/max/2000/1*NIlj0-TdLMbo_hzSBP8tmg.png)](http://ant.design)
English | [简体中文](./README-zh_CN.md)
## ✨ Features
- An enterprise-class UI design system for desktop applications.
- 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.
@@ -84,7 +85,7 @@ See [i18n](http://ant.design/docs/react/i18n).
- [Motion](https://motion.ant.design)
- [Developer Instruction](https://github.com/ant-design/ant-design/wiki/Development)
- [Versioning Release Note](https://github.com/ant-design/ant-design/wiki/%E8%BD%AE%E5%80%BC%E8%A7%84%E5%88%99%E5%92%8C%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B)
- [FAQ](https://github.com/ant-design/ant-design/wiki/FAQ)
- [FAQ](https://ant.design/docs/react/faq)
- [CodeSandbox Template](https://u.ant.design/codesandbox-repro) for bug reports
- [Awesome Ant Design](https://github.com/websemantics/awesome-ant-design)
- [Customize Theme](http://ant.design/docs/react/customize-theme)

View File

@@ -1,4 +1,4 @@
export default function getScroll(target: any, top: boolean): number {
export default function getScroll(target: HTMLElement | Window | null, top: boolean): number {
if (typeof window === 'undefined') {
return 0;
}
@@ -7,10 +7,10 @@ export default function getScroll(target: any, top: boolean): number {
const method = top ? 'scrollTop' : 'scrollLeft';
const isWindow = target === window;
let ret = isWindow ? target[prop] : target[method];
let ret = isWindow ? (target as Window)[prop] : (target as HTMLElement)[method];
// ie6,7,8 standard mode
if (isWindow && typeof ret !== 'number') {
ret = window.document.documentElement[method];
ret = (document.documentElement as HTMLElement)[method];
}
return ret;

View File

@@ -1,4 +1,4 @@
const isNumeric = (value: any): boolean => {
const isNumeric = <T extends number>(value: any): value is T => {
return !isNaN(parseFloat(value)) && isFinite(value);
};

View File

@@ -70,11 +70,16 @@ export default class Affix extends React.Component<AffixProps, AffixState> {
target: PropTypes.func,
};
scrollEvent: any;
resizeEvent: any;
timeout: any;
state: AffixState = {
affixStyle: undefined,
placeholderStyle: undefined,
};
events = [
private timeout: number;
private eventHandlers: Record<string, any> = {};
private fixedNode: HTMLElement;
private placeholderNode: HTMLElement;
private readonly events = [
'resize',
'scroll',
'touchstart',
@@ -84,19 +89,7 @@ export default class Affix extends React.Component<AffixProps, AffixState> {
'load',
];
eventHandlers: {
[key: string]: any;
} = {};
state: AffixState = {
affixStyle: undefined,
placeholderStyle: undefined,
};
private fixedNode: HTMLElement;
private placeholderNode: HTMLElement;
setAffixStyle(e: any, affixStyle: React.CSSProperties | null) {
setAffixStyle(e: Event, affixStyle: React.CSSProperties | null) {
const { onChange = noop, target = getDefaultTarget } = this.props;
const originalAffixStyle = this.state.affixStyle;
const isWindow = target() === window;
@@ -123,7 +116,7 @@ export default class Affix extends React.Component<AffixProps, AffixState> {
this.setState({ placeholderStyle: placeholderStyle as React.CSSProperties });
}
syncPlaceholderStyle(e: any) {
syncPlaceholderStyle(e: Event) {
const { affixStyle } = this.state;
if (!affixStyle) {
return;
@@ -139,7 +132,7 @@ export default class Affix extends React.Component<AffixProps, AffixState> {
}
@throttleByAnimationFrameDecorator()
updatePosition(e: any) {
updatePosition(e: Event) {
let { offsetTop, offsetBottom, offset, target = getDefaultTarget } = this.props;
const targetNode = target();
@@ -231,13 +224,13 @@ export default class Affix extends React.Component<AffixProps, AffixState> {
this.setTargetEventListeners(nextProps.target!);
// Mock Event object.
this.updatePosition({});
this.updatePosition({} as Event);
}
if (
this.props.offsetTop !== nextProps.offsetTop ||
this.props.offsetBottom !== nextProps.offsetBottom
) {
this.updatePosition({});
this.updatePosition({} as Event);
}
}

View File

@@ -244,6 +244,272 @@ exports[`renders ./components/alert/demo/close-text.md correctly 1`] = `
</div>
`;
exports[`renders ./components/alert/demo/custom-icon.md correctly 1`] = `
<div>
<div
class="ant-alert ant-alert-success ant-alert-no-icon"
data-show="true"
>
<span
class="ant-alert-message"
>
showIcon = false
</span>
<span
class="ant-alert-description"
/>
</div>
<div
class="ant-alert ant-alert-success"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Success Tips
</span>
<span
class="ant-alert-description"
/>
</div>
<div
class="ant-alert ant-alert-info"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Informational Notes
</span>
<span
class="ant-alert-description"
/>
</div>
<div
class="ant-alert ant-alert-warning"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Warning
</span>
<span
class="ant-alert-description"
/>
</div>
<div
class="ant-alert ant-alert-error"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Error
</span>
<span
class="ant-alert-description"
/>
</div>
<div
class="ant-alert ant-alert-success ant-alert-with-description"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Success Tips
</span>
<span
class="ant-alert-description"
>
Detailed description and advices about successful copywriting.
</span>
</div>
<div
class="ant-alert ant-alert-info ant-alert-with-description"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Informational Notes
</span>
<span
class="ant-alert-description"
>
Additional description and informations about copywriting.
</span>
</div>
<div
class="ant-alert ant-alert-warning ant-alert-with-description"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Warning
</span>
<span
class="ant-alert-description"
>
This is a warning notice about copywriting.
</span>
</div>
<div
class="ant-alert ant-alert-error ant-alert-with-description"
data-show="true"
>
<i
class="anticon anticon-smile ant-alert-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
<span
class="ant-alert-message"
>
Error
</span>
<span
class="ant-alert-description"
>
This is an error message about copywriting.
</span>
</div>
</div>
`;
exports[`renders ./components/alert/demo/description.md correctly 1`] = `
<div>
<div

View File

@@ -0,0 +1,59 @@
---
order: 12
debug: true
title:
zh-CN: 自定义图标
en-US: Custom Icon
---
## zh-CN
可口的图标让信息类型更加醒目。
## en-US
Decent icon make information more clear and more friendly.
````jsx
import { Alert, Icon } from 'antd';
const icon = <Icon type="smile" />;
ReactDOM.render(
<div>
<Alert icon={icon} message="showIcon = false" type="success" />
<Alert icon={icon} message="Success Tips" type="success" showIcon />
<Alert icon={icon} message="Informational Notes" type="info" showIcon />
<Alert icon={icon} message="Warning" type="warning" showIcon />
<Alert icon={icon} message="Error" type="error" showIcon />
<Alert
icon={icon}
message="Success Tips"
description="Detailed description and advices about successful copywriting."
type="success"
showIcon
/>
<Alert
icon={icon}
message="Informational Notes"
description="Additional description and informations about copywriting."
type="info"
showIcon
/>
<Alert
icon={icon}
message="Warning"
description="This is a warning notice about copywriting."
type="warning"
showIcon
/>
<Alert
icon={icon}
message="Error"
description="This is an error message about copywriting."
type="error"
showIcon
/>
</div>,
mountNode);
````

View File

@@ -7,7 +7,7 @@ title:
## zh-CN
平滑、自然的卸载提示
平滑、自然的卸载提示
## en-US

View File

@@ -20,7 +20,7 @@ Alert component for feedback.
| closable | Whether Alert can be closed | boolean | - |
| closeText | Close text to show | string\|ReactNode | - |
| description | Additional content of Alert | string\|ReactNode | - |
| iconType | Icon type, effective when `showIcon` is `true` | string | - |
| icon | Custom icon, effective when `showIcon` is `true` | ReactNode | - |
| message | Content of Alert | string\|ReactNode | - |
| showIcon | Whether to show icon | boolean | false, in `banner` mode default is true |
| type | Type of Alert styles, options: `success`, `info`, `warning`, `error` | string | `info`, in `banner` mode default is `warning` |

View File

@@ -31,19 +31,23 @@ export interface AlertProps {
prefixCls?: string;
className?: string;
banner?: boolean;
icon?: React.ReactNode;
}
export default class Alert extends React.Component<AlertProps, any> {
constructor(props: AlertProps) {
super(props);
this.state = {
closing: true,
closed: false,
};
}
export interface AlertState {
closing: boolean,
closed: boolean
}
export default class Alert extends React.Component<AlertProps, AlertState> {
state: AlertState = {
closing: true,
closed: false,
};
handleClose = (e: React.MouseEvent<HTMLAnchorElement>) => {
e.preventDefault();
let dom = ReactDOM.findDOMNode(this) as HTMLElement;
const dom = ReactDOM.findDOMNode(this) as HTMLElement;
dom.style.height = `${dom.offsetHeight}px`;
// Magic code
// 重复一次后才能正确设置 height
@@ -54,6 +58,7 @@ export default class Alert extends React.Component<AlertProps, any> {
});
(this.props.onClose || noop)(e);
}
animationEnd = () => {
this.setState({
closed: true,
@@ -61,10 +66,11 @@ export default class Alert extends React.Component<AlertProps, any> {
});
(this.props.afterClose || noop)();
}
render() {
let {
closable, description, type, prefixCls = 'ant-alert', message, closeText, showIcon, banner,
className = '', style, iconType,
className = '', style, iconType, icon,
} = this.props;
// banner模式默认有 Icon
@@ -73,6 +79,8 @@ export default class Alert extends React.Component<AlertProps, any> {
type = banner && type === undefined ? 'warning' : type || 'info';
let iconTheme: ThemeType = 'filled';
// should we give a warning?
// warning(!iconType, `The property 'iconType' is deprecated. Use the property 'icon' instead.`);
if (!iconType) {
switch (type) {
case 'success':
@@ -97,8 +105,7 @@ export default class Alert extends React.Component<AlertProps, any> {
}
}
let alertCls = classNames(prefixCls, {
[`${prefixCls}-${type}`]: true,
const alertCls = classNames(prefixCls, `${prefixCls}-${type}`, {
[`${prefixCls}-close`]: !this.state.closing,
[`${prefixCls}-with-description`]: !!description,
[`${prefixCls}-no-icon`]: !showIcon,
@@ -118,7 +125,19 @@ export default class Alert extends React.Component<AlertProps, any> {
const dataOrAriaProps = getDataOrAriaProps(this.props);
const iconNode = <Icon className={`${prefixCls}-icon`} type={iconType} theme={iconTheme} />;
const iconNode = icon && (
React.isValidElement<{ className?: string }>(icon)
? React.cloneElement(
icon,
{
className: classNames({
[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 : (
<Animate

View File

@@ -21,7 +21,7 @@ title: Alert
| closable | 默认不显示关闭按钮 | boolean | 无 |
| closeText | 自定义关闭按钮 | string\|ReactNode | 无 |
| description | 警告提示的辅助性文字介绍 | string\|ReactNode | 无 |
| iconType | 自定义图标类型`showIcon``true` 时有效 | string | - |
| icon | 自定义图标,`showIcon``true` 时有效 | ReactNode | - |
| message | 警告提示内容 | string\|ReactNode | 无 |
| showIcon | 是否显示辅助图标 | boolean | false`banner` 模式下默认值为 true |
| type | 指定警告提示的样式,有四种选择 `success``info``warning``error` | string | `info``banner` 模式下默认值为 `warning` |

View File

@@ -30,34 +30,34 @@
}
&-success {
border: @border-width-base @border-style-base ~`colorPalette("@{success-color}", 3)`;
background-color: ~`colorPalette("@{success-color}", 1)`;
border: @border-width-base @border-style-base @alert-success-border-color;
background-color: @alert-success-bg-color;
.@{alert-prefix-cls}-icon {
color: @success-color;
color: @alert-success-icon-color;
}
}
&-info {
border: @border-width-base @border-style-base ~`colorPalette("@{info-color}", 3)`;
background-color: ~`colorPalette("@{info-color}", 1)`;
border: @border-width-base @border-style-base @alert-info-border-color;
background-color: @alert-info-bg-color;
.@{alert-prefix-cls}-icon {
color: @info-color;
color: @alert-info-icon-color;
}
}
&-warning {
border: @border-width-base @border-style-base ~`colorPalette("@{warning-color}", 3)`;
background-color: ~`colorPalette("@{warning-color}", 1)`;
border: @border-width-base @border-style-base @alert-warning-border-color;
background-color: @alert-warning-bg-color;
.@{alert-prefix-cls}-icon {
color: @warning-color;
color: @alert-warning-icon-color;
}
}
&-error {
border: @border-width-base @border-style-base ~`colorPalette("@{error-color}", 3)`;
background-color: ~`colorPalette("@{error-color}", 1)`;
border: @border-width-base @border-style-base @alert-error-border-color;
background-color: @alert-error-bg-color;
.@{alert-prefix-cls}-icon {
color: @error-color;
color: @alert-error-icon-color;
}
}

View File

@@ -25,7 +25,7 @@ function getOffsetTop(element: HTMLElement, container: AnchorContainer): number
if (rect.width || rect.height) {
if (container === window) {
container = element.ownerDocument.documentElement;
container = element.ownerDocument!.documentElement!;
return rect.top - container.clientTop;
}
return rect.top - (container as HTMLElement).getBoundingClientRect().top;

View File

@@ -51,8 +51,8 @@
}
&-link {
padding: 8px 0 8px 16px;
line-height: 1;
padding: 7px 0 7px 16px;
line-height: 1.143;
&-title {
display: block;
@@ -62,7 +62,7 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom: 8px;
margin-bottom: 6px;
&:only-child {
margin-bottom: 0;
@@ -75,7 +75,7 @@
}
&-link &-link {
padding-top: 6px;
padding-bottom: 6px;
padding-top: 5px;
padding-bottom: 5px;
}
}

View File

@@ -129,7 +129,7 @@ exports[`renders ./components/auto-complete/demo/certain-category.md correctly 1
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -440,7 +440,7 @@ exports[`renders ./components/auto-complete/demo/uncertain-category.md correctly
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>

View File

@@ -38,6 +38,9 @@ const dataSource = ['12345', '23456', '34567'];
| onFocus | Called when entering the component | function() | - |
| onSearch | Called when searching items. | function(value) | - |
| onSelect | Called when a option is selected. param is option's value and option instance. | function(value, option) | - |
| defaultOpen | Initial open state of dropdown | boolean | - |
| open | Controlled open state of dropdown | boolean | - |
| onDropdownVisibleChange | Call when dropdown open | function(open) | - |
## Methods

View File

@@ -31,6 +31,8 @@ export interface AutoCompleteProps extends AbstractSelectProps {
optionLabelProp?: string;
onChange?: (value: SelectValue) => void;
onSelect?: (value: SelectValue, option: Object) => any;
onBlur?: (value: SelectValue) => void;
onFocus?: () => void;
children?: ValidInputElement |
React.ReactElement<OptionProps> |
Array<React.ReactElement<OptionProps>>;

View File

@@ -39,6 +39,9 @@ const dataSource = ['12345', '23456', '34567'];
| onFocus | 获得焦点时的回调 | function() | - |
| onSearch | 搜索补全项的时候调用 | function(value) | 无 |
| onSelect | 被选中时调用,参数为选中项的 value 值 | function(value, option) | 无 |
| defaultOpen | 是否默认展开下拉菜单 | boolean | - |
| open | 是否展开下拉菜单 | boolean | - |
| onDropdownVisibleChange | 展开下拉菜单的回调 | function(open) | - |
## 方法

View File

@@ -52,6 +52,9 @@
&:hover {
.hover;
}
&[disabled] {
.disabled;
}
}
&-lg {

View File

@@ -22,7 +22,7 @@ describe('Avatar Render', () => {
expect(children.length).toBe(1);
expect(children.text()).toBe('Fallback');
expect(wrapper.instance().setScale).toBeCalled();
expect(div.querySelector('.ant-avatar-string').style.transform).toBe('scale(0.5)');
expect(div.querySelector('.ant-avatar-string').style.transform).toContain('scale(0.5)');
wrapper.detach();
global.document.body.removeChild(div);

View File

@@ -125,13 +125,11 @@ export default class Avatar extends React.Component<AvatarProps, AvatarState> {
} else {
const childrenNode = this.avatarChildren;
if (childrenNode || scale !== 1) {
const transformString = `scale(${scale}) translateX(-50%)`;
const childrenStyle: React.CSSProperties = {
msTransform: `scale(${scale})`,
WebkitTransform: `scale(${scale})`,
transform: `scale(${scale})`,
position: 'absolute',
display: 'inline-block',
left: `calc(50% - ${Math.round(childrenNode.offsetWidth / 2)}px)`,
msTransform: transformString,
WebkitTransform: transformString,
transform: transformString,
};
const sizeChildrenStyle: React.CSSProperties =
typeof size === 'number' ? {

View File

@@ -17,7 +17,7 @@ title: Avatar
| --- | --- | --- | --- |
| icon | 设置头像的图标类型,参考 `Icon` 组件 | string | - |
| shape | 指定头像的形状 | Enum{ 'circle', 'square' } | `circle` |
| size | 设置头像的大小 | Enum{ 'large', 'small', 'default' } | `default` |
| size | 设置头像的大小 | number \| Enum{ 'large', 'small', 'default' } | `default` |
| src | 图片类头像的资源地址 | string | - |
| alt | 图像无法显示时的替代文本 | string | - |
| onError | 图片加载失败的事件,返回 false 会关闭组件默认的 fallback 行为 | () => boolean | - |

View File

@@ -49,6 +49,12 @@
line-height: @size;
}
&-string {
position: absolute;
left: 50%;
transform-origin: 0 center;
}
&.@{avatar-prefix-cls}-icon {
font-size: @font-size;
}

View File

@@ -49,7 +49,7 @@ export default class BackTop extends React.Component<BackTopProps, any> {
const getTarget = this.props.target || getDefaultTarget;
const targetNode = getTarget();
if (targetNode === window) {
return window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
return window.pageYOffset || document.body.scrollTop || document.documentElement!.scrollTop;
}
return (targetNode as HTMLElement).scrollTop;
}
@@ -76,7 +76,7 @@ export default class BackTop extends React.Component<BackTopProps, any> {
const targetNode = getTarget();
if (targetNode === window) {
document.body.scrollTop = value;
document.documentElement.scrollTop = value;
document.documentElement!.scrollTop = value;
} else {
(targetNode as HTMLElement).scrollTop = value;
}

View File

@@ -425,15 +425,17 @@ exports[`renders ./components/badge/demo/change.md correctly 1`] = `
data-show="true"
/>
</span>
<span
<button
aria-checked="true"
checked=""
class="ant-switch ant-switch-checked"
tabindex="0"
role="switch"
type="button"
>
<span
class="ant-switch-inner"
/>
</span>
</button>
</div>
</div>
`;

View File

@@ -38,5 +38,6 @@ ReactDOM.render(
border-radius: 4px;
background: #eee;
display: inline-block;
vertical-align: middle;
}
</style>

View File

@@ -85,7 +85,7 @@ export default class Badge extends React.Component<BadgeProps, any> {
[`${prefixCls}-not-a-wrapper`]: !children,
});
const styleWithOffset = offset ? {
marginLeft: offset[0],
right: -parseInt(offset[0] as string, 10),
marginTop: offset[1],
...style,
} : style;

View File

@@ -9,7 +9,6 @@
position: relative;
display: inline-block;
line-height: 1;
vertical-align: middle;
color: unset;
&-count {
@@ -112,14 +111,18 @@
animation-fill-mode: both;
}
&-not-a-wrapper .@{ant-prefix}-scroll-number {
top: auto;
display: block;
position: relative;
}
&-not-a-wrapper {
vertical-align: middle;
&-not-a-wrapper .@{badge-prefix-cls}-count {
transform: none;
.@{ant-prefix}-scroll-number {
top: auto;
display: block;
position: relative;
}
.@{badge-prefix-cls}-count {
transform: none;
}
}
}

View File

@@ -22,8 +22,6 @@ A breadcrumb displays the current location within a hierarchy. It allows going b
| routes | The routing stack information of router | object\[] | | - |
| separator | Custom separator | string\|ReactNode | | `/` |
> `linkRender` and `nameRender` were removed after `antd@2.0`, please use `itemRender` instead.
### Use with browserHistory
The link of Breadcrumb item targets `#` by default, you can use `itemRender` to make a `browserHistory` Link.

View File

@@ -22,8 +22,6 @@ title: Breadcrumb
| routes | router 的路由栈信息 | object\[] | | - |
| separator | 分隔符自定义 | string\|ReactNode | | '/' |
> 2.0 之后,`linkRender` 和 `nameRender` 被移除,请使用 `itemRender` 来代替。
### 和 browserHistory 配合
和 react-router 一起使用时,默认生成的 url 路径是带有 `#` 的,如果和 browserHistory 一起使用的话,你可以使用 `itemRender` 属性定义面包屑链接。

View File

@@ -406,7 +406,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -428,7 +428,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -453,7 +453,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -475,7 +475,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -501,7 +501,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -523,7 +523,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -548,7 +548,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -570,7 +570,7 @@ exports[`renders ./components/button/demo/icon.md correctly 1`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>

View File

@@ -56,7 +56,7 @@ exports[`Button renders Chinese characters correctly 2`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -84,7 +84,7 @@ exports[`Button renders Chinese characters correctly 3`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>
@@ -112,7 +112,7 @@ exports[`Button renders Chinese characters correctly 4`] = `
width="1em"
>
<path
d="M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z"
d="M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"
/>
</svg>
</i>

View File

@@ -13,13 +13,10 @@ describe('Button', () => {
});
it('mount correctly', () => {
const wrapper = mount(
<Button>Follow</Button>
);
if (process.env.REACT === '15') {
return;
}
expect(() => renderer.create(wrapper).toJSON()).not.toThrow();
expect(() => renderer.create(<Button>Follow</Button>)).not.toThrow();
});
it('renders Chinese characters correctly', () => {

View File

@@ -1,5 +1,4 @@
import * as React from 'react';
import { findDOMNode } from 'react-dom';
import * as PropTypes from 'prop-types';
import classNames from 'classnames';
import Wave from '../_util/wave';
@@ -89,6 +88,7 @@ export default class Button extends React.Component<ButtonProps, any> {
};
private delayTimeout: number;
private buttonNode: HTMLElement | null;
constructor(props: ButtonProps) {
super(props);
@@ -127,10 +127,16 @@ export default class Button extends React.Component<ButtonProps, any> {
}
}
saveButtonRef = (node: HTMLElement | null) => {
this.buttonNode = node;
}
fixTwoCNChar() {
// Fix for HOC usage like <FormatMessage />
const node = (findDOMNode(this) as HTMLElement);
const buttonText = node.textContent || node.innerText;
if (!this.buttonNode) {
return;
}
const buttonText = this.buttonNode.textContent || this.buttonNode.innerText;
if (this.isNeedInserted() && isTwoCNChar(buttonText)) {
if (!this.state.hasTwoCNChar) {
this.setState({
@@ -145,7 +151,11 @@ export default class Button extends React.Component<ButtonProps, any> {
}
handleClick: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement> = e => {
const { loading } = this.state;
const { onClick } = this.props;
if (!!loading) {
return;
}
if (onClick) {
(onClick as React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>)(e);
}
@@ -176,6 +186,8 @@ export default class Button extends React.Component<ButtonProps, any> {
break;
}
const now = new Date();
const isChristmas = now.getMonth() === 11 && now.getDate() === 25;
const classes = classNames(prefixCls, className, {
[`${prefixCls}-${type}`]: type,
[`${prefixCls}-${shape}`]: shape,
@@ -185,6 +197,7 @@ export default class Button extends React.Component<ButtonProps, any> {
[`${prefixCls}-background-ghost`]: ghost,
[`${prefixCls}-two-chinese-chars`]: hasTwoCNChar,
[`${prefixCls}-block`]: block,
christmas: isChristmas,
});
const iconType = loading ? 'loading' : icon;
@@ -192,12 +205,16 @@ export default class Button extends React.Component<ButtonProps, any> {
const kids = (children || children === 0)
? React.Children.map(children, child => insertSpace(child, this.isNeedInserted())) : null;
const title= isChristmas ? 'Ho Ho Ho!' : rest.title;
if ('href' in rest) {
return (
<a
{...rest}
className={classes}
onClick={this.handleClick}
title={title}
ref={this.saveButtonRef}
>
{iconNode}{kids}
</a>
@@ -213,6 +230,8 @@ export default class Button extends React.Component<ButtonProps, any> {
type={htmlType || 'button'}
className={classes}
onClick={this.handleClick}
title={title}
ref={this.saveButtonRef}
>
{iconNode}{kids}
</button>

View File

@@ -26,9 +26,11 @@ To get a customized button, just set `type`/`shape`/`size`/`loading`/`disabled`.
| size | can be set to `small` `large` or omitted | string | `default` |
| target | same as target attribute of a, works when href is specified | string | - |
| type | can be set to `primary` `ghost` `dashed` `danger`(added in 2.7) or omitted (meaning `default`) | string | `default` |
| onClick | set the handler to handle `click` event | function | - |
| onClick | set the handler to handle `click` event | (event) => void | - |
| block | option to fit button width to its parent width | boolean | `false` |
It accepts all props which native button support.
`<Button>Hello world!</Button>` will be rendered into `<button><span>Hello world!</span></button>`, and all the properties which are not listed above will be transferred to the `<button>` tag.
`<Button href="http://example.com">Hello world!</Button>` will be rendered into `<a href="http://example.com"><span>Hello world!</span></a>`.

View File

@@ -29,10 +29,12 @@ subtitle: 按钮
| size | 设置按钮大小,可选值为 `small` `large` 或者不设 | string | `default` |
| target | 相当于 a 链接的 target 属性href 存在时生效 | string | - |
| type | 设置按钮类型,可选值为 `primary` `dashed` `danger`(版本 2.7 中增加) 或者不设 | string | - |
| onClick | `click` 事件的 handler | function | - |
| onClick | 点击按钮时的回调 | (event) => void | - |
| block | 将按钮宽度调整为其父宽度的选项 | boolean | `false` |
`<Button>Hello world!</Button>` 最终会被渲染为 `<button><span>Hello world!</span></button>`,并且除了上表中的属性,其它属性都会直接传到 `<button></button>`
支持原生 button 的其他所有属性
`<Button>Hello world!</Button>` 最终会被渲染为 `<button><span>Hello world!</span></button>`,并且除了上表中的属性,其它属性都会直接传到原生 button 上。
`<Button href="http://example.com">Hello world!</Button>` 则会渲染为 `<a href="http://example.com"><span>Hello world!</span></a>`

View File

@@ -21,6 +21,7 @@
> i,
> span {
pointer-events: none;
display: inline-block;
}
&-primary {
@@ -149,7 +150,7 @@
letter-spacing: .34em;
}
&-two-chinese-chars > * {
&-two-chinese-chars > *:not(.@{iconfont-css-prefix}) {
letter-spacing: .34em;
margin-right: -.34em;
}
@@ -157,6 +158,31 @@
&-block {
width: 100%;
}
.christmas&-primary:before {
content: '';
display: block;
position: absolute;
top: -6px;
left: 0;
right: 0;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAAXCAYAAABOHMIhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABiZJREFUeNrsWMtPlFcUvzPMwIDysLyRR4uATDHWCiVgSmRlios2DeiiXUFs0nRBd6arxqQhJDapkYXhP4BqDKTQhZaFNQSCaBEVJjwdHsNr5DUMDDPDzPT3u7nTDEgRKrKgc5KT+z3uufec33de99P4fD4RpL2RNgjB3kn35MkTeRERESFiYmLkGBoaKnQ6nWSNRvPPZFxr+vv7k6KioiIdDsfa8vLyQkFBgcP3Bnel3MDAQArWI0eFhISE87nb7bZ7PJ4VvLYuLi5O5+fnu9+kMNfq6+tLjIyMzMY6KeBEbK/XarXReI3lPDZMWcc4v7GxYV1dXR3Jy8ub2E5HPvJ6vRSSDH0ku1wuAfsEZOV1IEFHoeNFdHS0yMrK2knR0Lm5uR+hxLdQMjbwHTZbB41h8RGwCdc9MzMzneHh4bGJiYlf4SN8ijkfwqiIncCAAR7Iz2GPSShudjqdfeCeqampvwBQfFxc3JdYqwTv8gB8/F48A8BgKecE14V+L7ju2tpae05OzkuCCZvkPOj8mizmC6vVKtmPu+bx48cC3qI1mUyFUOyywWD4SHlELBaLJmCHNcwAghuAOujtuF4FqHO4nsX4EsAS3I4TJ04ME1h8PDE9PS09TYZoY2Pj1729vd6lpSVfkDYTPG0UkfNDRUWFgQ5Gb2Mh0N29e9eG/GQfHh4W8/PzwUy/ObQ/gMfVVlZW1iAiZdQxp3nv3LljRoL/5erVq1UIxzSiiVD9X4EDYATynCwAzGO858hCQRoaGmJFZNJz8YIcBc4BF966dau6sLAwBxVSJCUlCSThQwuU3W6XkYUok1Vzm5znQx5bbm9v77p+/frPeNSNRzZ/ISBwrG4ZR48eLamtrf2+uLjYSEG9Xi/wTISFhQlWGXohyzO/CJlVl23KQRLbABoaHx+/Z1lUZ/Hq1SsJFj3JT3hmHx8fnydPTEzMj46OziHPW2w22wxeD4Kfgadh/4YEzU8Az4DhffAn5eXlX1y6dKkEoCTspAQ9Mjs7+0BBo8Fms1lkZGTsOo0QLLRNkvnR+fEJzIMHD0xtbW39CL8JTFtSbAOvBIyLHIGVm9VzE2gKuDAMSSpcT6KXyT137lx2cnLyMXhcGDb3wq3XuWF3d/fCzZs3P0c4v5eSknJQbYLo7Ox0gC2lpaVZ3Be67Th/dnZWoAJKsJC3XA8fPhxoamp6hMb+BaaMgWcUMGtszZjiFDNmvcDI91pzG0iY4ARwkwrxkcHBwUdgNrRMbnrqoRbkVzDcvn3bl5qaWsmcgFH4G8XdEGUWFhak51AuISFBnkoCTyFbyWKxCJwIxlC0fq2rq7tcVFRkRKskjh8/Lr0+kBjCCDV/knfdv3//WX19/R8IRRNemxlu4AXwKqM+EJwdj1HbPYSwh3sCPAJDABm2LLchCjS+5/kirKGhwWk0GrMuXrxYQuX9hm/XXTMXMY+srKwI5ApZrbYmZh7deEJhAUKjLe/pLTzSsCuHrK+1tbUJVe3P6upq87Vr174rKysrYHVj/uW+OH3IfEuw4F3ee/fuPQfAvwOs5yyE4CnlFOu7BWrTCWlreO6FACpBZGwUw4BvkANLobReHb3kGZYGsGzTq/zlO8AT1ru6uoZbWlqeA6gINJAfnz59OlVLoX8Jtebm5raampqfcMvQYgTknz9//sKVK1c+y83NTdIEuCnaKMuNGzd+6+np6cCtSTkAw9D9X8Dyh+dbgaaAC1XAnUlPTy+qqqq6cPbs2UzkmWjNljiDJzpwHFnCkW2yo6NjCKW8H54wjlezKvRT09LSTsJrz5w6dSoN+Yp51ADAPUj8VoDbDq9pxrwuJcNIYQllJTIi/xopBw/VA7DJp0+f9hA78CgL5F5C8J2CpoCj8sfA6WCe/FPRhsRlZmbGIs8Y4FFO5CJgtrSsvrRVGW1V93b1myoGnKAKEcHgnwsWpg1lNI0fphwrmdqbckeU18WrnlOjqp5/j7W3BWvfQVPKa5SBkcrYCNVB65TRTlWZ1lXiXVU5xbtlDb2SPaLWYwrgHIcqPg6Vc7fbX69Yoyqfa7/AeiegbWOEVhmsVcWDwPn224iDJgla8Hd38Hd3ELQgaIeI/hZgAIPEp0vmQJdoAAAAAElFTkSuQmCC) no-repeat 50% 0;
background-size: 64px;
opacity: 1;
}
.christmas&-primary&-lg:before {
background-size: 72px;
}
.christmas&-primary&-sm:before {
background-size: 56px;
}
// https://github.com/ant-design/ant-design/issues/12681
&:empty {
vertical-align: top;
}
}
a.@{btn-prefix-cls} {

View File

@@ -83,7 +83,7 @@ export default class Header extends React.Component<HeaderProps, any> {
const currentYear = value.get('year');
if (rangeEnd.get('year') === currentYear) {
end = rangeEnd.get('month') + 1;
} else {
} else if (rangeStart.get('year') === currentYear) {
start = rangeStart.get('month');
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,7 @@
import React from 'react';
import Moment from 'moment';
import { mount } from 'enzyme';
import MockDate from 'mockdate';
import Calendar from '..';
describe('Calendar', () => {
@@ -98,4 +99,15 @@ describe('Calendar', () => {
expect(wrapper.state().mode).toEqual(monthMode);
expect(onPanelChangeStub).toHaveBeenCalledTimes(1);
});
it('Calendar should support locale', () => {
MockDate.set(Moment('2018-10-19'));
// eslint-disable-next-line
const zhCN = require('../locale/zh_CN').default;
const wrapper = mount(
<Calendar locale={zhCN} />
);
expect(wrapper.render()).toMatchSnapshot();
MockDate.reset();
});
});

View File

@@ -177,16 +177,16 @@ export default class Calendar extends React.Component<CalendarProps, CalendarSta
validRange: [moment.Moment, moment.Moment],
disabledDate?: (current: moment.Moment) => boolean,
) => (current: moment.Moment) => {
if (!current) {
return false;
}
const [ startDate, endDate ] = validRange;
const inRange = !current.isBetween(startDate, endDate, 'days', '[]');
if (disabledDate) {
return (disabledDate(current) || inRange);
}
return inRange;
if (!current) {
return false;
}
const [ startDate, endDate ] = validRange;
const inRange = !current.isBetween(startDate, endDate, 'days', '[]');
if (disabledDate) {
return (disabledDate(current) || inRange);
}
return inRange;
}
renderCalendar = (locale: any, localeCode: string) => {
const { state, props } = this;
@@ -240,11 +240,23 @@ export default class Calendar extends React.Component<CalendarProps, CalendarSta
);
}
getDefaultLocale = () => {
const result = {
...enUS,
...this.props.locale,
};
result.lang = {
...result.lang,
...(this.props.locale || {}).lang,
};
return result;
}
render() {
return (
<LocaleReceiver
componentName="Calendar"
defaultLocale={enUS}
defaultLocale={this.getDefaultLocale}
>
{this.renderCalendar}
</LocaleReceiver>

View File

@@ -372,14 +372,16 @@ exports[`renders ./components/card/demo/inner.md correctly 1`] = `
exports[`renders ./components/card/demo/loading.md correctly 1`] = `
<div>
<span
<button
aria-checked="false"
class="ant-switch"
tabindex="0"
role="switch"
type="button"
>
<span
class="ant-switch-inner"
/>
</span>
</button>
<div
class="ant-card ant-card-loading ant-card-bordered"
style="width:300px;margin-top:16px"
@@ -811,7 +813,7 @@ exports[`renders ./components/card/demo/tabs.md correctly 1`] = `
class="ant-tabs ant-tabs-top ant-card-head-tabs ant-tabs-large ant-tabs-line"
>
<div
class="ant-tabs-bar ant-card-head-tabs"
class="ant-tabs-bar"
role="tablist"
tabindex="0"
>
@@ -946,7 +948,7 @@ exports[`renders ./components/card/demo/tabs.md correctly 1`] = `
class="ant-tabs ant-tabs-top ant-card-head-tabs ant-tabs-large ant-tabs-line"
>
<div
class="ant-tabs-bar ant-card-head-tabs"
class="ant-tabs-bar"
role="tablist"
tabindex="0"
>

View File

@@ -150,3 +150,43 @@ exports[`Card should still have padding when card which set padding to 0 is load
</div>
</div>
`;
exports[`Card title should be vertically aligned 1`] = `
<div
class="ant-card ant-card-bordered"
style="width: 300px;"
>
<div
class="ant-card-head"
>
<div
class="ant-card-head-wrapper"
>
<div
class="ant-card-head-title"
>
Card title
</div>
<div
class="ant-card-extra"
>
<button
class="ant-btn"
type="button"
>
<span>
Button
</span>
</button>
</div>
</div>
</div>
<div
class="ant-card-body"
>
<p>
Card content
</p>
</div>
</div>
`;

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
import Card from '../index';
import Button from '../../button/index';
const testMethod = typeof window !== 'undefined' ? it : xit;
@@ -39,4 +40,13 @@ describe('Card', () => {
const wrapper = mount(<Card loading bodyStyle={{ padding: 0 }}>xxx</Card>);
expect(wrapper.render()).toMatchSnapshot();
});
it('title should be vertically aligned', () => {
const wrapper = mount(
<Card title="Card title" extra={<Button>Button</Button>} style={{ width: 300 }}>
<p>Card content</p>
</Card>
);
expect(wrapper.render()).toMatchSnapshot();
});
});

View File

@@ -38,7 +38,7 @@ export interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 't
className?: string;
type?: CardType;
cover?: React.ReactNode;
actions?: Array<React.ReactNode>;
actions?: React.ReactNode[];
tabList?: CardTabListType[];
onTabChange?: (key: string) => void;
activeTabKey?: string;

View File

@@ -39,6 +39,7 @@
&-wrapper {
display: flex;
align-items: center;
}
&-title {
@@ -46,8 +47,8 @@
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
display: inline-block;
flex: 1;
display: inline-block;
}
.@{ant-prefix}-tabs {

View File

@@ -28,7 +28,7 @@ A carousel component. Scales with its container.
| Name | Description |
| ---- | ----------- |
| goTo(slideNumber) | Change current slide to given slide number |
| goTo(slideNumber, dontAnimate) | Go to slide index, if dontAnimate=true, it happens without animation |
| next() | Change current slide to next slide |
| prev() | Change current slide to previous slide |

View File

@@ -4,7 +4,7 @@ import debounce from 'lodash/debounce';
// matchMedia polyfill for
// https://github.com/WickyNilliams/enquire.js/issues/82
if (typeof window !== 'undefined') {
const matchMediaPolyfill = (mediaQuery: string): MediaQueryList => {
const matchMediaPolyfill = (mediaQuery: string) => {
return {
media: mediaQuery,
matches: false,
@@ -122,8 +122,8 @@ export default class Carousel extends React.Component<CarouselProps, {}> {
this.slick.slickPrev();
}
goTo(slide: number) {
this.slick.slickGoTo(slide);
goTo(slide: number, dontAnimate = false) {
this.slick.slickGoTo(slide, dontAnimate);
}
render() {

View File

@@ -29,7 +29,7 @@ subtitle: 走马灯
| 名称 | 描述 |
| --- | --- |
| goTo(slideNumber) | 切换到指定面板 |
| goTo(slideNumber, dontAnimate) | 切换到指定面板, dontAnimate = true 时,不使用动画 |
| next() | 切换到下一面板 |
| prev() | 切换到上一面板 |

View File

@@ -103,19 +103,19 @@ exports[`renders ./components/cascader/demo/custom-render.md correctly 1`] = `
value=""
/>
<i
class="anticon anticon-close ant-cascader-picker-clear"
class="anticon anticon-close-circle ant-cascader-picker-clear"
>
<svg
aria-hidden="true"
class=""
data-icon="close"
data-icon="close-circle"
fill="currentColor"
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"
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
/>
</svg>
</i>
@@ -169,19 +169,19 @@ exports[`renders ./components/cascader/demo/default-value.md correctly 1`] = `
value=""
/>
<i
class="anticon anticon-close ant-cascader-picker-clear"
class="anticon anticon-close-circle ant-cascader-picker-clear"
>
<svg
aria-hidden="true"
class=""
data-icon="close"
data-icon="close-circle"
fill="currentColor"
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"
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
/>
</svg>
</i>
@@ -493,3 +493,63 @@ exports[`renders ./components/cascader/demo/size.md correctly 1`] = `
<br />
</div>
`;
exports[`renders ./components/cascader/demo/suffix.md correctly 1`] = `
<div>
<span
class="ant-cascader-picker"
tabindex="0"
>
<span
class="ant-cascader-picker-label"
/>
<input
autocomplete="off"
class="ant-input ant-cascader-input "
placeholder="Please select"
readonly=""
type="text"
value=""
/>
<i
class="anticon anticon-smile ant-cascader-picker-arrow"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
</span>
<span
class="ant-cascader-picker"
style="margin-top:1rem"
tabindex="0"
>
<span
class="ant-cascader-picker-label"
/>
<input
autocomplete="off"
class="ant-input ant-cascader-input "
placeholder="Please select"
readonly=""
type="text"
value=""
/>
<span
class="ant-cascader-picker-arrow"
>
ab
</span>
</span>
</div>
`;

View File

@@ -538,6 +538,8 @@ exports[`Cascader should highlight keyword and filter when search in Cascader 1`
getRootDomNode={[Function]}
mask={false}
onAlign={[Function]}
onMouseDown={[Function]}
onTouchStart={[Function]}
prefixCls="ant-cascader-menus"
style={Object {}}
transitionName="slide-up"
@@ -600,12 +602,16 @@ exports[`Cascader should highlight keyword and filter when search in Cascader 1`
<PopupInner
className="ant-cascader-menus ant-cascader-menus-placement-bottomLeft "
hiddenClassName="ant-cascader-menus-hidden"
onMouseDown={[Function]}
onTouchStart={[Function]}
prefixCls="ant-cascader-menus"
style={Object {}}
visible={true}
>
<div
className="ant-cascader-menus ant-cascader-menus-placement-bottomLeft "
onMouseDown={[Function]}
onTouchStart={[Function]}
style={Object {}}
>
<LazyRenderBox
@@ -931,6 +937,8 @@ exports[`Cascader should render not found content 1`] = `
getRootDomNode={[Function]}
mask={false}
onAlign={[Function]}
onMouseDown={[Function]}
onTouchStart={[Function]}
prefixCls="ant-cascader-menus"
style={Object {}}
transitionName="slide-up"
@@ -993,12 +1001,16 @@ exports[`Cascader should render not found content 1`] = `
<PopupInner
className="ant-cascader-menus ant-cascader-menus-placement-bottomLeft "
hiddenClassName="ant-cascader-menus-hidden"
onMouseDown={[Function]}
onTouchStart={[Function]}
prefixCls="ant-cascader-menus"
style={Object {}}
visible={true}
>
<div
className="ant-cascader-menus ant-cascader-menus-placement-bottomLeft "
onMouseDown={[Function]}
onTouchStart={[Function]}
style={Object {}}
>
<LazyRenderBox
@@ -1183,19 +1195,19 @@ exports[`Cascader support controlled mode 1`] = `
value=""
/>
<i
class="anticon anticon-close ant-cascader-picker-clear"
class="anticon anticon-close-circle ant-cascader-picker-clear"
>
<svg
aria-hidden="true"
class=""
data-icon="close"
data-icon="close-circle"
fill="currentColor"
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"
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
/>
</svg>
</i>

View File

@@ -0,0 +1,65 @@
---
order: 11
debug: true
title:
zh-CN: 后缀图标
en-US: Suffix
---
## zh-CN
省市区级联。
## en-US
Cascade selection box for selecting province/city/district.
````jsx
import { Cascader, Icon } from 'antd';
const options = [{
value: 'zhejiang',
label: 'Zhejiang',
children: [{
value: 'hangzhou',
label: 'Hangzhou',
children: [{
value: 'xihu',
label: 'West Lake',
}],
}],
}, {
value: 'jiangsu',
label: 'Jiangsu',
children: [{
value: 'nanjing',
label: 'Nanjing',
children: [{
value: 'zhonghuamen',
label: 'Zhong Hua Men',
}],
}],
}];
function onChange(value) {
console.log(value);
}
ReactDOM.render(
<div>
<Cascader
suffixIcon={<Icon type="smile" />}
options={options}
onChange={onChange}
placeholder="Please select"
/>
<Cascader
suffixIcon="ab"
style={{ marginTop: '1rem' }}
options={options}
onChange={onChange}
placeholder="Please select"
/>
</div>,
mountNode);
````

View File

@@ -40,6 +40,7 @@ Cascade selection box.
| showSearch | Whether show search input in single mode. | boolean\|object | false |
| size | input size, one of `large` `default` `small` | string | `default` |
| style | additional style | string | - |
| suffixIcon | The custom suffix icon | ReactNode | - |
| value | selected value | string\[] | - |
| onChange | callback when finishing cascader select | `(value, selectedOptions) => void` | - |
| onPopupVisibleChange | callback when popup shown or hidden | `(value) => void` | - |

View File

@@ -83,6 +83,7 @@ export interface CascaderProps {
getPopupContainer?: (triggerNode?: HTMLElement) => HTMLElement;
popupVisible?: boolean;
fieldNames?: FieldNamesType;
suffixIcon?: React.ReactNode;
}
export interface CascaderState {
@@ -341,7 +342,7 @@ export default class Cascader extends React.Component<CascaderProps, CascaderSta
const { props, state } = this;
const {
prefixCls, inputPrefixCls, children, placeholder, size, disabled,
className, style, allowClear, showSearch = false, ...otherProps
className, style, allowClear, showSearch = false, suffixIcon, ...otherProps
} = props;
const { value, inputFocused } = state;
@@ -351,7 +352,8 @@ export default class Cascader extends React.Component<CascaderProps, CascaderSta
});
const clearIcon = (allowClear && !disabled && value.length > 0) || state.inputValue ? (
<Icon
type="close"
type="close-circle"
theme="filled"
className={`${prefixCls}-picker-clear`}
onClick={this.clearSelection}
/>
@@ -413,6 +415,20 @@ export default class Cascader extends React.Component<CascaderProps, CascaderSta
dropdownMenuColumnStyle.width = this.input.input.offsetWidth;
}
const inputIcon = suffixIcon && (
React.isValidElement<{ className?: string }>(suffixIcon)
? React.cloneElement(
suffixIcon,
{
className: classNames({
[suffixIcon.props.className!]: suffixIcon.props.className,
[`${prefixCls}-picker-arrow`]: true,
}),
},
) : <span className={`${prefixCls}-picker-arrow`}>{suffixIcon}</span>) || (
<Icon type="down" className={arrowCls} />
);
const input = children || (
<span
style={style}
@@ -437,7 +453,7 @@ export default class Cascader extends React.Component<CascaderProps, CascaderSta
onChange={showSearch ? this.handleInputChange : undefined}
/>
{clearIcon}
<Icon type="down" className={arrowCls} />
{inputIcon}
</span>
);
@@ -451,9 +467,11 @@ export default class Cascader extends React.Component<CascaderProps, CascaderSta
</span>
);
const rest = omit(props, ['inputIcon', 'expandIcon', 'loadingIcon']);
return (
<RcCascader
{...props}
{...rest}
options={options}
value={value}
popupVisible={state.popupVisible}

View File

@@ -41,6 +41,7 @@ subtitle: 级联选择
| showSearch | 在选择框中显示搜索框 | boolean | false |
| size | 输入框大小,可选 `large` `default` `small` | string | `default` |
| style | 自定义样式 | string | - |
| suffixIcon | 自定义的选择框后缀图标 | ReactNode | - |
| value | 指定选中项 | string\[] | - |
| onChange | 选择完成后的回调 | `(value, selectedOptions) => void` | - |
| onPopupVisibleChange | 显示/隐藏浮层的回调 | `(value) => void` | - |

View File

@@ -13,7 +13,7 @@
background-color: transparent !important;
cursor: pointer;
width: 100%;
position: static;
position: relative;
}
&-picker-show-search &-input.@{ant-prefix}-input {

View File

@@ -84,7 +84,12 @@ export default class Checkbox extends React.Component<CheckboxProps, {}> {
const { checkboxGroup } = context;
let checkboxProps: CheckboxProps = { ...restProps };
if (checkboxGroup) {
checkboxProps.onChange = () => checkboxGroup.toggleOption({ label: children, value: props.value });
checkboxProps.onChange = (...args) => {
if (restProps.onChange) {
restProps.onChange(...args);
}
checkboxGroup.toggleOption({ label: children, value: props.value });
};
checkboxProps.checked = checkboxGroup.value.indexOf(props.value) !== -1;
checkboxProps.disabled = props.disabled || checkboxGroup.disabled;
}

View File

@@ -3,7 +3,8 @@ import * as PropTypes from 'prop-types';
import { polyfill } from 'react-lifecycles-compat';
import classNames from 'classnames';
import shallowEqual from 'shallowequal';
import Checkbox from './Checkbox';
import omit from 'omit.js';
import Checkbox, { CheckboxChangeEvent } from './Checkbox';
export type CheckboxValueType = string | number | boolean;
@@ -11,6 +12,7 @@ export interface CheckboxOptionType {
label: string;
value: CheckboxValueType;
disabled?: boolean;
onChange?: (e: CheckboxChangeEvent) => void;
}
export interface AbstractCheckboxGroupProps {
@@ -117,8 +119,11 @@ class CheckboxGroup extends React.Component<CheckboxGroupProps, CheckboxGroupSta
}
render() {
const { props, state } = this;
const { prefixCls, className, style, options } = props;
const { prefixCls, className, style, options, ...restProps } = props;
const groupPrefixCls = `${prefixCls}-group`;
const domProps = omit(restProps, ['children', 'defaultValue', 'value', 'onChange', 'disabled']);
let children = props.children;
if (options && options.length > 0) {
children = this.getOptions().map(option => (
@@ -128,7 +133,7 @@ class CheckboxGroup extends React.Component<CheckboxGroupProps, CheckboxGroupSta
disabled={'disabled' in option ? option.disabled : props.disabled}
value={option.value}
checked={state.value.indexOf(option.value) !== -1}
onChange={() => this.toggleOption(option)}
onChange={option.onChange}
className={`${groupPrefixCls}-item`}
>
{option.label}
@@ -138,7 +143,7 @@ class CheckboxGroup extends React.Component<CheckboxGroupProps, CheckboxGroupSta
const classString = classNames(groupPrefixCls, className);
return (
<div className={classString} style={style}>
<div className={classString} style={style} {...domProps}>
{children}
</div>
);

View File

@@ -79,4 +79,17 @@ describe('CheckboxGroup', () => {
wrapper.setProps({ value: ['Apple'] });
expect(wrapper.instance().state.value).toEqual(['Apple']);
});
// https://github.com/ant-design/ant-design/issues/12642
it('should trigger onChange in sub Checkbox', () => {
const onChange = jest.fn();
const wrapper = mount(
<Checkbox.Group>
<Checkbox value="my" onChange={onChange} />
</Checkbox.Group>
);
wrapper.find('.ant-checkbox-input').at(0).simulate('change');
expect(onChange).toBeCalled();
expect(onChange.mock.calls[0][0].target.value).toEqual('my');
});
});

View File

@@ -50,6 +50,9 @@
border-radius: @border-radius-sm;
background-color: @checkbox-check-color;
transition: all .3s;
// Fix IE checked style
// https://github.com/ant-design/ant-design/issues/12597
border-collapse: separate;
&:after {
@check-width: (@checkbox-size / 14) * 5px;
@@ -84,25 +87,6 @@
}
}
// 半选状态
.@{checkbox-prefix-cls}-indeterminate .@{checkbox-inner-prefix-cls}:after {
@indeterminate-width: @checkbox-size - 8px;
@indeterminate-height: @checkbox-size - 8px;
content: ' ';
transform: translate(-50%, -50%) scale(1);
border: 0;
left: 50%;
top: 50%;
width: @indeterminate-width;
height: @indeterminate-height;
background-color: @checkbox-color;
opacity: 1;
}
.@{checkbox-prefix-cls}-indeterminate.@{checkbox-prefix-cls}-disabled .@{checkbox-inner-prefix-cls}:after {
border-color: @disabled-color;
}
// 选中状态
.@{checkbox-prefix-cls}-checked .@{checkbox-inner-prefix-cls}:after {
transform: rotate(45deg) scale(1);
@@ -143,6 +127,7 @@
&:after {
animation-name: none;
border-color: @input-disabled-bg;
border-collapse: separate;
}
}
@@ -182,6 +167,32 @@
margin-left: 0;
}
}
// 半选状态
.@{checkbox-prefix-cls}-indeterminate {
.@{checkbox-inner-prefix-cls} {
background-color: #fff;
border-color: @border-color-base;
}
.@{checkbox-inner-prefix-cls}:after {
@indeterminate-width: @checkbox-size - 8px;
@indeterminate-height: @checkbox-size - 8px;
content: ' ';
transform: translate(-50%, -50%) scale(1);
border: 0;
left: 50%;
top: 50%;
width: @indeterminate-width;
height: @indeterminate-height;
background-color: @checkbox-color;
opacity: 1;
}
&.@{checkbox-prefix-cls}-disabled .@{checkbox-inner-prefix-cls}:after {
border-color: @disabled-color;
background-color: @disabled-color;
}
}
}
@keyframes antCheckboxEffect {

View File

@@ -140,6 +140,7 @@ class RangePicker extends React.Component<any, RangePickerState> {
formatValue(value[0], props.format),
formatValue(value[1], props.format),
]);
this.focus();
}
handleOpenChange = (open: boolean) => {
@@ -184,10 +185,14 @@ class RangePicker extends React.Component<any, RangePickerState> {
this.setValue(value, true);
const { onOk } = this.props;
const { onOk, onOpenChange } = this.props;
if (onOk) {
onOk(value);
}
if (onOpenChange) {
onOpenChange(false);
}
}
setValue(value: RangePickerValue, hidePanel?: boolean) {
@@ -250,7 +255,7 @@ class RangePicker extends React.Component<any, RangePickerState> {
disabledDate, disabledTime,
showTime, showToday,
ranges, onOk, locale, localeCode, format,
dateRender, onCalendarChange,
dateRender, onCalendarChange, suffixIcon,
} = props;
fixLocale(value, localeCode);
@@ -324,6 +329,20 @@ class RangePicker extends React.Component<any, RangePickerState> {
/>
) : null;
const inputIcon = suffixIcon && (
React.isValidElement<{ className?: string }>(suffixIcon)
? React.cloneElement(
suffixIcon,
{
className: classNames({
[suffixIcon.props.className!]: suffixIcon.props.className,
[`${prefixCls}-picker-icon`]: true,
}),
},
) : <span className={`${prefixCls}-picker-icon`}>{suffixIcon}</span>) || (
<Icon type="calendar" className={`${prefixCls}-picker-icon`} />
);
const input = ({ value: inputValue }: { value: any }) => {
const start = inputValue[0];
const end = inputValue[1];
@@ -347,7 +366,7 @@ class RangePicker extends React.Component<any, RangePickerState> {
tabIndex={-1}
/>
{clearIcon}
<Icon type="calendar" className={`${prefixCls}-picker-icon`}/>
{inputIcon}
</span>
);
};

View File

@@ -64,6 +64,7 @@ class WeekPicker extends React.Component<any, any> {
this.setState({ value });
}
this.props.onChange(value, formatValue(value, this.props.format));
this.focus();
}
clearSelection = (e: React.MouseEvent<HTMLElement>) => {
e.preventDefault();
@@ -87,7 +88,7 @@ class WeekPicker extends React.Component<any, any> {
const {
prefixCls, className, disabled, pickerClass, popupStyle,
pickerInputClass, format, allowClear, locale, localeCode, disabledDate,
style, onFocus, onBlur, id,
style, onFocus, onBlur, id, suffixIcon,
} = this.props;
const pickerValue = this.state.value;
@@ -118,7 +119,22 @@ class WeekPicker extends React.Component<any, any> {
theme="filled"
/>
) : null;
const input = ({ value }: { value: moment.Moment | undefined }) => {
const inputIcon = suffixIcon && (
React.isValidElement<{ className?: string }>(suffixIcon)
? React.cloneElement(
suffixIcon,
{
className: classNames({
[suffixIcon.props.className!]: suffixIcon.props.className,
[`${prefixCls}-picker-icon`]: true,
}),
},
) : <span className={`${prefixCls}-picker-icon`}>{suffixIcon}</span>) || (
<Icon type="calendar" className={`${prefixCls}-picker-icon`} />
);
const input = ({ value }: { value: moment.Moment | undefined }) => {
return (
<span>
<input
@@ -132,7 +148,7 @@ class WeekPicker extends React.Component<any, any> {
onBlur={onBlur}
/>
{clearIcon}
<Icon type="calendar" className={`${prefixCls}-picker-icon`}/>
{inputIcon}
</span>
);
};

View File

@@ -224,4 +224,13 @@ describe('RangePicker', () => {
wrapper.find('.ant-calendar-prev-month-btn').first().simulate('click');
expect(wrapper.find('.ant-calendar-my-select').first().text()).toBe('Jun2017');
});
// https://github.com/ant-design/ant-design/issues/11631
it('triggers onOpenChange when click on preset range', () => {
const handleOpenChange = jest.fn();
const range = [moment().subtract(2, 'd'), moment()];
const wrapper = mount(<RangePicker onOpenChange={handleOpenChange} ranges={{ 'recent two days': range }} />);
wrapper.find('.ant-calendar-picker-input').simulate('click');
wrapper.find('.ant-calendar-range-quick-selector Tag').simulate('click');
expect(handleOpenChange).toBeCalledWith(false);
});
});

View File

@@ -1237,6 +1237,234 @@ exports[`renders ./components/date-picker/demo/start-end.md correctly 1`] = `
</div>
`;
exports[`renders ./components/date-picker/demo/suffix.md correctly 1`] = `
<div>
<span
class="ant-calendar-picker"
>
<div>
<input
class="ant-calendar-picker-input ant-input"
placeholder="Select date"
readonly=""
value=""
/>
<i
class="anticon anticon-smile ant-calendar-picker-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
</div>
</span>
<br />
<span
class="ant-calendar-picker"
>
<div>
<input
class="ant-calendar-picker-input ant-input"
placeholder="Select month"
readonly=""
value=""
/>
<i
class="anticon anticon-smile ant-calendar-picker-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
</div>
</span>
<br />
<span
class="ant-calendar-picker"
tabindex="0"
>
<span
class="ant-calendar-picker-input ant-input"
>
<input
class="ant-calendar-range-picker-input"
placeholder="Start date"
readonly=""
tabindex="-1"
value=""
/>
<span
class="ant-calendar-range-picker-separator"
>
~
</span>
<input
class="ant-calendar-range-picker-input"
placeholder="End date"
readonly=""
tabindex="-1"
value=""
/>
<i
class="anticon anticon-smile ant-calendar-picker-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
</span>
</span>
<br />
<span
class="ant-calendar-picker"
>
<span>
<input
class="ant-calendar-picker-input ant-input"
placeholder="Select week"
readonly=""
value=""
/>
<i
class="anticon anticon-smile ant-calendar-picker-icon"
>
<svg
aria-hidden="true"
class=""
data-icon="smile"
fill="currentColor"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z"
/>
</svg>
</i>
</span>
</span>
<br />
<span
class="ant-calendar-picker"
>
<div>
<input
class="ant-calendar-picker-input ant-input"
placeholder="Select date"
readonly=""
value=""
/>
<span
class="ant-calendar-picker-icon"
>
ab
</span>
</div>
</span>
<br />
<span
class="ant-calendar-picker"
>
<div>
<input
class="ant-calendar-picker-input ant-input"
placeholder="Select month"
readonly=""
value=""
/>
<span
class="ant-calendar-picker-icon"
>
ab
</span>
</div>
</span>
<br />
<span
class="ant-calendar-picker"
tabindex="0"
>
<span
class="ant-calendar-picker-input ant-input"
>
<input
class="ant-calendar-range-picker-input"
placeholder="Start date"
readonly=""
tabindex="-1"
value=""
/>
<span
class="ant-calendar-range-picker-separator"
>
~
</span>
<input
class="ant-calendar-range-picker-input"
placeholder="End date"
readonly=""
tabindex="-1"
value=""
/>
<span
class="ant-calendar-picker-icon"
>
ab
</span>
</span>
</span>
<br />
<span
class="ant-calendar-picker"
>
<span>
<input
class="ant-calendar-picker-input ant-input"
placeholder="Select week"
readonly=""
value=""
/>
<span
class="ant-calendar-picker-icon"
>
ab
</span>
</span>
</span>
</div>
`;
exports[`renders ./components/date-picker/demo/time.md correctly 1`] = `
<div>
<span

View File

@@ -80,6 +80,7 @@ export default function createPicker(TheCalendar: React.ComponentClass): any {
});
}
props.onChange(value, (value && value.format(props.format)) || '');
this.focus();
}
handleCalendarChange = (value: moment.Moment) => {
@@ -101,7 +102,7 @@ export default function createPicker(TheCalendar: React.ComponentClass): any {
render() {
const { value, showDate } = this.state;
const props = omit(this.props, ['onChange']);
const { prefixCls, locale, localeCode } = props;
const { prefixCls, locale, localeCode, suffixIcon } = props;
const placeholder = ('placeholder' in props)
? props.placeholder : locale.lang.placeholder;
@@ -168,6 +169,20 @@ export default function createPicker(TheCalendar: React.ComponentClass): any {
/>
) : null;
const inputIcon = suffixIcon && (
React.isValidElement<{ className?: string }>(suffixIcon)
? React.cloneElement(
suffixIcon,
{
className: classNames({
[suffixIcon.props.className!]: suffixIcon.props.className,
[`${prefixCls}-picker-icon`]: true,
}),
},
) : <span className={`${prefixCls}-picker-icon`}>{suffixIcon}</span>) || (
<Icon type="calendar" className={`${prefixCls}-picker-icon`} />
);
const dataOrAriaProps = getDataOrAriaProps(props);
const input = ({ value: inputValue }: { value: moment.Moment | null }) => (
<div>
@@ -181,7 +196,7 @@ export default function createPicker(TheCalendar: React.ComponentClass): any {
{...dataOrAriaProps}
/>
{clearIcon}
<Icon type="calendar" className={`${prefixCls}-picker-icon`}/>
{inputIcon}
</div>
);

View File

@@ -0,0 +1,46 @@
---
order: 13
debug: true
title:
zh-CN: 后缀图标
en-US: Suffix
---
## zh-CN
最简单的用法,在浮层中可以选择或者输入日期。
## en-US
Basic use case. Users can select or input a date in panel.
````jsx
import { DatePicker, Icon } from 'antd';
const smileIcon = <Icon type="smile" />;
const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
function onChange(date, dateString) {
console.log(date, dateString);
}
ReactDOM.render(
<div>
<DatePicker suffixIcon={smileIcon} onChange={onChange} />
<br />
<MonthPicker suffixIcon={smileIcon} onChange={onChange} placeholder="Select month" />
<br />
<RangePicker suffixIcon={smileIcon} onChange={onChange} />
<br />
<WeekPicker suffixIcon={smileIcon} onChange={onChange} placeholder="Select week" />
<br />
<DatePicker suffixIcon="ab" onChange={onChange} />
<br />
<MonthPicker suffixIcon="ab" onChange={onChange} placeholder="Select month" />
<br />
<RangePicker suffixIcon="ab" onChange={onChange} />
<br />
<WeekPicker suffixIcon="ab" onChange={onChange} placeholder="Select week" />
</div>,
mountNode);
````

View File

@@ -61,6 +61,7 @@ The following APIs are shared by DatePicker, MonthPicker, RangePicker, WeekPicke
| placeholder | placeholder of date input | string\|RangePicker\[] | - |
| popupStyle | to customize the style of the popup calendar | object | {} |
| size | determine the size of the input box, the height of `large` and `small`, are 40px and 24px respectively, while default size is 32px | string | - |
| suffixIcon | The custom suffix icon | ReactNode | - |
| style | to customize the style of the input box | object | {} |
| onOpenChange | a callback function, can be executed whether the popup calendar is popped up or closed | function(status) | - |
| onPanelChange | callback when picker panel mode is changed | function(value, mode) | - |
@@ -115,7 +116,7 @@ The following APIs are shared by DatePicker, MonthPicker, RangePicker, WeekPicke
| defaultValue | to set default date | \[[moment](http://momentjs.com/), [moment](http://momentjs.com/)] | - |
| disabledTime | to specify the time that cannot be selected | function(dates: [moment, moment], partial: `'start'|'end'`) | - |
| format | to set the date format | string | "YYYY-MM-DD HH:mm:ss" |
| ranges | preseted ranges for quick selection | { \[range: string]: [moment](http://momentjs.com/)\[] } \| () => { \[range: string]: [moment](http://momentjs.com/)\[] } | - |
| ranges | preseted ranges for quick selection | { \[range: string]: [moment](http://momentjs.com/)\[] } \| { \[range: string]: () => [moment](http://momentjs.com/)\[] } | - |
| renderExtraFooter | render extra footer in panel | () => React.ReactNode | - |
| 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()] |

View File

@@ -38,6 +38,7 @@ import locale from 'antd/lib/date-picker/locale/zh_CN';
// 默认语言为 en-US如果你需要设置其他语言推荐在入口文件全局设置 locale
import moment from 'moment';
import 'moment/locale/zh-cn';
moment.locale('zh-cn');
<DatePicker defaultValue={moment('2015-01-01', 'YYYY-MM-DD')} />
```
@@ -61,6 +62,7 @@ import 'moment/locale/zh-cn';
| placeholder | 输入框提示文字 | string\|RangePicker\[] | - |
| popupStyle | 额外的弹出日历样式 | object | {} |
| size | 输入框大小,`large` 高度为 40px`small` 为 24px默认是 32px | string | 无 |
| suffixIcon | 自定义的选择框后缀图标 | ReactNode | - |
| style | 自定义输入框样式 | object | {} |
| onOpenChange | 弹出日历和关闭日历的回调 | function(status) | 无 |
@@ -115,7 +117,7 @@ import 'moment/locale/zh-cn';
| defaultValue | 默认日期 | [moment](http://momentjs.com/)\[] | 无 |
| disabledTime | 不可选择的时间 | function(dates: [moment, moment], partial: `'start'|'end'`) | 无 |
| format | 展示的日期格式 | string | "YYYY-MM-DD HH:mm:ss" |
| ranges       | 预设时间范围快捷选择 | { \[range: string]: [moment](http://momentjs.com/)\[] } \| () => { \[range: string]: [moment](http://momentjs.com/)\[] } | 无 |
| ranges       | 预设时间范围快捷选择 | { \[range: string]: [moment](http://momentjs.com/)\[] } \| { \[range: string]: () => [moment](http://momentjs.com/)\[] } | 无 |
| renderExtraFooter | 在面板中添加额外的页脚 | () => React.ReactNode | - |
| showTime | 增加时间选择功能 | Object\|boolean | [TimePicker Options](/components/time-picker/#API) |
| showTime.defaultValue | 设置用户选择日期时默认的时分秒,[例子](#components-date-picker-demo-disabled-date) | [moment](http://momentjs.com/)\[] | [moment(), moment()] |

View File

@@ -10,6 +10,7 @@ export interface PickerProps {
disabled?: boolean;
allowClear?: boolean;
className?: string;
suffixIcon?: React.ReactNode;
style?: React.CSSProperties;
popupStyle?: React.CSSProperties;
dropdownClassName?: string;

View File

@@ -1,5 +1,5 @@
import CalendarLocale from 'rc-calendar/lib/locale/en_US';
import TimePickerLocale from '../../time-picker/locale/en_US';
import CalendarLocale from 'rc-calendar/lib/locale/vi_VN';
import TimePickerLocale from '../../time-picker/locale/vi_VN';
// Merge into a locale object
const locale = {

View File

@@ -62,11 +62,12 @@
font-size: @font-size-sm;
transition: all .3s;
user-select: none;
z-index: 1;
}
&-clear {
opacity: 0;
z-index: 1;
z-index: 2;
font-size: @font-size-base;
color: @disabled-color;
background: @input-bg;

View File

@@ -53,28 +53,28 @@ export default function wrapPicker(Picker: React.ComponentClass<any>, defaultFor
onOpenChange(open);
}
handleFocus = (e: React.FocusEventHandler<HTMLInputElement>) => {
handleFocus: React.FocusEventHandler<HTMLInputElement> = (e) => {
const { onFocus } = this.props;
if (onFocus) {
onFocus(e);
}
}
handleBlur = (e: React.FocusEventHandler<HTMLInputElement>) => {
handleBlur: React.FocusEventHandler<HTMLInputElement> = (e) => {
const { onBlur } = this.props;
if (onBlur) {
onBlur(e);
}
}
handleMouseEnter = (e: React.MouseEventHandler<HTMLInputElement>) => {
handleMouseEnter: React.MouseEventHandler<HTMLInputElement> = (e) => {
const { onMouseEnter } = this.props;
if (onMouseEnter) {
onMouseEnter(e);
}
}
handleMouseLeave = (e: React.MouseEventHandler<HTMLInputElement>) => {
handleMouseLeave: React.MouseEventHandler<HTMLInputElement> = (e) => {
const { onMouseLeave } = this.props;
if (onMouseLeave) {
onMouseLeave(e);

View File

@@ -21,6 +21,7 @@
display: block;
height: 1px;
width: 100%;
min-width: 100%; // Fix https://github.com/ant-design/ant-design/issues/10914
margin: 24px 0;
clear: both;
}

View File

@@ -72,6 +72,7 @@ export default class Drawer extends React.Component<DrawerProps, IDrawerState> {
closable: true,
placement: 'right',
maskClosable: true,
mask: true,
level: null,
};
@@ -217,7 +218,7 @@ export default class Drawer extends React.Component<DrawerProps, IDrawerState> {
renderProvider = (value: Drawer) => {
let { zIndex, style, placement, className, wrapClassName, width, height, ...rest } = this.props;
warning(wrapClassName === undefined, 'wrapClassName is deprecated, please use className instead.');
const haveMask = rest.mask ? "" : "no-mask";
this.parentDrawer = value;
const offsetStyle: any = {};
if (placement === 'left' || placement === 'right') {
@@ -236,7 +237,7 @@ export default class Drawer extends React.Component<DrawerProps, IDrawerState> {
showMask={this.props.mask}
placement={placement}
style={this.getRcDrawerStyle()}
className={classNames(wrapClassName, className)}
className={classNames(wrapClassName, className, haveMask)}
>
{this.renderBody()}
</RcDrawer>

View File

@@ -29,6 +29,9 @@
&.@{dawer-prefix-cls}-open {
width: 100%;
}
&.@{dawer-prefix-cls}-open.no-mask {
width: 0%;
}
}
&-left {
&.@{dawer-prefix-cls}-open {
@@ -60,6 +63,9 @@
&.@{dawer-prefix-cls}-open {
height: 100%;
}
&.@{dawer-prefix-cls}-open.no-mask {
height: 0%;
}
}
&-top {
&.@{dawer-prefix-cls}-open {
@@ -80,7 +86,6 @@
}
}
}
&.@{dawer-prefix-cls}-open {
.@{dawer-prefix-cls} {
&-mask {

View File

@@ -1,4 +1,3 @@
@import "../../style/themes/default";
@import "../../style/mixins/index";
@import "./drawer";

View File

@@ -55,6 +55,10 @@
&-submenu-popup {
position: absolute;
z-index: @zindex-dropdown;
> .@{dropdown-prefix-cls}-menu {
transform-origin: 0 0;
}
}
&-item,

View File

@@ -19,7 +19,7 @@ interface FormCreateOptionMessages {
}
export interface FormCreateOption<T> {
onFieldsChange?: (props: T, fields: Array<any>, allFields: any, add: string) => void;
onFieldsChange?: (props: T, fields: object, allFields: any, add: string) => void;
onValuesChange?: (props: T, changedValues: any, allValues: any) => void;
mapPropsToFields?: (props: T) => void;
validateMessages?: FormCreateOptionMessages;
@@ -100,15 +100,21 @@ export type WrappedFormUtils = {
setFields(obj: Object): void;
/** 校验并获取一组输入域的值与 Error */
validateFields(fieldNames: Array<string>, options: Object, callback: ValidateCallback): void;
validateFields(fieldNames: Array<string>, callback: ValidateCallback): void;
validateFields(options: Object, callback: ValidateCallback): void;
validateFields(fieldNames: Array<string>, callback: ValidateCallback): void;
validateFields(fieldNames: Array<string>, options: Object): void;
validateFields(fieldNames: Array<string>): void;
validateFields(callback: ValidateCallback): void;
validateFields(options: Object): void;
validateFields(): void;
/** 与 `validateFields` 相似,但校验完后,如果校验不通过的菜单域不在可见范围内,则自动滚动进可见范围 */
validateFieldsAndScroll(fieldNames?: Array<string>, options?: Object, callback?: ValidateCallback): void;
validateFieldsAndScroll(fieldNames?: Array<string>, callback?: ValidateCallback): void;
validateFieldsAndScroll(options?: Object, callback?: ValidateCallback): void;
validateFieldsAndScroll(callback?: ValidateCallback): void;
validateFieldsAndScroll(fieldNames: Array<string>, options: Object, callback: ValidateCallback): void;
validateFieldsAndScroll(options: Object, callback: ValidateCallback): void;
validateFieldsAndScroll(fieldNames: Array<string>, callback: ValidateCallback): void;
validateFieldsAndScroll(fieldNames: Array<string>, options: Object): void;
validateFieldsAndScroll(fieldNames: Array<string>): void;
validateFieldsAndScroll(callback: ValidateCallback): void;
validateFieldsAndScroll(options: Object): void;
validateFieldsAndScroll(): void;
/** 获取某个输入控件的 Error */
getFieldError(name: string): Object[];

View File

@@ -904,7 +904,6 @@ exports[`renders ./components/form/demo/dynamic-rule.md correctly 1`] = `
<input
class="ant-checkbox-input"
type="checkbox"
value="false"
/>
<span
class="ant-checkbox-inner"
@@ -1703,19 +1702,19 @@ exports[`renders ./components/form/demo/register.md correctly 1`] = `
value=""
/>
<i
class="anticon anticon-close ant-cascader-picker-clear"
class="anticon anticon-close-circle ant-cascader-picker-clear"
>
<svg
aria-hidden="true"
class=""
data-icon="close"
data-icon="close-circle"
fill="currentColor"
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"
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
/>
</svg>
</i>
@@ -2802,17 +2801,19 @@ exports[`renders ./components/form/demo/validate-other.md correctly 1`] = `
<span
class="ant-form-item-children"
>
<span
<button
aria-checked="false"
class="ant-switch"
data-__field="[object Object]"
data-__meta="[object Object]"
id="switch"
tabindex="0"
role="switch"
type="button"
>
<span
class="ant-switch-inner"
/>
</span>
</button>
</span>
</div>
</div>
@@ -4097,19 +4098,19 @@ exports[`renders ./components/form/demo/validate-static.md correctly 1`] = `
value=""
/>
<i
class="anticon anticon-close ant-cascader-picker-clear"
class="anticon anticon-close-circle ant-cascader-picker-clear"
>
<svg
aria-hidden="true"
class=""
data-icon="close"
data-icon="close-circle"
fill="currentColor"
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"
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
/>
</svg>
</i>

View File

@@ -26,6 +26,16 @@ const FormItem = Form.Item;
const Option = Select.Option;
class PriceInput extends React.Component {
static getDerivedStateFromProps(nextProps) {
// Should be a controlled component.
if ('value' in nextProps) {
return {
...(nextProps.value || {}),
};
}
return null;
}
constructor(props) {
super(props);
@@ -36,14 +46,6 @@ class PriceInput extends React.Component {
};
}
componentWillReceiveProps(nextProps) {
// Should be a controlled component.
if ('value' in nextProps) {
const value = nextProps.value;
this.setState(value);
}
}
handleNumberChange = (e) => {
const number = parseInt(e.target.value || 0, 10);
if (isNaN(number)) {

View File

@@ -18,7 +18,6 @@ import { Form, Input, Icon, Button } from 'antd';
const FormItem = Form.Item;
let uuid = 0;
class DynamicFieldSet extends React.Component {
remove = (k) => {
const { form } = this.props;
@@ -39,8 +38,7 @@ class DynamicFieldSet extends React.Component {
const { form } = this.props;
// can use data-binding to get
const keys = form.getFieldValue('keys');
const nextKeys = keys.concat(uuid);
uuid++;
const nextKeys = keys.concat(keys.length);
// can use data-binding to set
// important! notify form to detect changes
form.setFieldsValue({

View File

@@ -75,7 +75,7 @@ class DynamicRule extends React.Component {
</FormItem>
<FormItem {...formTailLayout}>
<Checkbox
value={this.state.checkNick}
checked={this.state.checkNick}
onChange={this.handleChange}
>
Nickname is required

View File

@@ -7,18 +7,17 @@ title:
## zh-CN
`antd@2.0` 之后,时间类组件的 `value` `moment` 类型,所以在提交前需要预处理。
时间类组件的 `value` 类型`moment` 对象,所以在提交服务器前需要预处理。
## en-US
After `antd@2.0`, the `value` of time-related components had been changed to `moment`. So, we need to pre-process those values.
The `value` of time-related components is a `moment` object, which we need to pre-process it before we submit to server.
````jsx
import { Form, DatePicker, TimePicker, Button } from 'antd';
const FormItem = Form.Item;
const MonthPicker = DatePicker.MonthPicker;
const RangePicker = DatePicker.RangePicker;
const { MonthPicker, RangePicker } = DatePicker;
class TimeRelatedForm extends React.Component {
handleSubmit = (e) => {

View File

@@ -68,7 +68,7 @@ class Demo extends React.Component {
})(
<Select placeholder="Please select a country">
<Option value="china">China</Option>
<Option value="use">U.S.A</Option>
<Option value="usa">U.S.A</Option>
</Select>
)}
</FormItem>

View File

@@ -34,9 +34,9 @@ A form field is defined using `<Form.Item />`.
| Property | Description | Type | Default Value |
| -------- | ----------- | ---- | ------------- |
| form | Decorated by `Form.create()` will be automatically set `this.props.form` property, so just pass to form, you don't need to set it by yourself after 1.7.0. | object | n/a |
| form | Decorated by `Form.create()` will be automatically set `this.props.form` property | object | n/a |
| hideRequiredMark | Hide required mark of all form items | Boolean | false |
| layout | Define form layout(Support after 2.8) | 'horizontal'\|'vertical'\|'inline' | 'horizontal' |
| layout | Define form layout | 'horizontal'\|'vertical'\|'inline' | 'horizontal' |
| onSubmit | Defines a function will be called if form data validation is successful. | Function(e:Event) | |
### Form.create(options)
@@ -53,7 +53,7 @@ The following `options` are available:
| Property | Description | Type |
| -------- | ----------- | ---- |
| mapPropsToFields | Convert props to field value(e.g. reading the values from Redux store). And you must mark returned fields with [`Form.createFormField`](#Form.createFormField) | (props) => Object{ fieldName: FormField { value } } |
| mapPropsToFields | Convert props to field value(e.g. reading the values from Redux store). And you must mark returned fields with [`Form.createFormField`](#Form.createFormField) | (props) => ({ \[fieldName\]: FormField { value } }) |
| validateMessages | Default validate message. And its format is similar with [newMessages](https://github.com/yiminghe/async-validator/blob/master/src/messages.js)'s returned value | Object { [nested.path]&#x3A; String } |
| onFieldsChange | Specify a function that will be called when the value a `Form.Item` gets changed. Usage example: saving the field's value to Redux store. | Function(props, fields) |
| onValuesChange | A handler while value of any field is changed | (props, changedValues, allValues) => void |
@@ -85,12 +85,25 @@ If the form has been decorated by `Form.create` then it has `this.props.form` pr
| isFieldValidating | Check if the specified field is being validated. | Function(name) |
| resetFields | Reset the specified fields' value(to `initialValue`) and status. If you don't specify a parameter, all the fields will be reset. | Function(\[names: string\[]]) |
| setFields | Set the value and error of a field. [Code Sample](https://github.com/react-component/form/blob/3b9959b57ab30b41d8890ff30c79a7e7c383cad3/examples/server-validate.js#L74-L79) | Function({ [fieldName]&#x3A; { value: any, errors: [Error] } }) |
| setFields | | Function(obj: object) |
| setFieldsValue | Set the value of a field.(Note: please don't use it in `componentWillReceiveProps`, otherwise, it will cause an endless loop, [more](https://github.com/ant-design/ant-design/issues/2985)) | Function({ [fieldName]&#x3A; value } |
| validateFields | Validate the specified fields and get theirs values and errors. If you don't specify the parameter of fieldNames, you will vaildate all fields. | Function(\[fieldNames: string\[]], [options: object], callback: Function(errors, values)) |
| setFields | Set value and error state of fields | ({<br />&nbsp;&nbsp;\[fieldName\]: {value: any, errors: \[Error\] }<br />}) => void |
| setFieldsValue | Set the value of a field. (Note: please don't use it in `componentWillReceiveProps`, otherwise, it will cause an endless loop, [reason](https://github.com/ant-design/ant-design/issues/2985)) | ({ \[fieldName\]&#x3A; value }) => void |
| validateFields | Validate the specified fields and get theirs values and errors. If you don't specify the parameter of fieldNames, you will vaildate all fields. | (<br />&nbsp;&nbsp;\[fieldNames: string\[]],<br />&nbsp;&nbsp;\[options: object\],<br />&nbsp;&nbsp;callback(errors, values)<br />) => void |
| validateFieldsAndScroll | This function is similar to `validateFields`, but after validation, if the target field is not in visible area of form, form will be automatically scrolled to the target field area. | same as `validateFields` |
### this.props.form.validateFields/validateFieldsAndScroll(\[fieldNames: string\[]], [options: object], callback: Function(errors, values))
### validateFields/validateFieldsAndScroll
```jsx
const { form: { validateFields } } = this.props;
validateFields((errors, values) => {
// ...
});
validateFields(['field1', 'field2'], (errors, values) => {
// ...
});
validateFields(['field1', 'field2'], options, (errors, values) => {
// ...
});
```
| Method | Description | Type | Default |
| ------ | ----------- | ---- | ------- |
@@ -142,7 +155,7 @@ To mark the returned fields data in `mapPropsToFields`, [demo](#components-form-
After wrapped by `getFieldDecorator`, `value`(or other property defined by `valuePropName`) `onChange`(or other property defined by `trigger`) props will be added to form controlsthe flow of form data will be handled by Form which will cause:
1. You shouldn't use `onChange` to collect data, but you still can listen to `onChange`(and so on) events.
2. You can not set value of form control via `value` `defaultValue` prop, and you should set default value with `initialValue` in `getFieldDecorator` instead.
2. You cannot set value of form control via `value` `defaultValue` prop, and you should set default value with `initialValue` in `getFieldDecorator` instead.
3. You shouldn't call `setState` manually, please use `this.props.form.setFieldsValue` to change value programmatically.
#### Special attention
@@ -169,10 +182,7 @@ More option at [rc-form option](https://github.com/react-component/form#option-o
### Form.Item
Note:
- If Form.Item has multiple children that had been decorated by `getFieldDecorator`, `help` and `required` and `validateStatus` can't be generated automatically.
- Before `2.2.0`, form controls must be child of Form.Item, otherwise, you need to set `help`, `required` and `validateStatus` by yourself.
Note: if Form.Item has multiple children that had been decorated by `getFieldDecorator`, `help` and `required` and `validateStatus` can't be generated automatically.
| Property | Description | Type | Default Value |
| -------- | ----------- | ---- | ------------- |
@@ -204,12 +214,6 @@ Note:
See more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).
<style>
.code-box-demo .ant-form:not(.ant-form-inline):not(.ant-form-vertical) {
max-width: 600px;
}
</style>
## Using in TypeScript
```jsx
@@ -222,6 +226,16 @@ interface UserFormProps extends FormComponentProps {
}
class UserForm extends React.Component<UserFormProps, any> {
// ...
}
```
<style>
.code-box-demo .ant-form:not(.ant-form-inline):not(.ant-form-vertical) {
max-width: 600px;
}
.markdown.api-container table td:last-child {
white-space: nowrap;
word-wrap: break-word;
}
</style>

View File

@@ -36,9 +36,9 @@ title: Form
| 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
| form | 经 `Form.create()` 包装过的组件会自带 `this.props.form` 属性,直接传给 Form 即可。1.7.0 之后无需设置 | object | |
| form | 经 `Form.create()` 包装过的组件会自带 `this.props.form` 属性 | object | - |
| hideRequiredMark | 隐藏所有表单项的必选标记 | Boolean | false |
| layout | 表单布局(2.8 之后支持) | 'horizontal'\|'vertical'\|'inline' | 'horizontal' |
| layout | 表单布局 | 'horizontal'\|'vertical'\|'inline' | 'horizontal' |
| onSubmit | 数据验证成功后回调事件 | Function(e:Event) | |
### Form.create(options)
@@ -55,7 +55,7 @@ CustomizedForm = Form.create({})(CustomizedForm);
| 参数 | 说明 | 类型 |
| --- | --- | --- |
| mapPropsToFields | 把父组件的属性映射到表单项上(如:把 Redux store 中的值读出),需要对返回值中的表单域数据用 [`Form.createFormField`](#Form.createFormField) 标记 | (props) => Object{ fieldName: FormField { value } } |
| mapPropsToFields | 把父组件的属性映射到表单项上(如:把 Redux store 中的值读出),需要对返回值中的表单域数据用 [`Form.createFormField`](#Form.createFormField) 标记 | (props) => ({ \[fieldName\]: FormField { value } }) |
| validateMessages | 默认校验信息,可用于把默认错误信息改为中文等,格式与 [newMessages](https://github.com/yiminghe/async-validator/blob/master/src/messages.js) 返回值一致 | Object { [nested.path]&#x3A; String } |
| onFieldsChange | 当 `Form.Item` 子节点的值发生改变时触发,可以把对应的值转存到 Redux store | Function(props, fields) |
| onValuesChange | 任一表单域的值发生改变时的回调 | (props, changedValues, allValues) => void |
@@ -86,12 +86,25 @@ this.form // => The instance of CustomizedForm
| isFieldTouched | 判断一个输入控件是否经历过 `getFieldDecorator` 的值收集时机 `options.trigger` | (name: string) => boolean |
| isFieldValidating | 判断一个输入控件是否在校验状态 | Function(name) |
| resetFields | 重置一组输入控件的值(为 `initialValue`)与状态,如不传入参数,则重置所有组件 | Function(\[names: string\[]]) |
| setFields | 设置一组输入控件的值与 Error。 [代码](https://github.com/react-component/form/blob/3b9959b57ab30b41d8890ff30c79a7e7c383cad3/examples/server-validate.js#L74-L79) | Function({ [fieldName]&#x3A; { value: any, errors: [Error] } }) |
| setFieldsValue | 设置一组输入控件的值(注意:不要在 `componentWillReceiveProps` 内使用,否则会导致死循环,[更多](https://github.com/ant-design/ant-design/issues/2985) | Function({ [fieldName]&#x3A; value } |
| validateFields | 校验并获取一组输入域的值与 Error若 fieldNames 参数为空,则校验全部组件 | Function(\[fieldNames: string\[]], [options: object], callback: Function(errors, values)) |
| setFields | 设置一组输入控件的值与错误状态:[代码](https://github.com/react-component/form/blob/3b9959b57ab30b41d8890ff30c79a7e7c383cad3/examples/server-validate.js#L74-L79) | ({<br />&nbsp;&nbsp;\[fieldName\]: {value: any, errors: \[Error\] }<br />}) => void |
| setFieldsValue | 设置一组输入控件的值(注意:不要在 `componentWillReceiveProps` 内使用,否则会导致死循环,[原因](https://github.com/ant-design/ant-design/issues/2985) | ({ \[fieldName\]&#x3A; value }) => void |
| validateFields | 校验并获取一组输入域的值与 Error若 fieldNames 参数为空,则校验全部组件 | (<br />&nbsp;&nbsp;\[fieldNames: string\[]],<br />&nbsp;&nbsp;\[options: object\],<br />&nbsp;&nbsp;callback(errors, values)<br />) => void |
| validateFieldsAndScroll | 与 `validateFields` 相似,但校验完后,如果校验不通过的菜单域不在可见范围内,则自动滚动进可见范围 | 参考 `validateFields` |
### this.props.form.validateFields/validateFieldsAndScroll(\[fieldNames: string\[]], [options: object], callback: Function(errors, values))
### validateFields/validateFieldsAndScroll
```jsx
const { form: { validateFields } } = this.props;
validateFields((errors, values) => {
// ...
});
validateFields(['field1', 'field2'], (errors, values) => {
// ...
});
validateFields(['field1', 'field2'], options, (errors, values) => {
// ...
});
```
| 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
@@ -170,10 +183,7 @@ this.form // => The instance of CustomizedForm
### Form.Item
注意:
- 一个 Form.Item 建议只放一个被 getFieldDecorator 装饰过的 child当有多个被装饰过的 child 时,`help` `required` `validateStatus` 无法自动生成。
- `2.2.0` 之前,只有当表单域为 Form.Item 的子元素时,才会自动生成 `help` `required` `validateStatus`,嵌套情况需要自行设置。
注意:一个 Form.Item 建议只放一个被 getFieldDecorator 装饰过的 child当有多个被装饰过的 child 时,`help` `required` `validateStatus` 无法自动生成。
| 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
@@ -205,12 +215,6 @@ this.form // => The instance of CustomizedForm
更多高级用法可研究 [async-validator](https://github.com/yiminghe/async-validator)。
<style>
.code-box-demo .ant-form:not(.ant-form-inline):not(.ant-form-vertical) {
max-width: 600px;
}
</style>
## 在 TypeScript 中使用
```jsx
@@ -223,6 +227,16 @@ interface UserFormProps extends FormComponentProps {
}
class UserForm extends React.Component<UserFormProps, any> {
// ...
}
```
<style>
.code-box-demo .ant-form:not(.ant-form-inline):not(.ant-form-vertical) {
max-width: 600px;
}
.markdown.api-container table td:last-child {
white-space: nowrap;
word-wrap: break-word;
}
</style>

View File

@@ -131,7 +131,9 @@ input[type="checkbox"] {
.@{form-prefix-cls}-explain,
.@{form-prefix-cls}-extra {
color: @text-color-secondary;
line-height: @line-height-base;
// Magic tweak pixel number to float line-height diff in windows
// Fix https://github.com/ant-design/ant-design/issues/12803
line-height: @line-height-base + 0.024;
transition: color .3s @ease-out; // sync input color transition
margin-top: @form-help-margin-top;
clear: both;
@@ -381,9 +383,10 @@ form {
margin-bottom: 24px;
}
> .@{form-prefix-cls}-item-control-wrapper, > .@{form-prefix-cls}-item-label {
> .@{form-prefix-cls}-item-control-wrapper,
> .@{form-prefix-cls}-item-label {
display: inline-block;
vertical-align: middle;
vertical-align: top;
}
}
@@ -394,11 +397,6 @@ form {
.has-feedback {
display: inline-block;
}
// Fix https://github.com/ant-design/ant-design/issues/1040
.@{form-prefix-cls}-explain {
position: absolute;
}
}
// Validation state

View File

@@ -0,0 +1,9 @@
import createContext, { Context } from 'create-react-context';
export interface RowContextState {
gutter?: number;
}
const RowContext: Context<RowContextState> = createContext({});
export default RowContext;

View File

@@ -1,5 +1,23 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Grid renders wrapped Col correctly 1`] = `
<div
class="ant-row"
style="margin-left:-10px;margin-right:-10px"
>
<div>
<div
class="ant-col-12"
style="padding-left:10px;padding-right:10px"
/>
</div>
<div
class="ant-col-12"
style="padding-left:10px;padding-right:10px"
/>
</div>
`;
exports[`Grid should render Col 1`] = `
<div
class="ant-col-2"

View File

@@ -9,10 +9,24 @@ describe('Grid', () => {
);
expect(wrapper).toMatchSnapshot();
});
it('should render Row', () => {
const wrapper = render(
<Row />
);
expect(wrapper).toMatchSnapshot();
});
it('renders wrapped Col correctly', () => {
const MyCol = () => <Col span="12" />;
const wrapper = render(
<Row gutter={20}>
<div>
<Col span="12" />
</div>
<MyCol />
</Row>
);
expect(wrapper).toMatchSnapshot();
});
});

View File

@@ -1,6 +1,7 @@
import * as React from 'react';
import * as PropTypes from 'prop-types';
import classNames from 'classnames';
import RowContext from './RowContext';
const stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);
const objectOrNumber = PropTypes.oneOfType([PropTypes.object, PropTypes.number]);
@@ -76,6 +77,20 @@ export default class Col extends React.Component<ColProps, {}> {
[`${prefixCls}-pull-${pull}`]: pull,
}, className, sizeClassObj);
return <div {...others} className={classes}>{children}</div>;
return (
<RowContext.Consumer>
{({ gutter }) => {
let style = others.style;
if (gutter as number > 0) {
style = {
paddingLeft: (gutter as number) / 2,
paddingRight: (gutter as number) / 2,
...style,
};
}
return <div {...others} style={style} className={classes}>{children}</div>;
}}
</RowContext.Consumer>
)
}
}

View File

@@ -2,7 +2,7 @@
// https://github.com/WickyNilliams/enquire.js/issues/82
let enquire: any;
if (typeof window !== 'undefined') {
const matchMediaPolyfill = (mediaQuery: string): MediaQueryList => {
const matchMediaPolyfill = (mediaQuery: string) => {
return {
media: mediaQuery,
matches: false,
@@ -17,9 +17,9 @@ if (typeof window !== 'undefined') {
}
import * as React from 'react';
import { Children, cloneElement } from 'react';
import classNames from 'classnames';
import * as PropTypes from 'prop-types';
import RowContext from './RowContext';
export type Breakpoint = 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';
export type BreakpointMap = Partial<Record<Breakpoint, string>>;
@@ -100,7 +100,7 @@ export default class Row extends React.Component<RowProps, RowState> {
Object.keys(responsiveMap)
.map((screen: Breakpoint) => enquire.unregister(responsiveMap[screen]));
}
getGutter() {
getGutter(): number | undefined {
const { gutter } = this.props;
if (typeof gutter === 'object') {
for (let i = 0; i <= responsiveArray.length; i++) {
@@ -110,7 +110,7 @@ export default class Row extends React.Component<RowProps, RowState> {
}
}
}
return gutter;
return gutter as number;
}
render() {
const {
@@ -129,23 +129,14 @@ export default class Row extends React.Component<RowProps, RowState> {
marginRight: (gutter as number) / -2,
...style,
} : style;
const cols = Children.map(children, (col: React.ReactElement<HTMLDivElement>) => {
if (!col) {
return null;
}
if (col.props && (gutter as number) > 0) {
return cloneElement(col, {
style: {
paddingLeft: (gutter as number) / 2,
paddingRight: (gutter as number) / 2,
...col.props.style,
},
});
}
return col;
});
const otherProps = { ...others };
delete otherProps.gutter;
return <div {...otherProps} className={classes} style={rowStyle}>{cols}</div>;
return (
<RowContext.Provider value={{ gutter }}>
<div {...otherProps} className={classes} style={rowStyle}>
{children}
</div>
</RowContext.Provider>
);
}
}

View File

@@ -23,7 +23,7 @@ export default function create(options: CustomIconOptions = {}): React.SFC<IconP
&& !customCache.has(scriptUrl)
) {
const script = document.createElement('script');
script.setAttribute('src', `https:${scriptUrl}`);
script.setAttribute('src', scriptUrl);
script.setAttribute('data-namespace', scriptUrl);
customCache.add(scriptUrl);
document.body.appendChild(script);

View File

@@ -8,6 +8,7 @@ exports[`Icon \`component\` prop can access to svg defs if has children 1`] = `
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
>
@@ -250,6 +251,7 @@ exports[`Icon should support pass svg paths as children 1`] = `
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
viewBox="0 0 24 24"
width="1em"
@@ -272,6 +274,7 @@ exports[`Icon should support svg react component 1`] = `
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
>
@@ -325,6 +328,7 @@ exports[`Icon.createFromIconfontCN() should support iconfont.cn 1`] = `
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
>
@@ -340,6 +344,7 @@ exports[`Icon.createFromIconfontCN() should support iconfont.cn 1`] = `
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
>
@@ -355,6 +360,7 @@ exports[`Icon.createFromIconfontCN() should support iconfont.cn 1`] = `
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
>

View File

@@ -96,6 +96,35 @@ describe('Icon', () => {
expect(wrapper.instance().tooltip.props.visible).toBe(false);
});
it('should support custom usage of children', () => {
expect(() => {
render(<Icon type="custom">&E648</Icon>);
}).not.toThrow();
});
describe('warning on conflicting theme', () => {
let errorSpy;
beforeEach(() => {
errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
});
afterEach(() => {
errorSpy.mockRestore();
});
it('does not warn', () => {
mount(<Icon type="clock-circle-o" theme="outlined" />);
expect(errorSpy).not.toBeCalled();
});
it('warns', () => {
mount(<Icon type="clock-circle-o" theme="filled" />);
expect(errorSpy).toBeCalledWith(
"Warning: The icon name 'clock-circle-o' already specify a theme 'outlined', the 'theme' prop 'filled' will be ignored."
);
});
});
describe('`component` prop', () => {
it('can access to svg defs if has children', () => {
const wrapper = render(

View File

@@ -29,7 +29,20 @@ ReactDOM.render(<IconDisplay />, mountNode);
| component | The component used for the root node. This will override the **`type`** property. | ComponentType<CustomIconComponentProps\> | - |
| twoToneColor | Only support the two-tone icon. Specific the primary color. | string (hex color) | - |
The properties `theme`, `component` and `twoToneColor` are added in `antd@3.9.x`. The best practice is to pass the property `theme` to every `<Icon />` components.
### SVG icons
We introduced SVG icons in `3.9.0` version replacing font icons which brings benefits below:
- Complete offline usage of icon, no dependency of CDN font icon file and no more empty square during downloading than no need to deploy icon font files locally either.
- Much more display accuracy in lower-level screens.
- Support multiple colors for icon.
- No need to change built-in icons with overriding styles by providing more props in component.
More discussion of SVG icon reference to [#10353](https://github.com/ant-design/ant-design/issues/10353).
> ⚠️ About the extra bundle size brought by all SVG icons we imported in 3.9.0, we will provide new API to allow developers importing icons as your need, you can trace [#12011](https://github.com/ant-design/ant-design/issues/12011) for further progress.
The properties `theme`, `component` and `twoToneColor` are added in `3.9.0`. The best practice is to pass the property `theme` to every `<Icon />` components.
```jsx
<Icon type="star" theme="filled" />
@@ -41,6 +54,8 @@ All the icons will render to `<svg>`. You can still set `style` and `className`
<Icon type="message" style={{ fontSize: '16px', color: '#08c' }} theme="outlined" />
```
### Set TwoTone Color
When using the two-tone icons, you can use the static methods `Icon.getTwoToneColor()` and `Icon.setTwoToneColor(colorString)` to spicify the primary color.
```jsx
@@ -48,7 +63,36 @@ Icon.setTwoToneColor('#eb2f96');
Icon.getTwoToneColor(); // #eb2f96
```
You can import svg icon as an react component by using `webpack` and [`@svgr/webpack`](https://www.npmjs.com/package/@svgr/webpack). `@svgr/webpack`'s `options` [reference](https://github.com/smooth-code/svgr#options).
### Custom Font Icon
We added a `createFromIconfontCN` function to help developer using their own icons deployed at [iconfont.cn](http://iconfont.cn/) in a convenient way.
> This method is specified for [iconfont.cn](http://iconfont.cn/).
```js
const MyIcon = Icon.createFromIconfontCN({
scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js', // generated by iconfont.cn
});
ReactDOM.render(<MyIcon type="icon-example" />, mountedNode);
```
It create a component that uses SVG sprites in essence.
The following options are available:
| Property | Description | Type | Default |
| --- | --- | --- | --- |
| scriptUrl | The URL generated by [iconfont.cn](http://iconfont.cn/) project. | string | - |
| extraCommonProps | Define extra properties to the component | `{ [key: string]: any }` | {} |
The property `scriptUrl` should be set to import the SVG sprite symbols.
See [iconfont.cn documents](http://iconfont.cn/help/detail?spm=a313x.7781069.1998910419.15&helptype=code) to learn about how to generate `scriptUrl`.
### Custom SVG Icon
You can import SVG icon as an react component by using `webpack` and [`@svgr/webpack`](https://www.npmjs.com/package/@svgr/webpack). `@svgr/webpack`'s `options` [reference](https://github.com/smooth-code/svgr#options).
```js
// webpack.config.js
@@ -88,31 +132,3 @@ The following properties are available for the component:
| fill | Define the color used to paint the `svg` element | string | 'currentColor' |
| className | The computed class name of the `svg` element | string | - |
| style | The computed style of the `svg` element | CSSProperties | - |
### Use custom icon with iconfont.cn
#### Icon.createFromIconfontCN(options)
This method is specified for [iconfont.cn](http://iconfont.cn/).
```js
const MyIcon = Icon.createFromIconfontCN({
scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js', // generated by iconfont.cn
});
ReactDOM.render(<MyIcon type="icon-example" />, mountedNode);
```
It create a component that uses SVG sprites in essence.
The following options are available:
| Property | Description | Type | Default |
| --- | --- | --- | --- |
| scriptUrl | The URL generated by [iconfont.cn](http://iconfont.cn/) project. | string | - |
| extraCommonProps | Define extra properties to the component | `{ [key: string]: any }` | {} |
The property `scriptUrl` should be set to import the svg sprite symbols.
See [iconfont.cn documents](http://iconfont.cn/help/detail?spm=a313x.7781069.1998910419.15&helptype=code) to learn about how to generate `scriptUrl`.

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