Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 9327c60

Browse files
author
cbrwizard
committed
Add an option to disable Select All
1 parent 3c183e8 commit 9327c60

File tree

8 files changed

+79
-49
lines changed

8 files changed

+79
-49
lines changed

dist/bundled.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,8 @@ var SelectPanel = function (_Component) {
814814
ItemRenderer = _props3.ItemRenderer,
815815
selectAllLabel = _props3.selectAllLabel,
816816
disabled = _props3.disabled,
817-
disableSearch = _props3.disableSearch;
817+
disableSearch = _props3.disableSearch,
818+
hasSelectAll = _props3.hasSelectAll;
818819

819820

820821
var selectAllOption = {
@@ -848,7 +849,7 @@ var SelectPanel = function (_Component) {
848849
}
849850
})
850851
),
851-
_react2.default.createElement(_selectItem2.default, {
852+
hasSelectAll && _react2.default.createElement(_selectItem2.default, {
852853
focused: focusIndex === 0,
853854
checked: this.allAreSelected(),
854855
option: selectAllOption,
@@ -1052,7 +1053,8 @@ var MultiSelect = function (_Component) {
10521053
disabled = _props3.disabled,
10531054
disableSearch = _props3.disableSearch,
10541055
filterOptions = _props3.filterOptions,
1055-
shouldToggleOnHover = _props3.shouldToggleOnHover;
1056+
shouldToggleOnHover = _props3.shouldToggleOnHover,
1057+
hasSelectAll = _props3.hasSelectAll;
10561058

10571059

10581060
return _react2.default.createElement(
@@ -1068,6 +1070,7 @@ var MultiSelect = function (_Component) {
10681070
ItemRenderer: ItemRenderer,
10691071
options: options,
10701072
selected: selected,
1073+
hasSelectAll: hasSelectAll,
10711074
selectAllLabel: selectAllLabel,
10721075
onSelectedChanged: this.handleSelectedChanged,
10731076
disabled: disabled,
@@ -1085,6 +1088,12 @@ var MultiSelect = function (_Component) {
10851088
return MultiSelect;
10861089
}(_react.Component);
10871090

1091+
MultiSelect.defaultProps = {
1092+
hasSelectAll: true,
1093+
shouldToggleOnHover: false
1094+
};
1095+
1096+
10881097
var styles = {
10891098
noneSelected: {
10901099
color: "#aaa"

dist/bundled.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ var MultiSelect = function (_Component) {
139139
disabled = _props3.disabled,
140140
disableSearch = _props3.disableSearch,
141141
filterOptions = _props3.filterOptions,
142-
shouldToggleOnHover = _props3.shouldToggleOnHover;
142+
shouldToggleOnHover = _props3.shouldToggleOnHover,
143+
hasSelectAll = _props3.hasSelectAll;
143144

144145

145146
return _react2.default.createElement(
@@ -155,6 +156,7 @@ var MultiSelect = function (_Component) {
155156
ItemRenderer: ItemRenderer,
156157
options: options,
157158
selected: selected,
159+
hasSelectAll: hasSelectAll,
158160
selectAllLabel: selectAllLabel,
159161
onSelectedChanged: this.handleSelectedChanged,
160162
disabled: disabled,
@@ -172,6 +174,12 @@ var MultiSelect = function (_Component) {
172174
return MultiSelect;
173175
}(_react.Component);
174176

177+
MultiSelect.defaultProps = {
178+
hasSelectAll: true,
179+
shouldToggleOnHover: false
180+
};
181+
182+
175183
var styles = {
176184
noneSelected: {
177185
color: "#aaa"

dist/select-panel.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ var SelectPanel = function (_Component) {
161161
ItemRenderer = _props3.ItemRenderer,
162162
selectAllLabel = _props3.selectAllLabel,
163163
disabled = _props3.disabled,
164-
disableSearch = _props3.disableSearch;
164+
disableSearch = _props3.disableSearch,
165+
hasSelectAll = _props3.hasSelectAll;
165166

166167

167168
var selectAllOption = {
@@ -195,7 +196,7 @@ var SelectPanel = function (_Component) {
195196
}
196197
})
197198
),
198-
_react2.default.createElement(_selectItem2.default, {
199+
hasSelectAll && _react2.default.createElement(_selectItem2.default, {
199200
focused: focusIndex === 0,
200201
checked: this.allAreSelected(),
201202
option: selectAllOption,

src/dropdown.js

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ type State = {
2323
};
2424

2525
class Dropdown extends Component<Props, State> {
26-
2726
state = {
2827
expanded: false,
2928
hasFocus: false,

src/index.js

+40-32
Original file line numberDiff line numberDiff line change
@@ -34,51 +34,57 @@ type Props = {
3434
isLoading?: boolean,
3535
disabled?: boolean,
3636
disableSearch?: boolean,
37-
shouldToggleOnHover?: boolean,
37+
shouldToggleOnHover: boolean,
38+
hasSelectAll: boolean,
3839
filterOptions?: (options: Array<Option>, filter: string) => Array<Option>
3940
};
4041

4142
class MultiSelect extends Component<Props> {
42-
getSelectedText() {
43-
const {options, selected} = this.props;
43+
static defaultProps = {
44+
hasSelectAll: true,
45+
shouldToggleOnHover: false,
46+
}
4447

45-
const selectedOptions = selected
46-
.map(s => options.find(o => o.value === s));
48+
getSelectedText() {
49+
const {options, selected} = this.props;
4750

48-
const selectedLabels = selectedOptions.map(s => s ? s.label : "");
51+
const selectedOptions = selected
52+
.map(s => options.find(o => o.value === s));
4953

50-
return selectedLabels.join(", ");
51-
}
54+
const selectedLabels = selectedOptions.map(s => s ? s.label : "");
5255

53-
renderHeader() {
54-
const {
55-
options,
56-
selected,
57-
valueRenderer,
58-
} = this.props;
56+
return selectedLabels.join(", ");
57+
}
5958

60-
const noneSelected = selected.length === 0;
61-
const allSelected = selected.length === options.length;
59+
renderHeader() {
60+
const {
61+
options,
62+
selected,
63+
valueRenderer,
64+
} = this.props;
6265

63-
const customText = valueRenderer && valueRenderer(selected, options);
66+
const noneSelected = selected.length === 0;
67+
const allSelected = selected.length === options.length;
6468

65-
if (noneSelected) {
66-
return <span style={styles.noneSelected}>
67-
{customText || "Select some items..."}
68-
</span>;
69-
}
69+
const customText = valueRenderer && valueRenderer(selected, options);
7070

71-
if (customText) {
72-
return <span>{customText}</span>;
73-
}
71+
if (noneSelected) {
72+
return <span style={styles.noneSelected}>
73+
{customText || "Select some items..."}
74+
</span>;
75+
}
7476

75-
return <span>
76-
{allSelected
77-
? "All items are selected"
78-
: this.getSelectedText()
79-
}
80-
</span>;
81-
}
77+
if (customText) {
78+
return <span>{customText}</span>;
79+
}
80+
81+
return <span>
82+
{allSelected
83+
? "All items are selected"
84+
: this.getSelectedText()
85+
}
86+
</span>;
87+
}
8288

8389
handleSelectedChanged = (selected: Array<any>) => {
8490
const {onSelectedChanged, disabled} = this.props;
@@ -103,6 +109,7 @@ class MultiSelect extends Component<Props> {
103109
disableSearch,
104110
filterOptions,
105111
shouldToggleOnHover,
112+
hasSelectAll,
106113
} = this.props;
107114

108115
return <div className="multi-select">
@@ -114,6 +121,7 @@ class MultiSelect extends Component<Props> {
114121
ItemRenderer,
115122
options,
116123
selected,
124+
hasSelectAll,
117125
selectAllLabel,
118126
onSelectedChanged: this.handleSelectedChanged,
119127
disabled,

src/select-panel.js

+13-9
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type Props = {
2020
onSelectedChanged: (selected: Array<any>) => void,
2121
disabled?: boolean,
2222
disableSearch?: boolean,
23+
hasSelectAll: boolean,
2324
filterOptions?: (options: Array<Option>, filter: string) => Array<Option>
2425
};
2526

@@ -135,6 +136,7 @@ class SelectPanel extends Component<Props, State> {
135136
selectAllLabel,
136137
disabled,
137138
disableSearch,
139+
hasSelectAll,
138140
} = this.props;
139141

140142
const selectAllOption = {
@@ -163,15 +165,17 @@ class SelectPanel extends Component<Props, State> {
163165
/>
164166
</div>}
165167

166-
<SelectItem
167-
focused={focusIndex === 0}
168-
checked={this.allAreSelected()}
169-
option={selectAllOption}
170-
onSelectionChanged={this.selectAllChanged}
171-
onClick={() => this.handleItemClicked(0)}
172-
ItemRenderer={ItemRenderer}
173-
disabled={disabled}
174-
/>
168+
{hasSelectAll &&
169+
<SelectItem
170+
focused={focusIndex === 0}
171+
checked={this.allAreSelected()}
172+
option={selectAllOption}
173+
onSelectionChanged={this.selectAllChanged}
174+
onClick={() => this.handleItemClicked(0)}
175+
ItemRenderer={ItemRenderer}
176+
disabled={disabled}
177+
/>
178+
}
175179

176180
<SelectList
177181
{...this.props}

src/stories/select-panel.js

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class StatefulSelectPanel extends Component<{}, State> {
3434
<SelectPanel
3535
options={options}
3636
onSelectedChanged={this.handleSelectedChanged.bind(this)}
37+
hasSelectAll
3738
selected={selected}
3839
/>
3940

0 commit comments

Comments
 (0)