@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,18 @@
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
+ import '@mintplayer/ng-pagination';
8
9
  import { RouterModule } from '@angular/router';
9
10
  import * as i1$1 from '@mintplayer/ng-click-outside';
10
11
  import { ClickOutsideModule } from '@mintplayer/ng-click-outside';
11
12
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
13
+ import * as i1$2 from '@angular/cdk/overlay';
14
+ import { OverlayModule } from '@angular/cdk/overlay';
15
+ import { TemplatePortal } from '@angular/cdk/portal';
12
16
 
13
17
  var Color;
14
18
  (function (Color) {
@@ -88,7 +92,6 @@ class BsCardComponent {
88
92
  ngOnInit() {
89
93
  }
90
94
  ngAfterViewInit() {
91
- // console.log('header', this.header);
92
95
  }
93
96
  }
94
97
  BsCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -229,7 +232,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
229
232
 
230
233
  class MonthNamePipe {
231
234
  transform(date, ...args) {
232
- return date.toLocaleString("default", { month: 'long' });
235
+ if (date) {
236
+ return date.toLocaleString("default", { month: 'long' });
237
+ }
238
+ else {
239
+ return '';
240
+ }
233
241
  }
234
242
  }
235
243
  MonthNamePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonthNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -242,58 +250,100 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
242
250
  }] });
243
251
 
244
252
  class BsCalendarComponent {
245
- constructor(calendarMonthService) {
253
+ constructor(calendarMonthService, ref) {
246
254
  this.calendarMonthService = calendarMonthService;
247
- 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
248
261
  //#region SelectedDate
249
- this.selectedDate = new Date();
262
+ this.selectedDate$ = new BehaviorSubject(new Date());
263
+ this.selectedDateChange = new EventEmitter();
250
264
  //#endregion
251
- //#region Weeks
252
- 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?.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
+ });
253
290
  }
254
- ngOnInit() {
255
- this.month = new Date();
291
+ get currentMonth() {
292
+ return this.currentMonth$.value;
256
293
  }
257
- get month() {
258
- return this._month;
294
+ set currentMonth(value) {
295
+ this.currentMonth$.next(value);
259
296
  }
260
- set month(value) {
261
- this._month = value;
262
- this.weeks = this.calendarMonthService.getWeeks(this.month);
297
+ get selectedDate() {
298
+ return this.selectedDate$.value;
263
299
  }
264
- get weeks() {
265
- return this._weeks;
300
+ set selectedDate(value) {
301
+ this.selectedDate$.next(value);
266
302
  }
267
- set weeks(value) {
268
- this._weeks = value;
269
- if (this._weeks.length > 1) {
270
- this.daysOfWeek = this._weeks[1].week.map(d => {
271
- let date = new Date(this.month.getFullYear(), this.month.getMonth(), d?.dayOfMonth);
272
- return date.toLocaleString("default", { weekday: 'short' });
273
- });
274
- }
303
+ ngOnDestroy() {
304
+ this.destroyed$.next(true);
275
305
  }
276
- //#endregion
277
306
  previousMonth() {
278
- 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
+ });
279
310
  return false;
280
311
  }
281
312
  nextMonth() {
282
- 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
+ });
283
316
  return false;
284
317
  }
285
318
  isSameDate(date1, date2) {
286
- return (date1.getFullYear() === date2.getFullYear())
287
- && (date1.getMonth() === date2.getMonth())
288
- && (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
+ }
289
331
  }
290
332
  }
291
- BsCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, deps: [{ token: BsCalendarMonthService }], target: i0.ɵɵFactoryTarget.Component });
292
- 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 } });
293
335
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, decorators: [{
294
336
  type: Component,
295
- 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"] }]
296
- }], 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
+ }] } });
297
347
 
298
348
  class BsMonthNamePipeModule {
299
349
  }
@@ -407,16 +457,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
407
457
  }] });
408
458
 
409
459
  class BsCarouselImageDirective {
410
- constructor() { }
460
+ constructor(templateRef) {
461
+ this.templateRef = templateRef;
462
+ this.itemTemplate = this.templateRef;
463
+ }
411
464
  }
412
- BsCarouselImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
413
- 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 });
414
467
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselImageDirective, decorators: [{
415
468
  type: Directive,
416
469
  args: [{
417
- selector: 'img[bsCarouselImage]'
470
+ selector: '*[bsCarouselImage]'
418
471
  }]
419
- }], ctorParameters: function () { return []; } });
472
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
420
473
 
421
474
  class BsCarouselComponent {
422
475
  constructor() {
@@ -426,14 +479,14 @@ class BsCarouselComponent {
426
479
  this.destroyed$ = new Subject();
427
480
  this.currentImageCounter$ = new BehaviorSubject(-1);
428
481
  this.currentImageIndex$ = this.currentImageCounter$
429
- .pipe(map((counter) => {
482
+ .pipe(map$1((counter) => {
430
483
  const l = this.images.length;
431
484
  return ((counter % l) + l) % l;
432
485
  }))
433
- .pipe(takeUntil(this.destroyed$));
486
+ .pipe(takeUntil$1(this.destroyed$));
434
487
  this.currentImage$ = this.currentImageIndex$
435
- .pipe(map((index) => this.images.get(index) ?? null))
436
- .pipe(takeUntil(this.destroyed$));
488
+ .pipe(map$1((index) => this.images.get(index)?.itemTemplate ?? null))
489
+ .pipe(takeUntil$1(this.destroyed$));
437
490
  }
438
491
  ngOnInit() { }
439
492
  ngOnDestroy() {
@@ -449,32 +502,36 @@ class BsCarouselComponent {
449
502
  }
450
503
  previousImage() {
451
504
  this.currentImageCounter$
452
- .pipe(take(1))
505
+ .pipe(take$1(1))
453
506
  .subscribe((currentImageCounter) => {
454
507
  this.currentImageCounter$.next(currentImageCounter - 1);
455
508
  });
456
509
  }
457
510
  nextImage() {
458
511
  this.currentImageCounter$
459
- .pipe(take(1))
512
+ .pipe(take$1(1))
460
513
  .subscribe((currentImageCounter) => {
461
514
  this.currentImageCounter$.next(currentImageCounter + 1);
462
515
  });
463
516
  }
464
517
  setCurrentImage(index) {
465
- 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);
466
523
  }
467
524
  }
468
525
  BsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
469
- 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] });
470
527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, decorators: [{
471
528
  type: Component,
472
- 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"] }]
473
530
  }], ctorParameters: function () { return []; }, propDecorators: { animation: [{
474
531
  type: Input
475
532
  }], images: [{
476
533
  type: ContentChildren,
477
- args: [BsCarouselImageDirective, { read: ElementRef }]
534
+ args: [BsCarouselImageDirective]
478
535
  }] } });
479
536
 
480
537
  class BsCarouselModule {
@@ -503,6 +560,316 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
503
560
  }]
504
561
  }] });
505
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
+
506
873
  class BsListGroupItemComponent {
507
874
  constructor() {
508
875
  }
@@ -563,10 +930,10 @@ class BsNavbarComponent {
563
930
  }
564
931
  }
565
932
  BsNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
566
- 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"] });
567
934
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, decorators: [{
568
935
  type: Component,
569
- 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"] }]
570
937
  }], ctorParameters: function () { return []; }, propDecorators: { nav: [{
571
938
  type: ViewChild,
572
939
  args: ['nav']
@@ -975,9 +1342,325 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
975
1342
  }]
976
1343
  }] });
977
1344
 
1345
+ class BsScrollspyDirective {
1346
+ constructor(element) {
1347
+ this.element = element;
1348
+ }
1349
+ }
1350
+ BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1351
+ BsScrollspyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
1352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
1353
+ type: Directive,
1354
+ args: [{
1355
+ selector: '[bsScrollspy]'
1356
+ }]
1357
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
1358
+
1359
+ class BsScrollspyComponent {
1360
+ constructor(document) {
1361
+ this.activeDirective = null;
1362
+ this.doc = document;
1363
+ }
1364
+ ngOnInit() {
1365
+ }
1366
+ ngAfterViewInit() {
1367
+ this.onWindowScroll();
1368
+ }
1369
+ onWindowScroll() {
1370
+ const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y <= 0);
1371
+ if (this.directives.length === 0) {
1372
+ this.activeDirective = null;
1373
+ }
1374
+ else if (dirs.length === 0) {
1375
+ this.activeDirective = this.directives.get(0) ?? null;
1376
+ }
1377
+ else {
1378
+ this.activeDirective = dirs[dirs.length - 1];
1379
+ }
1380
+ }
1381
+ scrollToHeader(directive) {
1382
+ const header = directive.element.nativeElement;
1383
+ header.scrollIntoView();
1384
+ }
1385
+ }
1386
+ BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1387
+ 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"] }] });
1388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
1389
+ type: Component,
1390
+ 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"] }]
1391
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1392
+ type: Inject,
1393
+ args: [DOCUMENT]
1394
+ }] }]; }, propDecorators: { directives: [{
1395
+ type: ContentChildren,
1396
+ args: [BsScrollspyDirective, { descendants: true }]
1397
+ }], onWindowScroll: [{
1398
+ type: HostListener,
1399
+ args: ['window:scroll', ['$event']]
1400
+ }] } });
1401
+
1402
+ class BsScrollspyModule {
1403
+ }
1404
+ BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1405
+ BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
1406
+ BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
1407
+ BsScrollspyDirective] });
1408
+ BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
1409
+ CommonModule
1410
+ ]] });
1411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
1412
+ type: NgModule,
1413
+ args: [{
1414
+ declarations: [
1415
+ BsScrollspyComponent,
1416
+ BsScrollspyDirective
1417
+ ],
1418
+ imports: [
1419
+ CommonModule
1420
+ ],
1421
+ exports: [
1422
+ BsScrollspyComponent,
1423
+ BsScrollspyDirective
1424
+ ]
1425
+ }]
1426
+ }] });
1427
+
1428
+ class BsDropdownMenuDirective {
1429
+ constructor(dropdown, document, viewContainerRef, templateRef, overlay) {
1430
+ this.dropdown = dropdown;
1431
+ this.viewContainerRef = viewContainerRef;
1432
+ this.templateRef = templateRef;
1433
+ this.overlay = overlay;
1434
+ this.destroyed$ = new Subject();
1435
+ this.overlayRef = null;
1436
+ this.templatePortal = null;
1437
+ this.document = document;
1438
+ this.dropdown.isOpen$
1439
+ .pipe(takeUntil(this.destroyed$))
1440
+ .subscribe((isOpen) => {
1441
+ if (isOpen) {
1442
+ this.overlayRef = this.overlay.create({
1443
+ hasBackdrop: this.dropdown.hasBackdrop,
1444
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
1445
+ positionStrategy: this.overlay.position()
1446
+ .flexibleConnectedTo(this.dropdown.toggle.toggleButton)
1447
+ .withPositions([
1448
+ { originX: "start", "originY": "bottom", overlayX: "start", overlayY: "top", offsetY: 0 },
1449
+ { originX: "start", "originY": "top", overlayX: "start", overlayY: "bottom", offsetY: 0 },
1450
+ ]),
1451
+ });
1452
+ this.overlayRef.backdropClick().subscribe(() => this.dropdown.isOpen$.next(false));
1453
+ this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);
1454
+ this.overlayRef.attach(this.templatePortal);
1455
+ }
1456
+ else {
1457
+ if (this.overlayRef) {
1458
+ this.overlayRef.detach();
1459
+ this.overlayRef.dispose();
1460
+ }
1461
+ }
1462
+ });
1463
+ }
1464
+ }
1465
+ 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 });
1466
+ BsDropdownMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]", host: { properties: { "class.show": "dropdown.isOpen" } }, ngImport: i0 });
1467
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, decorators: [{
1468
+ type: Directive,
1469
+ args: [{
1470
+ selector: '[bsDropdownMenu]',
1471
+ host: {
1472
+ '[class.show]': 'dropdown.isOpen',
1473
+ },
1474
+ }]
1475
+ }], ctorParameters: function () { return [{ type: BsDropdownDirective, decorators: [{
1476
+ type: Inject,
1477
+ args: [forwardRef(() => BsDropdownDirective)]
1478
+ }] }, { type: undefined, decorators: [{
1479
+ type: Inject,
1480
+ args: [DOCUMENT]
1481
+ }] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1$2.Overlay }]; } });
1482
+
1483
+ class BsDropdownToggleDirective {
1484
+ constructor(dropdown, toggleButton) {
1485
+ this.dropdown = dropdown;
1486
+ this.toggleButton = toggleButton;
1487
+ }
1488
+ onClick() {
1489
+ console.log('clicked');
1490
+ this.dropdown.isOpen$.pipe(take(1)).subscribe((isOpen) => {
1491
+ this.dropdown.isOpen$.next(!isOpen);
1492
+ });
1493
+ }
1494
+ }
1495
+ 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 });
1496
+ BsDropdownToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
1497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownToggleDirective, decorators: [{
1498
+ type: Directive,
1499
+ args: [{
1500
+ selector: '[bsDropdownToggle]'
1501
+ }]
1502
+ }], ctorParameters: function () { return [{ type: BsDropdownDirective }, { type: i0.ElementRef }]; }, propDecorators: { onClick: [{
1503
+ type: HostListener,
1504
+ args: ['click']
1505
+ }] } });
1506
+
1507
+ class BsDropdownDirective {
1508
+ constructor() {
1509
+ this.isOpen$ = new BehaviorSubject(false);
1510
+ this.hasBackdrop = false;
1511
+ this.closeOnClickOutside = false;
1512
+ }
1513
+ }
1514
+ BsDropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1515
+ 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 });
1516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, decorators: [{
1517
+ type: Directive,
1518
+ args: [{
1519
+ selector: '[bsDropdown]'
1520
+ }]
1521
+ }], propDecorators: { menu: [{
1522
+ type: ContentChild,
1523
+ args: [BsDropdownMenuDirective, { static: false }]
1524
+ }], toggle: [{
1525
+ type: ContentChild,
1526
+ args: [BsDropdownToggleDirective, { static: false }]
1527
+ }], hasBackdrop: [{
1528
+ type: Input
1529
+ }], closeOnClickOutside: [{
1530
+ type: Input
1531
+ }] } });
1532
+
1533
+ class BsDropdownModule {
1534
+ }
1535
+ BsDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1536
+ BsDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, declarations: [BsDropdownDirective,
1537
+ BsDropdownToggleDirective,
1538
+ BsDropdownMenuDirective], imports: [CommonModule,
1539
+ OverlayModule], exports: [BsDropdownDirective,
1540
+ BsDropdownToggleDirective,
1541
+ BsDropdownMenuDirective] });
1542
+ BsDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, imports: [[
1543
+ CommonModule,
1544
+ OverlayModule
1545
+ ]] });
1546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, decorators: [{
1547
+ type: NgModule,
1548
+ args: [{
1549
+ declarations: [
1550
+ BsDropdownDirective,
1551
+ BsDropdownToggleDirective,
1552
+ BsDropdownMenuDirective
1553
+ ],
1554
+ imports: [
1555
+ CommonModule,
1556
+ OverlayModule
1557
+ ],
1558
+ exports: [
1559
+ BsDropdownDirective,
1560
+ BsDropdownToggleDirective,
1561
+ BsDropdownMenuDirective
1562
+ ]
1563
+ }]
1564
+ }] });
1565
+
1566
+ class BsDatepickerComponent {
1567
+ constructor() {
1568
+ this.selectedDate = new Date();
1569
+ this.currentMonth = new Date();
1570
+ }
1571
+ ngOnInit() {
1572
+ }
1573
+ }
1574
+ BsDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1575
+ 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 } });
1576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, decorators: [{
1577
+ type: Component,
1578
+ 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: [""] }]
1579
+ }], ctorParameters: function () { return []; } });
1580
+
1581
+ class BsDatepickerModule {
1582
+ }
1583
+ BsDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1584
+ BsDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, declarations: [BsDatepickerComponent], imports: [CommonModule,
1585
+ BsCalendarModule,
1586
+ BsDropdownModule], exports: [BsDatepickerComponent] });
1587
+ BsDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, imports: [[
1588
+ CommonModule,
1589
+ BsCalendarModule,
1590
+ BsDropdownModule
1591
+ ]] });
1592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, decorators: [{
1593
+ type: NgModule,
1594
+ args: [{
1595
+ declarations: [
1596
+ BsDatepickerComponent
1597
+ ],
1598
+ imports: [
1599
+ CommonModule,
1600
+ BsCalendarModule,
1601
+ BsDropdownModule
1602
+ ],
1603
+ exports: [
1604
+ BsDatepickerComponent
1605
+ ]
1606
+ }]
1607
+ }] });
1608
+
1609
+ class BsMultiselectComponent {
1610
+ constructor() {
1611
+ this.items = [];
1612
+ this.selectedItems = [];
1613
+ }
1614
+ itemChange(item, event) {
1615
+ if (!!event.target.checked) {
1616
+ this.selectedItems.push(item);
1617
+ }
1618
+ else {
1619
+ this.selectedItems.splice(this.selectedItems.findIndex((i) => i === item), 1);
1620
+ }
1621
+ }
1622
+ ngOnInit() {
1623
+ }
1624
+ }
1625
+ BsMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1626
+ 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"] }] });
1627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, decorators: [{
1628
+ type: Component,
1629
+ 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: [""] }]
1630
+ }], ctorParameters: function () { return []; }, propDecorators: { items: [{
1631
+ type: Input
1632
+ }], selectedItems: [{
1633
+ type: Input
1634
+ }] } });
1635
+
1636
+ class BsMultiselectModule {
1637
+ }
1638
+ BsMultiselectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1639
+ BsMultiselectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, declarations: [BsMultiselectComponent], imports: [CommonModule,
1640
+ BsDropdownModule], exports: [BsMultiselectComponent] });
1641
+ BsMultiselectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, imports: [[
1642
+ CommonModule,
1643
+ BsDropdownModule
1644
+ ]] });
1645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, decorators: [{
1646
+ type: NgModule,
1647
+ args: [{
1648
+ declarations: [
1649
+ BsMultiselectComponent
1650
+ ],
1651
+ imports: [
1652
+ CommonModule,
1653
+ BsDropdownModule
1654
+ ],
1655
+ exports: [
1656
+ BsMultiselectComponent
1657
+ ]
1658
+ }]
1659
+ }] });
1660
+
978
1661
  /**
979
1662
  * Generated bundle index. Do not edit.
980
1663
  */
981
1664
 
982
- 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 };
1665
+ 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 };
983
1666
  //# sourceMappingURL=mintplayer-ng-bootstrap.mjs.map