From 4c28bc1fe20018f6354e5de4418d73467b188b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=B0=E6=96=87?= Date: Sat, 11 Jul 2015 10:17:58 +0800 Subject: [PATCH] feat: add component collapse --- components/collapse/demo/accordion.md | 32 ++++++++++++ components/collapse/demo/basic.md | 36 +++++++++++++ components/collapse/index.jsx | 19 +++++++ components/collapse/index.md | 18 +++++++ index.js | 3 +- package.json | 2 +- style/components/collapse.less | 74 +++++++++++++++++++++++++++ style/components/index.less | 1 + 8 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 components/collapse/demo/accordion.md create mode 100644 components/collapse/demo/basic.md create mode 100644 style/components/collapse.less diff --git a/components/collapse/demo/accordion.md b/components/collapse/demo/accordion.md new file mode 100644 index 0000000000..1aa15540e4 --- /dev/null +++ b/components/collapse/demo/accordion.md @@ -0,0 +1,32 @@ +# 手风琴 + +- order: 1 + +手风琴,每次只打开一个tab。默认打开第一个 + +--- + +````jsx +var Collapse = antd.Collapse; +var Panel = Collapse.Panel; + +var text = ` + A dog is a type of domesticated animal. + Known for its loyalty and faithfulness, + it can be found as a welcome guest in many households across the world. +`; + +React.render( + + +

{text}

+
+ +

{text}

+
+ +

{text}

+
+
+, document.getElementById('components-collapse-demo-accordion')); +```` diff --git a/components/collapse/demo/basic.md b/components/collapse/demo/basic.md new file mode 100644 index 0000000000..c54a3b408a --- /dev/null +++ b/components/collapse/demo/basic.md @@ -0,0 +1,36 @@ +# 折叠面板 + +- order: 0 + +默认打开第二个面板。 + +--- + +````jsx +var Collapse = antd.Collapse; +var Panel = Collapse.Panel; + +function callback(key) { + console.log(key); +} + +var text = ` + A dog is a type of domesticated animal. + Known for its loyalty and faithfulness, + it can be found as a welcome guest in many households across the world. +`; + +React.render( + + +

{text}

+
+ +

{text}

+
+ +

{text}

+
+
+, document.getElementById('components-collapse-demo-basic')); +```` diff --git a/components/collapse/index.jsx b/components/collapse/index.jsx index e69de29bb2..44c6c472b4 100644 --- a/components/collapse/index.jsx +++ b/components/collapse/index.jsx @@ -0,0 +1,19 @@ +'use strict'; + +var Collapse = require('rc-collapse'); +var React = require('react'); +var prefixCls = 'ant-collapse'; + +class AntCollapse extends React.Component { + render() { + return ; + } +} + +AntCollapse.defaultProps = { + prefixCls: prefixCls +}; + +AntCollapse.Panel = Collapse.Panel; + +module.exports = AntCollapse; diff --git a/components/collapse/index.md b/components/collapse/index.md index 62f17a27c1..4be652d261 100644 --- a/components/collapse/index.md +++ b/components/collapse/index.md @@ -11,3 +11,21 @@ - 对复杂区域进行分组和隐藏,保持页面的整洁。 - `手风琴` 是一种特殊的折叠面板,只允许单个内容区域展开。 + +## API + +### Collapse + +| 参数 | 说明 | 类型 | 默认值 | +|------------------|----------------------------------------------|----------|---------------------------------| +| activeKey | 当前激活 tab 面板的 key| Array or String | 默认无,accordion模式下默认第一个元素| +| defaultActiveKey | 初始化选中面板的 key | String | 无 | +| onChange | 切换面板的回调 | Function | 无 | + + +### Collapse.Panel + +| 参数 | 说明 | 类型 | 默认值 | +|------|------------------|-------------------------|--------| +| key | 对应 activeKey | String | 无 | +| header | 面板头内容 | React.Element or String | 无 | diff --git a/index.js b/index.js index b469467007..e896593490 100644 --- a/index.js +++ b/index.js @@ -15,7 +15,8 @@ var antd = { confirm: require('./components/modal/confirm'), Steps: require('./components/steps'), InputNumber: require('./components/input-number'), - Switch: require('./components/switch') + Switch: require('./components/switch'), + Collapse: require('./components/Collapse') }; module.exports = antd; diff --git a/package.json b/package.json index 34a441759d..e6a859a3a2 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "gregorian-calendar-format": "~3.0.1", "object-assign": "~3.0.0", "rc-calendar": "~3.10.0", + "rc-collapse": "~1.2.0", "rc-dialog": "~4.4.0", "rc-dropdown": "~1.1.1", "rc-input-number": "~2.0.1", @@ -48,7 +49,6 @@ "webpack": "^1.10.1", "webpack-dev-middleware": "^1.2.0" }, - "scripts": { "babel": "babel components --out-dir lib", "build": "npm run clean && webpack && nico build", diff --git a/style/components/collapse.less b/style/components/collapse.less new file mode 100644 index 0000000000..7d9e392a48 --- /dev/null +++ b/style/components/collapse.less @@ -0,0 +1,74 @@ +@prefixCls: ant-collapse; +@borderStyle: 1px solid #d9d9d9; + +#arrow { + .common(){ + width: 0; + height: 0; + font-size: 0; + line-height: 0; + } + .right(@w, @h, @color) { + border-top: @w solid transparent; + border-bottom: @w solid transparent; + border-left: @h solid @color; + } + + .bottom(@w, @h, @color) { + border-left: @w solid transparent; + border-right: @w solid transparent; + border-top: @h solid @color; + } +} + +.@{prefixCls} { + background-color: #f3f5f7; + border-radius: 3px; + border-top: @borderStyle; + border-left: @borderStyle; + border-right: @borderStyle; + + &-content { + height: 0; + opacity: 0; + transition-property: all; + transition-duration: .3s; + transition-timing-function: ease-in; + overflow: hidden; + color: #999; + padding: 0 16px; + background-color: #fbfbfb; + > p, div { + margin-top: 10px; + margin-bottom: 10px; + } + } + + &-content-active { + opacity: 1; + height: auto; + border-bottom: @borderStyle; + } + + &-header { + height: 38px; + line-height: 38px; + text-indent: 16px; + color: #666; + border-bottom: @borderStyle; + &:before { + display: inline-block; + content: '\20'; + #arrow > .common(); + #arrow > .right(3px, 4px, #666); + vertical-align: middle; + margin-right: 8px; + } + } + + &-item-active { + .@{prefixCls}-header::before { + #arrow > .bottom(3px, 4px, #666); + } + } +} diff --git a/style/components/index.less b/style/components/index.less index 2b88bf6cae..71cb926142 100644 --- a/style/components/index.less +++ b/style/components/index.less @@ -16,3 +16,4 @@ @import "breadcrumb"; @import "inputNumber"; @import "typography"; +@import "collapse"; -- GitLab