@mintplayer/ng-bootstrap 13.1.2 → 13.1.7

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.
Files changed (74) hide show
  1. package/esm2020/index.mjs +2 -1
  2. package/esm2020/lib/components/calendar/calendar.component.mjs +77 -34
  3. package/esm2020/lib/components/card/card/card.component.mjs +1 -2
  4. package/esm2020/lib/components/carousel/carousel/carousel.component.mjs +11 -7
  5. package/esm2020/lib/components/carousel/carousel-image/carousel-image.directive.mjs +10 -7
  6. package/esm2020/lib/components/datatable/datatable/datatable.component.mjs +51 -0
  7. package/esm2020/lib/components/datatable/datatable-column/datatable-column-metadata.mjs +2 -0
  8. package/esm2020/lib/components/datatable/datatable-column/datatable-column.directive.mjs +19 -0
  9. package/esm2020/lib/components/datatable/datatable-settings.mjs +37 -0
  10. package/esm2020/lib/components/datatable/datatable.module.mjs +40 -0
  11. package/esm2020/lib/components/datatable/index.mjs +6 -0
  12. package/esm2020/lib/components/datatable/row-template/row-template.directive.mjs +19 -0
  13. package/esm2020/lib/components/datepicker/datepicker.component.mjs +22 -0
  14. package/esm2020/lib/components/datepicker/datepicker.module.mjs +34 -0
  15. package/esm2020/lib/components/datepicker/index.mjs +3 -0
  16. package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +31 -0
  17. package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +64 -0
  18. package/esm2020/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.mjs +29 -0
  19. package/esm2020/lib/components/dropdown/dropdown.module.mjs +40 -0
  20. package/esm2020/lib/components/dropdown/index.mjs +5 -0
  21. package/esm2020/lib/components/index.mjs +6 -1
  22. package/esm2020/lib/components/multiselect/index.mjs +3 -0
  23. package/esm2020/lib/components/multiselect/multiselect.component.mjs +33 -0
  24. package/esm2020/lib/components/multiselect/multiselect.module.mjs +30 -0
  25. package/esm2020/lib/components/navbar/nav-link/nav-link.directive.mjs +1 -1
  26. package/esm2020/lib/components/navbar/navbar/navbar.component.mjs +2 -2
  27. package/esm2020/lib/components/pagination/pagination/pagination.component.mjs +146 -0
  28. package/esm2020/lib/components/pagination/pagination.module.mjs +26 -0
  29. package/esm2020/lib/components/scrollspy/component/scrollspy.component.mjs +48 -0
  30. package/esm2020/lib/components/scrollspy/directives/scrollspy.directive.mjs +16 -0
  31. package/esm2020/lib/components/scrollspy/index.mjs +4 -0
  32. package/esm2020/lib/components/scrollspy/scrollspy.module.mjs +31 -0
  33. package/esm2020/lib/interfaces/index.mjs +2 -0
  34. package/esm2020/lib/interfaces/page-with-selection.mjs +2 -0
  35. package/esm2020/lib/pipes/month-name/month-name.pipe.mjs +7 -2
  36. package/esm2020/lib/types/page-number.type.mjs +2 -0
  37. package/fesm2015/mintplayer-ng-bootstrap.mjs +743 -56
  38. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  39. package/fesm2020/mintplayer-ng-bootstrap.mjs +739 -56
  40. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  41. package/index.d.ts +1 -0
  42. package/lib/components/calendar/calendar.component.d.ts +21 -13
  43. package/lib/components/carousel/carousel/carousel.component.d.ts +4 -3
  44. package/lib/components/carousel/carousel-image/carousel-image.directive.d.ts +5 -2
  45. package/lib/components/datatable/datatable/datatable.component.d.ts +17 -0
  46. package/lib/components/datatable/datatable-column/datatable-column-metadata.d.ts +4 -0
  47. package/lib/components/datatable/datatable-column/datatable-column.directive.d.ts +10 -0
  48. package/lib/components/datatable/datatable-settings.d.ts +15 -0
  49. package/lib/components/datatable/datatable.module.d.ts +11 -0
  50. package/lib/components/datatable/index.d.ts +5 -0
  51. package/lib/components/datatable/row-template/row-template.directive.d.ts +9 -0
  52. package/lib/components/datepicker/datepicker.component.d.ts +10 -0
  53. package/lib/components/datepicker/datepicker.module.d.ts +10 -0
  54. package/lib/components/datepicker/index.d.ts +2 -0
  55. package/lib/components/dropdown/dropdown/dropdown.directive.d.ts +13 -0
  56. package/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +17 -0
  57. package/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.d.ts +11 -0
  58. package/lib/components/dropdown/dropdown.module.d.ts +11 -0
  59. package/lib/components/dropdown/index.d.ts +4 -0
  60. package/lib/components/index.d.ts +5 -0
  61. package/lib/components/multiselect/index.d.ts +2 -0
  62. package/lib/components/multiselect/multiselect.component.d.ts +11 -0
  63. package/lib/components/multiselect/multiselect.module.d.ts +9 -0
  64. package/lib/components/pagination/pagination/pagination.component.d.ts +45 -0
  65. package/lib/components/pagination/pagination.module.d.ts +8 -0
  66. package/lib/components/scrollspy/component/scrollspy.component.d.ts +15 -0
  67. package/lib/components/scrollspy/directives/scrollspy.directive.d.ts +8 -0
  68. package/lib/components/scrollspy/index.d.ts +3 -0
  69. package/lib/components/scrollspy/scrollspy.module.d.ts +9 -0
  70. package/lib/interfaces/index.d.ts +1 -0
  71. package/lib/interfaces/page-with-selection.d.ts +5 -0
  72. package/lib/pipes/month-name/month-name.pipe.d.ts +1 -1
  73. package/lib/types/page-number.type.d.ts +1 -0
  74. package/package.json +3 -1
@@ -1,14 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, NgModule, Injectable, Pipe, Directive, ElementRef, ContentChildren, ViewChild, Optional, forwardRef, SkipSelf, Host, Inject, TemplateRef, ContentChild } from '@angular/core';
2
+ import { Component, Input, NgModule, Injectable, Pipe, EventEmitter, Output, Directive, ContentChildren, ViewChild, Optional, forwardRef, SkipSelf, Host, Inject, TemplateRef, ContentChild, HostListener } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
4
+ import { CommonModule, DOCUMENT } from '@angular/common';
5
5
  import { SlideUpDownAnimation, FadeInOutAnimation, CarouselSlideAnimation } from '@mintplayer/ng-animations';
6
- import { Subject, BehaviorSubject } from 'rxjs';
7
- import { map, takeUntil, take } from 'rxjs/operators';
6
+ import { Subject, BehaviorSubject, map, takeUntil, filter, take, Observable, combineLatest } from 'rxjs';
7
+ import { map as map$1, takeUntil as takeUntil$1, take as take$1 } from 'rxjs/operators';
8
8
  import { RouterModule } from '@angular/router';
9
9
  import * as i1$1 from '@mintplayer/ng-click-outside';
10
10
  import { ClickOutsideModule } from '@mintplayer/ng-click-outside';
11
11
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
12
+ import { TemplatePortal } from '@angular/cdk/portal';
13
+ import * as i1$2 from '@angular/cdk/overlay';
14
+ import { OverlayModule } from '@angular/cdk/overlay';
12
15
 
13
16
  var Color;
14
17
  (function (Color) {
@@ -88,7 +91,6 @@ class BsCardComponent {
88
91
  ngOnInit() {
89
92
  }
90
93
  ngAfterViewInit() {
91
- // console.log('header', this.header);
92
94
  }
93
95
  }
94
96
  BsCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -230,7 +232,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
230
232
 
231
233
  class MonthNamePipe {
232
234
  transform(date, ...args) {
233
- return date.toLocaleString("default", { month: 'long' });
235
+ if (date) {
236
+ return date.toLocaleString("default", { month: 'long' });
237
+ }
238
+ else {
239
+ return '';
240
+ }
234
241
  }
235
242
  }
236
243
  MonthNamePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonthNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -243,58 +250,100 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
243
250
  }] });
244
251
 
245
252
  class BsCalendarComponent {
246
- constructor(calendarMonthService) {
253
+ constructor(calendarMonthService, ref) {
247
254
  this.calendarMonthService = calendarMonthService;
248
- this.daysOfWeek = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
255
+ this.ref = ref;
256
+ this.destroyed$ = new Subject();
257
+ //#region CurrentMonth
258
+ this.currentMonth$ = new BehaviorSubject(new Date());
259
+ this.currentMonthChange = new EventEmitter();
260
+ //#endregion
249
261
  //#region SelectedDate
250
- this.selectedDate = new Date();
262
+ this.selectedDate$ = new BehaviorSubject(new Date());
263
+ this.selectedDateChange = new EventEmitter();
251
264
  //#endregion
252
- //#region Weeks
253
- this._weeks = [];
265
+ this.daysOfWeek = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
266
+ this.weeks$ = this.currentMonth$
267
+ .pipe(map((month) => this.calendarMonthService.getWeeks(month)))
268
+ .pipe(takeUntil(this.destroyed$));
269
+ this.daysOfWeek$ = this.weeks$
270
+ .pipe(filter((weeks) => weeks.length > 1))
271
+ .pipe(map((weeks) => weeks[1].week))
272
+ .pipe(map((week) => {
273
+ const firstDay = week[0];
274
+ if (firstDay) {
275
+ return week.map((d) => {
276
+ const date = new Date(firstDay.date.getFullYear(), firstDay.date.getMonth(), d === null || d === void 0 ? void 0 : d.dayOfMonth);
277
+ return date.toLocaleString('default', { weekday: 'short' });
278
+ });
279
+ }
280
+ else {
281
+ return [];
282
+ }
283
+ }));
284
+ this.selectedDate$.pipe(takeUntil(this.destroyed$)).subscribe((date) => {
285
+ this.selectedDateChange.emit(date);
286
+ });
287
+ this.currentMonth$.pipe(takeUntil(this.destroyed$)).subscribe((month) => {
288
+ this.currentMonthChange.emit(month);
289
+ });
254
290
  }
255
- ngOnInit() {
256
- this.month = new Date();
291
+ get currentMonth() {
292
+ return this.currentMonth$.value;
257
293
  }
258
- get month() {
259
- return this._month;
294
+ set currentMonth(value) {
295
+ this.currentMonth$.next(value);
260
296
  }
261
- set month(value) {
262
- this._month = value;
263
- this.weeks = this.calendarMonthService.getWeeks(this.month);
297
+ get selectedDate() {
298
+ return this.selectedDate$.value;
264
299
  }
265
- get weeks() {
266
- return this._weeks;
300
+ set selectedDate(value) {
301
+ this.selectedDate$.next(value);
267
302
  }
268
- set weeks(value) {
269
- this._weeks = value;
270
- if (this._weeks.length > 1) {
271
- this.daysOfWeek = this._weeks[1].week.map(d => {
272
- let date = new Date(this.month.getFullYear(), this.month.getMonth(), d === null || d === void 0 ? void 0 : d.dayOfMonth);
273
- return date.toLocaleString("default", { weekday: 'short' });
274
- });
275
- }
303
+ ngOnDestroy() {
304
+ this.destroyed$.next(true);
276
305
  }
277
- //#endregion
278
306
  previousMonth() {
279
- this.month = new Date(this.month.getFullYear(), this.month.getMonth() - 1, 1);
307
+ this.currentMonth$.pipe(take(1)).subscribe((month) => {
308
+ this.currentMonth$.next(new Date(month.getFullYear(), month.getMonth() - 1, 1));
309
+ });
280
310
  return false;
281
311
  }
282
312
  nextMonth() {
283
- this.month = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);
313
+ this.currentMonth$.pipe(take(1)).subscribe((month) => {
314
+ this.currentMonth$.next(new Date(month.getFullYear(), month.getMonth() + 1, 1));
315
+ });
284
316
  return false;
285
317
  }
286
318
  isSameDate(date1, date2) {
287
- return (date1.getFullYear() === date2.getFullYear())
288
- && (date1.getMonth() === date2.getMonth())
289
- && (date1.getDate() === date2.getDate());
319
+ if (date1 === null && date2 === null)
320
+ return true;
321
+ if (date1 === null || date2 === null)
322
+ return false;
323
+ return (date1.getFullYear() === date2.getFullYear() &&
324
+ date1.getMonth() === date2.getMonth() &&
325
+ date1.getDate() === date2.getDate());
326
+ }
327
+ goto(day) {
328
+ if (day) {
329
+ this.selectedDate$.next(day.date);
330
+ }
290
331
  }
291
332
  }
292
- BsCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, deps: [{ token: BsCalendarMonthService }], target: i0.ɵɵFactoryTarget.Component });
293
- BsCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCalendarComponent, selector: "bs-calendar", ngImport: i0, template: "<table class=\"table w-auto\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <i class=\"bi bi-chevron-left fw-bolder\"></i>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ month | monthName | ucFirst }}\n {{ month.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <i class=\"bi bi-chevron-right fw-bolder\"></i>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of daysOfWeek\">\n {{ dayOfWeek }}\n </th>\n </tr>\n <tr *ngFor=\"let week of weeks\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate, day.date)\" *ngFor=\"let day of week.week\" (click)=\"day && selectedDate = day.date\">\n <span *ngIf=\"day !== null\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: ["table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125)}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "ucFirst": UcFirstPipe, "monthName": MonthNamePipe } });
333
+ BsCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, deps: [{ token: BsCalendarMonthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
334
+ BsCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCalendarComponent, selector: "bs-calendar", inputs: { currentMonth: "currentMonth", selectedDate: "selectedDate" }, outputs: { currentMonthChange: "currentMonthChange", selectedDateChange: "selectedDateChange" }, ngImport: i0, template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <i class=\"bi bi-chevron-left fw-bolder\"></i>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <i class=\"bi bi-chevron-right fw-bolder\"></i>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of daysOfWeek\">\n {{ dayOfWeek }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async)\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.week\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: ["table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "ucFirst": UcFirstPipe, "monthName": MonthNamePipe, "async": i1.AsyncPipe } });
294
335
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, decorators: [{
295
336
  type: Component,
296
- args: [{ selector: 'bs-calendar', template: "<table class=\"table w-auto\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <i class=\"bi bi-chevron-left fw-bolder\"></i>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ month | monthName | ucFirst }}\n {{ month.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <i class=\"bi bi-chevron-right fw-bolder\"></i>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of daysOfWeek\">\n {{ dayOfWeek }}\n </th>\n </tr>\n <tr *ngFor=\"let week of weeks\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate, day.date)\" *ngFor=\"let day of week.week\" (click)=\"day && selectedDate = day.date\">\n <span *ngIf=\"day !== null\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: ["table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125)}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"] }]
297
- }], ctorParameters: function () { return [{ type: BsCalendarMonthService }]; } });
337
+ args: [{ selector: 'bs-calendar', template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <i class=\"bi bi-chevron-left fw-bolder\"></i>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <i class=\"bi bi-chevron-right fw-bolder\"></i>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of daysOfWeek\">\n {{ dayOfWeek }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async)\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.week\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: ["table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"] }]
338
+ }], ctorParameters: function () { return [{ type: BsCalendarMonthService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { currentMonthChange: [{
339
+ type: Output
340
+ }], currentMonth: [{
341
+ type: Input
342
+ }], selectedDateChange: [{
343
+ type: Output
344
+ }], selectedDate: [{
345
+ type: Input
346
+ }] } });
298
347
 
299
348
  class BsMonthNamePipeModule {
300
349
  }
@@ -408,16 +457,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
408
457
  }] });
409
458
 
410
459
  class BsCarouselImageDirective {
411
- constructor() { }
460
+ constructor(templateRef) {
461
+ this.templateRef = templateRef;
462
+ this.itemTemplate = this.templateRef;
463
+ }
412
464
  }
413
- BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
414
- BsCarouselImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselImageDirective, selector: "img[bsCarouselImage]", ngImport: i0 });
465
+ BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
466
+ BsCarouselImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselImageDirective, selector: "*[bsCarouselImage]", ngImport: i0 });
415
467
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, decorators: [{
416
468
  type: Directive,
417
469
  args: [{
418
- selector: 'img[bsCarouselImage]'
470
+ selector: '*[bsCarouselImage]'
419
471
  }]
420
- }], ctorParameters: function () { return []; } });
472
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
421
473
 
422
474
  class BsCarouselComponent {
423
475
  constructor() {
@@ -427,14 +479,14 @@ class BsCarouselComponent {
427
479
  this.destroyed$ = new Subject();
428
480
  this.currentImageCounter$ = new BehaviorSubject(-1);
429
481
  this.currentImageIndex$ = this.currentImageCounter$
430
- .pipe(map((counter) => {
482
+ .pipe(map$1((counter) => {
431
483
  const l = this.images.length;
432
484
  return ((counter % l) + l) % l;
433
485
  }))
434
- .pipe(takeUntil(this.destroyed$));
486
+ .pipe(takeUntil$1(this.destroyed$));
435
487
  this.currentImage$ = this.currentImageIndex$
436
- .pipe(map((index) => { var _a; return (_a = this.images.get(index)) !== null && _a !== void 0 ? _a : null; }))
437
- .pipe(takeUntil(this.destroyed$));
488
+ .pipe(map$1((index) => { var _a, _b; return (_b = (_a = this.images.get(index)) === null || _a === void 0 ? void 0 : _a.itemTemplate) !== null && _b !== void 0 ? _b : null; }))
489
+ .pipe(takeUntil$1(this.destroyed$));
438
490
  }
439
491
  ngOnInit() { }
440
492
  ngOnDestroy() {
@@ -450,32 +502,36 @@ class BsCarouselComponent {
450
502
  }
451
503
  previousImage() {
452
504
  this.currentImageCounter$
453
- .pipe(take(1))
505
+ .pipe(take$1(1))
454
506
  .subscribe((currentImageCounter) => {
455
507
  this.currentImageCounter$.next(currentImageCounter - 1);
456
508
  });
457
509
  }
458
510
  nextImage() {
459
511
  this.currentImageCounter$
460
- .pipe(take(1))
512
+ .pipe(take$1(1))
461
513
  .subscribe((currentImageCounter) => {
462
514
  this.currentImageCounter$.next(currentImageCounter + 1);
463
515
  });
464
516
  }
465
517
  setCurrentImage(index) {
466
- this.currentImageCounter$.next(index);
518
+ const currentValue = this.currentImageCounter$.value;
519
+ const l = this.images.length;
520
+ const counterMod = ((currentValue % l) + l) % l;
521
+ const newValue = currentValue - counterMod + index;
522
+ this.currentImageCounter$.next(newValue);
467
523
  }
468
524
  }
469
525
  BsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
470
- BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { animation: "animation" }, queries: [{ propertyName: "images", predicate: BsCarouselImageDirective, read: ElementRef }], ngImport: i0, template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\" data-bs-target\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i1.AsyncPipe }, animations: [FadeInOutAnimation, CarouselSlideAnimation] });
526
+ BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { animation: "animation" }, queries: [{ propertyName: "images", predicate: BsCarouselImageDirective }], ngImport: i0, template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\"\n [class.active]=\"(currentImageIndex$ | async) === i\" data-bs-target\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i1.AsyncPipe }, animations: [FadeInOutAnimation, CarouselSlideAnimation] });
471
527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, decorators: [{
472
528
  type: Component,
473
- args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation, CarouselSlideAnimation], template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\" data-bs-target\n [class.active]=\"(currentImageIndex$ | async) === i\"\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n\n\n <!-- [@carouselSlide]=\"currentImageCounter$ | async\" -->\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <img [src]=\"image.nativeElement.src\" class=\"d-block\" [attr.alt]=\"image.nativeElement.alt\" [class.w-100]=\"true\">\n </div>\n </ng-container>\n </div>\n\n\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"] }]
529
+ args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation, CarouselSlideAnimation], template: "<div class=\"carousel slide\">\n <div class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\"\n [class.active]=\"(currentImageIndex$ | async) === i\" data-bs-target\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"] }]
474
530
  }], ctorParameters: function () { return []; }, propDecorators: { animation: [{
475
531
  type: Input
476
532
  }], images: [{
477
533
  type: ContentChildren,
478
- args: [BsCarouselImageDirective, { read: ElementRef }]
534
+ args: [BsCarouselImageDirective]
479
535
  }] } });
480
536
 
481
537
  class BsCarouselModule {
@@ -504,6 +560,316 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
504
560
  }]
505
561
  }] });
506
562
 
563
+ class BsDatatableColumnDirective {
564
+ constructor(templateRef) {
565
+ this.bsDatatableColumn = { name: '', sortable: true };
566
+ this.templateRef = templateRef;
567
+ }
568
+ }
569
+ BsDatatableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
570
+ BsDatatableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDatatableColumnDirective, selector: "[bsDatatableColumn]", inputs: { bsDatatableColumn: "bsDatatableColumn" }, ngImport: i0 });
571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, decorators: [{
572
+ type: Directive,
573
+ args: [{
574
+ selector: '[bsDatatableColumn]'
575
+ }]
576
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { bsDatatableColumn: [{
577
+ type: Input
578
+ }] } });
579
+
580
+ class DatatableSettings {
581
+ constructor(data) {
582
+ this.sortProperty = '';
583
+ this.sortDirection = 'ascending';
584
+ Object.assign(this, data);
585
+ if (data && data.perPage) {
586
+ this.perPage = data.perPage;
587
+ }
588
+ else {
589
+ // Set default value
590
+ this.perPage = {
591
+ values: [10, 20, 50],
592
+ selected: 20
593
+ };
594
+ }
595
+ if (data && data.page) {
596
+ this.page = data.page;
597
+ }
598
+ else {
599
+ // Set default value
600
+ this.page = {
601
+ values: [1],
602
+ selected: 1
603
+ };
604
+ }
605
+ }
606
+ toPagination() {
607
+ const res = {
608
+ sortProperty: this.sortProperty,
609
+ sortDirection: this.sortDirection,
610
+ perPage: this.perPage.selected,
611
+ page: this.page.selected
612
+ };
613
+ return res;
614
+ }
615
+ }
616
+
617
+ class BsPaginationComponent {
618
+ constructor() {
619
+ /** All page numbers. */
620
+ this.pageNumbers$ = new BehaviorSubject([]);
621
+ /** Selected number. */
622
+ this.selectedPageNumber$ = new BehaviorSubject(1);
623
+ /** Number of boxes. */
624
+ this.numberOfBoxes$ = new BehaviorSubject(0);
625
+ /** Display previous/next arrows. */
626
+ this.showArrows$ = new BehaviorSubject(true);
627
+ /** Indicates if first value is selected. */
628
+ this.isFirstPage$ = new Observable();
629
+ /** Indicates if last value is selected. */
630
+ this.isLastPage$ = new Observable();
631
+ /** The number of boxes (excluding arrows) that's being shown on the pagination component. */
632
+ this.visibleNumberOfNumberBoxes$ = new Observable();
633
+ this._selectedPageNumber = 0;
634
+ this.selectedPageNumberChange = new EventEmitter();
635
+ this._numberOfBoxes = 0;
636
+ this._pageNumbers = [];
637
+ this._showArrows = true;
638
+ this.destroyed$ = new Subject();
639
+ this.visibleNumberOfNumberBoxes$ =
640
+ combineLatest([this.numberOfBoxes$, this.pageNumbers$, this.showArrows$])
641
+ .pipe(takeUntil(this.destroyed$))
642
+ .pipe(map(([numberOfBoxes, pageNumbers, showArrows]) => {
643
+ if (numberOfBoxes <= 0) {
644
+ return pageNumbers.length;
645
+ }
646
+ else if (!showArrows) {
647
+ return Math.min(numberOfBoxes, pageNumbers.length);
648
+ }
649
+ else if (numberOfBoxes <= 2) {
650
+ return Math.min(1, pageNumbers.length);
651
+ }
652
+ else {
653
+ return Math.min(numberOfBoxes - 2, pageNumbers.length);
654
+ }
655
+ }));
656
+ this.shownPageNumbers$ =
657
+ combineLatest([this.pageNumbers$, this.selectedPageNumber$, this.visibleNumberOfNumberBoxes$])
658
+ .pipe(takeUntil(this.destroyed$))
659
+ .pipe(map(([pageNumbers, selectedPageNumber, visibleNumberOfNumberBoxes]) => {
660
+ let startIndex = 0;
661
+ const half = Math.round((visibleNumberOfNumberBoxes - 1) / 2);
662
+ if (pageNumbers.indexOf(selectedPageNumber) < half) {
663
+ startIndex = 0;
664
+ }
665
+ else if (pageNumbers.indexOf(selectedPageNumber) >= (pageNumbers.length - half)) {
666
+ startIndex = pageNumbers.length - visibleNumberOfNumberBoxes;
667
+ }
668
+ else {
669
+ startIndex = pageNumbers.indexOf(selectedPageNumber) - half;
670
+ }
671
+ return [...Array(visibleNumberOfNumberBoxes).keys()]
672
+ .map(p => p + startIndex)
673
+ .map(p => ({
674
+ page: pageNumbers[p],
675
+ selected: pageNumbers[p] === selectedPageNumber
676
+ }));
677
+ }));
678
+ this.isFirstPage$ =
679
+ combineLatest([this.pageNumbers$, this.selectedPageNumber$])
680
+ .pipe(takeUntil(this.destroyed$))
681
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
682
+ return pageNumbers.indexOf(selectedPageNumber) === 0;
683
+ }));
684
+ this.isLastPage$ =
685
+ combineLatest([this.pageNumbers$, this.selectedPageNumber$])
686
+ .pipe(takeUntil(this.destroyed$))
687
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
688
+ return pageNumbers.indexOf(selectedPageNumber) === (pageNumbers.length - 1);
689
+ }));
690
+ this.selectedPageNumber$
691
+ .pipe(takeUntil(this.destroyed$))
692
+ .subscribe((selectedPageNumber) => {
693
+ this.selectedPageNumberChange.emit(selectedPageNumber);
694
+ });
695
+ }
696
+ ngOnInit() {
697
+ }
698
+ ngOnDestroy() {
699
+ this.destroyed$.next(true);
700
+ }
701
+ onSelectPage(event, page) {
702
+ this.selectedPageNumber$.next(page);
703
+ return false;
704
+ }
705
+ onPrevious() {
706
+ this.selectedPageNumber$.next(this.selectedPageNumber$.value - 1);
707
+ return false;
708
+ }
709
+ onNext() {
710
+ this.selectedPageNumber$.next(this.selectedPageNumber$.value + 1);
711
+ return false;
712
+ }
713
+ set selectedPageNumber(value) {
714
+ this._selectedPageNumber = value;
715
+ this.selectedPageNumber$.next(value);
716
+ }
717
+ get selectedPageNumber() {
718
+ return this._selectedPageNumber;
719
+ }
720
+ set numberOfBoxes(value) {
721
+ this._numberOfBoxes = value;
722
+ this.numberOfBoxes$.next(value);
723
+ }
724
+ get numberOfBoxes() {
725
+ return this._numberOfBoxes;
726
+ }
727
+ set pageNumbers(value) {
728
+ this._pageNumbers = value;
729
+ this.pageNumbers$.next(value);
730
+ }
731
+ get pageNumbers() {
732
+ return this._pageNumbers;
733
+ }
734
+ set showArrows(value) {
735
+ this._showArrows = value;
736
+ this.showArrows$.next(value);
737
+ }
738
+ get showArrows() {
739
+ return this._showArrows;
740
+ }
741
+ }
742
+ BsPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
743
+ BsPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsPaginationComponent, selector: "bs-pagination", inputs: { selectedPageNumber: "selectedPageNumber", numberOfBoxes: "numberOfBoxes", pageNumbers: "pageNumbers", showArrows: "showArrows" }, outputs: { selectedPageNumberChange: "selectedPageNumberChange" }, ngImport: i0, template: "<ul class=\"pagination\">\n <li class=\"page-item\" *ngIf=\"showArrows$ | async\" [class.disabled]=\"isFirstPage$ | async\">\n <a class=\"page-link\" href=\"\" (click)=\"onPrevious()\" aria-label=\"Previous\">\n <span aria-hidden=\"true\">&laquo;</span>\n <span class=\"visually-hidden\">Previous</span>\n </a>\n </li>\n <li *ngFor=\"let pageNumber of (shownPageNumbers$ | async)\" class=\"page-item\"\n [ngClass]=\"{ 'active': pageNumber.selected }\">\n <a class=\"page-link\" href=\"\" (click)=\"onSelectPage($event, pageNumber.page)\" *ngIf=\"pageNumber.page != '...'\">\n {{ pageNumber.page }}\n <span class=\"visually-hidden\" *ngIf=\"pageNumber.selected\">(current)</span>\n </a>\n </li>\n <li class=\"page-item\" *ngIf=\"showArrows$ | async\" [class.disabled]=\"isLastPage$ | async\">\n <a class=\"page-link\" href=\"\" (click)=\"onNext()\" aria-label=\"Next\">\n <span aria-hidden=\"true\">&raquo;</span>\n <span class=\"visually-hidden\">Next</span>\n </a>\n </li>\n</ul>", styles: [":host{display:inline-block}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i1.AsyncPipe } });
744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationComponent, decorators: [{
745
+ type: Component,
746
+ args: [{ selector: 'bs-pagination', template: "<ul class=\"pagination\">\n <li class=\"page-item\" *ngIf=\"showArrows$ | async\" [class.disabled]=\"isFirstPage$ | async\">\n <a class=\"page-link\" href=\"\" (click)=\"onPrevious()\" aria-label=\"Previous\">\n <span aria-hidden=\"true\">&laquo;</span>\n <span class=\"visually-hidden\">Previous</span>\n </a>\n </li>\n <li *ngFor=\"let pageNumber of (shownPageNumbers$ | async)\" class=\"page-item\"\n [ngClass]=\"{ 'active': pageNumber.selected }\">\n <a class=\"page-link\" href=\"\" (click)=\"onSelectPage($event, pageNumber.page)\" *ngIf=\"pageNumber.page != '...'\">\n {{ pageNumber.page }}\n <span class=\"visually-hidden\" *ngIf=\"pageNumber.selected\">(current)</span>\n </a>\n </li>\n <li class=\"page-item\" *ngIf=\"showArrows$ | async\" [class.disabled]=\"isLastPage$ | async\">\n <a class=\"page-link\" href=\"\" (click)=\"onNext()\" aria-label=\"Next\">\n <span aria-hidden=\"true\">&raquo;</span>\n <span class=\"visually-hidden\">Next</span>\n </a>\n </li>\n</ul>", styles: [":host{display:inline-block}\n"] }]
747
+ }], ctorParameters: function () { return []; }, propDecorators: { selectedPageNumberChange: [{
748
+ type: Output
749
+ }], selectedPageNumber: [{
750
+ type: Input
751
+ }], numberOfBoxes: [{
752
+ type: Input
753
+ }], pageNumbers: [{
754
+ type: Input
755
+ }], showArrows: [{
756
+ type: Input
757
+ }] } });
758
+
759
+ class BsDatatableComponent {
760
+ constructor() {
761
+ this.columns = [];
762
+ this.onReloadData = new EventEmitter();
763
+ this.settings = new DatatableSettings();
764
+ this.settings.sortProperty = '';
765
+ this.settings.sortDirection = 'ascending';
766
+ this.settings.perPage = { values: [10, 20, 50], selected: 20 };
767
+ this.settings.page = { values: [1], selected: 1 };
768
+ }
769
+ columnHeaderClicked(column) {
770
+ if (column.bsDatatableColumn.sortable) {
771
+ if (this.settings.sortProperty !== column.bsDatatableColumn.name) {
772
+ this.settings.sortProperty = column.bsDatatableColumn.name;
773
+ this.settings.sortDirection = 'ascending';
774
+ }
775
+ else if (this.settings.sortDirection === 'descending') {
776
+ this.settings.sortDirection = 'ascending';
777
+ }
778
+ else {
779
+ this.settings.sortDirection = 'descending';
780
+ }
781
+ this.onReloadData.emit();
782
+ }
783
+ }
784
+ ngOnInit() {
785
+ }
786
+ }
787
+ BsDatatableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
788
+ BsDatatableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsDatatableComponent, selector: "bs-datatable", inputs: { settings: "settings", data: "data" }, outputs: { onReloadData: "onReloadData" }, queries: [{ propertyName: "columns", predicate: BsDatatableColumnDirective }], ngImport: i0, template: "<div class=\"table-responsive overflow-y-hidden mb-3\">\n <table class=\"table table-striped table-hover w-100 mb-0\" cellspacing=\"0\" role=\"grid\">\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\" class=\"text-nowrap\"\n [class.sort]=\"column.bsDatatableColumn.sortable\"\n [class.sort-asc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'ascending')\"\n [class.sort-desc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'descending')\"\n (click)=\"columnHeaderClicked(column)\">\n <ng-container *ngTemplateOutlet=\"column.templateRef\"></ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"!!data && !!rowTemplate\">\n <ng-container *ngFor=\"let item of data.data\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <bs-pagination class=\"float-start\" [pageNumbers]=\"settings.perPage.values\"\n [(selectedPageNumber)]=\"settings.perPage.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"false\"></bs-pagination>\n <bs-pagination class=\"float-end\" [pageNumbers]=\"settings.page.values\"\n [(selectedPageNumber)]=\"settings.page.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"true\"></bs-pagination>\n </div>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.overflow-y-hidden{overflow-y:hidden}.table thead th.sort{position:relative;cursor:pointer}.table thead th.sort:before,.table thead th.sort:after{position:absolute;display:block;opacity:.3;bottom:.5em}.table thead th.sort:before{content:\"\\2191\";right:1em}.table thead th.sort:after{content:\"\\2193\";right:.5em}.table thead th.sort.sort-asc:after{opacity:1}.table thead th.sort.sort-desc:before{opacity:1}\n"], components: [{ type: BsPaginationComponent, selector: "bs-pagination", inputs: ["selectedPageNumber", "numberOfBoxes", "pageNumbers", "showArrows"], outputs: ["selectedPageNumberChange"] }], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
789
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableComponent, decorators: [{
790
+ type: Component,
791
+ args: [{ selector: 'bs-datatable', template: "<div class=\"table-responsive overflow-y-hidden mb-3\">\n <table class=\"table table-striped table-hover w-100 mb-0\" cellspacing=\"0\" role=\"grid\">\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\" class=\"text-nowrap\"\n [class.sort]=\"column.bsDatatableColumn.sortable\"\n [class.sort-asc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'ascending')\"\n [class.sort-desc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'descending')\"\n (click)=\"columnHeaderClicked(column)\">\n <ng-container *ngTemplateOutlet=\"column.templateRef\"></ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"!!data && !!rowTemplate\">\n <ng-container *ngFor=\"let item of data.data\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <bs-pagination class=\"float-start\" [pageNumbers]=\"settings.perPage.values\"\n [(selectedPageNumber)]=\"settings.perPage.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"false\"></bs-pagination>\n <bs-pagination class=\"float-end\" [pageNumbers]=\"settings.page.values\"\n [(selectedPageNumber)]=\"settings.page.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"true\"></bs-pagination>\n </div>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.overflow-y-hidden{overflow-y:hidden}.table thead th.sort{position:relative;cursor:pointer}.table thead th.sort:before,.table thead th.sort:after{position:absolute;display:block;opacity:.3;bottom:.5em}.table thead th.sort:before{content:\"\\2191\";right:1em}.table thead th.sort:after{content:\"\\2193\";right:.5em}.table thead th.sort.sort-asc:after{opacity:1}.table thead th.sort.sort-desc:before{opacity:1}\n"] }]
792
+ }], ctorParameters: function () { return []; }, propDecorators: { columns: [{
793
+ type: ContentChildren,
794
+ args: [BsDatatableColumnDirective]
795
+ }], settings: [{
796
+ type: Input
797
+ }], data: [{
798
+ type: Input
799
+ }], onReloadData: [{
800
+ type: Output
801
+ }] } });
802
+
803
+ class BsRowTemplateDirective {
804
+ constructor(datatableComponent, templateRef) {
805
+ this.datatableComponent = datatableComponent;
806
+ this.datatableComponent.rowTemplate = templateRef;
807
+ }
808
+ }
809
+ BsRowTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRowTemplateDirective, deps: [{ token: BsDatatableComponent }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
810
+ BsRowTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsRowTemplateDirective, selector: "[rowTemplate]", ngImport: i0 });
811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRowTemplateDirective, decorators: [{
812
+ type: Directive,
813
+ args: [{
814
+ selector: '[rowTemplate]'
815
+ }]
816
+ }], ctorParameters: function () { return [{ type: BsDatatableComponent }, { type: i0.TemplateRef }]; } });
817
+
818
+ class BsPaginationModule {
819
+ }
820
+ BsPaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
821
+ BsPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, declarations: [BsPaginationComponent], imports: [CommonModule], exports: [BsPaginationComponent] });
822
+ BsPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, imports: [[
823
+ CommonModule
824
+ ]] });
825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, decorators: [{
826
+ type: NgModule,
827
+ args: [{
828
+ declarations: [
829
+ BsPaginationComponent
830
+ ],
831
+ imports: [
832
+ CommonModule
833
+ ],
834
+ exports: [
835
+ BsPaginationComponent
836
+ ]
837
+ }]
838
+ }] });
839
+
840
+ class BsDatatableModule {
841
+ }
842
+ BsDatatableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
843
+ BsDatatableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, declarations: [BsDatatableComponent,
844
+ BsRowTemplateDirective,
845
+ BsDatatableColumnDirective], imports: [CommonModule,
846
+ BsPaginationModule], exports: [BsDatatableComponent,
847
+ BsRowTemplateDirective,
848
+ BsDatatableColumnDirective] });
849
+ BsDatatableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, imports: [[
850
+ CommonModule,
851
+ BsPaginationModule
852
+ ]] });
853
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, decorators: [{
854
+ type: NgModule,
855
+ args: [{
856
+ declarations: [
857
+ BsDatatableComponent,
858
+ BsRowTemplateDirective,
859
+ BsDatatableColumnDirective
860
+ ],
861
+ imports: [
862
+ CommonModule,
863
+ BsPaginationModule
864
+ ],
865
+ exports: [
866
+ BsDatatableComponent,
867
+ BsRowTemplateDirective,
868
+ BsDatatableColumnDirective
869
+ ]
870
+ }]
871
+ }] });
872
+
507
873
  class BsListGroupItemComponent {
508
874
  constructor() {
509
875
  }
@@ -564,10 +930,10 @@ class BsNavbarComponent {
564
930
  }
565
931
  }
566
932
  BsNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
567
- BsNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarComponent, selector: "bs-navbar", viewQueries: [{ propertyName: "nav", first: true, predicate: ["nav"], descendants: true }], ngImport: i0, template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:1}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] });
933
+ BsNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarComponent, selector: "bs-navbar", viewQueries: [{ propertyName: "nav", first: true, predicate: ["nav"], descendants: true }], ngImport: i0, template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] });
568
934
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, decorators: [{
569
935
  type: Component,
570
- args: [{ selector: 'bs-navbar', template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:1}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
936
+ args: [{ selector: 'bs-navbar', template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\" data-toggle=\"collapse\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
571
937
  }], ctorParameters: function () { return []; }, propDecorators: { nav: [{
572
938
  type: ViewChild,
573
939
  args: ['nav']
@@ -984,9 +1350,330 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
984
1350
  }]
985
1351
  }] });
986
1352
 
1353
+ class BsScrollspyDirective {
1354
+ constructor(element) {
1355
+ this.element = element;
1356
+ }
1357
+ }
1358
+ BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1359
+ BsScrollspyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
1360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
1361
+ type: Directive,
1362
+ args: [{
1363
+ selector: '[bsScrollspy]'
1364
+ }]
1365
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
1366
+
1367
+ class BsScrollspyComponent {
1368
+ constructor(document) {
1369
+ this.activeDirective = null;
1370
+ this.doc = document;
1371
+ }
1372
+ ngOnInit() {
1373
+ }
1374
+ ngAfterViewInit() {
1375
+ this.onWindowScroll();
1376
+ }
1377
+ onWindowScroll() {
1378
+ var _a;
1379
+ const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y <= 0);
1380
+ if (this.directives.length === 0) {
1381
+ this.activeDirective = null;
1382
+ }
1383
+ else if (dirs.length === 0) {
1384
+ this.activeDirective = (_a = this.directives.get(0)) !== null && _a !== void 0 ? _a : null;
1385
+ }
1386
+ else {
1387
+ this.activeDirective = dirs[dirs.length - 1];
1388
+ }
1389
+ }
1390
+ scrollToHeader(directive) {
1391
+ const header = directive.element.nativeElement;
1392
+ header.scrollIntoView();
1393
+ }
1394
+ }
1395
+ BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1396
+ BsScrollspyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyComponent, selector: "bs-scrollspy", host: { listeners: { "window:scroll": "onWindowScroll($event)" } }, queries: [{ propertyName: "directives", predicate: BsScrollspyDirective, descendants: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives\">\n <span class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\">\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;grid-gap:inherit;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:25%;overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
1398
+ type: Component,
1399
+ args: [{ selector: 'bs-scrollspy', template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives\">\n <span class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\">\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;grid-gap:inherit;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:25%;overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
1400
+ }], ctorParameters: function () {
1401
+ return [{ type: undefined, decorators: [{
1402
+ type: Inject,
1403
+ args: [DOCUMENT]
1404
+ }] }];
1405
+ }, propDecorators: { directives: [{
1406
+ type: ContentChildren,
1407
+ args: [BsScrollspyDirective, { descendants: true }]
1408
+ }], onWindowScroll: [{
1409
+ type: HostListener,
1410
+ args: ['window:scroll', ['$event']]
1411
+ }] } });
1412
+
1413
+ class BsScrollspyModule {
1414
+ }
1415
+ BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1416
+ BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
1417
+ BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
1418
+ BsScrollspyDirective] });
1419
+ BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
1420
+ CommonModule
1421
+ ]] });
1422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
1423
+ type: NgModule,
1424
+ args: [{
1425
+ declarations: [
1426
+ BsScrollspyComponent,
1427
+ BsScrollspyDirective
1428
+ ],
1429
+ imports: [
1430
+ CommonModule
1431
+ ],
1432
+ exports: [
1433
+ BsScrollspyComponent,
1434
+ BsScrollspyDirective
1435
+ ]
1436
+ }]
1437
+ }] });
1438
+
1439
+ class BsDropdownMenuDirective {
1440
+ constructor(dropdown, document, viewContainerRef, templateRef, overlay) {
1441
+ this.dropdown = dropdown;
1442
+ this.viewContainerRef = viewContainerRef;
1443
+ this.templateRef = templateRef;
1444
+ this.overlay = overlay;
1445
+ this.destroyed$ = new Subject();
1446
+ this.overlayRef = null;
1447
+ this.templatePortal = null;
1448
+ this.document = document;
1449
+ this.dropdown.isOpen$
1450
+ .pipe(takeUntil(this.destroyed$))
1451
+ .subscribe((isOpen) => {
1452
+ if (isOpen) {
1453
+ this.overlayRef = this.overlay.create({
1454
+ hasBackdrop: this.dropdown.hasBackdrop,
1455
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
1456
+ positionStrategy: this.overlay.position()
1457
+ .flexibleConnectedTo(this.dropdown.toggle.toggleButton)
1458
+ .withPositions([
1459
+ { originX: "start", "originY": "bottom", overlayX: "start", overlayY: "top", offsetY: 0 },
1460
+ { originX: "start", "originY": "top", overlayX: "start", overlayY: "bottom", offsetY: 0 },
1461
+ ]),
1462
+ });
1463
+ this.overlayRef.backdropClick().subscribe(() => this.dropdown.isOpen$.next(false));
1464
+ this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);
1465
+ this.overlayRef.attach(this.templatePortal);
1466
+ }
1467
+ else {
1468
+ if (this.overlayRef) {
1469
+ this.overlayRef.detach();
1470
+ this.overlayRef.dispose();
1471
+ }
1472
+ }
1473
+ });
1474
+ }
1475
+ }
1476
+ BsDropdownMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, deps: [{ token: forwardRef(() => BsDropdownDirective) }, { token: DOCUMENT }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1$2.Overlay }], target: i0.ɵɵFactoryTarget.Directive });
1477
+ BsDropdownMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]", host: { properties: { "class.show": "dropdown.isOpen" } }, ngImport: i0 });
1478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, decorators: [{
1479
+ type: Directive,
1480
+ args: [{
1481
+ selector: '[bsDropdownMenu]',
1482
+ host: {
1483
+ '[class.show]': 'dropdown.isOpen',
1484
+ },
1485
+ }]
1486
+ }], ctorParameters: function () {
1487
+ return [{ type: BsDropdownDirective, decorators: [{
1488
+ type: Inject,
1489
+ args: [forwardRef(() => BsDropdownDirective)]
1490
+ }] }, { type: undefined, decorators: [{
1491
+ type: Inject,
1492
+ args: [DOCUMENT]
1493
+ }] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1$2.Overlay }];
1494
+ } });
1495
+
1496
+ class BsDropdownToggleDirective {
1497
+ constructor(dropdown, toggleButton) {
1498
+ this.dropdown = dropdown;
1499
+ this.toggleButton = toggleButton;
1500
+ }
1501
+ onClick() {
1502
+ console.log('clicked');
1503
+ this.dropdown.isOpen$.pipe(take(1)).subscribe((isOpen) => {
1504
+ this.dropdown.isOpen$.next(!isOpen);
1505
+ });
1506
+ }
1507
+ }
1508
+ BsDropdownToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownToggleDirective, deps: [{ token: BsDropdownDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1509
+ BsDropdownToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
1510
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownToggleDirective, decorators: [{
1511
+ type: Directive,
1512
+ args: [{
1513
+ selector: '[bsDropdownToggle]'
1514
+ }]
1515
+ }], ctorParameters: function () { return [{ type: BsDropdownDirective }, { type: i0.ElementRef }]; }, propDecorators: { onClick: [{
1516
+ type: HostListener,
1517
+ args: ['click']
1518
+ }] } });
1519
+
1520
+ class BsDropdownDirective {
1521
+ constructor() {
1522
+ this.isOpen$ = new BehaviorSubject(false);
1523
+ this.hasBackdrop = false;
1524
+ this.closeOnClickOutside = false;
1525
+ }
1526
+ }
1527
+ BsDropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1528
+ BsDropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownDirective, selector: "[bsDropdown]", inputs: { hasBackdrop: "hasBackdrop", closeOnClickOutside: "closeOnClickOutside" }, queries: [{ propertyName: "menu", first: true, predicate: BsDropdownMenuDirective, descendants: true }, { propertyName: "toggle", first: true, predicate: BsDropdownToggleDirective, descendants: true }], ngImport: i0 });
1529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, decorators: [{
1530
+ type: Directive,
1531
+ args: [{
1532
+ selector: '[bsDropdown]'
1533
+ }]
1534
+ }], propDecorators: { menu: [{
1535
+ type: ContentChild,
1536
+ args: [BsDropdownMenuDirective, { static: false }]
1537
+ }], toggle: [{
1538
+ type: ContentChild,
1539
+ args: [BsDropdownToggleDirective, { static: false }]
1540
+ }], hasBackdrop: [{
1541
+ type: Input
1542
+ }], closeOnClickOutside: [{
1543
+ type: Input
1544
+ }] } });
1545
+
1546
+ class BsDropdownModule {
1547
+ }
1548
+ BsDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1549
+ BsDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, declarations: [BsDropdownDirective,
1550
+ BsDropdownToggleDirective,
1551
+ BsDropdownMenuDirective], imports: [CommonModule,
1552
+ OverlayModule], exports: [BsDropdownDirective,
1553
+ BsDropdownToggleDirective,
1554
+ BsDropdownMenuDirective] });
1555
+ BsDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, imports: [[
1556
+ CommonModule,
1557
+ OverlayModule
1558
+ ]] });
1559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, decorators: [{
1560
+ type: NgModule,
1561
+ args: [{
1562
+ declarations: [
1563
+ BsDropdownDirective,
1564
+ BsDropdownToggleDirective,
1565
+ BsDropdownMenuDirective
1566
+ ],
1567
+ imports: [
1568
+ CommonModule,
1569
+ OverlayModule
1570
+ ],
1571
+ exports: [
1572
+ BsDropdownDirective,
1573
+ BsDropdownToggleDirective,
1574
+ BsDropdownMenuDirective
1575
+ ]
1576
+ }]
1577
+ }] });
1578
+
1579
+ class BsDatepickerComponent {
1580
+ constructor() {
1581
+ this.selectedDate = new Date();
1582
+ this.currentMonth = new Date();
1583
+ }
1584
+ ngOnInit() {
1585
+ }
1586
+ }
1587
+ BsDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1588
+ BsDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsDatepickerComponent, selector: "bs-datepicker", ngImport: i0, template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedDate | date }}</button>\n <div *bsDropdownMenu>\n <bs-calendar [(selectedDate)]=\"selectedDate\" [(currentMonth)]=\"currentMonth\"></bs-calendar>\n </div>\n</div>", styles: [""], components: [{ type: BsCalendarComponent, selector: "bs-calendar", inputs: ["currentMonth", "selectedDate"], outputs: ["currentMonthChange", "selectedDateChange"] }], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "closeOnClickOutside"] }, { type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }], pipes: { "date": i1.DatePipe } });
1589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, decorators: [{
1590
+ type: Component,
1591
+ args: [{ selector: 'bs-datepicker', template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedDate | date }}</button>\n <div *bsDropdownMenu>\n <bs-calendar [(selectedDate)]=\"selectedDate\" [(currentMonth)]=\"currentMonth\"></bs-calendar>\n </div>\n</div>", styles: [""] }]
1592
+ }], ctorParameters: function () { return []; } });
1593
+
1594
+ class BsDatepickerModule {
1595
+ }
1596
+ BsDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1597
+ BsDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, declarations: [BsDatepickerComponent], imports: [CommonModule,
1598
+ BsCalendarModule,
1599
+ BsDropdownModule], exports: [BsDatepickerComponent] });
1600
+ BsDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, imports: [[
1601
+ CommonModule,
1602
+ BsCalendarModule,
1603
+ BsDropdownModule
1604
+ ]] });
1605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, decorators: [{
1606
+ type: NgModule,
1607
+ args: [{
1608
+ declarations: [
1609
+ BsDatepickerComponent
1610
+ ],
1611
+ imports: [
1612
+ CommonModule,
1613
+ BsCalendarModule,
1614
+ BsDropdownModule
1615
+ ],
1616
+ exports: [
1617
+ BsDatepickerComponent
1618
+ ]
1619
+ }]
1620
+ }] });
1621
+
1622
+ class BsMultiselectComponent {
1623
+ constructor() {
1624
+ this.items = [];
1625
+ this.selectedItems = [];
1626
+ }
1627
+ itemChange(item, event) {
1628
+ if (!!event.target.checked) {
1629
+ this.selectedItems.push(item);
1630
+ }
1631
+ else {
1632
+ this.selectedItems.splice(this.selectedItems.findIndex((i) => i === item), 1);
1633
+ }
1634
+ }
1635
+ ngOnInit() {
1636
+ }
1637
+ }
1638
+ BsMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1639
+ BsMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsMultiselectComponent, selector: "bs-multiselect", inputs: { items: "items", selectedItems: "selectedItems" }, ngImport: i0, template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedItems.length }} selected</button>\n <div *bsDropdownMenu class=\"bg-white p-3 border shadow\">\n <label *ngFor=\"let item of items\" class=\"form-check\">\n <input type=\"checkbox\" [checked]=\"selectedItems.indexOf(item) > -1\" (change)=\"itemChange(item, $event)\" class=\"form-check-input\">\n <span class=\"form-check-label\">{{ item }}</span>\n </label>\n </div>\n</div>", styles: [""], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "closeOnClickOutside"] }, { type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1640
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, decorators: [{
1641
+ type: Component,
1642
+ args: [{ selector: 'bs-multiselect', template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedItems.length }} selected</button>\n <div *bsDropdownMenu class=\"bg-white p-3 border shadow\">\n <label *ngFor=\"let item of items\" class=\"form-check\">\n <input type=\"checkbox\" [checked]=\"selectedItems.indexOf(item) > -1\" (change)=\"itemChange(item, $event)\" class=\"form-check-input\">\n <span class=\"form-check-label\">{{ item }}</span>\n </label>\n </div>\n</div>", styles: [""] }]
1643
+ }], ctorParameters: function () { return []; }, propDecorators: { items: [{
1644
+ type: Input
1645
+ }], selectedItems: [{
1646
+ type: Input
1647
+ }] } });
1648
+
1649
+ class BsMultiselectModule {
1650
+ }
1651
+ BsMultiselectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1652
+ BsMultiselectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, declarations: [BsMultiselectComponent], imports: [CommonModule,
1653
+ BsDropdownModule], exports: [BsMultiselectComponent] });
1654
+ BsMultiselectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, imports: [[
1655
+ CommonModule,
1656
+ BsDropdownModule
1657
+ ]] });
1658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, decorators: [{
1659
+ type: NgModule,
1660
+ args: [{
1661
+ declarations: [
1662
+ BsMultiselectComponent
1663
+ ],
1664
+ imports: [
1665
+ CommonModule,
1666
+ BsDropdownModule
1667
+ ],
1668
+ exports: [
1669
+ BsMultiselectComponent
1670
+ ]
1671
+ }]
1672
+ }] });
1673
+
987
1674
  /**
988
1675
  * Generated bundle index. Do not edit.
989
1676
  */
990
1677
 
991
- export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, Color, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective };
1678
+ export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsDatatableColumnDirective, BsDatatableComponent, BsDatatableModule, BsDatepickerComponent, BsDatepickerModule, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownToggleDirective, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsMultiselectComponent, BsMultiselectModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsRowTemplateDirective, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, Color, DatatableSettings, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective };
992
1679
  //# sourceMappingURL=mintplayer-ng-bootstrap.mjs.map