mirror of
https://github.com/ant-design/ant-design.git
synced 2024-12-14 08:09:13 +08:00
Merge branch 'master' of github.com:ant-design/ant-design
This commit is contained in:
commit
f35a81a862
@ -28,6 +28,7 @@
|
|||||||
"react/no-multi-comp": 0,
|
"react/no-multi-comp": 0,
|
||||||
"react/prop-types": 0,
|
"react/prop-types": 0,
|
||||||
"react/prefer-es6-class": 0,
|
"react/prefer-es6-class": 0,
|
||||||
|
"react/prefer-stateless-function": 0,
|
||||||
"react/jsx-closing-bracket-location": 0,
|
"react/jsx-closing-bracket-location": 0,
|
||||||
"react/jsx-no-bind": 0,
|
"react/jsx-no-bind": 0,
|
||||||
"no-param-reassign": 0,
|
"no-param-reassign": 0,
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
|
sudo: false
|
||||||
|
|
||||||
language: node_js
|
language: node_js
|
||||||
|
|
||||||
node_js:
|
node_js:
|
||||||
- "4"
|
- "4"
|
||||||
|
- "5"
|
||||||
|
15
CHANGELOG.md
15
CHANGELOG.md
@ -4,6 +4,19 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 0.12.8
|
||||||
|
|
||||||
|
`2016-03-06`
|
||||||
|
|
||||||
|
- 新增 `heart` `calculator` 图标。
|
||||||
|
- Table 补充了 `showHeader` 和 `footer` 属性。
|
||||||
|
- Modal 补充了 `maskClosable` 属性。
|
||||||
|
- 修正一个 Tag 和 Popover 配合使用的问题。[#1111](https://github.com/ant-design/ant-design/issues/1111)
|
||||||
|
- 将 TreeSelect 的 `treeDefaultExpandAll` 默认属性设为 false,并优化了性能。
|
||||||
|
- 修复 RadioGroup 无法垂直布局的问题。[#1119](https://github.com/ant-design/ant-design/issues/1119)
|
||||||
|
- 统一了 less 文件的部分变量。
|
||||||
|
- 修正部分组件的样式。
|
||||||
|
|
||||||
## 0.12.7
|
## 0.12.7
|
||||||
|
|
||||||
`2016-03-03`
|
`2016-03-03`
|
||||||
@ -27,7 +40,7 @@
|
|||||||
- 增加了一个搜索框和提示功能结合的 [例子](http://ant.design/components/select/#demo-search-box)。
|
- 增加了一个搜索框和提示功能结合的 [例子](http://ant.design/components/select/#demo-search-box)。
|
||||||
- 允许可编辑的 Tabs 删除最后一个页签。[#1071](https://github.com/ant-design/ant-design/issues/1071)
|
- 允许可编辑的 Tabs 删除最后一个页签。[#1071](https://github.com/ant-design/ant-design/issues/1071)
|
||||||
- Table 的 `rowSelect.onSelectAll` 补充了第三个参数 `deselectedRows`, `rowSelect.onChange` 补充了第二个参数 `selectedRows`。[#1105](https://github.com/ant-design/ant-design/issues/1105)
|
- Table 的 `rowSelect.onSelectAll` 补充了第三个参数 `deselectedRows`, `rowSelect.onChange` 补充了第二个参数 `selectedRows`。[#1105](https://github.com/ant-design/ant-design/issues/1105)
|
||||||
- 修复了部分组件样式的小问题。
|
- 修正部分组件的样式。
|
||||||
|
|
||||||
## 0.12.5
|
## 0.12.5
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
|----------- |--------------------------------------------------------- | ---------- |-------|
|
|----------- |--------------------------------------------------------- | ---------- |-------|
|
||||||
| type | 必选参数,指定警告提示的样式,有四种选择`success`、`info`、`warn`、`error` | String | 无 |
|
| type | 必选参数,指定警告提示的样式,有四种选择`success`、`info`、`warn`、`error` | String | 无 |
|
||||||
| closable | 可选参数,默认不显示关闭按钮 | Boolean | 无 |
|
| closable | 可选参数,默认不显示关闭按钮 | Boolean | 无 |
|
||||||
| closeText | 可选参数,自定义关闭按钮 | String | 无 |
|
| closeText | 可选参数,自定义关闭按钮 | React.Node | 无 |
|
||||||
| message | 必选参数,警告提示内容 | String | 无 |
|
| message | 必选参数,警告提示内容 | React.Node | 无 |
|
||||||
| description | 可选参数,警告提示的辅助性文字介绍 | String | 无 |
|
| description | 可选参数,警告提示的辅助性文字介绍 | React.Node | 无 |
|
||||||
| onClose | 可选参数,关闭时触发的回调函数 | Function | 无 |
|
| onClose | 可选参数,关闭时触发的回调函数 | Function | 无 |
|
||||||
| showIcon | 可选参数,是否显示辅助图标 | Boolean | false |
|
| showIcon | 可选参数,是否显示辅助图标 | Boolean | false |
|
||||||
|
@ -24,13 +24,19 @@ function insertSpace(child) {
|
|||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clearButton(button) {
|
||||||
|
button.className = button.className.replace(`${prefix}clicked`, '');
|
||||||
|
}
|
||||||
|
|
||||||
export default class Button extends React.Component {
|
export default class Button extends React.Component {
|
||||||
handleClick(...args) {
|
handleClick(...args) {
|
||||||
|
// Add click effect
|
||||||
const buttonNode = findDOMNode(this);
|
const buttonNode = findDOMNode(this);
|
||||||
buttonNode.className = buttonNode.className.replace(`${prefix}clicked`, '');
|
clearButton(buttonNode);
|
||||||
setTimeout(() => {
|
setTimeout(() => buttonNode.className += ` ${prefix}clicked`, 10);
|
||||||
buttonNode.className += ` ${prefix}clicked`;
|
clearTimeout(this.timeout);
|
||||||
}, 10);
|
this.timeout = setTimeout(() => clearButton(buttonNode), 500);
|
||||||
|
|
||||||
this.props.onClick(...args);
|
this.props.onClick(...args);
|
||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
@ -50,13 +56,16 @@ export default class Button extends React.Component {
|
|||||||
[prefix + shape]: shape,
|
[prefix + shape]: shape,
|
||||||
[prefix + sizeCls]: sizeCls,
|
[prefix + sizeCls]: sizeCls,
|
||||||
[`${prefix}loading`]: ('loading' in props && props.loading !== false),
|
[`${prefix}loading`]: ('loading' in props && props.loading !== false),
|
||||||
[className]: className
|
[className]: className,
|
||||||
});
|
});
|
||||||
|
|
||||||
const kids = React.Children.map(children, insertSpace);
|
const kids = React.Children.map(children, insertSpace);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button {...others} type={htmlType || 'button'} className={classes} onClick={this.handleClick.bind(this)}>
|
<button {...others}
|
||||||
|
type={htmlType || 'button'}
|
||||||
|
className={classes}
|
||||||
|
onClick={this.handleClick.bind(this)}>
|
||||||
{kids}
|
{kids}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
|
@ -70,6 +70,10 @@ class AntCascader extends React.Component {
|
|||||||
[`${prefixCls}-picker`]: true,
|
[`${prefixCls}-picker`]: true,
|
||||||
[`${prefixCls}-picker-disabled`]: disabled,
|
[`${prefixCls}-picker-disabled`]: disabled,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Fix bug of https://github.com/facebook/react/pull/5004
|
||||||
|
delete otherProps.onChange;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Cascader {...this.props}
|
<Cascader {...this.props}
|
||||||
value={this.state.value}
|
value={this.state.value}
|
||||||
|
@ -151,7 +151,7 @@ const icons1 = ['step-backward', 'step-forward', 'fast-backward', 'fast-forward'
|
|||||||
|
|
||||||
const icons2 = ['question', 'question-circle-o', 'question-circle', 'plus', 'plus-circle-o', 'plus-circle', 'pause', 'pause-circle-o', 'pause-circle', 'minus', 'minus-circle-o', 'minus-circle', 'plus-square', 'minus-square', 'info', 'info-circle-o', 'info-circle', 'exclamation', 'exclamation-circle-o', 'exclamation-circle', 'cross', 'cross-circle-o', 'cross-circle', 'check', 'check-circle-o', 'check-circle', 'clock-circle-o', 'clock-circle'];
|
const icons2 = ['question', 'question-circle-o', 'question-circle', 'plus', 'plus-circle-o', 'plus-circle', 'pause', 'pause-circle-o', 'pause-circle', 'minus', 'minus-circle-o', 'minus-circle', 'plus-square', 'minus-square', 'info', 'info-circle-o', 'info-circle', 'exclamation', 'exclamation-circle-o', 'exclamation-circle', 'cross', 'cross-circle-o', 'cross-circle', 'check', 'check-circle-o', 'check-circle', 'clock-circle-o', 'clock-circle'];
|
||||||
|
|
||||||
const icons3 = ['lock', 'unlock', 'android', 'apple', 'area-chart', 'bar-chart', 'bars', 'book', 'calendar', 'cloud', 'cloud-download', 'code', 'copy', 'credit-card', 'delete', 'desktop', 'download', 'edit', 'ellipsis', 'file', 'file-text', 'file-unknown', 'folder', 'folder-open', 'github', 'hdd', 'frown', 'meh', 'inbox', 'laptop', 'appstore', 'line-chart', 'link', 'logout', 'mail', 'menu-fold', 'menu-unfold', 'mobile', 'notification', 'paper-clip', 'picture', 'pie-chart', 'poweroff', 'reload', 'search', 'setting', 'share-alt', 'shopping-cart', 'smile', 'tablet', 'tag', 'tags', 'to-top', 'upload', 'user', 'video-camera', 'windows', 'ie', 'chrome', 'home', 'loading', 'smile-circle', 'meh-circle', 'frown-circle', 'tags-o', 'tag-o', 'cloud-upload-o', 'cloud-download-o', 'cloud-upload', 'cloud-o', 'star-o', 'star', 'environment', 'environment-o', 'eye', 'eye-o', 'camera', 'camera-o', 'aliwangwang', 'aliwangwang-o', 'save', 'team', 'solution', 'phone', 'filter', 'exception', 'export', 'customerservice', 'qrcode', 'scan', 'like', 'dislike', 'message', 'pay-circle', 'pay-circle-o'];
|
const icons3 = ['lock', 'unlock', 'android', 'apple', 'area-chart', 'bar-chart', 'bars', 'book', 'calendar', 'cloud', 'cloud-download', 'code', 'copy', 'credit-card', 'delete', 'desktop', 'download', 'edit', 'ellipsis', 'file', 'file-text', 'file-unknown', 'folder', 'folder-open', 'github', 'hdd', 'frown', 'meh', 'inbox', 'laptop', 'appstore-o', 'appstore', 'line-chart', 'link', 'logout', 'mail', 'menu-fold', 'menu-unfold', 'mobile', 'notification', 'paper-clip', 'picture', 'pie-chart', 'poweroff', 'reload', 'search', 'setting', 'share-alt', 'shopping-cart', 'smile', 'tablet', 'tag', 'tags', 'to-top', 'upload', 'user', 'video-camera', 'windows', 'ie', 'chrome', 'home', 'loading', 'smile-circle', 'meh-circle', 'frown-circle', 'tags-o', 'tag-o', 'cloud-upload-o', 'cloud-download-o', 'cloud-upload', 'cloud-o', 'star-o', 'star', 'heart-o', 'heart', 'environment', 'environment-o', 'eye', 'eye-o', 'camera', 'camera-o', 'aliwangwang', 'aliwangwang-o', 'save', 'team', 'solution', 'phone', 'filter', 'exception', 'export', 'customerservice', 'qrcode', 'scan', 'like', 'dislike', 'message', 'pay-circle', 'pay-circle-o', 'calculator'];
|
||||||
|
|
||||||
|
|
||||||
ReactDOM.render(<IconSet icons={icons1} />, document.getElementById('iconset-direction'));
|
ReactDOM.render(<IconSet icons={icons1} />, document.getElementById('iconset-direction'));
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
| min | 最小值 | Number | -Infinity |
|
| min | 最小值 | Number | -Infinity |
|
||||||
| max | 最大值 | Number | Infinity |
|
| max | 最大值 | Number | Infinity |
|
||||||
| value | 当前值 | Number | |
|
| value | 当前值 | Number | |
|
||||||
| step | 每次改变步数 | Number | 1 |
|
| step | 每次改变步数 | Number or String | 1 |
|
||||||
| defaultValue | 初始值 | Number | |
|
| defaultValue | 初始值 | Number | |
|
||||||
| onChange | 变化回调 | Function | |
|
| onChange | 变化回调 | Function | |
|
||||||
| disabled | 禁用 | Boolean | false |
|
| disabled | 禁用 | Boolean | false |
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
| footer | 底部内容 | React.Element | 确定取消按钮 |
|
| footer | 底部内容 | React.Element | 确定取消按钮 |
|
||||||
| okText | 确认按钮文字 | String | 确定 |
|
| okText | 确认按钮文字 | String | 确定 |
|
||||||
| cancelText | 取消按钮文字 | String | 取消 |
|
| cancelText | 取消按钮文字 | String | 取消 |
|
||||||
|
| maskClosable | 点击蒙层是否允许关闭 | Boolean | true |
|
||||||
|
|
||||||
### Modal.xxx()
|
### Modal.xxx()
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ const prefixCls = 'ant-progress';
|
|||||||
|
|
||||||
const statusColorMap = {
|
const statusColorMap = {
|
||||||
normal: '#2db7f5',
|
normal: '#2db7f5',
|
||||||
exception: '#ff6600',
|
exception: '#ff5500',
|
||||||
success: '#87d068'
|
success: '#87d068'
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ let Line = React.createClass({
|
|||||||
strokeWidth: 10,
|
strokeWidth: 10,
|
||||||
status: 'normal', // exception active
|
status: 'normal', // exception active
|
||||||
showInfo: true,
|
showInfo: true,
|
||||||
trailColor: '#e9e9e9'
|
trailColor: '#f3f3f3'
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
render() {
|
render() {
|
||||||
@ -115,7 +115,7 @@ let Circle = React.createClass({
|
|||||||
percent: 0,
|
percent: 0,
|
||||||
strokeWidth: 6,
|
strokeWidth: 6,
|
||||||
status: 'normal', // exception
|
status: 'normal', // exception
|
||||||
trailColor: '#f9f9f9',
|
trailColor: '#f3f3f3',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
render() {
|
render() {
|
||||||
|
46
components/radio/demo/radiogroup-more.md
Normal file
46
components/radio/demo/radiogroup-more.md
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# RadioGroup 垂直
|
||||||
|
|
||||||
|
- order: 2
|
||||||
|
|
||||||
|
垂直的 RadioGroup,配合更多输入框选项。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
````jsx
|
||||||
|
import { Radio, Input } from 'antd';
|
||||||
|
const RadioGroup = Radio.Group;
|
||||||
|
|
||||||
|
const App = React.createClass({
|
||||||
|
getInitialState() {
|
||||||
|
return {
|
||||||
|
value: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onChange(e) {
|
||||||
|
console.log('radio checked', e.target.value);
|
||||||
|
this.setState({
|
||||||
|
value: e.target.value,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
render() {
|
||||||
|
const radioStyle = {
|
||||||
|
display: 'block',
|
||||||
|
height: '30px',
|
||||||
|
lineHeight: '30px',
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<RadioGroup onChange={this.onChange} value={this.state.value}>
|
||||||
|
<Radio style={radioStyle} key="a" value={1}>Option A</Radio>
|
||||||
|
<Radio style={radioStyle} key="b" value={2}>Option B</Radio>
|
||||||
|
<Radio style={radioStyle} key="c" value={3}>Option C</Radio>
|
||||||
|
<Radio style={radioStyle} key="d" value={4}>
|
||||||
|
More...
|
||||||
|
{this.state.value === 4 ? <Input style={{ width: 100, marginLeft: 10 }} /> : null}
|
||||||
|
</Radio>
|
||||||
|
</RadioGroup>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ReactDOM.render(<App />, mountNode);
|
||||||
|
````
|
@ -13,27 +13,26 @@ const RadioGroup = Radio.Group;
|
|||||||
const App = React.createClass({
|
const App = React.createClass({
|
||||||
getInitialState() {
|
getInitialState() {
|
||||||
return {
|
return {
|
||||||
value: 1
|
value: 1,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onChange(e) {
|
onChange(e) {
|
||||||
console.log('radio checked', e.target.value);
|
console.log('radio checked', e.target.value);
|
||||||
this.setState({
|
this.setState({
|
||||||
value: e.target.value
|
value: e.target.value,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div>
|
|
||||||
<RadioGroup onChange={this.onChange} value={this.state.value}>
|
<RadioGroup onChange={this.onChange} value={this.state.value}>
|
||||||
<Radio key="a" value={1}>A</Radio>
|
<Radio key="a" value={1}>A</Radio>
|
||||||
<Radio key="b" value={2}>B</Radio>
|
<Radio key="b" value={2}>B</Radio>
|
||||||
<Radio key="c" value={3}>C</Radio>
|
<Radio key="c" value={3}>C</Radio>
|
||||||
<Radio key="d" value={null}>D</Radio>
|
<Radio key="d" value={null}>D</Radio>
|
||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
</div>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ReactDOM.render(<App />, mountNode);
|
ReactDOM.render(<App />, mountNode);
|
||||||
````
|
````
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
|
import Radio from './radio';
|
||||||
|
import RadioButton from './radioButton';
|
||||||
|
|
||||||
function getCheckedValue(children) {
|
function getCheckedValue(children) {
|
||||||
let value = null;
|
let value = null;
|
||||||
let matched = false;
|
let matched = false;
|
||||||
React.Children.forEach(children, (radio) => {
|
React.Children.forEach(children, (radio) => {
|
||||||
if (radio.props && radio.props.checked) {
|
if (radio && radio.props && radio.props.checked) {
|
||||||
value = radio.props.value;
|
value = radio.props.value;
|
||||||
matched = true;
|
matched = true;
|
||||||
}
|
}
|
||||||
@ -62,7 +64,7 @@ export default React.createClass({
|
|||||||
render() {
|
render() {
|
||||||
const props = this.props;
|
const props = this.props;
|
||||||
const children = React.Children.map(props.children, (radio) => {
|
const children = React.Children.map(props.children, (radio) => {
|
||||||
if (radio.props) {
|
if (radio && (radio.type === Radio || radio.type === RadioButton) && radio.props) {
|
||||||
const keyProps = {};
|
const keyProps = {};
|
||||||
if (!('key' in radio) && typeof radio.props.value === 'string') {
|
if (!('key' in radio) && typeof radio.props.value === 'string') {
|
||||||
keyProps.key = radio.props.value;
|
keyProps.key = radio.props.value;
|
||||||
@ -81,6 +83,6 @@ export default React.createClass({
|
|||||||
[props.prefixCls]: true,
|
[props.prefixCls]: true,
|
||||||
[`${props.prefixCls}-${props.size}`]: props.size,
|
[`${props.prefixCls}-${props.size}`]: props.size,
|
||||||
});
|
});
|
||||||
return <div className={classString}>{children}</div>;
|
return <div className={classString} style={props.style}>{children}</div>;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -9,7 +9,7 @@ const AntRadio = React.createClass({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
render() {
|
render() {
|
||||||
const { prefixCls, children, checked, disabled, className } = this.props;
|
const { prefixCls, children, checked, disabled, className, style } = this.props;
|
||||||
const classString = classNames({
|
const classString = classNames({
|
||||||
[prefixCls]: true,
|
[prefixCls]: true,
|
||||||
[`${prefixCls}-checked`]: checked,
|
[`${prefixCls}-checked`]: checked,
|
||||||
@ -17,8 +17,8 @@ const AntRadio = React.createClass({
|
|||||||
[className]: !!className,
|
[className]: !!className,
|
||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
<label className={classString}>
|
<label className={classString} style={style}>
|
||||||
<Radio {...this.props} children={null} />
|
<Radio {...this.props} style={null} children={null} />
|
||||||
{children}
|
{children}
|
||||||
</label>
|
</label>
|
||||||
);
|
);
|
||||||
|
@ -75,6 +75,7 @@ const SearchInput = React.createClass({
|
|||||||
'ant-search-input': true,
|
'ant-search-input': true,
|
||||||
'ant-search-input-focus': this.state.focus,
|
'ant-search-input-focus': this.state.focus,
|
||||||
});
|
});
|
||||||
|
const options = this.state.data.map(d => <Option key={d.value}>{d.text}</Option>);
|
||||||
return (
|
return (
|
||||||
<Input.Group className={searchCls} style={this.props.style}>
|
<Input.Group className={searchCls} style={this.props.style}>
|
||||||
<Select
|
<Select
|
||||||
@ -88,7 +89,7 @@ const SearchInput = React.createClass({
|
|||||||
onChange={this.handleChange}
|
onChange={this.handleChange}
|
||||||
onFocus={this.handleFocusBlur}
|
onFocus={this.handleFocusBlur}
|
||||||
onBlur={this.handleFocusBlur}>
|
onBlur={this.handleFocusBlur}>
|
||||||
{this.state.data.map(d => <Option key={d.value}>{d.text}</Option>)}
|
{options}
|
||||||
</Select>
|
</Select>
|
||||||
<div className="ant-input-group-wrap">
|
<div className="ant-input-group-wrap">
|
||||||
<Button className={btnCls} onClick={this.handleSubmit}>
|
<Button className={btnCls} onClick={this.handleSubmit}>
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
| defaultValue | 指定默认选中的条目 | string/Array<String> | 无 |
|
| defaultValue | 指定默认选中的条目 | string/Array<String> | 无 |
|
||||||
| multiple | 支持多选 | boolean | false |
|
| multiple | 支持多选 | boolean | false |
|
||||||
| allowClear | 支持清除, 单选模式有效 | boolean | false |
|
| allowClear | 支持清除, 单选模式有效 | boolean | false |
|
||||||
| filterOption | 是否根据输入项进行筛选 | boolean | true |
|
| filterOption | 是否根据输入项进行筛选,可为一个函数,返回满足要求的 option 即可 | boolean or function(inputValue, option) | true |
|
||||||
| tags | 可以把随意输入的条目作为 tag,输入项不需要与下拉选项匹配 | boolean |false |
|
| tags | 可以把随意输入的条目作为 tag,输入项不需要与下拉选项匹配 | boolean |false |
|
||||||
| onSelect | 被选中时调用,参数为选中项的 value 值 | function(value, option) | 无 |
|
| onSelect | 被选中时调用,参数为选中项的 value 值 | function(value, option) | 无 |
|
||||||
| onDeselect | 取消选中时调用,参数为选中项的 option value 值,仅在 multiple 或 tags 模式下生效 | function(value, option) | 无 |
|
| onDeselect | 取消选中时调用,参数为选中项的 option value 值,仅在 multiple 或 tags 模式下生效 | function(value, option) | 无 |
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
<Steps>
|
<Steps>
|
||||||
<Steps.Step title="第一步"></Steps.Step>
|
<Step title="第一步" />
|
||||||
<Steps.Step title="第二步"></Steps.Step>
|
<Step title="第二步" />
|
||||||
<Steps.Step title="第三步"></Steps.Step>
|
<Step title="第三步" />
|
||||||
</Steps>
|
</Steps>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
方便一页内展示大量数据。
|
方便一页内展示大量数据。
|
||||||
|
|
||||||
|
需要指定 column 的 `width` 属性,否则列头和内容可能不对齐。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
````jsx
|
````jsx
|
||||||
|
@ -61,15 +61,18 @@ const columns = [{
|
|||||||
| size | 正常或迷你类型 | String | `default` or `small`| default |
|
| size | 正常或迷你类型 | String | `default` or `small`| default |
|
||||||
| dataSource | 数据数组 | Array | | |
|
| dataSource | 数据数组 | Array | | |
|
||||||
| columns | 表格列的配置描述,具体项见下表 | Array | | 无 |
|
| columns | 表格列的配置描述,具体项见下表 | Array | | 无 |
|
||||||
| rowKey | 表格列 key 的取值 | Function(record, index):string | | record.key |
|
| rowKey | 表格行 key 的取值 | Function(record, index):string | | record.key |
|
||||||
| expandedRowRender | 额外的列展开元素 | Function | | - |
|
| expandedRowRender | 额外的展开行 | Function | | - |
|
||||||
| defaultExpandedRowKeys | 默认展开的列 | Array | | - |
|
| defaultExpandedRowKeys | 默认展开的行 | Array | | - |
|
||||||
| onChange | 分页、排序、筛选变化时触发 | Function(pagination, filters, sorter) | | |
|
| onChange | 分页、排序、筛选变化时触发 | Function(pagination, filters, sorter) | | |
|
||||||
| loading | 页面是否加载中 | Boolean | | false |
|
| loading | 页面是否加载中 | Boolean | | false |
|
||||||
| locale | 设置排序、过滤按钮的文字或 `title` | Object | | [默认值](https://github.com/ant-design/ant-design/issues/575#issuecomment-159169511) |
|
| locale | 默认文案设置,目前包括排序、过滤、空数据文案 | Object | | `{ filterConfirm: '确定', filterReset: '重置', emptyText: '暂无数据' }` [默认值](https://github.com/ant-design/ant-design/issues/575#issuecomment-159169511) |
|
||||||
| indentSize | 展示树形数据时,每层缩进的宽度,以 px 为单位 | Number | | 15 |
|
| indentSize | 展示树形数据时,每层缩进的宽度,以 px 为单位 | Number | | 15 |
|
||||||
| onRowClick | 处理行点击事件 | Function(record, index) | | 无 |
|
| onRowClick | 处理行点击事件 | Function(record, index) | | 无 |
|
||||||
| useFixedHeader | 是否固定表头 | Boolean | | false |
|
| useFixedHeader | 是否固定表头 | Boolean | | false |
|
||||||
|
| bordered | 是否展示外边框和列边框 | Boolean | | false |
|
||||||
|
| showHeader | 是否显示表头 | Boolean | | true |
|
||||||
|
| footer | 表格底部自定义渲染函数 | Function(currentPageData) | | |
|
||||||
|
|
||||||
### Column
|
### Column
|
||||||
|
|
||||||
@ -112,9 +115,6 @@ const columns = [{
|
|||||||
![](https://os.alipayobjects.com/rmsportal/luLdLvhPOiRpyss.png)
|
![](https://os.alipayobjects.com/rmsportal/luLdLvhPOiRpyss.png)
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
const rowKey = function(record) {
|
// 比如你的数据主键是 uid
|
||||||
return record.uid; // 比如你的数据主键是 uid
|
return <Table rowKey={record => record.uid} />;
|
||||||
};
|
|
||||||
|
|
||||||
return <Table rowKey={rowKey} />;
|
|
||||||
```
|
```
|
||||||
|
@ -36,12 +36,13 @@ class AntTag extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { prefixCls, closable, color, ...restProps } = this.props;
|
const { prefixCls, closable, color, className, children, ...restProps } = this.props;
|
||||||
const close = closable ? <Icon type="cross" onClick={this.close.bind(this)} /> : '';
|
const close = closable ? <Icon type="cross" onClick={this.close.bind(this)} /> : '';
|
||||||
const className = classNames({
|
const classString = classNames({
|
||||||
[prefixCls]: true,
|
[prefixCls]: true,
|
||||||
[`${prefixCls}-${color}`]: !!color,
|
[`${prefixCls}-${color}`]: !!color,
|
||||||
[`${prefixCls}-close`]: this.state.closing,
|
[`${prefixCls}-close`]: this.state.closing,
|
||||||
|
[className]: !!className,
|
||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
<Animate component=""
|
<Animate component=""
|
||||||
@ -50,8 +51,8 @@ class AntTag extends React.Component {
|
|||||||
transitionAppear
|
transitionAppear
|
||||||
onEnd={this.animationEnd.bind(this)}>
|
onEnd={this.animationEnd.bind(this)}>
|
||||||
{this.state.closed ? null : (
|
{this.state.closed ? null : (
|
||||||
<div data-show={!this.state.closing} className={className}>
|
<div data-show={!this.state.closing} {...restProps} className={classString}>
|
||||||
<span className={`${prefixCls}-text`} {...restProps} />
|
<span className={`${prefixCls}-text`}>{children}</span>
|
||||||
{close}
|
{close}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -44,6 +44,7 @@ const App = React.createClass({
|
|||||||
<Transfer
|
<Transfer
|
||||||
dataSource={this.state.mockData}
|
dataSource={this.state.mockData}
|
||||||
showSearch
|
showSearch
|
||||||
|
notFoundContent="xxxxxx"
|
||||||
targetKeys={this.state.targetKeys}
|
targetKeys={this.state.targetKeys}
|
||||||
onChange={this.handleChange}
|
onChange={this.handleChange}
|
||||||
render={item => item.title} />
|
render={item => item.title} />
|
||||||
|
@ -147,7 +147,7 @@ class Transfer extends Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
prefixCls, titles, operations, showSearch,
|
prefixCls, titles, operations, showSearch, notFoundContent,
|
||||||
searchPlaceholder, body, footer, listStyle, className,
|
searchPlaceholder, body, footer, listStyle, className,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
const { leftFilter, rightFilter, leftCheckedKeys, rightCheckedKeys } = this.state;
|
const { leftFilter, rightFilter, leftCheckedKeys, rightCheckedKeys } = this.state;
|
||||||
@ -180,6 +180,7 @@ class Transfer extends Component {
|
|||||||
render={this.props.render}
|
render={this.props.render}
|
||||||
showSearch={showSearch}
|
showSearch={showSearch}
|
||||||
searchPlaceholder={searchPlaceholder}
|
searchPlaceholder={searchPlaceholder}
|
||||||
|
notFoundContent={notFoundContent}
|
||||||
body={body}
|
body={body}
|
||||||
footer={footer}
|
footer={footer}
|
||||||
prefixCls={`${prefixCls}-list`} />
|
prefixCls={`${prefixCls}-list`} />
|
||||||
@ -204,6 +205,7 @@ class Transfer extends Component {
|
|||||||
render={this.props.render}
|
render={this.props.render}
|
||||||
showSearch={showSearch}
|
showSearch={showSearch}
|
||||||
searchPlaceholder={searchPlaceholder}
|
searchPlaceholder={searchPlaceholder}
|
||||||
|
notFoundContent={notFoundContent}
|
||||||
body={body}
|
body={body}
|
||||||
footer={footer}
|
footer={footer}
|
||||||
prefixCls={`${prefixCls}-list`} />
|
prefixCls={`${prefixCls}-list`} />
|
||||||
@ -222,6 +224,7 @@ Transfer.defaultProps = {
|
|||||||
operations: [],
|
operations: [],
|
||||||
showSearch: false,
|
showSearch: false,
|
||||||
searchPlaceholder: '请输入搜索内容',
|
searchPlaceholder: '请输入搜索内容',
|
||||||
|
notFoundContent: 'Not Found',
|
||||||
body: noop,
|
body: noop,
|
||||||
footer: noop,
|
footer: noop,
|
||||||
};
|
};
|
||||||
@ -239,6 +242,7 @@ Transfer.propTypes = {
|
|||||||
operations: PropTypes.array,
|
operations: PropTypes.array,
|
||||||
showSearch: PropTypes.bool,
|
showSearch: PropTypes.bool,
|
||||||
searchPlaceholder: PropTypes.string,
|
searchPlaceholder: PropTypes.string,
|
||||||
|
notFoundContent: PropTypes.node,
|
||||||
body: PropTypes.func,
|
body: PropTypes.func,
|
||||||
footer: PropTypes.func,
|
footer: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
@ -28,4 +28,5 @@
|
|||||||
| operations | 操作文案集合,顺序从上至下 | Array | [] |
|
| operations | 操作文案集合,顺序从上至下 | Array | [] |
|
||||||
| showSearch | 是否显示搜索框 | Boolean | false |
|
| showSearch | 是否显示搜索框 | Boolean | false |
|
||||||
| searchPlaceholder | 搜索框的默认值 | String | 请输入搜索的内容 |
|
| searchPlaceholder | 搜索框的默认值 | String | 请输入搜索的内容 |
|
||||||
|
| notFoundContent | 当列表为空时显示的内容 | React.node | 'Not Found' |
|
||||||
| footer | 底部渲染函数 | Function(props) | | |
|
| footer | 底部渲染函数 | Function(props) | | |
|
||||||
|
@ -69,8 +69,8 @@ class TransferList extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { prefixCls, dataSource, titleText, filter, checkedKeys,
|
const { prefixCls, dataSource, titleText, filter, checkedKeys, notFoundContent,
|
||||||
checkStatus, body, footer, showSearch } = this.props;
|
checkStatus, body, footer, showSearch, searchPlaceholder } = this.props;
|
||||||
|
|
||||||
// Custom Layout
|
// Custom Layout
|
||||||
const footerDom = footer({ ...this.props });
|
const footerDom = footer({ ...this.props });
|
||||||
@ -109,12 +109,16 @@ class TransferList extends Component {
|
|||||||
{ bodyDom ||
|
{ bodyDom ||
|
||||||
<div className={ showSearch ? `${prefixCls}-body ${prefixCls}-body-with-search` : `${prefixCls}-body`}>
|
<div className={ showSearch ? `${prefixCls}-body ${prefixCls}-body-with-search` : `${prefixCls}-body`}>
|
||||||
{ showSearch ? <div className={`${prefixCls}-body-search-wrapper`}>
|
{ showSearch ? <div className={`${prefixCls}-body-search-wrapper`}>
|
||||||
<Search prefixCls={`${prefixCls}-search`} onChange={this.handleFilter.bind(this)} handleClear={this.handleClear.bind(this)} value={filter} />
|
<Search prefixCls={`${prefixCls}-search`}
|
||||||
|
onChange={this.handleFilter.bind(this)}
|
||||||
|
handleClear={this.handleClear.bind(this)}
|
||||||
|
placeholder={searchPlaceholder}
|
||||||
|
value={filter} />
|
||||||
</div> : null }
|
</div> : null }
|
||||||
<Animate component="ul"
|
<Animate component="ul"
|
||||||
transitionName={this.state.mounted ? `${prefixCls}-highlight` : ''}
|
transitionName={this.state.mounted ? `${prefixCls}-highlight` : ''}
|
||||||
transitionLeave={false}>
|
transitionLeave={false}>
|
||||||
{showItems.length > 0 ? showItems : <div className={`${prefixCls}-body-not-found`}>Not Found</div>}
|
{showItems.length > 0 ? showItems : <div className={`${prefixCls}-body-not-found`}>{notFoundContent}</div>}
|
||||||
</Animate>
|
</Animate>
|
||||||
</div>}
|
</div>}
|
||||||
{ footerDom ? <div className={`${prefixCls}-footer`}>
|
{ footerDom ? <div className={`${prefixCls}-footer`}>
|
||||||
|
@ -31,7 +31,7 @@ class Search extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Search.defaultProps = {
|
Search.defaultProps = {
|
||||||
placeholder: '请输入搜索内容',
|
placeholder: '',
|
||||||
onChange: noop,
|
onChange: noop,
|
||||||
handleClear: noop,
|
handleClear: noop,
|
||||||
};
|
};
|
||||||
|
@ -55,7 +55,6 @@ const Demo = React.createClass({
|
|||||||
multiple: true,
|
multiple: true,
|
||||||
treeCheckable: true,
|
treeCheckable: true,
|
||||||
searchPlaceholder: '请选择',
|
searchPlaceholder: '请选择',
|
||||||
treeDefaultExpandAll: true,
|
|
||||||
style: {
|
style: {
|
||||||
width: 300,
|
width: 300,
|
||||||
},
|
},
|
||||||
|
@ -84,4 +84,4 @@ import 'antd/lib/index.css'; // or 'antd/style/index.less'
|
|||||||
|
|
||||||
## 如何贡献
|
## 如何贡献
|
||||||
|
|
||||||
在任何形式的参与前,请先阅读 [贡献者文档](https://github.com/ant-design/ant-design/blob/master/CONTRIBUTING.md)。有任何建议或意见您可以 [Pull Request](https://github.com/ant-design/ant-design/pulls),给我们 [报告 Bug](http://dwz.cn/2AF9ao) 或 [提问](https://github.com/ant-design/ant-design/issues)。
|
在任何形式的参与前,请先阅读 [贡献者文档](https://github.com/ant-design/ant-design/blob/master/.github/CONTRIBUTING.md)。有任何建议或意见您可以 [Pull Request](https://github.com/ant-design/ant-design/pulls),给我们 [报告 Bug](http://dwz.cn/2AF9ao) 或 [提问](https://github.com/ant-design/ant-design/issues)。
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "antd",
|
"name": "antd",
|
||||||
"version": "0.12.7",
|
"version": "0.12.8",
|
||||||
"title": "Ant Design",
|
"title": "Ant Design",
|
||||||
"description": "一个 UI 设计语言",
|
"description": "一个 UI 设计语言",
|
||||||
"homepage": "http://ant.design/",
|
"homepage": "http://ant.design/",
|
||||||
@ -47,7 +47,7 @@
|
|||||||
"rc-dropdown": "~1.4.3",
|
"rc-dropdown": "~1.4.3",
|
||||||
"rc-form": "~0.14.0",
|
"rc-form": "~0.14.0",
|
||||||
"rc-form-validation": "~2.5.0",
|
"rc-form-validation": "~2.5.0",
|
||||||
"rc-input-number": "~2.4.1",
|
"rc-input-number": "~2.5.0",
|
||||||
"rc-menu": "~4.10.2",
|
"rc-menu": "~4.10.2",
|
||||||
"rc-notification": "~1.3.1",
|
"rc-notification": "~1.3.1",
|
||||||
"rc-pagination": "~1.5.1",
|
"rc-pagination": "~1.5.1",
|
||||||
@ -63,7 +63,7 @@
|
|||||||
"rc-time-picker": "~1.1.0",
|
"rc-time-picker": "~1.1.0",
|
||||||
"rc-tooltip": "~3.3.1",
|
"rc-tooltip": "~3.3.1",
|
||||||
"rc-tree": "~1.1.0",
|
"rc-tree": "~1.1.0",
|
||||||
"rc-tree-select": "~1.1.1",
|
"rc-tree-select": "~1.2.2",
|
||||||
"rc-trigger": "~1.2.0",
|
"rc-trigger": "~1.2.0",
|
||||||
"rc-upload": "~1.8.0",
|
"rc-upload": "~1.8.0",
|
||||||
"rc-util": "~3.1.2",
|
"rc-util": "~3.1.2",
|
||||||
|
@ -378,7 +378,11 @@ InstantClickChangeFns.push(function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$('.nav-phone-icon').click(function() {
|
$('.nav-phone-icon').click(function() {
|
||||||
$(this).prev().toggle();
|
var navMenu = $(this).prev();
|
||||||
|
navMenu.removeClass('nav-hide').addClass('nav-show').focus();
|
||||||
|
navMenu.one('blur', function() {
|
||||||
|
navMenu.removeClass('nav-show').addClass('nav-hide');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$.easing['jswing'] = $.easing['swing'];
|
$.easing['jswing'] = $.easing['swing'];
|
||||||
|
@ -74,7 +74,10 @@ module.exports = function() {
|
|||||||
<h2 key="h2">ANT <p>DESIGN</p></h2>
|
<h2 key="h2">ANT <p>DESIGN</p></h2>
|
||||||
<p key="content">一个 UI 设计语言</p>
|
<p key="content">一个 UI 设计语言</p>
|
||||||
<span className="line" key="line"/>
|
<span className="line" key="line"/>
|
||||||
<a key="button" href="/docs/spec/introduce"><Icon type="smile-circle"/>开始探索</a>
|
<div className="start-button" key="button">
|
||||||
|
<a href="/docs/spec/introduce"><Icon type="smile-circle"/>开始探索</a>
|
||||||
|
</div>
|
||||||
|
<iframe key="github-btn" src="https://ghbtns.com/github-btn.html?user=ant-design&repo=ant-design&type=star&count=true" frameBorder="0" scrolling="0" width="98px" height="20px" />
|
||||||
</QueueAnim>
|
</QueueAnim>
|
||||||
<TweenOne className='down' vars={[{opacity: 1},{y: 10, duration: 800, yoyo: true, repeat: -1}]}>
|
<TweenOne className='down' vars={[{opacity: 1},{y: 10, duration: 800, yoyo: true, repeat: -1}]}>
|
||||||
<Icon type="down"/>
|
<Icon type="down"/>
|
||||||
|
@ -197,7 +197,7 @@ a.logo {
|
|||||||
color: #666;
|
color: #666;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: block;
|
display: inline-block;
|
||||||
padding: 0 22px;
|
padding: 0 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1448,13 +1448,17 @@ a.entry-link:hover .anticon-smile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 320px) and (max-width: 767px) {
|
@media only screen and (min-width: 320px) and (max-width: 767px) {
|
||||||
.nav, .search {
|
#list,
|
||||||
|
.search {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo {
|
a.logo {
|
||||||
margin: 10px;
|
width: 144px;
|
||||||
height: auto;
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
float: none;
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.banner-entry {
|
.banner-entry {
|
||||||
@ -1465,17 +1469,28 @@ a.entry-link:hover .anticon-smile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav {
|
||||||
position: absolute;
|
position: fixed;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
top: 50px;
|
top: 0;
|
||||||
right: 0;
|
left: 0;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
overflow: hidden;
|
line-height: 60px;
|
||||||
height: auto;
|
|
||||||
line-height: 50px;
|
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
border: 1px solid #e9e9e9;
|
|
||||||
width: 50%;
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
box-shadow: 10px 0 12px rgba(0,0,0,0.1);
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(-100%);
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav.nav-show {
|
||||||
|
animation: moveLeft .2s ease-in forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav.nav-hide {
|
||||||
|
animation: moveLeftOut .2s ease-in forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav .bar {
|
.nav .bar {
|
||||||
@ -1492,26 +1507,23 @@ a.entry-link:hover .anticon-smile {
|
|||||||
|
|
||||||
.nav-phone-icon {
|
.nav-phone-icon {
|
||||||
display: block;
|
display: block;
|
||||||
width: 49px;
|
width: 18px;
|
||||||
height: 49px;
|
height: 50px;
|
||||||
float: right;
|
position: absolute;
|
||||||
|
left: 30px;
|
||||||
|
top: 32px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background: #BEC4C8;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-phone-icon:before,
|
.nav-phone-icon:before {
|
||||||
.nav-phone-icon:after {
|
|
||||||
content: "";
|
content: "";
|
||||||
display: block;
|
display: block;
|
||||||
border-radius: 1px;
|
border-radius: 1px;
|
||||||
width: 15px;
|
width: 18px;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
background: #EBEDEE;
|
background: #666;
|
||||||
margin: 20px 0 0 18px;
|
box-shadow: 0 7px 0 0 #666, 0 14px 0 0 #666;
|
||||||
}
|
position: absolute;
|
||||||
|
|
||||||
.nav-phone-icon:after {
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
@ -1521,6 +1533,9 @@ a.entry-link:hover .anticon-smile {
|
|||||||
.aside-container {
|
.aside-container {
|
||||||
float: none;
|
float: none;
|
||||||
width: auto;
|
width: auto;
|
||||||
|
padding-bottom: 30px;
|
||||||
|
border-bottom: 1px solid #e9e9e9;
|
||||||
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-container {
|
.main-container {
|
||||||
@ -1533,6 +1548,7 @@ a.entry-link:hover .anticon-smile {
|
|||||||
|
|
||||||
.main-wrapper {
|
.main-wrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-container {
|
.main-container {
|
||||||
@ -1553,3 +1569,25 @@ a.entry-link:hover .anticon-smile {
|
|||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes moveLeft {
|
||||||
|
0% {
|
||||||
|
transform: translateX(-100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateX(0px);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes moveLeftOut {
|
||||||
|
0% {
|
||||||
|
transform: translateX(0px);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateX(-100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -39,6 +39,17 @@
|
|||||||
color: #eee;
|
color: #eee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 320px) and (max-width: 767px) {
|
||||||
|
header .nav ul li a {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-phone-icon:before {
|
||||||
|
background: #eee;
|
||||||
|
box-shadow: 0 7px 0 0 #eee, 0 14px 0 0 #eee;
|
||||||
|
}
|
||||||
|
|
||||||
.nav ul li a {
|
.nav ul li a {
|
||||||
transition: color 0.5s cubic-bezier(0.455, 0.03, 0.515, 0.955);
|
transition: color 0.5s cubic-bezier(0.455, 0.03, 0.515, 0.955);
|
||||||
}
|
}
|
||||||
@ -62,7 +73,7 @@
|
|||||||
.banner-text-wrapper {
|
.banner-text-wrapper {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 10%;
|
left: 10%;
|
||||||
top: 58%;
|
top: 55%;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
@ -105,26 +116,40 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.banner-text-wrapper > p {
|
.banner-text-wrapper > p {
|
||||||
margin: 10px auto 30px;
|
margin: 10px auto 24px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.banner-text-wrapper a {
|
.banner-text-wrapper .start-button {
|
||||||
float: right;
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-text-wrapper .start-button a {
|
||||||
width: 155px;
|
width: 155px;
|
||||||
height: 45px;
|
height: 45px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
border: 1px solid #00AAEE;
|
border: 1px solid #2db7f5;
|
||||||
color: #00AAEE;
|
color: #2db7f5;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
transition: box-shadow .45s ease-out;
|
transition: box-shadow .45s ease-out;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 42px;
|
line-height: 42px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-text-wrapper iframe {
|
||||||
|
border: 0;
|
||||||
|
opacity: 0.8;
|
||||||
|
transition: opacity 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-text-wrapper iframe:hover {
|
||||||
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.banner-text-wrapper a:hover {
|
.banner-text-wrapper a:hover {
|
||||||
box-shadow: 0 0 10px #00AAEE;
|
box-shadow: 0 0 10px #2db7f5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.banner-text-wrapper a span {
|
.banner-text-wrapper a span {
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
<div class="search">
|
<div class="search">
|
||||||
<div id="autoComplete"></div>
|
<div id="autoComplete"></div>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav">
|
<nav class="nav" tabindex="-1">
|
||||||
<span class="bar"></span>
|
<span class="bar"></span>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="{%- if post.meta.filepath === 'README.md' %}current{%- endif %}">
|
<li class="{%- if post.meta.filepath === 'README.md' %}current{%- endif %}">
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
&-separator {
|
&-separator {
|
||||||
margin: 0 8px;
|
margin: 0 8px;
|
||||||
color: #d9d9d9;
|
color: @border-color-base;
|
||||||
}
|
}
|
||||||
|
|
||||||
.anticon + span {
|
.anticon + span {
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
border-color: #d9d9d9;
|
border-color: @border-color-base;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
transition: border-color 0.1s @ease-in-out-back, background-color 0.1s @ease-in-out-back;
|
transition: border-color 0.1s @ease-in-out-back, background-color 0.1s @ease-in-out-back;
|
||||||
}
|
}
|
||||||
@ -122,13 +122,13 @@
|
|||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
.@{checkbox-inner-prefix-cls} {
|
.@{checkbox-inner-prefix-cls} {
|
||||||
border-color: #d9d9d9;
|
border-color: @border-color-base;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.@{checkbox-inner-prefix-cls} {
|
.@{checkbox-inner-prefix-cls} {
|
||||||
background-color: #f3f3f3;
|
background-color: #f3f3f3;
|
||||||
border-color: #d9d9d9;
|
border-color: @border-color-base;
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
animation-name: none;
|
animation-name: none;
|
||||||
@ -139,12 +139,12 @@
|
|||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
.@{checkbox-inner-prefix-cls} {
|
.@{checkbox-inner-prefix-cls} {
|
||||||
border-color: #d9d9d9;
|
border-color: @border-color-base;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.@{checkbox-inner-prefix-cls} {
|
.@{checkbox-inner-prefix-cls} {
|
||||||
border-color: #d9d9d9;
|
border-color: @border-color-base;
|
||||||
background-color: #f3f3f3;
|
background-color: #f3f3f3;
|
||||||
&:after {
|
&:after {
|
||||||
animation-name: none;
|
animation-name: none;
|
||||||
|
@ -25,8 +25,27 @@
|
|||||||
border-collapse: separate;
|
border-collapse: separate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.@{calendar-prefix-cls}-month-panel-selected-cell .@{calendar-prefix-cls}-month-panel-month {
|
||||||
|
background: @primary-color;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: @primary-color;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.@{calendar-prefix-cls}-month-panel-cell {
|
.@{calendar-prefix-cls}-month-panel-cell {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
|
&-disabled .@{calendar-prefix-cls}-month-panel-month {
|
||||||
|
&,
|
||||||
|
&:hover {
|
||||||
|
cursor: not-allowed;
|
||||||
|
color: #bcbcbc;
|
||||||
|
background: #f3f3f3;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.@{calendar-prefix-cls}-month-panel-month {
|
.@{calendar-prefix-cls}-month-panel-month {
|
||||||
@ -46,13 +65,3 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.@{calendar-prefix-cls}-month-panel-selected-cell .@{calendar-prefix-cls}-month-panel-month {
|
|
||||||
background: @primary-color;
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: @primary-color;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -176,7 +176,7 @@ form {
|
|||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: #d9d9d9;
|
border-color: @border-color-base;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ form {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.@{select-prefix-cls}-open .@{select-prefix-cls}-selection {
|
.@{select-prefix-cls}-open .@{select-prefix-cls}-selection {
|
||||||
border-color: #d9d9d9;
|
border-color: @border-color-base;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
border: 1px solid @border-color-base;
|
border: 1px solid @border-color-base;
|
||||||
border-radius: @border-radius-base;
|
border-radius: @border-radius-base;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: 90px;
|
width: 80px;
|
||||||
|
|
||||||
&-handler {
|
&-handler {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -130,8 +130,6 @@
|
|||||||
}
|
}
|
||||||
.@{input-number-prefix-cls}-input-wrap {
|
.@{input-number-prefix-cls}-input-wrap {
|
||||||
height: 22px;
|
height: 22px;
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
|
||||||
}
|
}
|
||||||
.@{input-number-prefix-cls}-handler {
|
.@{input-number-prefix-cls}-handler {
|
||||||
height: 11px;
|
height: 11px;
|
||||||
@ -140,8 +138,8 @@
|
|||||||
input {
|
input {
|
||||||
height: 22px;
|
height: 22px;
|
||||||
line-height: 22px;
|
line-height: 22px;
|
||||||
position: absolute;
|
margin-top: -1px;
|
||||||
top: 0;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
.@{input-number-prefix-cls}-handler-up-inner {
|
.@{input-number-prefix-cls}-handler-up-inner {
|
||||||
top: -1px;
|
top: -1px;
|
||||||
|
@ -64,9 +64,9 @@
|
|||||||
|
|
||||||
&-inline,
|
&-inline,
|
||||||
&-vertical {
|
&-vertical {
|
||||||
border-right: 1px solid #e9e9e9;
|
border-right: 1px solid @border-color-split;
|
||||||
.@{menu-prefix-cls}-item {
|
.@{menu-prefix-cls}-item {
|
||||||
border-right: 1px solid #e9e9e9;
|
border-right: 1px solid @border-color-split;
|
||||||
margin-left: -1px;
|
margin-left: -1px;
|
||||||
left: 1px;
|
left: 1px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -176,7 +176,7 @@
|
|||||||
|
|
||||||
&-horizontal {
|
&-horizontal {
|
||||||
border: 0;
|
border: 0;
|
||||||
border-bottom: 1px solid #e9e9e9;
|
border-bottom: 1px solid @border-color-split;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
//** Popover maximum width
|
//** Popover maximum width
|
||||||
@popover-min-width: 177px;
|
@popover-min-width: 177px;
|
||||||
//** Popover border color
|
//** Popover border color
|
||||||
@popover-border-color: #d9d9d9;
|
@popover-border-color: @border-color-base;
|
||||||
|
|
||||||
//** Popover arrow width
|
//** Popover arrow width
|
||||||
@popover-arrow-width: 4px;
|
@popover-arrow-width: 4px;
|
||||||
@ -89,7 +89,7 @@
|
|||||||
padding: 0 16px;
|
padding: 0 16px;
|
||||||
line-height: 32px;
|
line-height: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
border-bottom: 1px solid #e9e9e9;
|
border-bottom: 1px solid @border-color-split;
|
||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
&-line-inner {
|
&-line-inner {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #e9e9e9;
|
background-color: #f3f3f3;
|
||||||
border-radius: 100px;
|
border-radius: 100px;
|
||||||
}
|
}
|
||||||
&-line-bg {
|
&-line-bg {
|
||||||
|
@ -98,7 +98,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.@{radio-prefix-cls} + span {
|
span.@{radio-prefix-cls} + * {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,6 +116,10 @@
|
|||||||
border: 1px solid @border-color-base;
|
border: 1px solid @border-color-base;
|
||||||
border-left: 0;
|
border-left: 0;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
> span.@{radio-prefix-cls}-button {
|
> span.@{radio-prefix-cls}-button {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
display: none;
|
display: none;
|
||||||
@ -138,23 +142,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:before {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 100%;
|
|
||||||
left: -1px;
|
|
||||||
background: #d9d9d9;
|
|
||||||
content: '';
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border-radius: @border-radius-base 0 0 @border-radius-base;
|
border-radius: @border-radius-base 0 0 @border-radius-base;
|
||||||
border-left: 1px solid @border-color-base;
|
border-left: 1px solid @border-color-base;
|
||||||
&:before {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
@ -183,10 +173,6 @@
|
|||||||
color: @primary-color;
|
color: @primary-color;
|
||||||
box-shadow: -1px 0 0 0 @primary-color;
|
box-shadow: -1px 0 0 0 @primary-color;
|
||||||
|
|
||||||
&:before {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border-color: @primary-color;
|
border-color: @primary-color;
|
||||||
box-shadow: none!important;
|
box-shadow: none!important;
|
||||||
@ -216,9 +202,6 @@
|
|||||||
border-color: @border-color-base;
|
border-color: @border-color-base;
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
color: #ccc;
|
color: #ccc;
|
||||||
&:before {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border-left-color: @border-color-base;
|
border-left-color: @border-color-base;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
@process-icon-color: @primary-color;
|
@process-icon-color: @primary-color;
|
||||||
@process-title-color: #666;
|
@process-title-color: #666;
|
||||||
@process-description-color: @process-title-color;
|
@process-description-color: @process-title-color;
|
||||||
@process-tail-color: #e9e9e9;
|
@process-tail-color: @border-color-split;
|
||||||
@wait-icon-color: #ccc;
|
@wait-icon-color: #ccc;
|
||||||
@wait-title-color: #999;
|
@wait-title-color: #999;
|
||||||
@wait-description-color: @wait-title-color;
|
@wait-description-color: @wait-title-color;
|
||||||
@ -180,7 +180,7 @@
|
|||||||
content: '';
|
content: '';
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 0;
|
width: 0;
|
||||||
background: #e9e9e9;
|
background: @border-color-split;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,19 @@
|
|||||||
background: none;
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tfoot tr {
|
||||||
|
background: @table-head-background-color;
|
||||||
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
|
&:hover {
|
||||||
|
background: @table-head-background-color;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
border-radius: 0 0 @border-radius-base @border-radius-base;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tr.@{table-prefix-cls}-row-selected {
|
tr.@{table-prefix-cls}-row-selected {
|
||||||
background: #fafafa;
|
background: #fafafa;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: @line-height-base;
|
line-height: @line-height-base;
|
||||||
height: 36px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
position: relative;
|
position: relative;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@ -377,6 +376,9 @@
|
|||||||
|
|
||||||
|
|
||||||
// card style
|
// card style
|
||||||
|
&&-card &-nav-container {
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
&&-card &-ink-bar {
|
&&-card &-ink-bar {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
@timeline-prefix-cls: ~"@{css-prefix}timeline";
|
@timeline-prefix-cls: ~"@{css-prefix}timeline";
|
||||||
|
|
||||||
@timeline-color: #e9e9e9;
|
@timeline-color: @border-color-split;
|
||||||
|
|
||||||
.@{timeline-prefix-cls} {
|
.@{timeline-prefix-cls} {
|
||||||
&-item {
|
&-item {
|
||||||
|
@ -66,9 +66,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&-not-found {
|
&-not-found {
|
||||||
margin-top: 24px;
|
padding-top: 24px;
|
||||||
color: #ccc;
|
color: #ccc;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
.anticon-plus {
|
.anticon-plus {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
color: #d9d9d9;
|
color: #ccc;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
.@{iconfont-css-prefix}-caret-circle-o-up:before {content:"\e60c";}
|
.@{iconfont-css-prefix}-caret-circle-o-up:before {content:"\e60c";}
|
||||||
.@{iconfont-css-prefix}-android:before {content:"\e64f";}
|
.@{iconfont-css-prefix}-android:before {content:"\e64f";}
|
||||||
.@{iconfont-css-prefix}-chrome:before {content:"\e65c";}
|
.@{iconfont-css-prefix}-chrome:before {content:"\e65c";}
|
||||||
|
.@{iconfont-css-prefix}-appstore-o:before {content:"\e6b2";}
|
||||||
.@{iconfont-css-prefix}-appstore:before {content:"\e64d";}
|
.@{iconfont-css-prefix}-appstore:before {content:"\e64d";}
|
||||||
.@{iconfont-css-prefix}-apple:before {content:"\e64e";}
|
.@{iconfont-css-prefix}-apple:before {content:"\e64e";}
|
||||||
.@{iconfont-css-prefix}-github:before {content:"\e674";}
|
.@{iconfont-css-prefix}-github:before {content:"\e674";}
|
||||||
@ -185,6 +186,9 @@
|
|||||||
.@{iconfont-css-prefix}-pay-circle-o:before {content:"\e6a9";}
|
.@{iconfont-css-prefix}-pay-circle-o:before {content:"\e6a9";}
|
||||||
.@{iconfont-css-prefix}-message:before {content:"\e6a4";}
|
.@{iconfont-css-prefix}-message:before {content:"\e6a4";}
|
||||||
.@{iconfont-css-prefix}-file-unknown:before {content:"\e6a6";}
|
.@{iconfont-css-prefix}-file-unknown:before {content:"\e6a6";}
|
||||||
|
.@{iconfont-css-prefix}-heart:before {content:"\e68c";}
|
||||||
|
.@{iconfont-css-prefix}-heart-o:before {content:"\e6b0";}
|
||||||
|
.@{iconfont-css-prefix}-calculator:before {content:"\e6b1";}
|
||||||
.@{iconfont-css-prefix}-loading:before {
|
.@{iconfont-css-prefix}-loading:before {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
.animation(loadingCircle 1s infinite linear);
|
.animation(loadingCircle 1s infinite linear);
|
||||||
|
@ -153,11 +153,11 @@
|
|||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
.button-color(tint(@primary-color, 20%); white; tint(@primary-color, 20%));
|
.button-color(tint(@primary-color, 20%); @btn-ghost-bg; tint(@primary-color, 20%));
|
||||||
}
|
}
|
||||||
&:active,
|
&:active,
|
||||||
&.active {
|
&.active {
|
||||||
.button-color(shade(@primary-color, 5%); white; shade(@primary-color, 5%));
|
.button-color(shade(@primary-color, 5%); @btn-ghost-bg; shade(@primary-color, 5%));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,11 +168,11 @@
|
|||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
.button-color(tint(@primary-color, 20%); white; tint(@primary-color, 20%));
|
.button-color(tint(@primary-color, 20%); @btn-ghost-bg; tint(@primary-color, 20%));
|
||||||
}
|
}
|
||||||
&:active,
|
&:active,
|
||||||
&.active {
|
&.active {
|
||||||
.button-color(shade(@primary-color, 5%); white; shade(@primary-color, 5%));
|
.button-color(shade(@primary-color, 5%); @btn-ghost-bg; shade(@primary-color, 5%));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
// ICONFONT
|
// ICONFONT
|
||||||
@iconfont-css-prefix : anticon;
|
@iconfont-css-prefix : anticon;
|
||||||
@icon-url : "//at.alicdn.com/t/font_1452596235_7047422";
|
@icon-url : "//at.alicdn.com/t/font_1457169990_5499172";
|
||||||
|
|
||||||
// LINK
|
// LINK
|
||||||
@link-color : #2db7f5;
|
@link-color : #2db7f5;
|
||||||
@ -63,7 +63,7 @@
|
|||||||
@btn-default-border : @border-color-base;
|
@btn-default-border : @border-color-base;
|
||||||
|
|
||||||
@btn-ghost-color : @text-color;
|
@btn-ghost-color : @text-color;
|
||||||
@btn-ghost-bg : #fff;
|
@btn-ghost-bg : transparent;
|
||||||
@btn-ghost-border : @border-color-base;
|
@btn-ghost-border : @border-color-base;
|
||||||
|
|
||||||
@btn-disable-color : #ccc;
|
@btn-disable-color : #ccc;
|
||||||
|
Loading…
Reference in New Issue
Block a user