@danielgindi/selectbox 1.0.140 → 1.0.142
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 +33 -22
- 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 +13 -2
- 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 +33 -22
- 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/SelectBox.js +12 -1
- package/package.json +15 -15
package/dist/lib.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @danielgindi/selectbox 1.0.
|
|
2
|
+
* @danielgindi/selectbox 1.0.142
|
|
3
3
|
* git://github.com/danielgindi/selectbox.git
|
|
4
4
|
*/
|
|
5
5
|
'use strict';
|
|
@@ -12,7 +12,7 @@ var VirtualListHelper = require('@danielgindi/virtual-list-helper');
|
|
|
12
12
|
var keycodeJs = require('keycode-js');
|
|
13
13
|
var mitt = require('mitt');
|
|
14
14
|
|
|
15
|
-
var escapeRegex = (
|
|
15
|
+
var escapeRegex = (value) => value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
|
16
16
|
|
|
17
17
|
const ItemSymbol$1 = Symbol('item');
|
|
18
18
|
const DestroyedSymbol$1 = Symbol('destroyed');
|
|
@@ -138,7 +138,7 @@ class DropList {
|
|
|
138
138
|
constructor(options) {
|
|
139
139
|
const o = { ...defaultOptions$1 };
|
|
140
140
|
|
|
141
|
-
for (let [key, value] of Object.entries(
|
|
141
|
+
for (let [key, value] of Object.entries(/**@type Object*/options))
|
|
142
142
|
if (value !== undefined)
|
|
143
143
|
o[key] = value;
|
|
144
144
|
|
|
@@ -192,7 +192,7 @@ class DropList {
|
|
|
192
192
|
p.elOriginalDisplay = el.style.display || '';
|
|
193
193
|
el.classList.add(...classes);
|
|
194
194
|
el.role = 'menu';
|
|
195
|
-
Css.setCssProps(
|
|
195
|
+
Css.setCssProps(/**@type ElementCSSInlineStyle*/el, initialCss);
|
|
196
196
|
p.ownsEl = false;
|
|
197
197
|
} else {
|
|
198
198
|
el = Dom.createElement('ul', {
|
|
@@ -226,7 +226,7 @@ class DropList {
|
|
|
226
226
|
onItemRender: (itemEl, index) => {
|
|
227
227
|
let item;
|
|
228
228
|
|
|
229
|
-
if ((
|
|
229
|
+
if ((/**@type any*/index) === GhostSymbol) {
|
|
230
230
|
item = {
|
|
231
231
|
label: p.lastMeasureLongestLabelText,
|
|
232
232
|
value: 'Measure',
|
|
@@ -1596,7 +1596,7 @@ class DropList {
|
|
|
1596
1596
|
* @param {function(any)} handler
|
|
1597
1597
|
* @returns {DropList}
|
|
1598
1598
|
*/
|
|
1599
|
-
on(
|
|
1599
|
+
on(/**string|'*'*/event, /**Function?*/handler) {
|
|
1600
1600
|
this._p.mitt.on(event, handler);
|
|
1601
1601
|
return this;
|
|
1602
1602
|
}
|
|
@@ -1607,7 +1607,7 @@ class DropList {
|
|
|
1607
1607
|
* @param {function(any)} handler
|
|
1608
1608
|
* @returns {DropList}
|
|
1609
1609
|
*/
|
|
1610
|
-
once(
|
|
1610
|
+
once(/**string|'*'*/event, /**Function?*/handler) {
|
|
1611
1611
|
let wrapped = (value) => {
|
|
1612
1612
|
this._p.mitt.off(event, wrapped);
|
|
1613
1613
|
handler(value);
|
|
@@ -1622,7 +1622,7 @@ class DropList {
|
|
|
1622
1622
|
* @param {function(any)} handler
|
|
1623
1623
|
* @returns {DropList}
|
|
1624
1624
|
*/
|
|
1625
|
-
off(
|
|
1625
|
+
off(/**(string|'*')?*/event, /**Function?*/handler) {
|
|
1626
1626
|
if (!event && !event) {
|
|
1627
1627
|
this._p.mitt.all.clear();
|
|
1628
1628
|
} else {
|
|
@@ -1637,7 +1637,7 @@ class DropList {
|
|
|
1637
1637
|
* @param {any} value
|
|
1638
1638
|
* @returns {DropList}
|
|
1639
1639
|
*/
|
|
1640
|
-
emit(
|
|
1640
|
+
emit(/**string|'*'*/event, /**any?*/value) {
|
|
1641
1641
|
this._p.mitt.emit(event, value);
|
|
1642
1642
|
return this;
|
|
1643
1643
|
}
|
|
@@ -2663,7 +2663,7 @@ class SelectBox {
|
|
|
2663
2663
|
constructor(options) {
|
|
2664
2664
|
const o = { ...defaultOptions };
|
|
2665
2665
|
|
|
2666
|
-
for (let [key, value] of Object.entries(
|
|
2666
|
+
for (let [key, value] of Object.entries(/**@type Object*/options))
|
|
2667
2667
|
if (value !== undefined)
|
|
2668
2668
|
o[key] = value;
|
|
2669
2669
|
|
|
@@ -2792,7 +2792,7 @@ class SelectBox {
|
|
|
2792
2792
|
}, true);
|
|
2793
2793
|
|
|
2794
2794
|
p.sink.
|
|
2795
|
-
add(p.input, 'keydown', (
|
|
2795
|
+
add(p.input, 'keydown', (/**KeyboardEvent*/event) => {
|
|
2796
2796
|
this._handleInputKeydown(event);
|
|
2797
2797
|
}).
|
|
2798
2798
|
add(p.input, 'input', () => {
|
|
@@ -3431,7 +3431,7 @@ class SelectBox {
|
|
|
3431
3431
|
p.selectedValues &&
|
|
3432
3432
|
p.selectedValues.length === 1 &&
|
|
3433
3433
|
Array.isArray(p.selectedValues[0])) {
|
|
3434
|
-
this.setSelectedValues(
|
|
3434
|
+
this.setSelectedValues(/**@type Array*/p.selectedValues[0]);
|
|
3435
3435
|
}
|
|
3436
3436
|
|
|
3437
3437
|
this._scheduleSync('full');
|
|
@@ -3976,7 +3976,7 @@ class SelectBox {
|
|
|
3976
3976
|
* @param {function(any)} handler
|
|
3977
3977
|
* @returns {SelectBox}
|
|
3978
3978
|
*/
|
|
3979
|
-
on(
|
|
3979
|
+
on(/**string|'*'*/event, /**Function?*/handler) {
|
|
3980
3980
|
this._p.mitt.on(event, handler);
|
|
3981
3981
|
return this;
|
|
3982
3982
|
}
|
|
@@ -3987,7 +3987,7 @@ class SelectBox {
|
|
|
3987
3987
|
* @param {function(any)} handler
|
|
3988
3988
|
* @returns {SelectBox}
|
|
3989
3989
|
*/
|
|
3990
|
-
once(
|
|
3990
|
+
once(/**string|'*'*/event, /**Function?*/handler) {
|
|
3991
3991
|
let wrapped = (value) => {
|
|
3992
3992
|
this._p.mitt.off(event, wrapped);
|
|
3993
3993
|
handler(value);
|
|
@@ -4002,7 +4002,7 @@ class SelectBox {
|
|
|
4002
4002
|
* @param {function(any)} handler
|
|
4003
4003
|
* @returns {SelectBox}
|
|
4004
4004
|
*/
|
|
4005
|
-
off(
|
|
4005
|
+
off(/**(string|'*')?*/event, /**Function?*/handler) {
|
|
4006
4006
|
if (!event && !event) {
|
|
4007
4007
|
this._p.mitt.all.clear();
|
|
4008
4008
|
} else {
|
|
@@ -4017,7 +4017,7 @@ class SelectBox {
|
|
|
4017
4017
|
* @param {any} value
|
|
4018
4018
|
* @returns {SelectBox}
|
|
4019
4019
|
*/
|
|
4020
|
-
emit(
|
|
4020
|
+
emit(/**string|'*'*/event, /**any?*/value) {
|
|
4021
4021
|
this._p.mitt.emit(event, value);
|
|
4022
4022
|
return this;
|
|
4023
4023
|
}
|
|
@@ -4108,7 +4108,7 @@ class SelectBox {
|
|
|
4108
4108
|
Dom.closestUntil(evt.target, `.${p.baseClassName}__item`, evt.currentTarget),
|
|
4109
4109
|
evt);
|
|
4110
4110
|
}).
|
|
4111
|
-
add(p.list, 'keydown', (
|
|
4111
|
+
add(p.list, 'keydown', (/**KeyboardEvent*/evt) => {
|
|
4112
4112
|
if (!Dom.closestUntil(evt.target, `.${p.baseClassName}__item`, evt.currentTarget))
|
|
4113
4113
|
return;
|
|
4114
4114
|
|
|
@@ -4396,6 +4396,8 @@ class SelectBox {
|
|
|
4396
4396
|
if (!hasGroupSync)
|
|
4397
4397
|
this._scheduleSync('render_base');
|
|
4398
4398
|
}
|
|
4399
|
+
} else if (p.multi) {
|
|
4400
|
+
this._scheduleSync('_syncPlaceholder');
|
|
4399
4401
|
}
|
|
4400
4402
|
|
|
4401
4403
|
this._trigger(checked ? 'addsel' : 'removesel', { value: value, item: item });
|
|
@@ -4451,6 +4453,7 @@ class SelectBox {
|
|
|
4451
4453
|
const p = this._p;
|
|
4452
4454
|
|
|
4453
4455
|
setTimeout(() => {
|
|
4456
|
+
if (this[DestroyedSymbol]) return; // destroyed by event handler
|
|
4454
4457
|
if (p.disabled) return;
|
|
4455
4458
|
|
|
4456
4459
|
this._trigger('search:blur');
|
|
@@ -4489,7 +4492,7 @@ class SelectBox {
|
|
|
4489
4492
|
|
|
4490
4493
|
p.sink.
|
|
4491
4494
|
add(keyEventsTarget, 'keydown.dropdown', (evt) => {
|
|
4492
|
-
if ((
|
|
4495
|
+
if ((/**@type HTMLInputElement*/evt.currentTarget).readOnly)
|
|
4493
4496
|
return;
|
|
4494
4497
|
|
|
4495
4498
|
let suppressEnterSpaceToggle = false;
|
|
@@ -4977,6 +4980,10 @@ class SelectBox {
|
|
|
4977
4980
|
this._syncSingleItem();
|
|
4978
4981
|
break;
|
|
4979
4982
|
|
|
4983
|
+
case 'syncPlaceholder':
|
|
4984
|
+
this._syncPlaceholder();
|
|
4985
|
+
break;
|
|
4986
|
+
|
|
4980
4987
|
case 'removeMultiItemElement':{
|
|
4981
4988
|
if (p.showSelection) {
|
|
4982
4989
|
this._syncPlaceholder();
|
|
@@ -5200,7 +5207,9 @@ class SelectBox {
|
|
|
5200
5207
|
if (typeof p.multiPlaceholderFormatter === 'function') {
|
|
5201
5208
|
placeholder = p.multiPlaceholderFormatter(p.selectedItems);
|
|
5202
5209
|
} else {
|
|
5203
|
-
placeholder =
|
|
5210
|
+
placeholder = p.selectedItems.length === 0 ?
|
|
5211
|
+
p.placeholder || '' :
|
|
5212
|
+
defaultMultiPlaceholderFormatter(p.selectedItems, p.labelProp);
|
|
5204
5213
|
}
|
|
5205
5214
|
} else if (p.selectedItems.length === 0 ||
|
|
5206
5215
|
!p.showSelection ||
|
|
@@ -5346,6 +5355,8 @@ class SelectBox {
|
|
|
5346
5355
|
*/
|
|
5347
5356
|
_trigger(event, data) {
|
|
5348
5357
|
const p = this._p;
|
|
5358
|
+
if (p === undefined)
|
|
5359
|
+
return;
|
|
5349
5360
|
if (p.on)
|
|
5350
5361
|
p.on(event, ...(data === undefined ? [] : [data]));
|
|
5351
5362
|
p.mitt.emit(event, data);
|
|
@@ -5706,7 +5717,7 @@ class SelectBox {
|
|
|
5706
5717
|
let nextFocus;
|
|
5707
5718
|
|
|
5708
5719
|
if (event.key === (isRtl ? keycodeJs.VALUE_LEFT : keycodeJs.VALUE_RIGHT)) {// Next arrow
|
|
5709
|
-
nextFocus = Dom.next(
|
|
5720
|
+
nextFocus = Dom.next(/**@type Element*/event.target, `.${p.baseClassName}__item,.${p.baseClassName}__search_wrapper`);
|
|
5710
5721
|
if (hasClass(nextFocus, `${p.baseClassName}__search_wrapper`)) {
|
|
5711
5722
|
nextFocus = nextFocus.querySelector('input');
|
|
5712
5723
|
}
|
|
@@ -5714,7 +5725,7 @@ class SelectBox {
|
|
|
5714
5725
|
|
|
5715
5726
|
event.preventDefault();
|
|
5716
5727
|
} else if (event.key === (isRtl ? keycodeJs.VALUE_RIGHT : keycodeJs.VALUE_LEFT)) {// Prev arrow
|
|
5717
|
-
nextFocus = Dom.prev(
|
|
5728
|
+
nextFocus = Dom.prev(/**@type Element*/event.target, `.${p.baseClassName}__item,.${p.baseClassName}__search_wrapper`);
|
|
5718
5729
|
if (hasClass(nextFocus, `${p.baseClassName}__search_wrapper`)) {
|
|
5719
5730
|
nextFocus = nextFocus.querySelector('input');
|
|
5720
5731
|
}
|
|
@@ -5726,7 +5737,7 @@ class SelectBox {
|
|
|
5726
5737
|
let itemEl = event.target;
|
|
5727
5738
|
while (itemEl) {
|
|
5728
5739
|
multiItemEls.push(itemEl);
|
|
5729
|
-
itemEl = Dom.prev(
|
|
5740
|
+
itemEl = Dom.prev(/**@type Element*/itemEl, `.${p.baseClassName}__item`);
|
|
5730
5741
|
}
|
|
5731
5742
|
|
|
5732
5743
|
while (multiItemEls.length) {
|