Compare commits

...

559 Commits
2.5.2 ... 2.7.2

Author SHA1 Message Date
Benjy Cui
cad31bd499 bump 2.7.2 2017-02-17 18:02:58 +08:00
Benjy Cui
3d9d2e508e docs: add change log for 2.7.2 (#4922)
* docs: add change log for 2.7.2

* deps: upgrade bisheng-plugin-antd
2017-02-17 18:02:06 +08:00
afc163
2d02792da7 Add max-height for table filter dropdown menu, close #4916 2017-02-17 17:41:23 +08:00
afc163
28dbdd17ed fix for #4920 2017-02-17 14:11:10 +08:00
Benjy Cui
56995e2089 test: update snapshot 2017-02-17 13:59:13 +08:00
Benjy Cui
89d77b2354 deps: upgrade rc-slider, ref: #4719 2017-02-17 13:59:13 +08:00
afc163
bed59cf658 fix lint 2017-02-17 13:58:24 +08:00
afc163
a87016ce54 Make sure DatePicker style.width can be effective, close #4920 2017-02-17 12:05:22 +08:00
afc163
bc988f486b fix css rule should not be prefixed, close #4915 2017-02-17 11:32:02 +08:00
ddcat1115
7d3cbfd9d9 fix: menu[mode='vertical'] can not show submenu in Layout.Sider (#4904)
* fix menu[mode='vertical'] can not show submenu in Layout.Sider
close #4890

improve Layout demo

* del useless css
2017-02-17 11:12:52 +08:00
Chikara Chan
5ff8723a9f docs: fix import style error due to duplicated identifier (#4917)
* fix render unuse className when type is undefined

* docs: fix import style error due to duplicated identifier
2017-02-17 11:11:42 +08:00
Wei Zhu
58afe5f729 fix: build dist with locales (#4910) 2017-02-17 09:36:42 +08:00
afc163
df3617dded docs: improve API table layout 2017-02-17 00:59:11 +08:00
偏右
bace209d52 Update CHANGELOG.zh-CN.md 2017-02-17 00:06:00 +08:00
afc163
94e8138639 adjust spin style 2017-02-16 21:55:03 +08:00
afc163
989792ed9b simplify less code 2017-02-16 21:24:17 +08:00
afc163
74028f6e48 Fix pop menu padding 2017-02-16 17:56:27 +08:00
Benjy Cui
8cfdf68f75 deps: upgrade bisheng-plugin-react 2017-02-16 17:32:06 +08:00
afc163
477e150075 Fix some SubMenu style bug, close #4906 2017-02-16 17:31:08 +08:00
afc163
49b050ccc1 Improve button and badge[status] with pulse animation 2017-02-16 17:08:15 +08:00
Benjy Cui
c4ac919067 fix: Menu.Item border width should not show animation 2017-02-16 16:32:03 +08:00
afc163
6002a3351e update docs 2017-02-16 16:26:53 +08:00
afc163
d1678711a7 docs: update footer 2017-02-16 16:25:42 +08:00
afc163
d22ce9cd50 Improve menu and collapse style details 2017-02-16 15:38:24 +08:00
afc163
144393c48a demo: update menu sider demo 2017-02-16 15:38:24 +08:00
偏右
4c0af2ba1f refactor: reduce table nested level (#4869)
* reduce table nested level, #4868

* update table snapshot
2017-02-16 15:36:34 +08:00
陆离
1c24600f8f fix: tree DragOver Gap fix (#4867)
*  Tree DragOver Gap fix

 + close #4858

* rewrite
2017-02-16 15:35:22 +08:00
偏右
f5d697988a fix: Tooltip should work with disabled button (#4865)
* Fix Tooltip won't hide at disabled button

close react-component/tooltip#18

* change button text in test case

* Add comments for display attribute

* correct test case
2017-02-16 14:03:05 +08:00
afc163
af62254597 fix #4637 again 2017-02-16 13:27:43 +08:00
afc163
8941990e74 revert 1490a40, ref #4637, close #4899 2017-02-16 12:00:00 +08:00
Wei Zhu
0cb6645038 site: Link to edit page directly (#4895) 2017-02-16 10:18:41 +08:00
Wei Zhu
2258f41f6b docs: add nested Table demo (#4887)
* Remove Table pagination demo

* Add nested table
2017-02-16 10:04:55 +08:00
HQidea
7471780ffe fix: fix Radio children === 0 (#4882) 2017-02-16 10:00:00 +08:00
Cordaro
168c576d4a docs: fix getFieldDecorator param (#4896)
close #4894
2017-02-15 22:58:24 +08:00
afc163
3ee7871a6e update .eslintignore 2017-02-15 21:01:16 +08:00
afc163
5603fa0088 Fix upload error file style, close #4810 2017-02-15 20:58:40 +08:00
afc163
d8403718f9 Add test case for #4876 2017-02-15 18:00:20 +08:00
afc163
32e10784e1 Fix submenu active style in controlled mode 2017-02-15 17:14:40 +08:00
afc163
e801cd022e fix snapshot 2017-02-15 16:40:26 +08:00
afc163
ec81fe4f1c update MonthPicker demo 2017-02-15 16:32:20 +08:00
afc163
4cbcc05b02 Fix openKeys is not working when mode is switched, close #4876 2017-02-15 16:24:56 +08:00
afc163
9fede4a5cd site: adjust component select style 2017-02-15 15:55:35 +08:00
afc163
588dd3033f docs: update for customizing validation 2017-02-15 14:41:16 +08:00
afc163
658922e796 Update link 2017-02-15 14:41:16 +08:00
Wei Zhu
972c2cfa95 fix: empty table placehoder style (#4851)
* Remove redundant border

* Fix empty table placehoder style
2017-02-15 12:08:17 +08:00
afc163
5327a49161 Fix Button[shape="circle"] loading style, close #4875 2017-02-15 11:55:08 +08:00
afc163
94ec19570e Make InputNumber & RadioButton height style more flexible 2017-02-15 11:47:22 +08:00
afc163
c86d9f1abc Make form control height follow large input height 2017-02-15 11:19:16 +08:00
afc163
c296d1a918 remove unused ant-select-show-search className, close #4859 2017-02-14 20:29:00 +08:00
Benjy Cui
a0c1d22d92 deps: upgrade bisheng 2017-02-14 18:03:47 +08:00
afc163
e18a330fbd Fix danger button click effect 2017-02-14 18:01:36 +08:00
zilong
597e020a45 chore: add class ant-form-item-control-wrapper for formItem wrapper (#4856) 2017-02-14 10:46:54 +08:00
zollero
e7cb0aa95d docs: fix typo (#4855)
修改一个错别字:“通” --》 “同”
2017-02-14 10:43:11 +08:00
Benjy Cui
184c4f5af7 docs: update docs for Form, ref: #4093 2017-02-14 10:29:06 +08:00
afc163
1490a40fc6 Fix #4637 webkit only 2017-02-13 18:32:05 +08:00
afc163
e2c46b78bf revert commit fb421f1 in #4637, close #4850 2017-02-13 17:56:36 +08:00
afc163
df1e30d9f8 Tweak radio vertical align 2017-02-13 16:38:31 +08:00
陆离
135fd52afb docs: AutoComplete document and demo improvement (#4840)
*  AutoComplete document and demo improvement

 + add a non-case-sensitive demo, close #4834.
 + remove confusing descriptions from document, close #4805.

* add snapshot
2017-02-13 15:45:49 +08:00
afc163
e5ccc1d4ba fix for stylelint 2017-02-13 15:01:02 +08:00
afc163
aaa939cf87 refactor version import 2017-02-13 14:57:04 +08:00
afc163
8726e8581b New animation for Badge[status="processing"] 2017-02-13 14:49:03 +08:00
偏右
dd589a4366 fix: change way to add package.version (#4842)
* Change way to add package.version

* replace content than create new content
2017-02-13 14:27:12 +08:00
Benjy Cui
1f223d8e4c fix: disabled option are not selectable, close: #4699 2017-02-13 11:55:12 +08:00
Benjy Cui
200b88246f docs: update docs format 2017-02-13 10:55:53 +08:00
Benjy Cui
eee34f1829 fix: footer button should align with cross button 2017-02-13 10:23:55 +08:00
乐仪
07c2d67e9f Merge branch 'master' of https://github.com/ant-design/ant-design 2017-02-10 23:53:17 +08:00
乐仪
4ecceeca41 remove duplicate changelog 2017-02-10 23:49:48 +08:00
乐仪
ff658c17f6 - update CHANGLOG
- update Pagination docs
2017-02-10 22:59:46 +08:00
陆离
49bbb2225f Add Demo of Uncertain Category (#4828)
*  Add Demo of Uncertain Category

 + close #4736

* add class prefix and cut lines
2017-02-10 22:59:28 +08:00
Erwann Mest
af7dafe0b8 Update LocaleProvider doc to be clearer. (#4833)
* Update LocaleProvider doc to be clearer.

* Update index.en-US.md
2017-02-10 22:59:16 +08:00
乐仪
1306c4656d - version -> 2.7.1
- rc-pagination -> ~1.7.0
- fix site bug
2017-02-10 20:32:55 +08:00
陆离
9711c6bbf6 Anchor position with offsetTop bug (#4817)
+ close #4706
 + `<Anchor offset={x} />` will calculate target position correctly.
2017-02-10 16:34:10 +08:00
Benjy Cui
5d2513ce91 docs: update img 2017-02-10 13:55:17 +08:00
afc163
948edb227f fix tabs border radius 2017-02-10 13:24:24 +08:00
Benjy Cui
6fdc6ff19a site: homepage will switch to right lang, close: #4552 2017-02-10 12:12:13 +08:00
Benjy Cui
a14bb37ae5 site: can search with google now, close: #4814 2017-02-10 11:46:57 +08:00
Benjy Cui
34edd91207 chore: remove useless code 2017-02-10 09:43:33 +08:00
Warren Seymour
7010dd018d Add 'middle' as a valid value for Table.props.size (#4819) 2017-02-09 22:43:58 +08:00
ddcat1115
16ad027988 change version slector position (#4799) 2017-02-09 19:46:23 +08:00
Benjy Cui
251930f183 docs: fix some link 2017-02-09 17:55:26 +08:00
Benjy Cui
bdd5be88f2 site: generate link with locale 2017-02-09 17:55:26 +08:00
Benjy Cui
a950a1298a site: upgrade bisheng to 0.21.0 2017-02-09 17:55:26 +08:00
afc163
ac23cca8b3 Fix missing ts types for TabPane, close #4776 2017-02-09 16:25:16 +08:00
afc163
df2982aacf Fix spec/layout demo, close #4816 2017-02-09 16:22:03 +08:00
afc163
d1b91bcc99 Fix direction of pop animation for Dropdown, ref #4811 2017-02-09 15:45:51 +08:00
ddcat1115
d71252ea12 improve Layout.Sider's animation effect (#4812) 2017-02-09 15:20:06 +08:00
afc163
5a643418d2 docs: Add missing demo and document fo Dropdown[placement], close #4811 2017-02-09 15:09:32 +08:00
Benjy Cui
c88cdc60ce docs: update docs for form, close: #4802 2017-02-09 14:50:25 +08:00
afc163
10199e5d96 docs: update customize theme doc
ref: dvajs/dva#562 dvajs/dva#575
2017-02-09 14:44:36 +08:00
afc163
4ec6bf3bcd Fix a strange cover bug with Affix, close #4800 2017-02-09 11:43:41 +08:00
偏右
e0c2b872ce upgrade @types/react version (#4741)
ref DefinitelyTyped/DefinitelyTyped#14284
2017-02-09 11:09:32 +08:00
zhenzong
fdaf15d16c fix issue #4783 (#4788) 2017-02-09 11:09:22 +08:00
陆离
fc3f4e1922 fix AutoComplete size (#4768)
*  fix AutoComplete size

 + close #4766

* use input mixin

* use css variables

*  use children directly instead of React.Children.toArray

 + close #4778
2017-02-09 10:45:42 +08:00
afc163
637c479c4c Fix Tabs in IE9, close #4795 2017-02-08 17:16:48 +08:00
afc163
5b14b4f1eb docs: update Col missing API in english doc 2017-02-08 15:22:33 +08:00
yiminghe
dbae84c83d add version (#4751)
* add version

* add version to dist
2017-02-08 14:53:18 +08:00
陆离
3789e0cbbb Affix listener bug fix (#4756)
*  Affix listener bug fix

 + close #4755
 + close #4760
 + clearScrollEventListeners before setTargetEventListeners
 + add tests for throttle
 + append affix test case

*  genMockFn -> fn()
2017-02-08 14:44:43 +08:00
Wei Zhu
f84dfbbaa9 Fix table filter in JSX (#4765)
Fix #4759
2017-02-08 14:43:00 +08:00
afc163
a07c71165a demo: update table demo code style 2017-02-08 14:42:33 +08:00
偏右
75a4b06e44 Unified border radius, close #4772 (#4773) 2017-02-08 14:21:29 +08:00
afc163
f9ee19ae05 Improve breadcrumb separator color for darker background 2017-02-08 14:09:27 +08:00
afc163
3bc202a721 update link to cn version 2017-02-08 13:15:19 +08:00
afc163
50ccc3ad7d fix link, #4793 2017-02-08 13:14:38 +08:00
afc163
33c171c04b docs: update for compatibility 2017-02-08 11:33:41 +08:00
Benjy Cui
9ed06dea8a docs: remove outdated warning, ref: #4783 2017-02-08 09:40:25 +08:00
Chikara Chan
64f6a71cc9 fix: should not render useless className when type is undefined (#4784) 2017-02-08 09:31:09 +08:00
zerob4wl
a39d435925 Update without-form-create.md (#4781)
typo
2017-02-07 21:38:14 +08:00
afc163
93e152268c remove it.only, ref #4779 2017-02-07 21:21:51 +08:00
afc163
a585f603d0 Fix Table selection page-jumping issue, close #4779 2017-02-07 21:09:51 +08:00
afc163
de185ddc19 docs: update text 2017-02-07 19:56:08 +08:00
afc163
cf22bb926a site: update footer style 2017-02-07 19:54:30 +08:00
afc163
ef5df24936 fix InputNumber onChange argument type 2017-02-07 17:27:28 +08:00
afc163
d8f6accbba docs: update input number api 2017-02-07 17:26:40 +08:00
afc163
1e55c145cc docs: update babel option 2017-02-07 17:20:59 +08:00
afc163
94f5a07f68 Add rowKey link into console warning message 2017-02-07 15:32:44 +08:00
afc163
168cec0dd1 docs: move Release Schedule to changelog 2017-02-07 15:22:16 +08:00
afc163
ac40780265 site: update footer link 2017-02-07 14:57:09 +08:00
Benjy Cui
5d7fc8c2b8 chore: add comment for tricky code 2017-02-07 12:10:20 +08:00
Benjy Cui
c565d42847 Revert "chore: remove useless code, close: #4402"
This reverts commit 9b77a21a16.
2017-02-07 12:05:12 +08:00
afc163
10d6486b4d docs: fix markdown link 2017-02-07 00:40:37 +08:00
Benjy Cui
9b77a21a16 chore: remove useless code, close: #4402 2017-02-06 18:04:37 +08:00
Benjy Cui
0408c8c133 style: update code style to fix lint 2017-02-06 15:12:02 +08:00
Benjy Cui
d2b8d65c87 style: update code style to please lint, close: #2179 2017-02-06 12:09:58 +08:00
Benjy Cui
382dd86475 chore: replace lesshint with stylelint 2017-02-06 12:09:58 +08:00
afc163
2196774b7f update less code style 2017-02-06 10:54:59 +08:00
Benjy Cui
766cded638 docs: update docs for Grid, close: #4744 2017-02-06 10:28:59 +08:00
Jesper We
f7aaa0d399 Fix issues with the new Swedish locale provider. (#4762) 2017-02-05 22:18:10 +08:00
afc163
0eb5c689a3 remove type="ghost" from demo 2017-02-04 22:35:33 +08:00
afc163
a5d69b893b add blank 2017-02-04 18:32:31 +08:00
afc163
a67264d68c Add aliases for icon naming style, close #4758 2017-02-04 18:10:25 +08:00
afc163
dbc2895899 Add Changelog 2017-02-04 18:06:57 +08:00
afc163
8775e7de5e Fix scroll Table lagging issue in IE, close #4522 2017-02-04 17:58:48 +08:00
afc163
70a0cc0940 fix badge borderColor 2017-02-04 01:14:10 +08:00
afc163
1a5f0f9fa7 remove whitespaces 2017-02-04 01:13:35 +08:00
afc163
b0fede60f7 update changelog 2017-02-03 19:04:12 +08:00
afc163
fb421f10e0 Change another approach to fix #4637
avoid issues like #4750 and #4753 caused by old way
2017-02-03 19:01:06 +08:00
偏右
f786f607cf Fix misplace Badge when browser zoom above 100% (#4749)
close #4747 #4290 #4176
2017-02-03 14:20:42 +08:00
afc163
24b1e1913a update button text 2017-02-01 12:00:12 +08:00
afc163
c17fc7c2ad remove blank line 2017-01-31 22:03:20 +08:00
afc163
a53e0668e1 update changelog for tree-select 2017-01-31 22:02:47 +08:00
afc163
5f8988a266 fix ghost primary button hover border color 2017-01-31 21:27:23 +08:00
afc163
f976eb8f1e Lock @types/react for #4741 temporarily 2017-01-31 21:14:16 +08:00
afc163
d79a08c468 update links 2017-01-31 21:12:52 +08:00
afc163
98ad1a9186 site: update home 2017-01-31 21:00:45 +08:00
afc163
99317b4661 Fix changelog PR link 2017-01-31 20:42:33 +08:00
afc163
9f06925a79 update Changelog 2017-01-31 16:10:48 +08:00
Graeme Yeates
1006015ef0 Add border customization variables (#4734)
* Add border customization variables (#4712)

* Make border styles customizable (fixes #4712)
2017-01-31 16:05:10 +08:00
afc163
7381cc95fe update input test case 2017-01-31 16:03:14 +08:00
afc163
767c4ab70d docs: update LocalProvider doc 2017-01-31 15:08:35 +08:00
afc163
99e7139634 docs: update LocalProvider doc 2017-01-31 15:08:07 +08:00
afc163
611b6acb11 site: update Home button text 2017-01-31 15:05:17 +08:00
afc163
3a3efc3e5a test input auto calculate height 2017-01-30 20:05:47 +08:00
afc163
30b2fa2c37 Move locale files 2017-01-30 18:20:57 +08:00
afc163
c9335c56ad update Dependency Status url 2017-01-30 18:09:37 +08:00
afc163
53b94a5996 site: update start button style 2017-01-30 17:44:25 +08:00
afc163
2b41f098c7 update changelog for input-number 2017-01-30 12:54:02 +08:00
afc163
ffcdbb66ab docs: improve changelog 2017-01-30 12:50:49 +08:00
afc163
b6b507d6be docs: improve changelog 2017-01-30 12:50:39 +08:00
RaoHai
2e0bfe975a 2.7.0 🎉 2017-01-30 12:17:15 +08:00
陆离
faf14df55e Merge pull request #4732 from ant-design/feature-2.7
antd 2.7 features
2017-01-30 11:23:48 +08:00
afc163
dda37d873b update LocaleProvider documentation 2017-01-27 17:54:57 +08:00
afc163
490a90b46f Add localProvider test for more language 2017-01-27 17:49:20 +08:00
afc163
95a74044b0 fix eslint warning 2017-01-27 17:26:52 +08:00
afc163
f2bb4afd4d Merge from master 2017-01-27 17:23:51 +08:00
Rex
aadf623dc6 support notification pop up from topLeft or bottomRight or bottomLeft (#4700)
* update snapshots

* update snapshots

* support notification pop up from topLeft or bottomRight or bottomLeft

* update snapshots

* 1. add test
2. update doc
3. support `placement` arguments in `open` method

* update doc

* update doc.
2017-01-27 17:12:25 +08:00
paranoidjk
f2e19c16be fix(transfer): checkall should response to filter result; fix #4654 (#4665) 2017-01-27 17:08:12 +08:00
Wei Zhu
85086f14b6 Using a special static property for type detecting (#4673)
Related issue: #4655
2017-01-27 17:08:05 +08:00
afc163
1a3ea43ebe Fix style prop of spin 2017-01-27 14:27:18 +08:00
Penghan Wang
29081542e6 doc: fix checkbox description error (#4731) 2017-01-27 13:54:15 +08:00
Benjy Cui
0d2b8989bc chore: update scripts 2017-01-27 11:32:03 +08:00
Penghan Wang
8a412ae260 doc: improve document for Form validateFields (#4730) 2017-01-27 10:39:09 +08:00
Andrey G
a96dd7a9f3 *up rc-menu (fixed bug with SubMenu) (#4727) 2017-01-26 19:10:45 +08:00
Benjy Cui
f0bdbfdd97 chore: improve readability for npm scripts 2017-01-26 17:04:31 +08:00
Bo Chen
f0adb4dc5f site: run ant-design on windows #4725
* 5hours's work

* 过年好!!

* lint issue
2017-01-26 16:51:06 +08:00
Valentin Vichnal
6c0dba60e7 Create reverseArrow prop for Sider (#4611)
Create reverseArrow prop for Sider
2017-01-26 12:30:37 +08:00
陆离
e270fa87af Mention in controlled mode suggestions bug fix (#4718)
*  Mention in controlled mode suggestions bug fix

 + close #4716
2017-01-26 12:09:26 +08:00
陆离
340385d34d pass style props to Affix (#4715)
+ close #4701
2017-01-26 12:08:40 +08:00
陆离
5cd111d486 recalculate width while resize (#4676)
+ close #4645
 + throttleByAnimationFrameDecorator as a function decorator
2017-01-26 11:23:54 +08:00
Benjy Cui
879bc9320c docs: update docs for Tooltip, close: #4724 2017-01-26 10:56:24 +08:00
Walter Barbagallo
5e3618c26d Fix Popover demo typo (#4703) 2017-01-25 21:27:14 +08:00
afc163
1ce6f7fc35 remove unused varable @layout-content-margin, close #4714 2017-01-25 21:18:06 +08:00
Simon Waloschek
fd233cf430 Added German locale (#4686)
* Added German locale

* Added German locale for pagination
2017-01-25 21:12:27 +08:00
Marius Ileana
882ecc370a Review of docs/spec/layout/demo/ceiling.md (#4709)
Small review corrections.
2017-01-25 21:11:02 +08:00
Marius Ileana
d2e862d3af Update aside.md (#4707)
Small review corrections.
2017-01-25 21:10:51 +08:00
Marius Ileana
a963fd1c60 Review of docs/spec/layout/demo/top.md (#4710)
Small review corrections.
2017-01-25 21:10:42 +08:00
afc163
a7517c7000 docs: update react-fa link 2017-01-25 12:00:38 +08:00
Wei Zhu
6a83118597 Upgrade rc-tree-select to 1.9.0 (#4698) 2017-01-25 11:15:41 +08:00
Marius Ileana
def370ee33 Update aside-collapse.md (#4708)
Small corrections as part of my review.
2017-01-25 11:12:04 +08:00
偏右
0dfdace923 Keep bundle size warning out of server side 2017-01-24 21:38:43 +08:00
afc163
edf9ebb0ef Fix Button font size inside Dropdown, close #4705 2017-01-24 17:59:17 +08:00
afc163
f4e887b784 remove steps demo 2017-01-24 16:07:03 +08:00
afc163
f3b2e155b5 style: Select height should flex with @input-height variable, close #4694 2017-01-24 15:20:06 +08:00
afc163
70188ae40e Merge branch 'feature-2.7' of github.com:ant-design/ant-design into feature-2.7 2017-01-24 15:10:34 +08:00
afc163
75128c8e22 fix ts error, ref #4675 2017-01-24 15:10:25 +08:00
afc163
e5a735e888 fix ts error, ref #4675 2017-01-24 15:10:04 +08:00
afc163
f4021d5255 Fix default locale in Upload, close #4697 2017-01-24 15:02:54 +08:00
afc163
a81bf8f73e use file.thumbUrl for <img /> in priority, close #4653 2017-01-24 14:59:39 +08:00
偏右
f850993fda More types of Button (#4679)
* Add Button[ghost] property, close #4625

* Add danger button

close #1308

* update API doc about ghost and danger property
2017-01-23 22:24:36 +08:00
afc163
128d35b391 update Changelog for semver 2017-01-23 21:12:19 +08:00
偏右
273c089aad Add test case for LocalProvider (#4693) 2017-01-23 21:08:16 +08:00
afc163
bb54dce712 Add test case for Menu openKeys undefined bug
ref #4677 and #4692
2017-01-23 19:10:50 +08:00
afc163
720ea3690a expand dot responsive area 2017-01-23 16:18:49 +08:00
afc163
eb2a02618f update steps API 2017-01-23 16:09:34 +08:00
afc163
179f030d45 Remove labelPlacement 2017-01-23 16:04:05 +08:00
afc163
cd9c85c969 fix code demo type 2017-01-23 15:52:03 +08:00
ddcat1115
09397187ac Steps support progressDot and labelPlacement (#4659) 2017-01-23 14:37:40 +08:00
afc163
52577054ad fix site style breaks when there is lib directory 2017-01-23 14:31:21 +08:00
afc163
5b9d8f0e5a Fix style of Tabs[tabPosition&type="card"], close #4669 2017-01-23 14:11:14 +08:00
kacjay
1ed890c095 fix Menu selected change error (#4677)
protect none parameter[openKeys, defaultOpenKeys] Menu
2017-01-23 13:55:39 +08:00
Gray Choi
bde7d1c624 Translate layout specification (#4542)
* create english index file

* tanslated the index

* tanslated aside.md

* adjust code format

* translated aside-collapse.md

* translated ceiling.md

* translated top.md

* translated top-aside.md
2017-01-23 11:08:46 +08:00
caoyi
cebf3a4c9e docs: fix Mention props API (#4683) 2017-01-22 19:49:08 +08:00
afc163
fa10c9dee0 adjust page margin in small device, ref #4682 2017-01-22 19:31:25 +08:00
afc163
04a94a691e site: update sider menu order 2017-01-22 19:16:54 +08:00
afc163
7518fde405 Fix align issue inside InputGroup, close #4680 2017-01-22 18:50:12 +08:00
afc163
bcd3b63c50 update tag colorful demo 2017-01-22 16:23:11 +08:00
afc163
9598169f90 fix tag snapshot test 2017-01-22 16:21:18 +08:00
afc163
f343d6c606 fix tag snapshot test 2017-01-22 16:20:20 +08:00
afc163
a183ee8ede Adjust Tag vertical-align and margin 2017-01-22 16:09:13 +08:00
afc163
b2ee5b2319 Adjust Tag vertical-align and margin 2017-01-22 16:08:54 +08:00
Wei Zhu
f91ac37ad3 docs: Oops, no onHover event. 2017-01-22 15:05:32 +08:00
Wei Zhu
774b778474 docs: Add note to Popconfirm, Popover and tooltip about child node.
Related issue: #4672
2017-01-22 14:29:24 +08:00
afc163
2d2534321a Fix Table fixed header align issue, close #4637 2017-01-22 11:15:14 +08:00
afc163
0b2342f9c2 update README.md 2017-01-22 01:19:04 +08:00
afc163
2292a8e6c5 update README.md 2017-01-22 01:15:29 +08:00
Wei Zhu
c681e8acf2 docs: Add backquote to default value 2017-01-21 22:35:42 +08:00
afc163
896bd7e55b fix site style breaks when there is lib directory 2017-01-20 21:41:24 +08:00
Wei Zhu
d596299210 Bump version 2017-01-20 21:34:34 +08:00
afc163
5a8d15333d site: update header style 2017-01-20 20:52:12 +08:00
Wei Zhu
703ccadb83 Add 2.6.4 CHANGELOG (#4667) 2017-01-20 20:23:43 +08:00
Wei Zhu
77b78a9389 docs: Unify type naming (#4636)
* Unify name of ReactNode type in document

* Lowser all string type name

* Lowercase all number type name

* Lowercase all boolean type name

* Unify array type

* Lowercase all object type name

* Unify mutilple types
2017-01-20 20:10:50 +08:00
ddcat1115
d2c00fae4b fix Layout demo (#4661)
* fix Layout demo

* update snapshot
2017-01-20 20:09:59 +08:00
afc163
67da059874 fix demo language 2017-01-20 18:39:13 +08:00
afc163
35523be6e9 Merge from master 2017-01-20 18:28:09 +08:00
陆离
bee522133e docs: Autocomplete optionLabelProp document (#4663)
close #4656
2017-01-20 16:16:31 +08:00
Wei Zhu
823ac6c139 fix TableColumnConfig exporting, #4660 2017-01-20 16:08:20 +08:00
afc163
9c6ce3fe48 fix RangePicker snapshot 2017-01-20 14:12:06 +08:00
afc163
e245facb48 Fix table snapshots 2017-01-20 13:43:39 +08:00
afc163
6c98d94b0d site: improve style of toc and color page 2017-01-20 13:41:26 +08:00
Benjy Cui
eb254572b7 site: upgrade bisheng to 0.20.0 2017-01-20 11:48:38 +08:00
afc163
2004c13653 Add semver link 2017-01-20 11:47:31 +08:00
afc163
fae7fd1658 Fix default value of Table showHeader, close #4658 2017-01-20 11:34:08 +08:00
偏右
48ea23e026 Update README-zh_CN.md 2017-01-20 01:10:06 +08:00
偏右
fd1ae531f4 Update README.md 2017-01-20 01:07:13 +08:00
Wei Zhu
fd861d6c0d Tweak empty table border (#4650) 2017-01-19 22:40:30 +08:00
afc163
ddc7054751 Fix fixed column table border radius 2017-01-19 21:51:53 +08:00
afc163
1db0e06bc4 Fix Table[small]'s title and footer border, close #4647 2017-01-19 21:49:03 +08:00
afc163
5203cabb8f update comment 2017-01-19 17:36:02 +08:00
afc163
fe5f8910dd Hide scroll bar in fixed header of table, close #4637 2017-01-19 16:08:21 +08:00
Benjy Cui
3e17551b7e site: improve build speed 2017-01-19 15:22:53 +08:00
afc163
e90189db8d site: improve style of component demo toc 2017-01-19 15:09:03 +08:00
afc163
df0426b2c9 workaround for table loading style in safari, close #4622 2017-01-19 15:08:28 +08:00
afc163
9189d3cc5d Fix Cascader[disabled] style with defaultValue, close #4648 2017-01-19 14:25:44 +08:00
Benjy Cui
e3758168e4 fix: should switch to right panels, close: #4561 (#4614)
* fix: should switch to right panels, close: #4561

* docs: update demo
2017-01-19 13:55:04 +08:00
Richard D. Worth
c427c3c4b9 lightweight.en-US.md typo 'while' -> 'whole' (#4643) 2017-01-19 09:00:56 +08:00
Richard D. Worth
e7f329a168 invitation.en-US.md change "" to &quot; (#4644) 2017-01-19 09:00:31 +08:00
afc163
bc842e2a67 Merge branch 'master' of github.com:ant-design/ant-design 2017-01-17 20:30:53 +08:00
Benjy Cui
11bcb58685 site: reduce bundle size 2017-01-17 15:24:13 +08:00
afc163
8f57451d8c fix snap test for cascader upgrade 2017-01-17 13:45:26 +08:00
afc163
34fec11e31 upgrade @types/react 2017-01-17 12:13:57 +08:00
afc163
83fbdf80cc upgrade rc-input-number for #4265 2017-01-17 12:10:39 +08:00
afc163
3a5d08383a upgrade rc-cascader and support keyboard, close #4411 2017-01-17 12:10:17 +08:00
afc163
ebc6d9d2c2 Merge branch 'master' of github.com:ant-design/ant-design 2017-01-17 11:47:44 +08:00
偏右
13952d451e Update README-zh_CN.md 2017-01-17 00:11:22 +08:00
偏右
5ad748c1fd Update README.md 2017-01-17 00:10:37 +08:00
偏右
0a68959207 Fix openKeys and defaultOpenKeys of Menu, close #3783 (#4609) 2017-01-16 21:13:59 +08:00
afc163
75abadac84 Add doc about clearing Modal old state 2017-01-16 14:30:07 +08:00
Benjy Cui
d0ddf94d78 docs: update deps for site 2017-01-16 12:19:45 +08:00
afc163
b7c5fb40ae update home page style 2017-01-16 12:05:03 +08:00
afc163
95bc803dc3 update doc 2017-01-16 11:35:44 +08:00
pd4d10
ca4697be55 doc: Fix star count (#4610) 2017-01-16 10:08:20 +08:00
chencheng (云谦)
82581f2217 fix(docs): port is not correct, Close #4607 (#4612) 2017-01-16 10:01:42 +08:00
afc163
efd1d1e89d Improve carousel default style 2017-01-15 22:48:57 +08:00
afc163
8d91206da1 Add react-fa 2017-01-15 15:14:54 +08:00
afc163
abd264ebf0 fix test case name 2017-01-15 14:37:22 +08:00
afc163
784915e55b Fix DatePicker time scroll issue, close #4412 2017-01-15 14:10:20 +08:00
afc163
041457fa5e fix typo 2017-01-15 13:39:44 +08:00
afc163
b245659887 update API table style 2017-01-15 13:15:30 +08:00
afc163
1bf0bab2a7 bump 2.6.3 2017-01-15 00:30:28 +08:00
afc163
55da11db22 Fix Popconfirm not response, close #4606 2017-01-15 00:27:02 +08:00
afc163
fc32c751ca update doc 2017-01-14 22:49:40 +08:00
afc163
a1a46ae57a update Changelog 2017-01-14 21:58:33 +08:00
afc163
25f95d467a remove update self, ref ant-design/antd-tools#29 2017-01-14 21:48:03 +08:00
afc163
9f1f932386 fix eslintignore 2017-01-14 21:30:09 +08:00
afc163
fd6fc86b21 improve form validating style 2017-01-14 20:59:37 +08:00
偏右
a0d27426e8 Add Changelog for 2.6.2 (#4603) 2017-01-14 20:55:29 +08:00
paranoidjk
4d3f574d05 fix: typo; caused by #4435 2017-01-14 17:07:17 +08:00
afc163
c3a2b44f58 Fix strong site anchor truncation in IE
screenshot:
https://zos.alipayobjects.com/rmsportal/jtXxUhVBfEslRIpDvwhP.png
2017-01-14 16:59:02 +08:00
kun sam
b6217e62df add warning when using Breadcrumb without its Item (#4435)
* add warning when using Breadcrumb without its Item

fix issue ' Warning: Unknown prop `separator` on <div> tag. When I using Breadcrumb #4403'

ps: 我是个前端beginner, - ( ゜- ゜)つロ, 这是我第一个PR welcome, 如果写错或者还有更好的写法请大神指正。thanks

* remove compatible and use type as condition

按照 @benjycui 的意见去掉了兼容项,并使用type判断
2017-01-14 15:25:37 +08:00
Rex
6e33285890 fix onVisibleChange arguments error (#4589)
* fix onVisibleChange arguments error

* add test

* trigger travis
2017-01-14 15:23:02 +08:00
Wei Zhu
c09cf95daa Fix Table filter test 2017-01-13 23:30:39 +08:00
偏右
6e3565b983 Add Form[hideRequiredMark] (#4500)
* Add Form[hideRequiredMark]

* omit hideRequiredMark

* Add test case for Form[hideRequiredMark]
2017-01-13 21:52:48 +08:00
偏右
10396419b5 Add preset color Tag (#4571)
* Add preset color Tag, close #4528

* Use color back over presetColor

* fix snap

* simplify isPresetColor
2017-01-13 21:25:55 +08:00
陆离
46c200896f Customize Input Component of AutoComplete (#4483)
* cherry-pick

* remove useless files

* remove useless files

* Group ts

* update interface

* ReactElement
2017-01-13 21:19:23 +08:00
Wei Zhu
65d1f721d3 Fix Table multiple levels filter menu (#4548)
fix #4541
2017-01-13 21:13:31 +08:00
Brett Lamy
78fe0a686f Update index.tsx (#4537) 2017-01-13 21:13:22 +08:00
偏右
3423d27493 When form layout is vertical, keep the colon inside label, close #4593 (#4599) 2017-01-13 21:12:31 +08:00
afc163
6a073c8c6e fix snap test 2017-01-13 19:03:59 +08:00
Hans Chan
3d58a3f608 docs: add property colon for Form.Item (#4505)
* docs: 修改错别字

* docs: add property `colon` for Form.Item

`colon` is available since 2.0.0-beta.1
2017-01-13 19:03:59 +08:00
Hans Chan
927581bb84 docs: add property colon for Form.Item (#4505)
* docs: 修改错别字

* docs: add property `colon` for Form.Item

`colon` is available since 2.0.0-beta.1
2017-01-13 18:05:24 +08:00
偏右
e032fa6a62 adjust entry file (#4594) 2017-01-13 17:48:30 +08:00
Benjy Cui
c4c1078f2d docs: update demos for Calendar 2017-01-13 17:11:26 +08:00
Benjy Cui
eeae03d681 docs: remove useless code 2017-01-13 15:14:06 +08:00
Benjy Cui
e459562cdc site: fix target demo highlight, close: #4545 2017-01-13 14:59:14 +08:00
afc163
d013952398 remove unused doc 2017-01-12 21:51:40 +08:00
afc163
de544ad21b fix useless className 2017-01-12 20:38:20 +08:00
Benjy Cui
ff67c6eee6 docs: add documentation of third-party and awesomeness (#4559)
* docs: add documentation of third-party and awesomeness

* docs: merge install.md into introduce.md

* docs: update recommendation components list
2017-01-12 17:57:04 +08:00
afc163
6a015f00e6 upgrade @types/react 2017-01-12 13:57:35 +08:00
Benjy Cui
75c0ade1ce test: update snapshot 2017-01-12 10:38:14 +08:00
Benjy Cui
97221a6f63 css: fix style issue, close: #4415 2017-01-12 10:35:17 +08:00
wallverb
c01ee02758 chore: Change AutoCompleteProps to extend SelectProps (#4565)
* Change AutoCompleteProps to extend SelectProps

* Extract common props into AbstractSelectProps
2017-01-12 09:23:56 +08:00
Tao Zhang
477fde8b7f docs: Updated form description (#4574) 2017-01-12 09:09:59 +08:00
Wei Zhu
0ff50fc79d docs: Update Table JSX api note 2017-01-12 00:03:35 +08:00
afc163
4654db312f Fix some lesshint problems 2017-01-11 21:45:09 +08:00
afc163
1dd5fce324 ignore lint temp js/jsx files in components 2017-01-11 21:25:52 +08:00
afc163
65f2d8eb71 shorter demo code 2017-01-11 20:20:38 +08:00
afc163
f978b52ce3 remove blanks 2017-01-11 20:08:52 +08:00
Wei Zhu
8a2b3470ef Document using Table in TypeScript (#4568)
* Allow any valid ReactElement as Table.Column

* Document using Table in TypeScript
2017-01-11 19:52:43 +08:00
VTHINKXIE
b305a9c7e7 update link of ant.design of angular 2 (#4570) 2017-01-11 19:21:37 +08:00
afc163
af9a2cd8fb update modal style 2017-01-11 19:15:16 +08:00
afc163
e0999eaec3 fix code indent 2017-01-11 11:32:17 +08:00
bokzor
47fcd7651f feat: Add french locale (#4538)
* add french locale

* Add french locale
2017-01-11 10:28:47 +08:00
afc163
29324ca59d Add less variables for TimePicker panel width, close #4194 2017-01-10 22:10:37 +08:00
afc163
3f5aebe85b Fix Table column.filteredValue null problem, ref #4550 2017-01-10 20:52:53 +08:00
偏右
aa89addcc2 Improve upload list (#4516)
* support prevent removing when return value is false, close #4456

* Add showRemoveIcon & showPreviewIcon into showUploadList

close #4384 & #4351

* fix typo
2017-01-10 20:15:02 +08:00
afc163
dc00b9ee96 Fix Search block again, close #4540 2017-01-10 15:11:43 +08:00
afc163
6af0842be8 fix table demo snapshot 2017-01-10 14:10:44 +08:00
afc163
088ecf18a4 cleaner demo 2017-01-10 14:09:19 +08:00
afc163
75b50e9731 wider the selection column and expand column of Table 2017-01-10 14:03:04 +08:00
afc163
1042681bcd Fix Table filter dropdown style 2017-01-10 13:46:52 +08:00
Benjy Cui
3fa5d10da3 Merge branch 'master' into feature-2.7 2017-01-10 10:50:40 +08:00
afc163
920a084c21 carousel should be undraggable and text-seletable defaultly 2017-01-09 23:21:18 +08:00
afc163
e66604cab3 optimize progress active style 2017-01-09 23:05:18 +08:00
afc163
8d25da0c3a Fix English grammar
follow
611c981346 (commitcomment-20407445)
2017-01-09 22:37:57 +08:00
afc163
611c981346 change slogan 2017-01-09 22:10:32 +08:00
afc163
01859fc581 update input doc 2017-01-09 22:03:10 +08:00
wallverb
a47c200f7c Fix validateTrigger type (#4536)
* Update validateTrigger type

* Update validateTrigger doc for en-US

* Update validateTrigger doc for zh-CN
2017-01-09 21:20:40 +08:00
afc163
69d6a23645 site: fix image 2017-01-09 21:14:22 +08:00
afc163
765ae70cf5 site: fix image 2017-01-09 21:08:19 +08:00
afc163
452aa84d9d fix table test case typo 2017-01-09 21:06:04 +08:00
afc163
d0727df147 update doc about Import on Demand 2017-01-09 21:03:12 +08:00
afc163
1c493ad798 Fix error when Table[pagination] change, close #4532 2017-01-09 20:49:00 +08:00
afc163
7548f2068f remove comment 2017-01-09 19:35:41 +08:00
Benjy Cui
5fd3baaff0 docs: update outdated docs 2017-01-09 18:00:30 +08:00
Benjy Cui
f436b5c2f4 deps: upgrade rc-form, close: #4374 2017-01-09 17:40:01 +08:00
afc163
82d18db79f Improve collapse style and add a custom style panel demo 2017-01-09 17:19:26 +08:00
Benjy Cui
0aabdb3d8b fix: locale should follow LocaleProvider, close: #4495 (#4503)
* fix: locale should follow LocaleProvider, close: #4495

* test: update snapshot

* fix: fix some bugs
2017-01-09 16:25:58 +08:00
Benjy Cui
b96601decb test: update snapshot 2017-01-09 14:56:14 +08:00
afc163
37541e3bfe Fix Search block style 2017-01-09 14:24:08 +08:00
afc163
361169a3e4 use yarn over npm in create-react-app doc 2017-01-09 13:50:49 +08:00
afc163
b5d0acee45 Merge branch 'master' into feature-2.7 2017-01-09 12:56:36 +08:00
afc163
6dcfa9519c fix snapshot 2017-01-09 12:56:16 +08:00
afc163
6a8c88fd6b Merge branch 'master' into feature-2.7 2017-01-09 12:10:30 +08:00
afc163
c208aea654 demo: fix duplicate key 2017-01-09 12:10:08 +08:00
Benjy Cui
dd43704108 site: fix key 2017-01-09 12:01:15 +08:00
afc163
1835961af1 Merge branch 'feature-2.7' of github.com:ant-design/ant-design into feature-2.7 2017-01-09 11:54:44 +08:00
afc163
c040c410e2 Merge branch 'master' into feature-2.7 2017-01-09 11:54:29 +08:00
afc163
024e398ad0 Fix lint for latest eslint-config-airbnb 2017-01-09 11:51:56 +08:00
Wei Zhu
6eb09fe98f Keep js[x] files ignoring 2017-01-09 11:34:06 +08:00
Hans Chan
ef6c19e97b docs: add property colon for Form.Item (#4505)
* docs: 修改错别字

* docs: add property `colon` for Form.Item

`colon` is available since 2.0.0-beta.1
2017-01-09 11:03:35 +08:00
afc163
a0f57a2094 update Changelog 2017-01-08 20:10:00 +08:00
afc163
5361ff7351 update Changelog 2017-01-08 20:08:52 +08:00
afc163
de0805899f update links 2017-01-08 20:06:51 +08:00
afc163
7d75a2673a components/date-picker/locale/sv_SE.jsx 2017-01-08 19:24:55 +08:00
Sean Sun
456860f61c imporve the user experience of the official site (#4457)
* normalize code based on lint message

* listening url changes instead of writing hard code

* change listen
2017-01-08 19:16:13 +08:00
Pixy Yuan
a2bef2b87e feat: Modal.confirm add maskClosable option (#4488) (#4490)
* feat: Modal.confirm add maskClosable option (#4488)

* feat: Modal.confirm add maskClosable option (#4488)
2017-01-08 19:14:28 +08:00
Jesper We
c6f6de3605 feat: Add support for Swedish locale (#4455)
* Swedish locale

* Create sv_SE.tsx

* Create sv_SE.tsx

* Create sv_SE.tsx
2017-01-08 19:14:28 +08:00
Rex
93128d1481 feat: add slider vertical style (#4473) 2017-01-08 19:14:02 +08:00
陆离
f54e822930 feat: Transfer on search change (#4464)
*  add `onSearchChange(direction: 'left'|'right') => void ` of Transfer

* typo
2017-01-08 19:14:02 +08:00
Benjy Cui
df18edda79 chore: update link to locale format 2017-01-08 19:14:02 +08:00
Jesper We
11ebc915eb feat: Add support for Swedish locale (#4455)
* Swedish locale

* Create sv_SE.tsx

* Create sv_SE.tsx

* Create sv_SE.tsx
2017-01-08 19:14:01 +08:00
Wei Zhu
f6c0e69af5 cleanup npm scripts (#4499)
* Cleanup npm scripts

* Lint fix

* Don't need ignore js files

* Upgrade jest

* Add components index.tsx test
2017-01-08 17:04:09 +08:00
ddcat1115
6495ef3592 fix Layout style (#4506)
* fix #4459

* improve
2017-01-08 17:03:47 +08:00
afc163
b978937af8 fix jest snapshot 2017-01-08 16:59:34 +08:00
afc163
8e77e1710d move ga script into head 2017-01-07 23:30:33 +08:00
afc163
9e4885d959 update select doc 2017-01-07 22:15:22 +08:00
afc163
c0ec375e8e Fix documentation links, close #4496 2017-01-07 22:09:17 +08:00
afc163
237871da32 update spin document 2017-01-07 22:07:09 +08:00
afc163
31d6aca303 move spin variables to default.less 2017-01-07 22:04:52 +08:00
afc163
92c3bef888 Adjust spin style 2017-01-07 22:03:40 +08:00
afc163
1a8f000e35 update doc 2017-01-07 21:28:44 +08:00
Rafael Cosman
b10fa928f1 Improves english of README.md (#4512)
Hi. I'm a fan of this project and a native English speaker. I thought I'd take a minute to fix a few English usage issues in the README. Happy to help with other documentation if I have time.
2017-01-07 14:53:39 +08:00
Benjy Cui
3f20979fd7 bump 2.6.1 2017-01-06 18:15:30 +08:00
afc163
1fbebd4ecf Fix a Cascader align bug 2017-01-06 16:55:38 +08:00
afc163
0d38fefb00 Fix Menu[theme=dark] selected and disabled style, #4440 2017-01-06 11:36:54 +08:00
afc163
1b10733e47 Update tree doc 2017-01-06 10:46:25 +08:00
afc163
343b3dfc08 update Changelog 2017-01-06 10:43:00 +08:00
Benjy Cui
435eed2e23 site: fix lang change in home page 2017-01-06 09:08:36 +08:00
afc163
0187384445 refactor for code style 2017-01-06 01:33:09 +08:00
feng zhi hao
0780b64099 style: fix header text color in home page (#4477) 2017-01-05 20:35:56 +08:00
afc163
e2b8aee202 fix snapshot 2017-01-05 17:24:14 +08:00
afc163
41ff783868 Add name type for Input, close #4479 2017-01-05 17:19:50 +08:00
afc163
657c707a79 Hide useless prop Form[horizontal] 2017-01-05 16:57:41 +08:00
afc163
53371dfe3e Add plain text form item in demo, close #4465 2017-01-05 16:40:21 +08:00
afc163
9df1eb91db Add form layout demo and fix vertical form style 2017-01-05 16:32:50 +08:00
afc163
a53bb4bfe4 simplify Input.Search code 2017-01-05 15:53:04 +08:00
afc163
26d3c506b3 simplify select combobox demo 2017-01-05 15:47:19 +08:00
afc163
ec35121bae update demo title 2017-01-05 15:35:43 +08:00
afc163
c4ac4d1eca fix Input prefix and suffix vertical align style 2017-01-05 15:34:30 +08:00
Benjy Cui
d4132ac558 chore: add missing definition for Modal 2017-01-05 12:08:43 +08:00
陆离
a0498e436f docs: add document for afterClose props for Modal (#4448)
+ close #4445
2017-01-05 12:06:27 +08:00
Wei Zhu
4305ca7ab0 docs: Docment Select.defaultActiveFirstOption 2017-01-04 18:46:39 +08:00
陆离
e36039acf8 chore: Spinning Pagination of table while loading (#4462)
*  Spinning Pagination of table while loading

 - close #4461

* update snapshots of table
2017-01-04 18:43:11 +08:00
afc163
cfcf72e70e update doc 2017-01-04 15:25:53 +08:00
afc163
6750c0b82b Make color value can be selectable 2017-01-04 15:13:55 +08:00
afc163
4443db4de6 css code style 2017-01-04 14:28:56 +08:00
afc163
2c6881a24a Fix error colorPalette is not defined in some situations
close ant-design/ant-motion#44
2017-01-04 14:27:45 +08:00
afc163
56bd431cc6 clean demo 2017-01-04 11:07:49 +08:00
afc163
11f509a972 clean demo 2017-01-04 11:00:58 +08:00
Benjy Cui
9d92066d1f chore: update data-picker detail, ref: #4415 2017-01-04 10:48:40 +08:00
chencheng (云谦)
0230385e95 docs: update practical-projects (#4385) 2017-01-04 10:11:53 +08:00
afc163
d4993ce3e0 Fix less compile error 2017-01-03 20:11:13 +08:00
Benjy Cui
4db6d3b915 site: fix language switch in Firefox, close: #4360 2017-01-03 18:03:02 +08:00
偏右
15b81d7ec8 test: Add test case for components/index.tsx (#4450) 2017-01-03 16:15:05 +08:00
Benjy Cui
29e598a3f3 docs: add missing docs for Option[title] 2017-01-03 16:00:34 +08:00
Jialei
96d3093b14 fix: placeholder in time-picker can be empty string (#4446) 2017-01-03 15:32:43 +08:00
Benjy Cui
fe706ebf0d chore: update ISSUE_TEMPLATE.md 2017-01-03 15:00:41 +08:00
偏右
8f3dc0f16e Update introduce.en-US.md 2017-01-03 14:21:42 +08:00
afc163
3ecc5f6c85 Fix search text color in Home page 2017-01-03 00:17:23 +08:00
afc163
d0df37ed42 Fix Menu[theme="dark"] text color, close #4440 2017-01-03 00:12:23 +08:00
afc163
372a44a92a update doc about startsWith 2017-01-02 23:45:20 +08:00
Edd Hannay
ec2bec5417 Add tokenSeparators prop to Select TS definitions (#4441)
[The documentation](https://ant.design/components/select/) lists the `tokenSeparators` property on the `Select` component, but the TypeScript definition for the component does not contain the `tokenSeparators` property. The underlying `rc-select` component [defines tokenSeparators](https://github.com/react-component/select/blob/master/src/Select.jsx#L79) as `PropTypes.arrayOf(PropTypes.string)`, so I've added it as an optional TypeScript property of type `string[]`.

- Add tokenSeparators to SelectProps in Select Component
2017-01-02 19:11:13 +08:00
乐仪
ffa7f9b1ba CHANGELOG - v2.6 2017-01-02 02:14:40 +08:00
ddcat1115
c5b154294e add attribute compact for InputGroup (#4309)
* add attribute `compact` for InputGroup

* improve
2017-01-02 00:12:41 +08:00
偏右
d811ebee5c New color system (#4426)
* Add new color patterns algorithm

* Add color palettes

* update other colors

* fix gray color

* update more tint/shade to colorPalette

* new font color

* Update doc for new color system

* improve doc style
2017-01-01 22:20:06 +08:00
afc163
fb6858c3cc Fix hasFeedback and Select style detail for #4436 2017-01-01 17:39:27 +08:00
Jesper We
d258ace146 Fix #4431 Overlapping graphics with<Select> in <Form.Item ... hasFeedback={true} (#4436) 2017-01-01 17:20:08 +08:00
afc163
793a2d284e Add spin demo test snapshot 2017-01-01 15:42:54 +08:00
陆离
7f7d94068a add delay props of Spin (#4424)
*  add `delay` props of Spin

 + close 4306
 + Specifies a delay for loading state. If `spinning` ends during delay, loading state won't appear.

* improves
2017-01-01 01:13:34 +08:00
Rex
1b8a280614 support suffix (#4283)
* support suffix

* optimize prefix and suffix

* 1. Optimize prefix and suffix implementation
2. Improve the api document
3. Optimize `Input.Search` implementation

* update snapshots
2017-01-01 01:06:19 +08:00
偏右
e4bee3425a Upgrade rc form (#4430)
* support nested form item name by upgrade rc-form

react-component/form#48

* Fix dynamic form demo
2016-12-31 23:47:07 +08:00
Wei Zhu
2390c055aa Ignore yarn.lock 2016-12-31 20:27:23 +08:00
Wei Zhu
f2dbf83216 Specify eslint-plugin-markdown version since yarn complains it. 2016-12-31 20:27:13 +08:00
afc163
c0a44adb56 Fix Cascader[disabled] background, close #4434 2016-12-31 16:08:58 +08:00
afc163
c285f5f651 fix snapshot 2016-12-30 22:36:10 +08:00
afc163
45051aebac fix changelog 2016-12-30 21:54:09 +08:00
afc163
237d6ab62b fix layout demo 2016-12-30 21:44:10 +08:00
偏右
0062867274 Feature 2.6 (#4429)
* new Layout Component (#4087)

* change Anchor type

* new Layout

* Component update && add snap

* Revert "new Layout Component" (#4131)

* add Layout (#4169)

* add Layout

* update

* fix snapshot

* Improve layout component

1. update demo code
2. drop `position` of Sider
3. improve demo style
2016-12-30 21:41:28 +08:00
afc163
c3982b02aa Fix monthCellContentRender and wrong documentation, close #4394 2016-12-30 15:04:13 +08:00
Wei Zhu
0a3e57a61e Using padding for node gaps, fix #4371 (#4398) 2016-12-30 14:32:34 +08:00
Kevin Ivan
fd469ea1a5 grammar typo (#4379) 2016-12-30 14:30:20 +08:00
Rex
c8a16b10bd fix the blue border in some scenes (#4382) 2016-12-30 14:27:23 +08:00
afc163
959fc6b2e3 update docs 2016-12-30 14:13:43 +08:00
afc163
2583798cce Add demo for Case-insensitive search Select, close #4408 2016-12-30 14:05:27 +08:00
afc163
20cd35abe3 fix demo 2016-12-30 14:05:27 +08:00
Wei Zhu
29e4717fe3 Fallback table record key to data index. (#4397)
In last PR #4185, we removed data index from record key, it
leads to inconformity behavior.
2016-12-30 13:50:11 +08:00
afc163
f816455421 update Changelog 2016-12-30 13:45:44 +08:00
afc163
7f41114ab7 fix site layout back 2016-12-30 13:44:24 +08:00
afc163
662b213137 Fix Menu[dark] item background, close #4414 again 2016-12-30 13:16:30 +08:00
afc163
35d91d8dee Fix Menu[dark] item background, close #4414 2016-12-30 12:16:29 +08:00
Wei Zhu
42f98e6779 docs: fix typo. 2016-12-29 21:41:46 +08:00
可乐
2e4e1fcaef 避免 value 正好是数字 0 (#4401) 2016-12-29 13:42:14 +08:00
偏右
3deb8ec590 Delete .hound.yml 2016-12-28 20:08:36 +08:00
ddcat1115
c4b637b7de site: fix site style (#4386) 2016-12-28 17:54:07 +08:00
afc163
967b9a77a9 update doc 2016-12-28 15:50:59 +08:00
afc163
8852dfd767 update doc titles 2016-12-28 15:45:37 +08:00
afc163
047476efaf update customize-theme doc 2016-12-28 00:23:32 +08:00
afc163
d570d03698 improve document for Form setFields, close #4370 2016-12-27 21:14:00 +08:00
afc163
22a0604ed5 update doc for babelrc 2016-12-27 21:07:16 +08:00
afc163
869fc54cf7 fix snapshots 2016-12-27 19:32:36 +08:00
afc163
668c481110 Fix table radius without column header, close #4373 2016-12-27 18:24:30 +08:00
afc163
e91f4f2335 improve style code 2016-12-27 17:57:17 +08:00
afc163
3e00fa8e64 update dynamic-settings table demo 2016-12-27 17:47:27 +08:00
afc163
b0a5601c98 fix less variables in slider 2016-12-27 17:04:10 +08:00
afc163
9b8a26ba17 upgrade code style 2016-12-26 19:46:01 +08:00
afc163
d81c425588 fix snapshot 2016-12-26 18:24:00 +08:00
afc163
f07f33d879 fix snapshots 2016-12-26 11:16:28 +08:00
Babajide Fowotade
8c0692f5e7 Fix babel dir path to modify in create-react-app docs (#4362) 2016-12-26 11:15:36 +08:00
afc163
7602faed65 improve playground.md 2016-12-25 21:31:33 +08:00
afc163
1ef76b40ec update Slider doc 2016-12-25 21:10:14 +08:00
afc163
ee17abfa9d Add Grid playground demo 2016-12-25 21:09:49 +08:00
afc163
0d0d63a741 Improve responsive layout of Pagination, close #4349 2016-12-25 19:55:12 +08:00
afc163
27b3cdab05 better responsive page layout 2016-12-25 19:18:08 +08:00
Alexandre Kirszenberg
517720895d Dropdown.Button as a single non-wrappable element (#4355) 2016-12-24 23:12:37 +08:00
RaoHai
72e136405e 2.5.3 🎄🎄🎄 2016-12-24 15:55:26 +08:00
afc163
cd056e8923 update README.md 2016-12-23 18:06:28 +08:00
afc163
cee6fa49e8 Improve layout spec demo style 2016-12-23 17:58:37 +08:00
Benjy Cui
4b08601f0f style: update code style 2016-12-22 17:09:11 +08:00
Benjy Cui
588f0c3d1c chore: expose loadData for Cascader, close: #4215 2016-12-22 16:35:37 +08:00
Benjy Cui
4967d36d2a docs: update demos order for Cascader 2016-12-22 16:23:33 +08:00
afc163
25f8095b67 Add Menu[inlineIndent] documentation 2016-12-22 15:06:37 +08:00
chencheng (云谦)
7a67f5ce0f docs: update pratical-projects for dva-cli@0.7 (#4322) 2016-12-22 14:25:01 +08:00
偏右
ee5a8beca1 Add doc about using antd with create-react-app (#4294)
* Add doc about using antd with create-react-app, close #2526

* translate to english

* update comment

* update
2016-12-22 14:24:50 +08:00
Benjy Cui
114016dd4e chore: add alias for getTooltipContainer 2016-12-22 12:08:17 +08:00
Benjy Cui
8b3e488485 docs: update docs for Tooltip Popconfirm Popover 2016-12-22 12:00:57 +08:00
afc163
2d19ea8344 Add comment 2016-12-22 11:54:03 +08:00
afc163
489d7cf997 Keep Search same default width as Input, close #4334 2016-12-22 11:53:53 +08:00
afc163
6d142b11eb update install documentation 2016-12-21 19:34:20 +08:00
afc163
08893a47cb fix card snap 2016-12-21 12:19:48 +08:00
afc163
215c2fd7af Fix nested Tabs style, close #4317 2016-12-21 12:00:42 +08:00
afc163
07c39529bb Merge branch 'master' of github.com:ant-design/ant-design 2016-12-21 11:45:39 +08:00
Wei Zhu
3dc2ed6a64 Add forgotten snap back. 2016-12-21 00:53:35 +08:00
Wei Zhu
ba9d95bba9 Simplify module export test 2016-12-21 00:00:46 +08:00
Edd Hannay
8382023409 docs: fix typo in Form demo (#4313)
- Rename checkPassowrd function checkPassword
2016-12-20 20:28:44 +08:00
HJin.me
0e92fa3f23 chore: improve Cascader and Tooltip's get(Popup|Tooltip)Container declaration (#4303) 2016-12-20 14:37:33 +08:00
afc163
847a60ee56 Learn card loading animation from hashnode.com 2016-12-20 12:22:45 +08:00
Benjy Cui
e6052d5832 docs: update demo for badge 2016-12-20 11:06:40 +08:00
afc163
ecd2e57ef2 controlled DatePicker should not be clear 2016-12-20 11:01:10 +08:00
Benjy Cui
77801ff436 fix: CI failed and ts null check 2016-12-20 10:23:25 +08:00
Benjy Cui
3ec2c1bcfa Revert "site: use cdn to improve performance, close: #3646"
This reverts commit 5d72c6d7e5.
2016-12-20 10:19:17 +08:00
Benjy Cui
f3c55c6ef8 Revert "site: use cdn to improve performance, close: #3646"
This reverts commit 47f56eab23.
2016-12-20 10:19:06 +08:00
Wei Zhu
8018529582 Ensure checkbox props cache is cleared after dataSource changes. (#4288)
Fix #4245
2016-12-19 21:10:06 +08:00
Benjy Cui
47f56eab23 site: use cdn to improve performance, close: #3646 2016-12-19 20:22:29 +08:00
Benjy Cui
5d72c6d7e5 site: use cdn to improve performance, close: #3646 2016-12-19 18:08:07 +08:00
Benjy Cui
9f2e6c8baa docs: update demo for SSR 2016-12-19 17:54:25 +08:00
afc163
0620d52adc Allow to config top multiply 2016-12-19 16:50:20 +08:00
Benjy Cui
62c22f31a9 docs: update demo for table 2016-12-19 16:45:58 +08:00
Sergio Crisostomo
7bc43493c1 docs: Add info about how to turn off pagination (#4285) 2016-12-19 16:37:29 +08:00
Sean Sun
b345074065 fix the lack of '*-offset-0' / '*-push-0' styles, close #4223 (#4281) 2016-12-19 16:18:39 +08:00
Benjy Cui
1351b5da5d refactor: remove splitObject 2016-12-19 15:19:15 +08:00
Benjy Cui
4758302ad5 deps: upgrade antd-tools, close: #4208 2016-12-19 14:01:52 +08:00
Rex
ca8e88971a fix: callback is triggered only when the value changes (#4278)
* callback is triggered only when the value changes

* optimize lastValue assignment
2016-12-19 10:52:47 +08:00
afc163
e1d73eb424 update form documentation 2016-12-18 14:54:12 +08:00
afc163
5043a165f5 update english docs 2016-12-16 22:10:47 +08:00
afc163
655533f9ff Add release schedule in README, close #4178 2016-12-16 20:51:55 +08:00
afc163
48de73b721 Fix a FormItem mis-align bug, close #4271 2016-12-16 20:24:50 +08:00
Rex
05e9587ec8 <CheckboxGroup /> support className (#4276) 2016-12-16 20:23:36 +08:00
afc163
60606d0e37 update changelog link 2016-12-16 19:19:05 +08:00
Benjy Cui
d7498c0af6 Test transfer (#4191)
* refactor: use Checkbox directly

* test: add test case for Transfer
2016-12-16 17:59:52 +08:00
Wei Zhu
d7a110552b Don't use index as row key. (#4185)
* Ensure warning if key is undefined.

* Ensure getRecordKey receives index

* Remove rowKey's second parameter from doc.
2016-12-16 17:53:08 +08:00
Benjy Cui
ba0dce98f5 chore: add warning for invalid usage, ref: #4274 2016-12-16 17:12:48 +08:00
Patrick Gidich
21ec9cb985 fix: issue with TypeScript for children of LocaleProvider (#4234)
Similar to issue:
https://github.com/ant-design/ant-design/issues/4140

Fixed in similar manner to how this issue was resolved:
a28743f648 (diff-9ae0a9df19960a2d1b9608f30f6b19b3)

children?: React.ReactElement<any>
2016-12-16 16:42:50 +08:00
BK Heleth
a973ae18b5 docs: update document (#4263) 2016-12-16 16:38:14 +08:00
Wei Zhu
92edf23d4e docs: Fix search tree demo expand, close #4233 2016-12-15 21:45:56 +08:00
feng zhi hao
6e416f4746 optimize Radio declaration (#4260)
chore: optimize Radio declaration (#4260)
2016-12-15 16:25:15 +08:00
Wei Zhu
c547569d05 docs: Document callback parameters for Pagination 2016-12-15 16:07:04 +08:00
afc163
1f9e61ee69 update default font family 2016-12-15 15:31:28 +08:00
Wei Zhu
9a9db2411b Unify badge style 2016-12-15 15:28:22 +08:00
afc163
5b48656b82 Fix Menu[vertical] selected item background, close #4253 2016-12-15 12:12:35 +08:00
afc163
d9b6ff5c8f revert switch height 2016-12-15 12:06:38 +08:00
Pierre
827aa2f94c style: remove hardcoded inputs height (#4175)
* remove hardcoded inputs height

* revert pagination input height

* revert pagination input heights bis
2016-12-15 11:17:09 +08:00
duzliang
304ced31bb docs: Update CHANGELOG.zh-CN.md (#4249)
修改【### 2.x 不兼容改动】中的错别字
2016-12-15 09:29:37 +08:00
80ea247fa9 fix(Dropdown): onVisibleChange param. (#4252)
* fix(Dropdown): onVisibleChange param.

* doc(Dropdown): update onVisibleChange argument
2016-12-14 20:33:13 +07:00
afc163
bda303a38e fix snap 2016-12-14 18:11:01 +08:00
afc163
dc4cfd3e5f Improve notification style when there is no descrption 2016-12-14 18:07:36 +08:00
afc163
99824d3e9f remove unused className 2016-12-14 17:58:06 +08:00
afc163
b7597e947f update notification demo code style 2016-12-14 17:57:15 +08:00
afc163
a8293c7f43 Merge branch 'master' of github.com:ant-design/ant-design 2016-12-14 15:49:33 +08:00
Wei Zhu
587b874fc8 tests: Add button tests 2016-12-14 15:44:38 +08:00
afc163
47c8445b80 revert pre-commit version 2016-12-14 15:40:13 +08:00
Wei Zhu
666e80a1ba tests: Fix table import 2016-12-14 15:38:26 +08:00
Wei Zhu
07103b9fb6 Don't ignore test files. 2016-12-14 14:48:09 +08:00
Wei Zhu
17a0a33283 Restructure tests. 2016-12-14 14:41:39 +08:00
764cd9439d fix(Cascader): onChange's first parameter should be string Array #4231 (#4232) 2016-12-13 21:28:39 +07:00
afc163
dba6b70e38 update upload API, #863 2016-12-13 18:48:11 +08:00
Benjy Cui
f0d1b94163 site: should remove locale info when switch to old site, close: #4224 2016-12-13 14:19:23 +08:00
afc163
7cf4192c4e Add demo snap 2016-12-13 13:48:37 +08:00
afc163
6c99f3a2cb downgrade pre-commit for observing/pre-commit#89 2016-12-13 13:29:27 +08:00
afc163
303fc113c2 Add coordinated form demo 2016-12-13 13:28:16 +08:00
afc163
a15d2c014a update labelInValue description 2016-12-13 11:44:59 +08:00
afc163
9dfe19f544 update labelInValue description 2016-12-13 11:43:31 +08:00
afc163
f1c828c71d update links 2016-12-12 20:44:40 +08:00
afc163
b4089638a4 fix home page background 2016-12-12 13:43:52 +08:00
Benjy Cui
a985c15872 deps: upgrade rc-upload 2016-12-12 12:08:15 +08:00
Jieraaa
abba1558c4 style:fix the bug of pseudo class (#4210) 2016-12-11 23:55:30 +08:00
弘树@阿里
e280b1ac4b docs: Update introduce.zh-CN.md (#4193)
* Update introduce.zh-CN.md

save dependency for `antd` using `npm i`

* Update introduce.zh-CN.md

Modify `-S` to `--save`

* Update introduce.en-US.md

add `--save` for `npm install`
2016-12-11 18:28:46 +08:00
afc163
16808eeadb fix test snap 2016-12-11 14:08:15 +08:00
afc163
3af1821bde remove whitespaces 2016-12-11 14:05:19 +08:00
afc163
f83b2c111e fix eslint warning 2016-12-11 14:01:14 +08:00
afc163
b912f1cea6 Fix DatePicker[showTime] default width 2016-12-11 13:59:06 +08:00
662 changed files with 25605 additions and 14683 deletions

5
.eslintignore Normal file
View File

@@ -0,0 +1,5 @@
components/**/*.js
components/**/*.jsx
!.eslintrc.js
!components/*/__tests__/*
!components/*/demo/*

View File

@@ -3,7 +3,7 @@ const eslintrc = {
env: {
browser: true,
node: true,
mocha: true,
jasmine: true,
jest: true,
es6: true,
},

View File

@@ -5,31 +5,28 @@ antd 的用法咨询,建议通过以下渠道,官方 issues 目前没有足
1. [Stack Overflow](http://stackoverflow.com/questions/tagged/antd)
2. [Segment Fault](https://segmentfault.com/t/antd)(中文)
3. [Gitter](https://gitter.im/ant-design/ant-design)
如果是报告 bug请按照下列格式书写并务必提供复现步骤否则恕难解决感谢您的支持。
-->
#### 发生问题的环境是:
#### Environment(required)
<!-- 务必提供 -->
- antd version:
- OS and its version:
- Browser and its version:
- antd 版本:
- 操作系统及其版本:
- 浏览器及其版本:
#### What did you do? Please provide steps to re-produce your problem.
#### 您做了什么?请提供尽可能详细的重现步骤。
<!-- e.g. I just imported Button from antd -->
<!-- 如:引入 antd 了 Button -->
#### What do you expected?
#### 您期待的结果是:
<!-- e.g. It works fine as official website -->
<!-- 如:像官网一样正常显示 -->
#### What happen?
#### 实际上的结果是:
<!-- e.g. Style is not as expected. (And it will be better to provide screenshot) -->
<!-- 如:样式错位了,最好提供截图 -->
#### Re-producible online demo
#### 可重现的在线演示
<!-- 请修改并 Fork http://codepen.io/benjycui/pen/KgPZrE?editors=001 -->
<!-- Please fork http://codepen.io/benjycui/pen/KgPZrE?editors=001 to re-produce you issue -->

7
.gitignore vendored
View File

@@ -27,7 +27,10 @@ dist
/lib
elasticsearch-*
config/base.yaml
components/**/*.js
components/**/*.jsx
/.vscode/
/coverage
yarn.lock
components/**/*.js
components/**/*.jsx
!components/**/__tests__/*.js
!components/**/__tests__/*.js.snap

View File

@@ -1,3 +0,0 @@
eslint:
enabled: true
config_file: .eslintrc.js

View File

@@ -1,6 +1,6 @@
{
"setupFiles": [
"tests/setup.js"
"./tests/setup.js"
],
"moduleFileExtensions": [
"ts",
@@ -9,10 +9,10 @@
"md"
],
"transform": {
"\\.tsx?$": "node_modules/typescript-babel-jest",
"tests/.*\\.js$": "node_modules/babel-jest",
"\\.md$": "node_modules/antd-demo-jest"
"\\.tsx?$": "./node_modules/typescript-babel-jest",
"\\.js$": "./node_modules/babel-jest",
"\\.md$": "./node_modules/antd-demo-jest"
},
"testRegex": "/tests/.*demo\\.test\\.js$",
"testRegex": "demo\\.test\\.js$",
"testEnvironment": "node"
}

View File

@@ -1,21 +0,0 @@
{
"propertyOrdering": false,
"hexLength": "short",
"stringQuotes": false,
"decimalZero": false,
"importantRule": false,
"zeroUnit": "no_unit",
"qualifyingElement": false,
"duplicateProperty": false,
"importPath": false,
"finalNewline": false,
"newlineAfterBlock": false,
"maxCharPerLine": false,
"excludedFiles": [
"components/grid/style/mixin.less",
"components/style/core/base.less",
"components/style/core/iconfont.less",
"components/style/core/normalize.less",
"components/style/mixins/compatibility.less"
]
}

24
.stylelintrc Normal file
View File

@@ -0,0 +1,24 @@
{
"extends": "stylelint-config-standard",
"rules": {
"at-rule-empty-line-before": null,
"at-rule-name-space-after": null,
"comment-empty-line-before": null,
"declaration-bang-space-before": null,
"declaration-empty-line-before": null,
"function-comma-newline-after": null,
"function-name-case": null,
"function-parentheses-newline-inside": null,
"function-max-empty-lines": null,
"function-whitespace-after": null,
"indentation": null,
"number-leading-zero": null,
"number-no-trailing-zeros": null,
"rule-empty-line-before": null,
"selector-combinator-space-after": null,
"selector-list-comma-newline-after": null,
"selector-pseudo-element-colon-notation": null,
"unit-no-unknown": null,
"value-list-max-empty-lines": null
}
}

View File

@@ -5,5 +5,11 @@ language: node_js
node_js:
- "6"
env:
- MAX_WORKERS=2
script:
- npm run test-all
after_script:
- cat ./coverage/lcov.info | node_modules/coveralls/bin/coveralls.js

View File

@@ -5,10 +5,209 @@ toc: false
timeline: true
---
If you want to read change logs before `2.0.0`, please visit [GitHub](https://github.com/ant-design/ant-design/releases?after=2.0.0).
`antd` strictly follows [Semantic Versioning 2.0.0](http://semver.org/).
#### Release Schedule
* Weekly release: patch version at the end of every week for routine bugfix (anytime for urgent bugfix).
* Monthly release: minor version at the end of every month for new features.
* Major version release is not included in this schedule for breadking change and new features.
If you want to read change logs before `2.0.0`, please visit [GitHub](https://github.com/ant-design/ant-design/blob/1.x-stable/CHANGELOG.md).
---
## 2.7.2
`2017-02-17`
- Fix that `antd.version` doesn't work as expected. [#4844](https://github.com/ant-design/ant-design/issues/4844)
- Fix that dist files don't include locales. [#4910](https://github.com/ant-design/ant-design/pull/4910)
- Fix that disabled option is selectable in search mode of Cascader. [#4699](https://github.com/ant-design/ant-design/issues/4699)
- **Button**
- Fix click animation of `Button[type=danger]`.
- Fix broken style with `loading`. [#4875](https://github.com/ant-design/ant-design/issues/4875)
- **Menu**
- Fix that `openKeys` should be controlled property in `vertical` mode. [#4876](https://github.com/ant-design/ant-design/issues/4876)
- Fix selected animation of Menu.Item.
- Fix broken style of Menu.SubMenu. [#4906](https://github.com/ant-design/ant-design/issues/4906)
- **Table**
- Fix broken style of table which use small size and fixed header. [#4850](https://github.com/ant-design/ant-design/issues/4850)
- Fix placeholder style. [#4851](https://github.com/ant-design/ant-design/pull/4851)
- Simplify DOM structure. [#4868](https://github.com/ant-design/ant-design/issues/4868)
- Fix that Radio should support number `0` as children. [#4874](https://github.com/ant-design/ant-design/issues/4874) [@HQidea](https://github.com/HQidea)
- Fix that RangePicker should work with `style.width` which is small than 300. [#4920](https://github.com/ant-design/ant-design/issues/4920)
- Fix CSS compile error caused by Spin. [#4915](https://github.com/ant-design/ant-design/issues/4915)
- Fix that Tooltip should work with disabled button in Chrome. [#4865](https://github.com/ant-design/ant-design/pull/4865)
- Fix UX of Tree while dragging. [#4858](https://github.com/ant-design/ant-design/issues/4858)
- Fix failed style of Upload. [#4810](https://github.com/ant-design/ant-design/issues/4810)
- Fix that `Menu[vertical]`'s SubMenu cannot popup in Layout.Sider. [#4890](https://github.com/ant-design/ant-design/issues/4890)
- Improve animation of Button and `Badge[status=processing]`.
![Badge animation](https://camo.githubusercontent.com/6874b2333f2fac3fac346404c6e70684e4dafc1a/68747470733a2f2f7a6f732e616c697061796f626a656374732e636f6d2f726d73706f7274616c2f73516b72756c716346734b4e54785158615971512e676966)
![Button animation](https://camo.githubusercontent.com/3963d12b45de4f522c2799361dbc3177e7bd93d1/68747470733a2f2f7a6f732e616c697061796f626a656374732e636f6d2f726d73706f7274616c2f46624b776d636f766d795364666c557468494e522e676966)
## 2.7.1
`2017-02-10`
- **Affix**
- Fix the problem of element been hidden when hover on. [#4800](https://github.com/ant-design/ant-design/issues/4800)
- Fix event listener can not be removed. [#4755](https://github.com/ant-design/ant-design/issues/4755)
- Fix can not be unfixed when scrolling fastly. [#4760](https://github.com/ant-design/ant-design/issues/4760)
- **Anchor** Fix the location problem when offsetTop has been set. [#4706](https://github.com/ant-design/ant-design/issues/4706)
- **AutoComplete**
- Fix the wrong size. [#4766](https://github.com/ant-design/ant-design/issues/4766)
- Fix adding error character automatically. [#4778](https://github.com/ant-design/ant-design/issues/4778)
- **Dropdown** Add the documentation and demo about positioning of Dropdown menus. [#4811](https://github.com/ant-design/ant-design/issues/4811)
- **Layout** Improve Sider's animation effect. [#4752](https://github.com/ant-design/ant-design/issues/4752)
- **LocaleProvider** Fix issues with the new Swedish locale provider. [pull-4762](https://github.com/ant-design/ant-design/pull/4762) [@JesperWe](https://github.com/JesperWe)
- **RangePicker** Fix the overlapping problem about the date icon. [#4783](https://github.com/ant-design/ant-design/issues/4783) [@zhenzong](https://github.com/zhenzong)
- **Table**
- Add the missing value 'middle' for size definition. [#4819](https://github.com/ant-design/ant-design/pull/4819) [@warrenseymour](https://github.com/warrenseymour)
- Fix controlled filter does not work with JSX style. [#4759](https://github.com/ant-design/ant-design/issues/4759)
- Fix switch pagination problem. [#4779](https://github.com/ant-design/ant-design/issues/4779)
- **Tabs** Fix content missing problem since the second tab pane under IE9. [#4795](https://github.com/ant-design/ant-design/issues/4795)
- **rc-pagination** Upgrade to ~1.7.0, add pageSize as onChange's second argument.
- **Global optimization**
- Make some bugfixes and optimizations about documentation、link and style.
- Use stylelint instead of lesslint, and fix some lint issues. [#2179](https://github.com/ant-design/ant-design/issues/2179)
- Unify border radius to 4px. [#4772](https://github.com/ant-design/ant-design/issues/4772)
- Support `import { version } from 'antd'`. [#4751](https://github.com/ant-design/ant-design/pull/4751)
- **Site**
- Add default locale looking-up in Home Page. [#4552](https://github.com/ant-design/ant-design/issues/4552)
- Can search with Google. [#4814](https://github.com/ant-design/ant-design/issues/4814)
- Change the position of version switch. [pull-4799](https://github.com/ant-design/ant-design/pull/4799)
## 2.7.0
`2017-02-03`
* Added `danger` button and `ghost` button style. [#4679](https://github.com/ant-design/ant-design/pull/4679)
* Input element of AutoComplete can be customized. [#4483](https://github.com/ant-design/ant-design/pull/4483)
* Upgrade rc-cascader to `0.11.0`, keyborad interactions supported. [#4411](https://github.com/ant-design/ant-design/pull/4411)
* More popup directions are supported in notification. [#4732](https://github.com/ant-design/ant-design/pull/4700)
* Upgrade rc-steps to `2.3.0`, added `progressDot` property of Steps, which allows users to customize the display for Steps with progress dot style.
* Upgrade rc-input-number to `3.0.0`
* Input behavious will trigger `onChange` callback now.[#4265](https://github.com/ant-design/ant-design/pull/4265)
* Fixed `onKeyUp`. [#4717](https://github.com/ant-design/ant-design/issues/4717)
* Added `vertical` mode of Slider. [#4473](https://github.com/ant-design/ant-design/pull/4473)
* Tag
* Added preset colors. [#4571](https://github.com/ant-design/ant-design/pull/4571)
* Improvement vertical-align and margin.
* Add German localization for LocaleProvider.[#4686](https://github.com/ant-design/ant-design/pull/4686)
* Add Swedish localization for LocaleProvider. [#4455](https://github.com/ant-design/ant-design/pull/4455)
* Add French localization for LocaleProvider. [#4538](https://github.com/ant-design/ant-design/pull/4538)
* Added `onSearchChange` callback of Transfer. [#4464](https://github.com/ant-design/ant-design/pull/4464)
* Added `maskClosable` property of Modal.confirm. [#4488](https://github.com/ant-design/ant-design/pull/4488), [#4488](https://github.com/ant-design/ant-design/pull/4490)
* Added `hideRequiredMark` property if Form. [#4732](https://github.com/ant-design/ant-design/pull/4732)
* Improvement upload list of Upload. [#4516](https://github.com/ant-design/ant-design/pull/4516)
* Upgrade rc-select to `6.7.1`.
* Fixed duplication `onChange` callback. [#156@rc-select](https://github.com/react-component/select/pull/156)
* Fixed displaying of initial value. [#152@rc-select](https://github.com/react-component/select/pull/152)
* Upgrade rc-tree-select to `1.9.0`.
* Added `treeDefaultExpandedKeys` property.[#43@rc-tree-select](https://github.com/react-component/tree-select/pull/43)
* Fixed an overflow-wrap issue. [#42@rc-tree-select](https://github.com/react-component/tree-select/pull/42)
* Added less variables: `@border-style-base` `@border-width-base` `@btn-danger-color` `@btn-danger-bg` and etc.
* Fixed Badge misplace issue when browser zoom above 100%. [#4747](https://github.com/ant-design/ant-design/issues/4747) [#4290](https://github.com/ant-design/ant-design/issues/4290)
* Fixed a mis-align issue of fixed header Table. [#4750](https://github.com/ant-design/ant-design/issues/4750)
* Fixed Table scrolling lag issue in IE. [#4522](https://github.com/ant-design/ant-design/issues/4522)
* Add icon aliases: `addfile` => `file-add``addfolder` => `folder-open`, and the old type names are still working. [#4758](https://github.com/ant-design/ant-design/issues/4758)
## 2.6.4
`2017-01-20`
* Improve RangePicker when selecting a preset date.[#4561](https://github.com/ant-design/ant-design/issues/4561)
* Fix DatePicker select time scroll issue.[#4412](https://github.com/ant-design/ant-design/issues/4412)
* Fix issue resulting in vertical Menu can't be controlled.[#3783](https://github.com/ant-design/ant-design/issues/3783)
* Fix Cascader's style when it's disabled.[#4648](https://github.com/ant-design/ant-design/issues/4648)
* Table
* Improve Table fixed header's scrollbar style.[#4637](https://github.com/ant-design/ant-design/issues/4637)
* Fix issue resulting in Table's header flashes when `loading` is true in Safari.[#4622](https://github.com/ant-design/ant-design/issues/4622)
* Fix multiple border issues. [#4647](https://github.com/ant-design/ant-design/issues/4647)、[#4635](https://github.com/ant-design/ant-design/issues/4635)
* Fix `showHeader`'s default value.[#4658](https://github.com/ant-design/ant-design/issues/4658)
* Fix missing `TableColumnConfig` type.[#4660](https://github.com/ant-design/ant-design/issues/4660)
## 2.6.3
`2017-01-15`
* Fixed issue introduced in `2.6.2` that Popconfirm is not working. [#4606](https://github.com/ant-design/ant-design/issues/4606)
## 2.6.2
`2017-01-14`
* Added a Third-Party Library Page for recommending other greet react components. [Link](/docs/react/recommendation)
* Fixed misplaced Sider of Layout. [#4459](https://github.com/ant-design/ant-design/issues/4459)
* Fixed Input.Search wrong block layout and misplaced icon. [#4540](https://github.com/ant-design/ant-design/issues/4540)
* Added a customize Collapse panel demo. [Link](/components/collapse/#components-collapse-demo-custom)
* Table
* Enlarged the width of selection column and expand column.
* Fixed not-available pagination issue when property `pagination` is changed. [#4532](https://github.com/ant-design/ant-design/issues/4532)
* Fixed that three level filter menu is not working. [#4541](https://github.com/ant-design/ant-design/issues/4541)
* Fixed `column.filteredValue` issue of cannot being set to `null`.
* Now Carousel is undragglble and text-selectable defaultly.
* Added warnings when non-BreadcrumbItem node is nested under Breadcrumb. [#4403](https://github.com/ant-design/ant-design/issues/4403)
* Fixed Tooltip hidden issue when `onVisibleChange(visible)` return `true`. [#4579](https://github.com/ant-design/ant-design/issues/4579)
* Make TreeSelect panel default height smaller than screen height. [#4537](https://github.com/ant-design/ant-design/pull/4537)
* Added less variables of TimePicker and Spin.
* Replaced arrows of DatePicker year panel by year text. [#4415](https://github.com/ant-design/ant-design/issues/4415)
* Fixed TypeScript definites of AutoComplete and Form `[options.validateTrigger]`.
* Improved the animation details of Spin and Progress.
## 2.6.1
`2017-1-6`
* Fix style problem for Menu dark theme. [#4440](https://github.com/ant-design/ant-design/issues/4440)
* Fix TypeScript interface definition for `Select[tokenSeparators]` `Modal[afterClose]` `Input[name]` and so on. [#4441](https://github.com/ant-design/ant-design/pull/4441) [@eddhannay](https://github.com/eddhannay)
* Fix that `TimePicker[placeholder]` cannot be set to empty string. [#4446](https://github.com/ant-design/ant-design/pull/4446) [@jialeicui](https://github.com/jialeicui)
* Fix style problem in DatePicker year panel. [#4415](https://github.com/ant-design/ant-design/issues/4415)
* Fix that Table loading doesn't mask Pagination. [#4461](https://github.com/ant-design/ant-design/issues/4461)
* Fix align style for `Input[prefix|suffix]`. [commit](https://github.com/ant-design/ant-design/commit/c4ac4d1eca53ae2f6f4a1e15210b43745f283534)
* Fix align style for Cascader. [commit](https://github.com/ant-design/ant-design/commit/1fbebd4ecfff432e1b2261c9dfee4b9f471e7b1f)
## 2.6.0
`2017-1-2`
- Brand new color system. [pull/4426](https://github.com/ant-design/ant-design/pull/4426)
- Brand new color algorithm replacing the tint/shade system.
- Brand new color palattes generated by new algorithm. [Link](http://ant.design/docs/spec/colors)
- Change default font color.
- Add Layout component. [#3534](https://github.com/ant-design/ant-design/issues/3534)
- Add Grid playground demo. [commit/ee17ab](https://github.com/ant-design/ant-design/commit/ee17abfa9d0362c6f9baab4a9a09e57574583246)
- Input
- Support prefix and suffix. [#4226](https://github.com/ant-design/ant-design/issues/4226) [@ystarlongzi](https://github.com/ystarlongzi)
- InputGroup support compact display mode. [pull/4309](https://github.com/ant-design/ant-design/pull/4309)
- Spin support delayed display. [#4306](https://github.com/ant-design/ant-design/issues/4306)
- Fix the dislocation problem of Pagination in low resolution. [#4349](https://github.com/ant-design/ant-design/issues/4349)
- Fix wrapping display of Dropdown.Button. [pull/4355](https://github.com/ant-design/ant-design/pull/4355) [@Morhaus](https://github.com/Morhaus)
- Fix wrong background color of Cascader in disabled status. [#4434](https://github.com/ant-design/ant-design/issues/4434)
- Fix MonthPicker[monthCellContentRender] doesn't work, and some documentation errors. [#4394](https://github.com/ant-design/ant-design/issues/4394)
- Fix the extra border of ButtonGroup. [#4382](https://github.com/ant-design/ant-design/pull/4382) [@ystarlongzi](https://github.com/ystarlongzi)
- Fix wrong background color of the Submenu(horizontal mode). [#4414](https://github.com/ant-design/ant-design/issues/4414)
- Fix overlapping graphics with Select/Cascader in Form.Item with hasFeedback. [#4431](https://github.com/ant-design/ant-design/issues/4431) [@JesperWe](https://github.com/JesperWe)
- Reset border-radius of the first row in Table without header. [#4373](https://github.com/ant-design/ant-design/issues/4373)
- Improve the drag performance of Tree. [#4371](https://github.com/ant-design/ant-design/issues/4371)
- Improve official website and documentation, fix some bugs.
- Update rc-form to support nested style of getFieldDecorator[id].
## 2.5.3
`2016-12-24` 🎄🎄🎄
* Supports TypeScript@2.1. [#4208](https://github.com/ant-design/ant-design/issues/4208)
* Fix style issue resulting in nested Tabs. [#4317](https://github.com/ant-design/ant-design/issues/4317)
* Fix `onChange` callback issue resulting in Radio. [#4242](https://github.com/ant-design/ant-design/issues/4242) [@ystarlongzi](https://github.com/ystarlongzi)
* Fix a FormItem mis-aligin bug. [#4271](https://github.com/ant-design/ant-design/issues/4271)
* Fix background issue resulting in selected element of veritcal Menu.[#4253](https://github.com/ant-design/ant-design/issues/4253)
* Improve arguments type of `onVisibleChange` callback of Dropdown.[#4236](https://github.com/ant-design/ant-design/issues/4236) [@bang88](https://github.com/bang88)
* Improve first argument type of `onChange` callback of Cascader.[#4231](https://github.com/ant-design/ant-design/issues/4231) [@bang88](https://github.com/bang88)
* Improve default width of Datepicker[showTime]. [b912f1c](https://github.com/ant-design/ant-design/commit/b912f1cea6f470c16b8dd90554883460161cef47)
## 2.5.2
`2016-12-10`
@@ -157,7 +356,7 @@ If you want to read change logs before `2.0.0`, please visit [GitHub](https://gi
* Fix issue resulting in preview image not display when `Upload` in `picture-card` mode. [#3706](https://github.com/ant-design/ant-design/pull/3706) [@denzw](https://github.com/denzw)
* DatePicker
* `onChange` will be triggered when `DatePicker` in `showTime` mode on blur now.
* Add `monthCellContentRender` and `cellContentRender` for `MonthPicker`.
* Add `monthCellContentRender` for `MonthPicker`.
* `Rangepicker` can input time manually now.[#3718](https://github.com/ant-design/ant-design/issues/3718)
* Add czech locale/translations.
* Badge
@@ -171,10 +370,10 @@ If you want to read change logs before `2.0.0`, please visit [GitHub](https://gi
* Add `type`. [#3560](https://github.com/ant-design/ant-design/issues/3560)
* Add `checkable`. [#3560](https://github.com/ant-design/ant-design/issues/3560)
* Radio.Group
* Add `className`
* Add `className`.
* `null` or `undefined` `children` will be ignored.
* Select
* Add `tokenSeparators` to support automatic tokenization[#2071](https://github.com/ant-design/ant-design/issues/2071)
* Add `tokenSeparators` to support automatic tokenization. [#2071](https://github.com/ant-design/ant-design/issues/2071)
* Add `onFocus` callback. [#3587](https://github.com/ant-design/ant-design/issues/3587)
* Fix issue resulting in Select can't display correct selected item text in `combobox` mode. [#3401](https://github.com/ant-design/ant-design/issues/3401)
@@ -415,4 +614,4 @@ The following change will throw some warnings in the console and it will still w
## 1.11.4
Visit [GitHub](https://github.com/ant-design/ant-design/releases?after=2.0.0) to read change logs from `0.x` to `1.x`
Visit [GitHub](https://github.com/ant-design/ant-design/blob/1.x-stable/CHANGELOG.md) to read change logs from `0.x` to `1.x`.

View File

@@ -5,10 +5,209 @@ toc: false
timeline: true
---
如果需要查看 `2.0.0` 之前的更新日志,请移步 [GitHub](https://github.com/ant-design/ant-design/releases?after=2.0.0)
`antd` 严格遵循 [Semantic Versioning 2.0.0](http://semver.org/lang/zh-CN/) 语义化版本规范
#### 发布周期
* patch 版本:每周末会进行日常 bugfix 更新。(如果有紧急的 bugfix则任何时候都可发布
* minor 版本:每月发布一个带有新特性的向下兼容的版本。
* 大版本号:含有破坏性更新和新特性,不在发布周期内。
如果需要查看 `2.0.0` 之前的更新日志,请移步 [GitHub](https://github.com/ant-design/ant-design/blob/1.x-stable/CHANGELOG.md)。
---
## 2.7.2
`2017-02-17`
- 修复 `antd.version` 无法正常使用的问题。 [#4844](https://github.com/ant-design/ant-design/issues/4844)
- 修复 dist 文件没有 locales 的问题。 [#4910](https://github.com/ant-design/ant-design/pull/4910)
- 修复 Cascader 搜索模式下可以选择已禁用选项的问题。 [#4699](https://github.com/ant-design/ant-design/issues/4699)
- **Button**
- 修复 `Button[type=danger]` 的点击动画。
- 修复设置 `loading` 时的样式问题。 [#4875](https://github.com/ant-design/ant-design/issues/4875)
- **Menu**
- 修复 `vertical` 模式下 `openKeys` 为受控属性。 [#4876](https://github.com/ant-design/ant-design/issues/4876)
- 修复 Menu.Item 选中时的动画问题。
- 修复 Menu.SubMenu 的样式问题。 [#4906](https://github.com/ant-design/ant-design/issues/4906)
- **Table**
- 修复在混合使用固定表头和小尺寸时的样式问题。 [#4850](https://github.com/ant-design/ant-design/issues/4850)
- 修复无数据时的占位符样式问题。 [#4851](https://github.com/ant-design/ant-design/pull/4851)
- 精简了 DOM 结构。 [#4868](https://github.com/ant-design/ant-design/issues/4868)
- 修复 Radio 组件 children 无法为数字 `0` 的问题。 [#4874](https://github.com/ant-design/ant-design/issues/4874) [@HQidea](https://github.com/HQidea)
- 修复 RangePicker `style.width` 无法小于 300 的问题。 [#4920](https://github.com/ant-design/ant-design/issues/4920)
- 修复 Spin 样式在打包时会导致编译错误的问题。 [#4915](https://github.com/ant-design/ant-design/issues/4915)
- 修复 Chrome 下 Tooltip 无法在 disabled 的按钮上使用的问题。 [#4865](https://github.com/ant-design/ant-design/pull/4865)
- 修复 Tree 节点在拖动时会导致整棵树抖动的问题。 [#4858](https://github.com/ant-design/ant-design/issues/4858)
- 修复 Upload 上传失败的样式问题。 [#4810](https://github.com/ant-design/ant-design/issues/4810)
- 修复 `Menu[vertical]` 和 Layout.Sider 配合使用时二级菜单无法弹出的问题。 [#4890](https://github.com/ant-design/ant-design/issues/4890)
- 优化 Button、`Badge[status=processing]` 的动画。
![Badge animation](https://camo.githubusercontent.com/6874b2333f2fac3fac346404c6e70684e4dafc1a/68747470733a2f2f7a6f732e616c697061796f626a656374732e636f6d2f726d73706f7274616c2f73516b72756c716346734b4e54785158615971512e676966)
![Button animation](https://camo.githubusercontent.com/3963d12b45de4f522c2799361dbc3177e7bd93d1/68747470733a2f2f7a6f732e616c697061796f626a656374732e636f6d2f726d73706f7274616c2f46624b776d636f766d795364666c557468494e522e676966)
## 2.7.1
`2017-02-10`
- **Affix**
- 修复 hover 时元素被隐藏的问题。[#4800](https://github.com/ant-design/ant-design/issues/4800)
- 修复 event listener 未被正确移除的问题。[#4755](https://github.com/ant-design/ant-design/issues/4755)
- 修复快速滚动时不能正确复位的问题。[#4760](https://github.com/ant-design/ant-design/issues/4760)
- **Anchor** 修复了有 offsetTop 时的定位问题。[#4706](https://github.com/ant-design/ant-design/issues/4706)
- **AutoComplete**
- 修复了 size 问题。[#4766](https://github.com/ant-design/ant-design/issues/4766)
- 修复了自动加入其他字符的问题。[#4778](https://github.com/ant-design/ant-design/issues/4778)
- **Dropdown** 补充了之前缺失的弹出框位置设定相关的文档及示例。[#4811](https://github.com/ant-design/ant-design/issues/4811)
- **Layout** 修复了侧边布局动效不平滑的问题。[#4752](https://github.com/ant-design/ant-design/issues/4752)
- **LocaleProvider** 修复了瑞典语相关问题。[pull-4762](https://github.com/ant-design/ant-design/pull/4762) [@JesperWe](https://github.com/JesperWe)
- **RangePicker** 修复了图标与表单校验反馈图标重叠的问题。[#4783](https://github.com/ant-design/ant-design/issues/4783) [@zhenzong](https://github.com/zhenzong)
- **Table**
- 修复了 size 定义里没有 'middle' 的问题。[#4819](https://github.com/ant-design/ant-design/pull/4819) [@warrenseymour](https://github.com/warrenseymour)
- 修复过滤功能在 JSX 模式下不生效的问题。[#4759](https://github.com/ant-design/ant-design/issues/4759)
- 修复分页跳转问题。[#4779](https://github.com/ant-design/ant-design/issues/4779)
- **Tabs** 修复了在 IE9 中从第二个标签页起都显示空白的问题。[#4795](https://github.com/ant-design/ant-design/issues/4795)
- **rc-pagination** 升级至 ~1.7.0onChange 增加 pageSize 参数。
- **全局性优化**
- 修复或优化了一些了文档,链接,样式细节。
- 接入 stylelint 以替代 lesslint修复一些 lint 问题。[#2179](https://github.com/ant-design/ant-design/issues/2179)
- border-radius 统一为 4px。[#4772](https://github.com/ant-design/ant-design/issues/4772)
- 支持 `import { version } from 'antd'`。[#4751](https://github.com/ant-design/ant-design/pull/4751)
- **网站**
- 首页自动选择语言。[#4552](https://github.com/ant-design/ant-design/issues/4552)
- 接入 Google 作为文档的全文本搜索。[#4814](https://github.com/ant-design/ant-design/issues/4814)
- 改变版本切换 Select 的位置。[pull-4799](https://github.com/ant-design/ant-design/pull/4799)
## 2.7.0
`2017-02-03`
* Button 新增 `danger``ghost` 属性。[#4679](https://github.com/ant-design/ant-design/pull/4679)
* AutoComplete 支持自定义输入框的用法。 [#4483](https://github.com/ant-design/ant-design/pull/4483)
* 升级了 rc-cascader 到 0.11.0,支持键盘操作。[#4411](https://github.com/ant-design/ant-design/pull/4411)
* notification 支持更多弹出方向。[#4732](https://github.com/ant-design/ant-design/pull/4700)
* 升级了 rc-steps 到 2.3.0Steps 新增 `progressDot` 属性,支持自定义点状步骤条的样式。[#4659](https://github.com/ant-design/ant-design/pull/4659)
* 升级了 rc-input-number 到 3.0.0
* 现在输入时也会触发 `onChange`。[#4265](https://github.com/ant-design/ant-design/pull/4265)
* 修复了 `onKeyUp` 事件。[#4717](https://github.com/ant-design/ant-design/issues/4717)
* Slider 增加 `veritical` 模式。[#4473](https://github.com/ant-design/ant-design/pull/4473)
* Tag
- 增加了预设颜色。[#4571](https://github.com/ant-design/ant-design/pull/4571)
- 调整了垂直对齐和默认间距。
* 添加了对德语的支持。[#4686](https://github.com/ant-design/ant-design/pull/4686)
* 添加了对瑞典语的支持。[#4455](https://github.com/ant-design/ant-design/pull/4455)
* 添加了对法语的支持。[#4538](https://github.com/ant-design/ant-design/pull/4538)
* Transfer 添加了 `onSearchChange` 回调。 [#4464](https://github.com/ant-design/ant-design/pull/4464)
* Modal.confirm 添加了 maskClosable 配置项。[#4488](https://github.com/ant-design/ant-design/pull/4488), [#4488](https://github.com/ant-design/ant-design/pull/4490)
* Form 增加 `hideRequiredMark` 属性。[#4732](https://github.com/ant-design/ant-design/pull/4732)
* 改进了 Upload 的列表图片预览。 [#4516](https://github.com/ant-design/ant-design/pull/4516)
* 升级了 rc-select 到 6.7.1。
* 修复了 Select 的 `onChange` 回调重复触发的问题。[#156@rc-select](https://github.com/react-component/select/pull/156)
* 修复了 Select 显示初始化值的问题。[#152@rc-select](https://github.com/react-component/select/pull/152)
* 升级 rc-tree-select 到 `1.9.0`
* 新增 `treeDefaultExpandedKeys` 属性。[#43@rc-tree-select](https://github.com/react-component/tree-select/pull/43)
* 修复了文字溢出换行问题。[#42@rc-tree-select](https://github.com/react-component/tree-select/pull/42)
* 新增 less 变量: `@border-style-base` `@border-width-base` `@btn-danger-color` `@btn-danger-bg` 等。
* 修复了 Badge 在页面放大时错位的问题。[#4747](https://github.com/ant-design/ant-design/issues/4747) [#4290](https://github.com/ant-design/ant-design/issues/4290)
* 修复一个固定表头的表格错位问题。[#4750](https://github.com/ant-design/ant-design/issues/4750)
* 修复一个 IE 下表格滚动时卡顿的问题。[#4522](https://github.com/ant-design/ant-design/issues/4522)
* 添加别名以修正图标命名风格:`addfile` => `file-add``addfolder` => `folder-open`,原有的命名依然有效。[#4758](https://github.com/ant-design/ant-design/issues/4758)
## 2.6.4
`2017-01-20`
* 优化 RangePicker 选择预设时间时的界面显示。[#4561](https://github.com/ant-design/ant-design/issues/4561)
* 修复 DatePicker 选择时间界面的滚动问题。[#4412](https://github.com/ant-design/ant-design/issues/4412)
* 修复 Menu 在 `vertical` 的受控模式下,子菜单不会弹出的问题。[#3783](https://github.com/ant-design/ant-design/issues/3783)
* 修复 Cascader 禁用时的值显示样式问题。[#4648](https://github.com/ant-design/ant-design/issues/4648)
* Table
* 优化固定表头的滚动条显示。[#4637](https://github.com/ant-design/ant-design/issues/4637)
* 修复在 Safari 下显示 loading 效果时表头会闪烁的问题。[#4622](https://github.com/ant-design/ant-design/issues/4622)
* 修复多处边框问题。[#4647](https://github.com/ant-design/ant-design/issues/4647)、[#4635](https://github.com/ant-design/ant-design/issues/4635)
* 修复 showHeader 的默认值不为 `false` 的问题。[#4658](https://github.com/ant-design/ant-design/issues/4658)
* 修复找不到 `TableColumnConfig` 的类型定义的问题。[#4660](https://github.com/ant-design/ant-design/issues/4660)
## 2.6.3
`2017-01-15`
* 修复 `2.6.2` 中 Popconfirm 不可用的问题。[#4606](https://github.com/ant-design/ant-design/issues/4606)
## 2.6.2
`2017-01-14`
* 新增社区精选组件页面。[链接](/docs/react/recommendation-cn)
* 修复一个内容过长导致 Layout 侧边布局错位的问题。[#4459](https://github.com/ant-design/ant-design/issues/4459)
* 修复 Input.Search 输入框和图标错位的问题。[#4540](https://github.com/ant-design/ant-design/issues/4540)
* 补充了一个自定义灰底样式的 Collapse 折叠面板的例子。[链接](/components/collapse-cn/#components-collapse-demo-custom)
* Table
* 调大了 Table 选择框和展开按钮的列宽度。
* 修复 `pagination` 属性切换后分页不可用的问题。[#4532](https://github.com/ant-design/ant-design/issues/4532)
* 修复不支持三级筛选菜单的问题。[#4541](https://github.com/ant-design/ant-design/issues/4541)
* 修复 `column.filteredValue` 无法设置为 `null` 的问题。
* 调整 Carousel 为默认不可拖拽和文字可选择。
* 增加了 Breadcrumb 内嵌非 Breadcrumb.Item 元素时的警告提示。[#4403](https://github.com/ant-design/ant-design/issues/4403)
* 修复 Tooltip 在 `onVisibleChange(visible)` 返回 `true` 时不展示的问题。[#4579](https://github.com/ant-design/ant-design/issues/4579)
* 优化 TreeSelect 内容过长时的面板高度。[#4537](https://github.com/ant-design/ant-design/pull/4537)
* 补充了 TimePicker 和 Spin 的组件样式变量。
* 用年份代替了 DatePicker 年份选择面板上的箭头。[#4415](https://github.com/ant-design/ant-design/issues/4415)
* 修复 AutoComplete 和 Form `[options.validateTrigger]` 的 TypeScript 定义。
* 优化 Spin、Progress 的动画细节效果。
## 2.6.1
`2017-1-6`
* 修复 Menu dark theme 样式问题。[#4440](https://github.com/ant-design/ant-design/issues/4440)
* 修复 `Select[tokenSeparators]` `Modal[afterClose]` `Input[name]` 等的 TypeScript interface 定义。[#4441](https://github.com/ant-design/ant-design/pull/4441) [@eddhannay](https://github.com/eddhannay)
* 修复 `TimePicker[placeholder]` 无法置空的问题。[#4446](https://github.com/ant-design/ant-design/pull/4446) [@jialeicui](https://github.com/jialeicui)
* 修复 DatePicker 等年份选择面板折行问题。[#4415](https://github.com/ant-design/ant-design/issues/4415)
* 修复 Table loading 状态分页器可操作的问题。[#4461](https://github.com/ant-design/ant-design/issues/4461)
* 修复 `Input[prefix|suffix]` 垂直对齐问题。[commit](https://github.com/ant-design/ant-design/commit/c4ac4d1eca53ae2f6f4a1e15210b43745f283534)
* 修复 Cascader 对齐问题。[commit](https://github.com/ant-design/ant-design/commit/1fbebd4ecfff432e1b2261c9dfee4b9f471e7b1f)
## 2.6.0
`2017-1-2`
- 采用全新的色彩系统。[pull/4426](https://github.com/ant-design/ant-design/pull/4426)
- 使用新的算法函数代替 `tint/shade`
- 利用算法生成的新版色板。[色板演示](http://ant.design/docs/spec/colors)
- 调整默认文字颜色。
- 增加 Layout 布局组件。[#3534](https://github.com/ant-design/ant-design/issues/3534)
- 增加 Grid 栅格配置器示例。[commit/ee17ab](https://github.com/ant-design/ant-design/commit/ee17abfa9d0362c6f9baab4a9a09e57574583246)
- Input
- 增加 prefix 和 suffix 属性,支持前后缀配置。[#4226](https://github.com/ant-design/ant-design/issues/4226) [@ystarlongzi](https://github.com/ystarlongzi)
- InputGroup 增加 compact 属性,支持紧凑型展示。[pull/4309](https://github.com/ant-design/ant-design/pull/4309)
- Spin 增加延迟显示属性 delay。[#4306](https://github.com/ant-design/ant-design/issues/4306)
- 修复 Pagination 在低分辨率下的错位问题。[#4349](https://github.com/ant-design/ant-design/issues/4349)
- 修复 Dropdown.Button 换行的问题。[pull/4355](https://github.com/ant-design/ant-design/pull/4355) [@Morhaus](https://github.com/Morhaus)
- 修复 Cascader disabled 状态底色的问题。[#4434](https://github.com/ant-design/ant-design/issues/4434)
- 修复 MonthPicker monthCellContentRender 属性无效的问题,并修正了错误的文档。[#4394](https://github.com/ant-design/ant-design/issues/4394)
- 修复 ButtonGroup 存在多余蓝色边框的问题。[#4382](https://github.com/ant-design/ant-design/pull/4382) [@ystarlongzi](https://github.com/ystarlongzi)
- 修复 Menu horizontal 模式子菜单选择项背景色错误的问题。[#4414](https://github.com/ant-design/ant-design/issues/4414)
- 修复配置了 hasFeedback 的 Select/Cascader 下拉箭头被遮盖的问题。[#4431](https://github.com/ant-design/ant-design/issues/4431) [@JesperWe](https://github.com/JesperWe)
- Table 没有 header 时,第一行改为非圆角。[#4373](https://github.com/ant-design/ant-design/issues/4373)
- 优化 Tree 的拖拽效果。[#4371](https://github.com/ant-design/ant-design/issues/4371)
- 进行了一些文档或示例优化、文档错误修正以及网站样式问题修复。
- 升级 rc-form 底层依赖getFieldDecorator 的 id 支持嵌套式写法。
## 2.5.3
`2016-12-24` 🎄🎄🎄
* 支持 TypeScript@2.1。[#4208](https://github.com/ant-design/ant-design/issues/4208)
* 修正了 Tabs 嵌套时的样式问题。 [#4317](https://github.com/ant-design/ant-design/issues/4317)
* 修正了 Radio 在当前项选中时,再次点击仍会触发 onChange 的问题。 [#4242](https://github.com/ant-design/ant-design/issues/4242) [@ystarlongzi](https://github.com/ystarlongzi)
* 修正了 Form 多列栅格式的表单排列方式布局异常。 [#4271](https://github.com/ant-design/ant-design/issues/4271)
* 修正了 Menu 竖直方向的当前选择项的背景问题。[#4253](https://github.com/ant-design/ant-design/issues/4253)
* 优化了 Dropdown 的 `onVisibleChange` 回调参数 Type 类型。[#4236](https://github.com/ant-design/ant-design/issues/4236)
* 优化了 Cascader 的 `onChange` 回调参数的 Type 类型。[#4231](https://github.com/ant-design/ant-design/issues/4231)
* 优化了 Datepicker[showTime] 的默认宽度 [b912f1c](https://github.com/ant-design/ant-design/commit/b912f1cea6f470c16b8dd90554883460161cef47)
## 2.5.2
`2016-12-10`
@@ -156,7 +355,7 @@ timeline: true
* 修复 `Upload` `picture-card` 模式下新上传的图片不显示预览的问题。[#3706](https://github.com/ant-design/ant-design/pull/3706) [@denzw](https://github.com/denzw)
* DatePicker
*`showTime` 模式下现在失去焦点也会触发 `onChange`
* `MonthPicker` 增加了 `monthCellContentRender``cellContentRender`
* `MonthPicker` 增加了 `monthCellContentRender`
* `RangePicker` 现在可以手动输入时间了。[#3718](https://github.com/ant-design/ant-design/issues/3718)
* 新增了捷克语的翻译。
* Badge
@@ -314,7 +513,7 @@ timeline: true
```
* 时间类组件的 `onChange` 和 `onPanelChange` 及其他回调函数中为 `Date/GregorianCalendar` 类型的参数,均修改为 moment 类型,两者 API 有所不同,但功能基本一致,请对照 [moment 的 API 文档](http://momentjs.com/docs/) 和 [gregorian-calendar 的文档](https://github.com/yiminghe/gregorian-calendar) 进行修改。你也可以参考这个 [commit](https://github.com/ant-design/ant-design/commit/4026221d451b246956983bb42140142d4a48b7d7) 来进行修改。
由于 `JSON.stringy(date: moment)` 返回的值会丢失时区设置,所以要先使用 `.format` 把日期转成字符串,相关 issue 见 [#3082](https://github.com/ant-design/ant-design/issues/3082)
由于 `JSON.stringify(date: moment)` 返回的值会丢失时区设置,所以要先使用 `.format` 把日期转成字符串,相关 issue 见 [#3082](https://github.com/ant-design/ant-design/issues/3082)
```js
handleSubmit() {
const values = this.props.form.getFieldsValue();
@@ -413,4 +612,4 @@ timeline: true
## 1.11.4
去 [GitHub](https://github.com/ant-design/ant-design/releases?after=2.0.0) 查看 `0.x` 到 `1.x` 的 Change Log。
去 [GitHub](https://github.com/ant-design/ant-design/blob/1.x-stable/CHANGELOG.md) 查看 `0.x` 到 `1.x` 的 Change Log。

View File

@@ -7,22 +7,24 @@
# Ant Design
[![](https://img.shields.io/travis/ant-design/ant-design.svg?style=flat-square)](https://travis-ci.org/ant-design/ant-design)
[![Coverage Status](https://coveralls.io/repos/github/ant-design/ant-design/badge.svg?branch=master)](https://coveralls.io/github/ant-design/ant-design?branch=master)
[![Dependency Status](https://img.shields.io/david/ant-design/ant-design.svg?style=flat-square)](https://david-dm.org/ant-design/ant-design)
[![Coveralls](https://img.shields.io/coveralls/ant-design/ant-design.svg?style=flat-square)](https://coveralls.io/github/ant-design/ant-design)
[![Dependency Status](https://img.shields.io/gemnasium/react-component/trigger.svg?style=flat-square)](https://gemnasium.com/ant-design/ant-design)
[![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)](https://npmjs.org/package/antd)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/ant-design/ant-design.svg)](http://isitmaintained.com/project/ant-design/ant-design "Average time to resolve an issue")
[![Join the chat at https://gitter.im/ant-design/ant-design](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ant-design/ant-design?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=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)
一套企业级的 UI 设计语言和 React 实现。
[README in English](README.md)
## 特性
- 提炼和服务企业级中后台产品的交互语言和视觉风格。
- [React Component](http://react-component.github.io/badgeboard/) 基础上精心封装的高质量 UI 组件。
- 提炼企业级中后台产品的交互语言和视觉风格。
- 开箱即用的高质量 React 组件。
- 使用 TypeScript 构建,提供完整的类型定义文件。
- 基于 npm + webpack + babel + [dora](https://github.com/dora-js/dora) + [dva](https://github.com/dvajs/dva) 的企业级业务开发框架。
- 基于 npm + webpack + [dva](https://github.com/dvajs/dva) 的企业级开发框架。
## 安装
@@ -71,22 +73,22 @@ tsconfig.json
## 链接
- [首页](http://ant.design/)
- [组件文档](http://ant.design/docs/react/introduce)
- [首页](http://ant.design/index-cn)
- [组件文档](http://ant.design/docs/react/introduce-cn)
- [更新日志](CHANGELOG.en-US.md)
- [开发脚手架](https://github.com/dvajs/dva-cli)
- [开发工具文档](http://ant-tool.github.io/)
- [React 基础组件](http://react-component.github.io/)
- [移动端组件](http://mobile.ant.design)
- [动效](https://motion.ant.design)
- [设计规范速查手册](https://os.alipayobjects.com/rmsportal/HTXUgPGkyyxEivE.png)
- [设计规范速查手册](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/issues/129)
- [常见问题](https://github.com/ant-design/ant-design/wiki/FAQ)
- [CodePen 模板](http://codepen.io/benjycui/pen/KgPZrE?editors=001) for bug reports
- [Awesome Ant Design](https://github.com/websemantics/awesome-ant-design)
- [定制主题](http://ant.design/docs/react/customize-theme)
- [定制主题](http://ant.design/docs/react/customize-theme-cn)
## 如何贡献

View File

@@ -7,26 +7,28 @@
# Ant Design
[![](https://img.shields.io/travis/ant-design/ant-design.svg?style=flat-square)](https://travis-ci.org/ant-design/ant-design)
[![Coverage Status](https://coveralls.io/repos/github/ant-design/ant-design/badge.svg?branch=master)](https://coveralls.io/github/ant-design/ant-design?branch=master)
[![Dependency Status](https://img.shields.io/david/ant-design/ant-design.svg?style=flat-square)](https://david-dm.org/ant-design/ant-design)
[![Coveralls](https://img.shields.io/coveralls/ant-design/ant-design.svg?style=flat-square)](https://coveralls.io/github/ant-design/ant-design)
[![Dependency Status](https://img.shields.io/gemnasium/react-component/trigger.svg?style=flat-square)](https://gemnasium.com/ant-design/ant-design)
[![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)](https://npmjs.org/package/antd)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/ant-design/ant-design.svg)](http://isitmaintained.com/project/ant-design/ant-design "Average time to resolve an issue")
[![Join the chat at https://gitter.im/ant-design/ant-design](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ant-design/ant-design?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=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)
An enterprise-class UI design language and React-based implementation.
[中文 README](README-zh_CN.md)
## Features
- An enterprise-class design language and high quality UI.
- Graceful UI components out of the box, base on [React Component](http://react-component.github.io/badgeboard/).
- An enterprise-class UI design language for web applications.
- A set of high-quality React components out of the box.
- Written in TypeScript with complete define types.
- A npm + webpack + babel + [dora](https://github.com/dora-js/dora) + [dva](https://github.com/dvajs/dva) development framework.
- A npm + webpack + [dva](https://github.com/dvajs/dva) front-end development workflow.
## Let's build a better antd together [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
`antd` is an open source project, any reasonable improvement is welcomed. If you are interested in contributing to `antd`, you can watch this repository and join in [discussion](https://github.com/ant-design/ant-design/issues?q=is%3Aopen+is%3Aissue+label%3ADiscussion), or try to implement some [features which had been accepted](https://github.com/ant-design/ant-design/issues?q=is%3Aopen+is%3Aissue+label%3A%22PR+welcome%22).
`antd` is an open source project, improvements are welcomed. If you are interested in contributing to `antd`, you can watch this repository, join in [discussion](https://github.com/ant-design/ant-design/issues?q=is%3Aopen+is%3Aissue+label%3ADiscussion), or try to implement some [features which have been accepted](https://github.com/ant-design/ant-design/issues?q=is%3Aopen+is%3Aissue+label%3A%22PR+welcome%22).
## Install
@@ -54,7 +56,7 @@ import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
- Use [babel-plugin-import](https://github.com/ant-design/babel-plugin-import) (Recommended)
```js
// .babelrc
// .babelrc or babel-loader option
{
"plugins": [["import", { libraryName: "antd", style: "css" }]]
}
@@ -67,7 +69,7 @@ import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
import { DatePicker } from 'antd';
```
- Manually import
- Manual import
```jsx
import DatePicker from 'antd/lib/date-picker'; // just for js
@@ -117,4 +119,4 @@ tsconfig.json
## Contributing
We welcome all contributions, please read our [CONTRIBUTING.md](https://github.com/ant-design/ant-design/blob/master/.github/CONTRIBUTING.md) first. You can submit any ideas as [pull requests](https://github.com/ant-design/ant-design/pulls) or as a [GitHub issue](https://github.com/ant-design/ant-design/issues). If you'd like to improve code, check out the [Development Instruction](https://github.com/ant-design/ant-design/wiki/Development) and have a good time! :)
We welcome all contributions, please read our [CONTRIBUTING.md](https://github.com/ant-design/ant-design/blob/master/.github/CONTRIBUTING.md) first. You can submit any ideas as [pull requests](https://github.com/ant-design/ant-design/pulls) or as [GitHub issues](https://github.com/ant-design/ant-design/issues). If you'd like to improve code, check out the [Development Instructions](https://github.com/ant-design/ant-design/wiki/Development) and have a good time! :)

View File

@@ -0,0 +1,55 @@
exports[`antd exports modules correctly 1`] = `
Array [
"Affix",
"Anchor",
"AutoComplete",
"Alert",
"BackTop",
"Badge",
"Breadcrumb",
"Button",
"Calendar",
"Card",
"Collapse",
"Carousel",
"Cascader",
"Checkbox",
"Col",
"DatePicker",
"Dropdown",
"Form",
"Icon",
"Input",
"InputNumber",
"Layout",
"LocaleProvider",
"message",
"Menu",
"Modal",
"notification",
"Pagination",
"Popconfirm",
"Popover",
"Progress",
"Radio",
"Rate",
"Row",
"Select",
"Slider",
"Spin",
"Steps",
"Switch",
"Table",
"Transfer",
"Tree",
"TreeSelect",
"Tabs",
"Tag",
"TimePicker",
"Timeline",
"Tooltip",
"Mention",
"Upload",
"version",
]
`;

View File

@@ -0,0 +1,7 @@
import * as antd from '..';
describe('antd', () => {
it('exports modules correctly', () => {
expect(Object.keys(antd)).toMatchSnapshot();
});
});

View File

@@ -0,0 +1,29 @@
import throttleByAnimationFrame from '../throttleByAnimationFrame';
jest.useFakeTimers();
describe('Test utils function', () => {
it('throttle function should work', () => {
const callback = jest.fn();
const throttled = throttleByAnimationFrame(callback);
expect(callback).not.toBeCalled();
throttled();
throttled();
jest.runAllTimers();
expect(callback).toBeCalled();
expect(callback.mock.calls.length).toBe(1);
});
it('throttle function should be canceled', () => {
const callback = jest.fn();
const throttled = throttleByAnimationFrame(callback);
throttled();
throttled.cancel();
jest.runAllTimers();
expect(callback).not.toBeCalled();
});
});

View File

@@ -1,6 +1,6 @@
import assign from 'object-assign';
export default function getLocale(props, context, componentName, getDefaultLocale) {
export function getComponentLocale(props, context, componentName, getDefaultLocale) {
const locale = context && context.antLocale && context.antLocale[componentName] ?
context.antLocale[componentName] : getDefaultLocale();
@@ -8,3 +8,12 @@ export default function getLocale(props, context, componentName, getDefaultLocal
result.lang = assign({}, locale.lang, props.locale.lang);
return result;
}
export function getLocaleCode(context) {
const localeCode = context.antLocale && context.antLocale.locale;
// Had use LocaleProvide but didn't set locale
if (context.antLocale && context.antLocale.exist && !localeCode) {
return 'zh-cn';
}
return localeCode;
}

View File

@@ -1,3 +1,16 @@
const availablePrefixs = ['moz', 'ms', 'webkit'];
function requestAnimationFramePolyfill() {
let lastTime = 0;
return function(callback) {
const currTime = new Date().getTime();
const timeToCall = Math.max(0, 16 - (currTime - lastTime));
const id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall);
lastTime = currTime + timeToCall;
return id;
};
}
export default function getRequestAnimationFrame() {
if (typeof window === 'undefined') {
return () => {};
@@ -5,8 +18,27 @@ export default function getRequestAnimationFrame() {
if (window.requestAnimationFrame) {
return window.requestAnimationFrame;
}
const prefix = ['moz', 'ms', 'webkit'].filter(key => `${key}RequestAnimationFrame` in window)[0];
const prefix = availablePrefixs.filter(key => `${key}RequestAnimationFrame` in window)[0];
return prefix
? window[`${prefix}RequestAnimationFrame`]
: callback => setTimeout(callback, 1000 / 60);
: requestAnimationFramePolyfill();
}
export function cancelRequestAnimationFrame(id) {
if (typeof window === 'undefined') {
return null;
}
if (window.cancelAnimationFrame) {
return window.cancelAnimationFrame(id);
}
const prefix = availablePrefixs.filter(key =>
`${key}CancelAnimationFrame` in window || `${key}CancelRequestAnimationFrame` in window
)[0];
return prefix ?
(window[`${prefix}CancelAnimationFrame`] || window[`${prefix}CancelRequestAnimationFrame`]).call(this, id)
: clearTimeout(id);
}

View File

@@ -0,0 +1,10 @@
export default function isFlexSupported() {
if (typeof window !== 'undefined' && window.document && window.document.documentElement) {
const { documentElement } = window.document;
return 'flex' in documentElement.style ||
'webkitFlex' in documentElement.style ||
'Flex' in documentElement.style ||
'msFlex' in documentElement.style;
}
return false;
}

View File

@@ -1,12 +0,0 @@
export default function splitObject(obj, parts): Array<any> {
const left = {};
const right = {};
Object.keys(obj).forEach((k) => {
if (parts.indexOf(k) !== -1) {
left[k] = obj[k];
} else {
right[k] = obj[k];
}
});
return [left, right];
}

View File

@@ -0,0 +1,47 @@
import getRequestAnimationFrame, { cancelRequestAnimationFrame } from '../_util/getRequestAnimationFrame';
const reqAnimFrame = getRequestAnimationFrame();
export default function throttleByAnimationFrame(fn) {
let requestId;
const later = args => () => {
requestId = null;
fn(...args);
};
const throttled = (...args) => {
if (requestId == null) {
requestId = reqAnimFrame(later(args));
}
};
(throttled as any).cancel = () => cancelRequestAnimationFrame(requestId);
return throttled;
}
export function throttleByAnimationFrameDecorator() {
return function(target, key, descriptor) {
let fn = descriptor.value;
let definingProperty = false;
return {
configurable: true,
get() {
if (definingProperty || this === target.prototype || this.hasOwnProperty(key)) {
return fn;
}
let boundFn = throttleByAnimationFrame(fn.bind(this));
definingProperty = true;
Object.defineProperty(this, key, {
value: boundFn,
configurable: true,
writable: true,
});
definingProperty = false;
return boundFn;
},
};
};
}

View File

@@ -0,0 +1,68 @@
import React from 'react';
import { mount } from 'enzyme';
import Affix from '..';
import Button from '../../button';
jest.useFakeTimers();
const events = {};
class AffixMounter extends React.Component {
componentDidMount() {
this.container.scrollTop = 100;
this.container.addEventListener = jest.fn().mockImplementation((event, cb) => {
events[event] = cb;
});
}
getTarget = () => {
return this.container;
}
render() {
return (<div
style={{
height: 100,
overflowY: 'scroll',
}}
ref={(node) => { this.container = node; }}
>
<div
className="background"
style={{
paddingTop: 60,
height: 300,
}}
>
<Affix
target={() => this.container}
ref={ele => this.affix = ele}
>
<Button type="primary" >
Fixed at the top of container
</Button>
</Affix>
</div>
</div>);
}
}
describe('Affix Render', () => {
it('Anchor render perfectly', () => {
document.body.innerHTML = '<div id="mounter" />';
const wrapper = mount(<AffixMounter />, { attachTo: document.getElementById('mounter') });
jest.runAllTimers();
wrapper.node.affix.refs.fixedNode.parentNode.getBoundingClientRect = jest.fn(() => {
return {
bottom: 100, height: 28, left: 0, right: 0, top: -50, width: 195,
};
});
events.scroll({
type: 'scroll',
});
jest.runAllTimers();
expect(wrapper.node.affix.state.affixStyle).not.toBe(null);
});
});

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('affix');

View File

@@ -16,8 +16,8 @@ Please note that Affix should not cover other content on the page, especially wh
| Property | Description | Type | Default |
|--------------|-----------------------|----------|--------------|
| offsetTop | Pixels to offset from top when calculating position of scroll | Number | 0 |
| offsetBottom | Pixels to offset from bottom when calculating position of scroll | Number | - |
| offsetTop | Pixels to offset from top when calculating position of scroll | number | 0 |
| offsetBottom | Pixels to offset from bottom when calculating position of scroll | number | - |
| onChange | Callback when affix state is changed | Function(affixed) | - |
**Note:** Children of `Affix` can not be `position: absolute`, but you can set `Affix` as `position: absolute`:

View File

@@ -5,6 +5,7 @@ import classNames from 'classnames';
import shallowequal from 'shallowequal';
import omit from 'omit.js';
import getScroll from '../_util/getScroll';
import { throttleByAnimationFrameDecorator } from '../_util/throttleByAnimationFrame';
function getTargetRect(target): ClientRect {
return target !== window ?
@@ -96,18 +97,16 @@ export default class Affix extends React.Component<AffixProps, any> {
});
}
setPlaceholderStyle(e, placeholderStyle) {
setPlaceholderStyle(placeholderStyle) {
const originalPlaceholderStyle = this.state.placeholderStyle;
if (e.type === 'resize') {
return;
}
if (shallowequal(placeholderStyle, originalPlaceholderStyle)) {
return;
}
this.setState({ placeholderStyle });
}
updatePosition = (e) => {
@throttleByAnimationFrameDecorator()
updatePosition(e) {
let { offsetTop, offsetBottom, offset, target = getDefaultTarget } = this.props;
const targetNode = target();
@@ -145,7 +144,7 @@ export default class Affix extends React.Component<AffixProps, any> {
left: targetRect.left + elemOffset.left,
width: affixNode.offsetWidth,
});
this.setPlaceholderStyle(e, {
this.setPlaceholderStyle({
width: affixNode.offsetWidth,
height: affixNode.offsetHeight,
});
@@ -161,13 +160,18 @@ export default class Affix extends React.Component<AffixProps, any> {
left: targetRect.left + elemOffset.left,
width: affixNode.offsetWidth,
});
this.setPlaceholderStyle(e, {
this.setPlaceholderStyle({
width: affixNode.offsetWidth,
height: affixNode.offsetHeight,
});
} else {
this.setAffixStyle(e, null);
this.setPlaceholderStyle(e, null);
const { affixStyle } = this.state;
if (e.type === 'resize' && affixStyle && affixStyle.position === 'fixed' && affixNode.offsetWidth) {
this.setAffixStyle(e, {...affixStyle, width: affixNode.offsetWidth });
} else {
this.setAffixStyle(e, null);
}
this.setPlaceholderStyle(null);
}
}
@@ -192,6 +196,7 @@ export default class Affix extends React.Component<AffixProps, any> {
componentWillUnmount() {
this.clearScrollEventListeners();
clearTimeout(this.timeout);
(this.updatePosition as any).cancel();
}
setTargetEventListeners(getTarget) {
@@ -199,6 +204,7 @@ export default class Affix extends React.Component<AffixProps, any> {
if (!target) {
return;
}
this.clearScrollEventListeners();
this.scrollEvent = addEventListener(target, 'scroll', this.updatePosition);
this.resizeEvent = addEventListener(target, 'resize', this.updatePosition);
}
@@ -217,9 +223,9 @@ export default class Affix extends React.Component<AffixProps, any> {
});
const props = omit(this.props, ['prefixCls', 'offsetTop', 'offsetBottom', 'target']);
const placeholderStyle = { ...this.state.placeholderStyle, ...this.props.style };
return (
<div {...props} style={this.state.placeholderStyle}>
<div {...props} style={placeholderStyle}>
<div className={className} ref="fixedNode" style={this.state.affixStyle}>
{this.props.children}
</div>

View File

@@ -17,8 +17,8 @@ title: Affix
| 成员 | 说明 | 类型 | 默认值 |
|-------------|----------------|--------------------|--------------|
| offsetTop | 距离窗口顶部达到指定偏移量后触发 | Number | |
| offsetBottom | 距离窗口底部达到指定偏移量后触发 | Number | |
| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number | |
| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number | |
| target | 设置 `Affix` 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 | Function | () => window |
| onChange | 固定状态改变时触发的回调函数 | Function(affixed) | 无 |

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('alert');

View File

@@ -15,11 +15,11 @@ Alert component for feedback.
| Property | Description | Type | Default |
|----------- |--------------------------------------------------------- | ---------- |-------|
| type | Type of Alert styles, options:`success`, `info`, `warning`, `error` | String | `info` |
| closable | Whether Alert can be closed | Boolean | - |
| closeText | Close text to show | React.Node | - |
| message | Content of Alert | React.Node | - |
| description | Additional content of Alert | React.Node | - |
| type | Type of Alert styles, options:`success`, `info`, `warning`, `error` | string | `info` |
| closable | Whether Alert can be closed | boolean | - |
| closeText | Close text to show | string\|ReactNode | - |
| message | Content of Alert | string\|ReactNode | - |
| description | Additional content of Alert | string\|ReactNode | - |
| onClose | Callback when close Alert | Function | - |
| showIcon | Whether to show icon | Boolean | false |
| banner | Whether to show as banner | Boolean | false |
| showIcon | Whether to show icon | boolean | false |
| banner | Whether to show as banner | boolean | false |

View File

@@ -16,12 +16,12 @@ title: Alert
| 参数 | 说明 | 类型 | 默认值 |
|----------- |--------------------------------------------------------- | ---------- |-------|
| type | 指定警告提示的样式,有四种选择 `success``info``warning``error` | String | `info` |
| closable | 默认不显示关闭按钮 | Boolean | 无 |
| closeText | 自定义关闭按钮 | React.Node | 无 |
| message | 警告提示内容 | React.Node | 无 |
| description | 警告提示的辅助性文字介绍 | React.Node | 无 |
| type | 指定警告提示的样式,有四种选择 `success``info``warning``error` | string | `info` |
| closable | 默认不显示关闭按钮 | boolean | 无 |
| closeText | 自定义关闭按钮 | string\|ReactNode | 无 |
| message | 警告提示内容 | string\|ReactNode | 无 |
| description | 警告提示的辅助性文字介绍 | string\|ReactNode | 无 |
| onClose | 关闭时触发的回调函数 | Function | 无 |
| showIcon | 是否显示辅助图标 | Boolean | false |
| banner | 是否用作顶部公告 | Boolean | false |
| showIcon | 是否显示辅助图标 | boolean | false |
| banner | 是否用作顶部公告 | boolean | false |

View File

@@ -29,32 +29,32 @@
}
&-success {
border: 1px solid tint(@success-color, 80%);
background-color: tint(@success-color, 90%);
border: @border-width-base @border-style-base @green-2;
background-color: @green-1;
.@{alert-prefix-cls}-icon {
color: @success-color;
}
}
&-info {
border: 1px solid tint(@primary-color, 80%);
background-color: tint(@primary-color, 90%);
border: @border-width-base @border-style-base @primary-2;
background-color: @primary-1;
.@{alert-prefix-cls}-icon {
color: @primary-color;
}
}
&-warning {
border: 1px solid tint(@warning-color, 80%);
background-color: tint(@warning-color, 90%);
border: @border-width-base @border-style-base @yellow-2;
background-color: @yellow-1;
.@{alert-prefix-cls}-icon {
color: @warning-color;
}
}
&-error {
border: 1px solid tint(@error-color, 80%);
background-color: tint(@error-color, 90%);
border: @border-width-base @border-style-base @red-2;
background-color: @red-1;
.@{alert-prefix-cls}-icon {
color: @error-color;
}

View File

@@ -8,7 +8,8 @@ export interface AnchorLinkProps {
active?: boolean;
prefixCls?: string;
children?: any;
title?: Element;
title?: React.ReactNode;
offsetTop: number;
bounds: number;
target?: () => HTMLElement | Window;
affix?: boolean;
@@ -31,9 +32,9 @@ export default class AnchorLink extends React.Component<AnchorLinkProps, any> {
private _component: Element;
setActiveAnchor() {
const { bounds, href, affix } = this.props;
const { bounds, offsetTop, href, affix } = this.props;
const { anchorHelper } = this.context;
const active = affix && anchorHelper && anchorHelper.getCurrentAnchor(bounds) === href;
const active = affix && anchorHelper && anchorHelper.getCurrentAnchor(offsetTop, bounds) === href;
if (active && anchorHelper) {
anchorHelper.setActiveAnchor(this._component);
}
@@ -55,6 +56,7 @@ export default class AnchorLink extends React.Component<AnchorLinkProps, any> {
onClick: this.props.onClick,
prefixCls: this.props.prefixCls,
affix: this.props.affix,
offsetTop: this.props.offsetTop,
});
}
return child;
@@ -73,14 +75,14 @@ export default class AnchorLink extends React.Component<AnchorLinkProps, any> {
} else {
e.stopPreventDefault();
const scrollToFn = anchorHelper ? anchorHelper.scrollTo : scrollTo;
scrollToFn(href);
scrollToFn(href, this.props.offsetTop);
}
}
render() {
const { prefixCls, href, children, title, bounds, affix } = this.props;
const { prefixCls, href, children, title, bounds, offsetTop, affix } = this.props;
const { anchorHelper } = this.context;
const active = affix && anchorHelper && anchorHelper.getCurrentAnchor(bounds) === href;
const active = affix && anchorHelper && anchorHelper.getCurrentAnchor(offsetTop, bounds) === href;
const cls = classNames({
[`${prefixCls}-link`]: true,
[`${prefixCls}-link-active`]: active,

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { mount } from 'enzyme';
import Anchor from '../../components/anchor';
import Anchor from '..';
const { Link } = Anchor;

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('anchor');

View File

@@ -43,14 +43,14 @@ export type Section = {
section: any;
};
export function scrollTo(href, target = getDefaultTarget, callback = () => {}) {
export function scrollTo(href, offsetTop = 0, target = getDefaultTarget, callback = () => {}) {
const scrollTop = getScroll(target(), true);
const targetElement = document.getElementById(href.substring(1));
if (!targetElement) {
return;
}
const offsetTop = getOffsetTop(targetElement);
const targetScrollTop = scrollTop + offsetTop;
const eleOffsetTop = getOffsetTop(targetElement);
const targetScrollTop = scrollTop + eleOffsetTop - offsetTop;
const startTime = Date.now();
const frameFunc = () => {
const timestamp = Date.now();
@@ -91,7 +91,7 @@ class AnchorHelper {
this.currentAnchor = component;
}
getCurrentAnchor(bounds = 5) {
getCurrentAnchor(offsetTop: number = 0, bounds = 5) {
let activeAnchor = '';
if (typeof document === 'undefined') {
return activeAnchor;
@@ -100,9 +100,9 @@ class AnchorHelper {
const linksPositions = (this.links
.map(section => {
const target = document.getElementById(section.substring(1));
if (target && getOffsetTop(target) < bounds) {
if (target && getOffsetTop(target) < offsetTop + bounds) {
const top = getOffsetTop(target);
if (top <= bounds) {
if (top <= offsetTop + bounds) {
return {
section,
top,
@@ -121,8 +121,8 @@ class AnchorHelper {
return '';
}
scrollTo(href, target = getDefaultTarget, callback = () => {}) {
scrollTo(href, target, callback);
scrollTo(href, offsetTop, target = getDefaultTarget, callback = () => {}) {
scrollTo(href, offsetTop, target, callback);
}
}

View File

@@ -1,6 +1,6 @@
---
category: Components
type: Navigation
type: Other
cols: 2
title: Anchor
---
@@ -17,13 +17,13 @@ For displaying anchor hyperlinks on page and jumping between them.
| Property | Description | Type | Default |
|--------------|-----------------------|----------|--------------|
| offsetTop | Pixels to offset from top when calculating position of scroll | Number | 0 |
| offsetBottom | Pixels to offset from bottom when calculating position of scroll | Number | - |
| bounds | Bounding distance of anchor area | Number | 5(px) |
| offsetTop | Pixels to offset from top when calculating position of scroll | number | 0 |
| offsetBottom | Pixels to offset from bottom when calculating position of scroll | number | - |
| bounds | Bounding distance of anchor area | number | 5(px) |
### Link Props
| Property | Description | Type | Default |
|-------------|----------------|--------------------|--------------|
| href | target of hyperlink | String | |
| title | content of hyperlink | React.Node | |
| href | target of hyperlink | string | |
| title | content of hyperlink | string\|ReactNode | |

View File

@@ -47,7 +47,7 @@ export default class Anchor extends React.Component<AnchorProps, any> {
handleScroll = () => {
this.setState({
activeAnchor: this.anchorHelper.getCurrentAnchor(this.props.bounds),
activeAnchor: this.anchorHelper.getCurrentAnchor(this.props.offsetTop, this.props.bounds),
});
}
@@ -85,7 +85,7 @@ export default class Anchor extends React.Component<AnchorProps, any> {
clickAnchorLink = (href, component) => {
this._avoidInk = true;
this.refs.ink.style.top = `${component.offsetTop + component.clientHeight / 2 - 4.5}px`;
this.anchorHelper.scrollTo(href, getDefaultTarget, () => {
this.anchorHelper.scrollTo(href, this.props.offsetTop, getDefaultTarget, () => {
this._avoidInk = false;
});
}
@@ -99,6 +99,7 @@ export default class Anchor extends React.Component<AnchorProps, any> {
prefixCls: this.props.prefixCls,
bounds: this.props.bounds,
affix: this.props.affix,
offsetTop: this.props.offsetTop,
});
}
return child;

View File

@@ -2,7 +2,7 @@
category: Components
subtitle: 锚点
cols: 2
type: Navigation
type: Other
title: Anchor
---
@@ -18,13 +18,13 @@ title: Anchor
| 成员 | 说明 | 类型 | 默认值 |
|-------------|----------------|--------------------|--------------|
| offsetTop | 距离窗口顶部达到指定偏移量后触发 | Number | |
| offsetBottom | 距离窗口底部达到指定偏移量后触发 | Number | |
| bounds | 锚点区域边界 | Number | 5(px) |
| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number | |
| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number | |
| bounds | 锚点区域边界 | number | 5(px) |
### Link Props
| 成员 | 说明 | 类型 | 默认值 |
|-------------|----------------|--------------------|--------------|
| href | 锚点链接 | String | |
| title | 文字内容 | React.Node | |
| href | 锚点链接 | string | |
| title | 文字内容 | string\|ReactNode | |

View File

@@ -0,0 +1,234 @@
exports[`test renders ./components/auto-complete/demo/antd.md correctly 1`] = `
<div
class="ant-select-show-search ant-select-auto-complete ant-select ant-select-combobox ant-select-enabled"
style="width:200px;">
<div
aria-autocomplete="list"
aria-expanded="false"
aria-haspopup="true"
class="ant-select-selection
ant-select-selection--single"
role="combobox">
<div
class="ant-select-selection__rendered">
<div
class="ant-select-selection__placeholder"
style="display:block;user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
input here
</div>
<ul>
<li
class="ant-select-search ant-select-search--inline">
<div
class="ant-select-search__field__wrap">
<textarea
class="ant-input ant-select-search__field"
style="height:50px;" />
<span
class="ant-select-search__field__mirror" />
</div>
</li>
</ul>
</div>
<span
class="ant-select-arrow"
style="user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
<b />
</span>
</div>
</div>
`;
exports[`test renders ./components/auto-complete/demo/basic.md correctly 1`] = `
<div
class="ant-select-show-search ant-select-auto-complete ant-select ant-select-combobox ant-select-enabled"
style="width:200px;">
<div
aria-autocomplete="list"
aria-expanded="false"
aria-haspopup="true"
class="ant-select-selection
ant-select-selection--single"
role="combobox">
<div
class="ant-select-selection__rendered">
<div
class="ant-select-selection__placeholder"
style="display:block;user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
input here
</div>
<ul>
<li
class="ant-select-search ant-select-search--inline">
<div
class="ant-select-search__field__wrap">
<input
class="ant-input ant-input ant-select-search__field"
type="text"
value="" />
<span
class="ant-select-search__field__mirror" />
</div>
</li>
</ul>
</div>
<span
class="ant-select-arrow"
style="user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
<b />
</span>
</div>
</div>
`;
exports[`test renders ./components/auto-complete/demo/non-case-sensitive.md correctly 1`] = `
<div
class="ant-select-show-search ant-select-auto-complete ant-select ant-select-combobox ant-select-enabled"
style="width:200px;">
<div
aria-autocomplete="list"
aria-expanded="false"
aria-haspopup="true"
class="ant-select-selection
ant-select-selection--single"
role="combobox">
<div
class="ant-select-selection__rendered">
<div
class="ant-select-selection__placeholder"
style="display:block;user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
try to type \`b\`
</div>
<ul>
<li
class="ant-select-search ant-select-search--inline">
<div
class="ant-select-search__field__wrap">
<input
class="ant-input ant-input ant-select-search__field"
type="text"
value="" />
<span
class="ant-select-search__field__mirror" />
</div>
</li>
</ul>
</div>
<span
class="ant-select-arrow"
style="user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
<b />
</span>
</div>
</div>
`;
exports[`test renders ./components/auto-complete/demo/options.md correctly 1`] = `
<div
class="ant-select-show-search ant-select-auto-complete ant-select ant-select-combobox ant-select-enabled"
style="width:200px;">
<div
aria-autocomplete="list"
aria-expanded="false"
aria-haspopup="true"
class="ant-select-selection
ant-select-selection--single"
role="combobox">
<div
class="ant-select-selection__rendered">
<div
class="ant-select-selection__placeholder"
style="display:block;user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
input here
</div>
<ul>
<li
class="ant-select-search ant-select-search--inline">
<div
class="ant-select-search__field__wrap">
<input
class="ant-input ant-input ant-select-search__field"
type="text"
value="" />
<span
class="ant-select-search__field__mirror" />
</div>
</li>
</ul>
</div>
<span
class="ant-select-arrow"
style="user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
<b />
</span>
</div>
</div>
`;
exports[`test renders ./components/auto-complete/demo/uncertain-category.md correctly 1`] = `
<div
class="global-search-wrapper"
style="width:300px;">
<div
class="ant-select-lg ant-select-lg global-search ant-select-show-search ant-select-auto-complete ant-select ant-select-combobox ant-select-enabled"
style="width:100%;">
<div
aria-autocomplete="list"
aria-expanded="false"
aria-haspopup="true"
class="ant-select-selection
ant-select-selection--single"
role="combobox">
<div
class="ant-select-selection__rendered">
<div
class="ant-select-selection__placeholder"
style="display:block;user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
input here
</div>
<ul>
<li
class="ant-select-search ant-select-search--inline">
<div
class="ant-select-search__field__wrap">
<span
class="ant-input-preSuffix-wrapper">
<input
class="ant-input ant-input ant-select-search__field"
type="text"
value="" />
<span
class="ant-input-suffix">
<button
class="ant-btn ant-btn-primary ant-btn-lg search-btn"
type="button">
<i
class="anticon anticon-search" />
</button>
</span>
</span>
<span
class="ant-select-search__field__mirror" />
</div>
</li>
</ul>
</div>
<span
class="ant-select-arrow"
style="user-select:none;-webkit-user-select:none;"
unselectable="unselectable">
<b />
</span>
</div>
</div>
</div>
`;

View File

@@ -0,0 +1,20 @@
import React from 'react';
import { mount } from 'enzyme';
import AutoComplete from '..';
describe('AutoComplete with Custom Input Element Render', () => {
it('AutoComplete with custom Input render perfectly', () => {
const wrapper = mount(
<AutoComplete dataSource={['12345', '23456', '34567']}>
<textarea />
</AutoComplete>
);
expect(wrapper.find('textarea').length).toBe(1);
wrapper.find('textarea').simulate('change', { target: { value: '123' } });
const dropdownWrapper = mount(wrapper.find('Trigger').node.getComponent());
expect(dropdownWrapper.find('MenuItem').length).toBe(1);
expect(dropdownWrapper.find('MenuItem').props().value).toBe('12345');
});
});

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('auto-complete');

View File

@@ -0,0 +1,58 @@
---
order: 3
title:
zh-CN: 自定义输入组件
en-US: Customize Input Component
---
## zh-CN
自定义输入组件。
## en-US
Customize Input Component
````jsx
import { AutoComplete } from 'antd';
function onSelect(value) {
console.log('onSelect', value);
}
const Complete = React.createClass({
getInitialState() {
return {
dataSource: [],
};
},
handleChange(value) {
this.setState({
dataSource: !value ? [] : [
value,
value + value,
value + value + value,
],
});
},
handleKeyPress(ev) {
console.log('handleKeyPress', ev);
},
render() {
const { dataSource } = this.state;
return (
<AutoComplete
dataSource={dataSource}
style={{ width: 200 }}
onSelect={onSelect}
onChange={this.handleChange}
placeholder="input here"
>
<textarea onKeyPress={this.handleKeyPress} style={{ height: 50 }} />
</AutoComplete>
);
},
});
ReactDOM.render(<Complete />, mountNode);
````

View File

@@ -0,0 +1,31 @@
---
order: 3
title:
zh-CN: 不区分大小写
en-US: Non-case-sensitive AutoComplete
---
## zh-CN
不区分大小写的 AutoComplete
## en-US
A non-case-sensitive AutoComplete
````jsx
import { AutoComplete } from 'antd';
const dataSource = ['Burns Bay Road', 'Downing Street', 'Wall Street'];
function Complete() {
return (<AutoComplete
style={{ width: 200 }}
dataSource={dataSource}
placeholder="try to type `b`"
filterOption={(inputValue, option) => option.props.children.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1}
/>);
}
ReactDOM.render(<Complete />, mountNode);
````

View File

@@ -0,0 +1,138 @@
---
order: 4
title:
zh-CN: 查询模式 - 不确定类目
en-US: Lookup-Patterns - Uncertain Category
---
## zh-CN
[查询模式: 不确定类目](https://ant.design/docs/spec/reaction#Lookup-Patterns) 示例。
## en-US
Demonstration of [Lookup Patterns: Uncertain Category](https://ant.design/docs/spec/reaction#Lookup-Patterns).
Basic Usage, set datasource of autocomplete with `dataSource` property.
````jsx
import { Icon, Button, Input, AutoComplete } from 'antd';
const Option = AutoComplete.Option;
function onSelect(value) {
console.log('onSelect', value);
}
function getRandomInt(max, min = 0) {
return Math.floor(Math.random() * (max - min + 1)) + min; // eslint-disable-line no-mixed-operators
}
function searchResult(query) {
return (new Array(getRandomInt(5))).join('.').split('.')
.map((item, idx) => ({
query,
category: `${query}${idx}`,
count: getRandomInt(200, 100),
}));
}
function renderOption(item) {
return (
<Option key={item.category} text={item.category}>
{item.query} 在
<a
href={`https://s.taobao.com/search?q=${item.query}`}
target="_blank"
rel="noopener noreferrer"
>
{item.category}
</a>
区块中
<span style={{ float: 'right' }}>约 {item.count} 个结果</span>
</Option>
);
}
const Complete = React.createClass({
getInitialState() {
return {
dataSource: [],
};
},
handleChange(value) {
if (value) {
this.setState({
dataSource: searchResult(value),
});
}
},
render() {
const { dataSource } = this.state;
return (
<div className="global-search-wrapper" style={{ width: 300 }}>
<AutoComplete
className="global-search"
size="large"
style={{ width: '100%' }}
dataSource={dataSource.map(renderOption)}
onSelect={onSelect}
onChange={this.handleChange}
placeholder="input here"
optionLabelProp="text"
>
<Input
suffix={(
<Button className="search-btn" size="large" type="primary">
<Icon type="search" />
</Button>
)}
/>
</AutoComplete>
</div>
);
},
});
ReactDOM.render(<Complete />, mountNode);
````
````css
.global-search-wrapper {
padding-right: 50px;
}
.global-search {
width: 100%;
}
.global-search.ant-select-auto-complete .ant-input {
height: 40px;
padding: 11px 12px;
}
.global-search.ant-select-auto-complete .ant-select-selection__placeholder {
top: 20px;
margin-left: 12px;
margin-right: 12px;
}
.global-search .search-btn {
font-size: 18px;
}
.global-search.ant-select-auto-complete .ant-select-selection--single {
margin-right: -50px;
}
.global-search.ant-select-auto-complete .ant-input-preSuffix-wrapper .ant-input:not(:last-child) {
padding-right: 62px;
}
.global-search.ant-select-auto-complete .ant-input-preSuffix-wrapper .ant-input-suffix {
right: 0;
}
.global-search.ant-select-auto-complete .ant-input-preSuffix-wrapper .ant-input-suffix button {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
````

View File

@@ -17,15 +17,17 @@ When there is a need for autocomplete functionality.
const dataSource = ['12345', '23456', '34567'];
<AutoComplete dataSource={dataSource} />
```
Since `AutoComplete` is based on `Select`, so besides the following API, `AutoComplete` has the same API as `Select`.
| Property | Description | Type | Default |
|----------------|----------------------------------|------------|--------|
| dataSource | Data source for autocomplete | Array | |
| value | selected option | String/Array<String>/{key: String, label: React.Node}/Array<{key, label}> | - |
| defaultValue | Initial selected option. | string/Array<String> | - |
| dataSource | Data source for autocomplete | [DataSourceItemType](https://git.io/vMMKF)[] | |
| value | selected option | string\|string[]\|{ key: string, label: string\|ReactNode }\|Array<{ key: string, label: string\|ReactNode }> | - |
| defaultValue | Initial selected option. | string\|string[]\|{ key: string, label: string\|ReactNode }\|Array<{ key: string, label: string\|ReactNode }> | - |
| allowClear | Show clear button, effective in multiple mode only. | boolean | false |
| onChange | Called when select an option or input value change, or value of input is changed | function(value, label) | - |
| onSelect | Called when a option is selected. param is option's value and option instance. | function(value, option) | - |
| disabled | Whether disabled select | boolean | false |
| placeholder | placeholder of input | string | - |
| children (for dataSource) | Data source for autocomplet | React.ReactElement<OptionProps> / Array<React.ReactElement<OptionProps>> | - |
| children (for customize input element) | customize input element | HTMLInputElement / HTMLTextAreaElement / React.ReactElement<InputProps> | `<Input />` |
| filterOption | If true, filter options by input, if function, filter options against it. The function will receive two arguments, `inputValue` and `option`, if the function returns `true`, the option will be included in the filtered set; Otherwise, it will be excluded. | boolean or function(inputValue, option) | true |

View File

@@ -1,5 +1,7 @@
import React from 'react';
import Select, { OptionProps, OptGroupProps } from '../select';
import { findDOMNode } from 'react-dom';
import Select, { AbstractSelectProps, OptionProps, OptGroupProps } from '../select';
import Input from '../input';
import { Option, OptGroup } from 'rc-select';
import classNames from 'classnames';
@@ -11,21 +13,45 @@ export interface SelectedValue {
export interface DataSourceItemObject { value: string; text: string; };
export type DataSourceItemType = string | DataSourceItemObject;
export interface AutoCompleteProps {
export interface InputProps {
onChange?: React.FormEventHandler<any>;
value: any;
}
export type ValidInputElement =
HTMLInputElement |
HTMLTextAreaElement |
React.ReactElement<InputProps>;
export interface AutoCompleteProps extends AbstractSelectProps {
size?: 'large' | 'small' | 'default';
className?: string;
notFoundContent?: Element;
dataSource: DataSourceItemType[];
prefixCls?: string;
transitionName?: string;
optionLabelProp?: string;
choiceTransitionName?: string;
showSearch?: boolean;
defaultValue?: string | Array<any> | SelectedValue | Array<SelectedValue>;
value?: string | Array<any> | SelectedValue | Array<SelectedValue>;
allowClear?: boolean;
onChange?: (value: string | Array<any> | SelectedValue | Array<SelectedValue>) => void;
onSelect?: (value: string | Array<any> | SelectedValue | Array<SelectedValue>, option: Object) => any;
disabled?: boolean;
children: ValidInputElement |
React.ReactElement<OptionProps> |
Array<React.ReactElement<OptionProps>>;
}
class InputElement extends React.Component<any, any> {
private ele: Element;
focus = () => {
(findDOMNode(this.ele) as HTMLInputElement).focus();
}
blur = () => {
(findDOMNode(this.ele) as HTMLInputElement).blur();
}
render() {
return React.cloneElement(this.props.children, {
...this.props,
ref: ele => this.ele = ele,
}, null);
}
}
export default class AutoComplete extends React.Component<AutoCompleteProps, any> {
@@ -44,6 +70,14 @@ export default class AutoComplete extends React.Component<AutoCompleteProps, any
antLocale: React.PropTypes.object,
};
getInputElement = () => {
const { children } = this.props;
const element = children && React.isValidElement(children) && children.type !== Option ?
React.Children.only(this.props.children) :
<Input/>;
return <InputElement className="ant-input">{element}</InputElement>;
}
render() {
let {
size, className = '', notFoundContent, prefixCls, optionLabelProp, dataSource, children,
@@ -54,22 +88,32 @@ export default class AutoComplete extends React.Component<AutoCompleteProps, any
[`${prefixCls}-sm`]: size === 'small',
[className]: !!className,
[`${prefixCls}-show-search`]: true,
[`${prefixCls}-auto-complete`]: true,
});
const options = children || (dataSource ? dataSource.map((item) => {
switch (typeof item) {
case 'string':
return <Option key={item}>{item}</Option>;
case 'object':
return (
<Option key={(item as DataSourceItemObject).value}>
{(item as DataSourceItemObject).text}
</Option>
);
default:
throw new Error('AutoComplete[dataSource] only supports type `string[] | Object[]`.');
}
}) : []);
let options;
const childArray = React.Children.toArray(children);
if (childArray.length && (childArray[0] as React.ReactElement<any>).type === Option) {
options = children;
} else {
options = dataSource ? dataSource.map((item) => {
if (React.isValidElement(item)) {
return item;
}
switch (typeof item) {
case 'string':
return <Option key={item}>{item}</Option>;
case 'object':
return (
<Option key={(item as DataSourceItemObject).value}>
{(item as DataSourceItemObject).text}
</Option>
);
default:
throw new Error('AutoComplete[dataSource] only supports type `string[] | Object[]`.');
}
}) : [];
}
return (
<Select
@@ -77,6 +121,7 @@ export default class AutoComplete extends React.Component<AutoCompleteProps, any
className={cls}
optionLabelProp={optionLabelProp}
combobox
getInputElement={this.getInputElement}
notFoundContent={notFoundContent}
>
{options}

View File

@@ -2,7 +2,7 @@
category: Components
subtitle: 自动完成
type: Data Entry
cols: 1
cols: 2
title: AutoComplete
---
@@ -18,15 +18,18 @@ title: AutoComplete
const dataSource = ['12345', '23456', '34567'];
<AutoComplete dataSource={dataSource} />
```
因为 `AutoComplete` 是基于 `Select` 封装的,所以除了以下 API 外,`AutoComplete``Select` 拥有一样的 API。
| 参数 | 说明 | 类型 | 默认值 |
|----------------|----------------------------------|------------|---------|
| dataSource | 自动完成的数据源 | Array | |
| value | 指定当前选中的条目 | String/Array<String>/{key: String, label: React.Node}/Array<{key, label}> | 无 |
| defaultValue | 指定默认选中的条目 | String/Array<String>/{key: String, label: React.Node}/Array<{key, label}> | 无 |
| dataSource | 自动完成的数据源 | [DataSourceItemType](https://git.io/vMMKF)[] | |
| value | 指定当前选中的条目 | string\|string[]\|{ key: string, label: string\|ReactNode }\|Array<{ key: string, label: string\|ReactNode }> | 无 |
| defaultValue | 指定默认选中的条目 | string\|string[]\|{ key: string, label: string\|ReactNode }\|Array<{ key: string, label: string\|ReactNode}> | 无 |
| allowClear | 支持清除, 单选模式有效 | boolean | false |
| onChange | 选中 option或 input 的 value 变化时,调用此函数 | function(value) | 无 |
| onSelect | 被选中时调用,参数为选中项的 value 值 | function(value, option) | 无 |
| disabled | 是否禁用 | boolean | false |
| placeholder | 输入框提示 | string | - |
| children (自动完成的数据源) | 自动完成的数据源 | React.ReactElement<OptionProps> / Array<React.ReactElement<OptionProps>> | - |
| children (自定义输入框) | 自定义输入框 | HTMLInputElement / HTMLTextAreaElement / React.ReactElement<InputProps> | `<Input />` |
| optionLabelProp | 回填到选择框的 Option 的属性值,默认是 Option 的子元素。比如在子元素需要高亮效果时,此值可以设为 `value`。 | string | `children` |
| filterOption | 是否根据输入项进行筛选。当其为一个函数时,会接收 `inputValue` `option` 两个参数,当 `option` 符合筛选条件时,应返回 `true`,反之则返回 `false`。 | boolean or function(inputValue, option) | true |

View File

@@ -0,0 +1,65 @@
@import "../../style/themes/default";
@import "../../style/mixins/index";
@import "../../input/style/mixin";
@input-prefix-cls: ~"@{ant-prefix}-input";
@select-prefix-cls: ~"@{ant-prefix}-select";
@autocomplete-prefix-cls: ~"@{select-prefix-cls}-auto-complete";
.@{autocomplete-prefix-cls} {
&.@{select-prefix-cls} {
.@{select-prefix-cls} {
&-search--inline {
position: relative;
}
&-selection {
border: 0;
&--single {
height: auto;
}
&__rendered {
margin-left: 0;
margin-right: 0;
line-height: 0;
}
&__placeholder {
margin-left: 8px;
margin-right: 8px;
top: @input-height-base / 2;
}
}
}
.@{input-prefix-cls} {
.input();
background: transparent;
}
&-lg {
.@{select-prefix-cls}-selection__placeholder {
top: @input-height-lg / 2;
}
.@{input-prefix-cls} {
.input-lg();
}
}
&-sm {
.@{select-prefix-cls}-selection__placeholder {
top: @input-height-sm / 2;
}
.@{input-prefix-cls} {
.input-sm();
}
}
.@{input-prefix-cls} {
border: @border-width-base @border-style-base @border-color-base;
&:focus,
&:hover {
.hover;
}
}
}
}

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('back-top');

View File

@@ -20,6 +20,6 @@ title: BackTop
Property | Description | Type | Default
-----|-----|-----|------
visibilityHeight | the `BackTop` button will not show until the scroll height reaches this value | Number | 400
visibilityHeight | the `BackTop` button will not show until the scroll height reaches this value | number | 400
onClick | a callback function, which can be executed when you click the button | Function | -

View File

@@ -20,5 +20,5 @@ title: BackTop
| 参数 | 说明 | 类型 | 默认值 |
|-------------|----------------|--------------------|--------------|
| visibilityHeight | 滚动高度达到此参数值才出现 `BackTop` | Number | 400 |
| visibilityHeight | 滚动高度达到此参数值才出现 `BackTop` | number | 400 |
| onClick | 点击按钮的回调函数 | Function | - |

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { createElement, Component } from 'react';
import {findDOMNode} from 'react-dom';
import { findDOMNode } from 'react-dom';
import isCssAnimationSupported from '../_util/isCssAnimationSupported';
import assign from 'object-assign';
import omit from 'omit.js';
@@ -19,8 +19,7 @@ export interface ScrollNumberProps {
count?: string | number;
component?: string;
onAnimated?: Function;
height?: number;
style: React.CSSProperties;
style?: React.CSSProperties;
}
export default class ScrollNumber extends Component<ScrollNumberProps, any> {
@@ -29,7 +28,6 @@ export default class ScrollNumber extends Component<ScrollNumberProps, any> {
count: null,
onAnimated() {
},
height: 18,
};
lastCount: any;
@@ -105,16 +103,14 @@ export default class ScrollNumber extends Component<ScrollNumberProps, any> {
renderCurrentNumber(num, i) {
const position = this.getPositionByNum(num, i);
const height = this.props.height;
const removeTransition = this.state.animateStarted ||
(getNumberArray(this.lastCount)[i] === undefined);
return createElement('span', {
className: `${this.props.prefixCls}-only`,
style: {
transition: removeTransition && 'none',
WebkitTransform: `translateY(${-position * height}px)`,
transform: `translateY(${-position * height}px)`,
height,
WebkitTransform: `translateY(${-position * 100}%)`,
transform: `translateY(${-position * 100}%)`,
},
key: i,
}, this.renderNumberList(position));
@@ -139,6 +135,12 @@ export default class ScrollNumber extends Component<ScrollNumberProps, any> {
]), {
className: `${this.props.prefixCls} ${this.props.className}`,
});
// allow specify the border
// mock border-color by box-shadow for compatible with old usage:
// <Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />
if (props.style && props.style.borderColor) {
props.style.boxShadow = `0 0 0 1px ${props.style.borderColor} inset`;
}
return createElement(
this.props.component || 'sup',
props,

View File

@@ -1,281 +1,3 @@
exports[`test renders ./components/badge/demo/99plus.md correctly 1`] = `
<div>
<span
class="ant-badge"
title="99">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-342px);transform:translateY(-342px);height:18px;">
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="current">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
</span>
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-342px);transform:translateY(-342px);height:18px;">
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="current">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
</span>
</sup>
</span>
<span
class="ant-badge"
title="200">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
99+
</sup>
</span>
</div>
`;
exports[`test renders ./components/badge/demo/basic.md correctly 1`] = `
<span
class="ant-badge"
@@ -285,11 +7,10 @@ exports[`test renders ./components/badge/demo/basic.md correctly 1`] = `
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
data-show="true">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-270px);transform:translateY(-270px);height:18px;">
style="transition:none;-webkit-transform:translateY(-1500%);transform:translateY(-1500%);">
<p
class="">
0
@@ -417,177 +138,175 @@ exports[`test renders ./components/badge/demo/basic.md correctly 1`] = `
exports[`test renders ./components/badge/demo/change.md correctly 1`] = `
<div>
<span
class="ant-badge"
title="5">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-270px);transform:translateY(-270px);height:18px;">
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="current">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
</span>
</sup>
</span>
<span
class="ant-badge">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-dot"
data-show="true"
height="18" />
</span>
<div
style="margin-top:10px;">
<div>
<span
class="ant-badge"
title="5">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-1500%);transform:translateY(-1500%);">
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="current">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
</span>
</sup>
</span>
<div
class="ant-btn-group">
<button
class="ant-btn ant-btn-ghost"
class="ant-btn"
type="button">
<i
class="anticon anticon-minus" />
</button>
<button
class="ant-btn ant-btn-ghost"
class="ant-btn"
type="button">
<i
class="anticon anticon-plus" />
</button>
</div>
<button
class="ant-btn ant-btn-ghost"
style="margin-left:8px;"
type="button">
<span>
Switch state
</span>
</button>
</div>
<div
style="margin-top:10px;">
<span
class="ant-badge">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-dot"
data-show="true" />
</span>
<span
class="ant-switch"
tabindex="0">
<span
class="ant-switch-inner" />
</span>
</div>
</div>
`;
@@ -600,8 +319,7 @@ exports[`test renders ./components/badge/demo/dot.md correctly 1`] = `
class="anticon anticon-notification" />
<sup
class="ant-scroll-number ant-badge-dot"
data-show="true"
height="18" />
data-show="true" />
</span>
<span
class="ant-badge">
@@ -611,8 +329,7 @@ exports[`test renders ./components/badge/demo/dot.md correctly 1`] = `
</a>
<sup
class="ant-scroll-number ant-badge-dot"
data-show="true"
height="18" />
data-show="true" />
</span>
</div>
`;
@@ -627,11 +344,10 @@ exports[`test renders ./components/badge/demo/link.md correctly 1`] = `
class="head-example" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
data-show="true">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-270px);transform:translateY(-270px);height:18px;">
style="transition:none;-webkit-transform:translateY(-1500%);transform:translateY(-1500%);">
<p
class="">
0
@@ -765,11 +481,10 @@ exports[`test renders ./components/badge/demo/no-wrapper.md correctly 1`] = `
title="25">
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
data-show="true">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-216px);transform:translateY(-216px);height:18px;">
style="transition:none;-webkit-transform:translateY(-1200%);transform:translateY(-1200%);">
<p
class="">
0
@@ -893,7 +608,7 @@ exports[`test renders ./components/badge/demo/no-wrapper.md correctly 1`] = `
</span>
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-270px);transform:translateY(-270px);height:18px;">
style="transition:none;-webkit-transform:translateY(-1500%);transform:translateY(-1500%);">
<p
class="">
0
@@ -1023,11 +738,10 @@ exports[`test renders ./components/badge/demo/no-wrapper.md correctly 1`] = `
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18"
style="background-color:#fff;color:#999;border-color:#d9d9d9;">
style="background-color:#fff;color:#999;box-shadow:0 0 0 1px #d9d9d9 inset;">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-252px);transform:translateY(-252px);height:18px;">
style="transition:none;-webkit-transform:translateY(-1400%);transform:translateY(-1400%);">
<p
class="">
0
@@ -1157,7 +871,6 @@ exports[`test renders ./components/badge/demo/no-wrapper.md correctly 1`] = `
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18"
style="background-color:#87d068;">
99+
</sup>
@@ -1175,8 +888,278 @@ exports[`test renders ./components/badge/demo/overflow.md correctly 1`] = `
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
data-show="true">
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-1900%);transform:translateY(-1900%);">
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="current">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
</span>
<span
class="ant-scroll-number-only"
style="transition:none;-webkit-transform:translateY(-1900%);transform:translateY(-1900%);">
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="current">
9
</p>
<p
class="">
0
</p>
<p
class="">
1
</p>
<p
class="">
2
</p>
<p
class="">
3
</p>
<p
class="">
4
</p>
<p
class="">
5
</p>
<p
class="">
6
</p>
<p
class="">
7
</p>
<p
class="">
8
</p>
<p
class="">
9
</p>
</span>
</sup>
</span>
<span
class="ant-badge"
title="100">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true">
99+
</sup>
</span>
<span
class="ant-badge"
title="99">
<a
class="head-example"
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true">
10+
</sup>
</span>
@@ -1188,8 +1171,7 @@ exports[`test renders ./components/badge/demo/overflow.md correctly 1`] = `
href="#" />
<sup
class="ant-scroll-number ant-badge-count"
data-show="true"
height="18">
data-show="true">
999+
</sup>
</span>

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('badge');

View File

@@ -1,27 +0,0 @@
---
order: 1
title:
zh-CN: 大数字
en-US: Overflowed count
---
## zh-CN
超过 99 的会显示为 `99+`
## en-US
`99+` is displayed when count is larger than `99`.
````jsx
import { Badge } from 'antd';
ReactDOM.render(<div>
<Badge count={99}>
<a href="#" className="head-example" />
</Badge>
<Badge count={200}>
<a href="#" className="head-example" />
</Badge>
</div>, mountNode);
````

View File

@@ -23,7 +23,7 @@ ReactDOM.render(
, mountNode);
````
````css
<style>
.ant-badge:not(.ant-badge-status) {
margin-right: 16px;
}
@@ -34,4 +34,4 @@ ReactDOM.render(
background: #eee;
display: inline-block;
}
````
</style>

View File

@@ -14,7 +14,7 @@ title:
The count will be animated as it changes.
````jsx
import { Badge, Button, Icon } from 'antd';
import { Badge, Button, Icon, Switch } from 'antd';
const ButtonGroup = Button.Group;
const Test = React.createClass({
@@ -35,32 +35,30 @@ const Test = React.createClass({
}
this.setState({ count });
},
onClick() {
this.setState({
show: !this.state.show,
});
onChange(show) {
this.setState({ show });
},
render() {
return (
<div>
<Badge count={this.state.count}>
<a href="#" className="head-example" />
</Badge>
<Badge dot={this.state.show}>
<a href="#" className="head-example" />
</Badge>
<div style={{ marginTop: 10 }}>
<div>
<Badge count={this.state.count}>
<a href="#" className="head-example" />
</Badge>
<ButtonGroup>
<Button type="ghost" onClick={this.decline}>
<Button onClick={this.decline}>
<Icon type="minus" />
</Button>
<Button type="ghost" onClick={this.increase}>
<Button onClick={this.increase}>
<Icon type="plus" />
</Button>
</ButtonGroup>
<Button type="ghost" onClick={this.onClick} style={{ marginLeft: 8 }}>
Switch state
</Button>
</div>
<div style={{ marginTop: 10 }}>
<Badge dot={this.state.show}>
<a href="#" className="head-example" />
</Badge>
<Switch onChange={this.onChange} />
</div>
</div>
);

View File

@@ -1,5 +1,5 @@
---
order: 2
order: 3
title:
zh-CN: 可点击
en-US: Clickable

View File

@@ -1,5 +1,5 @@
---
order: 0
order: 1
title:
zh-CN: 独立使用
en-US: Standalone
@@ -20,7 +20,7 @@ import { Badge } from 'antd';
ReactDOM.render(<div>
<Badge count={25} />
<Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />
<Badge count={4} style={{ backgroundColor: '#fff', color: '#999', boxShadow: '0 0 0 1px #d9d9d9 inset' }} />
<Badge count={109} style={{ backgroundColor: '#87d068' }} />
</div>, mountNode);
````

View File

@@ -1,22 +1,28 @@
---
order: 6
order: 2
title:
zh-CN: 封顶数字
en-US: Customized overflow count
en-US: Overflow Count
---
## zh-CN
超过 `overflowCount` 的会显示为 `${overflowCount}+`
超过 `overflowCount` 的会显示为 `${overflowCount}+`,默认的 `overflowCount``99`
## en-US
`${overflowCount}+` is displayed when count is larger than `overflowCount`.
`${overflowCount}+` is displayed when count is larger than `overflowCount`. The default value of `overflowCount` is `99`.
````jsx
import { Badge } from 'antd';
ReactDOM.render(<div>
<Badge count={99}>
<a href="#" className="head-example" />
</Badge>
<Badge count={100}>
<a href="#" className="head-example" />
</Badge>
<Badge count={99} overflowCount={10}>
<a href="#" className="head-example" />
</Badge>

View File

@@ -1,5 +1,5 @@
---
order: 7
order: 6
title:
zh-CN: 状态点
en-US: Status

View File

@@ -25,8 +25,8 @@ Badge normally appears in proximity to notification or head picture with eye-cat
| Property | Description | Type | Default |
|----------------|-------------------------|------------|---------|
| count | Number to show in badge | Number | |
| overflowCount | Max count to show | Number | 99 |
| dot | Whether to show red dot without number | Boolean | false |
| count | Number to show in badge | number | |
| overflowCount | Max count to show | number | 99 |
| dot | Whether to show red dot without number | boolean | false |
| status | Set Badge as a status dot | Enum{ 'success', 'processing, 'default', 'error', 'warning' } | '' |
| text | If `status` is set, `text` is to set the text of status dot | String | '' |
| text | If `status` is set, `text` is to set the text of status dot | string | '' |

View File

@@ -3,7 +3,6 @@ import Animate from 'rc-animate';
import ScrollNumber from './ScrollNumber';
import classNames from 'classnames';
import warning from '../_util/warning';
import splitObject from '../_util/splitObject';
export interface BadgeProps {
/** Number to show in badge */
@@ -37,23 +36,16 @@ export default class Badge extends React.Component<BadgeProps, any> {
};
render() {
let [{
count, prefixCls, overflowCount, className, style, children, dot, status, text,
}, restProps] = splitObject(
this.props,
['count', 'prefixCls', 'overflowCount', 'className', 'style', 'children', 'dot', 'status', 'text']
);
const { count, prefixCls, overflowCount, className, style, children, dot, status, text, ...restProps } = this.props;
const isDot = dot || status;
const realCount = count;
count = count > overflowCount ? `${overflowCount}+` : count;
let displayCount = count > overflowCount ? `${overflowCount}+` : count;
// dot mode don't need count
if (isDot) {
count = '';
displayCount = '';
}
// null undefined "" "0" 0
const hidden = (!count || count === '0') && !isDot;
const hidden = (!displayCount || displayCount === '0') && !isDot;
const scrollNumberCls = classNames({
[`${prefixCls}-dot`]: isDot,
[`${prefixCls}-count`]: !isDot,
@@ -85,7 +77,7 @@ export default class Badge extends React.Component<BadgeProps, any> {
<ScrollNumber
data-show={!hidden}
className={scrollNumberCls}
count={count}
count={displayCount}
style={style}
/>
);
@@ -95,7 +87,7 @@ export default class Badge extends React.Component<BadgeProps, any> {
);
return (
<span {...restProps} className={badgeCls} title={realCount}>
<span {...restProps} className={badgeCls} title={count as string}>
{children}
<Animate
component=""

View File

@@ -26,8 +26,8 @@ title: Badge
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|----------------|----------------------------------|------------|---------|--------|
| count | 展示的数字,大于 overflowCount 时显示为 `${overflowCount}+`,为 0 时隐藏 | Number | | |
| overflowCount | 展示封顶的数字值 | Number | | 99 |
| dot | 不展示数字,只有一个小红点 | Boolean | | false |
| count | 展示的数字,大于 overflowCount 时显示为 `${overflowCount}+`,为 0 时隐藏 | number | | |
| overflowCount | 展示封顶的数字值 | number | | 99 |
| dot | 不展示数字,只有一个小红点 | boolean | | false |
| status | 设置 Badge 为状态点 | Enum | 'success'、'processing'、'default'、'error'、'warning' | '' |
| text | 在设置了 `status` 的前提下有效,设置状态点的文本 | String | | '' |
| text | 在设置了 `status` 的前提下有效,设置状态点的文本 | string | | '' |

View File

@@ -12,14 +12,13 @@
&-count {
position: absolute;
transform: translateX(-50%);
top: -10px;
height: 20px;
border-radius: 10px;
min-width: 20px;
top: -@badge-height / 2;
height: @badge-height;
border-radius: @badge-height / 2;
min-width: @badge-height;
background: @highlight-color;
border: 1px solid transparent;
color: #fff;
line-height: 18px;
line-height: @badge-height;
text-align: center;
padding: 0 6px;
font-size: @font-size-base;
@@ -36,10 +35,10 @@
&-dot {
position: absolute;
transform: translateX(-50%);
transform-origin: 0px center;
top: -4px;
height: 8px;
width: 8px;
transform-origin: 0 center;
top: -@badge-dot-size / 2;
height: @badge-dot-size;
width: @badge-dot-size;
border-radius: 100%;
background: @highlight-color;
z-index: 10;
@@ -61,7 +60,18 @@
}
&-processing {
background-color: @primary-color;
animation: antStatusProcessing 1.2s infinite ease-in-out;
position: relative;
&:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: 50%;
border: 1px solid @primary-color;
content: '';
animation: antStatusProcessing 1.2s infinite ease-in-out;
}
}
&-default {
background-color: @normal-color;
@@ -99,11 +109,12 @@
}
@keyframes antStatusProcessing {
0%,
100% {
opacity: 1;
0% {
transform: scale(0.8);
opacity: 0.5;
}
50% {
100% {
transform: scale(2.4);
opacity: 0;
}
}
@@ -113,6 +124,10 @@
&-only {
display: inline-block;
transition: transform .3s @ease-in-out;
height: @badge-height;
> p {
height: @badge-height;
}
}
// for IE8/9 display
&.not-support-css-animation &-only {

View File

@@ -2,14 +2,16 @@ import React from 'react';
import { cloneElement } from 'react';
import warning from '../_util/warning';
import BreadcrumbItem from './BreadcrumbItem';
import classNames from 'classnames';
export interface BreadcrumbProps {
prefixCls?: string;
routes?: Array<any>;
params?: Object;
separator?: string | React.ReactNode;
separator?: React.ReactNode;
itemRender?: (route: any, params: any, routes: Array<any>, paths: Array<string>) => React.ReactNode;
style?: React.CSSProperties;
className?: string;
};
function getBreadcrumbName(route, params) {
@@ -42,10 +44,7 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
static propTypes = {
prefixCls: React.PropTypes.string,
separator: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.element,
]),
separator: React.PropTypes.node,
routes: React.PropTypes.array,
params: React.PropTypes.object,
linkRender: React.PropTypes.func,
@@ -63,7 +62,10 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
render() {
let crumbs;
const { separator, prefixCls, routes, params = {}, children, itemRender = defaultItemRender } = this.props;
const {
separator, prefixCls, style, className, routes, params = {},
children, itemRender = defaultItemRender,
} = this.props;
if (routes && routes.length > 0) {
const paths: string[] = [];
crumbs = routes.map((route) => {
@@ -86,6 +88,10 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
});
} else if (children) {
crumbs = React.Children.map(children, (element: any, index) => {
warning(
element && element.type.__ANT_BREADCRUMB_ITEM,
'Breadcrumb only accetps Breadcrumb.Item as it\'s children'
);
return cloneElement(element, {
separator,
key: index,
@@ -93,7 +99,7 @@ export default class Breadcrumb extends React.Component<BreadcrumbProps, any> {
});
}
return (
<div className={prefixCls}>
<div className={classNames(className, prefixCls)} style={style}>
{crumbs}
</div>
);

View File

@@ -1,30 +1,31 @@
import React from 'react';
import splitObject from '../_util/splitObject';
import { PropTypes } from 'react';
export interface BreadcrumbItemProps {
prefixCls?: string;
separator?: React.ReactNode;
href?: string;
}
export default class BreadcrumbItem extends React.Component<BreadcrumbItemProps, any> {
static __ANT_BREADCRUMB_ITEM = true;
static defaultProps = {
prefixCls: 'ant-breadcrumb',
separator: '/',
};
static propTypes = {
prefixCls: React.PropTypes.string,
separator: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.element,
prefixCls: PropTypes.string,
separator: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
]),
href: React.PropTypes.string,
href: PropTypes.string,
};
render() {
const [{ prefixCls, separator, children }, restProps] = splitObject(
this.props, ['prefixCls', 'separator', 'children']
);
const { prefixCls, separator, children, ...restProps } = this.props;
let link;
if ('href' in this.props) {
link = <a className={`${prefixCls}-link`} {...restProps}>{children}</a>;

View File

@@ -0,0 +1,21 @@
import React from 'react';
import { mount } from 'enzyme';
import Breadcrumb from '../Breadcrumb';
describe('Breadcrumb', () => {
it('warns on non-Breadcrumb.Item children', () => {
const MyCom = () => <div>foo</div>;
spyOn(console, 'error');
mount(
<Breadcrumb>
<MyCom />
</Breadcrumb>
);
// eslint-disable-next-line
expect(console.error.calls.count()).toBe(1);
// eslint-disable-next-line
expect(console.error.calls.argsFor(0)[0]).toContain(
'Breadcrumb only accetps Breadcrumb.Item as it\'s children'
);
});
});

View File

@@ -1,7 +1,7 @@
import { render } from 'enzyme';
import { renderToJson } from 'enzyme-to-json';
import demoTest from '../shared/demoTest';
import routerDemo from '../../components/breadcrumb/demo/router.md';
import demoTest from '../../../tests/shared/demoTest';
import routerDemo from '../demo/router.md';
demoTest('breadcrumb', { skip: ['router.md'] });

View File

@@ -17,10 +17,10 @@ A breadcrumb displays the current location within a hierarchy. It allows going b
| Property | Description | Type | Optional | Default |
|-----------|-----------------------------------|-----------------|---------|--------|
| routes | The routing stack information of router | Array | | - |
| params | Routing parameter | Object | | - |
| separator | Custom separator | String or Element | | '/' |
| itemRender | Custom item renderer | (route, params, routes, paths) => React.ReactNode | | - |
| routes | The routing stack information of router | object[] | | - |
| params | Routing parameter | object | | - |
| separator | Custom separator | string\|ReactNode | | '/' |
| itemRender | Custom item renderer | (route, params, routes, paths) => ReactNode | | - |
> `linkRender` and `nameRender` were removed after `antd@2.0`, please use `itemRender` instead.

View File

@@ -17,10 +17,10 @@ title: Breadcrumb
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|-----------|-----------------------------------|-----------------|---------|--------|
| routes | router 的路由栈信息 | Array | | - |
| params | 路由的参数 | Object | | - |
| separator | 分隔符自定义 | String or Element | | '/' |
| itemRender | 自定义链接函数,和 react-router 配置使用 | (route, params, routes, paths) => React.ReactNode | | - |
| routes | router 的路由栈信息 | object[] | | - |
| params | 路由的参数 | object | | - |
| separator | 分隔符自定义 | string\|ReactNode | | '/' |
| itemRender | 自定义链接函数,和 react-router 配置使用 | (route, params, routes, paths) => ReactNode | | - |
> 2.0 之后,`linkRender` 和 `nameRender` 被移除,请使用 `itemRender` 来代替。

View File

@@ -3,14 +3,14 @@
@breadcrumb-prefix-cls: ~"@{ant-prefix}-breadcrumb";
.@{breadcrumb-prefix-cls} {
color: @text-color-secondary;
color: @text-color;
font-size: @font-size-base;
a {
color: @text-color;
transition: color .3s;
&:hover {
color: tint(@primary-color, 20%);
color: @primary-5;
}
}
@@ -25,7 +25,7 @@
&-separator {
margin: 0 8px;
color: @border-color-base;
color: rgba(0, 0, 0, 0.3);
}
&-link {

View File

@@ -14,13 +14,6 @@ exports[`test renders ./components/button/demo/basic.md correctly 1`] = `
Default
</span>
</button>
<button
class="ant-btn ant-btn-ghost"
type="button">
<span>
Ghost
</span>
</button>
<button
class="ant-btn ant-btn-dashed"
type="button">
@@ -28,6 +21,13 @@ exports[`test renders ./components/button/demo/basic.md correctly 1`] = `
Dashed
</span>
</button>
<button
class="ant-btn ant-btn-danger"
type="button">
<span>
Danger
</span>
</button>
</div>
`;
@@ -97,7 +97,7 @@ exports[`test renders ./components/button/demo/button-group.md correctly 1`] = `
</span>
</button>
<button
class="ant-btn ant-btn-ghost"
class="ant-btn"
type="button">
<span>
M
@@ -188,14 +188,14 @@ exports[`test renders ./components/button/demo/disabled.md correctly 1`] = `
</button>
<br />
<button
class="ant-btn ant-btn-ghost"
class="ant-btn"
type="button">
<span>
Ghost
</span>
</button>
<button
class="ant-btn ant-btn-ghost"
class="ant-btn"
disabled=""
type="button">
<span>
@@ -221,6 +221,33 @@ exports[`test renders ./components/button/demo/disabled.md correctly 1`] = `
</div>
`;
exports[`test renders ./components/button/demo/ghost.md correctly 1`] = `
<div
style="background:rgb(190, 200, 200);padding:26px 16px 16px;">
<button
class="ant-btn ant-btn-primary ant-btn-background-ghost"
type="button">
<span>
Primary Ghost
</span>
</button>
<button
class="ant-btn ant-btn-background-ghost"
type="button">
<span>
Default Ghost
</span>
</button>
<button
class="ant-btn ant-btn-dashed ant-btn-background-ghost"
type="button">
<span>
Dashed Ghost
</span>
</button>
</div>
`;
exports[`test renders ./components/button/demo/icon.md correctly 1`] = `
<div>
<button
@@ -255,13 +282,13 @@ exports[`test renders ./components/button/demo/icon.md correctly 1`] = `
</button>
<br />
<button
class="ant-btn ant-btn-ghost ant-btn-circle ant-btn-icon-only"
class="ant-btn ant-btn-circle ant-btn-icon-only"
type="button">
<i
class="anticon anticon-search" />
</button>
<button
class="ant-btn ant-btn-ghost"
class="ant-btn"
type="button">
<i
class="anticon anticon-search" />
@@ -324,6 +351,19 @@ exports[`test renders ./components/button/demo/loading.md correctly 1`] = `
Click me!
</span>
</button>
<br />
<button
class="ant-btn ant-btn-circle ant-btn-loading"
type="button">
<i
class="anticon anticon-spin anticon-loading" />
</button>
<button
class="ant-btn ant-btn-primary ant-btn-circle ant-btn-loading"
type="button">
<i
class="anticon anticon-spin anticon-loading" />
</button>
</div>
`;
@@ -337,14 +377,14 @@ exports[`test renders ./components/button/demo/multiple.md correctly 1`] = `
</span>
</button>
<button
class="ant-btn ant-btn-ghost"
class="ant-btn"
type="button">
<span>
secondary
</span>
</button>
<button
class="ant-btn ant-btn-ghost ant-dropdown-trigger"
class="ant-btn ant-dropdown-trigger"
type="button">
<span>
more

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('button');

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { render } from 'enzyme';
import { render, mount } from 'enzyme';
import { renderToJson } from 'enzyme-to-json';
import Button from '../../components/button';
import Button from '..';
describe('Button', () => {
it('renders correctly', () => {
@@ -17,4 +17,12 @@ describe('Button', () => {
);
expect(renderToJson(wrapper)).toMatchSnapshot();
});
it('have static perperty for type detecting', () => {
const wrapper = mount(
<Button>Button Text</Button>
);
// eslint-disable-next-line
expect(wrapper.type().__ANT_BUTTON).toBe(true);
});
});

View File

@@ -1,6 +1,5 @@
import React from 'react';
import classNames from 'classnames';
import splitObject from '../_util/splitObject';
export type ButtonSize = 'small' | 'large'
@@ -12,8 +11,7 @@ export interface ButtonGroupProps {
}
export default function ButtonGroup(props: ButtonGroupProps) {
const [{ prefixCls = 'ant-btn-group', size, className }, others] =
splitObject(props, ['prefixCls', 'size', 'className']);
const { prefixCls = 'ant-btn-group', size = '', className, ...others } = props;
// large => lg
// small => sm

View File

@@ -2,7 +2,7 @@ import React from 'react';
import classNames from 'classnames';
import { findDOMNode } from 'react-dom';
import Icon from '../icon';
import splitObject from '../_util/splitObject';
const rxTwoCNChar = /^[\u4e00-\u9fa5]{2}$/;
const isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);
function isString(str) {
@@ -24,7 +24,7 @@ function insertSpace(child) {
return child;
}
export type ButtonType = 'primary' | 'ghost' | 'dashed'
export type ButtonType = 'primary' | 'ghost' | 'dashed' | 'danger'
export type ButtonShape = 'circle' | 'circle-outline'
export type ButtonSize = 'small' | 'large'
@@ -41,14 +41,17 @@ export interface ButtonProps {
style?: React.CSSProperties;
prefixCls?: string;
className?: string;
ghost?: boolean;
}
export default class Button extends React.Component<ButtonProps, any> {
static Group: any;
static __ANT_BUTTON = true;
static defaultProps = {
prefixCls: 'ant-btn',
loading: false,
ghost: false,
};
static propTypes = {
@@ -101,9 +104,9 @@ export default class Button extends React.Component<ButtonProps, any> {
}
render() {
const props = this.props;
const [{ type, shape, size, className, htmlType, children, icon, loading, prefixCls }, others] = splitObject(props,
['type', 'shape', 'size', 'className', 'htmlType', 'children', 'icon', 'loading', 'prefixCls']);
const {
type, shape, size = '', className, htmlType, children, icon, loading, prefixCls, ghost, ...others,
} = this.props;
// large => lg
// small => sm
@@ -118,10 +121,11 @@ export default class Button extends React.Component<ButtonProps, any> {
[`${prefixCls}-${sizeCls}`]: sizeCls,
[`${prefixCls}-icon-only`]: !children && icon,
[`${prefixCls}-loading`]: loading,
[`${prefixCls}-background-ghost`]: ghost,
}, className);
const iconType = loading ? 'loading' : icon;
const iconNode = iconType ? <Icon type={iconType} /> : null;
const kids = React.Children.map(children, insertSpace);
return (
@@ -132,7 +136,7 @@ export default class Button extends React.Component<ButtonProps, any> {
onMouseUp={this.handleMouseUp}
onClick={this.handleClick}
>
{iconType ? <Icon type={iconType} /> : null}{kids}
{iconNode}{kids}
</button>
);
}

View File

@@ -7,19 +7,15 @@ title:
## zh-CN
按钮有四种类型:主按钮、次按钮、幽灵按钮、虚线按钮
按钮有四种类型:主按钮、次按钮、虚线按钮、危险按钮。主按钮在同一个操作区域最多出现一次
通过设置 `type``primary` `ghost` `dashed` 可分别创建主按钮、幽灵按钮、虚线按钮,若不设置 `type` 值则为次按钮。不同的样式可以用来区别其重要程度
主按钮和次按钮可独立使用,幽灵按钮用于和主按钮组合。需要强引导用主按钮,切记主按钮在同一个操作区域最多出现一次。
> `danger` 在 `antd@2.7` 后支持
## en-US
There are primary button, default button, ghost button and dashed button in antd.
There are `primary` button, `default` button, `dashed` button and `danger` button in antd.
`type` can be set as `primary` or `ghost` or `dashed`, in order to create primary button or ghost button or dashed button. If nothing is provided to `type`, we will get default button. Users can tell the significance of button from it's appearance.
Primary button and default button can be used without other button, but ghost button must be used with primary button.
> `danger` is supported after `antd@2.7`.
````jsx
import { Button } from 'antd';
@@ -28,8 +24,8 @@ ReactDOM.render(
<div>
<Button type="primary">Primary</Button>
<Button>Default</Button>
<Button type="ghost">Ghost</Button>
<Button type="dashed">Dashed</Button>
<Button type="danger">Danger</Button>
</div>
, mountNode);
````

View File

@@ -1,5 +1,5 @@
---
order: 5
order: 6
title:
zh-CN: 按钮组合
en-US: Button Group
@@ -36,7 +36,7 @@ ReactDOM.render(
<ButtonGroup>
<Button type="primary">L</Button>
<Button>M</Button>
<Button type="ghost">M</Button>
<Button>M</Button>
<Button type="dashed">R</Button>
</ButtonGroup>

View File

@@ -24,8 +24,8 @@ ReactDOM.render(
<Button>Default</Button>
<Button disabled>Default(disabled)</Button>
<br />
<Button type="ghost">Ghost</Button>
<Button type="ghost" disabled>Ghost(disabled)</Button>
<Button>Ghost</Button>
<Button disabled>Ghost(disabled)</Button>
<br />
<Button type="dashed">Dashed</Button>
<Button type="dashed" disabled>Dashed(disabled)</Button>

View File

@@ -0,0 +1,26 @@
---
order: 8
title:
zh-CN: 幽灵按钮
en-US: Ghost Button
---
## zh-CN
幽灵按钮将其他按钮的内容反色,背景变为透明,常用在有色背景上。
## en-US
`ghost` property will make button's background transparent, it is common used in colored background.
````jsx
import { Button } from 'antd';
ReactDOM.render(
<div style={{ background: 'rgb(190, 200, 200)', padding: '26px 16px 16px' }}>
<Button type="primary" ghost>Primary Ghost</Button>
<Button ghost>Default Ghost</Button>
<Button type="dashed" ghost>Dashed Ghost</Button>
</div>
, mountNode);
````

View File

@@ -27,8 +27,8 @@ ReactDOM.render(
<Button shape="circle" icon="search" />
<Button icon="search">Search</Button>
<br />
<Button type="ghost" shape="circle" icon="search" />
<Button type="ghost" icon="search">Search</Button>
<Button shape="circle" icon="search" />
<Button icon="search">Search</Button>
<Button type="dashed" shape="circle" icon="search" />
<Button type="dashed" icon="search">Search</Button>
</div>,

View File

@@ -45,6 +45,9 @@ const App = React.createClass({
<Button type="primary" icon="poweroff" loading={this.state.iconLoading} onClick={this.enterIconLoading}>
Click me!
</Button>
<br />
<Button shape="circle" loading />
<Button type="primary" shape="circle" loading />
</div>
);
},

View File

@@ -1,5 +1,5 @@
---
order: 6
order: 5
title:
zh-CN: 多个按钮组合
en-US: Multiple Buttons
@@ -32,9 +32,9 @@ const menu = (
ReactDOM.render(
<div>
<Button type="primary">primary</Button>
<Button type="ghost">secondary</Button>
<Button>secondary</Button>
<Dropdown overlay={menu}>
<Button type="ghost">
<Button>
more <Icon type="down" />
</Button>
</Dropdown>

View File

@@ -16,13 +16,14 @@ To get a customized button, just set `type`/`shape`/`size`/`loading`/`disabled`.
Property | Description | Type | Default
-----|-----|-----|------
type | can be set to `primary` `ghost` `dashed` or omitted | string | -
type | can be set to `primary` `dashed` `danger`(added in 2.7) or omitted | string | 'default'
htmlType | to set the original `type` of `button`, see: [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type) | string | `button`
icon | set the icon of button, see: Icon component | string | -
shape | can be set to `circle` or omitted | string | -
size | can be set to `small` `large` or omitted | string | `default`
loading | to set the loading status of button | boolean | false
loading | to set the loading status of button | boolean | `false`
onClick | set the handler to handle `click` event | function | -
ghost | make background transparent and invert text and border color, added in 2.7 | boolean | false
`<Button>Hello world!</Button>` will be rendered into `<button>Hello world!</button>`, and all the properties which are not listed above will be transferred to the `<button>` tag.

View File

@@ -19,13 +19,14 @@ subtitle: 按钮
属性 | 说明 | 类型 | 默认值
-----|-----|-----|------
type | 设置按钮类型,可选值为 `primary` `ghost` `dashed` 或者不设 | string | -
type | 设置按钮类型,可选值为 `primary` `dashed` `danger`(版本 2.7 中增加) 或者不设 | string | -
htmlType | 设置 `button` 原生的 `type` 值,可选值请参考 [HTML 标准](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type) | string | `button`
icon | 设置按钮的图标类型 | string | -
shape | 设置按钮形状,可选值为 `circle` 或者不设 | string | -
size | 设置按钮大小,可选值为 `small` `large` 或者不设 | string | `default`
loading | 设置按钮载入状态 | boolean | false
loading | 设置按钮载入状态 | boolean | `false`
onClick | `click` 事件的 handler | function | -
ghost | 幽灵属性,使按钮背景透明,版本 2.7 中增加 | boolean | false
`<Button>Hello world!</Button>` 最终会被渲染为 `<button>Hello world!</button>`,并且除了上表中的属性,其它属性都会直接传到 `<button></button>`

View File

@@ -4,6 +4,11 @@
@btn-prefix-cls: ~"@{ant-prefix}-btn";
// for compatibile
@btn-ghost-color : @text-color;
@btn-ghost-bg : transparent;
@btn-ghost-border : @border-color-base;
// Button styles
// -----------------------------
.@{btn-prefix-cls} {
@@ -16,6 +21,10 @@
.@{btn-prefix-cls}-group &:not(:first-child):not(:last-child) {
border-right-color: @btn-group-border;
border-left-color: @btn-group-border;
&:disabled {
border-color: @btn-default-border;
}
}
.@{btn-prefix-cls}-group &:first-child {
@@ -28,7 +37,7 @@
}
.@{btn-prefix-cls}-group &:last-child:not(:first-child),
.@{btn-prefix-cls}-group & + .@{btn-prefix-cls} {
.@{btn-prefix-cls}-group & + & {
border-left-color: @btn-group-border;
&[disabled] {
border-left-color: @btn-default-border;
@@ -44,6 +53,10 @@
.btn-dashed;
}
&-danger {
.btn-danger;
}
&-circle,
&-circle-outline {
.btn-circle(@btn-prefix-cls);
@@ -65,7 +78,11 @@
display: none;
}
&&-loading {
&&-loading:before {
display: block;
}
&&-loading:not(&-circle):not(&-circle-outline) {
padding-left: 29px;
pointer-events: none;
position: relative;
@@ -73,12 +90,9 @@
margin-left: -14px;
transition: all .3s @ease-in-out;
}
&:before {
display: block;
}
}
&-sm&-loading {
&-sm&-loading:not(&-circle):not(&-circle-outline) {
padding-left: 24px;
.@{iconfont-css-prefix} {
margin-left: -17px;
@@ -108,11 +122,25 @@
bottom: -1px;
right: -1px;
border-radius: inherit;
border: 0 solid @primary-color;
border: 1.5px solid @primary-color;
opacity: 0.4;
animation: buttonEffect 0.36s ease-out forwards;
animation: buttonEffect 0.4s ease-in-out forwards;
display: block;
}
&-danger&-clicked:after {
border-color: @btn-danger-bg;
}
&-background-ghost {
background: transparent!important;
border-color: #fff;
color: #fff;
}
&-background-ghost&-primary {
.button-variant-other(@primary-color; transparent; @primary-color);
}
}
@keyframes buttonEffect {
@@ -122,6 +150,5 @@
left: -6px;
bottom: -6px;
right: -6px;
border-width: 6px;
}
}

View File

@@ -21,15 +21,14 @@
.button-variant-primary(@color; @background) {
.button-color(@color; @background; @background);
&:hover,
&:focus {
.button-color(@color; tint(@background, 20%); tint(@background, 20%));
.button-color(@color; ~`colorPalette("@{background}", 5)`; ~`colorPalette("@{background}", 5)`);
}
&:active,
&.active {
.button-color(@color; shade(@background, 5%); shade(@background, 5%));
.button-color(@color; ~`colorPalette("@{background}", 7)`; ~`colorPalette("@{background}", 7)`);
}
.button-disabled();
@@ -40,12 +39,12 @@
&:hover,
&:focus {
.button-color(tint(@primary-color, 20%); @background; tint(@primary-color, 20%));
.button-color(@primary-5; @background; @primary-5);
}
&:active,
&.active {
.button-color(shade(@primary-color, 5%); @background; shade(@primary-color, 5%));
.button-color(@primary-7; @background; @primary-7);
}
.button-disabled();
@@ -76,12 +75,18 @@
display: inline-block;
> .@{btnClassName} {
position: relative;
z-index: 1;
&:hover,
&:focus,
&:active,
&.active {
z-index: 2;
}
&:disabled {
z-index: 0;
}
}
// size
@@ -107,7 +112,7 @@
touch-action: manipulation;
cursor: pointer;
background-image: none;
border: 1px solid transparent;
border: @border-width-base @border-style-base transparent;
white-space: nowrap;
line-height: @line-height-base;
.button-size(@btn-padding-base; @font-size-base; @btn-border-radius-base);
@@ -172,12 +177,17 @@
.button-variant-other(@btn-ghost-color, @btn-ghost-bg, @btn-ghost-border);
}
// ghost button style
// dashed button style
.btn-dashed() {
.button-variant-other(@btn-ghost-color, @btn-ghost-bg, @btn-ghost-border);
.button-variant-other(@btn-default-color, @btn-default-bg, @btn-default-border);
border-style: dashed;
}
// danger button style
.btn-danger() {
.button-variant-primary(@btn-danger-color, @btn-danger-bg);
}
// circle button: the content only contains icon
.btn-circle(@btnClassName: btn) {
.square(@btn-circle-size);

View File

@@ -0,0 +1,3 @@
import demoTest from '../../../tests/shared/demoTest';
demoTest('calendar');

View File

@@ -9,7 +9,6 @@ title:
一个通用的日历面板,支持年/月切换。
## en-US
A basic calendar component with Year/Month switch.

View File

@@ -1,5 +1,5 @@
---
order: 10
order: 2
title:
zh-CN: 卡片模式
en-US: Card

View File

@@ -1,33 +0,0 @@
---
order: 1
title:
zh-CN: 自定义渲染
en-US: Custom Render
---
## zh-CN
`dateCellRender``monthCellRender` 函数来自定义需要渲染的数据。
## en-US
This component can be rendered by using `dateCellRender` and `monthCellRender` with the data you need.
````jsx
import { Calendar } from 'antd';
import moment from 'moment';
function dateCellRender(value) {
return <div>Custom date {value.date()}</div>;
}
function monthCellRender(value) {
return <div>Custom monthly {value.month()}</div>;
}
ReactDOM.render(
<Calendar defaultValue={moment('2010-10-10', 'YYYY-MM-DD')}
dateCellRender={dateCellRender} monthCellRender={monthCellRender}
/>
, mountNode);
````

View File

@@ -1,5 +1,5 @@
---
order: 4
order: 3
title:
zh-CN: 国际化
en-US: locale

View File

@@ -1,17 +1,17 @@
---
order: 2
order: 1
title:
zh-CN: 通知事项日历演示
en-US: A demo of Notice Calendar
zh-CN: 通知事项日历
en-US: Notice Calendar
---
## zh-CN
一个复杂的应用示例。
一个复杂的应用示例,用 `dateCellRender``monthCellRender` 函数来自定义需要渲染的数据
## en-US
A complex application.
This component can be rendered by using `dateCellRender` and `monthCellRender` with the data you need.
````jsx
import { Calendar } from 'antd';
@@ -34,10 +34,10 @@ function getListData(value) {
listData = [
{ type: 'warning', content: 'This is warning event' },
{ type: 'normal', content: 'This is very long usual event。。....' },
{ type: 'error', content: 'This is error event.' },
{ type: 'error', content: 'This is error event.' },
{ type: 'error', content: 'This is error event.' },
{ type: 'error', content: 'This is error event.' },
{ type: 'error', content: 'This is error event 1.' },
{ type: 'error', content: 'This is error event 2.' },
{ type: 'error', content: 'This is error event 3.' },
{ type: 'error', content: 'This is error event 4.' },
]; break;
default:
}
@@ -49,8 +49,8 @@ function dateCellRender(value) {
return (
<ul className="events">
{
listData.map((item, index) =>
<li key={index}>
listData.map(item =>
<li key={item.content}>
<span className={`event-${item.type}`}>●</span>
{item.content}
</li>

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