@skyux/popovers 5.9.3 → 5.9.6
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/bundles/skyux-popovers-testing.umd.js +12 -6
- package/bundles/skyux-popovers.umd.js +1531 -1536
- package/documentation.json +317 -284
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js.map +1 -1
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js +1 -4
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js.map +1 -1
- package/esm2015/lib/modules/dropdown/dropdown.component.js +10 -7
- package/esm2015/lib/modules/dropdown/dropdown.component.js.map +1 -1
- package/esm2015/lib/modules/popover/popover-content.component.js +18 -34
- package/esm2015/lib/modules/popover/popover-content.component.js.map +1 -1
- package/esm2015/lib/modules/popover/popover.component.js +11 -2
- package/esm2015/lib/modules/popover/popover.component.js.map +1 -1
- package/esm2015/lib/modules/popover/popover.directive.js +0 -1
- package/esm2015/lib/modules/popover/popover.directive.js.map +1 -1
- package/esm2015/testing/dropdown/dropdown-fixture.js +7 -1
- package/esm2015/testing/dropdown/dropdown-fixture.js.map +1 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown.js.map +1 -1
- package/esm2015/testing/popover/popover-fixture.js +8 -8
- package/esm2015/testing/popover/popover-fixture.js.map +1 -1
- package/fesm2015/skyux-popovers-testing.js +15 -9
- package/fesm2015/skyux-popovers-testing.js.map +1 -1
- package/fesm2015/skyux-popovers.js +40 -49
- package/fesm2015/skyux-popovers.js.map +1 -1
- package/lib/modules/dropdown/dropdown-item.component.d.ts +1 -1
- package/lib/modules/dropdown/dropdown-menu.component.d.ts +3 -3
- package/lib/modules/dropdown/dropdown.component.d.ts +12 -12
- package/lib/modules/popover/popover-content.component.d.ts +13 -12
- package/lib/modules/popover/popover.component.d.ts +6 -4
- package/lib/modules/popover/popover.directive.d.ts +3 -5
- package/package.json +6 -6
- package/testing/dropdown/dropdown-fixture.d.ts +7 -7
- package/testing/dropdown/popovers-fixture-dropdown.d.ts +2 -2
- package/testing/popover/popover-fixture.d.ts +6 -6
|
@@ -218,896 +218,325 @@
|
|
|
218
218
|
type: i0.Input
|
|
219
219
|
}] } });
|
|
220
220
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
case 'center':
|
|
224
|
-
return 'center';
|
|
225
|
-
case 'left':
|
|
226
|
-
return 'left';
|
|
227
|
-
case 'right':
|
|
228
|
-
return 'right';
|
|
229
|
-
/* istanbul ignore next */
|
|
230
|
-
default:
|
|
231
|
-
throw "SkyAffixHorizontalAlignment does not have a matching value for '" + alignment + "'!";
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Creates a dropdown menu that displays menu items that users may select.
|
|
237
|
-
*/
|
|
238
|
-
var SkyDropdownComponent = /** @class */ (function () {
|
|
239
|
-
function SkyDropdownComponent(changeDetector, affixService, overlayService, themeSvc) {
|
|
240
|
-
this.changeDetector = changeDetector;
|
|
241
|
-
this.affixService = affixService;
|
|
242
|
-
this.overlayService = overlayService;
|
|
243
|
-
this.themeSvc = themeSvc;
|
|
244
|
-
/**
|
|
245
|
-
* Provides an observable to send commands to the dropdown. The commands should respect
|
|
246
|
-
* the [[SkyDropdownMessage]] type.
|
|
247
|
-
*/
|
|
248
|
-
this.messageStream = new rxjs.Subject();
|
|
249
|
-
this.isMouseEnter = false;
|
|
250
|
-
this.isVisible = false;
|
|
251
|
-
this.ngUnsubscribe = new rxjs.Subject();
|
|
252
|
-
this._isOpen = false;
|
|
253
|
-
}
|
|
254
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "buttonStyle", {
|
|
255
|
-
get: function () {
|
|
256
|
-
return this._buttonStyle || 'default';
|
|
257
|
-
},
|
|
258
|
-
/**
|
|
259
|
-
* Specifies a background color for the dropdown button. Available values are `default` and
|
|
260
|
-
* `primary`. These values set the background color from the
|
|
261
|
-
* [secondary and primary button classes](https://developer.blackbaud.com/skyux/components/button) respectively.
|
|
262
|
-
* @default "default"
|
|
263
|
-
*/
|
|
264
|
-
set: function (value) {
|
|
265
|
-
this._buttonStyle = value;
|
|
266
|
-
},
|
|
267
|
-
enumerable: false,
|
|
268
|
-
configurable: true
|
|
269
|
-
});
|
|
270
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "buttonType", {
|
|
271
|
-
get: function () {
|
|
272
|
-
return this._buttonType || 'select';
|
|
273
|
-
},
|
|
274
|
-
/**
|
|
275
|
-
* Specifies the type of button to render as the dropdown's trigger element. To display a button
|
|
276
|
-
* with text and a caret, specify `select` and then enter the button text in a
|
|
277
|
-
* `sky-dropdown-button` element. To display a round button with an ellipsis, specify
|
|
278
|
-
* `context-menu`. And to display a button with a [Font Awesome icon](http://fontawesome.io/icons/), specify the icon's class name.
|
|
279
|
-
* For example, to display the `fa-filter` icon, specify `filter`.
|
|
280
|
-
* @default "select"
|
|
281
|
-
*/
|
|
282
|
-
set: function (value) {
|
|
283
|
-
this._buttonType = value;
|
|
284
|
-
},
|
|
285
|
-
enumerable: false,
|
|
286
|
-
configurable: true
|
|
287
|
-
});
|
|
288
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "disabled", {
|
|
289
|
-
get: function () {
|
|
290
|
-
return this._disabled || false;
|
|
291
|
-
},
|
|
292
|
-
/**
|
|
293
|
-
* Indicates whether to disable the dropdown button.
|
|
294
|
-
* @default false
|
|
295
|
-
*/
|
|
296
|
-
set: function (value) {
|
|
297
|
-
this._disabled = value;
|
|
298
|
-
},
|
|
299
|
-
enumerable: false,
|
|
300
|
-
configurable: true
|
|
301
|
-
});
|
|
302
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "dismissOnBlur", {
|
|
303
|
-
get: function () {
|
|
304
|
-
if (this._dismissOnBlur === undefined) {
|
|
305
|
-
return true;
|
|
306
|
-
}
|
|
307
|
-
return this._dismissOnBlur;
|
|
308
|
-
},
|
|
309
|
-
/**
|
|
310
|
-
* Indicates whether to close the dropdown when users click away from the menu.
|
|
311
|
-
* @default true
|
|
312
|
-
*/
|
|
313
|
-
set: function (value) {
|
|
314
|
-
this._dismissOnBlur = value;
|
|
315
|
-
},
|
|
316
|
-
enumerable: false,
|
|
317
|
-
configurable: true
|
|
318
|
-
});
|
|
319
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "horizontalAlignment", {
|
|
320
|
-
get: function () {
|
|
321
|
-
return this._horizontalAlignment || 'left';
|
|
322
|
-
},
|
|
323
|
-
/**
|
|
324
|
-
* Specifies the horizontal alignment of the dropdown menu in relation to the dropdown button.
|
|
325
|
-
* @default "left"
|
|
326
|
-
*/
|
|
327
|
-
set: function (value) {
|
|
328
|
-
this._horizontalAlignment = value;
|
|
329
|
-
},
|
|
330
|
-
enumerable: false,
|
|
331
|
-
configurable: true
|
|
332
|
-
});
|
|
333
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "trigger", {
|
|
334
|
-
get: function () {
|
|
335
|
-
return this._trigger || 'click';
|
|
336
|
-
},
|
|
337
|
-
/**
|
|
338
|
-
* Specifies how users interact with the dropdown button to expose the dropdown menu.
|
|
339
|
-
* We recommend the default `click` value because the `hover` value can pose
|
|
340
|
-
* [accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) issues
|
|
341
|
-
* for users on touch devices such as phones and tablets.
|
|
342
|
-
* @deprecated We recommend against using this property. If you choose to use the deprecated
|
|
343
|
-
* `hover` value anyway, we recommend that you not use it in combination with the `title`
|
|
344
|
-
* property. (This property will be removed in the next major version release.)
|
|
345
|
-
* @default "click"
|
|
346
|
-
*/
|
|
347
|
-
set: function (value) {
|
|
348
|
-
this._trigger = value;
|
|
349
|
-
},
|
|
350
|
-
enumerable: false,
|
|
351
|
-
configurable: true
|
|
352
|
-
});
|
|
353
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "isOpen", {
|
|
354
|
-
get: function () {
|
|
355
|
-
return this._isOpen || false;
|
|
356
|
-
},
|
|
357
|
-
set: function (value) {
|
|
358
|
-
this._isOpen = value;
|
|
359
|
-
this.changeDetector.markForCheck();
|
|
360
|
-
},
|
|
361
|
-
enumerable: false,
|
|
362
|
-
configurable: true
|
|
363
|
-
});
|
|
364
|
-
Object.defineProperty(SkyDropdownComponent.prototype, "menuContainerElementRef", {
|
|
365
|
-
get: function () {
|
|
366
|
-
return this._menuContainerElementRef;
|
|
367
|
-
},
|
|
368
|
-
set: function (value) {
|
|
369
|
-
if (value) {
|
|
370
|
-
this._menuContainerElementRef = value;
|
|
371
|
-
this.destroyAffixer();
|
|
372
|
-
this.createAffixer();
|
|
373
|
-
this.changeDetector.markForCheck();
|
|
374
|
-
}
|
|
375
|
-
},
|
|
376
|
-
enumerable: false,
|
|
377
|
-
configurable: true
|
|
378
|
-
});
|
|
379
|
-
SkyDropdownComponent.prototype.ngOnInit = function () {
|
|
380
|
-
var _this = this;
|
|
381
|
-
var _a;
|
|
382
|
-
this.addEventListeners();
|
|
383
|
-
this.messageStream
|
|
384
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
385
|
-
.subscribe(function (message) {
|
|
386
|
-
_this.handleIncomingMessages(message);
|
|
387
|
-
});
|
|
388
|
-
// Load proper icons on theme change.
|
|
389
|
-
(_a = this.themeSvc) === null || _a === void 0 ? void 0 : _a.settingsChange.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
390
|
-
_this.changeDetector.markForCheck();
|
|
391
|
-
});
|
|
392
|
-
};
|
|
393
|
-
SkyDropdownComponent.prototype.ngOnDestroy = function () {
|
|
394
|
-
this.destroyAffixer();
|
|
395
|
-
this.destroyOverlay();
|
|
396
|
-
clearTimeout(this._positionTimeout);
|
|
397
|
-
this.ngUnsubscribe.next();
|
|
398
|
-
this.ngUnsubscribe.complete();
|
|
399
|
-
this.ngUnsubscribe = undefined;
|
|
400
|
-
};
|
|
401
|
-
SkyDropdownComponent.prototype.addEventListeners = function () {
|
|
402
|
-
var _this = this;
|
|
403
|
-
var buttonElement = this.triggerButton.nativeElement;
|
|
404
|
-
rxjs.fromEvent(buttonElement, 'click')
|
|
405
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
406
|
-
.subscribe(function () {
|
|
407
|
-
if (_this.isOpen) {
|
|
408
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
412
|
-
// Wait for dropdown to open, then set focus on first item.
|
|
413
|
-
setTimeout(function () {
|
|
414
|
-
_this.sendMessage(exports.SkyDropdownMessageType.FocusFirstItem);
|
|
415
|
-
});
|
|
416
|
-
}
|
|
417
|
-
});
|
|
418
|
-
rxjs.fromEvent(buttonElement, 'keydown')
|
|
419
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
420
|
-
.subscribe(function (event) {
|
|
421
|
-
var key = event.key.toLowerCase();
|
|
422
|
-
/* tslint:disable-next-line:switch-default */
|
|
423
|
-
switch (key) {
|
|
424
|
-
case 'escape':
|
|
425
|
-
/*istanbul ignore else*/
|
|
426
|
-
if (_this.isOpen) {
|
|
427
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
428
|
-
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
429
|
-
event.stopPropagation();
|
|
430
|
-
}
|
|
431
|
-
break;
|
|
432
|
-
case 'tab':
|
|
433
|
-
if (_this.isOpen && _this.dismissOnBlur) {
|
|
434
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
435
|
-
}
|
|
436
|
-
break;
|
|
437
|
-
case 'arrowup':
|
|
438
|
-
case 'up':
|
|
439
|
-
if (!_this.isOpen) {
|
|
440
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
441
|
-
_this.sendMessage(exports.SkyDropdownMessageType.FocusLastItem);
|
|
442
|
-
event.preventDefault();
|
|
443
|
-
event.stopPropagation();
|
|
444
|
-
}
|
|
445
|
-
break;
|
|
446
|
-
case 'enter':
|
|
447
|
-
case 'arrowdown':
|
|
448
|
-
case 'down':
|
|
449
|
-
case ' ': // Spacebar.
|
|
450
|
-
/*istanbul ignore else*/
|
|
451
|
-
if (!_this.isOpen) {
|
|
452
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
453
|
-
_this.sendMessage(exports.SkyDropdownMessageType.FocusFirstItem);
|
|
454
|
-
event.preventDefault();
|
|
455
|
-
event.stopPropagation();
|
|
456
|
-
}
|
|
457
|
-
break;
|
|
458
|
-
}
|
|
459
|
-
});
|
|
460
|
-
rxjs.fromEvent(buttonElement, 'mouseenter')
|
|
461
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
462
|
-
.subscribe(function () {
|
|
463
|
-
_this.isMouseEnter = true;
|
|
464
|
-
if (_this.trigger === 'hover') {
|
|
465
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
466
|
-
}
|
|
467
|
-
});
|
|
468
|
-
rxjs.fromEvent(buttonElement, 'mouseleave')
|
|
469
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
470
|
-
.subscribe(function () {
|
|
471
|
-
_this.isMouseEnter = false;
|
|
472
|
-
if (_this.trigger === 'hover') {
|
|
473
|
-
// Allow the dropdown menu to set isMouseEnter before checking if the close action
|
|
474
|
-
// should be taken.
|
|
475
|
-
setTimeout(function () {
|
|
476
|
-
if (!_this.isMouseEnter) {
|
|
477
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
478
|
-
}
|
|
479
|
-
});
|
|
480
|
-
}
|
|
481
|
-
});
|
|
482
|
-
};
|
|
483
|
-
SkyDropdownComponent.prototype.createOverlay = function () {
|
|
484
|
-
var _this = this;
|
|
485
|
-
if (this.overlay) {
|
|
486
|
-
return;
|
|
487
|
-
}
|
|
488
|
-
var overlay = this.overlayService.create({
|
|
489
|
-
enableScroll: true,
|
|
490
|
-
enablePointerEvents: true,
|
|
491
|
-
});
|
|
492
|
-
overlay.attachTemplate(this.menuContainerTemplateRef);
|
|
493
|
-
overlay.backdropClick.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
494
|
-
if (_this.dismissOnBlur) {
|
|
495
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
496
|
-
}
|
|
497
|
-
});
|
|
498
|
-
this.overlay = overlay;
|
|
499
|
-
};
|
|
500
|
-
SkyDropdownComponent.prototype.destroyAffixer = function () {
|
|
501
|
-
/*istanbul ignore else*/
|
|
502
|
-
if (this.affixer) {
|
|
503
|
-
this.affixer.destroy();
|
|
504
|
-
this.affixer = undefined;
|
|
505
|
-
}
|
|
506
|
-
};
|
|
507
|
-
SkyDropdownComponent.prototype.destroyOverlay = function () {
|
|
508
|
-
/*istanbul ignore else*/
|
|
509
|
-
if (this.overlay) {
|
|
510
|
-
this.overlayService.close(this.overlay);
|
|
511
|
-
this.overlay = undefined;
|
|
512
|
-
}
|
|
513
|
-
};
|
|
514
|
-
SkyDropdownComponent.prototype.createAffixer = function () {
|
|
515
|
-
var _this = this;
|
|
516
|
-
var affixer = this.affixService.createAffixer(this.menuContainerElementRef);
|
|
517
|
-
affixer.placementChange
|
|
518
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
519
|
-
.subscribe(function (change) {
|
|
520
|
-
_this.isVisible = change.placement !== null;
|
|
521
|
-
_this.changeDetector.markForCheck();
|
|
522
|
-
});
|
|
523
|
-
this.affixer = affixer;
|
|
524
|
-
};
|
|
525
|
-
SkyDropdownComponent.prototype.handleIncomingMessages = function (message) {
|
|
526
|
-
if (!this.disabled) {
|
|
527
|
-
/* tslint:disable-next-line:switch-default */
|
|
528
|
-
switch (message.type) {
|
|
529
|
-
case exports.SkyDropdownMessageType.Open:
|
|
530
|
-
this.isOpen = true;
|
|
531
|
-
this.positionDropdownMenu();
|
|
532
|
-
break;
|
|
533
|
-
case exports.SkyDropdownMessageType.Close:
|
|
534
|
-
this.isOpen = false;
|
|
535
|
-
this.destroyOverlay();
|
|
536
|
-
break;
|
|
537
|
-
case exports.SkyDropdownMessageType.Reposition:
|
|
538
|
-
// Only reposition the dropdown if it is already open.
|
|
539
|
-
/* istanbul ignore else */
|
|
540
|
-
if (this.isOpen && this.affixer) {
|
|
541
|
-
this.affixer.reaffix();
|
|
542
|
-
}
|
|
543
|
-
break;
|
|
544
|
-
case exports.SkyDropdownMessageType.FocusTriggerButton:
|
|
545
|
-
this.triggerButton.nativeElement.focus();
|
|
546
|
-
break;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
};
|
|
550
|
-
SkyDropdownComponent.prototype.sendMessage = function (type) {
|
|
551
|
-
this.messageStream.next({ type: type });
|
|
552
|
-
};
|
|
553
|
-
SkyDropdownComponent.prototype.positionDropdownMenu = function () {
|
|
554
|
-
var _this = this;
|
|
555
|
-
this.isVisible = false;
|
|
556
|
-
this.createOverlay();
|
|
557
|
-
this.changeDetector.markForCheck();
|
|
558
|
-
// Explicitly declare the `setTimeout` from the `window` object in order to use the DOM typings
|
|
559
|
-
// during a unit test (instead of confusing this with Node's `setTimeout`).
|
|
560
|
-
this._positionTimeout = window.setTimeout(function () {
|
|
561
|
-
_this.affixer.affixTo(_this.triggerButton.nativeElement, {
|
|
562
|
-
autoFitContext: i1.SkyAffixAutoFitContext.Viewport,
|
|
563
|
-
enableAutoFit: true,
|
|
564
|
-
horizontalAlignment: parseAffixHorizontalAlignment$1(_this.horizontalAlignment),
|
|
565
|
-
isSticky: true,
|
|
566
|
-
placement: 'below',
|
|
567
|
-
});
|
|
568
|
-
_this.isVisible = true;
|
|
569
|
-
_this.changeDetector.markForCheck();
|
|
570
|
-
});
|
|
571
|
-
};
|
|
572
|
-
return SkyDropdownComponent;
|
|
573
|
-
}());
|
|
574
|
-
SkyDropdownComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.SkyAffixService }, { token: i1__namespace.SkyOverlayService }, { token: i2__namespace.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
575
|
-
SkyDropdownComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyDropdownComponent, selector: "sky-dropdown", inputs: { buttonStyle: "buttonStyle", buttonType: "buttonType", disabled: "disabled", dismissOnBlur: "dismissOnBlur", label: "label", horizontalAlignment: "horizontalAlignment", messageStream: "messageStream", title: "title", trigger: "trigger" }, viewQueries: [{ propertyName: "menuContainerElementRef", first: true, predicate: ["menuContainerElementRef"], descendants: true, read: i0.ElementRef }, { propertyName: "menuContainerTemplateRef", first: true, predicate: ["menuContainerTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }, { propertyName: "triggerButton", first: true, predicate: ["triggerButton"], descendants: true, read: i0.ElementRef, static: true }], ngImport: i0__namespace, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"], components: [{ type: i3__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i4__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2__namespace.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i4__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i5__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
576
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownComponent, decorators: [{
|
|
577
|
-
type: i0.Component,
|
|
578
|
-
args: [{
|
|
579
|
-
selector: 'sky-dropdown',
|
|
580
|
-
template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n",
|
|
581
|
-
styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"],
|
|
582
|
-
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
583
|
-
}]
|
|
584
|
-
}], ctorParameters: function () {
|
|
585
|
-
return [{ type: i0__namespace.ChangeDetectorRef }, { type: i1__namespace.SkyAffixService }, { type: i1__namespace.SkyOverlayService }, { type: i2__namespace.SkyThemeService, decorators: [{
|
|
586
|
-
type: i0.Optional
|
|
587
|
-
}] }];
|
|
588
|
-
}, propDecorators: { buttonStyle: [{
|
|
589
|
-
type: i0.Input
|
|
590
|
-
}], buttonType: [{
|
|
591
|
-
type: i0.Input
|
|
592
|
-
}], disabled: [{
|
|
593
|
-
type: i0.Input
|
|
594
|
-
}], dismissOnBlur: [{
|
|
595
|
-
type: i0.Input
|
|
596
|
-
}], label: [{
|
|
597
|
-
type: i0.Input
|
|
598
|
-
}], horizontalAlignment: [{
|
|
599
|
-
type: i0.Input
|
|
600
|
-
}], messageStream: [{
|
|
601
|
-
type: i0.Input
|
|
602
|
-
}], title: [{
|
|
603
|
-
type: i0.Input
|
|
604
|
-
}], trigger: [{
|
|
605
|
-
type: i0.Input
|
|
606
|
-
}], menuContainerElementRef: [{
|
|
607
|
-
type: i0.ViewChild,
|
|
608
|
-
args: ['menuContainerElementRef', {
|
|
609
|
-
read: i0.ElementRef,
|
|
610
|
-
}]
|
|
611
|
-
}], menuContainerTemplateRef: [{
|
|
612
|
-
type: i0.ViewChild,
|
|
613
|
-
args: ['menuContainerTemplateRef', {
|
|
614
|
-
read: i0.TemplateRef,
|
|
615
|
-
static: true,
|
|
616
|
-
}]
|
|
617
|
-
}], triggerButton: [{
|
|
618
|
-
type: i0.ViewChild,
|
|
619
|
-
args: ['triggerButton', {
|
|
620
|
-
read: i0.ElementRef,
|
|
621
|
-
static: true,
|
|
622
|
-
}]
|
|
623
|
-
}] } });
|
|
624
|
-
|
|
625
|
-
var nextId = 0;
|
|
626
|
-
/**
|
|
627
|
-
* Creates a menu that contains dropdown menu items.
|
|
628
|
-
*
|
|
629
|
-
*/
|
|
630
|
-
var SkyDropdownMenuComponent = /** @class */ (function () {
|
|
631
|
-
function SkyDropdownMenuComponent(changeDetector, elementRef, dropdownComponent) {
|
|
632
|
-
this.changeDetector = changeDetector;
|
|
633
|
-
this.elementRef = elementRef;
|
|
634
|
-
this.dropdownComponent = dropdownComponent;
|
|
635
|
-
/**
|
|
636
|
-
* Fires when the dropdown menu's active index or selected item changes. This event provides an
|
|
637
|
-
* observable to emit changes, and the response is of
|
|
638
|
-
* the SkyDropdownMenuChange type.
|
|
639
|
-
*/
|
|
640
|
-
this.menuChanges = new i0.EventEmitter();
|
|
641
|
-
this.dropdownMenuId = "sky-dropdown-menu-" + ++nextId;
|
|
642
|
-
this.ngUnsubscribe = new rxjs.Subject();
|
|
643
|
-
this._menuIndex = 0;
|
|
644
|
-
}
|
|
645
|
-
Object.defineProperty(SkyDropdownMenuComponent.prototype, "ariaRole", {
|
|
646
|
-
get: function () {
|
|
647
|
-
return this._ariaRole || 'menu';
|
|
648
|
-
},
|
|
649
|
-
/**
|
|
650
|
-
* Specifies an ARIA role for the dropdown menu
|
|
651
|
-
* [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
|
|
652
|
-
* by indicating how the dropdown menu functions and what it controls. The dropdown button
|
|
653
|
-
* inherits this value to set its `aria-haspopup` property. For information
|
|
654
|
-
* about how an ARIA role indicates what an item represents on a web page, see the
|
|
655
|
-
* [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).
|
|
656
|
-
* @default "menu"
|
|
657
|
-
*/
|
|
658
|
-
set: function (value) {
|
|
659
|
-
this._ariaRole = value;
|
|
660
|
-
},
|
|
661
|
-
enumerable: false,
|
|
662
|
-
configurable: true
|
|
663
|
-
});
|
|
664
|
-
Object.defineProperty(SkyDropdownMenuComponent.prototype, "useNativeFocus", {
|
|
665
|
-
get: function () {
|
|
666
|
-
if (this._useNativeFocus === undefined) {
|
|
667
|
-
return true;
|
|
668
|
-
}
|
|
669
|
-
return this._useNativeFocus;
|
|
670
|
-
},
|
|
671
|
-
/**
|
|
672
|
-
* Indicates whether to use the browser's native focus function when users navigate through menu
|
|
673
|
-
* items with the keyboard. To disable the native focus function, set this property to `false`.
|
|
674
|
-
* For example, to let users interact with the dropdown menu but keep the keyboard focus on a
|
|
675
|
-
* different element, set this property to `false`.
|
|
676
|
-
* @default true
|
|
677
|
-
*/
|
|
678
|
-
set: function (value) {
|
|
679
|
-
this._useNativeFocus = value;
|
|
680
|
-
},
|
|
681
|
-
enumerable: false,
|
|
682
|
-
configurable: true
|
|
683
|
-
});
|
|
684
|
-
Object.defineProperty(SkyDropdownMenuComponent.prototype, "hasFocusableItems", {
|
|
685
|
-
get: function () {
|
|
686
|
-
var found = this.menuItems.find(function (item) { return item.isFocusable(); });
|
|
687
|
-
return found !== undefined;
|
|
688
|
-
},
|
|
689
|
-
enumerable: false,
|
|
690
|
-
configurable: true
|
|
691
|
-
});
|
|
692
|
-
Object.defineProperty(SkyDropdownMenuComponent.prototype, "menuIndex", {
|
|
693
|
-
get: function () {
|
|
694
|
-
return this._menuIndex;
|
|
695
|
-
},
|
|
696
|
-
set: function (value) {
|
|
697
|
-
if (value < 0) {
|
|
698
|
-
value = this.menuItems.length - 1;
|
|
699
|
-
}
|
|
700
|
-
if (value >= this.menuItems.length) {
|
|
701
|
-
value = 0;
|
|
702
|
-
}
|
|
703
|
-
this._menuIndex = value;
|
|
704
|
-
},
|
|
705
|
-
enumerable: false,
|
|
706
|
-
configurable: true
|
|
707
|
-
});
|
|
708
|
-
SkyDropdownMenuComponent.prototype.ngAfterContentInit = function () {
|
|
709
|
-
var _this = this;
|
|
710
|
-
/* istanbul ignore else */
|
|
711
|
-
if (this.dropdownComponent) {
|
|
712
|
-
this.dropdownComponent.menuId = this.dropdownMenuId;
|
|
713
|
-
this.dropdownComponent.menuAriaRole = this.ariaRole;
|
|
714
|
-
this.dropdownComponent.messageStream
|
|
715
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
716
|
-
.subscribe(function (message) {
|
|
717
|
-
/* tslint:disable-next-line:switch-default */
|
|
718
|
-
switch (message.type) {
|
|
719
|
-
case exports.SkyDropdownMessageType.Open:
|
|
720
|
-
case exports.SkyDropdownMessageType.Close:
|
|
721
|
-
_this.reset();
|
|
722
|
-
break;
|
|
723
|
-
case exports.SkyDropdownMessageType.FocusFirstItem:
|
|
724
|
-
_this.focusFirstItem();
|
|
725
|
-
break;
|
|
726
|
-
case exports.SkyDropdownMessageType.FocusNextItem:
|
|
727
|
-
_this.focusNextItem();
|
|
728
|
-
break;
|
|
729
|
-
case exports.SkyDropdownMessageType.FocusPreviousItem:
|
|
730
|
-
_this.focusPreviousItem();
|
|
731
|
-
break;
|
|
732
|
-
case exports.SkyDropdownMessageType.FocusLastItem:
|
|
733
|
-
_this.focusLastItem();
|
|
734
|
-
break;
|
|
735
|
-
}
|
|
736
|
-
});
|
|
737
|
-
this.menuChanges
|
|
738
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
739
|
-
.subscribe(function (change) {
|
|
740
|
-
// Close the dropdown when a menu item is selected.
|
|
741
|
-
if (change.selectedItem) {
|
|
742
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
743
|
-
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
744
|
-
}
|
|
745
|
-
if (change.items) {
|
|
746
|
-
// Update the popover style and position whenever the number of items changes.
|
|
747
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Reposition);
|
|
748
|
-
}
|
|
749
|
-
});
|
|
750
|
-
}
|
|
751
|
-
// Reset dropdown whenever the menu items change.
|
|
752
|
-
this.menuItems.changes
|
|
753
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
754
|
-
.subscribe(function (items) {
|
|
755
|
-
_this.reset();
|
|
756
|
-
_this.menuChanges.emit({
|
|
757
|
-
items: items.toArray(),
|
|
758
|
-
});
|
|
759
|
-
});
|
|
760
|
-
this.addEventListeners();
|
|
761
|
-
};
|
|
762
|
-
SkyDropdownMenuComponent.prototype.ngOnDestroy = function () {
|
|
763
|
-
this.ngUnsubscribe.next();
|
|
764
|
-
this.ngUnsubscribe.complete();
|
|
765
|
-
this.ngUnsubscribe = undefined;
|
|
766
|
-
};
|
|
767
|
-
SkyDropdownMenuComponent.prototype.focusFirstItem = function () {
|
|
768
|
-
if (!this.hasFocusableItems) {
|
|
769
|
-
return;
|
|
770
|
-
}
|
|
771
|
-
this.menuIndex = 0;
|
|
772
|
-
var firstItem = this.getItemByIndex(this.menuIndex);
|
|
773
|
-
if (firstItem && firstItem.isFocusable()) {
|
|
774
|
-
this.focusItem(firstItem);
|
|
775
|
-
}
|
|
776
|
-
else {
|
|
777
|
-
this.focusNextItem();
|
|
778
|
-
}
|
|
779
|
-
};
|
|
780
|
-
SkyDropdownMenuComponent.prototype.focusLastItem = function () {
|
|
781
|
-
if (!this.hasFocusableItems) {
|
|
782
|
-
return;
|
|
783
|
-
}
|
|
784
|
-
this.menuIndex = this.menuItems.length - 1;
|
|
785
|
-
var lastItem = this.getItemByIndex(this.menuIndex);
|
|
786
|
-
if (lastItem && lastItem.isFocusable()) {
|
|
787
|
-
this.focusItem(lastItem);
|
|
788
|
-
}
|
|
789
|
-
else {
|
|
790
|
-
this.focusPreviousItem();
|
|
791
|
-
}
|
|
792
|
-
};
|
|
793
|
-
SkyDropdownMenuComponent.prototype.focusPreviousItem = function () {
|
|
794
|
-
if (!this.hasFocusableItems) {
|
|
795
|
-
return;
|
|
796
|
-
}
|
|
797
|
-
this.menuIndex--;
|
|
798
|
-
var previousItem = this.getItemByIndex(this.menuIndex);
|
|
799
|
-
if (previousItem && previousItem.isFocusable()) {
|
|
800
|
-
this.focusItem(previousItem);
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
803
|
-
this.focusPreviousItem();
|
|
804
|
-
}
|
|
805
|
-
};
|
|
806
|
-
SkyDropdownMenuComponent.prototype.focusNextItem = function () {
|
|
807
|
-
if (!this.hasFocusableItems) {
|
|
808
|
-
return;
|
|
809
|
-
}
|
|
810
|
-
this.menuIndex++;
|
|
811
|
-
var nextItem = this.getItemByIndex(this.menuIndex);
|
|
812
|
-
if (nextItem && nextItem.isFocusable()) {
|
|
813
|
-
this.focusItem(nextItem);
|
|
814
|
-
}
|
|
815
|
-
else {
|
|
816
|
-
this.focusNextItem();
|
|
817
|
-
}
|
|
818
|
-
};
|
|
819
|
-
SkyDropdownMenuComponent.prototype.reset = function () {
|
|
820
|
-
this._menuIndex = -1;
|
|
821
|
-
this.resetItemsActiveState();
|
|
822
|
-
this.changeDetector.markForCheck();
|
|
823
|
-
};
|
|
824
|
-
SkyDropdownMenuComponent.prototype.resetItemsActiveState = function () {
|
|
825
|
-
this.menuItems.forEach(function (item) {
|
|
826
|
-
item.resetState();
|
|
827
|
-
});
|
|
828
|
-
};
|
|
829
|
-
SkyDropdownMenuComponent.prototype.focusItem = function (item) {
|
|
830
|
-
this.resetItemsActiveState();
|
|
831
|
-
item.focusElement(this.useNativeFocus);
|
|
832
|
-
this.menuChanges.emit({
|
|
833
|
-
activeIndex: this.menuIndex,
|
|
834
|
-
});
|
|
835
|
-
};
|
|
836
|
-
SkyDropdownMenuComponent.prototype.getItemByIndex = function (index) {
|
|
837
|
-
return this.menuItems.find(function (item, i) {
|
|
838
|
-
return i === index;
|
|
839
|
-
});
|
|
840
|
-
};
|
|
841
|
-
SkyDropdownMenuComponent.prototype.selectItemByEventTarget = function (target) {
|
|
842
|
-
var _this = this;
|
|
843
|
-
var selectedItem = this.menuItems.find(function (item, i) {
|
|
844
|
-
var found = item.elementRef.nativeElement.contains(target);
|
|
845
|
-
if (found) {
|
|
846
|
-
_this.menuIndex = i;
|
|
847
|
-
_this.menuChanges.next({
|
|
848
|
-
activeIndex: _this.menuIndex,
|
|
849
|
-
});
|
|
850
|
-
}
|
|
851
|
-
return found;
|
|
852
|
-
});
|
|
853
|
-
/* istanbul ignore else */
|
|
854
|
-
if (selectedItem) {
|
|
855
|
-
this.menuChanges.next({
|
|
856
|
-
selectedItem: selectedItem,
|
|
857
|
-
});
|
|
858
|
-
}
|
|
859
|
-
};
|
|
860
|
-
SkyDropdownMenuComponent.prototype.sendMessage = function (type) {
|
|
861
|
-
this.dropdownComponent.messageStream.next({ type: type });
|
|
862
|
-
};
|
|
863
|
-
SkyDropdownMenuComponent.prototype.addEventListeners = function () {
|
|
864
|
-
var _this = this;
|
|
865
|
-
var dropdownMenuElement = this.elementRef.nativeElement;
|
|
866
|
-
rxjs.fromEvent(dropdownMenuElement, 'click')
|
|
867
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
868
|
-
.subscribe(function (event) {
|
|
869
|
-
_this.selectItemByEventTarget(event.target);
|
|
870
|
-
});
|
|
871
|
-
rxjs.fromEvent(dropdownMenuElement, 'keydown')
|
|
872
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
873
|
-
.subscribe(function (event) {
|
|
874
|
-
var key = event.key.toLowerCase();
|
|
875
|
-
/*tslint:disable-next-line:switch-default*/
|
|
876
|
-
switch (key) {
|
|
877
|
-
case 'escape':
|
|
878
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
879
|
-
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
880
|
-
event.stopPropagation();
|
|
881
|
-
event.preventDefault();
|
|
882
|
-
break;
|
|
883
|
-
case 'arrowdown':
|
|
884
|
-
case 'down':
|
|
885
|
-
_this.focusNextItem();
|
|
886
|
-
event.preventDefault();
|
|
887
|
-
break;
|
|
888
|
-
case 'arrowup':
|
|
889
|
-
case 'up':
|
|
890
|
-
_this.focusPreviousItem();
|
|
891
|
-
event.preventDefault();
|
|
892
|
-
break;
|
|
893
|
-
case 'tab':
|
|
894
|
-
if (_this.dropdownComponent.dismissOnBlur) {
|
|
895
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
896
|
-
}
|
|
897
|
-
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
898
|
-
break;
|
|
899
|
-
}
|
|
900
|
-
});
|
|
901
|
-
rxjs.fromEvent(dropdownMenuElement, 'mouseenter')
|
|
902
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
903
|
-
.subscribe(function () {
|
|
904
|
-
_this.dropdownComponent.isMouseEnter = true;
|
|
905
|
-
});
|
|
906
|
-
rxjs.fromEvent(dropdownMenuElement, 'mouseleave')
|
|
907
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
908
|
-
.subscribe(function () {
|
|
909
|
-
_this.dropdownComponent.isMouseEnter = false;
|
|
910
|
-
// Allow the dropdown component to set isMouseEnter before checking if the close action
|
|
911
|
-
// should be taken.
|
|
912
|
-
setTimeout(function () {
|
|
913
|
-
if (_this.dropdownComponent.trigger === 'hover' &&
|
|
914
|
-
_this.dropdownComponent.isMouseEnter === false) {
|
|
915
|
-
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
916
|
-
}
|
|
917
|
-
});
|
|
918
|
-
});
|
|
919
|
-
};
|
|
920
|
-
return SkyDropdownMenuComponent;
|
|
921
|
-
}());
|
|
922
|
-
SkyDropdownMenuComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownMenuComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ElementRef }, { token: SkyDropdownComponent, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
923
|
-
SkyDropdownMenuComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyDropdownMenuComponent, selector: "sky-dropdown-menu", inputs: { ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", useNativeFocus: "useNativeFocus" }, outputs: { menuChanges: "menuChanges" }, queries: [{ propertyName: "menuItems", predicate: SkyDropdownItemComponent, descendants: true }], ngImport: i0__namespace, template: "<div\n class=\"sky-dropdown-menu sky-shadow sky-elevation-4\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [id]=\"dropdownMenuId\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-menu{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px);display:flex;flex-direction:column;background-color:#fff}.sky-dropdown-menu button{overflow:hidden;text-overflow:ellipsis}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-menu{background-color:#252a2e;color:#fff}\n"], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
|
|
924
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownMenuComponent, decorators: [{
|
|
925
|
-
type: i0.Component,
|
|
926
|
-
args: [{
|
|
927
|
-
selector: 'sky-dropdown-menu',
|
|
928
|
-
template: "<div\n class=\"sky-dropdown-menu sky-shadow sky-elevation-4\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [id]=\"dropdownMenuId\"\n>\n <ng-content> </ng-content>\n</div>\n",
|
|
929
|
-
styles: [".sky-dropdown-menu{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px);display:flex;flex-direction:column;background-color:#fff}.sky-dropdown-menu button{overflow:hidden;text-overflow:ellipsis}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-menu{background-color:#252a2e;color:#fff}\n"],
|
|
930
|
-
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
931
|
-
encapsulation: i0.ViewEncapsulation.None,
|
|
932
|
-
}]
|
|
933
|
-
}], ctorParameters: function () {
|
|
934
|
-
return [{ type: i0__namespace.ChangeDetectorRef }, { type: i0__namespace.ElementRef }, { type: SkyDropdownComponent, decorators: [{
|
|
935
|
-
type: i0.Optional
|
|
936
|
-
}] }];
|
|
937
|
-
}, propDecorators: { ariaLabelledBy: [{
|
|
938
|
-
type: i0.Input
|
|
939
|
-
}], ariaRole: [{
|
|
940
|
-
type: i0.Input
|
|
941
|
-
}], useNativeFocus: [{
|
|
942
|
-
type: i0.Input
|
|
943
|
-
}], menuChanges: [{
|
|
944
|
-
type: i0.Output
|
|
945
|
-
}], menuItems: [{
|
|
946
|
-
type: i0.ContentChildren,
|
|
947
|
-
args: [SkyDropdownItemComponent, { descendants: true }]
|
|
948
|
-
}] } });
|
|
221
|
+
/*! *****************************************************************************
|
|
222
|
+
Copyright (c) Microsoft Corporation.
|
|
949
223
|
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
}
|
|
953
|
-
return SkyDropdownModule;
|
|
954
|
-
}());
|
|
955
|
-
SkyDropdownModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
|
956
|
-
SkyDropdownModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, declarations: [SkyDropdownButtonComponent,
|
|
957
|
-
SkyDropdownComponent,
|
|
958
|
-
SkyDropdownItemComponent,
|
|
959
|
-
SkyDropdownMenuComponent], imports: [i4.CommonModule,
|
|
960
|
-
i1.SkyAffixModule,
|
|
961
|
-
i3.SkyIconModule,
|
|
962
|
-
i1.SkyOverlayModule,
|
|
963
|
-
SkyPopoversResourcesModule,
|
|
964
|
-
i2.SkyThemeModule], exports: [SkyDropdownButtonComponent,
|
|
965
|
-
SkyDropdownComponent,
|
|
966
|
-
SkyDropdownItemComponent,
|
|
967
|
-
SkyDropdownMenuComponent] });
|
|
968
|
-
SkyDropdownModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, imports: [[
|
|
969
|
-
i4.CommonModule,
|
|
970
|
-
i1.SkyAffixModule,
|
|
971
|
-
i3.SkyIconModule,
|
|
972
|
-
i1.SkyOverlayModule,
|
|
973
|
-
SkyPopoversResourcesModule,
|
|
974
|
-
i2.SkyThemeModule,
|
|
975
|
-
]] });
|
|
976
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, decorators: [{
|
|
977
|
-
type: i0.NgModule,
|
|
978
|
-
args: [{
|
|
979
|
-
declarations: [
|
|
980
|
-
SkyDropdownButtonComponent,
|
|
981
|
-
SkyDropdownComponent,
|
|
982
|
-
SkyDropdownItemComponent,
|
|
983
|
-
SkyDropdownMenuComponent,
|
|
984
|
-
],
|
|
985
|
-
imports: [
|
|
986
|
-
i4.CommonModule,
|
|
987
|
-
i1.SkyAffixModule,
|
|
988
|
-
i3.SkyIconModule,
|
|
989
|
-
i1.SkyOverlayModule,
|
|
990
|
-
SkyPopoversResourcesModule,
|
|
991
|
-
i2.SkyThemeModule,
|
|
992
|
-
],
|
|
993
|
-
exports: [
|
|
994
|
-
SkyDropdownButtonComponent,
|
|
995
|
-
SkyDropdownComponent,
|
|
996
|
-
SkyDropdownItemComponent,
|
|
997
|
-
SkyDropdownMenuComponent,
|
|
998
|
-
],
|
|
999
|
-
}]
|
|
1000
|
-
}] });
|
|
224
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
225
|
+
purpose with or without fee is hereby granted.
|
|
1001
226
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
var
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
227
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
228
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
229
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
230
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
231
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
232
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
233
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
234
|
+
***************************************************************************** */
|
|
235
|
+
/* global Reflect, Promise */
|
|
236
|
+
var extendStatics = function (d, b) {
|
|
237
|
+
extendStatics = Object.setPrototypeOf ||
|
|
238
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
239
|
+
function (d, b) { for (var p in b)
|
|
240
|
+
if (Object.prototype.hasOwnProperty.call(b, p))
|
|
241
|
+
d[p] = b[p]; };
|
|
242
|
+
return extendStatics(d, b);
|
|
243
|
+
};
|
|
244
|
+
function __extends(d, b) {
|
|
245
|
+
if (typeof b !== "function" && b !== null)
|
|
246
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
247
|
+
extendStatics(d, b);
|
|
248
|
+
function __() { this.constructor = d; }
|
|
249
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
250
|
+
}
|
|
251
|
+
var __assign = function () {
|
|
252
|
+
__assign = Object.assign || function __assign(t) {
|
|
253
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
254
|
+
s = arguments[i];
|
|
255
|
+
for (var p in s)
|
|
256
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
257
|
+
t[p] = s[p];
|
|
258
|
+
}
|
|
259
|
+
return t;
|
|
260
|
+
};
|
|
261
|
+
return __assign.apply(this, arguments);
|
|
262
|
+
};
|
|
263
|
+
function __rest(s, e) {
|
|
264
|
+
var t = {};
|
|
265
|
+
for (var p in s)
|
|
266
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
267
|
+
t[p] = s[p];
|
|
268
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
269
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
270
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
271
|
+
t[p[i]] = s[p[i]];
|
|
272
|
+
}
|
|
273
|
+
return t;
|
|
274
|
+
}
|
|
275
|
+
function __decorate(decorators, target, key, desc) {
|
|
276
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
277
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
278
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
279
|
+
else
|
|
280
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
281
|
+
if (d = decorators[i])
|
|
282
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
283
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
284
|
+
}
|
|
285
|
+
function __param(paramIndex, decorator) {
|
|
286
|
+
return function (target, key) { decorator(target, key, paramIndex); };
|
|
287
|
+
}
|
|
288
|
+
function __metadata(metadataKey, metadataValue) {
|
|
289
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
290
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
291
|
+
}
|
|
292
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
293
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
294
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
295
|
+
function fulfilled(value) { try {
|
|
296
|
+
step(generator.next(value));
|
|
297
|
+
}
|
|
298
|
+
catch (e) {
|
|
299
|
+
reject(e);
|
|
300
|
+
} }
|
|
301
|
+
function rejected(value) { try {
|
|
302
|
+
step(generator["throw"](value));
|
|
303
|
+
}
|
|
304
|
+
catch (e) {
|
|
305
|
+
reject(e);
|
|
306
|
+
} }
|
|
307
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
308
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
function __generator(thisArg, body) {
|
|
312
|
+
var _ = { label: 0, sent: function () { if (t[0] & 1)
|
|
313
|
+
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
314
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
|
|
315
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
316
|
+
function step(op) {
|
|
317
|
+
if (f)
|
|
318
|
+
throw new TypeError("Generator is already executing.");
|
|
319
|
+
while (_)
|
|
320
|
+
try {
|
|
321
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
|
|
322
|
+
return t;
|
|
323
|
+
if (y = 0, t)
|
|
324
|
+
op = [op[0] & 2, t.value];
|
|
325
|
+
switch (op[0]) {
|
|
326
|
+
case 0:
|
|
327
|
+
case 1:
|
|
328
|
+
t = op;
|
|
329
|
+
break;
|
|
330
|
+
case 4:
|
|
331
|
+
_.label++;
|
|
332
|
+
return { value: op[1], done: false };
|
|
333
|
+
case 5:
|
|
334
|
+
_.label++;
|
|
335
|
+
y = op[1];
|
|
336
|
+
op = [0];
|
|
337
|
+
continue;
|
|
338
|
+
case 7:
|
|
339
|
+
op = _.ops.pop();
|
|
340
|
+
_.trys.pop();
|
|
341
|
+
continue;
|
|
342
|
+
default:
|
|
343
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
344
|
+
_ = 0;
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
|
|
348
|
+
_.label = op[1];
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
352
|
+
_.label = t[1];
|
|
353
|
+
t = op;
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
if (t && _.label < t[2]) {
|
|
357
|
+
_.label = t[2];
|
|
358
|
+
_.ops.push(op);
|
|
359
|
+
break;
|
|
360
|
+
}
|
|
361
|
+
if (t[2])
|
|
362
|
+
_.ops.pop();
|
|
363
|
+
_.trys.pop();
|
|
364
|
+
continue;
|
|
1038
365
|
}
|
|
366
|
+
op = body.call(thisArg, _);
|
|
1039
367
|
}
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
// Make sure the arrow never detaches from the popover.
|
|
1044
|
-
if (top - pixelTolerance < popoverRect.top) {
|
|
1045
|
-
top = popoverRect.top + pixelTolerance;
|
|
368
|
+
catch (e) {
|
|
369
|
+
op = [6, e];
|
|
370
|
+
y = 0;
|
|
1046
371
|
}
|
|
1047
|
-
|
|
1048
|
-
|
|
372
|
+
finally {
|
|
373
|
+
f = t = 0;
|
|
1049
374
|
}
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
375
|
+
if (op[0] & 5)
|
|
376
|
+
throw op[1];
|
|
377
|
+
return { value: op[0] ? op[1] : void 0, done: true };
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
var __createBinding = Object.create ? (function (o, m, k, k2) {
|
|
381
|
+
if (k2 === undefined)
|
|
382
|
+
k2 = k;
|
|
383
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
|
|
384
|
+
}) : (function (o, m, k, k2) {
|
|
385
|
+
if (k2 === undefined)
|
|
386
|
+
k2 = k;
|
|
387
|
+
o[k2] = m[k];
|
|
388
|
+
});
|
|
389
|
+
function __exportStar(m, o) {
|
|
390
|
+
for (var p in m)
|
|
391
|
+
if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
|
|
392
|
+
__createBinding(o, m, p);
|
|
393
|
+
}
|
|
394
|
+
function __values(o) {
|
|
395
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
396
|
+
if (m)
|
|
397
|
+
return m.call(o);
|
|
398
|
+
if (o && typeof o.length === "number")
|
|
399
|
+
return {
|
|
400
|
+
next: function () {
|
|
401
|
+
if (o && i >= o.length)
|
|
402
|
+
o = void 0;
|
|
403
|
+
return { value: o && o[i++], done: !o };
|
|
1057
404
|
}
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
405
|
+
};
|
|
406
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
407
|
+
}
|
|
408
|
+
function __read(o, n) {
|
|
409
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
410
|
+
if (!m)
|
|
411
|
+
return o;
|
|
412
|
+
var i = m.call(o), r, ar = [], e;
|
|
413
|
+
try {
|
|
414
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
|
|
415
|
+
ar.push(r.value);
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
e = { error: error };
|
|
419
|
+
}
|
|
420
|
+
finally {
|
|
421
|
+
try {
|
|
422
|
+
if (r && !r.done && (m = i["return"]))
|
|
423
|
+
m.call(i);
|
|
424
|
+
}
|
|
425
|
+
finally {
|
|
426
|
+
if (e)
|
|
427
|
+
throw e.error;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return ar;
|
|
431
|
+
}
|
|
432
|
+
/** @deprecated */
|
|
433
|
+
function __spread() {
|
|
434
|
+
for (var ar = [], i = 0; i < arguments.length; i++)
|
|
435
|
+
ar = ar.concat(__read(arguments[i]));
|
|
436
|
+
return ar;
|
|
437
|
+
}
|
|
438
|
+
/** @deprecated */
|
|
439
|
+
function __spreadArrays() {
|
|
440
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
|
|
441
|
+
s += arguments[i].length;
|
|
442
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
443
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
444
|
+
r[k] = a[j];
|
|
445
|
+
return r;
|
|
446
|
+
}
|
|
447
|
+
function __spreadArray(to, from, pack) {
|
|
448
|
+
if (pack || arguments.length === 2)
|
|
449
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
450
|
+
if (ar || !(i in from)) {
|
|
451
|
+
if (!ar)
|
|
452
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
453
|
+
ar[i] = from[i];
|
|
1065
454
|
}
|
|
1066
455
|
}
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
animations.state('void', animations.style({
|
|
1082
|
-
opacity: 0,
|
|
1083
|
-
})),
|
|
1084
|
-
animations.state('open', animations.style({
|
|
1085
|
-
opacity: 1,
|
|
1086
|
-
})),
|
|
1087
|
-
animations.state('closed', animations.style({
|
|
1088
|
-
opacity: 0,
|
|
1089
|
-
})),
|
|
1090
|
-
animations.transition('void => *', [animations.animate('250ms')]),
|
|
1091
|
-
animations.transition('open => closed', [animations.animate('150ms')]),
|
|
1092
|
-
animations.transition('closed => open', [animations.animate('150ms')]),
|
|
1093
|
-
]);
|
|
1094
|
-
|
|
1095
|
-
function parseAffixPlacement(placement) {
|
|
1096
|
-
switch (placement) {
|
|
1097
|
-
case 'above':
|
|
1098
|
-
return 'above';
|
|
1099
|
-
case 'below':
|
|
1100
|
-
return 'below';
|
|
1101
|
-
case 'right':
|
|
1102
|
-
return 'right';
|
|
1103
|
-
case 'left':
|
|
1104
|
-
return 'left';
|
|
1105
|
-
/* istanbul ignore next */
|
|
1106
|
-
default:
|
|
1107
|
-
throw "SkyAffixPlacement does not have a matching value for '" + placement + "'!";
|
|
456
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
457
|
+
}
|
|
458
|
+
function __await(v) {
|
|
459
|
+
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
|
460
|
+
}
|
|
461
|
+
function __asyncGenerator(thisArg, _arguments, generator) {
|
|
462
|
+
if (!Symbol.asyncIterator)
|
|
463
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
464
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
465
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
466
|
+
function verb(n) { if (g[n])
|
|
467
|
+
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
468
|
+
function resume(n, v) { try {
|
|
469
|
+
step(g[n](v));
|
|
1108
470
|
}
|
|
471
|
+
catch (e) {
|
|
472
|
+
settle(q[0][3], e);
|
|
473
|
+
} }
|
|
474
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
475
|
+
function fulfill(value) { resume("next", value); }
|
|
476
|
+
function reject(value) { resume("throw", value); }
|
|
477
|
+
function settle(f, v) { if (f(v), q.shift(), q.length)
|
|
478
|
+
resume(q[0][0], q[0][1]); }
|
|
1109
479
|
}
|
|
1110
|
-
function
|
|
480
|
+
function __asyncDelegator(o) {
|
|
481
|
+
var i, p;
|
|
482
|
+
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
483
|
+
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
|
484
|
+
}
|
|
485
|
+
function __asyncValues(o) {
|
|
486
|
+
if (!Symbol.asyncIterator)
|
|
487
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
488
|
+
var m = o[Symbol.asyncIterator], i;
|
|
489
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
490
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
491
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
|
|
492
|
+
}
|
|
493
|
+
function __makeTemplateObject(cooked, raw) {
|
|
494
|
+
if (Object.defineProperty) {
|
|
495
|
+
Object.defineProperty(cooked, "raw", { value: raw });
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
cooked.raw = raw;
|
|
499
|
+
}
|
|
500
|
+
return cooked;
|
|
501
|
+
}
|
|
502
|
+
;
|
|
503
|
+
var __setModuleDefault = Object.create ? (function (o, v) {
|
|
504
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
505
|
+
}) : function (o, v) {
|
|
506
|
+
o["default"] = v;
|
|
507
|
+
};
|
|
508
|
+
function __importStar(mod) {
|
|
509
|
+
if (mod && mod.__esModule)
|
|
510
|
+
return mod;
|
|
511
|
+
var result = {};
|
|
512
|
+
if (mod != null)
|
|
513
|
+
for (var k in mod)
|
|
514
|
+
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
|
515
|
+
__createBinding(result, mod, k);
|
|
516
|
+
__setModuleDefault(result, mod);
|
|
517
|
+
return result;
|
|
518
|
+
}
|
|
519
|
+
function __importDefault(mod) {
|
|
520
|
+
return (mod && mod.__esModule) ? mod : { default: mod };
|
|
521
|
+
}
|
|
522
|
+
function __classPrivateFieldGet(receiver, state, kind, f) {
|
|
523
|
+
if (kind === "a" && !f)
|
|
524
|
+
throw new TypeError("Private accessor was defined without a getter");
|
|
525
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
526
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
527
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
528
|
+
}
|
|
529
|
+
function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
|
530
|
+
if (kind === "m")
|
|
531
|
+
throw new TypeError("Private method is not writable");
|
|
532
|
+
if (kind === "a" && !f)
|
|
533
|
+
throw new TypeError("Private accessor was defined without a setter");
|
|
534
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
535
|
+
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
536
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
function parseAffixHorizontalAlignment$1(alignment) {
|
|
1111
540
|
switch (alignment) {
|
|
1112
541
|
case 'center':
|
|
1113
542
|
return 'center';
|
|
@@ -1121,813 +550,1380 @@
|
|
|
1121
550
|
}
|
|
1122
551
|
}
|
|
1123
552
|
|
|
553
|
+
var _SkyDropdownComponent_positionTimeout;
|
|
1124
554
|
/**
|
|
1125
|
-
*
|
|
1126
|
-
* @internal
|
|
1127
|
-
*/
|
|
1128
|
-
var SkyPopoverContext = /** @class */ (function () {
|
|
1129
|
-
function SkyPopoverContext(args) {
|
|
1130
|
-
this.contentTemplateRef = args.contentTemplateRef;
|
|
1131
|
-
}
|
|
1132
|
-
return SkyPopoverContext;
|
|
1133
|
-
}());
|
|
1134
|
-
|
|
1135
|
-
/**
|
|
1136
|
-
* @internal
|
|
555
|
+
* Creates a dropdown menu that displays menu items that users may select.
|
|
1137
556
|
*/
|
|
1138
|
-
var
|
|
1139
|
-
function
|
|
557
|
+
var SkyDropdownComponent = /** @class */ (function () {
|
|
558
|
+
function SkyDropdownComponent(changeDetector, affixService, overlayService, themeSvc) {
|
|
1140
559
|
this.changeDetector = changeDetector;
|
|
1141
|
-
this.elementRef = elementRef;
|
|
1142
560
|
this.affixService = affixService;
|
|
1143
|
-
this.
|
|
1144
|
-
this.
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
this.
|
|
1150
|
-
this.
|
|
561
|
+
this.overlayService = overlayService;
|
|
562
|
+
this.themeSvc = themeSvc;
|
|
563
|
+
/**
|
|
564
|
+
* Provides an observable to send commands to the dropdown. The commands should respect
|
|
565
|
+
* the [[SkyDropdownMessage]] type.
|
|
566
|
+
*/
|
|
567
|
+
this.messageStream = new rxjs.Subject();
|
|
568
|
+
this.isMouseEnter = false;
|
|
569
|
+
this.isVisible = false;
|
|
1151
570
|
this.ngUnsubscribe = new rxjs.Subject();
|
|
1152
|
-
this.
|
|
1153
|
-
this
|
|
1154
|
-
this._opened = new rxjs.Subject();
|
|
571
|
+
this._isOpen = false;
|
|
572
|
+
_SkyDropdownComponent_positionTimeout.set(this, void 0);
|
|
1155
573
|
}
|
|
1156
|
-
Object.defineProperty(
|
|
574
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "buttonStyle", {
|
|
1157
575
|
get: function () {
|
|
1158
|
-
return this.
|
|
576
|
+
return this._buttonStyle || 'default';
|
|
577
|
+
},
|
|
578
|
+
/**
|
|
579
|
+
* Specifies a background color for the dropdown button. Available values are `default` and
|
|
580
|
+
* `primary`. These values set the background color from the
|
|
581
|
+
* [secondary and primary button classes](https://developer.blackbaud.com/skyux/components/button) respectively.
|
|
582
|
+
* @default "default"
|
|
583
|
+
*/
|
|
584
|
+
set: function (value) {
|
|
585
|
+
this._buttonStyle = value;
|
|
1159
586
|
},
|
|
1160
587
|
enumerable: false,
|
|
1161
588
|
configurable: true
|
|
1162
589
|
});
|
|
1163
|
-
Object.defineProperty(
|
|
590
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "buttonType", {
|
|
1164
591
|
get: function () {
|
|
1165
|
-
return this.
|
|
592
|
+
return this._buttonType || 'select';
|
|
593
|
+
},
|
|
594
|
+
/**
|
|
595
|
+
* Specifies the type of button to render as the dropdown's trigger element. To display a button
|
|
596
|
+
* with text and a caret, specify `select` and then enter the button text in a
|
|
597
|
+
* `sky-dropdown-button` element. To display a round button with an ellipsis, specify
|
|
598
|
+
* `context-menu`. And to display a button with a [Font Awesome icon](http://fontawesome.io/icons/), specify the icon's class name.
|
|
599
|
+
* For example, to display the `fa-filter` icon, specify `filter`.
|
|
600
|
+
* @default "select"
|
|
601
|
+
*/
|
|
602
|
+
set: function (value) {
|
|
603
|
+
this._buttonType = value;
|
|
1166
604
|
},
|
|
1167
605
|
enumerable: false,
|
|
1168
606
|
configurable: true
|
|
1169
607
|
});
|
|
1170
|
-
Object.defineProperty(
|
|
608
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "disabled", {
|
|
1171
609
|
get: function () {
|
|
1172
|
-
return this.
|
|
610
|
+
return this._disabled || false;
|
|
611
|
+
},
|
|
612
|
+
/**
|
|
613
|
+
* Indicates whether to disable the dropdown button.
|
|
614
|
+
* @default false
|
|
615
|
+
*/
|
|
616
|
+
set: function (value) {
|
|
617
|
+
this._disabled = value;
|
|
1173
618
|
},
|
|
1174
619
|
enumerable: false,
|
|
1175
620
|
configurable: true
|
|
1176
621
|
});
|
|
1177
|
-
Object.defineProperty(
|
|
622
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "dismissOnBlur", {
|
|
1178
623
|
get: function () {
|
|
1179
|
-
|
|
624
|
+
if (this._dismissOnBlur === undefined) {
|
|
625
|
+
return true;
|
|
626
|
+
}
|
|
627
|
+
return this._dismissOnBlur;
|
|
628
|
+
},
|
|
629
|
+
/**
|
|
630
|
+
* Indicates whether to close the dropdown when users click away from the menu.
|
|
631
|
+
* @default true
|
|
632
|
+
*/
|
|
633
|
+
set: function (value) {
|
|
634
|
+
this._dismissOnBlur = value;
|
|
1180
635
|
},
|
|
1181
636
|
enumerable: false,
|
|
1182
637
|
configurable: true
|
|
1183
638
|
});
|
|
1184
|
-
|
|
639
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "horizontalAlignment", {
|
|
640
|
+
get: function () {
|
|
641
|
+
return this._horizontalAlignment || 'left';
|
|
642
|
+
},
|
|
643
|
+
/**
|
|
644
|
+
* Specifies the horizontal alignment of the dropdown menu in relation to the dropdown button.
|
|
645
|
+
* @default "left"
|
|
646
|
+
*/
|
|
647
|
+
set: function (value) {
|
|
648
|
+
this._horizontalAlignment = value;
|
|
649
|
+
},
|
|
650
|
+
enumerable: false,
|
|
651
|
+
configurable: true
|
|
652
|
+
});
|
|
653
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "trigger", {
|
|
654
|
+
get: function () {
|
|
655
|
+
return this._trigger || 'click';
|
|
656
|
+
},
|
|
657
|
+
/**
|
|
658
|
+
* Specifies how users interact with the dropdown button to expose the dropdown menu.
|
|
659
|
+
* We recommend the default `click` value because the `hover` value can pose
|
|
660
|
+
* [accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) issues
|
|
661
|
+
* for users on touch devices such as phones and tablets.
|
|
662
|
+
* @deprecated We recommend against using this property. If you choose to use the deprecated
|
|
663
|
+
* `hover` value anyway, we recommend that you not use it in combination with the `title`
|
|
664
|
+
* property. (This property will be removed in the next major version release.)
|
|
665
|
+
* @default "click"
|
|
666
|
+
*/
|
|
667
|
+
set: function (value) {
|
|
668
|
+
this._trigger = value;
|
|
669
|
+
},
|
|
670
|
+
enumerable: false,
|
|
671
|
+
configurable: true
|
|
672
|
+
});
|
|
673
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "isOpen", {
|
|
674
|
+
get: function () {
|
|
675
|
+
return this._isOpen || false;
|
|
676
|
+
},
|
|
677
|
+
set: function (value) {
|
|
678
|
+
this._isOpen = value;
|
|
679
|
+
this.changeDetector.markForCheck();
|
|
680
|
+
},
|
|
681
|
+
enumerable: false,
|
|
682
|
+
configurable: true
|
|
683
|
+
});
|
|
684
|
+
Object.defineProperty(SkyDropdownComponent.prototype, "menuContainerElementRef", {
|
|
685
|
+
get: function () {
|
|
686
|
+
return this._menuContainerElementRef;
|
|
687
|
+
},
|
|
688
|
+
set: function (value) {
|
|
689
|
+
if (value) {
|
|
690
|
+
this._menuContainerElementRef = value;
|
|
691
|
+
this.destroyAffixer();
|
|
692
|
+
this.createAffixer(value);
|
|
693
|
+
this.changeDetector.markForCheck();
|
|
694
|
+
}
|
|
695
|
+
},
|
|
696
|
+
enumerable: false,
|
|
697
|
+
configurable: true
|
|
698
|
+
});
|
|
699
|
+
SkyDropdownComponent.prototype.ngOnInit = function () {
|
|
1185
700
|
var _this = this;
|
|
1186
701
|
var _a;
|
|
1187
|
-
/*istanbul ignore next*/
|
|
1188
|
-
this.contentTarget.createEmbeddedView((_a = this.context) === null || _a === void 0 ? void 0 : _a.contentTemplateRef);
|
|
1189
702
|
this.addEventListeners();
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
}
|
|
703
|
+
this.messageStream
|
|
704
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
705
|
+
.subscribe(function (message) {
|
|
706
|
+
_this.handleIncomingMessages(message);
|
|
707
|
+
});
|
|
708
|
+
// Load proper icons on theme change.
|
|
709
|
+
(_a = this.themeSvc) === null || _a === void 0 ? void 0 : _a.settingsChange.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
710
|
+
_this.changeDetector.markForCheck();
|
|
711
|
+
});
|
|
1200
712
|
};
|
|
1201
|
-
|
|
713
|
+
SkyDropdownComponent.prototype.ngOnDestroy = function () {
|
|
714
|
+
this.destroyAffixer();
|
|
715
|
+
this.destroyOverlay();
|
|
716
|
+
clearTimeout(__classPrivateFieldGet(this, _SkyDropdownComponent_positionTimeout, "f"));
|
|
1202
717
|
this.ngUnsubscribe.next();
|
|
1203
718
|
this.ngUnsubscribe.complete();
|
|
1204
|
-
this._closed.complete();
|
|
1205
|
-
this._isMouseEnter.complete();
|
|
1206
|
-
this._opened.complete();
|
|
1207
|
-
/* istanbul ignore else */
|
|
1208
|
-
if (this.affixer) {
|
|
1209
|
-
this.affixer.destroy();
|
|
1210
|
-
}
|
|
1211
|
-
this._closed =
|
|
1212
|
-
this._isMouseEnter =
|
|
1213
|
-
this._opened =
|
|
1214
|
-
this.affixer =
|
|
1215
|
-
this.ngUnsubscribe =
|
|
1216
|
-
undefined;
|
|
1217
719
|
};
|
|
1218
|
-
|
|
1219
|
-
var
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
if (
|
|
1225
|
-
|
|
1226
|
-
(_a = this._opened) === null || _a === void 0 ? void 0 : _a.next();
|
|
720
|
+
SkyDropdownComponent.prototype.addEventListeners = function () {
|
|
721
|
+
var _this = this;
|
|
722
|
+
var buttonElement = this.triggerButton.nativeElement;
|
|
723
|
+
rxjs.fromEvent(buttonElement, 'click')
|
|
724
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
725
|
+
.subscribe(function () {
|
|
726
|
+
if (_this.isOpen) {
|
|
727
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
1227
728
|
}
|
|
1228
729
|
else {
|
|
1229
|
-
|
|
1230
|
-
|
|
730
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
731
|
+
// Wait for dropdown to open, then set focus on first item.
|
|
732
|
+
setTimeout(function () {
|
|
733
|
+
_this.sendMessage(exports.SkyDropdownMessageType.FocusFirstItem);
|
|
734
|
+
});
|
|
1231
735
|
}
|
|
1232
|
-
}
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
736
|
+
});
|
|
737
|
+
rxjs.fromEvent(buttonElement, 'keydown')
|
|
738
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
739
|
+
.subscribe(function (event) {
|
|
740
|
+
var key = event.key.toLowerCase();
|
|
741
|
+
/* tslint:disable-next-line:switch-default */
|
|
742
|
+
switch (key) {
|
|
743
|
+
case 'escape':
|
|
744
|
+
/*istanbul ignore else*/
|
|
745
|
+
if (_this.isOpen) {
|
|
746
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
747
|
+
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
748
|
+
event.stopPropagation();
|
|
749
|
+
}
|
|
750
|
+
break;
|
|
751
|
+
case 'tab':
|
|
752
|
+
if (_this.isOpen && _this.dismissOnBlur) {
|
|
753
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
754
|
+
}
|
|
755
|
+
break;
|
|
756
|
+
case 'arrowup':
|
|
757
|
+
case 'up':
|
|
758
|
+
if (!_this.isOpen) {
|
|
759
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
760
|
+
_this.sendMessage(exports.SkyDropdownMessageType.FocusLastItem);
|
|
761
|
+
event.preventDefault();
|
|
762
|
+
event.stopPropagation();
|
|
763
|
+
}
|
|
764
|
+
break;
|
|
765
|
+
case 'enter':
|
|
766
|
+
case 'arrowdown':
|
|
767
|
+
case 'down':
|
|
768
|
+
case ' ': // Spacebar.
|
|
769
|
+
/*istanbul ignore else*/
|
|
770
|
+
if (!_this.isOpen) {
|
|
771
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
772
|
+
_this.sendMessage(exports.SkyDropdownMessageType.FocusFirstItem);
|
|
773
|
+
event.preventDefault();
|
|
774
|
+
event.stopPropagation();
|
|
775
|
+
}
|
|
776
|
+
break;
|
|
777
|
+
}
|
|
778
|
+
});
|
|
779
|
+
rxjs.fromEvent(buttonElement, 'mouseenter')
|
|
780
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
781
|
+
.subscribe(function () {
|
|
782
|
+
_this.isMouseEnter = true;
|
|
783
|
+
if (_this.trigger === 'hover') {
|
|
784
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Open);
|
|
785
|
+
}
|
|
786
|
+
});
|
|
787
|
+
rxjs.fromEvent(buttonElement, 'mouseleave')
|
|
788
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
789
|
+
.subscribe(function () {
|
|
790
|
+
_this.isMouseEnter = false;
|
|
791
|
+
if (_this.trigger === 'hover') {
|
|
792
|
+
// Allow the dropdown menu to set isMouseEnter before checking if the close action
|
|
793
|
+
// should be taken.
|
|
794
|
+
setTimeout(function () {
|
|
795
|
+
if (!_this.isMouseEnter) {
|
|
796
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
797
|
+
}
|
|
798
|
+
});
|
|
799
|
+
}
|
|
800
|
+
});
|
|
801
|
+
};
|
|
802
|
+
SkyDropdownComponent.prototype.createOverlay = function () {
|
|
803
|
+
var _this = this;
|
|
804
|
+
if (this.overlay) {
|
|
1253
805
|
return;
|
|
1254
806
|
}
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
}
|
|
1264
|
-
if (!_this.affixer) {
|
|
1265
|
-
_this.setupAffixer();
|
|
1266
|
-
}
|
|
1267
|
-
var affixOptions = {
|
|
1268
|
-
autoFitContext: i1.SkyAffixAutoFitContext.Viewport,
|
|
1269
|
-
enableAutoFit: true,
|
|
1270
|
-
horizontalAlignment: parseAffixHorizontalAlignment(_this.horizontalAlignment),
|
|
1271
|
-
isSticky: true,
|
|
1272
|
-
placement: parseAffixPlacement(_this.placement),
|
|
1273
|
-
};
|
|
1274
|
-
// Ensure vertical alignment is set according to the popover's placement value.
|
|
1275
|
-
if (affixOptions.placement === 'left' ||
|
|
1276
|
-
affixOptions.placement === 'right') {
|
|
1277
|
-
affixOptions.verticalAlignment = 'middle';
|
|
807
|
+
var overlay = this.overlayService.create({
|
|
808
|
+
enableScroll: true,
|
|
809
|
+
enablePointerEvents: true,
|
|
810
|
+
});
|
|
811
|
+
overlay.attachTemplate(this.menuContainerTemplateRef);
|
|
812
|
+
overlay.backdropClick.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
813
|
+
if (_this.dismissOnBlur) {
|
|
814
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
1278
815
|
}
|
|
1279
|
-
_this.affixer.affixTo(_this.caller.nativeElement, affixOptions);
|
|
1280
|
-
_this.updateArrowOffset();
|
|
1281
|
-
_this.isOpen = true;
|
|
1282
|
-
_this.changeDetector.markForCheck();
|
|
1283
816
|
});
|
|
817
|
+
this.overlay = overlay;
|
|
1284
818
|
};
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
this.
|
|
819
|
+
SkyDropdownComponent.prototype.destroyAffixer = function () {
|
|
820
|
+
/*istanbul ignore else*/
|
|
821
|
+
if (this.affixer) {
|
|
822
|
+
this.affixer.destroy();
|
|
823
|
+
this.affixer = undefined;
|
|
824
|
+
}
|
|
1288
825
|
};
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
826
|
+
SkyDropdownComponent.prototype.destroyOverlay = function () {
|
|
827
|
+
/*istanbul ignore else*/
|
|
828
|
+
if (this.overlay) {
|
|
829
|
+
this.overlayService.close(this.overlay);
|
|
830
|
+
this.overlay = undefined;
|
|
1292
831
|
}
|
|
1293
832
|
};
|
|
1294
|
-
|
|
833
|
+
SkyDropdownComponent.prototype.createAffixer = function (menuContainerElementRef) {
|
|
1295
834
|
var _this = this;
|
|
1296
|
-
var affixer = this.affixService.createAffixer(
|
|
1297
|
-
affixer.offsetChange.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1298
|
-
_this.updateArrowOffset();
|
|
1299
|
-
_this.changeDetector.markForCheck();
|
|
1300
|
-
});
|
|
1301
|
-
affixer.overflowScroll.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1302
|
-
_this.updateArrowOffset();
|
|
1303
|
-
_this.changeDetector.markForCheck();
|
|
1304
|
-
});
|
|
835
|
+
var affixer = this.affixService.createAffixer(menuContainerElementRef);
|
|
1305
836
|
affixer.placementChange
|
|
1306
837
|
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1307
838
|
.subscribe(function (change) {
|
|
1308
|
-
_this.
|
|
839
|
+
_this.isVisible = change.placement !== null;
|
|
1309
840
|
_this.changeDetector.markForCheck();
|
|
1310
841
|
});
|
|
1311
842
|
this.affixer = affixer;
|
|
1312
843
|
};
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
caller: this.caller,
|
|
1316
|
-
popover: this.popoverRef,
|
|
1317
|
-
popoverArrow: this.arrowRef,
|
|
1318
|
-
}, this.placement, this.themeName), top = _c.top, left = _c.left;
|
|
1319
|
-
this.arrowTop = top;
|
|
1320
|
-
this.arrowLeft = left;
|
|
1321
|
-
};
|
|
1322
|
-
SkyPopoverContentComponent.prototype.isFocusLeavingElement = function (event) {
|
|
1323
|
-
var focusableItems = this.coreAdapterService.getFocusableChildren(this.elementRef.nativeElement);
|
|
1324
|
-
var isFirstItem = focusableItems[0] === event.target && event.shiftKey;
|
|
1325
|
-
var isLastItem = focusableItems[focusableItems.length - 1] === event.target &&
|
|
1326
|
-
!event.shiftKey;
|
|
1327
|
-
return focusableItems.length === 0 || isFirstItem || isLastItem;
|
|
1328
|
-
};
|
|
1329
|
-
SkyPopoverContentComponent.prototype.addEventListeners = function () {
|
|
1330
|
-
var _this = this;
|
|
1331
|
-
var hostElement = this.elementRef.nativeElement;
|
|
1332
|
-
rxjs.fromEvent(hostElement, 'mouseenter')
|
|
1333
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1334
|
-
.subscribe(function () { return _this._isMouseEnter.next(true); });
|
|
1335
|
-
rxjs.fromEvent(hostElement, 'mouseleave')
|
|
1336
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1337
|
-
.subscribe(function () { return _this._isMouseEnter.next(false); });
|
|
1338
|
-
rxjs.fromEvent(hostElement, 'keydown')
|
|
1339
|
-
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1340
|
-
.subscribe(function (event) {
|
|
1341
|
-
var key = event.key.toLowerCase();
|
|
844
|
+
SkyDropdownComponent.prototype.handleIncomingMessages = function (message) {
|
|
845
|
+
if (!this.disabled) {
|
|
1342
846
|
/* tslint:disable-next-line:switch-default */
|
|
1343
|
-
switch (
|
|
1344
|
-
case
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
event.preventDefault();
|
|
1348
|
-
event.stopPropagation();
|
|
847
|
+
switch (message.type) {
|
|
848
|
+
case exports.SkyDropdownMessageType.Open:
|
|
849
|
+
this.isOpen = true;
|
|
850
|
+
this.positionDropdownMenu();
|
|
1349
851
|
break;
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
_this.close();
|
|
1360
|
-
_this.caller.nativeElement.focus();
|
|
1361
|
-
event.preventDefault();
|
|
1362
|
-
event.stopPropagation();
|
|
852
|
+
case exports.SkyDropdownMessageType.Close:
|
|
853
|
+
this.isOpen = false;
|
|
854
|
+
this.destroyOverlay();
|
|
855
|
+
break;
|
|
856
|
+
case exports.SkyDropdownMessageType.Reposition:
|
|
857
|
+
// Only reposition the dropdown if it is already open.
|
|
858
|
+
/* istanbul ignore else */
|
|
859
|
+
if (this.isOpen && this.affixer) {
|
|
860
|
+
this.affixer.reaffix();
|
|
1363
861
|
}
|
|
1364
862
|
break;
|
|
863
|
+
case exports.SkyDropdownMessageType.FocusTriggerButton:
|
|
864
|
+
this.triggerButton.nativeElement.focus();
|
|
865
|
+
break;
|
|
1365
866
|
}
|
|
1366
|
-
}
|
|
867
|
+
}
|
|
1367
868
|
};
|
|
1368
|
-
|
|
869
|
+
SkyDropdownComponent.prototype.sendMessage = function (type) {
|
|
870
|
+
this.messageStream.next({ type: type });
|
|
871
|
+
};
|
|
872
|
+
SkyDropdownComponent.prototype.positionDropdownMenu = function () {
|
|
873
|
+
var _this = this;
|
|
874
|
+
this.isVisible = false;
|
|
875
|
+
this.createOverlay();
|
|
876
|
+
this.changeDetector.markForCheck();
|
|
877
|
+
// Explicitly declare the `setTimeout` from the `window` object in order to use the DOM typings
|
|
878
|
+
// during a unit test (instead of confusing this with Node's `setTimeout`).
|
|
879
|
+
__classPrivateFieldSet(this, _SkyDropdownComponent_positionTimeout, window.setTimeout(function () {
|
|
880
|
+
_this.affixer.affixTo(_this.triggerButton.nativeElement, {
|
|
881
|
+
autoFitContext: i1.SkyAffixAutoFitContext.Viewport,
|
|
882
|
+
enableAutoFit: true,
|
|
883
|
+
horizontalAlignment: parseAffixHorizontalAlignment$1(_this.horizontalAlignment),
|
|
884
|
+
isSticky: true,
|
|
885
|
+
placement: 'below',
|
|
886
|
+
});
|
|
887
|
+
_this.isVisible = true;
|
|
888
|
+
_this.changeDetector.markForCheck();
|
|
889
|
+
}), "f");
|
|
890
|
+
};
|
|
891
|
+
return SkyDropdownComponent;
|
|
1369
892
|
}());
|
|
1370
|
-
|
|
1371
|
-
SkyPopoverContentComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyPopoverContentComponent, selector: "sky-popover-content", providers: [SkyPopoverAdapterService], viewQueries: [{ propertyName: "arrowRef", first: true, predicate: ["arrowRef"], descendants: true, read: i0.ElementRef, static: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, read: i0.ElementRef, static: true }, { propertyName: "contentTarget", first: true, predicate: ["contentTarget"], descendants: true, read: i0.ViewContainerRef, static: true }], ngImport: i0__namespace, template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-emphasized': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n", styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"], directives: [{ type: i4__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2__namespace.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [skyPopoverAnimation] });
|
|
1372
|
-
i0__namespace.ɵɵ
|
|
893
|
+
_SkyDropdownComponent_positionTimeout = new WeakMap();
|
|
894
|
+
SkyDropdownComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.SkyAffixService }, { token: i1__namespace.SkyOverlayService }, { token: i2__namespace.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
895
|
+
SkyDropdownComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyDropdownComponent, selector: "sky-dropdown", inputs: { buttonStyle: "buttonStyle", buttonType: "buttonType", disabled: "disabled", dismissOnBlur: "dismissOnBlur", label: "label", horizontalAlignment: "horizontalAlignment", messageStream: "messageStream", title: "title", trigger: "trigger" }, viewQueries: [{ propertyName: "menuContainerElementRef", first: true, predicate: ["menuContainerElementRef"], descendants: true, read: i0.ElementRef }, { propertyName: "menuContainerTemplateRef", first: true, predicate: ["menuContainerTemplateRef"], descendants: true, read: i0.TemplateRef, static: true }, { propertyName: "triggerButton", first: true, predicate: ["triggerButton"], descendants: true, read: i0.ElementRef, static: true }], ngImport: i0__namespace, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"], components: [{ type: i3__namespace.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i4__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2__namespace.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i4__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i5__namespace.SkyLibResourcesPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
896
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownComponent, decorators: [{
|
|
1373
897
|
type: i0.Component,
|
|
1374
898
|
args: [{
|
|
1375
|
-
selector: 'sky-
|
|
1376
|
-
template: "<div\n class=\"sky-
|
|
1377
|
-
styles: [".sky-
|
|
1378
|
-
|
|
1379
|
-
providers: [SkyPopoverAdapterService],
|
|
899
|
+
selector: 'sky-dropdown',
|
|
900
|
+
template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n",
|
|
901
|
+
styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"],
|
|
902
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
1380
903
|
}]
|
|
1381
904
|
}], ctorParameters: function () {
|
|
1382
|
-
return [{ type: i0__namespace.ChangeDetectorRef }, { type:
|
|
1383
|
-
type: i0.Optional
|
|
1384
|
-
}] }, { type: i2__namespace.SkyThemeService, decorators: [{
|
|
905
|
+
return [{ type: i0__namespace.ChangeDetectorRef }, { type: i1__namespace.SkyAffixService }, { type: i1__namespace.SkyOverlayService }, { type: i2__namespace.SkyThemeService, decorators: [{
|
|
1385
906
|
type: i0.Optional
|
|
1386
907
|
}] }];
|
|
1387
|
-
}, propDecorators: {
|
|
908
|
+
}, propDecorators: { buttonStyle: [{
|
|
909
|
+
type: i0.Input
|
|
910
|
+
}], buttonType: [{
|
|
911
|
+
type: i0.Input
|
|
912
|
+
}], disabled: [{
|
|
913
|
+
type: i0.Input
|
|
914
|
+
}], dismissOnBlur: [{
|
|
915
|
+
type: i0.Input
|
|
916
|
+
}], label: [{
|
|
917
|
+
type: i0.Input
|
|
918
|
+
}], horizontalAlignment: [{
|
|
919
|
+
type: i0.Input
|
|
920
|
+
}], messageStream: [{
|
|
921
|
+
type: i0.Input
|
|
922
|
+
}], title: [{
|
|
923
|
+
type: i0.Input
|
|
924
|
+
}], trigger: [{
|
|
925
|
+
type: i0.Input
|
|
926
|
+
}], menuContainerElementRef: [{
|
|
1388
927
|
type: i0.ViewChild,
|
|
1389
|
-
args: ['
|
|
928
|
+
args: ['menuContainerElementRef', {
|
|
1390
929
|
read: i0.ElementRef,
|
|
1391
|
-
static: true,
|
|
1392
930
|
}]
|
|
1393
|
-
}],
|
|
931
|
+
}], menuContainerTemplateRef: [{
|
|
1394
932
|
type: i0.ViewChild,
|
|
1395
|
-
args: ['
|
|
1396
|
-
read: i0.
|
|
933
|
+
args: ['menuContainerTemplateRef', {
|
|
934
|
+
read: i0.TemplateRef,
|
|
1397
935
|
static: true,
|
|
1398
936
|
}]
|
|
1399
|
-
}],
|
|
937
|
+
}], triggerButton: [{
|
|
1400
938
|
type: i0.ViewChild,
|
|
1401
|
-
args: ['
|
|
1402
|
-
read: i0.
|
|
939
|
+
args: ['triggerButton', {
|
|
940
|
+
read: i0.ElementRef,
|
|
1403
941
|
static: true,
|
|
1404
942
|
}]
|
|
1405
943
|
}] } });
|
|
1406
944
|
|
|
1407
|
-
var
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
this.popoverOpened = new i0.EventEmitter();
|
|
1418
|
-
/**
|
|
1419
|
-
* Indicates that the popover is in the process of being opened or closed.
|
|
1420
|
-
* @internal
|
|
1421
|
-
*/
|
|
1422
|
-
this.isActive = false;
|
|
945
|
+
var nextId = 0;
|
|
946
|
+
/**
|
|
947
|
+
* Creates a menu that contains dropdown menu items.
|
|
948
|
+
*
|
|
949
|
+
*/
|
|
950
|
+
var SkyDropdownMenuComponent = /** @class */ (function () {
|
|
951
|
+
function SkyDropdownMenuComponent(changeDetector, elementRef, dropdownComponent) {
|
|
952
|
+
this.changeDetector = changeDetector;
|
|
953
|
+
this.elementRef = elementRef;
|
|
954
|
+
this.dropdownComponent = dropdownComponent;
|
|
1423
955
|
/**
|
|
1424
|
-
*
|
|
1425
|
-
*
|
|
1426
|
-
*
|
|
956
|
+
* Fires when the dropdown menu's active index or selected item changes. This event provides an
|
|
957
|
+
* observable to emit changes, and the response is of
|
|
958
|
+
* the SkyDropdownMenuChange type.
|
|
1427
959
|
*/
|
|
1428
|
-
this.
|
|
1429
|
-
this.
|
|
1430
|
-
this.isMarkedForCloseOnMouseLeave = false;
|
|
960
|
+
this.menuChanges = new i0.EventEmitter();
|
|
961
|
+
this.dropdownMenuId = "sky-dropdown-menu-" + ++nextId;
|
|
1431
962
|
this.ngUnsubscribe = new rxjs.Subject();
|
|
963
|
+
this._menuIndex = 0;
|
|
1432
964
|
}
|
|
1433
|
-
Object.defineProperty(
|
|
965
|
+
Object.defineProperty(SkyDropdownMenuComponent.prototype, "ariaRole", {
|
|
1434
966
|
get: function () {
|
|
1435
|
-
return this.
|
|
967
|
+
return this._ariaRole || 'menu';
|
|
1436
968
|
},
|
|
1437
969
|
/**
|
|
1438
|
-
* Specifies
|
|
1439
|
-
*
|
|
1440
|
-
*
|
|
970
|
+
* Specifies an ARIA role for the dropdown menu
|
|
971
|
+
* [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
|
|
972
|
+
* by indicating how the dropdown menu functions and what it controls. The dropdown button
|
|
973
|
+
* inherits this value to set its `aria-haspopup` property. For information
|
|
974
|
+
* about how an ARIA role indicates what an item represents on a web page, see the
|
|
975
|
+
* [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).
|
|
976
|
+
* @default "menu"
|
|
1441
977
|
*/
|
|
1442
978
|
set: function (value) {
|
|
1443
|
-
this.
|
|
979
|
+
this._ariaRole = value;
|
|
1444
980
|
},
|
|
1445
981
|
enumerable: false,
|
|
1446
982
|
configurable: true
|
|
1447
983
|
});
|
|
1448
|
-
Object.defineProperty(
|
|
984
|
+
Object.defineProperty(SkyDropdownMenuComponent.prototype, "useNativeFocus", {
|
|
1449
985
|
get: function () {
|
|
1450
|
-
if (this.
|
|
986
|
+
if (this._useNativeFocus === undefined) {
|
|
1451
987
|
return true;
|
|
1452
988
|
}
|
|
1453
|
-
return this.
|
|
989
|
+
return this._useNativeFocus;
|
|
1454
990
|
},
|
|
1455
991
|
/**
|
|
1456
|
-
* Indicates whether to
|
|
1457
|
-
*
|
|
992
|
+
* Indicates whether to use the browser's native focus function when users navigate through menu
|
|
993
|
+
* items with the keyboard. To disable the native focus function, set this property to `false`.
|
|
994
|
+
* For example, to let users interact with the dropdown menu but keep the keyboard focus on a
|
|
995
|
+
* different element, set this property to `false`.
|
|
1458
996
|
* @default true
|
|
1459
997
|
*/
|
|
1460
998
|
set: function (value) {
|
|
1461
|
-
this.
|
|
999
|
+
this._useNativeFocus = value;
|
|
1462
1000
|
},
|
|
1463
1001
|
enumerable: false,
|
|
1464
1002
|
configurable: true
|
|
1465
1003
|
});
|
|
1466
|
-
Object.defineProperty(
|
|
1004
|
+
Object.defineProperty(SkyDropdownMenuComponent.prototype, "hasFocusableItems", {
|
|
1467
1005
|
get: function () {
|
|
1468
|
-
|
|
1006
|
+
var found = this.menuItems.find(function (item) { return item.isFocusable(); });
|
|
1007
|
+
return found !== undefined;
|
|
1008
|
+
},
|
|
1009
|
+
enumerable: false,
|
|
1010
|
+
configurable: true
|
|
1011
|
+
});
|
|
1012
|
+
Object.defineProperty(SkyDropdownMenuComponent.prototype, "menuIndex", {
|
|
1013
|
+
get: function () {
|
|
1014
|
+
return this._menuIndex;
|
|
1469
1015
|
},
|
|
1470
|
-
/**
|
|
1471
|
-
* Specifies the placement of the popover in relation to the trigger element.
|
|
1472
|
-
* The `skyPopoverPlacement` property on the popover directive takes precedence over this property when specified.
|
|
1473
|
-
* @default "above"
|
|
1474
|
-
*/
|
|
1475
1016
|
set: function (value) {
|
|
1476
|
-
|
|
1017
|
+
if (value < 0) {
|
|
1018
|
+
value = this.menuItems.length - 1;
|
|
1019
|
+
}
|
|
1020
|
+
if (value >= this.menuItems.length) {
|
|
1021
|
+
value = 0;
|
|
1022
|
+
}
|
|
1023
|
+
this._menuIndex = value;
|
|
1477
1024
|
},
|
|
1478
1025
|
enumerable: false,
|
|
1479
1026
|
configurable: true
|
|
1480
1027
|
});
|
|
1481
|
-
|
|
1028
|
+
SkyDropdownMenuComponent.prototype.ngAfterContentInit = function () {
|
|
1029
|
+
var _this = this;
|
|
1030
|
+
/* istanbul ignore else */
|
|
1031
|
+
if (this.dropdownComponent) {
|
|
1032
|
+
this.dropdownComponent.menuId = this.dropdownMenuId;
|
|
1033
|
+
this.dropdownComponent.menuAriaRole = this.ariaRole;
|
|
1034
|
+
this.dropdownComponent.messageStream
|
|
1035
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1036
|
+
.subscribe(function (message) {
|
|
1037
|
+
/* tslint:disable-next-line:switch-default */
|
|
1038
|
+
switch (message.type) {
|
|
1039
|
+
case exports.SkyDropdownMessageType.Open:
|
|
1040
|
+
case exports.SkyDropdownMessageType.Close:
|
|
1041
|
+
_this.reset();
|
|
1042
|
+
break;
|
|
1043
|
+
case exports.SkyDropdownMessageType.FocusFirstItem:
|
|
1044
|
+
_this.focusFirstItem();
|
|
1045
|
+
break;
|
|
1046
|
+
case exports.SkyDropdownMessageType.FocusNextItem:
|
|
1047
|
+
_this.focusNextItem();
|
|
1048
|
+
break;
|
|
1049
|
+
case exports.SkyDropdownMessageType.FocusPreviousItem:
|
|
1050
|
+
_this.focusPreviousItem();
|
|
1051
|
+
break;
|
|
1052
|
+
case exports.SkyDropdownMessageType.FocusLastItem:
|
|
1053
|
+
_this.focusLastItem();
|
|
1054
|
+
break;
|
|
1055
|
+
}
|
|
1056
|
+
});
|
|
1057
|
+
this.menuChanges
|
|
1058
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1059
|
+
.subscribe(function (change) {
|
|
1060
|
+
// Close the dropdown when a menu item is selected.
|
|
1061
|
+
if (change.selectedItem) {
|
|
1062
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
1063
|
+
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
1064
|
+
}
|
|
1065
|
+
if (change.items) {
|
|
1066
|
+
// Update the popover style and position whenever the number of items changes.
|
|
1067
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Reposition);
|
|
1068
|
+
}
|
|
1069
|
+
});
|
|
1070
|
+
}
|
|
1071
|
+
// Reset dropdown whenever the menu items change.
|
|
1072
|
+
this.menuItems.changes
|
|
1073
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1074
|
+
.subscribe(function (items) {
|
|
1075
|
+
_this.reset();
|
|
1076
|
+
_this.menuChanges.emit({
|
|
1077
|
+
items: items.toArray(),
|
|
1078
|
+
});
|
|
1079
|
+
});
|
|
1080
|
+
this.addEventListeners();
|
|
1081
|
+
};
|
|
1082
|
+
SkyDropdownMenuComponent.prototype.ngOnDestroy = function () {
|
|
1482
1083
|
this.ngUnsubscribe.next();
|
|
1483
1084
|
this.ngUnsubscribe.complete();
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1085
|
+
};
|
|
1086
|
+
SkyDropdownMenuComponent.prototype.focusFirstItem = function () {
|
|
1087
|
+
if (!this.hasFocusableItems) {
|
|
1088
|
+
return;
|
|
1089
|
+
}
|
|
1090
|
+
this.menuIndex = 0;
|
|
1091
|
+
var firstItem = this.getItemByIndex(this.menuIndex);
|
|
1092
|
+
if (firstItem && firstItem.isFocusable()) {
|
|
1093
|
+
this.focusItem(firstItem);
|
|
1094
|
+
}
|
|
1095
|
+
else {
|
|
1096
|
+
this.focusNextItem();
|
|
1488
1097
|
}
|
|
1489
1098
|
};
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
* @param placement The placement of the popover.
|
|
1494
|
-
* @param alignment The horizontal alignment of the popover.
|
|
1495
|
-
* @internal
|
|
1496
|
-
*/
|
|
1497
|
-
SkyPopoverComponent.prototype.positionNextTo = function (caller, placement, alignment) {
|
|
1498
|
-
if (!this.overlay) {
|
|
1499
|
-
this.setupOverlay();
|
|
1099
|
+
SkyDropdownMenuComponent.prototype.focusLastItem = function () {
|
|
1100
|
+
if (!this.hasFocusableItems) {
|
|
1101
|
+
return;
|
|
1500
1102
|
}
|
|
1501
|
-
this.
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1103
|
+
this.menuIndex = this.menuItems.length - 1;
|
|
1104
|
+
var lastItem = this.getItemByIndex(this.menuIndex);
|
|
1105
|
+
if (lastItem && lastItem.isFocusable()) {
|
|
1106
|
+
this.focusItem(lastItem);
|
|
1107
|
+
}
|
|
1108
|
+
else {
|
|
1109
|
+
this.focusPreviousItem();
|
|
1110
|
+
}
|
|
1111
|
+
};
|
|
1112
|
+
SkyDropdownMenuComponent.prototype.focusPreviousItem = function () {
|
|
1113
|
+
if (!this.hasFocusableItems) {
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
this.menuIndex--;
|
|
1117
|
+
var previousItem = this.getItemByIndex(this.menuIndex);
|
|
1118
|
+
if (previousItem && previousItem.isFocusable()) {
|
|
1119
|
+
this.focusItem(previousItem);
|
|
1120
|
+
}
|
|
1121
|
+
else {
|
|
1122
|
+
this.focusPreviousItem();
|
|
1123
|
+
}
|
|
1124
|
+
};
|
|
1125
|
+
SkyDropdownMenuComponent.prototype.focusNextItem = function () {
|
|
1126
|
+
if (!this.hasFocusableItems) {
|
|
1127
|
+
return;
|
|
1128
|
+
}
|
|
1129
|
+
this.menuIndex++;
|
|
1130
|
+
var nextItem = this.getItemByIndex(this.menuIndex);
|
|
1131
|
+
if (nextItem && nextItem.isFocusable()) {
|
|
1132
|
+
this.focusItem(nextItem);
|
|
1133
|
+
}
|
|
1134
|
+
else {
|
|
1135
|
+
this.focusNextItem();
|
|
1136
|
+
}
|
|
1137
|
+
};
|
|
1138
|
+
SkyDropdownMenuComponent.prototype.reset = function () {
|
|
1139
|
+
this._menuIndex = -1;
|
|
1140
|
+
this.resetItemsActiveState();
|
|
1141
|
+
this.changeDetector.markForCheck();
|
|
1142
|
+
};
|
|
1143
|
+
SkyDropdownMenuComponent.prototype.resetItemsActiveState = function () {
|
|
1144
|
+
this.menuItems.forEach(function (item) {
|
|
1145
|
+
item.resetState();
|
|
1512
1146
|
});
|
|
1513
1147
|
};
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
/*istanbul ignore next*/
|
|
1521
|
-
(_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.close();
|
|
1148
|
+
SkyDropdownMenuComponent.prototype.focusItem = function (item) {
|
|
1149
|
+
this.resetItemsActiveState();
|
|
1150
|
+
item.focusElement(this.useNativeFocus);
|
|
1151
|
+
this.menuChanges.emit({
|
|
1152
|
+
activeIndex: this.menuIndex,
|
|
1153
|
+
});
|
|
1522
1154
|
};
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
* @internal
|
|
1526
|
-
*/
|
|
1527
|
-
SkyPopoverComponent.prototype.applyFocus = function () {
|
|
1528
|
-
var _a;
|
|
1529
|
-
/*istanbul ignore next*/
|
|
1530
|
-
(_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.applyFocus();
|
|
1155
|
+
SkyDropdownMenuComponent.prototype.getItemByIndex = function (index) {
|
|
1156
|
+
return this.menuItems.find(function (_, i) { return i === index; });
|
|
1531
1157
|
};
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1158
|
+
SkyDropdownMenuComponent.prototype.selectItemByEventTarget = function (target) {
|
|
1159
|
+
var _this = this;
|
|
1160
|
+
var selectedItem = this.menuItems.find(function (item, i) {
|
|
1161
|
+
var found = item.elementRef.nativeElement.contains(target);
|
|
1162
|
+
if (found) {
|
|
1163
|
+
_this.menuIndex = i;
|
|
1164
|
+
_this.menuChanges.next({
|
|
1165
|
+
activeIndex: _this.menuIndex,
|
|
1166
|
+
});
|
|
1167
|
+
}
|
|
1168
|
+
return found;
|
|
1169
|
+
});
|
|
1170
|
+
/* istanbul ignore else */
|
|
1171
|
+
if (selectedItem) {
|
|
1172
|
+
this.menuChanges.next({
|
|
1173
|
+
selectedItem: selectedItem,
|
|
1174
|
+
});
|
|
1175
|
+
}
|
|
1538
1176
|
};
|
|
1539
|
-
|
|
1177
|
+
SkyDropdownMenuComponent.prototype.sendMessage = function (type) {
|
|
1178
|
+
this.dropdownComponent.messageStream.next({ type: type });
|
|
1179
|
+
};
|
|
1180
|
+
SkyDropdownMenuComponent.prototype.addEventListeners = function () {
|
|
1540
1181
|
var _this = this;
|
|
1541
|
-
var
|
|
1542
|
-
|
|
1543
|
-
|
|
1182
|
+
var dropdownMenuElement = this.elementRef.nativeElement;
|
|
1183
|
+
rxjs.fromEvent(dropdownMenuElement, 'click')
|
|
1184
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1185
|
+
.subscribe(function (event) {
|
|
1186
|
+
_this.selectItemByEventTarget(event.target);
|
|
1544
1187
|
});
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1188
|
+
rxjs.fromEvent(dropdownMenuElement, 'keydown')
|
|
1189
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1190
|
+
.subscribe(function (event) {
|
|
1191
|
+
var key = event.key.toLowerCase();
|
|
1192
|
+
/*tslint:disable-next-line:switch-default*/
|
|
1193
|
+
switch (key) {
|
|
1194
|
+
case 'escape':
|
|
1195
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
1196
|
+
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
1197
|
+
event.stopPropagation();
|
|
1198
|
+
event.preventDefault();
|
|
1199
|
+
break;
|
|
1200
|
+
case 'arrowdown':
|
|
1201
|
+
case 'down':
|
|
1202
|
+
_this.focusNextItem();
|
|
1203
|
+
event.preventDefault();
|
|
1204
|
+
break;
|
|
1205
|
+
case 'arrowup':
|
|
1206
|
+
case 'up':
|
|
1207
|
+
_this.focusPreviousItem();
|
|
1208
|
+
event.preventDefault();
|
|
1209
|
+
break;
|
|
1210
|
+
case 'tab':
|
|
1211
|
+
if (_this.dropdownComponent.dismissOnBlur) {
|
|
1212
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
1213
|
+
}
|
|
1214
|
+
_this.sendMessage(exports.SkyDropdownMessageType.FocusTriggerButton);
|
|
1215
|
+
break;
|
|
1548
1216
|
}
|
|
1549
1217
|
});
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
contentTemplateRef: this.templateRef,
|
|
1555
|
-
}),
|
|
1556
|
-
},
|
|
1557
|
-
]);
|
|
1558
|
-
contentRef.opened.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1559
|
-
_this.popoverOpened.emit(_this);
|
|
1560
|
-
});
|
|
1561
|
-
contentRef.closed.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1562
|
-
/*istanbul ignore else*/
|
|
1563
|
-
if (_this.isActive) {
|
|
1564
|
-
_this.overlayService.close(_this.overlay);
|
|
1565
|
-
_this.overlay = undefined;
|
|
1566
|
-
_this.isActive = false;
|
|
1567
|
-
_this.popoverClosed.emit(_this);
|
|
1568
|
-
}
|
|
1218
|
+
rxjs.fromEvent(dropdownMenuElement, 'mouseenter')
|
|
1219
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1220
|
+
.subscribe(function () {
|
|
1221
|
+
_this.dropdownComponent.isMouseEnter = true;
|
|
1569
1222
|
});
|
|
1570
|
-
|
|
1223
|
+
rxjs.fromEvent(dropdownMenuElement, 'mouseleave')
|
|
1571
1224
|
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1572
|
-
.subscribe(function (
|
|
1573
|
-
_this.isMouseEnter =
|
|
1574
|
-
if
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1225
|
+
.subscribe(function () {
|
|
1226
|
+
_this.dropdownComponent.isMouseEnter = false;
|
|
1227
|
+
// Allow the dropdown component to set isMouseEnter before checking if the close action
|
|
1228
|
+
// should be taken.
|
|
1229
|
+
setTimeout(function () {
|
|
1230
|
+
if (_this.dropdownComponent.trigger === 'hover' &&
|
|
1231
|
+
_this.dropdownComponent.isMouseEnter === false) {
|
|
1232
|
+
_this.sendMessage(exports.SkyDropdownMessageType.Close);
|
|
1233
|
+
}
|
|
1234
|
+
});
|
|
1578
1235
|
});
|
|
1579
|
-
this.overlay = overlay;
|
|
1580
|
-
this.contentRef = contentRef;
|
|
1581
1236
|
};
|
|
1582
|
-
return
|
|
1237
|
+
return SkyDropdownMenuComponent;
|
|
1583
1238
|
}());
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type:
|
|
1239
|
+
SkyDropdownMenuComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownMenuComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ElementRef }, { token: SkyDropdownComponent, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
1240
|
+
SkyDropdownMenuComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyDropdownMenuComponent, selector: "sky-dropdown-menu", inputs: { ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", useNativeFocus: "useNativeFocus" }, outputs: { menuChanges: "menuChanges" }, queries: [{ propertyName: "menuItems", predicate: SkyDropdownItemComponent, descendants: true }], ngImport: i0__namespace, template: "<div\n class=\"sky-dropdown-menu sky-shadow sky-elevation-4\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [id]=\"dropdownMenuId\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-menu{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px);display:flex;flex-direction:column;background-color:#fff}.sky-dropdown-menu button{overflow:hidden;text-overflow:ellipsis}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-menu{background-color:#252a2e;color:#fff}\n"], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
|
|
1241
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownMenuComponent, decorators: [{
|
|
1587
1242
|
type: i0.Component,
|
|
1588
1243
|
args: [{
|
|
1589
|
-
selector: 'sky-
|
|
1590
|
-
template: "<
|
|
1244
|
+
selector: 'sky-dropdown-menu',
|
|
1245
|
+
template: "<div\n class=\"sky-dropdown-menu sky-shadow sky-elevation-4\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [id]=\"dropdownMenuId\"\n>\n <ng-content> </ng-content>\n</div>\n",
|
|
1246
|
+
styles: [".sky-dropdown-menu{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px);display:flex;flex-direction:column;background-color:#fff}.sky-dropdown-menu button{overflow:hidden;text-overflow:ellipsis}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-menu{background-color:#252a2e;color:#fff}\n"],
|
|
1247
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
1248
|
+
encapsulation: i0.ViewEncapsulation.None,
|
|
1591
1249
|
}]
|
|
1592
|
-
}], ctorParameters: function () {
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1250
|
+
}], ctorParameters: function () {
|
|
1251
|
+
return [{ type: i0__namespace.ChangeDetectorRef }, { type: i0__namespace.ElementRef }, { type: SkyDropdownComponent, decorators: [{
|
|
1252
|
+
type: i0.Optional
|
|
1253
|
+
}] }];
|
|
1254
|
+
}, propDecorators: { ariaLabelledBy: [{
|
|
1597
1255
|
type: i0.Input
|
|
1598
|
-
}],
|
|
1256
|
+
}], ariaRole: [{
|
|
1599
1257
|
type: i0.Input
|
|
1600
|
-
}],
|
|
1258
|
+
}], useNativeFocus: [{
|
|
1601
1259
|
type: i0.Input
|
|
1602
|
-
}],
|
|
1603
|
-
type: i0.Output
|
|
1604
|
-
}], popoverOpened: [{
|
|
1260
|
+
}], menuChanges: [{
|
|
1605
1261
|
type: i0.Output
|
|
1606
|
-
}],
|
|
1607
|
-
type: i0.
|
|
1608
|
-
args: [
|
|
1609
|
-
read: i0.TemplateRef,
|
|
1610
|
-
static: true,
|
|
1611
|
-
}]
|
|
1262
|
+
}], menuItems: [{
|
|
1263
|
+
type: i0.ContentChildren,
|
|
1264
|
+
args: [SkyDropdownItemComponent, { descendants: true }]
|
|
1612
1265
|
}] } });
|
|
1613
1266
|
|
|
1614
|
-
|
|
1615
|
-
|
|
1267
|
+
var SkyDropdownModule = /** @class */ (function () {
|
|
1268
|
+
function SkyDropdownModule() {
|
|
1269
|
+
}
|
|
1270
|
+
return SkyDropdownModule;
|
|
1271
|
+
}());
|
|
1272
|
+
SkyDropdownModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
|
1273
|
+
SkyDropdownModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, declarations: [SkyDropdownButtonComponent,
|
|
1274
|
+
SkyDropdownComponent,
|
|
1275
|
+
SkyDropdownItemComponent,
|
|
1276
|
+
SkyDropdownMenuComponent], imports: [i4.CommonModule,
|
|
1277
|
+
i1.SkyAffixModule,
|
|
1278
|
+
i3.SkyIconModule,
|
|
1279
|
+
i1.SkyOverlayModule,
|
|
1280
|
+
SkyPopoversResourcesModule,
|
|
1281
|
+
i2.SkyThemeModule], exports: [SkyDropdownButtonComponent,
|
|
1282
|
+
SkyDropdownComponent,
|
|
1283
|
+
SkyDropdownItemComponent,
|
|
1284
|
+
SkyDropdownMenuComponent] });
|
|
1285
|
+
SkyDropdownModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, imports: [[
|
|
1286
|
+
i4.CommonModule,
|
|
1287
|
+
i1.SkyAffixModule,
|
|
1288
|
+
i3.SkyIconModule,
|
|
1289
|
+
i1.SkyOverlayModule,
|
|
1290
|
+
SkyPopoversResourcesModule,
|
|
1291
|
+
i2.SkyThemeModule,
|
|
1292
|
+
]] });
|
|
1293
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyDropdownModule, decorators: [{
|
|
1294
|
+
type: i0.NgModule,
|
|
1295
|
+
args: [{
|
|
1296
|
+
declarations: [
|
|
1297
|
+
SkyDropdownButtonComponent,
|
|
1298
|
+
SkyDropdownComponent,
|
|
1299
|
+
SkyDropdownItemComponent,
|
|
1300
|
+
SkyDropdownMenuComponent,
|
|
1301
|
+
],
|
|
1302
|
+
imports: [
|
|
1303
|
+
i4.CommonModule,
|
|
1304
|
+
i1.SkyAffixModule,
|
|
1305
|
+
i3.SkyIconModule,
|
|
1306
|
+
i1.SkyOverlayModule,
|
|
1307
|
+
SkyPopoversResourcesModule,
|
|
1308
|
+
i2.SkyThemeModule,
|
|
1309
|
+
],
|
|
1310
|
+
exports: [
|
|
1311
|
+
SkyDropdownButtonComponent,
|
|
1312
|
+
SkyDropdownComponent,
|
|
1313
|
+
SkyDropdownItemComponent,
|
|
1314
|
+
SkyDropdownMenuComponent,
|
|
1315
|
+
],
|
|
1316
|
+
}]
|
|
1317
|
+
}] });
|
|
1318
|
+
|
|
1319
|
+
/**
|
|
1320
|
+
* @internal
|
|
1321
|
+
*/
|
|
1322
|
+
var SkyPopoverAdapterService = /** @class */ (function () {
|
|
1323
|
+
function SkyPopoverAdapterService() {
|
|
1324
|
+
}
|
|
1325
|
+
SkyPopoverAdapterService.prototype.getArrowCoordinates = function (elements, placement, themeName) {
|
|
1326
|
+
var callerRect = elements.caller.nativeElement.getBoundingClientRect();
|
|
1327
|
+
var popoverRect = elements.popover.nativeElement.getBoundingClientRect();
|
|
1328
|
+
var arrowRect = elements.popoverArrow.nativeElement.getBoundingClientRect();
|
|
1329
|
+
var pixelTolerance = 20;
|
|
1330
|
+
var top;
|
|
1331
|
+
var left;
|
|
1332
|
+
if (placement === 'above' || placement === 'below') {
|
|
1333
|
+
left = callerRect.left + callerRect.width * 0.5;
|
|
1334
|
+
// Make sure the arrow never detaches from the popover.
|
|
1335
|
+
if (left - pixelTolerance < popoverRect.left) {
|
|
1336
|
+
left = popoverRect.left + pixelTolerance;
|
|
1337
|
+
}
|
|
1338
|
+
else if (left + pixelTolerance > popoverRect.right) {
|
|
1339
|
+
left = popoverRect.right - pixelTolerance;
|
|
1340
|
+
}
|
|
1341
|
+
if (placement === 'above') {
|
|
1342
|
+
if (themeName !== 'modern') {
|
|
1343
|
+
top = callerRect.top - arrowRect.height;
|
|
1344
|
+
}
|
|
1345
|
+
else {
|
|
1346
|
+
top = callerRect.top - arrowRect.height + 5;
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
else {
|
|
1350
|
+
if (themeName !== 'modern') {
|
|
1351
|
+
top = callerRect.bottom;
|
|
1352
|
+
}
|
|
1353
|
+
else {
|
|
1354
|
+
top = callerRect.bottom + 4;
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
else {
|
|
1359
|
+
top = callerRect.top + callerRect.height * 0.5;
|
|
1360
|
+
// Make sure the arrow never detaches from the popover.
|
|
1361
|
+
if (top - pixelTolerance < popoverRect.top) {
|
|
1362
|
+
top = popoverRect.top + pixelTolerance;
|
|
1363
|
+
}
|
|
1364
|
+
else if (top + pixelTolerance > popoverRect.bottom) {
|
|
1365
|
+
top = popoverRect.bottom - pixelTolerance;
|
|
1366
|
+
}
|
|
1367
|
+
if (placement === 'left') {
|
|
1368
|
+
if (themeName !== 'modern') {
|
|
1369
|
+
left = callerRect.left - arrowRect.width;
|
|
1370
|
+
}
|
|
1371
|
+
else {
|
|
1372
|
+
left = callerRect.left - arrowRect.width + 5;
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1375
|
+
else {
|
|
1376
|
+
if (themeName !== 'modern') {
|
|
1377
|
+
left = callerRect.right;
|
|
1378
|
+
}
|
|
1379
|
+
else {
|
|
1380
|
+
left = callerRect.right + 4;
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
return { top: top, left: left };
|
|
1385
|
+
};
|
|
1386
|
+
return SkyPopoverAdapterService;
|
|
1387
|
+
}());
|
|
1388
|
+
SkyPopoverAdapterService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyPopoverAdapterService, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
1389
|
+
SkyPopoverAdapterService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyPopoverAdapterService });
|
|
1390
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyPopoverAdapterService, decorators: [{
|
|
1391
|
+
type: i0.Injectable
|
|
1392
|
+
}] });
|
|
1393
|
+
|
|
1394
|
+
/**
|
|
1395
|
+
* @internal
|
|
1396
|
+
*/
|
|
1397
|
+
var skyPopoverAnimation = animations.trigger('skyPopoverAnimation', [
|
|
1398
|
+
animations.state('void', animations.style({
|
|
1399
|
+
opacity: 0,
|
|
1400
|
+
})),
|
|
1401
|
+
animations.state('open', animations.style({
|
|
1402
|
+
opacity: 1,
|
|
1403
|
+
})),
|
|
1404
|
+
animations.state('closed', animations.style({
|
|
1405
|
+
opacity: 0,
|
|
1406
|
+
})),
|
|
1407
|
+
animations.transition('void => *', [animations.animate('250ms')]),
|
|
1408
|
+
animations.transition('open => closed', [animations.animate('150ms')]),
|
|
1409
|
+
animations.transition('closed => open', [animations.animate('150ms')]),
|
|
1410
|
+
]);
|
|
1411
|
+
|
|
1412
|
+
function parseAffixPlacement(placement) {
|
|
1413
|
+
switch (placement) {
|
|
1414
|
+
case 'above':
|
|
1415
|
+
return 'above';
|
|
1416
|
+
case 'below':
|
|
1417
|
+
return 'below';
|
|
1418
|
+
case 'right':
|
|
1419
|
+
return 'right';
|
|
1420
|
+
case 'left':
|
|
1421
|
+
return 'left';
|
|
1422
|
+
/* istanbul ignore next */
|
|
1423
|
+
default:
|
|
1424
|
+
throw "SkyAffixPlacement does not have a matching value for '" + placement + "'!";
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
function parseAffixHorizontalAlignment(alignment) {
|
|
1428
|
+
switch (alignment) {
|
|
1429
|
+
case 'center':
|
|
1430
|
+
return 'center';
|
|
1431
|
+
case 'left':
|
|
1432
|
+
return 'left';
|
|
1433
|
+
case 'right':
|
|
1434
|
+
return 'right';
|
|
1435
|
+
/* istanbul ignore next */
|
|
1436
|
+
default:
|
|
1437
|
+
throw "SkyAffixHorizontalAlignment does not have a matching value for '" + alignment + "'!";
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1616
1440
|
|
|
1617
|
-
|
|
1618
|
-
|
|
1441
|
+
/**
|
|
1442
|
+
* @dynamic
|
|
1443
|
+
* @internal
|
|
1444
|
+
*/
|
|
1445
|
+
var SkyPopoverContext = /** @class */ (function () {
|
|
1446
|
+
function SkyPopoverContext(args) {
|
|
1447
|
+
this.contentTemplateRef = args.contentTemplateRef;
|
|
1448
|
+
}
|
|
1449
|
+
return SkyPopoverContext;
|
|
1450
|
+
}());
|
|
1619
1451
|
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1452
|
+
/**
|
|
1453
|
+
* @internal
|
|
1454
|
+
*/
|
|
1455
|
+
var SkyPopoverContentComponent = /** @class */ (function () {
|
|
1456
|
+
function SkyPopoverContentComponent(changeDetector, elementRef, affixService, coreAdapterService, adapterService, context, themeSvc) {
|
|
1457
|
+
this.changeDetector = changeDetector;
|
|
1458
|
+
this.elementRef = elementRef;
|
|
1459
|
+
this.affixService = affixService;
|
|
1460
|
+
this.coreAdapterService = coreAdapterService;
|
|
1461
|
+
this.adapterService = adapterService;
|
|
1462
|
+
this.context = context;
|
|
1463
|
+
this.themeSvc = themeSvc;
|
|
1464
|
+
this.dismissOnBlur = true;
|
|
1465
|
+
this.enableAnimations = true;
|
|
1466
|
+
this.isOpen = false;
|
|
1467
|
+
this.placement = null;
|
|
1468
|
+
this.ngUnsubscribe = new rxjs.Subject();
|
|
1469
|
+
this._closed = new rxjs.Subject();
|
|
1470
|
+
this._isMouseEnter = new rxjs.Subject();
|
|
1471
|
+
this._opened = new rxjs.Subject();
|
|
1472
|
+
}
|
|
1473
|
+
Object.defineProperty(SkyPopoverContentComponent.prototype, "animationState", {
|
|
1474
|
+
get: function () {
|
|
1475
|
+
return this.isOpen ? 'open' : 'closed';
|
|
1476
|
+
},
|
|
1477
|
+
enumerable: false,
|
|
1478
|
+
configurable: true
|
|
1479
|
+
});
|
|
1480
|
+
Object.defineProperty(SkyPopoverContentComponent.prototype, "closed", {
|
|
1481
|
+
get: function () {
|
|
1482
|
+
return this._closed.asObservable();
|
|
1483
|
+
},
|
|
1484
|
+
enumerable: false,
|
|
1485
|
+
configurable: true
|
|
1486
|
+
});
|
|
1487
|
+
Object.defineProperty(SkyPopoverContentComponent.prototype, "opened", {
|
|
1488
|
+
get: function () {
|
|
1489
|
+
return this._opened.asObservable();
|
|
1490
|
+
},
|
|
1491
|
+
enumerable: false,
|
|
1492
|
+
configurable: true
|
|
1493
|
+
});
|
|
1494
|
+
Object.defineProperty(SkyPopoverContentComponent.prototype, "isMouseEnter", {
|
|
1495
|
+
get: function () {
|
|
1496
|
+
return this._isMouseEnter.asObservable();
|
|
1497
|
+
},
|
|
1498
|
+
enumerable: false,
|
|
1499
|
+
configurable: true
|
|
1500
|
+
});
|
|
1501
|
+
SkyPopoverContentComponent.prototype.ngOnInit = function () {
|
|
1502
|
+
var _this = this;
|
|
1503
|
+
this.contentTarget.createEmbeddedView(this.context.contentTemplateRef);
|
|
1504
|
+
this.addEventListeners();
|
|
1505
|
+
/*istanbul ignore else*/
|
|
1506
|
+
if (this.themeSvc) {
|
|
1507
|
+
this.themeSvc.settingsChange
|
|
1508
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1509
|
+
.subscribe(function (themeSettings) {
|
|
1510
|
+
var _a, _b;
|
|
1511
|
+
/*istanbul ignore next*/
|
|
1512
|
+
_this.themeName = (_b = (_a = themeSettings.currentSettings) === null || _a === void 0 ? void 0 : _a.theme) === null || _b === void 0 ? void 0 : _b.name;
|
|
1513
|
+
});
|
|
1651
1514
|
}
|
|
1652
|
-
return t;
|
|
1653
1515
|
};
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
t[p[i]] = s[p[i]];
|
|
1516
|
+
SkyPopoverContentComponent.prototype.ngOnDestroy = function () {
|
|
1517
|
+
this.ngUnsubscribe.next();
|
|
1518
|
+
this.ngUnsubscribe.complete();
|
|
1519
|
+
this._closed.complete();
|
|
1520
|
+
this._isMouseEnter.complete();
|
|
1521
|
+
this._opened.complete();
|
|
1522
|
+
/* istanbul ignore else */
|
|
1523
|
+
if (this.affixer) {
|
|
1524
|
+
this.affixer.destroy();
|
|
1525
|
+
this.affixer = undefined;
|
|
1665
1526
|
}
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
1671
|
-
r = Reflect.decorate(decorators, target, key, desc);
|
|
1672
|
-
else
|
|
1673
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
1674
|
-
if (d = decorators[i])
|
|
1675
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1676
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1677
|
-
}
|
|
1678
|
-
function __param(paramIndex, decorator) {
|
|
1679
|
-
return function (target, key) { decorator(target, key, paramIndex); };
|
|
1680
|
-
}
|
|
1681
|
-
function __metadata(metadataKey, metadataValue) {
|
|
1682
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
1683
|
-
return Reflect.metadata(metadataKey, metadataValue);
|
|
1684
|
-
}
|
|
1685
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
1686
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1687
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1688
|
-
function fulfilled(value) { try {
|
|
1689
|
-
step(generator.next(value));
|
|
1527
|
+
};
|
|
1528
|
+
SkyPopoverContentComponent.prototype.onAnimationEvent = function (event) {
|
|
1529
|
+
if (event.fromState === 'void') {
|
|
1530
|
+
return;
|
|
1690
1531
|
}
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1532
|
+
if (event.phaseName === 'done') {
|
|
1533
|
+
if (event.toState === 'open') {
|
|
1534
|
+
this._opened.next();
|
|
1535
|
+
}
|
|
1536
|
+
else {
|
|
1537
|
+
this._closed.next();
|
|
1538
|
+
}
|
|
1696
1539
|
}
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
t = op;
|
|
1722
|
-
break;
|
|
1723
|
-
case 4:
|
|
1724
|
-
_.label++;
|
|
1725
|
-
return { value: op[1], done: false };
|
|
1726
|
-
case 5:
|
|
1727
|
-
_.label++;
|
|
1728
|
-
y = op[1];
|
|
1729
|
-
op = [0];
|
|
1730
|
-
continue;
|
|
1731
|
-
case 7:
|
|
1732
|
-
op = _.ops.pop();
|
|
1733
|
-
_.trys.pop();
|
|
1734
|
-
continue;
|
|
1735
|
-
default:
|
|
1736
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
1737
|
-
_ = 0;
|
|
1738
|
-
continue;
|
|
1739
|
-
}
|
|
1740
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
|
|
1741
|
-
_.label = op[1];
|
|
1742
|
-
break;
|
|
1743
|
-
}
|
|
1744
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
1745
|
-
_.label = t[1];
|
|
1746
|
-
t = op;
|
|
1747
|
-
break;
|
|
1748
|
-
}
|
|
1749
|
-
if (t && _.label < t[2]) {
|
|
1750
|
-
_.label = t[2];
|
|
1751
|
-
_.ops.push(op);
|
|
1752
|
-
break;
|
|
1753
|
-
}
|
|
1754
|
-
if (t[2])
|
|
1755
|
-
_.ops.pop();
|
|
1756
|
-
_.trys.pop();
|
|
1757
|
-
continue;
|
|
1758
|
-
}
|
|
1759
|
-
op = body.call(thisArg, _);
|
|
1540
|
+
};
|
|
1541
|
+
SkyPopoverContentComponent.prototype.open = function (caller, config) {
|
|
1542
|
+
var _this = this;
|
|
1543
|
+
this.caller = caller;
|
|
1544
|
+
this.dismissOnBlur = config.dismissOnBlur;
|
|
1545
|
+
this.enableAnimations = config.enableAnimations;
|
|
1546
|
+
this.horizontalAlignment = config.horizontalAlignment;
|
|
1547
|
+
this.placement = config.placement;
|
|
1548
|
+
this.popoverTitle = config.popoverTitle;
|
|
1549
|
+
this.popoverType = config.popoverType;
|
|
1550
|
+
this.changeDetector.markForCheck();
|
|
1551
|
+
// Indicates if the popover should be displayed statically.
|
|
1552
|
+
// Please note: This feature is internal-only and used by the visual tests to capture multiple
|
|
1553
|
+
// states simultaneously without the overhead of event listeners.
|
|
1554
|
+
/* istanbul ignore if */
|
|
1555
|
+
if (config.isStatic) {
|
|
1556
|
+
this.isOpen = true;
|
|
1557
|
+
this.changeDetector.markForCheck();
|
|
1558
|
+
return;
|
|
1559
|
+
}
|
|
1560
|
+
// Let the styles render before gauging the affix dimensions.
|
|
1561
|
+
setTimeout(function () {
|
|
1562
|
+
if (!_this.popoverRef.nativeElement || _this.ngUnsubscribe.isStopped) {
|
|
1563
|
+
return;
|
|
1760
1564
|
}
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
y = 0;
|
|
1565
|
+
if (!_this.affixer) {
|
|
1566
|
+
_this.setupAffixer();
|
|
1764
1567
|
}
|
|
1765
|
-
|
|
1766
|
-
|
|
1568
|
+
var affixOptions = {
|
|
1569
|
+
autoFitContext: i1.SkyAffixAutoFitContext.Viewport,
|
|
1570
|
+
enableAutoFit: true,
|
|
1571
|
+
horizontalAlignment: parseAffixHorizontalAlignment(_this.horizontalAlignment),
|
|
1572
|
+
isSticky: true,
|
|
1573
|
+
placement: parseAffixPlacement(_this.placement),
|
|
1574
|
+
};
|
|
1575
|
+
// Ensure vertical alignment is set according to the popover's placement value.
|
|
1576
|
+
if (affixOptions.placement === 'left' ||
|
|
1577
|
+
affixOptions.placement === 'right') {
|
|
1578
|
+
affixOptions.verticalAlignment = 'middle';
|
|
1767
1579
|
}
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1580
|
+
_this.affixer.affixTo(_this.caller.nativeElement, affixOptions);
|
|
1581
|
+
_this.updateArrowOffset();
|
|
1582
|
+
_this.isOpen = true;
|
|
1583
|
+
_this.changeDetector.markForCheck();
|
|
1584
|
+
});
|
|
1585
|
+
};
|
|
1586
|
+
SkyPopoverContentComponent.prototype.close = function () {
|
|
1587
|
+
this.isOpen = false;
|
|
1588
|
+
this.changeDetector.markForCheck();
|
|
1589
|
+
};
|
|
1590
|
+
SkyPopoverContentComponent.prototype.applyFocus = function () {
|
|
1591
|
+
if (this.isOpen) {
|
|
1592
|
+
this.coreAdapterService.getFocusableChildrenAndApplyFocus(this.popoverRef, '.sky-popover', true);
|
|
1593
|
+
}
|
|
1594
|
+
};
|
|
1595
|
+
SkyPopoverContentComponent.prototype.setupAffixer = function () {
|
|
1596
|
+
var _this = this;
|
|
1597
|
+
var affixer = this.affixService.createAffixer(this.popoverRef);
|
|
1598
|
+
affixer.offsetChange.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1599
|
+
_this.updateArrowOffset();
|
|
1600
|
+
_this.changeDetector.markForCheck();
|
|
1601
|
+
});
|
|
1602
|
+
affixer.overflowScroll.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1603
|
+
_this.updateArrowOffset();
|
|
1604
|
+
_this.changeDetector.markForCheck();
|
|
1605
|
+
});
|
|
1606
|
+
affixer.placementChange
|
|
1607
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1608
|
+
.subscribe(function (change) {
|
|
1609
|
+
_this.placement = change.placement;
|
|
1610
|
+
_this.changeDetector.markForCheck();
|
|
1611
|
+
});
|
|
1612
|
+
this.affixer = affixer;
|
|
1613
|
+
};
|
|
1614
|
+
SkyPopoverContentComponent.prototype.updateArrowOffset = function () {
|
|
1615
|
+
if (this.placement) {
|
|
1616
|
+
var _c = this.adapterService.getArrowCoordinates({
|
|
1617
|
+
caller: this.caller,
|
|
1618
|
+
popover: this.popoverRef,
|
|
1619
|
+
popoverArrow: this.arrowRef,
|
|
1620
|
+
}, this.placement, this.themeName), top = _c.top, left = _c.left;
|
|
1621
|
+
this.arrowTop = top;
|
|
1622
|
+
this.arrowLeft = left;
|
|
1623
|
+
}
|
|
1624
|
+
};
|
|
1625
|
+
SkyPopoverContentComponent.prototype.isFocusLeavingElement = function (event) {
|
|
1626
|
+
var focusableItems = this.coreAdapterService.getFocusableChildren(this.elementRef.nativeElement);
|
|
1627
|
+
var isFirstItem = focusableItems[0] === event.target && event.shiftKey;
|
|
1628
|
+
var isLastItem = focusableItems[focusableItems.length - 1] === event.target &&
|
|
1629
|
+
!event.shiftKey;
|
|
1630
|
+
return focusableItems.length === 0 || isFirstItem || isLastItem;
|
|
1631
|
+
};
|
|
1632
|
+
SkyPopoverContentComponent.prototype.addEventListeners = function () {
|
|
1633
|
+
var _this = this;
|
|
1634
|
+
var hostElement = this.elementRef.nativeElement;
|
|
1635
|
+
rxjs.fromEvent(hostElement, 'mouseenter')
|
|
1636
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1637
|
+
.subscribe(function () { return _this._isMouseEnter.next(true); });
|
|
1638
|
+
rxjs.fromEvent(hostElement, 'mouseleave')
|
|
1639
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1640
|
+
.subscribe(function () { return _this._isMouseEnter.next(false); });
|
|
1641
|
+
rxjs.fromEvent(hostElement, 'keydown')
|
|
1642
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1643
|
+
.subscribe(function (event) {
|
|
1644
|
+
var key = event.key.toLowerCase();
|
|
1645
|
+
/* tslint:disable-next-line:switch-default */
|
|
1646
|
+
switch (key) {
|
|
1647
|
+
case 'escape':
|
|
1648
|
+
_this.close();
|
|
1649
|
+
_this.caller.nativeElement.focus();
|
|
1650
|
+
event.preventDefault();
|
|
1651
|
+
event.stopPropagation();
|
|
1652
|
+
break;
|
|
1653
|
+
// Since the popover now lives in an overlay at the bottom of the document body, we need
|
|
1654
|
+
// to handle the tab key ourselves. Otherwise, focus would be moved to the browser's
|
|
1655
|
+
// search bar.
|
|
1656
|
+
case 'tab':
|
|
1657
|
+
if (!_this.dismissOnBlur) {
|
|
1658
|
+
return;
|
|
1659
|
+
}
|
|
1660
|
+
/*istanbul ignore else*/
|
|
1661
|
+
if (_this.isFocusLeavingElement(event)) {
|
|
1662
|
+
_this.close();
|
|
1663
|
+
_this.caller.nativeElement.focus();
|
|
1664
|
+
event.preventDefault();
|
|
1665
|
+
event.stopPropagation();
|
|
1666
|
+
}
|
|
1667
|
+
break;
|
|
1797
1668
|
}
|
|
1798
|
-
};
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
if (!m)
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1669
|
+
});
|
|
1670
|
+
};
|
|
1671
|
+
return SkyPopoverContentComponent;
|
|
1672
|
+
}());
|
|
1673
|
+
SkyPopoverContentComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyPopoverContentComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ElementRef }, { token: i1__namespace.SkyAffixService }, { token: i1__namespace.SkyCoreAdapterService }, { token: SkyPopoverAdapterService }, { token: SkyPopoverContext }, { token: i2__namespace.SkyThemeService, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
1674
|
+
SkyPopoverContentComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyPopoverContentComponent, selector: "sky-popover-content", providers: [SkyPopoverAdapterService], viewQueries: [{ propertyName: "arrowRef", first: true, predicate: ["arrowRef"], descendants: true, read: i0.ElementRef, static: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, read: i0.ElementRef, static: true }, { propertyName: "contentTarget", first: true, predicate: ["contentTarget"], descendants: true, read: i0.ViewContainerRef, static: true }], ngImport: i0__namespace, template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-emphasized': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n", styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"], directives: [{ type: i4__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2__namespace.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { type: i4__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [skyPopoverAnimation] });
|
|
1675
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyPopoverContentComponent, decorators: [{
|
|
1676
|
+
type: i0.Component,
|
|
1677
|
+
args: [{
|
|
1678
|
+
selector: 'sky-popover-content',
|
|
1679
|
+
template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-emphasized': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n",
|
|
1680
|
+
styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"],
|
|
1681
|
+
animations: [skyPopoverAnimation],
|
|
1682
|
+
providers: [SkyPopoverAdapterService],
|
|
1683
|
+
}]
|
|
1684
|
+
}], ctorParameters: function () {
|
|
1685
|
+
return [{ type: i0__namespace.ChangeDetectorRef }, { type: i0__namespace.ElementRef }, { type: i1__namespace.SkyAffixService }, { type: i1__namespace.SkyCoreAdapterService }, { type: SkyPopoverAdapterService }, { type: SkyPopoverContext }, { type: i2__namespace.SkyThemeService, decorators: [{
|
|
1686
|
+
type: i0.Optional
|
|
1687
|
+
}] }];
|
|
1688
|
+
}, propDecorators: { arrowRef: [{
|
|
1689
|
+
type: i0.ViewChild,
|
|
1690
|
+
args: ['arrowRef', {
|
|
1691
|
+
read: i0.ElementRef,
|
|
1692
|
+
static: true,
|
|
1693
|
+
}]
|
|
1694
|
+
}], popoverRef: [{
|
|
1695
|
+
type: i0.ViewChild,
|
|
1696
|
+
args: ['popoverRef', {
|
|
1697
|
+
read: i0.ElementRef,
|
|
1698
|
+
static: true,
|
|
1699
|
+
}]
|
|
1700
|
+
}], contentTarget: [{
|
|
1701
|
+
type: i0.ViewChild,
|
|
1702
|
+
args: ['contentTarget', {
|
|
1703
|
+
read: i0.ViewContainerRef,
|
|
1704
|
+
static: true,
|
|
1705
|
+
}]
|
|
1706
|
+
}] } });
|
|
1707
|
+
|
|
1708
|
+
var SkyPopoverComponent = /** @class */ (function () {
|
|
1709
|
+
function SkyPopoverComponent(overlayService) {
|
|
1710
|
+
this.overlayService = overlayService;
|
|
1711
|
+
/**
|
|
1712
|
+
* Fires when users close the popover.
|
|
1713
|
+
*/
|
|
1714
|
+
this.popoverClosed = new i0.EventEmitter();
|
|
1715
|
+
/**
|
|
1716
|
+
* Fires when users open the popover.
|
|
1717
|
+
*/
|
|
1718
|
+
this.popoverOpened = new i0.EventEmitter();
|
|
1719
|
+
/**
|
|
1720
|
+
* Indicates that the popover is in the process of being opened or closed.
|
|
1721
|
+
* @internal
|
|
1722
|
+
*/
|
|
1723
|
+
this.isActive = false;
|
|
1724
|
+
/**
|
|
1725
|
+
* Used by unit tests to disable animations since the component is injected at the bottom of the
|
|
1726
|
+
* document body.
|
|
1727
|
+
* @internal
|
|
1728
|
+
*/
|
|
1729
|
+
this.enableAnimations = true;
|
|
1730
|
+
this.isMouseEnter = false;
|
|
1731
|
+
this.isMarkedForCloseOnMouseLeave = false;
|
|
1732
|
+
this.ngUnsubscribe = new rxjs.Subject();
|
|
1812
1733
|
}
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1734
|
+
Object.defineProperty(SkyPopoverComponent.prototype, "alignment", {
|
|
1735
|
+
get: function () {
|
|
1736
|
+
return this._alignment || 'center';
|
|
1737
|
+
},
|
|
1738
|
+
/**
|
|
1739
|
+
* Specifies the horizontal alignment of the popover in relation to the trigger element.
|
|
1740
|
+
* The `skyPopoverAlignment` property on the popover directive takes precedence over this property when specified.
|
|
1741
|
+
* @default "center"
|
|
1742
|
+
*/
|
|
1743
|
+
set: function (value) {
|
|
1744
|
+
this._alignment = value;
|
|
1745
|
+
},
|
|
1746
|
+
enumerable: false,
|
|
1747
|
+
configurable: true
|
|
1748
|
+
});
|
|
1749
|
+
Object.defineProperty(SkyPopoverComponent.prototype, "dismissOnBlur", {
|
|
1750
|
+
get: function () {
|
|
1751
|
+
if (this._dismissOnBlur === undefined) {
|
|
1752
|
+
return true;
|
|
1753
|
+
}
|
|
1754
|
+
return this._dismissOnBlur;
|
|
1755
|
+
},
|
|
1756
|
+
/**
|
|
1757
|
+
* Indicates whether to close the popover when it loses focus.
|
|
1758
|
+
* To require users to click a trigger button to close the popover, set this input to false.
|
|
1759
|
+
* @default true
|
|
1760
|
+
*/
|
|
1761
|
+
set: function (value) {
|
|
1762
|
+
this._dismissOnBlur = value;
|
|
1763
|
+
},
|
|
1764
|
+
enumerable: false,
|
|
1765
|
+
configurable: true
|
|
1766
|
+
});
|
|
1767
|
+
Object.defineProperty(SkyPopoverComponent.prototype, "placement", {
|
|
1768
|
+
get: function () {
|
|
1769
|
+
return this._placement || 'above';
|
|
1770
|
+
},
|
|
1771
|
+
/**
|
|
1772
|
+
* Specifies the placement of the popover in relation to the trigger element.
|
|
1773
|
+
* The `skyPopoverPlacement` property on the popover directive takes precedence over this property when specified.
|
|
1774
|
+
* @default "above"
|
|
1775
|
+
*/
|
|
1776
|
+
set: function (value) {
|
|
1777
|
+
this._placement = value;
|
|
1778
|
+
},
|
|
1779
|
+
enumerable: false,
|
|
1780
|
+
configurable: true
|
|
1781
|
+
});
|
|
1782
|
+
Object.defineProperty(SkyPopoverComponent.prototype, "popoverType", {
|
|
1783
|
+
get: function () {
|
|
1784
|
+
return this._popoverType || 'info';
|
|
1785
|
+
},
|
|
1786
|
+
/**
|
|
1787
|
+
* Specifies the type of popover.
|
|
1788
|
+
* @default "info"
|
|
1789
|
+
*/
|
|
1790
|
+
set: function (value) {
|
|
1791
|
+
this._popoverType = value;
|
|
1792
|
+
},
|
|
1793
|
+
enumerable: false,
|
|
1794
|
+
configurable: true
|
|
1795
|
+
});
|
|
1796
|
+
SkyPopoverComponent.prototype.ngOnDestroy = function () {
|
|
1797
|
+
this.ngUnsubscribe.next();
|
|
1798
|
+
this.ngUnsubscribe.complete();
|
|
1799
|
+
if (this.overlay) {
|
|
1800
|
+
this.overlayService.close(this.overlay);
|
|
1801
|
+
this.overlay = undefined;
|
|
1817
1802
|
}
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1803
|
+
};
|
|
1804
|
+
/**
|
|
1805
|
+
* Positions the popover next to a given caller element.
|
|
1806
|
+
* @param caller The element that opened the popover.
|
|
1807
|
+
* @param placement The placement of the popover.
|
|
1808
|
+
* @param alignment The horizontal alignment of the popover.
|
|
1809
|
+
* @internal
|
|
1810
|
+
*/
|
|
1811
|
+
SkyPopoverComponent.prototype.positionNextTo = function (caller, placement, alignment) {
|
|
1812
|
+
if (!this.overlay) {
|
|
1813
|
+
this.setupOverlay();
|
|
1821
1814
|
}
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1815
|
+
this.placement = placement !== null && placement !== void 0 ? placement : this.placement;
|
|
1816
|
+
this.alignment = alignment !== null && alignment !== void 0 ? alignment : this.alignment;
|
|
1817
|
+
this.isActive = true;
|
|
1818
|
+
this.contentRef.open(caller, {
|
|
1819
|
+
dismissOnBlur: this.dismissOnBlur,
|
|
1820
|
+
enableAnimations: this.enableAnimations,
|
|
1821
|
+
horizontalAlignment: this.alignment,
|
|
1822
|
+
isStatic: false,
|
|
1823
|
+
placement: this.placement,
|
|
1824
|
+
popoverTitle: this.popoverTitle,
|
|
1825
|
+
popoverType: this.popoverType,
|
|
1826
|
+
});
|
|
1827
|
+
};
|
|
1828
|
+
/**
|
|
1829
|
+
* Closes the popover.
|
|
1830
|
+
* @internal
|
|
1831
|
+
*/
|
|
1832
|
+
SkyPopoverComponent.prototype.close = function () {
|
|
1833
|
+
var _a;
|
|
1834
|
+
/*istanbul ignore next*/
|
|
1835
|
+
(_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.close();
|
|
1836
|
+
};
|
|
1837
|
+
/**
|
|
1838
|
+
* Brings focus to the popover element if its open.
|
|
1839
|
+
* @internal
|
|
1840
|
+
*/
|
|
1841
|
+
SkyPopoverComponent.prototype.applyFocus = function () {
|
|
1842
|
+
var _a;
|
|
1843
|
+
/*istanbul ignore next*/
|
|
1844
|
+
(_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.applyFocus();
|
|
1845
|
+
};
|
|
1846
|
+
/**
|
|
1847
|
+
* Adds a flag to the popover to close when the mouse leaves the popover's bounds.
|
|
1848
|
+
* @internal
|
|
1849
|
+
*/
|
|
1850
|
+
SkyPopoverComponent.prototype.markForCloseOnMouseLeave = function () {
|
|
1851
|
+
this.isMarkedForCloseOnMouseLeave = true;
|
|
1852
|
+
};
|
|
1853
|
+
SkyPopoverComponent.prototype.setupOverlay = function () {
|
|
1854
|
+
var _this = this;
|
|
1855
|
+
var overlay = this.overlayService.create({
|
|
1856
|
+
enableScroll: true,
|
|
1857
|
+
enablePointerEvents: true,
|
|
1858
|
+
});
|
|
1859
|
+
overlay.backdropClick.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1860
|
+
if (_this.dismissOnBlur) {
|
|
1861
|
+
_this.close();
|
|
1847
1862
|
}
|
|
1848
|
-
}
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
function __importDefault(mod) {
|
|
1913
|
-
return (mod && mod.__esModule) ? mod : { default: mod };
|
|
1914
|
-
}
|
|
1915
|
-
function __classPrivateFieldGet(receiver, state, kind, f) {
|
|
1916
|
-
if (kind === "a" && !f)
|
|
1917
|
-
throw new TypeError("Private accessor was defined without a getter");
|
|
1918
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
1919
|
-
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
1920
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
1921
|
-
}
|
|
1922
|
-
function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
|
1923
|
-
if (kind === "m")
|
|
1924
|
-
throw new TypeError("Private method is not writable");
|
|
1925
|
-
if (kind === "a" && !f)
|
|
1926
|
-
throw new TypeError("Private accessor was defined without a setter");
|
|
1927
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
1928
|
-
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
1929
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
1930
|
-
}
|
|
1863
|
+
});
|
|
1864
|
+
var contentRef = overlay.attachComponent(SkyPopoverContentComponent, [
|
|
1865
|
+
{
|
|
1866
|
+
provide: SkyPopoverContext,
|
|
1867
|
+
useValue: new SkyPopoverContext({
|
|
1868
|
+
contentTemplateRef: this.templateRef,
|
|
1869
|
+
}),
|
|
1870
|
+
},
|
|
1871
|
+
]);
|
|
1872
|
+
contentRef.opened.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1873
|
+
_this.popoverOpened.emit(_this);
|
|
1874
|
+
});
|
|
1875
|
+
contentRef.closed.pipe(operators.takeUntil(this.ngUnsubscribe)).subscribe(function () {
|
|
1876
|
+
/*istanbul ignore else*/
|
|
1877
|
+
if (_this.isActive && _this.overlay) {
|
|
1878
|
+
_this.overlayService.close(_this.overlay);
|
|
1879
|
+
_this.overlay = undefined;
|
|
1880
|
+
_this.isActive = false;
|
|
1881
|
+
_this.popoverClosed.emit(_this);
|
|
1882
|
+
}
|
|
1883
|
+
});
|
|
1884
|
+
contentRef.isMouseEnter
|
|
1885
|
+
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
1886
|
+
.subscribe(function (isMouseEnter) {
|
|
1887
|
+
_this.isMouseEnter = isMouseEnter;
|
|
1888
|
+
if (_this.isMarkedForCloseOnMouseLeave) {
|
|
1889
|
+
_this.isMarkedForCloseOnMouseLeave = false;
|
|
1890
|
+
_this.close();
|
|
1891
|
+
}
|
|
1892
|
+
});
|
|
1893
|
+
this.overlay = overlay;
|
|
1894
|
+
this.contentRef = contentRef;
|
|
1895
|
+
};
|
|
1896
|
+
return SkyPopoverComponent;
|
|
1897
|
+
}());
|
|
1898
|
+
SkyPopoverComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyPopoverComponent, deps: [{ token: i1__namespace.SkyOverlayService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
1899
|
+
SkyPopoverComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyPopoverComponent, selector: "sky-popover", inputs: { alignment: "alignment", dismissOnBlur: "dismissOnBlur", placement: "placement", popoverTitle: "popoverTitle", popoverType: "popoverType" }, outputs: { popoverClosed: "popoverClosed", popoverOpened: "popoverOpened" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["templateRef"], descendants: true, read: i0.TemplateRef, static: true }], ngImport: i0__namespace, template: "<ng-template #templateRef>\n <ng-content></ng-content>\n</ng-template>\n" });
|
|
1900
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: SkyPopoverComponent, decorators: [{
|
|
1901
|
+
type: i0.Component,
|
|
1902
|
+
args: [{
|
|
1903
|
+
selector: 'sky-popover',
|
|
1904
|
+
template: "<ng-template #templateRef>\n <ng-content></ng-content>\n</ng-template>\n",
|
|
1905
|
+
}]
|
|
1906
|
+
}], ctorParameters: function () { return [{ type: i1__namespace.SkyOverlayService }]; }, propDecorators: { alignment: [{
|
|
1907
|
+
type: i0.Input
|
|
1908
|
+
}], dismissOnBlur: [{
|
|
1909
|
+
type: i0.Input
|
|
1910
|
+
}], placement: [{
|
|
1911
|
+
type: i0.Input
|
|
1912
|
+
}], popoverTitle: [{
|
|
1913
|
+
type: i0.Input
|
|
1914
|
+
}], popoverType: [{
|
|
1915
|
+
type: i0.Input
|
|
1916
|
+
}], popoverClosed: [{
|
|
1917
|
+
type: i0.Output
|
|
1918
|
+
}], popoverOpened: [{
|
|
1919
|
+
type: i0.Output
|
|
1920
|
+
}], templateRef: [{
|
|
1921
|
+
type: i0.ViewChild,
|
|
1922
|
+
args: ['templateRef', {
|
|
1923
|
+
read: i0.TemplateRef,
|
|
1924
|
+
static: true,
|
|
1925
|
+
}]
|
|
1926
|
+
}] } });
|
|
1931
1927
|
|
|
1932
1928
|
/**
|
|
1933
1929
|
* Specifies the type of message to send to the popover component.
|
|
@@ -2090,7 +2086,6 @@
|
|
|
2090
2086
|
SkyPopoverDirective.prototype.removeEventListeners = function () {
|
|
2091
2087
|
this.ngUnsubscribe.next();
|
|
2092
2088
|
this.ngUnsubscribe.complete();
|
|
2093
|
-
this.ngUnsubscribe = undefined;
|
|
2094
2089
|
};
|
|
2095
2090
|
SkyPopoverDirective.prototype.handleIncomingMessages = function (message) {
|
|
2096
2091
|
/* tslint:disable-next-line:switch-default */
|