@danielgindi/selectbox 1.0.78 → 1.0.79

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.es6.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @danielgindi/selectbox 1.0.78
2
+ * @danielgindi/selectbox 1.0.79
3
3
  * git://github.com/danielgindi/selectbox.git
4
4
  */
5
5
  import { createElement, closestUntil, setElementAttrs, next, prev } from '@danielgindi/dom-utils/lib/Dom';
@@ -475,6 +475,14 @@ class DropList {
475
475
  this._move('prev_page', event);
476
476
  }
477
477
 
478
+ goToFirst(event) {
479
+ this._move('first', event);
480
+ }
481
+
482
+ goToLast(event) {
483
+ this._move('last', event);
484
+ }
485
+
478
486
  toggleFocusedItem() {
479
487
  const p = this._p;
480
488
 
@@ -1500,12 +1508,6 @@ class DropList {
1500
1508
  const p = this._p;
1501
1509
 
1502
1510
  p.sink
1503
- .add(p.el, 'mousedown', (event) => {
1504
- const li = closestUntil(event.target, 'li', event.currentTarget);
1505
- if (!li) return;
1506
-
1507
- event.preventDefault();
1508
- })
1509
1511
  .add(p.el, 'mouseup', (event) => {
1510
1512
  const li = closestUntil(event.target, 'li', event.currentTarget);
1511
1513
  if (!li) return;
@@ -4150,6 +4152,16 @@ class SelectBox {
4150
4152
  case VALUE_PAGE_DOWN:
4151
4153
  case VALUE_UP:
4152
4154
  case VALUE_DOWN:
4155
+ case VALUE_HOME:
4156
+ case VALUE_END:
4157
+ if ((evt.key === VALUE_HOME || evt.key === VALUE_END) &&
4158
+ p.input && p.input.value.length > 0 && !p.lastKeyAllowsNonTypeKeys) {
4159
+ // Allow using HOME/END button within the textbox
4160
+ suppressKeyPressRepeat = true;
4161
+ dropList._keydownFreeType(evt);
4162
+ break;
4163
+ }
4164
+
4153
4165
  suppressKeyPress = true;
4154
4166
  evt.preventDefault();
4155
4167
 
@@ -4177,11 +4189,18 @@ class SelectBox {
4177
4189
  }
4178
4190
  break;
4179
4191
 
4192
+ case VALUE_HOME:
4193
+ dropList.goToFirst(evt);
4194
+ break;
4195
+
4196
+ case VALUE_END:
4197
+ dropList.goToLast(evt);
4198
+ break;
4180
4199
  }
4181
4200
  break;
4182
4201
 
4183
4202
  case VALUE_SPACE:
4184
- if (p.lastKeyAllowsSpaceToggle) {
4203
+ if (p.lastKeyAllowsNonTypeKeys) {
4185
4204
  if (dropList.isVisible() && dropList.hasFocusedItem()) {
4186
4205
  suppressKeyPress = true;
4187
4206
  suppressKeyPressRepeat = true;
@@ -4222,11 +4241,13 @@ class SelectBox {
4222
4241
  break;
4223
4242
  }
4224
4243
 
4225
- p.lastKeyAllowsSpaceToggle = evt.key === VALUE_UP ||
4244
+ p.lastKeyAllowsNonTypeKeys = evt.key === VALUE_UP ||
4226
4245
  evt.key === VALUE_DOWN ||
4227
4246
  evt.key === VALUE_PAGE_UP ||
4228
4247
  evt.key === VALUE_PAGE_DOWN ||
4229
- (evt.key === VALUE_SPACE && !!p.lastKeyAllowsSpaceToggle);
4248
+ evt.key === VALUE_HOME ||
4249
+ evt.key === VALUE_END ||
4250
+ (evt.key === VALUE_SPACE && !!p.lastKeyAllowsNonTypeKeys);
4230
4251
  })
4231
4252
  .add(keyEventsTarget, 'keypress.dropdown', evt => {
4232
4253
  if (suppressKeyPress) {
@@ -4238,52 +4259,16 @@ class SelectBox {
4238
4259
  if (suppressKeyPressRepeat)
4239
4260
  return;
4240
4261
 
4241
- if (evt.key === VALUE_ENTER ||
4242
- (
4243
- evt.key === VALUE_SPACE &&
4244
- p.lastKeyAllowsSpaceToggle &&
4245
- !p.multi &&
4246
- !dropList.hasFocusedItem()
4247
- )
4262
+ if (evt.key === VALUE_ENTER || (
4263
+ evt.key === VALUE_SPACE &&
4264
+ p.lastKeyAllowsNonTypeKeys &&
4265
+ !p.multi &&
4266
+ !dropList.hasFocusedItem()
4267
+ )
4248
4268
  ) {
4249
4269
  this.toggleList();
4250
4270
  evt.preventDefault();
4251
4271
  evt.stopPropagation();
4252
- return;
4253
- }
4254
-
4255
- switch (evt.key) {
4256
- case VALUE_PAGE_UP:
4257
- case VALUE_PAGE_DOWN:
4258
- case VALUE_UP:
4259
- case VALUE_DOWN:
4260
- evt.preventDefault();
4261
-
4262
- switch (evt.key) {
4263
- case VALUE_PAGE_UP:
4264
- if (dropList.isVisible())
4265
- dropList.previousPage(evt);
4266
- break;
4267
- case VALUE_PAGE_DOWN:
4268
- if (dropList.isVisible())
4269
- dropList.nextPage(evt);
4270
- break;
4271
- case VALUE_UP:
4272
- if (dropList.isVisible()) {
4273
- dropList.previous(evt);
4274
- } else {
4275
- this._movePrev();
4276
- }
4277
- break;
4278
- case VALUE_DOWN:
4279
- if (dropList.isVisible()) {
4280
- dropList.next(evt);
4281
- } else {
4282
- this._moveNext();
4283
- }
4284
- break;
4285
- }
4286
- break;
4287
4272
  }
4288
4273
  });
4289
4274