Skip to content

Commit

Permalink
Merge pull request #749 from youluna/feat-select-compact
Browse files Browse the repository at this point in the history
feat(Select): add API compact to make it won't wrap
  • Loading branch information
youluna authored May 31, 2019
2 parents 237de55 + d21f8a1 commit a8c373a
Show file tree
Hide file tree
Showing 11 changed files with 209 additions and 91 deletions.
28 changes: 20 additions & 8 deletions docs/select/demo/multiple.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ multiple select
---

````jsx
import { Select } from '@alifd/next';
import { Select, Balloon } from '@alifd/next';

const { Tooltip } = Balloon;

const dataSource = [
{value: '10001', label: 'Lucy King'},
Expand Down Expand Up @@ -51,16 +53,26 @@ class Demo extends React.Component{
}
}

const maxTagPlaceholder = (selectedValues, totalValues) => {
const trigger = <span>{`已选择 ${selectedValues.length}/${totalValues.length}`}</span>;
const labels = selectedValues.map(obj => obj.label);

return <Tooltip trigger={trigger}>{ labels.join(', ') }</Tooltip>
}

ReactDOM.render(
<div>
<Select maxTagCount={2} maxTagPlaceholder={(cu, total) => `+${cu}`} mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} />
&nbsp;&nbsp;&nbsp;&nbsp;
<Select maxTagCount={2} mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} />
&nbsp;&nbsp;&nbsp;&nbsp;
<Select hasSelectAll mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} />
&nbsp;&nbsp;&nbsp;&nbsp;
<Demo />
<Select mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
受控写法 <Demo /><br /><br />
设置最大显示Tag数 (maxTagCount) <br />
<Select maxTagCount={2} mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} /> <br /><br />
设置最大显示Tag数,并自定义超出显示内容 (maxTagCount + maxTagPlaceholder) <br />
<Select maxTagCount={2} maxTagPlaceholder={maxTagPlaceholder} mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} /><br /><br />
设置一行展示 (tagInline) <br />
<Select maxTagCount={2} tagInline mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} /><br /><br />
设置一行展示,并自定义超出显示内容 (tagInline + maxTagPlaceholder) <br />
<Select maxTagCount={2} tagInline maxTagPlaceholder={maxTagPlaceholder} mode="multiple" onChange={handleChange} dataSource={dataSource} style={{width: 200}} /><br /><br />
</div>
, mountNode);
````
2 changes: 1 addition & 1 deletion docs/select/index.en-us.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ This is because the layer's animation of the overlay is implemented by `classNam
|cacheValue | dataSource keeps the selected content | Boolean | true |
|valueRender | Methods for rendering Select to display content <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>** Parameters**:<br>_item_: {Object} Render node's item<br>**return value **:<br>{ReactNode} show content <br> | Function | item => item.label \|\| item.value |
| searchValue | Controlled search value, generally not set | String | - |
| maxTagTextLength | max length of each tag | Number | - |
| tagInline | show in one line or not | Boolean | false |
| maxTagCount | max count of tag can be show | Number | - |
| maxTagPlaceholder | if selected tags' length is over maxTagCount, what to show <br><br>**签名**:<br>Function() => void | Function | (selected, total) => `${selected} / ${total}` |
| onRemove | tag Delete callback <br><br><br>**Signature**:<br>Function(item: object) => void<br>**Parameters**:<br>_item_: {object} Render node's Item | Function | func.noop |
Expand Down
94 changes: 47 additions & 47 deletions docs/select/index.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src/locale/en-us.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ export default {
selectPlaceholder: 'Please Select',
autoCompletePlaceholder: 'Please Input',
notFoundContent: 'No Options',
maxTagPlaceholder: 'Selected {selected}/{total} Total',
},
Table: {
empty: 'No Data',
Expand Down
1 change: 1 addition & 0 deletions src/locale/ja-jp.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ export default {
selectPlaceholder: '選択',
autoCompletePlaceholder: '入力',
notFoundContent: '選択肢なし',
maxTagPlaceholder: '選択済み {selected}/{total}',
},
Table: {
empty: 'データなし',
Expand Down
1 change: 1 addition & 0 deletions src/locale/zh-cn.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ export default {
selectPlaceholder: '请选择',
autoCompletePlaceholder: '请输入',
notFoundContent: '无选项',
maxTagPlaceholder: '已选择 {selected}/{total} 项',
},
Table: {
empty: '没有数据',
Expand Down
1 change: 1 addition & 0 deletions src/locale/zh-tw.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ export default {
selectPlaceholder: '請選擇',
autoCompletePlaceholder: '請輸入',
notFoundContent: '無選項',
maxTagPlaceholder: '已選擇 {selected}/{total} 項',
},
Table: {
empty: '沒有數據',
Expand Down
40 changes: 37 additions & 3 deletions src/select/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,29 @@
}
}

&-multiple {
.#{$css-prefix}input {
height: auto;
align-items: start;
}
#{$select-prefix}-compact {
position: relative;
white-space: nowrap;
#{$select-prefix}-trigger-search {
width: auto;
}
#{$select-prefix}-tag-compact {
position: absolute;
top: 0;
right: 0;
z-index: 1;
padding: 0 4px 0 16px;
color: $color-text1-3;
background: linear-gradient(90deg, rgba(255, 255, 255, 0), #FFF 10px);
}
}
}

&-multiple, &-tag {
#{$select-prefix}-values {
/* Tag 有 3px 的 margin-bottom,所以包裹 Tag 的容器要作一下处理 */
Expand All @@ -195,6 +218,9 @@
#{$select-prefix}-values {
@include select-size($form-element-small-height, $select-s-lineheight);
}
#{$select-prefix}-values-compact {
height: $form-element-small-height !important;
}
#{$tag-prefix} {
border: 0;
@include select-tag-size($select-s-lineheight, -1);
Expand All @@ -203,7 +229,7 @@
line-height: $select-s-lineheight;
}
}
.#{$css-prefix}input-label, .#{$css-prefix}input-control {
.#{$css-prefix}input-label, .#{$css-prefix}input-control, #{$select-prefix}-tag-compact {
line-height: $form-element-small-height - 2;
}
}
Expand All @@ -212,10 +238,13 @@
#{$select-prefix}-values {
@include select-size($form-element-medium-height, $select-m-lineheight);
}
#{$select-prefix}-values-compact {
height: $form-element-medium-height !important;
}
#{$tag-prefix} {
@include select-tag-size($select-m-lineheight);
}
.#{$css-prefix}input-label, .#{$css-prefix}input-control {
.#{$css-prefix}input-label, .#{$css-prefix}input-control, #{$select-prefix}-tag-compact {
line-height: $form-element-medium-height - 2;
}
}
Expand All @@ -224,10 +253,13 @@
#{$select-prefix}-values {
@include select-size($form-element-large-height, $select-l-lineheight);
}
#{$select-prefix}-values-compact {
height: $form-element-large-height !important;
}
#{$tag-prefix} {
@include select-tag-size($select-l-lineheight);
}
.#{$css-prefix}input-label, .#{$css-prefix}input-control {
.#{$css-prefix}input-label, .#{$css-prefix}input-control, #{$select-prefix}-tag-compact {
line-height: $form-element-large-height - 2;
}
}
Expand Down Expand Up @@ -421,3 +453,5 @@
}
}
}

@import "./rtl.scss";
10 changes: 10 additions & 0 deletions src/select/rtl.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#{$select-prefix}#{$select-prefix}-multiple[dir='rtl'] {
#{$select-prefix}-compact {
#{$select-prefix}-tag-compact {
left: 0;
right: auto;
padding: 0 16px 0 4px;
background: linear-gradient(270deg, rgba(255, 255, 255, 0), #FFF 10px);
}
}
}
Loading

0 comments on commit a8c373a

Please sign in to comment.