@danielgindi/selectbox 2.0.7 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib.cjs.js +48 -18
- package/dist/lib.cjs.js.map +1 -1
- package/dist/lib.cjs.min.js +2 -2
- package/dist/lib.cjs.min.js.map +1 -1
- package/dist/lib.es6.js +48 -18
- package/dist/lib.es6.js.map +1 -1
- package/dist/lib.es6.min.js +2 -2
- package/dist/lib.es6.min.js.map +1 -1
- package/dist/lib.umd.js +48 -18
- package/dist/lib.umd.js.map +1 -1
- package/dist/lib.umd.min.js +2 -2
- package/dist/lib.umd.min.js.map +1 -1
- package/lib/DropList.js +24 -10
- package/lib/SelectBox.js +23 -7
- package/package.json +1 -1
- package/vue/SelectBox.vue +3 -2
package/dist/lib.es6.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @danielgindi/selectbox 2.0.
|
|
2
|
+
* @danielgindi/selectbox 2.0.8
|
|
3
3
|
* git://github.com/danielgindi/selectbox.git
|
|
4
4
|
*/
|
|
5
5
|
import { createElement, closestUntil, setElementAttrs, next, prev } from '@danielgindi/dom-utils/lib/Dom';
|
|
@@ -186,7 +186,7 @@ Emits the following events:
|
|
|
186
186
|
'hide': the drop list was hidden.
|
|
187
187
|
'hide:after': emitted after the hide css transition has ended, or immediately after 'hide'.
|
|
188
188
|
'check' {value, item, checked: boolean, isGroup: boolean, isCheckingGroup: boolean}: item was selected (in multi mode).
|
|
189
|
-
'groupcheck' {value, item,
|
|
189
|
+
'groupcheck' {value, item, affectedCount: number}: item was selected (in multi mode).
|
|
190
190
|
'blur' {event}: element lost focus
|
|
191
191
|
'show_subitems {value, item, el, droplist: DropList}': subitems dropdown will show.
|
|
192
192
|
'hide_subitems {value, item, el}': subitems dropdown did hide.
|
|
@@ -779,6 +779,10 @@ class DropList {
|
|
|
779
779
|
p.groupCount++;
|
|
780
780
|
}
|
|
781
781
|
|
|
782
|
+
if (typeof oitem._level === 'number') {
|
|
783
|
+
item._level = oitem._level;
|
|
784
|
+
}
|
|
785
|
+
|
|
782
786
|
if (oitem._child) {
|
|
783
787
|
// This is used for setting a child class,
|
|
784
788
|
// But can be used to determine that current item is not part of above group,
|
|
@@ -881,6 +885,10 @@ class DropList {
|
|
|
881
885
|
}
|
|
882
886
|
}
|
|
883
887
|
|
|
888
|
+
if (hasOwnProperty.call(newItem, '_level')) {
|
|
889
|
+
newItem._level = item._level;
|
|
890
|
+
}
|
|
891
|
+
|
|
884
892
|
if (hasOwnProperty.call(newItem, '_child'))
|
|
885
893
|
item._child = !!newItem._child;
|
|
886
894
|
|
|
@@ -1210,6 +1218,7 @@ class DropList {
|
|
|
1210
1218
|
_nointeraction: !!oitem._nointeraction,
|
|
1211
1219
|
_subitems: oitem._subitems,
|
|
1212
1220
|
_group: !!oitem._group,
|
|
1221
|
+
_level: !!oitem._level,
|
|
1213
1222
|
_checked: !!oitem._checked,
|
|
1214
1223
|
};
|
|
1215
1224
|
}
|
|
@@ -3016,17 +3025,19 @@ class DropList {
|
|
|
3016
3025
|
if (item._group) {
|
|
3017
3026
|
// Now loop through children below the group
|
|
3018
3027
|
|
|
3019
|
-
let
|
|
3028
|
+
let affectedCount = 0;
|
|
3020
3029
|
|
|
3021
3030
|
if (p.autoCheckGroupChildren) {
|
|
3022
3031
|
const items = p.filteredItems ?? p.items;
|
|
3023
3032
|
let groupIndex = items.indexOf(item);
|
|
3033
|
+
const groupLevel = item._level;
|
|
3024
3034
|
|
|
3025
3035
|
for (let i = groupIndex + 1, len = items.length; i < len; i++) {
|
|
3026
3036
|
let next = items[i];
|
|
3027
3037
|
|
|
3028
3038
|
// Hit the next group, break out
|
|
3029
|
-
if (
|
|
3039
|
+
if ((!next._child && items[i - 1]._child) ||
|
|
3040
|
+
(groupLevel === undefined ? next._group || next._level !== undefined : next._level <= groupLevel))
|
|
3030
3041
|
break;
|
|
3031
3042
|
|
|
3032
3043
|
// No change, skip
|
|
@@ -3036,7 +3047,7 @@ class DropList {
|
|
|
3036
3047
|
// Update state
|
|
3037
3048
|
next._checked = item._checked;
|
|
3038
3049
|
|
|
3039
|
-
|
|
3050
|
+
affectedCount++;
|
|
3040
3051
|
|
|
3041
3052
|
// Update DOM
|
|
3042
3053
|
let nextEl = p.virtualListHelper.getItemElementAt(i);
|
|
@@ -3059,7 +3070,7 @@ class DropList {
|
|
|
3059
3070
|
this._trigger('groupcheck', {
|
|
3060
3071
|
value: item.value,
|
|
3061
3072
|
item: item[ItemSymbol] ?? item,
|
|
3062
|
-
|
|
3073
|
+
affectedCount: affectedCount,
|
|
3063
3074
|
});
|
|
3064
3075
|
} else if (p.groupCount > 0 && p.autoCheckGroupChildren) {
|
|
3065
3076
|
const items = p.filteredItems ?? p.items;
|
|
@@ -3093,18 +3104,21 @@ class DropList {
|
|
|
3093
3104
|
|
|
3094
3105
|
if (!groupItem || !groupItem._group) return this;
|
|
3095
3106
|
|
|
3096
|
-
let
|
|
3107
|
+
let next, hasChecked = false, hasUnchecked = false;
|
|
3108
|
+
|
|
3109
|
+
const groupLevel = groupItem._level;
|
|
3097
3110
|
|
|
3098
3111
|
for (let i = groupIndex + 1, len = items.length; i < len; i++) {
|
|
3099
|
-
|
|
3112
|
+
next = items[i];
|
|
3100
3113
|
|
|
3101
3114
|
// Hit the next group, break out
|
|
3102
|
-
if (
|
|
3115
|
+
if ((!next._child && items[i - 1]._child) ||
|
|
3116
|
+
(groupLevel === undefined ? next._group || next._level !== undefined : next._level <= groupLevel))
|
|
3103
3117
|
break;
|
|
3104
3118
|
|
|
3105
|
-
if (
|
|
3119
|
+
if (next._checked) {
|
|
3106
3120
|
hasChecked = true;
|
|
3107
|
-
} else if (!
|
|
3121
|
+
} else if (!next._checked) {
|
|
3108
3122
|
hasUnchecked = true;
|
|
3109
3123
|
}
|
|
3110
3124
|
}
|
|
@@ -3461,11 +3475,12 @@ Emits the following events:
|
|
|
3461
3475
|
'open' { list: DropList }: the drop list is opening
|
|
3462
3476
|
'open:before' { list: DropList }: the drop list will open
|
|
3463
3477
|
'close': the drop list is closing
|
|
3464
|
-
'addsel:before' {value, item, cancel: false}: an item selection is about to be added (in multi mode). return false to abort.
|
|
3465
|
-
'removesel:before' {value, item, cancel: false}: an item selection is about to be removed (in multi mode). return false to abort.
|
|
3478
|
+
'addsel:before' {value, item, cancel: false, isCheckingGroup: bool}: an item selection is about to be added (in multi mode). return false to abort.
|
|
3479
|
+
'removesel:before' {value, item, cancel: false, isCheckingGroup: bool}: an item selection is about to be removed (in multi mode). return false to abort.
|
|
3480
|
+
'addsel' {value, item, isCheckingGroup: bool}: an item selection has been added (in multi mode)
|
|
3481
|
+
'removesel' {value, item, isCheckingGroup: bool}: an item selection has been removed (in multi mode)
|
|
3482
|
+
'groupcheck' {value, item, affectedCount: number}: an item selection has been removed (in multi mode)
|
|
3466
3483
|
'select:before' {value, item, cancel: false}: an item is about to be selected (in single mode). return false to abort.
|
|
3467
|
-
'addsel' {value, item}: an item selection has been added (in multi mode)
|
|
3468
|
-
'removesel' {value, item}: an item selection has been removed (in multi mode)
|
|
3469
3484
|
'select' {value, item}: an item has been selected (in single mode)
|
|
3470
3485
|
'search' {value}: input box value has changed
|
|
3471
3486
|
'search:focus': input box has gained focus
|
|
@@ -5143,7 +5158,12 @@ class SelectBox {
|
|
|
5143
5158
|
let checked = event.checked;
|
|
5144
5159
|
if (event.isGroup && !p.treatGroupSelectionAsItems) return; // Ignore groups
|
|
5145
5160
|
|
|
5146
|
-
let selEvt = {
|
|
5161
|
+
let selEvt = {
|
|
5162
|
+
value: value,
|
|
5163
|
+
item: item,
|
|
5164
|
+
cancel: false,
|
|
5165
|
+
isCheckingGroup: event.isCheckingGroup,
|
|
5166
|
+
};
|
|
5147
5167
|
this._trigger((checked ? 'addsel' : 'removesel') + ':before', selEvt);
|
|
5148
5168
|
|
|
5149
5169
|
if (selEvt.cancel) {
|
|
@@ -5201,16 +5221,26 @@ class SelectBox {
|
|
|
5201
5221
|
this._scheduleSync('syncPlaceholder');
|
|
5202
5222
|
}
|
|
5203
5223
|
|
|
5204
|
-
this._trigger(checked ? 'addsel' : 'removesel', {
|
|
5224
|
+
this._trigger(checked ? 'addsel' : 'removesel', {
|
|
5225
|
+
value: value,
|
|
5226
|
+
item: item,
|
|
5227
|
+
isCheckingGroup: event.isCheckingGroup,
|
|
5228
|
+
});
|
|
5205
5229
|
}
|
|
5206
5230
|
break;
|
|
5207
5231
|
|
|
5208
5232
|
case 'groupcheck': {
|
|
5209
5233
|
if (!p.multi) return;
|
|
5210
5234
|
|
|
5211
|
-
if (event.
|
|
5235
|
+
if (event.affectedCount) {
|
|
5212
5236
|
this._scheduleSync(p.sortSelectedItems ? 'full' : 'render_base');
|
|
5213
5237
|
}
|
|
5238
|
+
|
|
5239
|
+
this._trigger('groupcheck', {
|
|
5240
|
+
value: event.value,
|
|
5241
|
+
item: event.item,
|
|
5242
|
+
affectedCount: event.affectedCount,
|
|
5243
|
+
});
|
|
5214
5244
|
}
|
|
5215
5245
|
break;
|
|
5216
5246
|
|