Skip to content

Commit 9a9399f

Browse files
committed
chore(release): Merge branch 'dev' into master
2 parents 703ab9e + 053c894 commit 9a9399f

File tree

7 files changed

+70
-5
lines changed

7 files changed

+70
-5
lines changed

demos/components/select/index.html

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,20 @@ <h3>多选</h3>
8585
on-dropdown-close="ctrl.dropdownClose()">
8686
</cc-dropdown-multiselect>
8787
</div>
88+
<div class="demo">
89+
<h3>多选(disabled)</h3>
90+
<span>当前值: <span ng-bind="ctrl.value33 | json"></span></span>
91+
<cc-dropdown-multiselect
92+
placeholder="快,快选我。。啊!"
93+
model="ctrl.value33"
94+
datalist="ctrl.datalist1"
95+
mapping="ctrl.fieldsMap"
96+
disabled="true"
97+
on-select-change="ctrl.multiSelectChange(model, oldModel, selection, oldSelection)"
98+
on-dropdown-open="ctrl.dropdownOpen()"
99+
on-dropdown-close="ctrl.dropdownClose()">
100+
</cc-dropdown-multiselect>
101+
</div>
88102
<div class="demo">
89103
<h3>多选(可搜索)</h3>
90104
<span>当前值: <span ng-bind="ctrl.value4 | json"></span></span>
@@ -101,6 +115,20 @@ <h3>多选(可搜索)</h3>
101115
<button class="btn-ok" ng-click="ctrl.setList()">设置新值</button>
102116
</div>
103117
</div>
118+
<div class="demo">
119+
<h3>多选(可搜索, disabled)</h3>
120+
<span>当前值: <span ng-bind="ctrl.value44 | json"></span></span>
121+
<cc-dropdown-multiselect
122+
placeholder="快,快选我。。啊!"
123+
model="ctrl.value44"
124+
datalist="ctrl.datalist1"
125+
searchable="true"
126+
confirm-button="true"
127+
disabled="true"
128+
on-select-change="ctrl.multiSelectChange(model, oldModel, selection, oldSelection)"
129+
mapping="ctrl.fieldsMap">
130+
</cc-dropdown-multiselect>
131+
</div>
104132
</div>
105133
<div class="group">
106134
<div class="demo">
@@ -220,7 +248,9 @@ <h4>当前值: {{ctrl.selectedOneShop}}</h4>
220248
this.value1 = '上海';
221249
this.value2 = 'xa';
222250
this.value3 = [];
251+
this.value33 = [];
223252
this.value4 = ['xa', 'sh'];
253+
this.value44 = ['xa'];
224254
this.value5 = '上海';
225255
this.value10 = 123789;
226256
this.list10 = [

demos/components/sms-editor/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ angular.module('componentsApp', ['ccms.components'])
6464
{
6565
type: 'taobao',
6666
name: 'shortlink',
67-
text: '淘短链',
67+
text: '淘短链AAAAAAAAAA111111111',
6868
prefix: '&nbsp;',
6969
suffix: '&nbsp;',
7070
defaultValue: 'c.tb.cn/c.0zYeW#'
@@ -183,6 +183,6 @@ angular.module('componentsApp', ['ccms.components'])
183183
}
184184

185185
self.insertKeyword = function () {
186-
self.channel.api.insertKeyword('淘短链', 'taobao');
186+
self.channel.api.insertKeyword('淘短链AAAAAAAAAA111111111', 'taobao');
187187
}
188188
});

src/components/dropdown/dropdown-multiselect/DropdownMultiselectCtrl.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ export default class DropdownMultiselectCtrl {
5959
this.autoClose = false;
6060
}
6161

62+
if (typeof this.disabled === 'undefined') {
63+
this.disabled = false;
64+
}
65+
6266
this.onSelectChange = this.onSelectChange || (() => {});
6367
}
6468

@@ -92,6 +96,12 @@ export default class DropdownMultiselectCtrl {
9296
scope.$watchCollection(() => this.selection, () => {
9397
this.updateTitle();
9498
});
99+
100+
scope.$watch(() => this.isOpen, (openState, oldOpenstate) => {
101+
if (this.disabled && openState) {
102+
this.isOpen = false;
103+
}
104+
});
95105
}
96106

97107
_prepareSelection() {
@@ -265,6 +275,7 @@ export default class DropdownMultiselectCtrl {
265275
}
266276

267277
clear() {
278+
if (this.disabled === true) return;
268279
this.items = this._clampedDatalist;
269280
this.selection = this.selection.filter(item => item.disabled === true);
270281
this.selectAll = false;

src/components/dropdown/dropdown-multiselect/_dropdown-multiselect.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ cc-dropdown-multiselect {
2121
border-color: $input-active-border;
2222
}
2323

24+
@at-root .disabled#{&} {
25+
background-color: #eee;
26+
border: solid 1px #ccc;
27+
}
28+
2429
.dropdown-select-input {
2530
flex: 1;
2631
min-width: 0;

src/components/dropdown/dropdown-multiselect/dropdown-multiselect.tpl.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div class="dropdown-multiselect" cc-dropdown
22
is-open="$ctrl.isOpen"
33
auto-close="$ctrl.autoClose"
4-
ng-class="{active: $ctrl.isActive}"
4+
ng-class="{active: $ctrl.isActive, disabled: $ctrl.disabled}"
55
on-dropdown-open="$ctrl.onOpen()"
66
on-dropdown-close="$ctrl.onClose()">
77
<div class="dropdown-select-input-wrap">
@@ -10,11 +10,12 @@
1010
ng-focus="$ctrl.setActiveState(true)"
1111
ng-blur="$ctrl.setActiveState(false)"
1212
ng-change="$ctrl.onSearchTextChange($ctrl.title)"
13+
ng-disabled="$ctrl.disabled"
1314
ng-model="$ctrl.title">
1415
<div class="dropdown-select-icons"
1516
><span class="dropdown-select-clear"
1617
ng-class="{visible: $ctrl.title.length}"
17-
ng-if="$ctrl.searchable"
18+
ng-if="!$ctrl.disabled && $ctrl.searchable"
1819
ng-click="$ctrl.clear()"></span
1920
><span class="dropdown-select-down" cc-dropdown-toggle></span>
2021
</div>

src/components/dropdown/dropdown-multiselect/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const dropdownMultiselectDDO = {
1818
hasSelectAll: '<?',
1919
autoClose: '<?',
2020
mapping: '<?',
21+
disabled: '<?',
2122
datalist: '<',
2223
searchable: '<?',
2324
confirmButton: '<?',

src/components/sms-editor/SMSEditorCtrl.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,24 @@ export default class SMSEditorCtrl {
203203
// const padding = (this.keywordTypes.length < 1 || !type) ? 0 : 1.5;
204204

205205
// return `&nbsp;<input class="sms-keyword-inserted ${padding ? type : DEFAULT_TYPE_NAME}" value="${text}" style="width: ${padding + text.length}em" disabled>&nbsp;`;
206-
return `${prefix}<input class="sms-keyword-inserted ${type}" value="${text}" style="width: ${text.length}em" disabled>${suffix}`;
206+
let width = this.getTextWidth(text);
207+
208+
return `${prefix}<input class="sms-keyword-inserted ${type}" value="${text}" style="width: ${width + 2}px" disabled>${suffix}`;
209+
}
210+
211+
getTextWidth(text) {
212+
let element = document.createElement('div');
213+
element.className = 'sms-content';
214+
element.style.display = 'inline-block';
215+
element.style.opacity = 0;
216+
element.innerHTML = text;
217+
document.body.appendChild(element);
218+
219+
let width = window.getComputedStyle(element).width;
220+
221+
document.body.removeChild(element);
222+
223+
return parseInt(width, 10);
207224
}
208225

209226

0 commit comments

Comments
 (0)